// Do not edit this file - Generated by Perlito5 9.0
//
// lib/Perlito5/Javascript2/Runtime.js
//
// Runtime for "Perlito" Perl5-in-Javascript2
//
// AUTHORS
//
// Flavio Soibelmann Glock  fglock@gmail.com
//
// COPYRIGHT
//
// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.
//
// This program is free software; you can redistribute it and/or modify it
// under the same terms as Perl itself.
//
// See http://www.perl.com/perl/misc/Artistic.html

"use strict";
var isNode = typeof require != "undefined";

if (typeof p5pkg !== "object") {
    var p5pkg = {};
    var p5LOCAL = [];

    var universal = function () {};
    p5pkg.UNIVERSAL = new universal();
    p5pkg.UNIVERSAL._ref_ = "UNIVERSAL";
    p5pkg.UNIVERSAL.isa = function (List__) {
        // TODO - use @ISA
        return List__[0]._class_._ref_ == List__[1]
    };
    p5pkg.UNIVERSAL.can = function (List__) {
        var o = List__[0];
        var s = List__[1];
        if ( s.indexOf("::") == -1 ) {
            return p5method_lookup(s, o._class_._ref__, {})
        }
        var c = s.split("::");
        s = c.pop(); 
        return p5method_lookup(s, c.join("::"), {});
    };
    p5pkg.UNIVERSAL.DOES = p5pkg.UNIVERSAL.can;

    var core = function () {};
    p5pkg["CORE"] = new core();
    p5pkg["CORE"]._ref_ = "CORE";

    var core_global = function () {};
    core_global.prototype = p5pkg.CORE;
    p5pkg["CORE::GLOBAL"] = new core_global();
    p5pkg["CORE::GLOBAL"]._ref_ = "CORE::GLOBAL";

    var p5_error = function (type, v) {
        this.type = type;
        this.v = this.message = v;
        this.toString = function(){
            if (this.type == 'break') {
                return 'Can\'t "break" outside a given block'
            }
            if (this.type == 'next' || this.type == 'last' || this.type == 'redo') {
                if (this.v == "") { return 'Can\'t "' + this.type + '" outside a loop block' }
                return 'Label not found for "' + this.type + ' ' + this.v + '"';
            }
            return this.v;
        };
    };
    p5_error.prototype = Error.prototype;
}

function p5make_package(pkg_name) {
    if (!p5pkg.hasOwnProperty(pkg_name)) {
        var tmp = function () {};
        tmp.prototype = p5pkg["CORE::GLOBAL"];
        p5pkg[pkg_name] = new tmp();
        p5pkg[pkg_name]._ref_ = pkg_name;
        p5pkg[pkg_name]._class_ = p5pkg[pkg_name];  // XXX memory leak
        p5pkg[pkg_name]._is_package_ = 1;

        // TODO - add the other package global variables
        p5pkg[pkg_name]["List_ISA"] = [];
        p5pkg[pkg_name]["v_a"] = null;
        p5pkg[pkg_name]["v_b"] = null;
        p5pkg[pkg_name]["v__"] = null;
        p5pkg[pkg_name]["v_AUTOLOAD"] = null;
    }
    return p5pkg[pkg_name];
}

function p5code_lookup_by_name(package_name, sub_name) {
    // sub_name can be a function already
    if (typeof sub_name === "function") {
        return sub_name;
    }
    // sub_name can have an optional namespace
    var parts = sub_name.split(/::/);
    if (parts.length > 1) {
        sub_name = parts.pop();
        package_name = parts.join("::");
    }
    if (p5pkg.hasOwnProperty(package_name)) {
        var c = p5pkg[package_name];
        if ( c.hasOwnProperty(sub_name) ) {
            return c[sub_name]
        }
    }
    return null;
}

function p5get_class_for_method(method, class_name, seen) {
    // default mro
    // TODO - cache the methods that were already looked up
    if ( p5pkg[class_name].hasOwnProperty(method) ) {
        return class_name
    }
    var isa = p5pkg[class_name].List_ISA;
    if (isa) {
        for (var i = 0; i < isa.length; i++) {
            if (!seen[isa[i]]) {
                var m = p5get_class_for_method(method, isa[i], seen);
                if (m) {
                    return m 
                }
                seen[isa[i]]++;
            }
        }
    }
}

function p5method_lookup(method, class_name, seen) {
    var c = p5get_class_for_method(method, class_name, seen);
    if (c) {
        return p5pkg[c][method]
    }
    if ( p5pkg.UNIVERSAL.hasOwnProperty(method) ) {
        return p5pkg.UNIVERSAL[method]
    }
}

function p5method_not_found(method, class_name) {
    return "Can't locate object method \""
        + method + "\" via package \"" + class_name + "\" (perhaps you forgot to load \""
        + class_name + "\"?)";
}

function p5call(invocant, method, list, p5want) {
    var invocant_original = invocant;
    if (typeof invocant === "string") {
        list.unshift(invocant);
        invocant = p5make_package(invocant);
    }
    else if ( invocant.hasOwnProperty("_is_package_") ) {
        list.unshift(invocant._ref_);   // invocant is a "package" object
    }
    else {
        list.unshift(invocant);
    }

    if ( invocant.hasOwnProperty("_class_") ) {

        if ( invocant._class_.hasOwnProperty(method) ) {
            return invocant._class_[method](list, p5want)
        }
        var m = p5method_lookup(method, invocant._class_._ref_, {});
        if (m) {
            return m(list, p5want)
        }

        // method can have an optional namespace
        var pkg_name = method.split(/::/);
        if (pkg_name.length > 1) {
            var name = pkg_name.pop();
            pkg_name = pkg_name.join("::");
            m = p5method_lookup(name, pkg_name, {});
            if (m) {
                return m(list, p5want)
            }
            p5pkg.CORE.die([p5method_not_found(name, pkg_name)]);
        }

        if (method == "print" || method == "printf" || method == "say" || method == "close") {
            list.shift();
            return p5pkg['Perlito5::IO'][method]( invocant_original, list, p5want);
        }

        pkg_name = p5get_class_for_method('AUTOLOAD', invocant._class_._ref_, {}) || p5get_class_for_method('AUTOLOAD', "UNIVERSAL", {});
        if (pkg_name) {
            p5pkg[pkg_name]["v_AUTOLOAD"] = invocant._class_._ref_ + "::" + method;
            return p5pkg[pkg_name]["AUTOLOAD"](list, p5want);
        }
        p5pkg.CORE.die([p5method_not_found(method, invocant._class_._ref_)]);
    }
    p5pkg.CORE.die(["Can't call method ", method, " on unblessed reference"]);
}

function p5call_sub(namespace, name, list, p5want) {
    if(p5pkg[namespace].hasOwnProperty(name)) {
        return p5pkg[namespace][name](list, p5want)
    }
    if(p5pkg[namespace].hasOwnProperty("AUTOLOAD")) {
        p5pkg[namespace]["v_AUTOLOAD"] = namespace + "::" + name;
        return p5pkg[namespace]["AUTOLOAD"](list, p5want)
    }
    p5pkg.CORE.die(["Undefined subroutine &" + namespace + "::" + name]);
}

function p5sub_exists(name, current_pkg_name) {
    var v = name;
    var pkg_name = v.split(/::/);
    if (pkg_name.length > 1) {
        v = pkg_name.pop();
        pkg_name = pkg_name.join("::");
    }
    else {
        pkg_name = current_pkg_name;
    }
    var c = v.charCodeAt(0);
    if (c < 27) {
        v = String.fromCharCode(c + 64) + v.substr(1);
        pkg_name = 'main';
    }
    return p5pkg.hasOwnProperty(pkg_name) && p5pkg[pkg_name].hasOwnProperty(v) 
}

function p5sub_prototype(name, current_pkg_name) {
    if (!name) {
        return null;
    }
    if (typeof name === "function") {
        return name._prototype_;
    }
    var v = name;
    var pkg_name = v.split(/::/);
    if (pkg_name.length > 1) {
        v = pkg_name.pop();
        pkg_name = pkg_name.join("::");
    }
    else {
        pkg_name = current_pkg_name;
    }
    var c = v.charCodeAt(0);
    if (c < 27) {
        v = String.fromCharCode(c + 64) + v.substr(1);
        pkg_name = 'main';
    }
    if (p5pkg.hasOwnProperty(pkg_name) && p5pkg[pkg_name].hasOwnProperty(v)) {
        return p5pkg[pkg_name][v]._prototype_
    }
    return p5pkg["Perlito5"].v_PROTO._hash_[name] || p5pkg["Perlito5"].v_CORE_PROTO._hash_[name]
}

function p5scalar_deref(v, current_pkg_name, autoviv_type) {
    if (typeof v === "string") {
        var pkg_name = v.split(/::/);
        if (pkg_name.length > 1) {
            v = pkg_name.pop();
            pkg_name = pkg_name.join("::");
        }
        else {
            pkg_name = current_pkg_name;
        }
        var c = v.charCodeAt(0);
        if (c < 27) {
            v = String.fromCharCode(c + 64) + v.substr(1);
            pkg_name = 'main';
        }
        var name = "v_"+v;
        if (!p5make_package(pkg_name)[name]) {
            if (autoviv_type == 'array') {
                p5pkg[pkg_name][name] = new p5ArrayRef([]);
            }
            else if (autoviv_type == 'hash') {
                p5pkg[pkg_name][name] = new p5HashRef([]);
            }
            else if (autoviv_type == 'scalar') {
                p5pkg[pkg_name][name] = new p5ScalarRef([]);
            }
        }
        return p5pkg[pkg_name][name];
    }
    if (!v._scalar_) {
        if (autoviv_type == 'array') {
            v._scalar_ = new p5ArrayRef([]);
        }
        else if (autoviv_type == 'hash') {
            v._scalar_ = new p5HashRef([]);
        }
        else if (autoviv_type == 'scalar') {
            v._scalar_ = new p5ScalarRef([]);
        }
    }
    return v._scalar_;
}

function p5scalar_deref_set(v, n, current_pkg_name) {
    if (typeof v === "string") {
        var pkg_name = v.split(/::/);
        if (pkg_name.length > 1) {
            v = pkg_name.pop();
            pkg_name = pkg_name.join("::");
        }
        else {
            pkg_name = current_pkg_name;
        }
        var c = v.charCodeAt(0);
        if (c < 27) {
            v = String.fromCharCode(c + 64) + v.substr(1);
            pkg_name = 'main';
        }
        var name = "v_"+v;
        p5make_package(pkg_name)[name] = n;
        return p5pkg[pkg_name][name];
    }
    v._scalar_ = n;
    return v._scalar_;
}

function p5array_deref(v, current_pkg_name) {
    if (typeof v === "string") {
        var pkg_name = v.split(/::/);
        if (pkg_name.length > 1) {
            v = pkg_name.pop();
            pkg_name = pkg_name.join("::");
        }
        else {
            pkg_name = current_pkg_name;
        }
        var c = v.charCodeAt(0);
        if (c < 27) {
            v = String.fromCharCode(c + 64) + v.substr(1);
            pkg_name = 'main';
        }
        var name = "List_"+v;
        if (!p5make_package(pkg_name)[name]) {
                p5pkg[pkg_name][name] = [];
        }
        return p5pkg[pkg_name][name];
    }
    return v._array_;
}

function p5hash_deref(v, current_pkg_name) {
    if (typeof v === "string") {
        var pkg_name = v.split(/::/);
        if (pkg_name.length > 1) {
            v = pkg_name.pop();
            pkg_name = pkg_name.join("::");
        }
        else {
            pkg_name = current_pkg_name;
        }
        var c = v.charCodeAt(0);
        if (c < 27) {
            v = String.fromCharCode(c + 64) + v.substr(1);
            pkg_name = 'main';
        }
        var name = "Hash_"+v;
        if (!p5make_package(pkg_name)[name]) {
                p5pkg[pkg_name][name] = [];
        }
        return p5pkg[pkg_name][name];
    }
    return v._hash_;
}

// regex globals
p5make_package("Regex");
var p5_last_regex = new RegExp("", "");
var p5_regex_capture = [];

p5make_package("main");
p5make_package("Perlito5");
p5pkg["Perlito5"].v_PKG_NAME = "main";
p5make_package("main::STDIN").file_handle = { id : 0, readline_buffer : '' };
p5make_package("main::STDOUT").file_handle = { id : 1 };
p5make_package("main::STDERR").file_handle = { id : 2 };
p5make_package("ARGV").file_handle = { id : null };
p5pkg["STDOUT"] = p5pkg["main::STDOUT"];
p5pkg["STDERR"] = p5pkg["main::STDERR"];
p5pkg["STDIN"] = p5pkg["main::STDIN"];
p5pkg["Perlito5"].v_SELECT = "main::STDOUT";
p5pkg["main"]["v_@"] = [];      // $@
p5pkg["main"]["v_|"] = 0;       // $|
p5pkg["main"]["v_/"] = "\n";    // $/
p5pkg["main"]['v_"'] = " ";     // $"
p5pkg["main"]["List_#"] = [];   // @#
p5scalar_deref_set(String.fromCharCode(15), isNode ? "node.js" : "javascript2");  // $^O
p5pkg["main"]["List_INC"] = [];
p5pkg["main"]["Hash_INC"] = {};
p5pkg["main"]["List_ARGV"] = [];
p5pkg["main"]["Hash_ENV"] = {};
p5pkg["main"]["Hash_SIG"] = {};
if (isNode) {
    p5pkg["main"]["List_ARGV"] = process.argv.splice(2);

    p5pkg["main"]["Hash_ENV"] = {};
    for (var e in process.env) p5pkg["main"]["Hash_ENV"][e] = process.env[e];

    p5pkg["main"]["v_$"] = process.pid;   // $$
    p5scalar_deref_set(String.fromCharCode(24), process.argv[0]);  // $^X
} else if (typeof arguments === "object") {
    p5pkg["main"]["List_ARGV"] = arguments;
}

p5make_package("Perlito5::IO");
p5make_package("Perlito5::Runtime");
p5make_package("Perlito5::Grammar");

var sigils = { '@' : 'List_', '%' : 'Hash_', '$' : 'v_', '&' : '' };

function p5typeglob_set(namespace, name, obj) {
    p5make_package(namespace);
    if ( obj.hasOwnProperty("_ref_") ) {
        if ( obj._ref_ == "HASH" ) {
            p5pkg[namespace][sigils['%'] + name] = obj._hash_;
        }
        else if ( obj._ref_ == "ARRAY" ) {
            p5pkg[namespace][sigils['@'] + name] = obj._array_;
        }
        else if ( obj._ref_ == "SCALAR" ) {
            p5pkg[namespace][sigils['$'] + name] = obj._scalar_;
        }
        else if ( obj._ref_ == "CODE" ) {
            p5pkg[namespace][sigils['&'] + name] = obj._code_;
        }
        else if ( obj._ref_ == "GLOB" ) {
            // TODO
            p5pkg[namespace][name] = obj;
        }
    }
    else {
        p5pkg[namespace][name] = obj;   // native CODE
        // TODO - non-reference
    }
    return p5pkg[namespace][name];  // TODO - return GLOB
}

function p5typeglob_deref_set(v, obj, current_pkg_name) {
    if (typeof v === "string") {
        var pkg_name = v.split(/::/);
        if (pkg_name.length > 1) {
            v = pkg_name.pop();
            pkg_name = pkg_name.join("::");
        }
        else {
            pkg_name = current_pkg_name;
        }
        return p5typeglob_set(pkg_name, v, obj);
    }
    CORE.die(["TODO: can't p5typeglob_deref_set()"]);
}

function p5cleanup_local(idx, value) {
    while (p5LOCAL.length > idx) {
        var l = p5LOCAL.pop();
        l();
    }
    return value;
}

//-------- Reference

var p5id = Math.floor(Math.random() * 1000000000) + 1000000000;

function p5HashRef(o) {
    this._hash_ = o;
    this._ref_ = "HASH";
    this.bool = function() { return 1 };
}

function p5ArrayRef(o) {
    this._array_ = o;
    this._ref_ = "ARRAY";
    this.bool = function() { return 1 };
}

function p5ScalarRef(o) {
    this._scalar_ = o;
    this._ref_ = "SCALAR";
    this.bool = function() { return 1 };
}

function p5GlobRef(o) {
    this._scalar_ = o;
    this._ref_ = "GLOB";
    this.bool = function() { return 1 };
}

function p5CodeRef(o) {
    this._code_ = o;
    this._ref_ = "CODE";
    this.bool = function() { return 1 };
}

//-------- Hash 

Object.defineProperty( Object.prototype, "p5hget", {
    enumerable : false,
    value : function (i) { return this[i] }
});
Object.defineProperty( Object.prototype, "p5hset", {
    enumerable : false,
    value : function (i, v) { this[i] = v; return this[i] }
});

Object.defineProperty( Object.prototype, "p5incr", {
    enumerable : false,
    value : function (i) {
        this[i] = p5incr_(this[i]);
        return this[i];
    }
});
Object.defineProperty( Object.prototype, "p5postincr", {
    enumerable : false,
    value : function (i) {
        var v = this[i];
        this[i] = p5incr_(this[i]);
        return v;
    }
});
Object.defineProperty( Object.prototype, "p5decr", {
    enumerable : false,
    value : function (i) {
        this[i] = p5decr_(this[i]);
        return this[i];
    }
});
Object.defineProperty( Object.prototype, "p5postdecr", {
    enumerable : false,
    value : function (i) {
        var v = this[i];
        this[i] = p5decr_(this[i]);
        return v;
    }
});

Object.defineProperty( Object.prototype, "p5hget_array", {
    enumerable : false,
    value : function (i) {
        if (this[i] == null) { this[i] = new p5ArrayRef([]) }
        return this[i]
    }
});
Object.defineProperty( Object.prototype, "p5hget_hash", {
    enumerable : false,
    value : function (i) {
        if (this[i] == null) { this[i] = new p5HashRef({}) }
        return this[i]
    }
});

//-------


var p5context = function(List__, p5want) {
    if (p5want) {
        return p5list_to_a(List__);
    }
    // scalar: return the last value
    var o = List__;
    if (o instanceof Array) {
        o =   o.length
            ? o[o.length-1]
            : null;
    }
    if (o instanceof Array) {
        o =   o.length
    }
    return o;
}

var p5list_to_a = function(args) {
    var res = [];
    for (var i = 0; i < args.length; i++) {
        var o = args[i];
        if  (  o == null
            || o._class_    // perl5 blessed reference
            || o._ref_      // perl5 un-blessed reference
            )
        {
            res.push(o);
        }
        else if (o instanceof Array) {
            // perl5 array
            for (var j = 0; j < o.length; j++) {
                res.push(o[j]);
            }
        }
        else if (typeof o === "object") {
            // perl5 hash
            for(var j in o) {
                if (o.hasOwnProperty(j)) {
                    res.push(j);
                    res.push(o[j]);
                }
            }
        }
        else {
            // non-ref
            res.push(o);
        }
    }
    return res;
};

var p5_list_of_refs = function(a) {
    // implements \( @a )
    var res = [];
    for (var i = 0; i < a.length; i++) {
        res.push(new p5ScalarRef(a[i]));
    }
    return res;
};

var p5a_to_h = function(a) {
    var res = {};
    for (var i = 0; i < a.length; i+=2) {
        res[p5str(a[i])] = a[i+1];
    }
    return res;
};

var p5idx = function(a, i) {
    return i >= 0 ? i : a.length + i
};

var p5smrt_scalar = function(a1, a2) {
    if (a2 == null) {
        return a1 == null;
    }
    if (typeof a2 == "string") {
        return p5str(a1) == a2;
    }
    if (typeof a2 == "number") {
        return p5num(a1) == a2;
    }
    CORE.die("Not implemented: smartmatch operator with argument type '", (typeof a2), "'");
};

var p5str = function(o) {
    if (o == null) {
        return "";
    }
    if (typeof o === "object") {
        if (o instanceof Array) {
            return CORE.join([""].concat(o));
        }
        if ( o.hasOwnProperty("_ref_") ) {
            var class_name = '';
            if (o._class_ && typeof o._class_._ref_ === "string") {
                // blessed reference
                // test for overload
                var meth = p5method_lookup('(""', o._class_._ref_, {});
                if (meth) {
                    return p5str(meth([o], 0));
                }
                // TODO - test the "fallback" flag
                meth = p5method_lookup('(0+', o._class_._ref_, {});
                if (meth) {
                    return p5str(meth([o], 0));
                }
                // no overload, strigify the reference instead
                class_name = o._class_._ref_ + '=';
            }
            if (!o._id_) { o._id_ = p5id++ }
            return [class_name, o._ref_, '(0x', o._id_.toString( 16 ), ')'].join('');
        }
    }
    if (typeof o === "function") {
        var class_name = '';
        if (o._class_ && typeof o._class_._ref_ === "string") {
            // blessed reference
            class_name = o._class_._ref_ + '=';
        }
        if (!o._id_) { o._id_ = p5id++ }
        return [class_name, 'CODE(0x', o._id_.toString( 16 ), ')'].join('');
    }
    if (typeof o == "number" && Math.abs(o) < 0.0001 && o != 0) {
        return o.toExponential().replace(/e-(\d)$/,"e-0$1");
    }
    if (typeof o === "boolean") {
        return o ? "1" : "";
    }
    if (typeof o !== "string") {
        return "" + o;
    }
    return o;
};

var p5num = function(o) {
    if (o == null) {
        return 0;
    }
    if (typeof o === "object") {
        if (o instanceof Array) {
            return o.length;
        }
        if ( o.hasOwnProperty("_ref_") ) {
            if (o._class_ && typeof o._class_._ref_ === "string") {
                // blessed reference
                // test for overload
                var meth = p5method_lookup('(0+', o._class_._ref_, {});
                if (meth) {
                    return p5num(meth([o], 0));
                }
                // TODO - test the "fallback" flag
                meth = p5method_lookup('(""', o._class_._ref_, {});
                if (meth) {
                    return p5num(meth([o], 0));
                }
            }
        }
    }
    if (typeof o !== "number") {
        var s = p5str(o).trim();
        var s1 = s.substr(0, 3).toUpperCase();
        if ( s1 == "NAN" ) { return NaN };
        if ( s1 == "INF" ) { return Infinity };
        s1 = s.substr(0, 4).toUpperCase();
        if ( s1 == "-NAN" ) { return NaN };
        if ( s1 == "-INF" ) { return -Infinity };
        s1 = parseFloat(s);
        if ( isNaN(s1) ) { return 0 };
        return s1;
    }
    return o;
};

var p5bool = function(o) {
    if (o) {
        if (typeof o === "boolean") {
            return o;
        }
        if (typeof o === "number") {
            return o;
        }
        if (typeof o === "string") {
            return o != "" && o != "0";
        }
        if (typeof o.length === "number") {
            return o.length;
        }
        if (o instanceof Error) {
            return true;
        }
        for (var i in o) {
            return true;
        }
    }
    return false;
};

var p5incr_ = function(o) {
    if (typeof o === "number") {
        return o + 1;
    }
    return p5str_inc(p5str(o));
};

var p5decr_ = function(o) {
    if (typeof o === "number") {
        return o - 1;
    }
    return p5num(o) - 1;
};

var p5modulo = function(o, k) {
    var m = o % k;
    if ( k < 0 && m > 0 ) {
        m = m + k;
    }
    else if ( k > 0 && m < 0 ) {
        m = m + k;
    }
    return m;
};

var p5shift_left = function(o, k) {
    return k < 31 ? o << k : o * Math.pow(2, k);
};

var p5and = function(a, fb) {
    if (p5bool(a)) {
        return fb();
    }
    return a;
};

var p5or = function(a, fb) {
    if (p5bool(a)) {
        return a;
    }
    return fb();
};

var p5defined_or = function(a, fb) {
    if (a == null) {
        return fb();
    }
    return a;
};

var p5xor = function(a, fb) {
    return p5bool(a) ? !p5bool(fb()) : fb()
};

var p5cmp = function(a, b) {
    return a > b ? 1 : a < b ? -1 : 0 
};

var p5complement = function(a) {
    return a < 0 ? ~a : 4294967295 - a
    // return a < 0 ? ~a : 18446744073709551615 - a
};

var p5str_replicate = function(o, n) {
    n = Math.floor(n);
    return n > 0 ? Array(n + 1).join(o) : "";
};

var p5list_replicate = function(o, n, want) {
    o = p5list_to_a([o]);
    n = p5num(n);

    if (!want) {
        return p5str_replicate(o.pop(), n);   // scalar context
    }

    var out = [];
    for(var i = 0; i < n; i++) {
        for(var j = 0; j < o.length; j++) {
            out.push(o[j]);
        }
    }
    return (want ? out : out.length)
};

var p5list_slice = function(o, ix, want) {
    var out = [];
    for (var i=0, l=ix.length; i<l; ++i) {
        if (ix[i] < o.length) {
            out[i] = o[ix[i]];
        }
    }
    if (want) { return out }
    return out.length ? out[out.length-1] : null;
}

var p5hash_slice = function(o, ix, want) {
    var out = [];
    for (var i=0, l=ix.length; i<l; ++i) {
        out.push(ix[i]);
        out.push(o[ix[i]]);
    }
    if (want) { return out }
    return out.length ? out[out.length-1] : null;
}

var p5list_lookup_slice = function(o, ix, want) {
    var out = [];
    for (var i=0, l=ix.length; i<l; ++i) {
        out[i] = o[ix[i]];
    }
    if (want) { return out }
    return out.length ? out[out.length-1] : null;
}

var p5hash_lookup_slice = function(o, ix, want) {
    var out = [];
    for (var i=0, l=ix.length; i<l; ++i) {
        out.push(ix[i]);
        out.push(o[ix[i]]);
    }
    if (want) { return out }
    return out.length ? out[out.length-1] : null;
}

var p5str_inc = function(s) {
    if (s.length < 2) {
        if ((s >= "0" && s <= "8") || (s >= "A" && s <= "Y") || (s >= "a" && s <= "y")) {
            return String.fromCharCode(s.charCodeAt(0) + 1);
        }
        if (s == "9") {
            return "10";
        }
        if (s == "Z") {
            return "AA";
        }
        if (s == "z") {
            return "aa";
        }
        return "1";
    }
    var c0 = s.substr(0, 1);
    if (c0 >= "0" && c0 <= "9") {
        return p5str(p5num(s)+1);
    }
    var c = p5str_inc(s.substr(s.length-1, 1));
    if (c.length == 1) {
        return s.substr(0, s.length-1) + c;
    }
    return p5str_inc(s.substr(0, s.length-1)) + c.substr(c.length-1, 1);
};

var p5range_state = {};
var p5range = function(a, b, p5want, id, three_dots) {
    if (p5want) {
        // list context
        var tmp = [];
        if (typeof a === "number" || typeof b === "number") {
            a = p5num(a);
            b = p5num(b);
            while (a <= b) {
                tmp.push(a);
                a++;
            }
        }
        else {
            a = p5str(a);
            b = p5str(b);
            var c = a.substr(0, 1);
            if ( c == '+' ) {
                if (a == "+") {
                    return [a]
                }
                a = a.substr(1)
            }
            else if ( c == '-' ) {
                if (a == "-") {
                    return [a]
                }
                return p5range(p5num(a), b, p5want, id, three_dots)
            }
            c = b.substr(0, 1);
            if ( c == '+' ) {
                b = b.substr(1)
            }
            while (  (a.length < b.length)
                  || (a.length == b.length && a <= b) ) {
                tmp.push(a);
                a = p5incr_(a);
            }
        }
        return tmp;
    }
    // flip-flop operator
    var v;
    if (p5range_state[id]) {
        v = ++p5range_state[id];
        if (p5bool(b)) {
            p5range_state[id] = 0;
            v = v + "E0";
        }
        return v;
    }
    else {
        p5range_state[id] = 0;
        if (p5bool(a)) {
            p5range_state[id]++;
            v = p5range_state[id];
        }
        if (v && !three_dots && p5bool(b)) {
            p5range_state[id] = 0;
            v = v + "E0";
        }
        return v;
    }
};

var p5negative = function(o) {
    if (o == null) {
        return '-0';
    }
    if (typeof o === "object" && (o instanceof Array)) {
        return -(o.length);
    }
    if (typeof o !== "number") {
        var s = p5str(o);
        var c = s.substr(0, 1);
        if ( c == '+' ) { s = s.substr(1); return '-' + s }
        if ( c == '-' ) { s = s.substr(1); return '+' + s }
        var s1 = parseFloat(s.trim());
        if ( isNaN(s1) ) {
            if ( c.length && !c.match(/[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/) ) {
                if ( s.trim().substr(0,1) == "-" ) { return 0 };
                return '-0';
            };
            return '-' + s
        };
        return -s1;
    }
    return -o;
};

var p5qr = function(search, modifier) {
    // TODO - "Regex" stringification
    var re = new RegExp(search, modifier);
    return CORE.bless([(new p5ScalarRef(re)), 'Regex']);
};

var p5m = function(s, search, modifier, want) {
    // TODO - captures
    var re;
    if (search.hasOwnProperty('_scalar_')) {
        // search is a Regex object
        re = search._scalar_;
    }
    else {
        re = new RegExp(search, modifier);
    }

    p5_regex_capture = [];
    var res = [];
    var myArray;
    while ((myArray = re.exec(s)) !== null) {
        var m = myArray.shift();
        if (myArray.length) {
            res = res.concat(myArray);
            p5_regex_capture = p5_regex_capture.concat(myArray);
        }
        else {
            res.push(m);
        }
        if (re.lastIndex == 0) {
            return (want ? res : res.length)
        }
    }
    return (want ? res : res.length)
};

var p5s = function(s, search, fun_replace, modifier, want) {
    // TODO - captures
    var count = null;
    var re;
    if (search.hasOwnProperty('_scalar_')) {
        // search is a Regex object
        re = search._scalar_;
    }
    else {
        re = new RegExp(search, modifier);
    }

    p5_regex_capture = [];
    var res = [];
    var myArray;
    var last_index = 0;
    while ((myArray = re.exec(s)) !== null) {
        var m = myArray.shift();
        p5_regex_capture = [].concat(myArray);
        if (myArray.index > last_index) {
            res.push(s.substr(last_index, myArray.index - last_index));
        }
        res.push(fun_replace());
        last_index = re.lastIndex;
        if (last_index == 0) {
            count = 1;
            last_index = myArray.index + m.length;
            if (s.length > last_index) {
                res.push(s.substr(last_index, s.length - last_index));
            }
            return [res.join(''), count]
        }
        count++;
    }
    if (s.length > last_index) {
        res.push(s.substr(last_index, s.length - last_index));
    }
    return [res.join(''), count]
};

var p5tr = function(s, search, replace, modifier, want) {
    var count = 0;
    // TODO - expand character lists in spec
    // TODO - modifiers
    search = search.split("");
    replace = replace.split("");
    while (search.length > replace.length) {
        replace.push(replace[replace.length-1]);
    }
    var tr = {};
    for(var i = 0; i < search.length; i++) {
        tr[search[i]] = replace[i];
    }
    var res = s.split("");
    for(var i = 0; i < res.length; i++) {
        if (tr.hasOwnProperty(res[i])) {
            res[i] = tr[res[i]];
            count++;
        }
    }
    return [res.join(''), count]
};

var p5chop = function(s) {
    // TODO - array, hash
    return [s.substr(-1,1), s.substr(0,s.length-1)]
};

var p5chomp = function(s) {
    // TODO - array, hash
    // TODO - special cases of $/ - empty string, reference
    var sep = p5pkg["main"]["v_/"];  // $/
    var c = s.substr(-sep.length);
    if (c == sep) {
        return [c.length, s.substr(0,s.length-sep.length)]
    }
    else {
        return [0, s]
    }
};

var p5for = function(namespace, var_name, func, args, cont, label) {
    var local_idx = p5LOCAL.length;
    var v_old = namespace[var_name];
    var _redo;
    p5LOCAL.push(function(){ namespace[var_name] = v_old });
    for(var i = 0; i < args.length; i++) {
        namespace[var_name] = args[i];
        do {
            _redo = false;
            try {
                func()
            }
            catch(err) {
                if (err instanceof p5_error && (err.v == label || err.v == '')) {
                    if (err.type == 'last') {
                        p5cleanup_local(local_idx, null);
                        return
                    }
                    else if (err.type == 'redo') { _redo = true }
                    else if (err.type != 'next') { throw(err) }
                }
                else {
                    throw(err)
                }
            }
            if (cont) {
                try {
                    if (!_redo) { cont() }
                }
                catch(err) {
                    if (err instanceof p5_error && (err.v == label || err.v == '')) {
                        if (err.type == 'last') {
                            p5cleanup_local(local_idx, null);
                            return
                        }
                        else if (err.type == 'redo') { _redo = true }
                        else if (err.type != 'next') { throw(err) }
                    }            
                    else {
                        throw(err)
                    }
                }
            }
        } while (_redo);
    }
    p5cleanup_local(local_idx, null);
};

var p5for_lex = function(set_var, func, args, cont, label) {
    var local_idx = p5LOCAL.length;
    var _redo;
    for(var i = 0; i < args.length; i++) {
        set_var(args[i]);
        do {
            _redo = false;
            try {
                func()
            }
            catch(err) {
                if (err instanceof p5_error && (err.v == label || err.v == '')) {
                    if (err.type == 'last') {
                        p5cleanup_local(local_idx, null);
                        return
                    }
                    else if (err.type == 'redo') { _redo = true }
                    else if (err.type != 'next') { throw(err) }
                }            
                else {
                    throw(err)
                }
            }
            if (cont) {
                try {
                    if (!_redo) { cont() }
                }
                catch(err) {
                    if (err instanceof p5_error && (err.v == label || err.v == '')) {
                        if (err.type == 'last') {
                            p5cleanup_local(local_idx, null);
                            return
                        }
                        else if (err.type == 'redo') { _redo = true }
                        else if (err.type != 'next') { throw(err) }
                    }            
                    else {
                        throw(err)
                    }
                }
            }
        } while (_redo);
    }
    p5cleanup_local(local_idx, null);
};

var p5block = function(set_var, func, args, cont, label) {
    var local_idx = p5LOCAL.length;
    var _redo;
    for(var i = 0; i < args.length; i++) {
        set_var(args[i]);
        do {
            _redo = false;
            try {
                return func()
            }
            catch(err) {
                if (err instanceof p5_error && (err.v == label || err.v == '')) {
                    if (err.type == 'last') {
                        p5cleanup_local(local_idx, null);
                        return
                    }
                    else if (err.type == 'redo') { _redo = true }
                    else if (err.type != 'next') { throw(err) }
                }            
                else {
                    throw(err)
                }
            }
            if (cont) {
                try {
                    if (!_redo) { cont() }
                }
                catch(err) {
                    if (err instanceof p5_error && (err.v == label || err.v == '')) {
                        if (err.type == 'last') {
                            p5cleanup_local(local_idx, null);
                            return
                        }
                        else if (err.type == 'redo') { _redo = true }
                        else if (err.type != 'next') { throw(err) }
                    }            
                    else {
                        throw(err)
                    }
                }
            }
        } while (_redo);
    }
    p5cleanup_local(local_idx, null);
};


var p5while = function(func, cond, cont, label, redo) {
    var local_idx = p5LOCAL.length;
    while (redo || p5bool(cond())) {
        redo = false;
        try {
            func()
        }
        catch(err) {
            if (err instanceof p5_error && (err.v == label || err.v == '')) {
                if (err.type == 'last') {
                    p5cleanup_local(local_idx, null);
                    return
                }
                else if (err.type == 'redo') { redo = true }
                else if (err.type != 'next') { throw(err) }
            }            
            else {
                throw(err)
            }
        }
        if (cont) {
            try {
                if (!redo) { cont() }
            }
            catch(err) {
                if (err instanceof p5_error && (err.v == label || err.v == '')) {
                    if (err.type == 'last') {
                        p5cleanup_local(local_idx, null);
                        return
                    }
                    else if (err.type == 'redo') { redo = true }
                    else if (err.type != 'next') { throw(err) }
                }            
                else {
                    throw(err)
                }
            }
        }
    }
    p5cleanup_local(local_idx, null);
};

var p5map = function(namespace, func, args) {
    var v_old = p5pkg["main"]["v__"];
    var out = [];
    for(var i = 0; i < args.length; i++) {
        p5pkg["main"]["v__"] = args[i];
        var o = p5list_to_a([func(1)]);
        for(var j = 0; j < o.length; j++) {
            out.push(o[j]);
        }
    }
    p5pkg["main"]["v__"] = v_old;
    return out;
};

var p5grep = function(namespace, func, args) {
    var v_old = p5pkg["main"]["v__"];
    var out = [];
    for(var i = 0; i < args.length; i++) {
        p5pkg["main"]["v__"] = args[i];
        if (p5bool(func(0))) {
            out.push(args[i])
        }
    }
    p5pkg["main"]["v__"] = v_old;
    return out;
};

var p5sort = function(namespace, func, args) {
    var a_old = namespace["v_a"];
    var b_old = namespace["v_b"];
    var out = 
        func == null
        ? args.sort()
        : args.sort(
            function(a, b) {
                namespace["v_a"] = a;
                namespace["v_b"] = b;
                return func(0);
            }
        );
    namespace["v_a"] = a_old;
    namespace["v_b"] = b_old;
    return out;
};

//
// lib/Perlito5/Javascript2/Runtime.js
//
// Runtime for "Perlito" Perl5-in-Javascript2
//
// AUTHORS
//
// Flavio Soibelmann Glock  fglock@gmail.com
//
// COPYRIGHT
//
// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.
//
// This program is free software; you can redistribute it and/or modify it
// under the same terms as Perl itself.
//
// See http://www.perl.com/perl/misc/Artistic.html

//-------- Array 

Object.defineProperty( Array.prototype, "p5aget", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        return this[i] 
    }
});
Object.defineProperty( Array.prototype, "p5aset", {
    enumerable : false,
    value : function (i, v) {
        if (i < 0) { i =  this.length + i };
        this[i] = v;
        return this[i]
    }
});

Object.defineProperty( Array.prototype, "p5incr", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        this[i] = p5incr_(this[i]);
        return this[i];
    }
});
Object.defineProperty( Array.prototype, "p5postincr", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        var v = this[i];
        this[i] = p5incr_(this[i]);
        return v;
    }
});
Object.defineProperty( Array.prototype, "p5decr", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        this[i] = p5decr_(this[i]);
        return this[i];
    }
});
Object.defineProperty( Array.prototype, "p5postdecr", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        var v = this[i];
        this[i] = p5decr_(this[i]);
        return v;
    }
});

Object.defineProperty( Array.prototype, "p5aget_array", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        if (this[i] == null) { this[i] = new p5ArrayRef([]) }
        return this[i]
    }
});
Object.defineProperty( Array.prototype, "p5aget_hash", {
    enumerable : false,
    value : function (i) {
        if (i < 0) { i =  this.length + i };
        if (this[i] == null) { this[i] = new p5HashRef({}) }
        return this[i]
    }
});
Object.defineProperty( Array.prototype, "p5unshift", {
    enumerable : false,
    configurable : true,
    value : function (args) { 
        for(var i = args.length-1; i >= 0; i--) {
            this.unshift(args[i]);
        }
        return this.length; 
    }
});
Object.defineProperty( Array.prototype, "p5push", {
    enumerable : false,
    configurable : true,
    value : function (args) { 
        for(var i = 0; i < args.length; i++) {
            this.push(args[i]);
        }
        return this.length; 
    }
});

var p5tie_array = function(v, List__) {
    var pkg_name = p5str(List__.shift());

    var res = p5call(pkg_name, 'TIEARRAY', List__, null);
    
    // TODO
    
    //  A class implementing an ordinary array should have the following methods:
    //      TIEARRAY pkg_name, LIST
    //      FETCH this, key
    //      STORE this, key, value
    //      FETCHSIZE this
    //      STORESIZE this, count
    //      CLEAR this
    //      PUSH this, LIST
    //      POP this
    //      SHIFT this
    //      UNSHIFT this, LIST
    //      SPLICE this, offset, length, LIST
    //      EXTEND this, count
    //      DESTROY this
    //      UNTIE this
    
    Object.defineProperty( v, "p5aget", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            return p5call(res, 'FETCH', [i]);
        }
    });
    Object.defineProperty( v, "p5aset", {
        enumerable : false,
        configurable : true,
        value : function (i, value) {
            p5call(res, 'STORE', [i, value]);
            return value;
        }
    });
    Object.defineProperty( v, "p5incr", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            var value = p5incr_(p5call(res, 'FETCH', [i]));
            p5call(res, 'STORE', [i, value]);
            return value;
        }
    });
    Object.defineProperty( v, "p5postincr", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            var value = p5call(res, 'FETCH', [i]);
            p5call(res, 'STORE', [i, p5incr_(value)]);
            return value;
        }
    });
    Object.defineProperty( v, "p5decr", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            var value = p5decr_(p5call(res, 'FETCH', [i]));
            p5call(res, 'STORE', [i, value]);
            return value;
        }
    });
    Object.defineProperty( v, "p5postdecr", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            var value = p5call(res, 'FETCH', [i]);
            p5call(res, 'STORE', [i, p5decr_(value)]);
            return value;
        }
    });
    
    Object.defineProperty( v, "p5aget_array", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            var value = p5call(res, 'FETCH', [i]);
            if (value == null) {
                value = new p5ArrayRef([]);
                p5call(res, 'STORE', [i, value]);
            }
            return value;
        }
    });
    Object.defineProperty( v, "p5aget_hash", {
        enumerable : false,
        configurable : true,
        value : function (i) {
            var value = p5call(res, 'FETCH', [i]);
            if (value == null) {
                value = new p5HashRef({});
                p5call(res, 'STORE', [i, value]);
            }
            return value;
        }
    });
    Object.defineProperty( v, "p5untie", {
        enumerable : false,
        configurable : true,
        value : function (i) { return p5call(res, 'UNTIE', []) }
    });
    Object.defineProperty( v, "shift", {
        enumerable : false,
        configurable : true,
        value : function () { return p5call(res, 'SHIFT', []) }
    });
    Object.defineProperty( v, "pop", {
        enumerable : false,
        configurable : true,
        value : function () { return p5call(res, 'POP', []) }
    });
    Object.defineProperty( v, "p5unshift", {
        enumerable : false,
        configurable : true,
        value : function (args) { 
            for(var i = args.length-1; i >= 0; i--) {
                p5call(res, 'UNSHIFT', [args[i]]);
            }
            return p5call(res, 'FETCHSIZE', []); 
        }
    });
    Object.defineProperty( v, "p5push", {
        enumerable : false,
        configurable : true,
        value : function (args) { 
            for(var i = 0; i < args.length; i++) {
                p5call(res, 'PUSH', [args[i]]);
            }
            return p5call(res, 'FETCHSIZE', []); 
        }
    });

    return res;
};

var p5untie_array = function(v) {
    if (v.hasOwnProperty('p5untie')) {
        var res = v.p5untie();  // call UNTIE
        delete v.p5aget;
        delete v.p5aset;
        delete v.p5incr;
        delete v.p5postincr;
        delete v.p5decr;
        delete v.p5postdecr;
        delete v.p5aget_array;
        delete v.p5aget_hash;
        delete v.p5untie;
        delete v.shift;
        delete v.pop;
        delete v.p5unshift;
        delete v.p5push;
        return res;
    }
    else {
        return null;
    }
};


function p5ArrayOfAlias(o) {

    // this is the structure that represents @_
    // _array = [ ref, index,
    //            ref, index,
    //            ...
    //          ]

    // TODO - autovivify array cells

    this._array_ = o;

    this.p5aget = function (i) {
        if (i < 0) { i =  this.length + i };
        return this._array_[i+i][this._array_[i+i+1]]; 
    }
    this.p5aset = function (i, v) {
        if (i < 0) { i =  this.length + i };
        this._array_[i+i][this._array_[i+i+1]] = v;
        return this._array_[i+i][this._array_[i+i+1]]
    }
    this.p5incr = function (i) {
        if (i < 0) { i =  this.length + i };
        this._array_[i+i][this._array_[i+i+1]] = p5incr_(this._array_[i+i][this._array_[i+i+1]]);
        return this._array_[i+i][this._array_[i+i+1]];
    }
    this.p5postincr = function (i) {
        if (i < 0) { i =  this.length + i };
        var v = this._array_[i+i][this._array_[i+i+1]];
        this._array_[i+i][this._array_[i+i+1]] = p5incr_(this._array_[i+i][this._array_[i+i+1]]);
        return v;
    }
    this.p5decr = function (i) {
        if (i < 0) { i =  this.length + i };
        this._array_[i+i][this._array_[i+i+1]] = p5decr_(this._array_[i+i][this._array_[i+i+1]]);
        return this._array_[i+i][this._array_[i+i+1]];
    }
    this.p5postdecr = function (i) {
        if (i < 0) { i =  this.length + i };
        var v = this._array_[i+i][this._array_[i+i+1]];
        this._array_[i+i][this._array_[i+i+1]] = p5decr_(this._array_[i+i][this._array_[i+i+1]]);
        return v;
    }
    this.p5aget_array = function (i) {
        if (i < 0) { i =  this.length + i };
        if (this._array_[i+i][this._array_[i+i+1]] == null) {
            this._array_[i+i][this._array_[i+i+1]] = new p5ArrayRef([])
        }
        return this._array_[i+i][this._array_[i+i+1]]
    }
    this.p5aget_hash = function (i) {
        if (i < 0) { i =  this.length + i };
        if (this._array_[i+i][this._array_[i+i+1]] == null) {
            this._array_[i+i][this._array_[i+i+1]] = new p5HashRef({})
        }
        return this._array_[i+i][this._array_[i+i+1]]
    }
    this.p5unshift = function (args) { 
        for(var i = args.length-1; i >= 0; i--) {
            this.unshift(0);
            this.unshift([args[i]]);
        }
        return this._array_.length / 2; 
    }
    this.p5push = function (args) { 
        for(var i = 0; i < args.length; i++) {
            this.push([args[i]]);
            this.push(0);
        }
        return this._array_.length / 2; 
    }
    this.shift = function () { 
        var v0 = this._array_.shift();
        return v0[this._array_.shift()];
    }
    this.pop = function () { 
        var v1 = this._array_.pop();
        var v0 = this._array_.pop();
        return v0[v1];
    }
}


//
//
// lib/Perlito5/Javascript2/CORE.js
//
// CORE functions for "Perlito" Perl5-in-Javascript2
//
// AUTHORS
//
// Flavio Soibelmann Glock  fglock@gmail.com
//
// COPYRIGHT
//
// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.
//
// This program is free software; you can redistribute it and/or modify it
// under the same terms as Perl itself.
//
// See http://www.perl.com/perl/misc/Artistic.html

var CORE = p5pkg.CORE;

var isNode = typeof require != "undefined";


if (isNode) {
    try {
        var sleep = require("sleep");
        CORE.sleep = function(List__) {
            var n = p5num(List__[0]) || 1;
            sleep.usleep(n * 1000000);  // sleep for n seconds (1 second is 1000000 microseconds)
            return n;
        }
    }
    catch (err) {
        CORE.sleep = function(List__) {
            CORE.die("sleep() function failed. Maybe you need 'npm install sleep'?\n" + err);
        }
    }
}
if (!CORE.sleep) {
    CORE.sleep = function(List__) {
        CORE.die("sleep() not supported for this platform");
    }
}

CORE.time = function(List__) {
    return CORE.int([Date.now() / 1000]);
}
var _fmt_date = function(date) {
    return ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][date.getDay()] + ' ' +
        ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'][date.getMonth()] + ' ' +
        date.getDate() + ' ' + 
        CORE.sprintf([ "%02d:%02d:%02d ", date.getHours(), date.getMinutes(), date.getSeconds() ]) +
        date.getFullYear();
}
var _list_date = function(date) {
    var year_start = new Date(date);
    year_start.setMonth(0, 1);
    var year_day = Math.round((date-year_start)/8.64e7);

    var isdst = 0;  // not implemented

    return [date.getSeconds(),date.getMinutes(),date.getHours(),date.getDate(),
        date.getMonth(),date.getFullYear()-1900,date.getDay(),
        year_day,
        isdst
    ];
}
CORE.localtime = function(List__, want) {
    var n = List__.length ? p5num(List__[0]) : CORE.time() ;
    var date = new Date(n*1000);
    if (!want) {
        return _fmt_date(date);
    }
    return _list_date(date);
}
CORE.gmtime = function(List__, want) {
    var n = List__.length ? p5num(List__[0]) : CORE.time() ;
    var ofs = new Date().getTimezoneOffset() * 60;
    var date = new Date((n + ofs)*1000);
    if (!want) {
        return _fmt_date(date);
    }
    return _list_date(date);
}

CORE.bless = function(List__) {
    var o        = List__[0];
    var pkg_name = List__[1];
    if (typeof pkg_name === "object") {
        // bless {}, Class
        o._class_ = pkg_name;
        return o;
    }
    if (!p5pkg.hasOwnProperty(pkg_name)) {
        p5make_package(pkg_name);
    }
    o._class_ = p5pkg[pkg_name];
    return o;
};

CORE.caller = function(List__, want) {
    if (p5pkg["Perlito5"].v_CALLER && p5pkg["Perlito5"].v_CALLER._array_ && p5pkg["Perlito5"].v_CALLER._array_.p5aget(0) ) {
        // TODO
        return p5pkg["Perlito5"].v_CALLER._array_.p5aget(0)._array_
    }
    return p5context([], want);
};

CORE.chr = function(List__) {
    var v = p5num(List__[0]);
    return String.fromCharCode(v >= 0 ? v : 65533);
};

CORE.ord = function(List__) {
    return p5str(List__[0]).charCodeAt(0);
};

CORE.hex = function(List__) {
    var v = List__[0];

    for(var i = 0; i < v.length; i++) {
        if (v.charCodeAt(i) > 255) {
            CORE.die(["Wide character in hex"]);
        }
    }

    var b1 = v.substr(0,1);
    var b2 = v.substr(0,2);
    if (b1 == "x" || b1 == "X" || b2 == "0x" || b2 == "0X") {
        return CORE.oct(List__);
    }
    v = "0x" + v;
    return CORE.oct([v]);
};

CORE.oct = function(List__) {
    var v = List__[0];
    v = v.trim();

    for(var i = 0; i < v.length; i++) {
        if (v.charCodeAt(i) > 255) {
            CORE.die(["Wide character in oct"]);
        }
    }

    var b = v.substr(0,1);
    if (b == "b" || b == "B" || b == "x" || b == "X") {
        v = "0" + v;
    }
    b = v.substr(0,2);

    for(var i = 2; i < v.length; i++) {
        if (v.substr(i,2) == "__") {
            v = v.substr(0, i);
        }
    }

    var re = new RegExp('_', 'g');
    v = v.replace(re, "");

    if (b == "0b" || b == "0B") {
        for(var i = 2; i < v.length; i++) {
            var c = v.substr(i,1);
            if (c >= "0" && c <= "1") {}
            else {
                v = v.substr(0, i);
            }
        }
        if (v.length == 2) { return 0 }
        return parseInt(v.substr(2), 2);
    }

    if (b == "0x" || b == "0X") {
        for(var i = 2; i < v.length; i++) {
            var c = v.substr(i,1);
            if (c >= "0" && c <= "9" || c >= "A" && c <= "F" || c >= "a" && c <= "f") {}
            else {
                v = v.substr(0, i);
            }
        }
        if (v.length == 2) { return 0 }
        return parseInt(v.substr(2), 16);
    }

    return parseInt(v, 8);
};

CORE.abs   = function(List__) { return Math.abs(List__[0]) };
CORE.exp   = function(List__) { return Math.exp(List__[0]) };
CORE.log   = function(List__) { return Math.log(List__[0]) };
CORE.cos   = function(List__) { return Math.cos(List__[0]) };
CORE.sin   = function(List__) { return Math.sin(List__[0]) };
CORE.sqrt  = function(List__) { return Math.sqrt(List__[0]) };
CORE.atan2 = function(List__) { return Math.atan2(List__[0], List__[1]) };
CORE.int   = function(List__) { return List__[0] > 0 ? Math.floor(List__[0]) : Math.ceil(List__[0]) };

var p5rand = function(v) { return Math.random() * v };
CORE.srand = function(List__) {
    if (List__.length > 0) {
        var v = p5num(List__[0]) || 1;
        p5rand = function() {
            v = Math.sin(v) * 10000;
            return v - Math.floor(v);
        };
        return List__[0];
    }
    return CORE.int(CORE.rand(100000));
};
CORE.rand = function(List__) {
    var v = p5num(List__[0]) || 1;
    return p5rand(v);
};

CORE.lc      = function(List__) { return p5str(List__[0]).toLowerCase() };
CORE.uc      = function(List__) { return p5str(List__[0]).toUpperCase() };

CORE.lcfirst = function(List__) {
    var s = p5str(List__[0]);
    var c = s.length > 0 ? s.slice(0,1).toLowerCase() : "";
    s = s.length > 1 ? s.substr(1) : "";
    return c + s
};

CORE.ucfirst = function(List__) {
    var s = p5str(List__[0]);
    var c = s.length > 0 ? s.slice(0,1).toUpperCase() : "";
    s = s.length > 1 ? s.substr(1) : "";
    return c + s
};

CORE.quotemeta = function(List__) {
    var s = p5str(List__[0]);
    var out = [];
    for(var i = 0; i < s.length; i++) {
        if (s.substr(i, 1).match(/[^0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz]/)) {
            out.push(String.fromCharCode(92));
        }
        out.push(s.substr(i, 1));
    }
    return out.join("");       
};

CORE.substr = function(List__) {
    var expr        = List__[0];
    var offset      = List__[1];
    var length      = List__[2];
    var replacement = List__[3];
    if (length < 0) {
        var s = p5str(expr);
        length = s.length - offset + length;
    } 
    return p5str(expr).substr(offset, length);
};

CORE.values = function(List__, p5want) {
    var o = List__[0];
    delete o["_each_"];
    if (p5want) {
        if (o == null) {
            return [];
        };
        if (typeof o.values === "function") {
            return o.values();
        }
        var out = [];
        for (var i in o) {
            out.push(o[i]);
        }
        return out;
    }
    return CORE.keys(List__, p5want);
};

CORE.keys = function(List__, p5want) {
    var o = List__[0];
    delete o["_each_"];
    if (p5want) {
        if (o == null) {
            return [];
        }
        if (typeof o.keys === "function") {
            return o.keys();
        }
        var out = [];
        for (var i in o) {
            out.push(i);
        }
        return out;
    }
    else {
        if (o == null) {
            return 0;
        }
        if (typeof o.keys === "function") {
            return p5num(o.keys());
        }
        var out = 0;
        for (var i in o) {
            out++;
        }
        return out;
    }
};

CORE.each = function(List__, p5want) {
    var o = List__[0];
    if (o.hasOwnProperty("_each_")) {
        return o._each_(p5want)
    }
    var keys = CORE.keys([o], 1);
    var i = 0;
    o._each_ = function () {
        if (i < keys.length) {
            i++;
            return p5want ? [keys[i-1], o[keys[i-1]]] : keys[i-1];
        }
        i = 0;
        return p5want ? [] : null;
    };
    return o._each_(p5want);
};

CORE.reverse = function(List__) {
    var o = List__;
    if (o == null) {
        return "";
    }
    if (typeof o === "string") {
        return o.split("").reverse().join("")
    }
    var out = [];
    for(var i = 0; i < o.length; i++) {
        out.unshift(o[i]);
    }
    return out;
};

CORE.splice = function(List__, p5want) {
    var array  = List__.shift();
    // CORE.say([ array ]);
    var offset = p5num(List__.shift());
    var limit  = List__.length ? p5num(List__.shift()) : (array.length + 1);

    if (limit < 0) {
        limit = array.length + limit - 1;
    }

    var list = [offset, limit];
    for(var i = 0; i < List__.length; i++) {
        list = p5list_to_a([ list, List__[i] ]);
    }

    var out = array.splice.apply(array, list);
    // CORE.say([ CORE.join([":",array]), " ofs=", offset, " lim=", limit, " list=", list, " out=", CORE.join([":",out])  ]);
    return p5want ? out : out.pop();
};

CORE.join = function(List__) {
    var s = List__.shift();
    var o = [];
    for (var i = 0; i < List__.length; i++) {
        o.push(p5str(List__[i]));
    }
    return o.join(s);
};

CORE.index = function(List__) {
    var o = List__[0];
    var s = List__[1];
    try {
        return o.indexOf(s, p5num(List__[2]));
    }
    catch(err) {
        return -1;
    }
};
CORE.rindex = function(List__) {
    var o = List__[0];
    var s = List__[1];
    try {
        if (List__.length > 2) {
            var i = p5num(List__[2]);
            if (i < 0) {
                if (s.length == 0) {
                    return 0;
                }
                return -1;
            }
            return o.lastIndexOf(s, i);
        }
        return o.lastIndexOf(s);
    }
    catch(err) {
        return -1;
    }
};

CORE.length = function(List__) {
    return p5str(List__[0]).length;
};

CORE.pack    = function(List__) { CORE.warn([ "CORE::pack not implemented" ]) };
CORE.unpack  = function(List__) { CORE.warn([ "CORE::unpack not implemented" ]) };

CORE.ref = function(List__) {
    var o = List__[0];
    if (o == null) {
        return "";
    }
    if (o._class_ && typeof o._class_._ref_ === "string") {
        // blessed reference
        return o._class_._ref_;
    }
    if (typeof o._ref_ === "string") {
        // un-blessed reference
        return o._ref_;
    }
    if (typeof o === "function") {
        return "CODE";
    }
    return "";
};

CORE.split = function(List__, want) {
    var pattern = List__[0];
    var s       = p5str(List__[1]);
    var limit   = p5num(List__[2]);
    if (!want) {
        // scalar context
        return p5num(CORE.split(List__, 1));
    }
    if (limit == 0) {
        // strip trailing empty strings and undef
        var res = CORE.split([pattern, s, -1], 1);
        while (res.length && (res[res.length - 1] == '' || typeof res[res.length - 1] == "undefined") ) {
            res.pop()
        }
        return res;
    }
    if (s == '') {
        return []
    }
    // make sure pattern is a RegExp
    if (typeof pattern === "object" && (pattern instanceof RegExp)) {
        pattern = pattern.source;
    }
    else {
        pattern = p5str(pattern);
        if (pattern == " ") {
            // single space string is special
            pattern = "(?: |\t|\n)+";
            s = s.replace(/^(?: |\t|\n)+/, "");
        }
    }
    // add "g", "m" modifiers
    var flags = "g";
    if (pattern.substr(0, 1) == "^" || pattern.substr(-1,1) == "$") {
        flags = flags + "m";
    }
    pattern = new RegExp(pattern, flags);
    var res = [];
    var pos = 0;
    var count = 0;
    while (1) {
        if (limit > 0 && limit <= (count + 1)) {
            res.push(s.substr(pos));
            return res;
        }
        var m = pattern.exec(s);
        if (m === null) {
            // no match
            res.push(s.substr(pos));
            return res;
        }
        if (m[0].length == 0 && m.index == pos) {
            // pointer didn't move
            pattern.lastIndex = pattern.lastIndex + 1;
        }
        else {
            var part = s.substr(pos, m.index - pos);
            res.push(part);
            count++;
            pos = m.index + m[0].length;
            pattern.lastIndex = pos;
        }
        for (var i = 1; i < m.length ; i++) {
            res.push(m[i]);     // captured substrings; don't increment count
        }
    }
};


//
//
// lib/Perlito5/Javascript2/IO.js
//
// I/O functions for "Perlito" Perl5-in-Javascript2
//
// AUTHORS
//
// Flavio Soibelmann Glock  fglock@gmail.com
//
// COPYRIGHT
//
// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.
//
// This program is free software; you can redistribute it and/or modify it
// under the same terms as Perl itself.
//
// See http://www.perl.com/perl/misc/Artistic.html

var isNode = typeof require != "undefined";
if (isNode) {

    var fs = require("fs");

    p5typeglob_set("Perlito5::IO", "print", function (filehandle, List__, p5want) {
        try {
            var v = filehandle;
            var pkg;
            if (CORE.ref([v])) {
                // looks like a filehandle
                pkg = v;
            }
            else {
                // looks like a package name
                pkg = p5make_package(v);
            }
            if (!pkg.file_handle) {
                pkg.file_handle = {};
            }
            var handle_id = pkg.file_handle.id;
            if (handle_id == 1) {
                for (var i = 0; i < List__.length; i++) {
                    process.stdout.write(p5str(List__[i]));
                }
            }
            else if (handle_id == 2) {
                for (var i = 0; i < List__.length; i++) {
                    process.stderr.write(p5str(List__[i]));
                }
            }
            else {
                for (var i = 0; i < List__.length; i++) {
                    fs.writeSync(handle_id, p5str(List__[i]));
                }
            }
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    } );

    var p5_extra_buffer_size = 100;
    p5typeglob_set("Perlito5::IO", "read", function (filehandle, List__, p5want) {
        try {
            var v = filehandle;
            var length = List__.shift();
            var pkg;
            if (CORE.ref([v])) {
                // looks like a filehandle
                pkg = v;
            }
            else {
                // looks like a package name
                pkg = p5make_package(v);
            }
            if (!pkg.file_handle) {
                pkg.file_handle = {};
            }
            var handle_id = pkg.file_handle.id;

            if (!pkg.file_handle.buffer) {
                // we don't have any data yet
                var length_wanted = length + 2 * p5_extra_buffer_size;
                var buffer = new Buffer(length_wanted);
                var bytes_read = fs.readSync(handle_id, buffer, 0, length_wanted, null);
                if (bytes_read < length_wanted) {
                    pkg.file_handle.buffer_eof = 1;
                }
                pkg.file_handle.buffer = buffer;
                pkg.file_handle.buffer_start = 0;
                pkg.file_handle.buffer_end = bytes_read;
                pkg.file_handle.buffer_length = pkg.file_handle.buffer_end;
            }
            else if (pkg.file_handle.buffer_length > (length + p5_extra_buffer_size)) {
                // we have enough data
            }
            else if (!pkg.file_handle.buffer_eof) {
                // we have some data; append more data to the internal buffer
                var length_wanted = length + 2 * p5_extra_buffer_size;
                var buffer = new Buffer(pkg.file_handle.buffer_length + length_wanted);
                pkg.file_handle.buffer.copy(buffer, 0, pkg.file_handle.buffer_start, pkg.file_handle.buffer_end);
                var bytes_read = fs.readSync(handle_id, buffer, pkg.file_handle.buffer_length, length_wanted, null);
                if (bytes_read < length_wanted) {
                    pkg.file_handle.buffer_eof = 1;
                }
                pkg.file_handle.buffer = buffer;
                pkg.file_handle.buffer_start = 0;
                pkg.file_handle.buffer_end = pkg.file_handle.buffer_length + bytes_read;
                pkg.file_handle.buffer_length = pkg.file_handle.buffer_end;
            }

            var s = pkg.file_handle.buffer.toString('utf-8', pkg.file_handle.buffer_start, pkg.file_handle.buffer_end).substr(0, length);

            // how many bytes we actually used
            var buffer_used = Buffer.byteLength(s, 'utf-8');

            pkg.file_handle.buffer_start = pkg.file_handle.buffer_start + buffer_used;
            pkg.file_handle.buffer_length = pkg.file_handle.buffer_length - buffer_used;

            if ( handle_id == 0) {
                // STDIN
                pkg.file_handle.buffer_eof = (s.length ? 0 : 1);
                pkg.file_handle.eof = (s.length ? 0 : 1);
            }
            else if ( pkg.file_handle.buffer_eof && pkg.file_handle.buffer_length <= 0 ) {
                pkg.file_handle.eof = 1;
            }

            return [s.length, s];
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return [];
        }
    } );

    var p5ARGV = 0;
    p5typeglob_set("Perlito5::IO", "readline", function (List__, p5want) {
        var filehandle = List__.shift();

        if (p5want) {
            var out = [];
            while (1) {
                var s = p5pkg["Perlito5::IO"].readline([filehandle], 0);
                if (s == null) {
                    return out;
                }
                out.push(s);
            }
        }

        var v = filehandle;
        var pkg;
        if (CORE.ref([v])) {
            // looks like a filehandle
            pkg = v;
        }
        else {
            // looks like a package name
            pkg = p5make_package(v);
            if (v == "ARGV") {
                // ARGV is magical
                if (pkg.file_handle.id == null) {
                    if (!p5ARGV) {
                        if (p5pkg["main"]["List_ARGV"].length == 0) {
                            p5pkg["main"]["List_ARGV"].push('-');
                        }
                    }
                    p5ARGV = 1;
                    // TODO - open $ARGV[1], ...
                    var filename = p5pkg["main"]["List_ARGV"].shift();
                    CORE.open([ "ARGV", "<", filename ]) || CORE.die([ p5pkg["main"]["v_!"] ]);
                }
            }
        }
        if (!pkg.file_handle) {
            pkg.file_handle = {};
        }

        if (CORE.eof([v])) {
            return null;
        }

        var separator = p5pkg["main"]["v_/"];  // input record separator
        var buf = pkg.file_handle.readline_buffer;
        var pos;

        if (separator) {
            pos = buf.indexOf(separator);
            while ( pos < 0 && !pkg.file_handle.eof ) {
                var r = p5pkg["Perlito5::IO"].read(filehandle, [100]);
                buf = buf + r[1];
                pos = buf.indexOf(separator);
            }
        }
        else {
            // no separator
            pos = -1;
            while ( !pkg.file_handle.eof ) {
                var r = p5pkg["Perlito5::IO"].read(filehandle, [100]);
                buf = buf + r[1];
            }
        }

        if (pos < 0) {
            pkg.file_handle.readline_buffer = '';
            if (!buf.length) {
                pkg.file_handle.readline_buffer = '';
                pkg.file_handle.eof = 1;
                return null
            }
            return buf;
        }
        var s = buf.substr(0, pos + separator.length);
        pkg.file_handle.readline_buffer = buf.substr(pos + separator.length);
        if (!s.length) {
            pkg.file_handle.readline_buffer = '';
            pkg.file_handle.eof = 1;
            return null
        }
        return s;
    } );

    p5typeglob_set("Perlito5::IO", "close", function (filehandle, List__, p5want) {
        try {
            var v = filehandle;
            var pkg;
            if (CORE.ref([v])) {
                // looks like a filehandle
                pkg = v;
            }
            else {
                // looks like a package name
                pkg = p5make_package(v);
            }
            if (!pkg.file_handle) {
                pkg.file_handle = {};
            }
            var handle_id = pkg.file_handle.id;
            if (handle_id == 1) {
                process.stdout.close();
            }
            else if (handle_id == 2) {
                process.stderr.close();
            }
            else {
                fs.closeSync(handle_id);
            }
            pkg.file_handle.id = null;
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    } );

    CORE.eof = function(List__) {
        try {
            var filehandle = List__.shift();
            var v = filehandle;
            var pkg;
            if (CORE.ref([v])) {
                // looks like a filehandle
                pkg = v;
            }
            else {
                // looks like a package name
                pkg = p5make_package(v);
            }
            if (!pkg.file_handle) {
                pkg.file_handle = {};
            }
            var handle_id = pkg.file_handle.id;
            if (handle_id == null) {
                return 1;  // file is not open
            }
            return pkg.file_handle.eof && pkg.file_handle.readline_buffer.length == 0;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    };

    CORE.open = function(List__) {
        try {
            var filehandle = List__.shift();
            var flags = List__.shift();
            var path;
            if (List__.length) {
                path = List__.shift();
            }
            else {
                // 2-argument open
                var re = new RegExp("^([<>+|]*)(.*)$", "");
                var capture = re.exec(flags);
                flags = capture[1];
                path = capture[2];
            }
            var v = filehandle;
            var pkg;
            if (CORE.ref([v])) {
                // looks like a filehandle
                pkg = v;
            }
            else {
                // looks like a package name
                pkg = p5make_package(v);
                if (path == "-") {
                    if (flags == '>' || flags == '>>' || flags == '+>' || flags == '+>>') {
                        pkg.file_handle = p5pkg["STDOUT"].file_handle;
                    }
                    else {
                        pkg.file_handle = p5pkg["STDIN"].file_handle;
                    }
                }
            }
            if (!pkg.file_handle) {
                pkg.file_handle = {};
            }
            var handle_id = pkg.file_handle.id;
            if (handle_id != null) {
                if (handle_id < 2) {
                    return 1;   // STDIN, STDOUT, STDERR
                }
                p5pkg["Perlito5::IO"].close(filehandle, []);
            }
            if (flags == '>') {
                flags = 'w'
            }
            else if (flags == '>>') {
                flags = 'a'
            }
            else if (flags == '<' || flags == '' || flags == '<:encoding(UTF-8)') {
                flags = 'r'
            }
            else if (flags == '+>') {
                flags = 'w+'
            }
            else if (flags == '+>>') {
                flags = 'a+'
            }
            else if (flags == '+<') {
                flags = 'r+'
            }
            else {
                CORE.die([ "don't know what to do with MODE '", flags, "'" ]);
            }
            var id = fs.openSync(path, flags);
            pkg.file_handle = { id : id, readline_buffer : '' };
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    };

    var p5atime = function(s) {
        try {
            var stat = fs.statSync(s); return stat["atime"];
        }
        catch(err) {
            return '';
        }
    };
    var p5mtime = function(s) {
        try {
            var stat = fs.statSync(s); return stat["mtime"];
        }
        catch(err) {
            return '';
        }
    };
    var p5ctime = function(s) {
        try {
            var stat = fs.statSync(s); return stat["ctime"];
        }
        catch(err) {
            return '';
        }
    };
    var p5size = function(s) {
        try {
            var stat = fs.statSync(s); return stat["size"];
        }
        catch(err) {
            return '';
        }
    };
    var p5is_file = function(s) {
        try {
            var stat = fs.statSync(s); return stat.isFile() ? 1 : 0;
        }
        catch(err) {
            return '';
        }
    };
    var p5is_directory = function(s) {
        try {
            var stat = fs.statSync(s); return stat.isDirectory() ? 1 : 0;
        }
        catch(err) {
            return '';
        }
    };
    var p5file_exists = function(s) {
        return p5is_file(s) || p5is_directory(s);
    };

    CORE.binmode = function(List__) {
        try {
            // TODO
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    };

    CORE.rmdir = function(List__) {
        try {
            fs.rmdir(p5str(List__[0]));
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    };

    CORE.chdir = function(List__) {
        try {
            process.chdir(p5str(List__[0]));
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    };

    CORE.exit = function(List__) {
        process.exit(List__[0]);
    };

    CORE.rename = function(List__) {
        try {
            fs.renameSync(p5str(List__[0]), p5str(List__[1]));
            return 1;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return '';
        }
    };

    CORE.unlink = function(List__) {
        var count = 0;
        try {
            for(var i = 0; i < List__.length; i++) {
                fs.unlinkSync(p5str(List__[i]));
                count++;
            }
            return count;
        }
        catch(err) {
            p5pkg["main"]["v_!"] = err;
            return count;
        }
    };

} else {
    // not running in node.js
    p5typeglob_set("Perlito5::IO", "print", function (filehandle, List__, p5want) {
        var s = "";
        for (var i = 0; i < List__.length; i++) {
            s = s + p5str(List__[i]);
        }
        if (typeof write === 'function') {
            // d8 shell uses "write"
            write(s);
        }
        else if (typeof print === 'function') {
            // Rhino uses "print"
            print(s);
        }
        else if (console && typeof console.log === 'function') {
            console.log(s);
        }
        else {
            alert(s);
        }
        return 1;
    });
}

p5typeglob_set("Perlito5::IO", "say", function (filehandle, List__, p5want) {
    p5pkg['Perlito5::IO'].print( filehandle, List__);
    p5pkg['Perlito5::IO'].print( filehandle, ["\n"]);
    return 1;
} );
p5typeglob_set("Perlito5::IO", "printf", function (filehandle, List__, p5want) {
    p5pkg["Perlito5::IO"].print( filehandle, CORE.sprintf(List__));
    return 1;
} );

CORE.select = function(List__) {
    if (List__.length == 1) {
        var v = List__[0];
        p5pkg["Perlito5"].v_SELECT = v;
    }
    return p5pkg["Perlito5"].v_SELECT;
};

CORE.die = function(List__) {
    var i;
    var s = "";
    for (var i = 0; i < List__.length; i++) {
        s = s + p5str(List__[i]);
    }
    if (s.substr(-1, 1) != "\n") {
        try {
            if (s == "") {
                s = "Died";
            }
            s = s + " at " + p5pkg["Perlito5"].v_FILE_NAME + " line " + p5pkg["Perlito5"].v_LINE_NUMBER;
            s = s + "\n" + new Error().stack + "\n";
        }
        catch(err) { }
    }
    p5pkg["main"]["v_@"] = s;
    throw(new p5_error("die", s));
};

CORE.say = function(List__) {
    return p5pkg['Perlito5::IO'].say( 'STDOUT', List__);
};
CORE.print = function(List__) {
    return p5pkg['Perlito5::IO'].print( 'STDOUT', List__);
};
CORE.printf = function(List__) {
    return p5pkg['Perlito5::IO'].printf( 'STDOUT', List__);
};
CORE.readline = function(List__, p5want) {
    return p5pkg['Perlito5::IO'].readline(List__, p5want);
};

CORE.warn = function(List__) {
    var i;
    var s = "";
    for (var i = 0; i < List__.length; i++) {
        s = s + p5str(List__[i]);
    }
    if (s.substr(-1, 1) != "\n") {
        try {
            if (s == "") {
                s = "Warning: something's wrong";
            }
            s = s + " at " + p5pkg["Perlito5"].v_FILE_NAME + " line " + p5pkg["Perlito5"].v_LINE_NUMBER;
            s = s + "\n" + new Error().stack + "\n";
        }
        catch(err) { }
    }
    p5pkg['Perlito5::IO'].print( 'STDERR', [s]);
};


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

CORE.sprintf = function(List__) {
    var format = List__.shift();
    var list = List__;

    // Check for format definition
    if ( typeof format != 'string' ) {
        CORE.die(["sprintf: The first arguments need to be a valid format string."]);
    }
    
    /**
     * Define the regex to match a formating string
     * The regex consists of the following parts:
     * percent sign to indicate the start
     * (optional) sign specifier
     * (optional) padding specifier
     * (optional) alignment specifier
     * (optional) width specifier
     * (optional) precision specifier
     * type specifier:
     *  % - literal percent sign
     *  b - binary number
     *  c - ASCII character represented by the given value
     *  d - signed decimal number
     *  f - floating point value
     *  o - octal number
     *  s - string
     *  x - hexadecimal number (lowercase characters)
     *  X - hexadecimal number (uppercase characters)
     */
    var r = new RegExp( /%(\+)?([0 ]|'(.))?(-)?([0-9]+)?(\.([0-9]+))?([%bcdfosxX])/g );

    /**
     * Each format string is splitted into the following parts:
     * 0: Full format string
     * 1: sign specifier (+)
     * 2: padding specifier (0/<space>/'<any char>)
     * 3: if the padding character starts with a ' this will be the real 
     *    padding character
     * 4: alignment specifier
     * 5: width specifier
     * 6: precision specifier including the dot
     * 7: precision specifier without the dot
     * 8: type specifier
     */
    var parts      = [];
    var paramIndex = 0;
    var part;
    while ( part = r.exec( format ) ) {
        // Check if an input value has been provided, for the current
        // format string
        if ( paramIndex >= list.length ) {
            CORE.die(["sprintf: At least one argument was missing."]);
        }

        parts[parts.length] = {
            /* beginning of the part in the string */
            begin: part.index,
            /* end of the part in the string */
            end: part.index + part[0].length,
            /* force sign */
            sign: ( part[1] == '+' ),
            /* is the given data negative */
            negative: ( parseInt( list[paramIndex] ) < 0 ) ? true : false,
            /* padding character (default: <space>) */
            padding: ( part[2] == undefined )
                     ? ( ' ' ) /* default */
                     : ( ( part[2].substring( 0, 1 ) == "'" ) 
                         ? ( part[3] ) /* use special char */
                         : ( part[2] ) /* use normal <space> or zero */
                       ),
            /* should the output be aligned left?*/
            alignLeft: ( part[4] == '-' ),
            /* width specifier (number or false) */
            width: ( part[5] != undefined ) ? part[5] : false,
            /* precision specifier (number or false) */
            precision: ( part[7] != undefined ) ? part[7] : false,
            /* type specifier */
            type: part[8],
            /* the given data associated with this part converted to a string */
            data: ( part[8] != '%' ) ? String ( list[paramIndex++] ) : false
        };
    }

    var newString = "";
    var start = 0;
    // Generate our new formated string
    for( var i=0; i<parts.length; ++i ) {
        // Add first unformated string part
        newString += format.substring( start, parts[i].begin );
        
        // Mark the new string start
        start = parts[i].end;

        // Create the appropriate preformat substitution
        // This substitution is only the correct type conversion. All the
        // different options and flags haven't been applied to it at this
        // point
        var preSubstitution = "";
        switch ( parts[i].type ) {
            case '%':
                preSubstitution = "%";
            break;
            case 'b':
                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 2 );
            break;
            case 'c':
                preSubstitution = String.fromCharCode( Math.abs( parseInt( parts[i].data ) ) );
            break;
            case 'd':
                preSubstitution = String( Math.abs( parseInt( parts[i].data ) ) );
            break;
            case 'f':
                preSubstitution = ( parts[i].precision == false )
                                  ? ( String( ( Math.abs( parseFloat( parts[i].data ) ) ) ) )
                                  : ( Math.abs( parseFloat( parts[i].data ) ).toFixed( parts[i].precision ) );
            break;
            case 'o':
                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 8 );
            break;
            case 's':
                preSubstitution = parts[i].data.substring( 0, parts[i].precision ? parts[i].precision : parts[i].data.length ); /* Cut if precision is defined */
            break;
            case 'x':
                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 16 ).toLowerCase();
            break;
            case 'X':
                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 16 ).toUpperCase();
            break;
            default:
                throw 'sprintf: Unknown type "' + parts[i].type + '" detected. This should never happen. Maybe the regex is wrong.';
        }

        // The % character is a special type and does not need further processing
        if ( parts[i].type ==  "%" ) {
            newString += preSubstitution;
            continue;
        }

        // Modify the preSubstitution by taking sign, padding and width
        // into account

        // Pad the string based on the given width
        if ( parts[i].width != false ) {
            // Padding needed?
            if ( parts[i].width > preSubstitution.length ) 
            {
                var origLength = preSubstitution.length;
                for( var j = 0; j < parts[i].width - origLength; ++j ) 
                {
                    preSubstitution = ( parts[i].alignLeft == true ) 
                                      ? ( preSubstitution + parts[i].padding )
                                      : ( parts[i].padding + preSubstitution );
                }
            }
        }

        // Add a sign symbol if neccessary or enforced, but only if we are
        // not handling a string
        if ( parts[i].type == 'b' 
          || parts[i].type == 'd' 
          || parts[i].type == 'o' 
          || parts[i].type == 'f' 
          || parts[i].type == 'x' 
          || parts[i].type == 'X' ) {
            if ( parts[i].negative == true ) {
                preSubstitution = "-" + preSubstitution;
            }
            else if ( parts[i].sign == true ) {
                preSubstitution = "+" + preSubstitution;
            }
        }

        // Add the substitution to the new string
        newString += preSubstitution;
    }

    // Add the last part of the given format string, which may still be there
    newString += format.substring( start, format.length );

    return newString;
};

var p5want;
var List__ = [];
(function () {
	null;
	p5make_package('Perlito5');
	(function () {
		p5make_package('feature');
		p5typeglob_set('feature', 'import', (function () {
			var tmp3320;
			tmp3320 = function (List__, p5want) {
				return p5want ? [] : null
			};
			tmp3320._prototype_ = null;
			return tmp3320
		})());
		p5typeglob_set('feature', 'unimport', (function () {
			var tmp3321;
			tmp3321 = function (List__, p5want) {
				return p5want ? [] : null
			};
			tmp3321._prototype_ = null;
			return tmp3321
		})());
		1;
	})();
	// use feature
;
	(function () {
		p5make_package('strict');
		p5typeglob_set('strict', 'import', (function () {
			var tmp3322;
			tmp3322 = function (List__, p5want) {
				return ((p5make_package('Perlito5')['v_STRICT'] = (1)));
			};
			tmp3322._prototype_ = null;
			return tmp3322
		})());
		p5typeglob_set('strict', 'unimport', (function () {
			var tmp3323;
			tmp3323 = function (List__, p5want) {
				return ((p5make_package('Perlito5')['v_STRICT'] = (0)));
			};
			tmp3323._prototype_ = null;
			return tmp3323
		})());
		1;
	})();
	(function () {
		p5make_package('warnings');
		p5typeglob_set('warnings', 'import', (function () {
			var tmp3324;
			tmp3324 = function (List__, p5want) {
				return ((p5make_package('Perlito5')['v_WARNINGS'] = (1)));
			};
			tmp3324._prototype_ = null;
			return tmp3324
		})());
		p5typeglob_set('warnings', 'unimport', (function () {
			var tmp3325;
			tmp3325 = function (List__, p5want) {
				return ((p5make_package('Perlito5')['v_WARNINGS'] = (0)));
			};
			tmp3325._prototype_ = null;
			return tmp3325
		})());
		1;
	})();
	(function () {
		null;
		p5make_package('Perlito5::Match');
		p5typeglob_set('Perlito5::Match', 'flat', (function () {
			var tmp3326;
			tmp3326 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (( ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('capture') != null) ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('capture') : CORE.substr(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('str'), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('from'), (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('to')) - p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('from')))]), p5want)));
			};
			tmp3326._prototype_ = null;
			return tmp3326
		})());
		1;
	})();
	(function () {
		p5block(function (v) {}, function () {
				p5make_package('main');
				p5make_package('Perlito5::Grammar');
				// use Perlito5::Grammar::Expression
;
				// use Perlito5::Grammar::Statement
;
				// use Perlito5::Grammar::Control
;
				// use Perlito5::Grammar::String
;
				// use Perlito5::Grammar::Sigil
;
				// use Perlito5::Grammar::Use
;
				// use Perlito5::Grammar::Block
;
				// use Perlito5::Grammar::Space
;
				// use Perlito5::Grammar::Print
;
				// use Perlito5::Grammar::Map
;
				// use Perlito5::Grammar::Attribute
;
				// use Perlito5::Grammar::Number
;
				p5typeglob_set('Perlito5::Grammar', 'word', (function () {
					var tmp3327;
					tmp3327 = function (List__, p5want) {
						return (( p5bool(p5m(p5str(List__.p5aget(0)).substr(p5num(List__.p5aget(1)), 1), String.fromCharCode(92) + 'w', '', 0)) ? (new p5HashRef(p5a_to_h(p5list_to_a(['str', List__.p5aget(0), 'from', List__.p5aget(1), 'to', (p5num(List__.p5aget(1)) + 1)])))) : 0));
					};
					tmp3327._prototype_ = null;
					return tmp3327
				})());
				p5typeglob_set('Perlito5::Grammar', 'ident', (function () {
					var tmp3328;
					tmp3328 = function (List__, p5want) {
						try {
							p5and(p5context([p5or(!(p5m(p5str(List__.p5aget(0)).substr(p5num(List__.p5aget(1)), 1), String.fromCharCode(92) + 'w', '', 0)), function () {
								return p5m(p5str(List__.p5aget(0)).substr(p5num(List__.p5aget(1)), 1), String.fromCharCode(92) + 'd', '', 0)
							})], 0), function () {
								throw(p5context([], p5want))
							});
							var v_m;
							v_m = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', List__.p5aget(0), 'from', List__.p5aget(1), 'to', (p5num(List__.p5aget(1)) + 1)])))));
							(function () {
								p5while(function () {
									(v_m || (v_m = new p5HashRef({})))._hash_.p5postincr('to');
								}, function () {
									return p5m(p5str(List__.p5aget(0)).substr(p5num((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')), 1), String.fromCharCode(92) + 'w', '', 0)
								}, false, '', 0)
							})();
							return (p5context([v_m], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3328._prototype_ = null;
					return tmp3328
				})());
				p5typeglob_set('Perlito5::Grammar', 'caret_char', (function () {
					var tmp3329;
					tmp3329 = function (List__, p5want) {
						try {
							var v_c;
							v_c = (p5str(List__.p5aget(0)).substr(p5num(List__.p5aget(1)), 1));
							var v_pos;
							v_pos = (List__.p5aget(1));
							(function () {
								if ( (p5str(v_c) == '^') ) {
								(function () {
									var tmp3330 = v_pos;
									v_pos = p5incr_(tmp3330);
									return tmp3330
								})();
								v_c = (p5str(List__.p5aget(0)).substr(p5num(v_pos), 1));
								p5and(p5context([p5or((p5str(v_c) < 'A'), function () {
									return (p5str(v_c) > 'Z')
								})], 0), function () {
									throw(p5context([0], p5want))
								});
								v_c = (p5pkg['Perlito5::Grammar'].chr([((p5pkg['Perlito5::Grammar'].ord([v_c], 0) - p5pkg['Perlito5::Grammar'].ord(['A'], 0)) + 1)], 0));
							}
							else (function () {
								if ( p5bool(p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([List__.p5aget(0), v_pos]), 0)) ) {
								throw(p5context([0], p5want));
							}
							})()
							})();
							p5and(p5context([p5or((p5str(v_c) < p5pkg['Perlito5::Grammar'].chr([1], 0)), function () {
								return (p5str(v_c) > p5pkg['Perlito5::Grammar'].chr([26], 0))
							})], 0), function () {
								throw(p5context([0], p5want))
							});
							return ((new p5HashRef(p5a_to_h(p5list_to_a(['str', List__.p5aget(0), 'from', List__.p5aget(1), 'to', (p5num(v_pos) + 1), 'capture', v_c])))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3329._prototype_ = null;
					return tmp3329
				})());
				p5typeglob_set('Perlito5::Grammar', 'full_ident', (function () {
					var tmp3331;
					tmp3331 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5context([(function () {
											var v_last_match_null;
											v_last_match_null = (0);
											var v_m;
											v_m = (v_MATCH);
											var v_to;
											v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
											(function () {
												p5while(function () {
													(function () {
														if ( (p5num(v_to) == p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'))) ) {
														v_last_match_null = ((p5num(v_last_match_null) + 1));
													}
													else {
														v_last_match_null = (0);
													}
													})();
													v_m = (v_MATCH);
													v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
												}, function () {
													return p5and(p5context([p5and(p5context([p5and(('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0), function () {
														return p5context([(function () {
															var v_m2;
															v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0)
													})], 0), function () {
														return p5context([(p5num(v_last_match_null) < 2)], 0)
													})
												}, false, '', 0)
											})();
											v_MATCH = (v_m);
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_to));
											return ((1));
										})()], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3331._prototype_ = null;
					return tmp3331
				})());
				p5typeglob_set('Perlito5::Grammar', 'namespace_before_ident', (function () {
					var tmp3332;
					tmp3332 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5and(p5context([(function () {
											var v_tmp;
											v_tmp = (v_MATCH);
											v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
											var v_res;
											v_res = (p5context([p5and(('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0));
											v_MATCH = (v_tmp);
											return ((( p5bool(v_res) ? 1 : 0)));
										})()], 0), function () {
											return p5context([(function () {
												var v_last_match_null;
												v_last_match_null = (0);
												var v_m;
												v_m = (v_MATCH);
												var v_to;
												v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
												(function () {
													p5while(function () {
														(function () {
															if ( (p5num(v_to) == p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'))) ) {
															v_last_match_null = ((p5num(v_last_match_null) + 1));
														}
														else {
															v_last_match_null = (0);
														}
														})();
														v_m = (v_MATCH);
														v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
													}, function () {
														return p5and(p5context([p5and(p5context([p5and(('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5context([(function () {
																	var v_tmp;
																	v_tmp = (v_MATCH);
																	v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
																	var v_res;
																	v_res = (p5context([p5and(('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
																				return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																			})], 0));
																	v_MATCH = (v_tmp);
																	return ((( p5bool(v_res) ? 1 : 0)));
																})()], 0)
															})
														})], 0), function () {
															return p5context([(p5num(v_last_match_null) < 2)], 0)
														})
													}, false, '', 0)
												})();
												v_MATCH = (v_m);
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_to));
												return ((1));
											})()], 0)
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3332._prototype_ = null;
					return tmp3332
				})());
				p5typeglob_set('Perlito5::Grammar', 'optional_namespace_before_ident', (function () {
					var tmp3333;
					tmp3333 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar'].namespace_before_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('namespace_before_ident', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([(function () {
															var v_last_match_null;
															v_last_match_null = (0);
															var v_m;
															v_m = (v_MATCH);
															var v_to;
															v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
															(function () {
																p5while(function () {
																	(function () {
																		if ( (p5num(v_to) == p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'))) ) {
																		v_last_match_null = ((p5num(v_last_match_null) + 1));
																	}
																	else {
																		v_last_match_null = (0);
																	}
																	})();
																	v_m = (v_MATCH);
																	v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																}, function () {
																	return p5and(p5context([p5and(('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5context([(p5num(v_last_match_null) < 2)], 0)
																	})
																}, false, '', 0)
															})();
															v_MATCH = (v_m);
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_to));
															return ((1));
														})()], 0), function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('namespace_before_ident')]), 0)));
																return ((1));
															})()], 0)
														})
													})], 0)));
											})()], 0), function () {
												return p5or(p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([p5and(p5context([p5and(('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar'].optional_namespace_before_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('optional_namespace_before_ident', (v_m2));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	var v_name;
																	v_name = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('optional_namespace_before_ident')]), 0));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ('main'));
																	p5and((p5str(v_name) != ''), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((p5str((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('capture')) + ('::' + p5str(v_name)))))], 0)
																	});
																	return ((1));
																})()], 0)
															})
														})], 0)));
												})()], 0), function () {
													return p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
														return ((p5context([p5and(1, function () {
																return p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (''));
																	return ((1));
																})()], 0)
															})], 0)));
													})()], 0)
												})
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3333._prototype_ = null;
					return tmp3333
				})());
				p5typeglob_set('Perlito5::Grammar', 'exp_stmts2', (function () {
					var tmp3334;
					tmp3334 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar'].exp_stmts(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('exp_stmts', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5context([(function () {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('exp_stmts')]), 0)));
											return ((1));
										})()], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3334._prototype_ = null;
					return tmp3334
				})());
				p5typeglob_set('Perlito5::Grammar', 'exp', (function () {
					var tmp3335;
					tmp3335 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar::Expression'].exp_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::exp_parse', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5context([(function () {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::exp_parse')]), 0)));
											return ((1));
										})()], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3335._prototype_ = null;
					return tmp3335
				})());
				p5typeglob_set('Perlito5::Grammar', 'exp2', (function () {
					var tmp3336;
					tmp3336 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar::Expression'].exp_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::exp_parse', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5context([(function () {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::exp_parse')]), 0)));
											return ((1));
										})()], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3336._prototype_ = null;
					return tmp3336
				})());
				p5typeglob_set('Perlito5::Grammar', 'opt_type', (function () {
					var tmp3337;
					tmp3337 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(p5context([(function () {
														var v_m;
														v_m = (v_MATCH);
														(function () {
															if ( !( (('::' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)) && p5bool((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))))) ) {
															v_MATCH = (v_m);
														}
														})();
														return ((1));
													})()], 0), function () {
														return p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5pkg['Perlito5::Grammar'].full_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('full_ident', (v_m2));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('full_ident')]), 0)));
																return ((1));
															})()], 0)
														})
													})], 0)));
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([p5and(1, function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (''));
																return ((1));
															})()], 0)
														})], 0)));
												})()], 0)
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3337._prototype_ = null;
					return tmp3337
				})());
				p5typeglob_set('Perlito5::Grammar', 'var_sigil', (function () {
					var tmp3338;
					tmp3338 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(('$' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0)));
											})()], 0), function () {
												return p5or(p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([p5and(('%' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0)));
												})()], 0), function () {
													return p5or(p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
														return ((p5context([p5and(('@' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0)));
													})()], 0), function () {
														return p5or(p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
															return ((p5context([p5and(('&' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																	return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																})], 0)));
														})()], 0), function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([p5and(('*' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0)));
															})()], 0)
														})
													})
												})
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3338._prototype_ = null;
					return tmp3338
				})());
				p5typeglob_set('Perlito5::Grammar', 'var_name', (function () {
					var tmp3339;
					tmp3339 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar'].full_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('full_ident', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0)));
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([(function () {
															var v_m2;
															v_m2 = (p5call_sub('Perlito5::Grammar::Number', 'digits', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Number::digits', (v_m2));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0)));
												})()], 0)
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3339._prototype_ = null;
					return tmp3339
				})());
				p5typeglob_set('Perlito5::Grammar', 'var_ident', (function () {
					var tmp3340;
					tmp3340 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar'].var_sigil(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('var_sigil', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar'].optional_namespace_before_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('optional_namespace_before_ident', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												var v_m2;
												v_m2 = (p5pkg['Perlito5::Grammar'].var_name(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
												return (function () {
													if ( p5bool(v_m2) ) {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('var_name', (v_m2));
													return ((1));
												}
												else {
													return ((0));
												}
												})()
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('var_sigil')]), 1), 'namespace', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('optional_namespace_before_ident')]), 1), 'name', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('var_name')]), 1)]), 0)));
													return ((1));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3340._prototype_ = null;
					return tmp3340
				})());
				p5typeglob_set('Perlito5::Grammar', 'block', (function () {
					var tmp3341;
					tmp3341 = function (List__, p5want) {
						return (p5call_sub('Perlito5::Grammar::Block', 'block', p5list_to_a([List__]), p5want));
					};
					tmp3341._prototype_ = null;
					return tmp3341
				})());
				p5typeglob_set('Perlito5::Grammar', 'block2', (function () {
					var tmp3342;
					tmp3342 = function (List__, p5want) {
						return (p5call_sub('Perlito5::Grammar::Block', 'block', p5list_to_a([List__]), p5want));
					};
					tmp3342._prototype_ = null;
					return tmp3342
				})());
				p5typeglob_set('Perlito5::Grammar', 'opt_continue_block', (function () {
					var tmp3343;
					tmp3343 = function (List__, p5want) {
						return (p5call_sub('Perlito5::Grammar::Block', 'opt_continue_block', p5list_to_a([List__]), p5want));
					};
					tmp3343._prototype_ = null;
					return tmp3343
				})());
				var List_PKG = [];
				p5typeglob_set('Perlito5::Grammar', 'exp_stmts', (function () {
					var tmp3344;
					tmp3344 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						List_PKG.p5push([p5make_package('Perlito5')['v_PKG_NAME']]);
						var v_has_semicolon;
						var List_stmts = [];
						var v_m;
						v_m = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', [v_str, v_pos], 0));
						v_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
						(function () {
								p5while(function () {
									(function () {
										if ( (p5str(v_str).substr(p5num(v_pos), 1) == ';') ) {
										v_has_semicolon = (1);
										v_m = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', [v_str, (p5num(v_pos) + 1)], 0));
										v_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
									}
									else {
										v_m = (p5call_sub('Perlito5::Grammar::Statement', 'statement_parse', [v_str, v_pos], 0));
										(function () {
											if ( p5bool(v_m) ) {
											List_stmts.p5push(p5list_to_a([(v_m || (v_m = new p5HashRef({})))._hash_.p5hget('capture')]));
											v_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
											(function () {
												if ( (p5str(v_str).substr(p5num(v_pos), 1) == ';') ) {
												v_has_semicolon = (1);
												v_pos = ((p5num(v_pos) + 1));
											}
											})();
											v_m = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', [v_str, v_pos], 0));
											v_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
										}
										})();
									}
									})();
								}, function () {
									return v_m
								}, false, '', 0)
							})();
						p5make_package('Perlito5')['v_PKG_NAME'] = (List_PKG.pop());
						(p5make_package('Perlito5')['v_BLOCK_HAS_SEMICOLON'] = (p5or(p5make_package('Perlito5')['v_BLOCK_HAS_SEMICOLON'], function () {
										return v_has_semicolon
									})));
						return ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'to', v_pos, 'capture', (new p5ArrayRef(List_stmts))])))));
					};
					tmp3344._prototype_ = null;
					return tmp3344
				})());
			}, [0], false, ''
		);
		1;
	})();
	(function () {
		p5block(function (v) {}, function () {
				p5make_package('main');
				p5make_package('Perlito5::Grammar');
				// use strict
;
				// use Perlito5::Grammar::Expression
;
				// use Perlito5::Grammar::Statement
;
				p5typeglob_set('Perlito5::Grammar', 'unless', (function () {
					var tmp3345;
					tmp3345 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('unless' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 6)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((6 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([(function () {
													var v_m2;
													v_m2 = (p5pkg['Perlito5::Grammar::Expression'].term_paren(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::term_paren', (v_m2));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})()], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5and(p5context([(function () {
																var v_pos1;
																v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																return ((p5or(p5context([(function () {
																		return ((p5context([p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5and(p5context([p5and(('else' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 4)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((4 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0), function () {
																					return p5and(p5context([(function () {
																						var v_m2;
																						v_m2 = (p5pkg['Perlito5::Grammar'].block2(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block2', (v_m2));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})()], 0), function () {
																						return p5context([(function () {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::If', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_paren')]), p5want)._array_.p5aget(2), 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block2')]), 1), 'otherwise', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1)]), 0)));
																							return ((1));
																						})()], 0)
																					})
																				})
																			})], 0)));
																	})()], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																			return ((p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::If', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_paren')]), p5want)._array_.p5aget(2), 'body', p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', (new p5ArrayRef([]))]), 1), 'otherwise', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1)]), 0)));
																					return ((1));
																				})()], 0)));
																		})()], 0)
																	})));
															})()], 0), function () {
																return p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
																	return ((1));
																})()], 0)
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3345._prototype_ = null;
					return tmp3345
				})());
				p5typeglob_set('Perlito5::Grammar', 'if_', (function () {
					var tmp3346;
					tmp3346 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('if' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([(function () {
													var v_m2;
													v_m2 = (p5pkg['Perlito5::Grammar::Expression'].term_paren(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::term_paren', (v_m2));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})()], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5and(p5context([(function () {
																var v_pos1;
																v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																return ((p5or(p5context([(function () {
																		return ((p5context([p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5and(p5context([p5and(('else' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 4)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((4 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0), function () {
																					return p5and(p5context([(function () {
																						var v_m2;
																						v_m2 = (p5pkg['Perlito5::Grammar'].block2(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block2', (v_m2));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})()], 0), function () {
																						return p5context([(function () {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::If', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_paren')]), p5want)._array_.p5aget(2), 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1), 'otherwise', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block2')]), 1)]), 0)));
																							return ((1));
																						})()], 0)
																					})
																				})
																			})], 0)));
																	})()], 0), function () {
																		return p5or(p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																			return ((p5context([p5and(p5context([(function () {
																					var v_m2;
																					v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																					return (function () {
																						if ( p5bool(v_m2) ) {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																						return ((1));
																					}
																					else {
																						return ((0));
																					}
																					})()
																				})()], 0), function () {
																					return p5and(p5context([p5and(('els' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 3)), function () {
																						return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((3 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																					})], 0), function () {
																						return p5and(p5context([(function () {
																							var v_m2;
																							v_m2 = (p5pkg['Perlito5::Grammar'].if_(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																							return (function () {
																								if ( p5bool(v_m2) ) {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('if_', (v_m2));
																								return ((1));
																							}
																							else {
																								return ((0));
																							}
																							})()
																						})()], 0), function () {
																							return p5context([(function () {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::If', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_paren')]), p5want)._array_.p5aget(2), 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1), 'otherwise', p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('if_')]), 1)])))]), 1)]), 0)));
																								return ((1));
																							})()], 0)
																						})
																					})
																				})], 0)));
																		})()], 0), function () {
																			return p5context([(function () {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																				return ((p5context([(function () {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::If', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_paren')]), p5want)._array_.p5aget(2), 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1), 'otherwise', p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', (new p5ArrayRef([]))]), 1)]), 0)));
																						return ((1));
																					})()], 0)));
																			})()], 0)
																		})
																	})));
															})()], 0), function () {
																return p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
																	return ((1));
																})()], 0)
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3346._prototype_ = null;
					return tmp3346
				})());
				p5typeglob_set('Perlito5::Grammar', 'when', (function () {
					var tmp3347;
					tmp3347 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('when' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 4)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((4 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([(function () {
													var v_m2;
													v_m2 = (p5pkg['Perlito5::Grammar::Expression'].term_paren(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::term_paren', (v_m2));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})()], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5and(p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::When', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_paren')]), p5want)._array_.p5aget(2), 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1)]), 0)));
																return ((1));
															})()], 0), function () {
																return p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
																	return ((1));
																})()], 0)
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3347._prototype_ = null;
					return tmp3347
				})());
				p5typeglob_set('Perlito5::Grammar', 'for', (function () {
					var tmp3348;
					tmp3348 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('for' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 3)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((3 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m;
											v_m = (v_MATCH);
											(function () {
												if ( !( (('each' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 4)) && p5bool((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((4 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))))) ) {
												v_MATCH = (v_m);
											}
											})();
											return ((1));
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([(function () {
													var v_pos1;
													v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
													return ((p5or(p5context([(function () {
															return ((p5context([p5and(p5context([(function () {
																	var v_pos1;
																	v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																	return ((p5or(p5context([(function () {
																			return ((p5context([p5and(p5context([(function () {
																					var v_m2;
																					v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																					return (function () {
																						if ( p5bool(v_m2) ) {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																						return ((1));
																					}
																					else {
																						return ((0));
																					}
																					})()
																				})()], 0), function () {
																					return p5and(p5context([(function () {
																						var v_m2;
																						v_m2 = (p5pkg['Perlito5::Grammar::Expression'].term_declarator(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::term_declarator', (v_m2));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})()], 0), function () {
																						return p5context([(function () {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('_tmp', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::term_declarator')]), p5want)._array_.p5aget(1)));
																							return ((1));
																						})()], 0)
																					})
																				})], 0)));
																		})()], 0), function () {
																			return p5context([(function () {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																				return ((p5context([p5and(p5context([(function () {
																						var v_m2;
																						v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})()], 0), function () {
																						return p5and(p5context([(function () {
																							var v_tmp;
																							v_tmp = (v_MATCH);
																							v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
																							var v_res;
																							v_res = (p5context([p5and(('$' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																									})], 0));
																							v_MATCH = (v_tmp);
																							return ((( p5bool(v_res) ? 1 : 0)));
																						})()], 0), function () {
																							return p5and(p5context([(function () {
																								var v_m2;
																								v_m2 = (p5call_sub('Perlito5::Grammar::Sigil', 'term_sigil', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																								return (function () {
																									if ( p5bool(v_m2) ) {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Sigil::term_sigil', (v_m2));
																									return ((1));
																								}
																								else {
																									return ((0));
																								}
																								})()
																							})()], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('_tmp', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Sigil::term_sigil')]), p5want)._array_.p5aget(1)));
																									return ((1));
																								})()], 0)
																							})
																						})
																					})], 0)));
																			})()], 0)
																		})));
																})()], 0), function () {
																	return p5and(p5context([(function () {
																		var v_m2;
																		v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																		return (function () {
																			if ( p5bool(v_m2) ) {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																			return ((1));
																		}
																		else {
																			return ((0));
																		}
																		})()
																	})()], 0), function () {
																		return p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::paren_parse', (v_m2));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0), function () {
																					return p5and(p5context([(function () {
																						var v_m2;
																						v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})()], 0), function () {
																						return p5and(p5context([(function () {
																							var v_m2;
																							v_m2 = (p5pkg['Perlito5::Grammar'].opt_continue_block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																							return (function () {
																								if ( p5bool(v_m2) ) {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('opt_continue_block', (v_m2));
																								return ((1));
																							}
																							else {
																								return ((0));
																							}
																							})()
																						})()], 0), function () {
																							return p5context([(function () {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																								var v_body;
																								v_body = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 0));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::For', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::paren_parse')]), 1), 'body', v_body, 'continue', (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('opt_continue_block')._hash_.p5hget('capture'), 'topic', (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('_tmp')]), 0)));
																								return ((1));
																							})()], 0)
																						})
																					})
																				})
																			})
																		})
																	})
																})], 0)));
														})()], 0), function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([p5and(p5context([(function () {
																		var v_m2;
																		v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																		return (function () {
																			if ( p5bool(v_m2) ) {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																			return ((1));
																		}
																		else {
																			return ((0));
																		}
																		})()
																	})()], 0), function () {
																		return p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5and(p5context([(function () {
																				var v_pos1;
																				v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																				return ((p5or(p5context([(function () {
																						return ((p5context([p5and(p5context([(function () {
																								var v_m2;
																								v_m2 = (p5pkg['Perlito5::Grammar::Expression'].exp_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																								return (function () {
																									if ( p5bool(v_m2) ) {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::exp_parse', (v_m2));
																									return ((1));
																								}
																								else {
																									return ((0));
																								}
																								})()
																							})()], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																									p5pkg['Perlito5::Grammar::Scope'].check_variable_declarations([], null);
																									return ((1));
																								})()], 0)
																							})], 0)));
																					})()], 0), function () {
																						return p5or(p5context([(function () {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																							return ((p5context([], 0)));
																						})()], 0), function () {
																							return p5context([(function () {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																								return ((p5context([p5and(p5context([(function () {
																										var v_m2;
																										v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																										return (function () {
																											if ( p5bool(v_m2) ) {
																											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																											return ((1));
																										}
																										else {
																											return ((0));
																										}
																										})()
																									})()], 0), function () {
																										return p5context([(function () {
																											var v_tmp;
																											v_tmp = (v_MATCH);
																											v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
																											var v_res;
																											v_res = (p5context([p5and((';' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																													})], 0));
																											v_MATCH = (v_tmp);
																											return ((( p5bool(v_res) ? 1 : 0)));
																										})()], 0)
																									})], 0)));
																							})()], 0)
																						})
																					})));
																			})()], 0), function () {
																				return p5and(p5context([(function () {
																					var v_pos1;
																					v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																					return ((p5or(p5context([(function () {
																							return ((p5context([p5and(p5context([p5and((';' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																									return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																								})], 0), function () {
																									return p5and(p5context([(function () {
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('c_style_for', (1));
																										return ((1));
																									})()], 0), function () {
																										return p5and(p5context([(function () {
																											var v_pos1;
																											v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																											return ((p5or(p5context([(function () {
																													return ((p5context([p5and(p5context([(function () {
																															var v_m2;
																															v_m2 = (p5pkg['Perlito5::Grammar'].exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																															return (function () {
																																if ( p5bool(v_m2) ) {
																																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::exp', (v_m2));
																																return ((1));
																															}
																															else {
																																return ((0));
																															}
																															})()
																														})()], 0), function () {
																															return p5context([(function () {
																																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																																p5pkg['Perlito5::Grammar::Scope'].check_variable_declarations([], null);
																																return ((1));
																															})()], 0)
																														})], 0)));
																												})()], 0), function () {
																													return p5or(p5context([(function () {
																														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																														return ((p5context([], 0)));
																													})()], 0), function () {
																														return p5context([(function () {
																															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																															return ((p5context([(function () {
																																	var v_m2;
																																	v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																																	return (function () {
																																		if ( p5bool(v_m2) ) {
																																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																																		return ((1));
																																	}
																																	else {
																																		return ((0));
																																	}
																																	})()
																																})()], 0)));
																														})()], 0)
																													})
																												})));
																										})()], 0), function () {
																											return p5and(p5context([p5and((';' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																											})], 0), function () {
																												return p5context([(function () {
																													var v_pos1;
																													v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																													return ((p5or(p5context([(function () {
																															return ((p5context([(function () {
																																	var v_m2;
																																	v_m2 = (p5pkg['Perlito5::Grammar'].exp2(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																																	return (function () {
																																		if ( p5bool(v_m2) ) {
																																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::exp2', (v_m2));
																																		return ((1));
																																	}
																																	else {
																																		return ((0));
																																	}
																																	})()
																																})()], 0)));
																														})()], 0), function () {
																															return p5or(p5context([(function () {
																																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																																return ((p5context([], 0)));
																															})()], 0), function () {
																																return p5context([(function () {
																																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																																	return ((p5context([(function () {
																																			var v_m2;
																																			v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																																			return (function () {
																																				if ( p5bool(v_m2) ) {
																																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																																				return ((1));
																																			}
																																			else {
																																				return ((0));
																																			}
																																			})()
																																		})()], 0)));
																																})()], 0)
																															})
																														})));
																												})()], 0)
																											})
																										})
																									})
																								})], 0)));
																						})()], 0), function () {
																							return p5context([(function () {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																								return ((1));
																							})()], 0)
																						})));
																				})()], 0), function () {
																					return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																						return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																					})], 0), function () {
																						return p5and(p5context([(function () {
																							var v_m2;
																							v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																							return (function () {
																								if ( p5bool(v_m2) ) {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																								return ((1));
																							}
																							else {
																								return ((0));
																							}
																							})()
																						})()], 0), function () {
																							return p5and(p5context([(function () {
																								var v_m2;
																								v_m2 = (p5pkg['Perlito5::Grammar'].opt_continue_block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																								return (function () {
																									if ( p5bool(v_m2) ) {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('opt_continue_block', (v_m2));
																									return ((1));
																								}
																								else {
																									return ((0));
																								}
																								})()
																							})()], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																									var v_header;
																									var v_body;
																									v_body = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 0));
																									var v_topic;
																									(function () {
																										if ( p5bool((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('c_style_for')) ) {
																										v_header = ((new p5ArrayRef(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Grammar::Expression::exp_parse')._hash_.p5hget('capture'), (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Grammar::exp')._hash_.p5hget('capture'), (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Grammar::exp2')._hash_.p5hget('capture')]))));
																									}
																									else {
																										v_header = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Grammar::Expression::exp_parse')._hash_.p5hget('capture'));
																										v_topic = (p5call('Perlito5::AST::Var', 'new', ['namespace', '', 'name', '_', 'sigil', '$'], 0));
																									}
																									})();
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::For', 'new', p5list_to_a(['cond', v_header, 'body', v_body, 'continue', (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('opt_continue_block')._hash_.p5hget('capture'), 'topic', v_topic]), 0)));
																									return ((1));
																								})()], 0)
																							})
																						})
																					})
																				})
																			})
																		})
																	})], 0)));
															})()], 0)
														})));
												})()], 0), function () {
													return p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
														p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
														return ((1));
													})()], 0)
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3348._prototype_ = null;
					return tmp3348
				})());
				p5typeglob_set('Perlito5::Grammar', 'while', (function () {
					var tmp3349;
					tmp3349 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('while' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 5)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((5 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
													return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
												})], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::paren_parse', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5and(p5context([(function () {
																	var v_m2;
																	v_m2 = (p5pkg['Perlito5::Grammar'].opt_continue_block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																	return (function () {
																		if ( p5bool(v_m2) ) {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('opt_continue_block', (v_m2));
																		return ((1));
																	}
																	else {
																		return ((0));
																	}
																	})()
																})()], 0), function () {
																	return p5and(p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																		var v_cond;
																		v_cond = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::paren_parse')]), 0));
																		(function () {
																			if ( (p5str(v_cond) == '*undef*') ) {
																			v_cond = (p5call('Perlito5::AST::Int', 'new', ['int', 1], 0));
																		}
																		})();
																		var v_stmt;
																		v_stmt = (p5call('Perlito5::AST::While', 'new', p5list_to_a(['cond', v_cond, 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1), 'continue', (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('opt_continue_block')._hash_.p5hget('capture')]), 0));
																		var v_out;
																		v_out = (p5pkg['Perlito5::Macro'].while_file([v_stmt], 0));
																		p5and(v_out, function () {
																			return p5context([v_stmt = (v_out)], 0)
																		});
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (v_stmt));
																		return ((1));
																	})()], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
																			return ((1));
																		})()], 0)
																	})
																})
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3349._prototype_ = null;
					return tmp3349
				})());
				p5typeglob_set('Perlito5::Grammar', 'until', (function () {
					var tmp3350;
					tmp3350 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('until' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 5)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((5 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
													return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
												})], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::paren_parse', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5and(p5context([(function () {
																	var v_m2;
																	v_m2 = (p5pkg['Perlito5::Grammar'].opt_continue_block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																	return (function () {
																		if ( p5bool(v_m2) ) {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('opt_continue_block', (v_m2));
																		return ((1));
																	}
																	else {
																		return ((0));
																	}
																	})()
																})()], 0), function () {
																	return p5and(p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																		var v_cond;
																		v_cond = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::paren_parse')]), 0));
																		(function () {
																			if ( (p5str(v_cond) == '*undef*') ) {
																			v_cond = (p5call('Perlito5::AST::Int', 'new', ['int', 1], 0));
																		}
																		})();
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::While', 'new', p5list_to_a(['cond', p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef([v_cond])), 'code', 'prefix:<!>', 'namespace', '']), 1), 'body', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 1), 'continue', (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('opt_continue_block')._hash_.p5hget('capture')]), 0)));
																		return ((1));
																	})()], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
																			return ((1));
																		})()], 0)
																	})
																})
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3350._prototype_ = null;
					return tmp3350
				})());
				p5typeglob_set('Perlito5::Grammar', 'given', (function () {
					var tmp3351;
					tmp3351 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('given' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 5)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((5 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												p5pkg['Perlito5::Grammar::Scope'].create_new_compile_time_scope([], null);
												return ((1));
											})()], 0), function () {
												return p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
													return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
												})], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Expression::paren_parse', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('block', (v_m2));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5and(p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	var v_body;
																	v_body = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('block')]), 0));
																	(v_body || (v_body = new p5HashRef({})))._hash_.p5hset('sig', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::var_ident')]), 0)));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::AST::Given', 'new', p5list_to_a(['cond', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Expression::paren_parse')]), 1), 'body', v_body]), 0)));
																	return ((1));
																})()], 0), function () {
																	return p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																		p5pkg['Perlito5::Grammar::Scope'].end_compile_time_scope([], null);
																		return ((1));
																	})()], 0)
																})
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3351._prototype_ = null;
					return tmp3351
				})());
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['if', p5pkg['Perlito5::Grammar'].if_]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['for', p5pkg['Perlito5::Grammar'].for]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['foreach', p5pkg['Perlito5::Grammar'].for]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['when', p5pkg['Perlito5::Grammar'].when]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['while', p5pkg['Perlito5::Grammar'].while]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['until', p5pkg['Perlito5::Grammar'].until]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['given', p5pkg['Perlito5::Grammar'].given]), null);
				p5call_sub('Perlito5::Grammar::Statement', 'add_statement', p5list_to_a(['unless', p5pkg['Perlito5::Grammar'].unless]), null);
			}, [0], false, ''
		);
		1;
	})();
	(function () {
		p5make_package('Perlito5::Grammar::Precedence');
		// use feature
;
		p5typeglob_set('Perlito5::Grammar::Precedence', 'new', (function () {
			var tmp3352;
			tmp3352 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Grammar::Precedence'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3352._prototype_ = null;
			return tmp3352
		})());
		var v_Operator;
		v_Operator = ((new p5HashRef({})));
		var v_Precedence;
		v_Precedence = ((new p5HashRef({})));
		var v_PrefixPrecedence;
		v_PrefixPrecedence = ((new p5HashRef({})));
		var v_Assoc;
		v_Assoc = ((new p5HashRef({})));
		p5typeglob_set('Perlito5::Grammar::Precedence', 'is_assoc_type', (function () {
			var tmp3353;
			tmp3353 = function (List__, p5want) {
				var v_assoc_type;
				v_assoc_type = (List__.shift());
				var v_op_name;
				v_op_name = (List__.shift());
				return ((v_Assoc || (v_Assoc = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_assoc_type))._hash_.p5hget(p5str(v_op_name)));
			};
			tmp3353._prototype_ = null;
			return tmp3353
		})());
		p5typeglob_set('Perlito5::Grammar::Precedence', 'is_fixity_type', (function () {
			var tmp3354;
			tmp3354 = function (List__, p5want) {
				var v_fixity_type;
				v_fixity_type = (List__.shift());
				var v_op_name;
				v_op_name = (List__.shift());
				return ((v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_fixity_type))._hash_.p5hget(p5str(v_op_name)));
			};
			tmp3354._prototype_ = null;
			return tmp3354
		})());
		p5typeglob_set('Perlito5::Grammar::Precedence', 'is_term', (function () {
			var tmp3355;
			tmp3355 = function (List__, p5want) {
				var v_token;
				v_token = (List__.shift());
				return (p5or(p5context([(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) == 'term')], 0), function () {
							return p5or(p5context([(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) == 'postfix_or_term')], 0), function () {
								return p5context([(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) == 'postfix')], p5want)
							})
						}));
			};
			tmp3355._prototype_ = null;
			return tmp3355
		})());
		p5typeglob_set('Perlito5::Grammar::Precedence', 'is_num', (function () {
			var tmp3356;
			tmp3356 = function (List__, p5want) {
				return (p5and((p5str(List__.p5aget(0)) >= '0'), function () {
							return (p5str(List__.p5aget(0)) <= '9')
						}));
			};
			tmp3356._prototype_ = null;
			return tmp3356
		})());
		p5typeglob_set('Perlito5::Grammar::Precedence', 'is_ident_middle', (function () {
			var tmp3357;
			tmp3357 = function (List__, p5want) {
				var v_c;
				v_c = (List__.shift());
				return (p5or(p5context([p5and((p5str(v_c) >= 'a'), function () {
							return (p5str(v_c) <= 'z')
						})], 0), function () {
							return p5or(p5context([p5and((p5str(v_c) >= '0'), function () {
								return (p5str(v_c) <= '9')
							})], 0), function () {
								return p5context([(p5str(v_c) == '_')], p5want)
							})
						}));
			};
			tmp3357._prototype_ = null;
			return tmp3357
		})());
		var List_Parsed_op_chars = [];
		List_Parsed_op_chars = [2, 1];
		var Hash_Parsed_op = {};
		Hash_Parsed_op = p5a_to_h(['?', (function () {
					var tmp3363;
					tmp3363 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].term_ternary(p5list_to_a([p5list_slice(List__, [0], 1), p5list_slice(List__, [1], 1)]), p5want));
					};
					tmp3363._prototype_ = null;
					return tmp3363
				})(), '(', (function () {
					var tmp3364;
					tmp3364 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].term_paren(p5list_to_a([p5list_slice(List__, [0], 1), p5list_slice(List__, [1], 1)]), p5want));
					};
					tmp3364._prototype_ = null;
					return tmp3364
				})(), '[', (function () {
					var tmp3365;
					tmp3365 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].term_square(p5list_to_a([p5list_slice(List__, [0], 1), p5list_slice(List__, [1], 1)]), p5want));
					};
					tmp3365._prototype_ = null;
					return tmp3365
				})(), '{', (function () {
					var tmp3366;
					tmp3366 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].term_curly(p5list_to_a([p5list_slice(List__, [0], 1), p5list_slice(List__, [1], 1)]), p5want));
					};
					tmp3366._prototype_ = null;
					return tmp3366
				})(), '->', (function () {
					var tmp3367;
					tmp3367 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].term_arrow(p5list_to_a([p5list_slice(List__, [0], 1), p5list_slice(List__, [1], 1)]), p5want));
					};
					tmp3367._prototype_ = null;
					return tmp3367
				})()]);
		var List_Term_chars = [];
		var Hash_Term = {};
		p5typeglob_set('Perlito5::Grammar::Precedence', 'add_term', (function () {
			var tmp3368;
			tmp3368 = function (List__, p5want) {
				var v_name;
				v_name = (List__.shift());
				var v_param;
				v_param = (List__.shift());
				Hash_Term.p5hset(p5str(v_name), (v_param));
				(function () {
						p5while(function () {
							return (List_Term_chars.p5unshift([(p5num((List_Term_chars.length)) + 1)]));
						}, function () {
							return (p5num(List_Term_chars.length) < p5pkg['Perlito5::Grammar::Precedence'].length([v_name], 0))
						}, false, '', 0)
					})()
			};
			tmp3368._prototype_ = null;
			return tmp3368
		})());
		var v_End_token;
		var v_End_token_chars;
		var Hash_Op = {};
		var List_Op_chars = [];
		List_Op_chars = [3, 2, 1];
		p5typeglob_set('Perlito5::Grammar::Precedence', 'op_parse', (function () {
			var tmp3369;
			tmp3369 = function (List__, p5want) {
				try {
					var v_str;
					v_str = (List__.shift());
					var v_pos;
					v_pos = (List__.shift());
					var v_last_is_term;
					v_last_is_term = (List__.shift());
					(function () {
						var v_len;
						(function(){ var v_len; p5for_lex(function (v) { v_len = v }, function () {
								var v_term;
								v_term = (CORE.substr([v_str, v_pos, v_len], 0));
								(function () {
									if ( (v_End_token)._hash_.hasOwnProperty(v_term) ) {
									(function () {
										var v_c1;
										v_c1 = (p5str(v_str).substr(((p5num(v_pos) + p5num(v_len)) - 1), 1));
										var v_c2;
										v_c2 = (p5str(v_str).substr((p5num(v_pos) + p5num(v_len)), 1));
										(function () {
											if ( (!( (p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_ident_middle([v_c1], 0)) && p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_ident_middle([v_c2], 0)))) && !( ((p5str(v_c1) == '<') && (p5str(v_c2) == '<')))) ) {
											throw((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', v_pos, 'to', v_pos, 'capture', (new p5ArrayRef(['end', v_term]))])))));
										}
										})();
									})();
								}
								})();
							}, p5list_to_a([p5array_deref((v_End_token_chars || (v_End_token_chars = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence')]), false, '') })()
					})();
					(function () {
						if ( !( p5bool(v_last_is_term)) ) {
						(function () {
							var v_len;
							(function(){ var v_len; p5for_lex(function (v) { v_len = v }, function () {
									var v_term;
									v_term = (CORE.substr([v_str, v_pos, v_len], 0));
									(function () {
										if ( (Hash_Term).hasOwnProperty(v_term) ) {
										(function () {
											var v_c1;
											v_c1 = (p5str(v_str).substr(((p5num(v_pos) + p5num(v_len)) - 1), 1));
											var v_c2;
											v_c2 = (p5str(v_str).substr((p5num(v_pos) + p5num(v_len)), 1));
											(function () {
												if ( (p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_num([v_c1], 0)) || (!( p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_ident_middle([v_c1], 0))) || !( p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_ident_middle([v_c2], 0))))) ) {
												(function () {
													var v_m;
													v_m = ((Hash_Term.p5hget(p5str(v_term)))([v_str, v_pos], 0));
													p5and(v_m, function () {
														throw(p5context([v_m], p5want))
													});
												})();
											}
											})();
										})();
									}
									})();
								}, p5list_to_a([List_Term_chars]), false, '') })()
						})();
					}
					})();
					(function () {
						var v_len;
						(function(){ var v_len; p5for_lex(function (v) { v_len = v }, function () {
								var v_op;
								v_op = (CORE.substr([v_str, v_pos, v_len], 0));
								(function () {
									if ( (Hash_Parsed_op).hasOwnProperty(v_op) ) {
									(function () {
										var v_m;
										v_m = ((Hash_Parsed_op.p5hget(p5str(v_op)))([v_str, v_pos], 0));
										p5and(v_m, function () {
											throw(p5context([v_m], p5want))
										});
									})();
								}
								})();
							}, p5list_to_a([List_Parsed_op_chars]), false, '') })()
					})();
					(function () {
						var v_len;
						(function(){ var v_len; p5for_lex(function (v) { v_len = v }, function () {
								var v_op;
								v_op = (CORE.substr([v_str, v_pos, v_len], 0));
								(function () {
									if ( (Hash_Op).hasOwnProperty(v_op) ) {
									(function () {
										var v_c1;
										v_c1 = (p5str(v_str).substr(((p5num(v_pos) + p5num(v_len)) - 1), 1));
										var v_c2;
										v_c2 = (p5str(v_str).substr((p5num(v_pos) + p5num(v_len)), 1));
										(function () {
											if ( ((!( (p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_ident_middle([v_c1], 0)) && p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_ident_middle([v_c2], 0)))) && !( ((p5str(v_c1) == '&') && (p5str(v_c2) == '&')))) || ((p5str(v_c1) == 'x') && ((p5str(v_c2) >= '0') && (p5str(v_c2) <= '9')))) ) {
											(function () {
												if ( (((v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget('infix'))._hash_.hasOwnProperty(v_op) && (!( ((v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget('prefix'))._hash_.hasOwnProperty(v_op)) && !( p5bool(v_last_is_term)))) ) {}
											else {
												throw((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', v_pos, 'to', (p5num(v_pos) + p5num(v_len)), 'capture', (new p5ArrayRef(['op', v_op]))])))));
											}
											})();
										}
										})();
									})();
								}
								})();
							}, p5list_to_a([List_Op_chars]), false, '') })()
					})();
					return (p5call_sub('Perlito5::Grammar::Bareword', 'term_bareword', [v_str, v_pos], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3369._prototype_ = null;
			return tmp3369
		})());
		p5typeglob_set('Perlito5::Grammar::Precedence', 'add_op', (function () {
			var tmp3370;
			tmp3370 = function (List__, p5want) {
				var v_fixity;
				var v_names;
				var v_precedence;
				var v_param;
				var tmp3371 = p5list_to_a([List__]);
					v_fixity = tmp3371.shift();
					v_names = tmp3371.shift();
					v_precedence = tmp3371.shift();
					v_param = tmp3371.shift();
				(v_param = (p5defined_or(v_param, function () {
								return (new p5HashRef({}))
							})));
				var v_assoc;
				v_assoc = (p5or((v_param || (v_param = new p5HashRef({})))._hash_.p5hget('assoc'), function () {
								return 'left'
							}));
				(function () {
						var v_name;
						(function(){ var v_name; p5for_lex(function (v) { v_name = v }, function () {
								(v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_fixity))._hash_.p5hset(p5str(v_name), (1));
								(v_Precedence || (v_Precedence = new p5HashRef({})))._hash_.p5hset(p5str(v_name), (v_precedence));
								p5and((p5str(v_fixity) == 'prefix'), function () {
									return (v_PrefixPrecedence || (v_PrefixPrecedence = new p5HashRef({})))._hash_.p5hset(p5str(v_name), (v_precedence))
								});
								(v_Assoc || (v_Assoc = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_assoc))._hash_.p5hset(p5str(v_name), (1));
								return (Hash_Op.p5hset(p5str(v_name), (1)));
							}, p5list_to_a([p5array_deref((v_names || (v_names = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence')]), false, '') })()
					})()
			};
			tmp3370._prototype_ = null;
			return tmp3370
		})());
		var v_prec;
		v_prec = (100);
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['postfix', (new p5ArrayRef(['.( )', '.[ ]', '.{ }', '( )', '[ ]', 'funcall', 'funcall_no_params', 'methcall', 'methcall_no_params', 'block', 'hash'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['prefix', (new p5ArrayRef(['++', '--'])), v_prec]), null);
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['postfix', (new p5ArrayRef(['++', '--'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['**'])), v_prec, (new p5HashRef({'assoc' : 'right'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['prefix', (new p5ArrayRef([String.fromCharCode(92), '+', '-', '~', '!'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['=~', '!~'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['*', '/', '%', 'x'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['+', '-'])), v_prec]), null);
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['.'])), v_prec, (new p5HashRef({'assoc' : 'list'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['<<', '>>'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['prefix', (new p5ArrayRef(['-r', '-w', '-x', '-o', '-R', '-W', '-X', '-O', '-e', '-z', '-s', '-f', '-d', '-l', '-p', '-S', '-b', '-c', '-t', '-u', '-g', '-k', '-T', '-B', '-M', '-A', '-C'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['lt', 'le', 'gt', 'ge', '<=', '>=', '<', '>'])), v_prec, (new p5HashRef({'assoc' : 'chain'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['<=>', 'cmp', '==', '!=', 'ne', 'eq'])), v_prec, (new p5HashRef({'assoc' : 'chain'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['&'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['|', '^'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['..', '...'])), v_prec]), null);
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['~~'])), v_prec, (new p5HashRef({'assoc' : 'chain'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['&&'])), v_prec, (new p5HashRef({'assoc' : 'right'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['||'])), v_prec, (new p5HashRef({'assoc' : 'right'}))]), null);
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['//'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['ternary', (new p5ArrayRef(['? :'])), v_prec, (new p5HashRef({'assoc' : 'right'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['=', '**=', '+=', '-=', '*=', '/=', 'x=', '|=', '&=', '.=', '<<=', '>>=', '%=', '||=', '&&=', '^=', '//='])), v_prec, (new p5HashRef({'assoc' : 'right'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['=>'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['list', (new p5ArrayRef([','])), v_prec, (new p5HashRef({'assoc' : 'list'}))]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['prefix', (new p5ArrayRef(['not'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['and'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['or', 'xor'])), v_prec]), null);
		v_prec = ((p5num(v_prec) - 1));
		p5pkg['Perlito5::Grammar::Precedence'].add_op(p5list_to_a(['infix', (new p5ArrayRef(['*start*'])), v_prec]), null);
		p5typeglob_set('Perlito5::Grammar::Precedence', 'get_token_precedence', (function () {
			var tmp3372;
			tmp3372 = function (List__, p5want) {
				try {
					var v_token;
					v_token = (List__.p5aget(0));
					(function () {
						if ( (p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) == 'prefix') ) {
						throw((v_PrefixPrecedence || (v_PrefixPrecedence = new p5HashRef({})))._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1))));
					}
					})();
					return ((v_Precedence || (v_Precedence = new p5HashRef({})))._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1))));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3372._prototype_ = null;
			return tmp3372
		})());
		p5typeglob_set('Perlito5::Grammar::Precedence', 'precedence_parse', (function () {
			var tmp3373;
			tmp3373 = function (List__, p5want) {
				var v_self;
				v_self = (List__.shift());
				var v_get_token;
				v_get_token = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('get_token'));
				var v_reduce;
				v_reduce = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('reduce'));
				var v_last_end_token;
				v_last_end_token = (v_End_token);
				var v_last_end_token_chars;
				v_last_end_token_chars = (v_End_token_chars);
				v_End_token = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('end_token'));
				v_End_token_chars = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('end_token_chars'));
				var v_op_stack;
				v_op_stack = ((new p5ArrayRef([])));
				var v_num_stack;
				v_num_stack = ((new p5ArrayRef([])));
				var v_last;
				v_last = ((new p5ArrayRef(['op', '*start*'])));
				var v_last_is_term;
				v_last_is_term = (0);
				var v_token;
				v_token = ((v_get_token)([v_last_is_term], 0));
				(function () {
						if ( (p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) == 'space') ) {
						v_token = ((v_get_token)([v_last_is_term], 0));
					}
					})();
				(function () {
						p5while(function () {
							var v_token_is_term;
							v_token_is_term = (p5pkg['Perlito5::Grammar::Precedence'].is_term([v_token], 0));
							(function () {
								if ( ((p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1)) == ',') && ((p5str((v_last || (v_last = new p5ArrayRef([])))._array_.p5aget(1)) == '*start*') || (p5str((v_last || (v_last = new p5ArrayRef([])))._array_.p5aget(1)) == ','))) ) {
								p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence').p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['term', null])))]));
							}
							})();
							(function () {
								if ( (p5bool((v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget_hash('prefix')._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1)))) && ((p5str((v_last || (v_last = new p5ArrayRef([])))._array_.p5aget(1)) == '*start*') || !( p5bool(v_last_is_term)))) ) {
								(v_token || (v_token = new p5ArrayRef([])))._array_.p5aset(0, ('prefix'));
								p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence').p5unshift([v_token]);
							}
							else (function () {
								if ( (p5bool((v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget_hash('postfix')._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1)))) && p5bool(v_last_is_term)) ) {
								(function () {
									var v_pr;
									v_pr = ((v_Precedence || (v_Precedence = new p5HashRef({})))._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1))));
									(function () {
										p5while(function () {
											(v_reduce)([v_op_stack, v_num_stack], null);
										}, function () {
											return p5and((p5num(p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence'))), function () {
												return p5context([(p5num(v_pr) <= p5num(p5pkg['Perlito5::Grammar::Precedence'].get_token_precedence(p5list_to_a([(v_op_stack || (v_op_stack = new p5ArrayRef([])))._array_.p5aget(0)]), 0)))], 0)
											})
										}, false, '', 0)
									})();
									(function () {
										if ( (p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) != 'postfix_or_term') ) {
										(v_token || (v_token = new p5ArrayRef([])))._array_.p5aset(0, ('postfix'));
									}
									})();
									p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence').p5unshift([v_token]);
									v_token_is_term = (1);
								})();
							}
							else (function () {
								if ( p5bool(v_token_is_term) ) {
								(function () {
									if ( p5bool(v_last_is_term) ) {
									p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a(['#      last:  ', p5pkg['Data::Dumper'].Dumper([v_last], 1)]));
									p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a(['#      token: ', p5pkg['Data::Dumper'].Dumper([v_token], 1)]));
									p5pkg['Perlito5::Grammar::Precedence'].die([].concat(['Value tokens must be separated by an operator']), null);
								}
								})();
								(v_token || (v_token = new p5ArrayRef([])))._array_.p5aset(0, ('term'));
								p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence').p5push([v_token]);
							}
							else (function () {
								if ( p5bool((v_Precedence || (v_Precedence = new p5HashRef({})))._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1)))) ) {
								(function () {
									var v_pr;
									v_pr = ((v_Precedence || (v_Precedence = new p5HashRef({})))._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1))));
									(function () {
										if ( p5bool((v_Assoc || (v_Assoc = new p5HashRef({})))._hash_.p5hget_hash('right')._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1)))) ) {
										(function () {
											p5while(function () {
												(v_reduce)([v_op_stack, v_num_stack], null);
											}, function () {
												return p5and((p5num(p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence'))), function () {
													return p5context([(p5num(v_pr) < p5num(p5pkg['Perlito5::Grammar::Precedence'].get_token_precedence(p5list_to_a([(v_op_stack || (v_op_stack = new p5ArrayRef([])))._array_.p5aget(0)]), 0)))], 0)
												})
											}, false, '', 0)
										})();
									}
									else {
										(function () {
											p5while(function () {
												(v_reduce)([v_op_stack, v_num_stack], null);
											}, function () {
												return p5and((p5num(p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence'))), function () {
													return p5context([(p5num(v_pr) <= p5num(p5pkg['Perlito5::Grammar::Precedence'].get_token_precedence(p5list_to_a([(v_op_stack || (v_op_stack = new p5ArrayRef([])))._array_.p5aget(0)]), 0)))], 0)
												})
											}, false, '', 0)
										})();
									}
									})();
									(function () {
										if ( p5bool((v_Operator || (v_Operator = new p5HashRef({})))._hash_.p5hget_hash('ternary')._hash_.p5hget(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1)))) ) {
										(v_token || (v_token = new p5ArrayRef([])))._array_.p5aset(0, ('ternary'));
									}
									else {
										(v_token || (v_token = new p5ArrayRef([])))._array_.p5aset(0, ('infix'));
									}
									})();
									p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence').p5unshift([v_token]);
								})();
							}
							else {
								p5pkg['Perlito5::Grammar::Precedence'].die([].concat(p5list_to_a(['Unknown token: ' + String.fromCharCode(39), (v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(1), String.fromCharCode(39)])), null);
							}
							})()
							})()
							})()
							})();
							v_last = (v_token);
							v_last_is_term = (v_token_is_term);
							v_token = ((v_get_token)([v_last_is_term], 0));
							(function () {
								if ( (p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) == 'space') ) {
								v_token = ((v_get_token)([v_last_is_term], 0));
							}
							})();
						}, function () {
							return p5and(p5context([(v_token != null)], 0), function () {
								return p5context([(p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) != 'end')], 0)
							})
						}, false, '', 0)
					})();
				(function () {
						if ( ((v_token != null) && (p5str((v_token || (v_token = new p5ArrayRef([])))._array_.p5aget(0)) != 'end')) ) {
						p5pkg['Perlito5::Grammar::Precedence'].die([].concat(['Unexpected end token: ', v_token]), null);
					}
					})();
				(function () {
						p5while(function () {
							(v_reduce)([v_op_stack, v_num_stack], null);
						}, function () {
							return (p5num(p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Precedence')))
						}, false, '', 0)
					})();
				v_End_token = (v_last_end_token);
				v_End_token_chars = (v_last_end_token_chars);
				return (p5context([v_num_stack], p5want));
			};
			tmp3373._prototype_ = null;
			return tmp3373
		})());
		1;
	})();
	(function () {
		p5block(function (v) {}, function () {
				p5make_package('main');
				p5make_package('Perlito5::Grammar::Expression');
				// use Perlito5::Grammar::Precedence
;
				// use Perlito5::Grammar::Bareword
;
				// use Perlito5::Grammar::Attribute
;
				// use Perlito5::Grammar::Statement
;
				p5typeglob_set('Perlito5::Grammar::Expression', 'expand_list', (function () {
					var tmp3374;
					tmp3374 = function (List__, p5want) {
						try {
							var v_param_list;
							v_param_list = (List__.shift());
							return (function () {
								if ( ((p5pkg['Perlito5::Grammar::Expression'].ref([v_param_list], 0) == 'Perlito5::AST::Apply') && (p5str(p5call(v_param_list, 'code', [], 0)) == 'list:<,>')) ) {
								(function () {
									throw((new p5ArrayRef(p5list_to_a([p5grep(p5pkg['Perlito5::Grammar::Expression'], function (p5want) {
	return ((p5make_package('main')['v__'] != null));
}, p5list_to_a([p5array_deref(p5call(v_param_list, 'arguments', [], p5want), 'Perlito5::Grammar::Expression')]))]))))
								})()
							}
							else return (function () {
								if ( (p5str(v_param_list) == '*undef*') ) {
								(function () {
									throw((new p5ArrayRef([])))
								})()
							}
							else {
								(function () {
									throw((new p5ArrayRef([v_param_list])))
								})()
							}
							})()
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3374._prototype_ = null;
					return tmp3374
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'block_or_hash', (function () {
					var tmp3375;
					tmp3375 = function (List__, p5want) {
						try {
							var v_o;
							v_o = (List__.shift());
							(function () {
								if ( (p5call(v_o, 'sig', [], 0) != null) ) {
								throw(p5context([v_o], p5want));
							}
							})();
							var v_stmts;
							v_stmts = (p5call(v_o, 'stmts', [], 0));
							(function () {
								if ( (!( (v_stmts != null)) || (p5num((p5num(p5array_deref((v_stmts || (v_stmts = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) == 0)) ) {
								throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'circumfix:<{ }>', 'namespace', '', 'arguments', (new p5ArrayRef([]))]), p5want));
							}
							})();
							(function () {
								if ( (p5num((p5num(p5array_deref((v_stmts || (v_stmts = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) != 1) ) {
								throw(p5context([v_o], p5want));
							}
							})();
							var v_stmt;
							v_stmt = ((v_stmts || (v_stmts = new p5ArrayRef([])))._array_.p5aget(0));
							(function () {
								if ( (p5pkg['Perlito5::Grammar::Expression'].ref([v_stmt], 0) == 'Perlito5::AST::Var') ) {
								throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'circumfix:<{ }>', 'namespace', '', 'arguments', (new p5ArrayRef([v_stmt]))]), p5want));
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::Grammar::Expression'].ref([v_stmt], 0) != 'Perlito5::AST::Apply') ) {
								throw(p5context([v_o], p5want));
							}
							})();
							(function () {
								if ( ((p5str(p5call(v_stmt, 'code', [], 0)) == 'infix:<=>>') || ((p5str(p5call(v_stmt, 'code', [], 0)) == 'prefix:<%>') || (p5str(p5call(v_stmt, 'code', [], 0)) == 'prefix:<@>'))) ) {
								throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'circumfix:<{ }>', 'namespace', '', 'arguments', (new p5ArrayRef([v_stmt]))]), p5want));
							}
							})();
							(function () {
								if ( (p5str(p5call(v_stmt, 'code', [], 0)) != 'list:<,>') ) {
								throw(p5context([v_o], p5want));
							}
							})();
							return (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'circumfix:<{ }>', 'namespace', '', 'arguments', p5pkg['Perlito5::Grammar::Expression'].expand_list([v_stmt], 1)]), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3375._prototype_ = null;
					return tmp3375
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'pop_term', (function () {
					var tmp3376;
					tmp3376 = function (List__, p5want) {
						try {
							var v_num_stack;
							v_num_stack = (List__.shift());
							var v_v;
							v_v = (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').pop());
							(function () {
								if ( (p5pkg['Perlito5::Grammar::Expression'].ref([v_v], 0) == 'ARRAY') ) {
								p5and(p5pkg['Perlito5::Grammar::Expression'].ref([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)], 0), function () {
									throw((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1))
								});
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'methcall_no_params') ) {
									v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', null, 'method', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2), 'arguments', (new p5ArrayRef([]))]), 0));
									throw(p5context([v_v], p5want));
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'funcall_no_params') ) {
									v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(3), 'namespace', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2), 'arguments', (new p5ArrayRef([])), 'bareword', 1]), 0));
									throw(p5context([v_v], p5want));
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'methcall') ) {
									(function () {
										var v_param_list;
										v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(3)]), 0));
										v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', null, 'method', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2), 'arguments', v_param_list]), 0));
										throw(p5context([v_v], p5want));
									})();
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'funcall') ) {
									(function () {
										var v_param_list;
										v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(4)]), 0));
										v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(3), 'arguments', v_param_list, 'namespace', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
										throw(p5context([v_v], p5want));
									})();
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '( )') ) {
									(function () {
										var v_param_list;
										v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
										v_v = (p5call('Perlito5::AST::Apply', 'new', ['code', 'circumfix:<( )>', 'arguments', v_param_list, 'namespace', ''], 0));
										throw(p5context([v_v], p5want));
									})();
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '[ ]') ) {
									(function () {
										var v_param_list;
										v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
										v_v = (p5call('Perlito5::AST::Apply', 'new', ['code', 'circumfix:<[ ]>', 'arguments', v_param_list, 'namespace', ''], 0));
										throw(p5context([v_v], p5want));
									})();
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'block') ) {
									v_v = (p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2), 'sig', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(3)]), 0));
									v_v = (p5pkg['Perlito5::Grammar::Expression'].block_or_hash([v_v], 0));
									throw(p5context([v_v], p5want));
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '.( )') ) {
									v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', null, 'method', 'postcircumfix:<( )>', 'arguments', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
									throw(p5context([v_v], p5want));
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '.[ ]') ) {
									v_v = (p5call('Perlito5::AST::Index', 'new', p5list_to_a(['obj', null, 'index_exp', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
									throw(p5context([v_v], p5want));
								}
								})();
								(function () {
									if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '.{ }') ) {
									v_v = (p5call('Perlito5::AST::Lookup', 'new', p5list_to_a(['obj', null, 'index_exp', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
									throw(p5context([v_v], p5want));
								}
								})();
								throw((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1));
							}
							})();
							return (p5context([v_v], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3376._prototype_ = null;
					return tmp3376
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'reduce_postfix', (function () {
					var tmp3377;
					tmp3377 = function (List__, p5want) {
						try {
							var v_op;
							v_op = (List__.shift());
							var v_value;
							v_value = (List__.shift());
							var v_v;
							v_v = (v_op);
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'methcall_no_params') ) {
								v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', v_value, 'method', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2), 'arguments', (new p5ArrayRef([]))]), 0));
								throw(p5context([v_v], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'funcall_no_params') ) {
								p5pkg['Perlito5::Grammar::Expression'].die([].concat(['Bareword found where operator expected']), null);
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'methcall') ) {
								(function () {
									var v_param_list;
									v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(3)]), 0));
									v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', v_value, 'method', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2), 'arguments', v_param_list]), 0));
									throw(p5context([v_v], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'funcall') ) {
								p5pkg['Perlito5::Grammar::Expression'].die([].concat(['unexpected function call']), null);
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '( )') ) {
								(function () {
									var v_param_list;
									v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
									(function () {
										if ( ((p5pkg['Perlito5::Grammar::Expression'].ref([v_value], 0) == 'Perlito5::AST::Apply') && !( (p5call(v_value, 'arguments', [], 0) != null))) ) {
										(v_value || (v_value = new p5HashRef({})))._hash_.p5hset('arguments', (v_param_list));
										throw(p5context([v_value], p5want));
									}
									})();
									(function () {
										if ( ((p5pkg['Perlito5::Grammar::Expression'].ref([v_value], 0) == 'Perlito5::AST::Call') && !( (p5call(v_value, 'arguments', [], 0) != null))) ) {
										(v_value || (v_value = new p5HashRef({})))._hash_.p5hset('arguments', (v_param_list));
										throw(p5context([v_value], p5want));
									}
									})();
									v_v = (p5call('Perlito5::AST::Call', 'new', ['invocant', v_value, 'method', 'postcircumfix:<( )>', 'arguments', v_param_list], 0));
									throw(p5context([v_v], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '[ ]') ) {
								(function () {
									if ( (p5pkg['Perlito5::Grammar::Expression'].ref([v_value], 0) == 'Perlito5::AST::Var') ) {
									(v_value || (v_value = new p5HashRef({})))._hash_.p5hset('_real_sigil', ('@'));
								}
								})();
								v_v = (p5call('Perlito5::AST::Index', 'new', p5list_to_a(['obj', v_value, 'index_exp', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
								throw(p5context([v_v], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == 'block') ) {
								(function () {
									if ( (p5pkg['Perlito5::Grammar::Expression'].ref([v_value], 0) == 'Perlito5::AST::Var') ) {
									(v_value || (v_value = new p5HashRef({})))._hash_.p5hset('_real_sigil', ('%'));
								}
								})();
								v_v = (p5call('Perlito5::AST::Lookup', 'new', p5list_to_a(['obj', v_value, 'index_exp', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget_array(2)._array_.p5aget(0)]), 0));
								throw(p5context([v_v], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '.( )') ) {
								(function () {
									var v_param_list;
									v_param_list = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([(v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
									v_v = (p5call('Perlito5::AST::Call', 'new', ['invocant', v_value, 'method', 'postcircumfix:<( )>', 'arguments', v_param_list], 0));
									throw(p5context([v_v], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '.[ ]') ) {
								v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', v_value, 'method', 'postcircumfix:<[ ]>', 'arguments', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
								throw(p5context([v_v], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)) == '.{ }') ) {
								v_v = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['invocant', v_value, 'method', 'postcircumfix:<{ }>', 'arguments', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(2)]), 0));
								throw(p5context([v_v], p5want));
							}
							})();
							p5array_deref((v_op || (v_op = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push([v_value]);
							return (p5context([v_op], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3377._prototype_ = null;
					return tmp3377
				})());
				var v_reduce_to_ast;
				v_reduce_to_ast = ((function () {
							var tmp3378;
							tmp3378 = function (List__, p5want) {
								try {
									var v_op_stack;
									v_op_stack = (List__.shift());
									var v_num_stack;
									v_num_stack = (List__.shift());
									var v_last_op;
									v_last_op = (p5array_deref((v_op_stack || (v_op_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').shift());
									return (function () {
										if ( (p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(0)) == 'prefix') ) {
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', '', 'code', ('prefix:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1)])))]), 1)])));
									}
									else return (function () {
										if ( (p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(0)) == 'postfix') ) {
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', '', 'code', ('postfix:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1)])))]), 1)])));
									}
									else return (function () {
										if ( (p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(0)) == 'postfix_or_term') ) {
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].reduce_postfix(p5list_to_a([v_last_op, p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1)]), 1)])));
									}
									else return (function () {
										if ( p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_assoc_type(p5list_to_a(['list', (v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)]), 0)) ) {
										var v_arg;
										(function () {
											if ( (p5num((p5num(p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) < 2) ) {
											(function () {
												var v_v2;
												v_v2 = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 0));
												(function () {
													if ( ((p5pkg['Perlito5::Grammar::Expression'].ref([v_v2], 0) == 'Perlito5::AST::Apply') && (p5str(p5call(v_v2, 'code', [], 0)) == ('list:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'))) ) {
													p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', p5call(v_v2, 'namespace', [], 1), 'code', p5call(v_v2, 'code', [], 1), 'arguments', (new p5ArrayRef(p5list_to_a([p5array_deref(p5call(v_v2, 'arguments', [], p5want), 'Perlito5::Grammar::Expression')])))]), 1)]));
												}
												else {
													p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', '', 'code', ('list:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', (new p5ArrayRef([v_v2]))]), 1)]));
												}
												})();
												throw(p5context([], p5want));
											})();
										}
										else {
											(function () {
												var v_v2;
												v_v2 = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 0));
												v_arg = ((new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1), v_v2]))));
											})();
										}
										})();
										(function () {
											if ( ((p5pkg['Perlito5::Grammar::Expression'].ref([(v_arg || (v_arg = new p5ArrayRef([])))._array_.p5aget(0)], 0) == 'Perlito5::AST::Apply') && ((p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(0)) == 'infix') && (p5str(p5call((v_arg || (v_arg = new p5ArrayRef([])))._array_.p5aget(0), 'code', [], 0)) == ('list:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>')))) ) {
											p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', '', 'code', p5call(p5context([(v_arg || (v_arg = new p5ArrayRef([])))._array_.p5aget(0)], 0), 'code', [], 1), 'arguments', (new p5ArrayRef(p5list_to_a([p5array_deref(p5call(p5context([(v_arg || (v_arg = new p5ArrayRef([])))._array_.p5aget(0)], 0), 'arguments', [], p5want), 'Perlito5::Grammar::Expression'), (v_arg || (v_arg = new p5ArrayRef([])))._array_.p5aget(1)])))]), 1)]));
											throw(p5context([], p5want));
										}
										})();
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', ['namespace', '', 'code', ('list:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', v_arg], 1)])));
									}
									else return (function () {
										if ( p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_assoc_type(p5list_to_a(['chain', (v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)]), 0)) ) {
										(function () {
											if ( (p5num((p5num(p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) < 2) ) {
											p5pkg['Perlito5::Grammar::Expression'].die([].concat([('Missing value after operator ' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)))]), null);
										}
										})();
										var v_v2;
										v_v2 = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 0));
										var v_arg;
										v_arg = ((new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1), v_v2]))));
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', ['namespace', '', 'code', ('infix:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', v_arg], 1)])));
									}
									else return (function () {
										if ( (p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(0)) == 'ternary') ) {
										(function () {
											if ( (p5num((p5num(p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) < 2) ) {
											p5pkg['Perlito5::Grammar::Expression'].die([].concat(['Missing value after ternary operator']), null);
										}
										})();
										var v_v2;
										v_v2 = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 0));
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', '', 'code', ('ternary:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1), (v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(2), v_v2])))]), 1)])));
									}
									else {
										(function () {
											if ( (p5num((p5num(p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) < 2) ) {
											p5pkg['Perlito5::Grammar::Expression'].die([].concat([('missing value after operator ' + p5pkg['Perlito5::Grammar::Expression'].chr([39], 0) + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + p5pkg['Perlito5::Grammar::Expression'].chr([39], 0))]), null);
										}
										})();
										var v_v2;
										v_v2 = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 0));
										return (p5array_deref((v_num_stack || (v_num_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['namespace', '', 'code', ('infix:<' + p5str((v_last_op || (v_last_op = new p5ArrayRef([])))._array_.p5aget(1)) + '>'), 'arguments', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Grammar::Expression'].pop_term([v_num_stack], 1), v_v2])))]), 1)])));
									}
									})()
									})()
									})()
									})()
									})()
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3378._prototype_ = null;
							return tmp3378
						})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_arrow', (function () {
					var tmp3379;
					tmp3379 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('->' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5context([(function () {
												var v_pos1;
												v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
												return ((p5or(p5context([(function () {
														return ((p5context([p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0), function () {
																return p5and(p5context([(function () {
																	var v_m2;
																	v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																	return (function () {
																		if ( p5bool(v_m2) ) {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('paren_parse', (v_m2));
																		return ((1));
																	}
																	else {
																		return ((0));
																	}
																	})()
																})()], 0), function () {
																	return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', '.( )', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('paren_parse')]), 1)])))));
																			return ((1));
																		})()], 0)
																	})
																})
															})], 0)));
													})()], 0), function () {
														return p5or(p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
															return ((p5context([p5and(p5context([p5and(('[' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																	return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																})], 0), function () {
																	return p5and(p5context([(function () {
																		var v_m2;
																		v_m2 = (p5pkg['Perlito5::Grammar::Expression'].square_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																		return (function () {
																			if ( p5bool(v_m2) ) {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('square_parse', (v_m2));
																			return ((1));
																		}
																		else {
																			return ((0));
																		}
																		})()
																	})()], 0), function () {
																		return p5and(p5context([p5and((']' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5context([(function () {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', '.[ ]', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('square_parse')]), 1)])))));
																				return ((1));
																			})()], 0)
																		})
																	})
																})], 0)));
														})()], 0), function () {
															return p5or(p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([p5and(p5context([p5and(('{' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5and(p5context([(function () {
																			var v_m2;
																			v_m2 = (p5pkg['Perlito5::Grammar::Expression'].curly_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																			return (function () {
																				if ( p5bool(v_m2) ) {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('curly_parse', (v_m2));
																				return ((1));
																			}
																			else {
																				return ((0));
																			}
																			})()
																		})()], 0), function () {
																			return p5and(p5context([(function () {
																				var v_pos1;
																				v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																				return ((p5or(p5context([(function () {
																						return ((p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																								return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																							})], 0)));
																					})()], 0), function () {
																						return p5context([(function () {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																							return ((p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																									p5pkg['Perlito5::Grammar::Expression'].die([].concat(['Missing right curly or square bracket']), null);
																									return ((1));
																								})()], 0)));
																						})()], 0)
																					})));
																			})()], 0), function () {
																				return p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', '.{ }', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('curly_parse')]), 1)])))));
																					return ((1));
																				})()], 0)
																			})
																		})
																	})], 0)));
															})()], 0), function () {
																return p5or(p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																	return ((p5context([p5and(p5context([p5and(('$' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::ident', (v_m2));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5and(p5context([(function () {
																					var v_m2;
																					v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																					return (function () {
																						if ( p5bool(v_m2) ) {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																						return ((1));
																					}
																					else {
																						return ((0));
																					}
																					})()
																				})()], 0), function () {
																					return p5context([(function () {
																						var v_pos1;
																						v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																						return ((p5or(p5context([(function () {
																								return ((p5context([p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																									})], 0), function () {
																										return p5and(p5context([(function () {
																											var v_m2;
																											v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																											return (function () {
																												if ( p5bool(v_m2) ) {
																												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('paren_parse', (v_m2));
																												return ((1));
																											}
																											else {
																												return ((0));
																											}
																											})()
																										})()], 0), function () {
																											return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																											})], 0), function () {
																												return p5context([(function () {
																													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', 'methcall', p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '$', 'namespace', '', 'name', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::ident')]), 1)]), 1), p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('paren_parse')]), 1)])))));
																													return ((1));
																												})()], 0)
																											})
																										})
																									})], 0)));
																							})()], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																									return ((p5context([(function () {
																											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', 'methcall_no_params', p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '$', 'namespace', '', 'name', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::ident')]), 1)]), 1)])))));
																											return ((1));
																										})()], 0)));
																								})()], 0)
																							})));
																					})()], 0)
																				})
																			})
																		})], 0)));
																})()], 0), function () {
																	return p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																		return ((p5context([p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5pkg['Perlito5::Grammar'].full_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::full_ident', (v_m2));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5and(p5context([(function () {
																					var v_m2;
																					v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																					return (function () {
																						if ( p5bool(v_m2) ) {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																						return ((1));
																					}
																					else {
																						return ((0));
																					}
																					})()
																				})()], 0), function () {
																					return p5context([(function () {
																						var v_pos1;
																						v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																						return ((p5or(p5context([(function () {
																								return ((p5context([p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																									})], 0), function () {
																										return p5and(p5context([(function () {
																											var v_m2;
																											v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																											return (function () {
																												if ( p5bool(v_m2) ) {
																												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('paren_parse', (v_m2));
																												return ((1));
																											}
																											else {
																												return ((0));
																											}
																											})()
																										})()], 0), function () {
																											return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																											})], 0), function () {
																												return p5context([(function () {
																													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', 'methcall', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::full_ident')]), 1), p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('paren_parse')]), 1)])))));
																													return ((1));
																												})()], 0)
																											})
																										})
																									})], 0)));
																							})()], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																									return ((p5context([(function () {
																											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', 'methcall_no_params', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::full_ident')]), 1)])))));
																											return ((1));
																										})()], 0)));
																								})()], 0)
																							})));
																					})()], 0)
																				})
																			})], 0)));
																	})()], 0)
																})
															})
														})
													})));
											})()], 0)
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3379._prototype_ = null;
					return tmp3379
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_ternary', (function () {
					var tmp3380;
					tmp3380 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('?' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar::Expression'].ternary5_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('ternary5_parse', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([p5and((':' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
											})], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['op', '? :', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('ternary5_parse')]), 1)])))));
													return ((1));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3380._prototype_ = null;
					return tmp3380
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_paren', (function () {
					var tmp3381;
					tmp3381 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('paren_parse', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
											})], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', '( )', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('paren_parse')]), 1)])))));
													return ((1));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3381._prototype_ = null;
					return tmp3381
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_square', (function () {
					var tmp3382;
					tmp3382 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('[' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar::Expression'].square_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('square_parse', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([p5and((']' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
											})], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', '[ ]', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('square_parse')]), 1)])))));
													return ((1));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3382._prototype_ = null;
					return tmp3382
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_curly', (function () {
					var tmp3383;
					tmp3383 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('{' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m;
											v_m = (v_MATCH);
											(function () {
												if ( !( p5bool((function () {
													var v_m2;
													v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})())) ) {
												v_MATCH = (v_m);
											}
											})();
											return ((1));
										})()], 0), function () {
											return p5context([(function () {
												var v_pos1;
												v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
												return ((p5or(p5context([(function () {
														return ((p5context([p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::ident', (v_m2));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5and(p5context([(function () {
																	var v_m;
																	v_m = (v_MATCH);
																	(function () {
																		if ( !( p5bool((function () {
																			var v_m2;
																			v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																			return (function () {
																				if ( p5bool(v_m2) ) {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																				return ((1));
																			}
																			else {
																				return ((0));
																			}
																			})()
																		})())) ) {
																		v_MATCH = (v_m);
																	}
																	})();
																	return ((1));
																})()], 0), function () {
																	return p5and(p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', 'block', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef([])), 'bareword', 1, 'code', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::ident')]), 1), 'namespace', '']), 1)])))])))));
																			return ((1));
																		})()], 0)
																	})
																})
															})], 0)));
													})()], 0), function () {
														return p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
															return ((p5context([p5and(p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('_save_scope', ((new p5ArrayRef(p5list_to_a([p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT']])))));
																	p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = [];
																	return ((1));
																})()], 0), function () {
																	return p5and(p5context([(function () {
																		var v_m2;
																		v_m2 = (p5pkg['Perlito5::Grammar'].exp_stmts(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																		return (function () {
																			if ( p5bool(v_m2) ) {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::exp_stmts', (v_m2));
																			return ((1));
																		}
																		else {
																			return ((0));
																		}
																		})()
																	})()], 0), function () {
																		return p5and(p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = p5list_to_a([p5array_deref((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_array('_save_scope'), 'Perlito5::Grammar::Expression')]);
																			return ((1));
																		})()], 0), function () {
																			return p5and(p5context([(function () {
																				var v_m;
																				v_m = (v_MATCH);
																				(function () {
																					if ( !( p5bool((function () {
																						var v_m2;
																						v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})())) ) {
																					v_MATCH = (v_m);
																				}
																				})();
																				return ((1));
																			})()], 0), function () {
																				return p5and(p5context([(function () {
																					var v_pos1;
																					v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																					return ((p5or(p5context([(function () {
																							return ((p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																									return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																								})], 0)));
																						})()], 0), function () {
																							return p5context([(function () {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																								return ((p5context([(function () {
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																										p5pkg['Perlito5::Grammar::Expression'].die([].concat(['Missing right curly or square bracket']), null);
																										return ((1));
																									})()], 0)));
																							})()], 0)
																						})));
																				})()], 0), function () {
																					return p5context([(function () {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['postfix_or_term', 'block', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::exp_stmts')]), 1)])))));
																						return ((1));
																					})()], 0)
																				})
																			})
																		})
																	})
																})], 0)));
														})()], 0)
													})));
											})()], 0)
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3383._prototype_ = null;
					return tmp3383
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'declarator', (function () {
					var tmp3384;
					tmp3384 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(('my' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 2)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((2 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0)));
											})()], 0), function () {
												return p5or(p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([p5and(('state' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 5)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((5 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0)));
												})()], 0), function () {
													return p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
														return ((p5context([p5and(('our' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 3)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((3 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0)));
													})()], 0)
												})
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3384._prototype_ = null;
					return tmp3384
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_declarator', (function () {
					var tmp3385;
					tmp3385 = function (List__, p5want) {
						try {
							var v_str;
							v_str = (List__.p5aget(0));
							var v_pos;
							v_pos = (List__.p5aget(1));
							var v_MATCH;
							v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
							var v_tmp;
							v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar::Expression'].declarator(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('declarator', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5and(p5context([(function () {
											var v_pos1;
											v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
											return ((p5or(p5context([(function () {
													return ((p5context([p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5context([(function () {
																var v_pos1;
																v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																return ((p5or(p5context([(function () {
																		return ((p5context([p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5call_sub('Perlito5::Grammar::Block', 'named_sub', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Block::named_sub', (v_m2));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																					var v_sub;
																					v_sub = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Grammar::Block::named_sub')._hash_.p5hget('capture'));
																					(v_sub || (v_sub = new p5HashRef({})))._hash_.p5hset('decl', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('declarator')]), 0)));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(['term', v_sub]))));
																					throw(p5context([v_MATCH], p5want));
																					return ((1));
																				})()], 0)
																			})], 0)));
																	})()], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																			return ((p5context([(function () {
																					var v_m2;
																					v_m2 = (p5pkg['Perlito5::Grammar'].opt_type(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																					return (function () {
																						if ( p5bool(v_m2) ) {
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																						(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::opt_type', (v_m2));
																						return ((1));
																					}
																					else {
																						return ((0));
																					}
																					})()
																				})()], 0)));
																		})()], 0)
																	})));
															})()], 0)
														})], 0)));
												})()], 0), function () {
													return p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
														return ((1));
													})()], 0)
												})));
										})()], 0), function () {
											return p5and(p5context([(function () {
												var v_m2;
												v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
												return (function () {
													if ( p5bool(v_m2) ) {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
													return ((1));
												}
												else {
													return ((0));
												}
												})()
											})()], 0), function () {
												return p5and(p5context([(function () {
													var v_m2;
													v_m2 = (p5pkg['Perlito5::Grammar'].var_ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::var_ident', (v_m2));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})()], 0), function () {
													return p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5call_sub('Perlito5::Grammar::Attribute', 'opt_attribute', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Attribute::opt_attribute', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
															var v_declarator;
															v_declarator = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('declarator')]), 0));
															var v_type;
															v_type = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::opt_type')]), 0));
															p5and(v_type, function () {
																return p5and(!( p5bool((p5make_package('Perlito5')['v_PACKAGES'] || (p5make_package('Perlito5')['v_PACKAGES'] = new p5HashRef({})))._hash_.p5hget(p5str(v_type)))), function () {
																	return p5pkg['Perlito5::Grammar::Expression'].die([].concat([('No such class ' + p5str(v_type))]), null)
																})
															});
															var v_var;
															v_var = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget_hash('Perlito5::Grammar::var_ident')._hash_.p5hget('capture'));
															p5and((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
																return p5pkg['Perlito5::Grammar::Expression'].die([].concat([('No package name allowed for variable ' + p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')) + ' in "' + p5str(v_declarator) + '"')]), null)
															});
															(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_decl', (v_declarator));
															(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_id', ((function () {
																		var tmp3386 = p5make_package('Perlito5')['v_ID'];
																		p5make_package('Perlito5')['v_ID'] = p5incr_(tmp3386);
																		return tmp3386
																	})()));
															p5and((p5str(v_declarator) == 'our'), function () {
																return p5context([(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_namespace', (p5make_package('Perlito5')['v_PKG_NAME']))], 0)
															});
															var v_decl;
															v_decl = (p5call('Perlito5::AST::Decl', 'new', p5list_to_a(['decl', v_declarator, 'type', v_type, 'var', v_var, 'attributes', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Attribute::opt_attribute')]), 1)]), 0));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(['term', v_decl]))));
															return ((1));
														})()], 0)
													})
												})
											})
										})
									})], 0)], 0));
							return (( p5bool(v_tmp) ? v_MATCH : 0));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3385._prototype_ = null;
					return tmp3385
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_not', (function () {
					var tmp3387;
					tmp3387 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('not' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 3)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((3 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([p5and(('(' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
												return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
											})], 0), function () {
												return p5and(p5context([(function () {
													var v_m2;
													v_m2 = (p5pkg['Perlito5::Grammar::Expression'].paren_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('paren_parse', (v_m2));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})()], 0), function () {
													return p5and(p5context([p5and((')' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0), function () {
														return p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['term', p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<not>', 'arguments', p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('paren_parse')]), 1)]), 1), 'namespace', '']), 1)])))));
															return ((1));
														})()], 0)
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3387._prototype_ = null;
					return tmp3387
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_local', (function () {
					var tmp3388;
					tmp3388 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('local' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 5)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((5 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												var v_m2;
												v_m2 = (p5call_sub('Perlito5::Grammar::Sigil', 'term_sigil', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
												return (function () {
													if ( p5bool(v_m2) ) {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Sigil::term_sigil', (v_m2));
													return ((1));
												}
												else {
													return ((0));
												}
												})()
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
													var v_declarator;
													v_declarator = ('local');
													var v_type;
													v_type = ('');
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Sigil::term_sigil')]), p5want)._array_.p5aget(1)));
													v_MATCH = (p5call_sub('Perlito5::Grammar::String', 'double_quoted_var_with_subscript', [v_MATCH], 0));
													var v_var;
													v_var = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('capture'));
													var v_look;
													v_look = (p5pkg['Perlito5::Grammar::Scope'].lookup_variable([v_var], 0));
													(function () {
														if ( (p5bool(v_look) && ((p5str((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_decl')) == 'my') || (p5str((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_decl')) == 'state'))) ) {
														p5pkg['Perlito5::Grammar::Expression'].die([].concat([('Can' + p5pkg['Perlito5::Grammar::Expression'].chr([39], 0) + 't localize lexical variable ' + p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')))]), null);
													}
													})();
													(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_id', ((function () {
																var tmp3389 = p5make_package('Perlito5')['v_ID'];
																p5make_package('Perlito5')['v_ID'] = p5incr_(tmp3389);
																return tmp3389
															})()));
													(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_decl', (v_declarator));
													p5and(!( p5bool((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('namespace'))), function () {
														return p5and(!( p5bool((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('_namespace'))), function () {
															return p5context([(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_namespace', (p5make_package('Perlito5')['v_PKG_NAME']))], 0)
														})
													});
													var v_decl;
													v_decl = (p5call('Perlito5::AST::Decl', 'new', ['decl', v_declarator, 'type', v_type, 'var', v_var], 0));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(['term', v_decl]))));
													return ((1));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3388._prototype_ = null;
					return tmp3388
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_return', (function () {
					var tmp3390;
					tmp3390 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('return' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 6)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((6 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												var v_m2;
												v_m2 = (p5pkg['Perlito5::Grammar::Expression'].list_parse(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
												return (function () {
													if ( p5bool(v_m2) ) {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('list_parse', (v_m2));
													return ((1));
												}
												else {
													return ((0));
												}
												})()
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
													var v_args;
													v_args = (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('list_parse')]), 0));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['term', p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'return', 'arguments', ( (p5str(v_args) == '*undef*') ? (new p5ArrayRef([])) : (new p5ArrayRef([v_args]))), 'namespace', '']), 1)])))));
													return ((1));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3390._prototype_ = null;
					return tmp3390
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'term_eval', (function () {
					var tmp3391;
					tmp3391 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('eval' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 4)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((4 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar'].block(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::block', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['term', p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'eval', 'arguments', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::block')]), 1)]))), 'namespace', '']), 1)])))));
												return ((1));
											})()], 0)
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3391._prototype_ = null;
					return tmp3391
				})());
				var v_Expr_end_token_chars;
				v_Expr_end_token_chars = ((new p5ArrayRef([7, 6, 5, 4, 3, 2, 1])));
				var v_Expr_end_token;
				v_Expr_end_token = ((new p5HashRef({']' : 1, ')' : 1, '}' : 1, ';' : 1, 'if' : 1, 'for' : 1, 'else' : 1, 'when' : 1, 'while' : 1, 'until' : 1, 'elsif' : 1, 'unless' : 1, 'foreach' : 1})));
				var v_List_end_token;
				v_List_end_token = ((new p5HashRef(p5a_to_h(p5list_to_a([':', 1, 'or', 1, 'and', 1, 'xor', 1, p5hash_deref((v_Expr_end_token || (v_Expr_end_token = new p5HashRef({}))), 'Perlito5::Grammar::Expression')])))));
				var v_Argument_end_token;
				v_Argument_end_token = ((new p5HashRef(p5a_to_h(p5list_to_a([',', 1, '<', 1, '>', 1, '=', 1, '|', 1, '^', 1, '?', 1, '=>', 1, 'lt', 1, 'le', 1, 'gt', 1, 'ge', 1, '<=', 1, '>=', 1, '==', 1, '!=', 1, 'ne', 1, 'eq', 1, '..', 1, '~~', 1, '&&', 1, '||', 1, '+=', 1, '-=', 1, '*=', 1, '/=', 1, 'x=', 1, '|=', 1, '&=', 1, '.=', 1, '^=', 1, '%=', 1, '//', 1, '...', 1, '<=>', 1, 'cmp', 1, '<<=', 1, '>>=', 1, '||=', 1, '&&=', 1, '//=', 1, '**=', 1, p5hash_deref((v_List_end_token || (v_List_end_token = new p5HashRef({}))), 'Perlito5::Grammar::Expression')])))));
				p5typeglob_set('Perlito5::Grammar::Expression', 'list_parser', (function () {
					var tmp3392;
					tmp3392 = function (List__, p5want) {
						try {
							var v_str;
							var v_pos;
							var v_end_token;
							var tmp3393 = p5list_to_a([List__]);
							v_str = tmp3393.shift();
							v_pos = tmp3393.shift();
							v_end_token = tmp3393.shift();
							var v_expr;
							var v_last_pos;
							v_last_pos = (v_pos);
							var v_is_first_token;
							v_is_first_token = (1);
							var v_lexer_stack;
							v_lexer_stack = ((new p5ArrayRef([])));
							var v_last_token_was_space;
							v_last_token_was_space = (1);
							var v_get_token;
							v_get_token = ((function () {
										var tmp3394;
										tmp3394 = function (List__, p5want) {
											try {
												var v_last_is_term;
												v_last_is_term = (List__.p5aget(0));
												var v_v;
												(function () {
													if ( p5bool((p5num(p5array_deref((v_lexer_stack || (v_lexer_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) ) {
													v_v = (p5array_deref((v_lexer_stack || (v_lexer_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').pop());
													(function () {
														if ( (p5bool(v_is_first_token) && ((p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(0)) == 'op') && !( p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_fixity_type(p5list_to_a(['prefix', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)]), 0))))) ) {
														(v_v || (v_v = new p5ArrayRef([])))._array_.p5aset(0, ('end'));
													}
													})();
												}
												else {
													(function () {
														var v_m;
														v_m = (p5pkg['Perlito5::Grammar::Precedence'].op_parse([v_str, v_last_pos, v_last_is_term], 0));
														(function () {
															if ( p5bool(v_m) ) {
															(function () {
																var v_spc;
																v_spc = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																(function () {
																	if ( p5bool(v_spc) ) {
																	(v_m || (v_m = new p5HashRef({})))._hash_.p5hset('to', ((v_spc || (v_spc = new p5HashRef({})))._hash_.p5hget('to')));
																}
																})();
															})();
														}
														})();
														(function () {
															if ( !( p5bool(v_m)) ) {
															throw((new p5ArrayRef(['end', '*end*'])));
														}
														})();
														v_v = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('capture'));
														(function () {
															if ( (p5bool(v_is_first_token) && ((p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(0)) == 'op') && !( p5bool(p5pkg['Perlito5::Grammar::Precedence'].is_fixity_type(p5list_to_a(['prefix', (v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(1)]), 0))))) ) {
															(v_v || (v_v = new p5ArrayRef([])))._array_.p5aset(0, ('end'));
														}
														})();
														(function () {
															if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(0)) != 'end') ) {
															v_last_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
														}
														})();
													})();
												}
												})();
												v_last_token_was_space = (p5context([(p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(0)) == 'space')], 0));
												v_is_first_token = (0);
												return (p5context([v_v], p5want));
											}
											catch(err) {
												if ( err instanceof Error ) {
													throw(err);
												}
												else {
													return(err);
												}
											}
										};
										tmp3394._prototype_ = null;
										return tmp3394
									})());
							var v_prec;
							v_prec = (p5call('Perlito5::Grammar::Precedence', 'new', ['get_token', v_get_token, 'reduce', v_reduce_to_ast, 'end_token', v_end_token, 'end_token_chars', v_Expr_end_token_chars], 0));
							var v_res;
							v_res = (p5call(v_prec, 'precedence_parse', [], 0));
							(function () {
								if ( (p5num((p5num(p5array_deref((v_res || (v_res = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) == 0) ) {
								throw((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_last_pos, 'capture' : '*undef*'})));
							}
							})();
							var v_result;
							v_result = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_res], 0));
							return ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_last_pos, 'capture' : v_result})));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3392._prototype_ = null;
					return tmp3392
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'argument_parse', (function () {
					var tmp3395;
					tmp3395 = function (List__, p5want) {
						var v_str;
						var v_pos;
						var tmp3396 = p5list_to_a([List__]);
							v_str = tmp3396.shift();
							v_pos = tmp3396.shift();
						return (p5pkg['Perlito5::Grammar::Expression'].list_parser([v_str, v_pos, v_Argument_end_token], p5want));
					};
					tmp3395._prototype_ = null;
					return tmp3395
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'list_parse', (function () {
					var tmp3397;
					tmp3397 = function (List__, p5want) {
						var v_str;
						var v_pos;
						var tmp3398 = p5list_to_a([List__]);
							v_str = tmp3398.shift();
							v_pos = tmp3398.shift();
						return (p5pkg['Perlito5::Grammar::Expression'].list_parser([v_str, v_pos, v_List_end_token], p5want));
					};
					tmp3397._prototype_ = null;
					return tmp3397
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'circumfix_parse', (function () {
					var tmp3399;
					tmp3399 = function (List__, p5want) {
						var v_str;
						var v_pos;
						var v_delimiter;
						var tmp3400 = p5list_to_a([List__]);
							v_str = tmp3400.shift();
							v_pos = tmp3400.shift();
							v_delimiter = tmp3400.shift();
						var v_expr;
						var v_last_pos;
						v_last_pos = (v_pos);
						var v_get_token;
						v_get_token = ((function () {
										var tmp3401;
										tmp3401 = function (List__, p5want) {
											var v_last_is_term;
											v_last_is_term = (List__.p5aget(0));
											var v_m;
											v_m = (p5pkg['Perlito5::Grammar::Precedence'].op_parse([v_str, v_last_pos, v_last_is_term], 0));
											(function () {
													if ( p5bool(v_m) ) {
													(function () {
														var v_spc;
														v_spc = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														(function () {
															if ( p5bool(v_spc) ) {
															(v_m || (v_m = new p5HashRef({})))._hash_.p5hset('to', ((v_spc || (v_spc = new p5HashRef({})))._hash_.p5hget('to')));
														}
														})();
													})();
												}
												})();
											(function () {
													if ( !( p5bool(v_m)) ) {
													(function () {
														var v_msg;
														v_msg = (('Expected closing delimiter: ' + p5str(v_delimiter)));
														p5and(p5context([p5or((p5str(v_delimiter) == '}'), function () {
															return (p5str(v_delimiter) == ']')
														})], 0), function () {
															return p5context([v_msg = ('Missing right curly or square bracket')], 0)
														});
														p5pkg['Perlito5::Grammar::Expression'].die([].concat([(p5str(v_msg) + ' near '), v_last_pos]), null);
													})();
												}
												})();
											var v_v;
											v_v = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('capture'));
											(function () {
													if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(0)) != 'end') ) {
													v_last_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
												}
												})();
											return (p5context([v_v], p5want));
										};
										tmp3401._prototype_ = null;
										return tmp3401
									})());
						var Hash_delim_token = {};
						Hash_delim_token.p5hset(p5str(v_delimiter), (1));
						var v_prec;
						v_prec = (p5call('Perlito5::Grammar::Precedence', 'new', p5list_to_a(['get_token', v_get_token, 'reduce', v_reduce_to_ast, 'end_token', (new p5HashRef(Hash_delim_token)), 'end_token_chars', (new p5ArrayRef([p5pkg['Perlito5::Grammar::Expression'].length([v_delimiter], 1)]))]), 0));
						var v_res;
						v_res = (p5call(v_prec, 'precedence_parse', [], 0));
						v_res = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_res], 0));
						(function () {
								if ( !( (v_res != null)) ) {
								v_res = ('*undef*');
							}
							})();
						return ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_last_pos, 'capture' : v_res})));
					};
					tmp3399._prototype_ = null;
					return tmp3399
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'ternary5_parse', (function () {
					var tmp3402;
					tmp3402 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].circumfix_parse(p5list_to_a([List__, ':']), p5want));
					};
					tmp3402._prototype_ = null;
					return tmp3402
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'curly_parse', (function () {
					var tmp3403;
					tmp3403 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].circumfix_parse(p5list_to_a([List__, '}']), p5want));
					};
					tmp3403._prototype_ = null;
					return tmp3403
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'square_parse', (function () {
					var tmp3404;
					tmp3404 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].circumfix_parse(p5list_to_a([List__, ']']), p5want));
					};
					tmp3404._prototype_ = null;
					return tmp3404
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'paren_parse', (function () {
					var tmp3405;
					tmp3405 = function (List__, p5want) {
						return (p5pkg['Perlito5::Grammar::Expression'].circumfix_parse(p5list_to_a([List__, ')']), p5want));
					};
					tmp3405._prototype_ = null;
					return tmp3405
				})());
				p5typeglob_set('Perlito5::Grammar::Expression', 'exp_parse', (function () {
					var tmp3406;
					tmp3406 = function (List__, p5want) {
						try {
							var v_str;
							var v_pos;
							var tmp3407 = p5list_to_a([List__]);
							v_str = tmp3407.shift();
							v_pos = tmp3407.shift();
							var v_expr;
							var v_last_pos;
							v_last_pos = (v_pos);
							var v_lexer_stack;
							v_lexer_stack = ((new p5ArrayRef([])));
							var v_get_token;
							v_get_token = ((function () {
										var tmp3408;
										tmp3408 = function (List__, p5want) {
											try {
												var v_last_is_term;
												v_last_is_term = (List__.p5aget(0));
												var v_v;
												(function () {
													if ( p5bool((p5num(p5array_deref((v_lexer_stack || (v_lexer_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) ) {
													v_v = (p5array_deref((v_lexer_stack || (v_lexer_stack = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression').pop());
												}
												else {
													(function () {
														var v_m;
														v_m = (p5pkg['Perlito5::Grammar::Precedence'].op_parse([v_str, v_last_pos, v_last_is_term], 0));
														(function () {
															if ( p5bool(v_m) ) {
															(function () {
																var v_spc;
																v_spc = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																(function () {
																	if ( p5bool(v_spc) ) {
																	(v_m || (v_m = new p5HashRef({})))._hash_.p5hset('to', ((v_spc || (v_spc = new p5HashRef({})))._hash_.p5hget('to')));
																}
																})();
															})();
														}
														})();
														(function () {
															if ( !( p5bool(v_m)) ) {
															throw((new p5ArrayRef(['end', '*end*'])));
														}
														})();
														v_v = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('capture'));
														(function () {
															if ( (p5str((v_v || (v_v = new p5ArrayRef([])))._array_.p5aget(0)) != 'end') ) {
															v_last_pos = ((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to'));
														}
														})();
													})();
												}
												})();
												return (p5context([v_v], p5want));
											}
											catch(err) {
												if ( err instanceof Error ) {
													throw(err);
												}
												else {
													return(err);
												}
											}
										};
										tmp3408._prototype_ = null;
										return tmp3408
									})());
							var v_prec;
							v_prec = (p5call('Perlito5::Grammar::Precedence', 'new', ['get_token', v_get_token, 'reduce', v_reduce_to_ast, 'end_token', v_Expr_end_token, 'end_token_chars', v_Expr_end_token_chars], 0));
							var v_res;
							v_res = (p5call(v_prec, 'precedence_parse', [], 0));
							(function () {
								if ( (p5num((p5num(p5array_deref((v_res || (v_res = new p5ArrayRef([]))), 'Perlito5::Grammar::Expression')))) == 0) ) {
								throw(p5context([0], p5want));
							}
							})();
							var v_result;
							v_result = (p5pkg['Perlito5::Grammar::Expression'].pop_term([v_res], 0));
							return ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_last_pos, 'capture' : v_result})));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3406._prototype_ = null;
					return tmp3406
				})());
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['my', p5pkg['Perlito5::Grammar::Expression'].term_declarator]), null);
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['our', p5pkg['Perlito5::Grammar::Expression'].term_declarator]), null);
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['eval', p5pkg['Perlito5::Grammar::Expression'].term_eval]), null);
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['state', p5pkg['Perlito5::Grammar::Expression'].term_declarator]), null);
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['local', p5pkg['Perlito5::Grammar::Expression'].term_local]), null);
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['return', p5pkg['Perlito5::Grammar::Expression'].term_return]), null);
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['not', p5pkg['Perlito5::Grammar::Expression'].term_not]), null);
				1;
			}, [0], false, ''
		);
		1;
	})();
	(function () {
		null;
		p5make_package('Perlito5::Macro');
		// use strict
;
		p5block(function (v) {}, function () {
				p5make_package('Perlito5::AST::Apply');
				// use strict
;
				var Hash_op = {};
				Hash_op = {'infix:<+=>' : 'infix:<+>', 'infix:<-=>' : 'infix:<->', 'infix:<*=>' : 'infix:<*>', 'infix:</=>' : 'infix:</>', 'infix:<||=>' : 'infix:<||>', 'infix:<&&=>' : 'infix:<&&>', 'infix:<|=>' : 'infix:<|>', 'infix:<&=>' : 'infix:<&>', 'infix:<//=>' : 'infix:<//>', 'infix:<.=>' : 'list:<.>', 'infix:<x=>' : 'infix:<x>'};
				p5typeglob_set('Perlito5::AST::Apply', 'op_assign', (function () {
					var tmp3409;
					tmp3409 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							p5and(p5pkg['Perlito5::AST::Apply'].ref([v_code], 0), function () {
								throw(p5context([0], p5want))
							});
							(function () {
								if ( (Hash_op).hasOwnProperty(v_code) ) {
								throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'infix:<=>', 'arguments', (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', Hash_op.p5hget(p5str(v_code)), 'arguments', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 1)])))]), p5want));
							}
							})();
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3409._prototype_ = null;
					return tmp3409
				})());
				var Hash_op_auto = {};
				Hash_op_auto = {'prefix:<++>' : 1, 'prefix:<-->' : 1, 'postfix:<++>' : 1, 'postfix:<-->' : 1};
				p5typeglob_set('Perlito5::AST::Apply', 'op_auto', (function () {
					var tmp3410;
					tmp3410 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							p5and(p5pkg['Perlito5::AST::Apply'].ref([v_code], 0), function () {
								throw(p5context([0], p5want))
							});
							(function () {
								if ( (Hash_op_auto).hasOwnProperty(v_code) ) {
								(function () {
									var v_paren;
									v_paren = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( (p5str((v_paren || (v_paren = new p5HashRef({})))._hash_.p5hget('code')) == 'circumfix:<( )>') ) {
										(function () {
											var v_arg;
											v_arg = ((v_paren || (v_paren = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(p5num(p5negative( 1))));
											(function () {
												if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'infix:<=>') ) {
												(function () {
													var v_var;
													v_var = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
													throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', (new p5ArrayRef(p5list_to_a([v_paren, p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', v_code, 'arguments', (new p5ArrayRef([v_var]))]), 1)])))]), 1)])))]), p5want));
												})();
											}
											})();
										})();
									}
									})();
								})();
							}
							})();
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3410._prototype_ = null;
					return tmp3410
				})());
			}, [0], false, ''
		);
		p5typeglob_set('Perlito5::Macro', 'while_file', (function () {
			var tmp3411;
			tmp3411 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.p5aget(0));
					p5and((p5pkg['Perlito5::Macro'].ref([v_self], 0) != 'Perlito5::AST::While'), function () {
						throw(p5context([0], p5want))
					});
					var v_cond;
					v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
					(function () {
						if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('code')) == 'readline')) ) {
						(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('cond', (p5pkg['Perlito5::Macro'].bless([(new p5HashRef(p5a_to_h(p5list_to_a(['arguments', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Macro'].bless([(new p5HashRef(p5a_to_h(p5list_to_a(['arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Var', 'new', ['name', '_', 'namespace', '', 'sigil', '$'], 1), v_cond]))), 'code', 'infix:<=>', 'namespace', ''])))), 'Perlito5::AST::Apply'], 1)]))), 'bareword', '', 'code', 'defined', 'namespace', ''])))), 'Perlito5::AST::Apply'], 0)));
						throw(p5context([v_self], p5want));
					}
					})();
					return (p5context([0], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3411._prototype_ = null;
			return tmp3411
		})());
	})();
	(function () {
		p5make_package('Perlito5::Grammar::Scope');
		// use strict
;
		if (typeof p5pkg[p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] || (p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] = {}), 'Perlito5::Grammar::Scope']['Hash_Special_var'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] || (p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] = {}), 'Perlito5::Grammar::Scope']['Hash_Special_var'] = {};}
		p5pkg[p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] || (p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] = {}), 'Perlito5::Grammar::Scope']['Hash_Special_var'] = {'ARGV' : 1, 'INC' : 1, 'ENV' : 1, 'SIG' : 1, '_' : 1};
		p5typeglob_set('Perlito5::Grammar::Scope', 'new', (function () {
			var tmp3412;
			tmp3412 = function (List__, p5want) {
				return ((new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef([]))])))));
			};
			tmp3412._prototype_ = null;
			return tmp3412
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'new_base_scope', (function () {
			var tmp3413;
			tmp3413 = function (List__, p5want) {
				return ((new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef([]))])))));
			};
			tmp3413._prototype_ = null;
			return tmp3413
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'create_new_compile_time_scope', (function () {
			var tmp3414;
			tmp3414 = function (List__, p5want) {
				var v_new_scope;
				v_new_scope = ((new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef([]))])))));
				p5array_deref((p5make_package('Perlito5')['v_SCOPE'] || (p5make_package('Perlito5')['v_SCOPE'] = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Grammar::Scope').p5push([v_new_scope]);
				(function () {
						var tmp3415 = p5make_package('Perlito5')['v_SCOPE_DEPTH'];
						p5make_package('Perlito5')['v_SCOPE_DEPTH'] = p5incr_(tmp3415);
						return tmp3415
					})();
				return ((p5make_package('Perlito5')['v_SCOPE'] = (v_new_scope)));
			};
			tmp3414._prototype_ = null;
			return tmp3414
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'end_compile_time_scope', (function () {
			var tmp3416;
			tmp3416 = function (List__, p5want) {
				var v_pos;
				v_pos = (0);
				(function () {
						var tmp3417 = p5make_package('Perlito5')['v_SCOPE_DEPTH'];
						p5make_package('Perlito5')['v_SCOPE_DEPTH'] = p5decr_(tmp3417);
						return tmp3417
					})();
				p5make_package('Perlito5')['v_SCOPE'] = (p5make_package('Perlito5')['v_BASE_SCOPE']);
				(function () {
						p5while(function () {
							(function () {
								var tmp3418 = v_pos;
								v_pos = p5incr_(tmp3418);
								return tmp3418
							})();
							return ((p5make_package('Perlito5')['v_SCOPE'] = ((p5make_package('Perlito5')['v_SCOPE'] || (p5make_package('Perlito5')['v_SCOPE'] = new p5HashRef({})))._hash_.p5hget_array('block')._array_.p5aget(p5num(p5negative( 1))))));
						}, function () {
							return (p5num(p5make_package('Perlito5')['v_SCOPE_DEPTH']) > p5num(v_pos))
						}, false, '', 0)
					})()
			};
			tmp3416._prototype_ = null;
			return tmp3416
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'lookup_variable', (function () {
			var tmp3419;
			tmp3419 = function (List__, p5want) {
				try {
					var v_var;
					v_var = (List__.shift());
					var v_scope;
					v_scope = (p5defined_or(List__.shift(), function () {
								return p5make_package('Perlito5')['v_BASE_SCOPE']
							}));
					p5and((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
						throw(p5context([v_var], p5want))
					});
					p5and((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
						throw(p5context([v_var], p5want))
					});
					var v_look;
					v_look = (p5pkg['Perlito5::Grammar::Scope'].lookup_variable_inner([v_var, v_scope, 0], 0));
					p5and(v_look, function () {
						throw(p5context([v_look], p5want))
					});
					var v_c;
					v_c = (p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1));
					(function () {
						if ( (p5bool(p5pkg[p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] || (p5make_package('Perlito5::Grammar::Scope')['Hash_Special_var'] = {}), 'Perlito5::Grammar::Scope']['Hash_Special_var'].p5hget(p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')))) || ((p5str(v_c) < 'A') || (((p5str(v_c) > 'Z') && (p5str(v_c) < 'a')) || (p5str(v_c) > 'z')))) ) {
						(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_decl', ('global'));
						(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_namespace', ('main'));
						throw(p5context([v_var], p5want));
					}
					})();
					(function () {
						if ( ((p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('sigil')) == '$') && ((p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')) == 'a') || (p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')) == 'b'))) ) {
						(function () {
							if ( !( p5bool((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('_real_sigil'))) ) {
							(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_decl', ('global'));
							(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_namespace', (p5make_package('Perlito5')['v_PKG_NAME']));
							throw(p5context([v_var], p5want));
						}
						})();
					}
					})();
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3419._prototype_ = null;
			return tmp3419
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'lookup_variable_inner', (function () {
			var tmp3420;
			tmp3420 = function (List__, p5want) {
				try {
					var v_var;
					var v_scope;
					var v_depth;
					var tmp3421 = p5list_to_a([List__]);
					v_var = tmp3421.shift();
					v_scope = tmp3421.shift();
					v_depth = tmp3421.shift();
					p5and((p5num(v_depth) > p5num(p5make_package('Perlito5')['v_SCOPE_DEPTH'])), function () {
						throw(p5context([], p5want))
					});
					var v_block;
					v_block = ((v_scope || (v_scope = new p5HashRef({})))._hash_.p5hget('block'));
					(function () {
						if ( (p5bool(p5num(p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::Grammar::Scope'))) && ((p5pkg['Perlito5::Grammar::Scope'].ref([(v_block || (v_block = new p5ArrayRef([])))._array_.p5aget(p5num(p5negative( 1)))], 0) == 'HASH') && p5bool((v_block || (v_block = new p5ArrayRef([])))._array_.p5aget_hash(p5num(p5negative( 1)))._hash_.p5hget('block')))) ) {
						(function () {
							var v_look;
							v_look = (p5pkg['Perlito5::Grammar::Scope'].lookup_variable_inner(p5list_to_a([v_var, (v_block || (v_block = new p5ArrayRef([])))._array_.p5aget(p5num(p5negative( 1))), (p5num(v_depth) + 1)]), 0));
							p5and(v_look, function () {
								throw(p5context([v_look], p5want))
							});
						})();
					}
					})();
					(function () {
						var v_item;
						(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
								(function () {
									if ( ((p5pkg['Perlito5::Grammar::Scope'].ref([v_item], 0) == 'Perlito5::AST::Var') && (p5bool((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_decl')) && ((p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_decl')) != 'global') && (p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('name')) == p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')))))) ) {
									(function () {
										var v_sigil;
										v_sigil = (p5or((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
													return (v_var || (v_var = new p5HashRef({})))._hash_.p5hget('sigil')
												}));
										var v_item_sigil;
										v_item_sigil = (p5or((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
													return (v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')
												}));
										(function () {
											if ( (p5str(v_sigil) == p5str(v_item_sigil)) ) {
											throw(p5context([v_item], p5want));
										}
										})();
									})();
								}
								})();
							}, p5list_to_a([p5pkg['Perlito5::Grammar::Scope'].reverse([].concat(p5list_to_a([p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::Grammar::Scope')])), 1)]), false, '') })()
					})();
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3420._prototype_ = null;
			return tmp3420
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'check_variable_declarations', (function () {
			var tmp3422;
			tmp3422 = function (List__, p5want) {
				(function () {
						var v_item;
						(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
								(function () {
									if ( (p5pkg['Perlito5::Grammar::Scope'].ref([v_item], 0) == 'Perlito5::AST::Var') ) {
									(function () {
										var v_var;
										v_var = (v_item);
										var v_look;
										v_look = (p5pkg['Perlito5::Grammar::Scope'].lookup_variable([v_var], 0));
										(function () {
											if ( p5bool(v_look) ) {
											p5and((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_id'), function () {
												return (v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_id', ((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_id')))
											});
											p5and((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
												return (v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_decl', ((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_decl')))
											});
											p5and((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_namespace'), function () {
												return (v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_namespace', ((v_look || (v_look = new p5HashRef({})))._hash_.p5hget('_namespace')))
											});
										}
										else {
											(function () {
												if ( p5bool(p5make_package('Perlito5')['v_STRICT']) ) {
												(function () {
													var v_sigil;
													v_sigil = (p5or((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
																return (v_var || (v_var = new p5HashRef({})))._hash_.p5hget('sigil')
															}));
													(function () {
														if ( ((p5str(v_sigil) != '*') && (p5str(v_sigil) != '&')) ) {
														p5pkg['Perlito5::Grammar::Scope'].die([].concat([('Global symbol "' + p5str(v_sigil) + p5str((v_var || (v_var = new p5HashRef({})))._hash_.p5hget('name')) + '"' + ' requires explicit package name' + ' at ' + p5str(p5make_package('Perlito5')['v_FILE_NAME']))]), null);
													}
													})();
												})();
											}
											})();
											(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_decl', ('global'));
											(v_var || (v_var = new p5HashRef({})))._hash_.p5hset('_namespace', (p5make_package('Perlito5')['v_PKG_NAME']));
										}
										})();
									})();
								}
								})();
							}, p5list_to_a([p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT']]), false, '') })()
					})();
				p5array_deref((p5make_package('Perlito5')['v_SCOPE'] || (p5make_package('Perlito5')['v_SCOPE'] = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Grammar::Scope').p5push(p5list_to_a([p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT']]));
				return ((p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = []));
			};
			tmp3422._prototype_ = null;
			return tmp3422
		})());
		p5typeglob_set('Perlito5::Grammar::Scope', 'get_snapshot', (function () {
			var tmp3423;
			tmp3423 = function (List__, p5want) {
				var List_result = [];
				var v_scope;
				v_scope = (p5defined_or(List__.shift(), function () {
								return p5make_package('Perlito5')['v_BASE_SCOPE']
							}));
				var v_block;
				v_block = ((v_scope || (v_scope = new p5HashRef({})))._hash_.p5hget('block'));
				(function () {
						if ( (p5bool(p5num(p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::Grammar::Scope'))) && ((p5pkg['Perlito5::Grammar::Scope'].ref([(v_block || (v_block = new p5ArrayRef([])))._array_.p5aget(p5num(p5negative( 1)))], 0) == 'HASH') && p5bool((v_block || (v_block = new p5ArrayRef([])))._array_.p5aget_hash(p5num(p5negative( 1)))._hash_.p5hget('block')))) ) {
						(function () {
							var v_look;
							v_look = (p5pkg['Perlito5::Grammar::Scope'].get_snapshot(p5list_to_a([(v_block || (v_block = new p5ArrayRef([])))._array_.p5aget(p5num(p5negative( 1)))]), 0));
							List_result.p5unshift(p5list_to_a([p5array_deref((v_look || (v_look = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Grammar::Scope')]));
						})();
					}
					})();
				(function () {
						var v_item;
						(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
								(function () {
									if ( ((p5pkg['Perlito5::Grammar::Scope'].ref([v_item], 0) == 'Perlito5::AST::Var') && p5bool((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_decl'))) ) {
									List_result.p5unshift([v_item]);
								}
								})();
							}, p5list_to_a([p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::Grammar::Scope')]), false, '') })()
					})();
				return ((new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef(List_result))])))));
			};
			tmp3423._prototype_ = null;
			return tmp3423
		})());
		1;
	})();
	(function () {
		p5make_package('Perlito5');
		// use Perlito5::Grammar::Scope
;
		// use strict
;
		p5or((p5scalar_deref(String.fromCharCode(15), 'Perlito5', "") != null), function () {
			return p5scalar_deref_set(String.fromCharCode(15), ('perlito5'), 'Perlito5')
		});
		p5or((p5make_package('main')['v_/'] != null), function () {
			return p5make_package('main')['v_/'] = (p5pkg['Perlito5'].chr([10], 0))
		});
		p5or((p5make_package('main')['v_"'] != null), function () {
			return p5make_package('main')['v_"'] = (' ')
		});
		p5or((p5make_package('main')['v_,'] != null), function () {
			return p5make_package('main')['v_,'] = (null)
		});
		p5or((p5make_package('main')['v_!'] != null), function () {
			return p5make_package('main')['v_!'] = ('')
		});
		p5or((p5make_package('main')['v_;'] != null), function () {
			return p5make_package('main')['v_;'] = (p5pkg['Perlito5'].chr([28], 0))
		});
		p5or((p5make_package('main')['v_?'] != null), function () {
			return p5make_package('main')['v_?'] = (0)
		});
		p5or(p5make_package('main')['v_]'], function () {
			return p5make_package('main')['v_]'] = ('5.020000')
		});
		p5or((p5scalar_deref(String.fromCharCode(22), 'Perlito5', "") != null), function () {
			return p5scalar_deref_set(String.fromCharCode(22), (p5pkg['Perlito5'].bless([(new p5HashRef(p5a_to_h(p5list_to_a(['original', 'v5.20.0', 'qv', 1, 'version', (new p5ArrayRef([5, 20, 0]))])))), 'version'], 0)), 'Perlito5')
		});
		// our p5make_package('Perlito5')['v_EXPAND_USE']
		p5make_package('Perlito5')['v_EXPAND_USE'] = (1);
		// our p5make_package('Perlito5')['v_EMIT_USE']
		p5make_package('Perlito5')['v_EMIT_USE'] = (0);
		// our p5make_package('Perlito5')['v_STRICT']
		p5make_package('Perlito5')['v_STRICT'] = (0);
		// our p5make_package('Perlito5')['v_WARNINGS']
		p5make_package('Perlito5')['v_WARNINGS'] = (0);
		// our p5make_package('Perlito5')['v_UTF8']
		p5make_package('Perlito5')['v_UTF8'] = (0);
		// our p5make_package('Perlito5')['v_BYTES']
		p5make_package('Perlito5')['v_BYTES'] = (0);
		// our p5make_package('Perlito5')['v_CALLER']
		p5make_package('Perlito5')['v_CALLER'] = ((new p5ArrayRef([])));
		if (typeof p5pkg[p5make_package('Perlito5')['Hash_DATA_SECTION'] || (p5make_package('Perlito5')['Hash_DATA_SECTION'] = {}), 'Perlito5']['Hash_DATA_SECTION'] == "undefined" ) { p5pkg[p5make_package('Perlito5')['Hash_DATA_SECTION'] || (p5make_package('Perlito5')['Hash_DATA_SECTION'] = {}), 'Perlito5']['Hash_DATA_SECTION'] = {};}
		p5pkg[p5make_package('Perlito5')['Hash_DATA_SECTION'] || (p5make_package('Perlito5')['Hash_DATA_SECTION'] = {}), 'Perlito5']['Hash_DATA_SECTION'] = {};
		// our p5make_package('Perlito5')['v_PKG_NAME']
		p5make_package('Perlito5')['v_PKG_NAME'] = ('');
		// our p5make_package('Perlito5')['v_LINE_NUMBER']
		p5make_package('Perlito5')['v_LINE_NUMBER'] = (0);
		// our p5make_package('Perlito5')['v_FILE_NAME']
		p5make_package('Perlito5')['v_FILE_NAME'] = ('');
		// our p5make_package('Perlito5')['v_BASE_SCOPE']
		p5make_package('Perlito5')['v_BASE_SCOPE'] = (p5call('Perlito5::Grammar::Scope', 'new_base_scope', [], 0));
		// our p5make_package('Perlito5')['v_SCOPE']
		p5make_package('Perlito5')['v_SCOPE'] = (p5make_package('Perlito5')['v_BASE_SCOPE']);
		// our p5make_package('Perlito5')['v_SCOPE_DEPTH']
		p5make_package('Perlito5')['v_SCOPE_DEPTH'] = (0);
		if (typeof p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] == "undefined" ) { p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = [];}
		p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = [];
		// our p5make_package('Perlito5')['v_ID']
		p5make_package('Perlito5')['v_ID'] = (100);
		// our p5make_package('Perlito5')['v_PACKAGES']
		p5make_package('Perlito5')['v_PACKAGES'] = ((new p5HashRef({'STDERR' : 1, 'STDOUT' : 1, 'STDIN' : 1, 'main' : 1, 'strict' : 1, 'warnings' : 1, 'utf8' : 1, 'bytes' : 1, 'encoding' : 1, 'UNIVERSAL' : 1, 'CORE' : 1, 'CORE::GLOBAL' : 1, 'Perlito5::IO' : 1})));
		p5for(p5make_package('main'), "v__", function () {
				p5pkg[p5make_package('main')['List_INC'] || (p5make_package('main')['List_INC'] = []), 'main']['List_INC'].p5push([p5make_package('main')['v__']]);
			}, p5list_to_a([CORE.split([':', p5context([p5or(p5pkg[p5make_package('main')['Hash_ENV'] || (p5make_package('main')['Hash_ENV'] = {}), 'main']['Hash_ENV'].p5hget('PERL5LIB'), function () {
	return ''
})], 0)], 1)]), false, '');
		// our p5make_package('Perlito5')['v_SPECIAL_VAR']
		p5make_package('Perlito5')['v_SPECIAL_VAR'] = ((new p5HashRef(p5a_to_h(p5list_to_a(['$_', 'ARG', '$&', '$MATCH', '$`', '$PREMATCH', '$' + String.fromCharCode(39), '$POSTMATCH', '$+', '$LAST_PAREN_MATCH', '@+', '@LAST_MATCH_END', '%+', '%LAST_PAREN_MATCH', '@-', '@LAST_MATCH_START', '$|', 'autoflush', '$/', '$RS', '@_', '@ARG', '< $', '$EUID', '$.', '$NR', '< $< ', '$UID', '$(', '$GID', '$#', null, '$@', '$EVAL_ERROR', '$=', '$FORMAT_LINES_PER_PAGE', '$,', '$OFS', '$?', '$CHILD_ERROR', '$*', null, '$[', null, '$$', '$PID', '%-', null, '$~', '$FORMAT_NAME', '$-', '$FORMAT_LINES_LEFT', '$&', '$MATCH', '$%', '$FORMAT_PAGE_NUMBER', '$)', '$EGID', '$]', null, '$!', '$ERRNO', '$;', '$SUBSEP', '$' + String.fromCharCode(92), '$ORS', '%!', null, '$"', '$LIST_SEPARATOR', '$_', '$ARG', '$:', 'FORMAT_LINE_BREAK_CHARACTERS'])))));
		// our p5make_package('Perlito5')['v_CORE_OVERRIDABLE']
		p5make_package('Perlito5')['v_CORE_OVERRIDABLE'] = ((new p5HashRef({'say' : 1, 'break' : 1, 'given' : 1, 'when' : 1, 'default' : 1, 'state' : 1, 'lock' : 1})));
		// our p5make_package('Perlito5')['v_CORE_PROTO']
		p5make_package('Perlito5')['v_CORE_PROTO'] = ((new p5HashRef(p5a_to_h(p5list_to_a(['CORE::shutdown', '*$', 'CORE::chop', '_', 'CORE::lstat', '*', 'CORE::rename', '$$', 'CORE::lock', String.fromCharCode(92) + '$', 'CORE::rand', ';$', 'CORE::gmtime', ';$', 'CORE::gethostbyname', '$', 'CORE::each', '+', 'CORE::ref', '_', 'CORE::syswrite', '*$;$$', 'CORE::msgctl', '$$$', 'CORE::getnetbyname', '$', 'CORE::write', ';*', 'CORE::alarm', '_', 'CORE::print', null, 'CORE::getnetent', '', 'CORE::semget', '$$$', 'CORE::use', null, 'CORE::abs', '_', 'CORE::break', '', 'CORE::undef', ';$', 'CORE::no', null, 'CORE::eval', '_', 'CORE::split', null, 'CORE::localtime', ';$', 'CORE::sort', null, 'CORE::chown', '@', 'CORE::endpwent', '', 'CORE::getpwent', '', 'CORE::pos', null, 'CORE::lcfirst', '_', 'CORE::kill', '@', 'CORE::send', '*$$;$', 'CORE::endprotoent', '', 'CORE::semctl', '$$$$', 'CORE::waitpid', '$$', 'CORE::utime', '@', 'CORE::dbmclose', String.fromCharCode(92) + '%', 'CORE::getpwnam', '$', 'CORE::substr', '$$;$$', 'CORE::listen', '*$', 'CORE::getprotoent', '', 'CORE::shmget', '$$$', 'CORE::our', null, 'CORE::readlink', '_', 'CORE::shmwrite', '$$$$', 'CORE::times', '', 'CORE::package', null, 'CORE::map', null, 'CORE::join', '$@', 'CORE::rmdir', '_', 'CORE::shmread', '$$$$', 'CORE::uc', '_', 'CORE::bless', '$;$', 'CORE::closedir', '*', 'CORE::getppid', '', 'CORE::tie', String.fromCharCode(92) + '[$@%]$;@', 'CORE::readdir', '*', 'CORE::gethostent', '', 'CORE::getlogin', '', 'CORE::last', null, 'CORE::gethostbyaddr', '$$', 'CORE::accept', '**', 'CORE::log', '_', 'CORE::tell', ';*', 'CORE::readline', ';*', 'CORE::tied', null, 'CORE::socket', '*$$$', 'CORE::umask', ';$', 'CORE::sysread', '*' + String.fromCharCode(92) + '$$;$', 'CORE::syscall', '$@', 'CORE::quotemeta', '_', 'CORE::dump', '', 'CORE::opendir', '*$', 'CORE::untie', null, 'CORE::truncate', '$$', 'CORE::select', ';*', 'CORE::sleep', ';$', 'CORE::seek', '*$$', 'CORE::read', '*' + String.fromCharCode(92) + '$$;$', 'CORE::rewinddir', '*', 'CORE::scalar', null, 'CORE::wantarray', '', 'CORE::oct', '_', 'CORE::bind', '*$', 'CORE::stat', '*', 'CORE::sqrt', '_', 'CORE::getc', ';*', 'CORE::fileno', '*', 'CORE::getpeername', '*', 'CORE::sin', '_', 'CORE::getnetbyaddr', '$$', 'CORE::grep', null, 'CORE::setservent', '$', 'CORE::sub', null, 'CORE::shmctl', '$$$', 'CORE::study', null, 'CORE::msgrcv', '$$$$$', 'CORE::setsockopt', '*$$$', 'CORE::int', '_', 'CORE::pop', ';+', 'CORE::link', '$$', 'CORE::exec', null, 'CORE::setpwent', '', 'CORE::mkdir', '_;$', 'CORE::sysseek', '*$$', 'CORE::endservent', '', 'CORE::chr', '_', 'CORE::when', null, 'CORE::getpwuid', '$', 'CORE::setprotoent', '$', 'CORE::reverse', '@', 'CORE::say', null, 'CORE::goto', null, 'CORE::getgrent', '', 'CORE::endnetent', '', 'CORE::hex', '_', 'CORE::binmode', '*;$', 'CORE::formline', '$@', 'CORE::getgrnam', '$', 'CORE::ucfirst', '_', 'CORE::chdir', ';$', 'CORE::setnetent', '$', 'CORE::splice', '+;$$@', 'CORE::unlink', '@', 'CORE::time', '', 'CORE::push', '+@', 'CORE::exit', ';$', 'CORE::endgrent', '', 'CORE::unshift', '+@', 'CORE::local', null, 'CORE::my', null, 'CORE::cos', '_', 'CORE::redo', null, 'CORE::warn', '@', 'CORE::getsockname', '*', 'CORE::pipe', '**', 'CORE::sprintf', '$@', 'CORE::open', '*;$@', 'CORE::setpgrp', ';$$', 'CORE::exp', '_', 'CORE::seekdir', '*$', 'CORE::getservbyport', '$$', 'CORE::given', null, 'CORE::pack', '$@', 'CORE::msgget', '$$', 'CORE::rindex', '$$;$', 'CORE::srand', ';$', 'CORE::telldir', '*', 'CORE::connect', '*$', 'CORE::getprotobyname', '$', 'CORE::msgsnd', '$$$', 'CORE::length', '_', 'CORE::state', null, 'CORE::die', '@', 'CORE::delete', null, 'CORE::getservent', '', 'CORE::getservbyname', '$$', 'CORE::setpriority', '$$$', 'CORE::lc', '_', 'CORE::fcntl', '*$$', 'CORE::chroot', '_', 'CORE::recv', '*' + String.fromCharCode(92) + '$$$', 'CORE::dbmopen', String.fromCharCode(92) + '%$$', 'CORE::socketpair', '**$$$', 'CORE::vec', '$$$', 'CORE::system', null, 'CORE::defined', '_', 'CORE::index', '$$;$', 'CORE::caller', ';$', 'CORE::close', ';*', 'CORE::atan2', '$$', 'CORE::semop', '$$', 'CORE::unpack', '$;$', 'CORE::ord', '_', 'CORE::chmod', '@', 'CORE::prototype', null, 'CORE::getprotobynumber', '$', 'CORE::values', '+', 'CORE::chomp', '_', 'CORE::ioctl', '*$$', 'CORE::eof', ';*', 'CORE::crypt', '$$', 'CORE::do', null, 'CORE::flock', '*$', 'CORE::wait', '', 'CORE::sethostent', '$', 'CORE::return', null, 'CORE::getsockopt', '*$$', 'CORE::fork', '', 'CORE::require', null, 'CORE::format', null, 'CORE::readpipe', '_', 'CORE::endhostent', '', 'CORE::getpgrp', ';$', 'CORE::setgrent', '', 'CORE::keys', '+', 'CORE::glob', null, 'CORE::getpriority', '$$', 'CORE::reset', ';$', 'CORE::sysopen', '*$$;$', 'CORE::continue', '', 'CORE::next', null, 'CORE::getgrgid', '$', 'CORE::default', null, 'CORE::shift', ';+', 'CORE::symlink', '$$', 'CORE::exists', '$', 'CORE::printf', '$@', 'CORE::m', null, 'CORE::q', null, 'CORE::qq', null, 'CORE::qw', null, 'CORE::qx', null, 'CORE::qr', null, 'CORE::s', null, 'CORE::tr', null, 'CORE::y', null, 'CORE::if', null, 'CORE::unless', null, 'CORE::when', null, 'CORE::for', null, 'CORE::foreach', null, 'CORE::while', null, 'CORE::given', null, 'CORE::and', null, 'CORE::or', null, 'CORE::xor', null, 'CORE::not', null, 'CORE::cmp', null, 'CORE::__FILE__', '', 'CORE::__LINE__', ''])))));
		p5typeglob_set('Perlito5', 'test_perl_version', (function () {
			var tmp3424;
			tmp3424 = function (List__, p5want) {
				var local_idx = p5LOCAL.length;
				var regex_tmp = p5_regex_capture;
				p5LOCAL.push(function(){ p5_regex_capture = regex_tmp });
				var v_version;
				v_version = (List__.shift());
				(function () {
							var tmp = p5s(v_version, '^v', function () {
								return ''
							}, '', 0);
							v_version = tmp[0];
							return tmp[1];
						})();
				(function () {
						if ( (p5bool(v_version) && (p5pkg['Perlito5'].ord([p5str(v_version).substr(0, 1)], 0) < 10)) ) {
						(function () {
							var List_v = [];
							List_v = p5list_to_a([CORE.split([new RegExp('', ''), v_version], 1)]);
							(function () {
								p5while(function () {
									List_v.p5push([p5pkg['Perlito5'].chr([0], 1)]);
								}, function () {
									return (p5num(List_v.length) < 3)
								}, false, '', 0)
							})();
							v_version = (p5pkg['Perlito5'].sprintf(['%d.%03d%03d'].concat(p5list_to_a([p5map(p5pkg['Perlito5'], function (p5want) {
											return (p5pkg['Perlito5'].ord([p5make_package('main')['v__']], 1));
										}, p5list_to_a([List_v]))])), 0));
						})();
					}
					else {
						(function () {
							var List_v = [];
							List_v = p5list_to_a([CORE.split([new RegExp(String.fromCharCode(92) + '.', ''), v_version], 1)]);
							(function () {
								p5while(function () {
									List_v.p5aset(1, ((p5str(List_v.p5aget(1)) + '0')));
								}, function () {
									return (p5pkg['Perlito5'].length([List_v.p5aget(1)], 0) < 3)
								}, false, '', 0)
							})();
							v_version = (p5pkg['Perlito5'].join(['.'].concat(p5list_to_a([List_v])), 0));
						})();
					}
					})();
				return (function () {
						if ( (p5str(v_version) > p5str(p5make_package('main')['v_]'])) ) {
						return (p5pkg['Perlito5'].die([].concat([('Perl v' + p5str(v_version) + ' required--this is only v' + p5str(p5make_package('main')['v_]']))]), p5want));
					}
					})()
				p5cleanup_local(local_idx, null);
			};
			tmp3424._prototype_ = null;
			return tmp3424
		})());
		1;
	})();
	(function () {
		p5make_package('Perlito5::Compiler');
		// use strict
;
		// use warnings
;
		// use Perlito5::Match
;
		// use Perlito5::Grammar
;
		// use Perlito5::Grammar::Control
;
		// use Perlito5::Grammar::Precedence
;
		// use Perlito5::Grammar::Expression
;
		// use Perlito5::Macro
;
		// use Perlito5::Runtime
;
		1;
	})();
	// use Perlito5::Compiler
;
	(function () {
		null;
		p5make_package('Perlito5::AST::CompUnit');
		p5typeglob_set('Perlito5::AST::CompUnit', 'new', (function () {
			var tmp3425;
			tmp3425 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3425._prototype_ = null;
			return tmp3425
		})());
		p5typeglob_set('Perlito5::AST::CompUnit', 'name', (function () {
			var tmp3426;
			tmp3426 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('name'));
			};
			tmp3426._prototype_ = null;
			return tmp3426
		})());
		p5typeglob_set('Perlito5::AST::CompUnit', 'body', (function () {
			var tmp3427;
			tmp3427 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('body'));
			};
			tmp3427._prototype_ = null;
			return tmp3427
		})());
		p5make_package('Perlito5::AST::Int');
		p5typeglob_set('Perlito5::AST::Int', 'new', (function () {
			var tmp3428;
			tmp3428 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Int'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3428._prototype_ = null;
			return tmp3428
		})());
		p5typeglob_set('Perlito5::AST::Int', 'int', (function () {
			var tmp3429;
			tmp3429 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('int'));
			};
			tmp3429._prototype_ = null;
			return tmp3429
		})());
		p5make_package('Perlito5::AST::Num');
		p5typeglob_set('Perlito5::AST::Num', 'new', (function () {
			var tmp3430;
			tmp3430 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Num'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3430._prototype_ = null;
			return tmp3430
		})());
		p5typeglob_set('Perlito5::AST::Num', 'num', (function () {
			var tmp3431;
			tmp3431 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('num'));
			};
			tmp3431._prototype_ = null;
			return tmp3431
		})());
		p5make_package('Perlito5::AST::Buf');
		p5typeglob_set('Perlito5::AST::Buf', 'new', (function () {
			var tmp3432;
			tmp3432 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Buf'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3432._prototype_ = null;
			return tmp3432
		})());
		p5typeglob_set('Perlito5::AST::Buf', 'buf', (function () {
			var tmp3433;
			tmp3433 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('buf'));
			};
			tmp3433._prototype_ = null;
			return tmp3433
		})());
		p5make_package('Perlito5::AST::Block');
		p5typeglob_set('Perlito5::AST::Block', 'new', (function () {
			var tmp3434;
			tmp3434 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Block'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3434._prototype_ = null;
			return tmp3434
		})());
		p5typeglob_set('Perlito5::AST::Block', 'sig', (function () {
			var tmp3435;
			tmp3435 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('sig'));
			};
			tmp3435._prototype_ = null;
			return tmp3435
		})());
		p5typeglob_set('Perlito5::AST::Block', 'stmts', (function () {
			var tmp3436;
			tmp3436 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('stmts'));
			};
			tmp3436._prototype_ = null;
			return tmp3436
		})());
		p5make_package('Perlito5::AST::Index');
		p5typeglob_set('Perlito5::AST::Index', 'new', (function () {
			var tmp3437;
			tmp3437 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Index'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3437._prototype_ = null;
			return tmp3437
		})());
		p5typeglob_set('Perlito5::AST::Index', 'obj', (function () {
			var tmp3438;
			tmp3438 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('obj'));
			};
			tmp3438._prototype_ = null;
			return tmp3438
		})());
		p5typeglob_set('Perlito5::AST::Index', 'index_exp', (function () {
			var tmp3439;
			tmp3439 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('index_exp'));
			};
			tmp3439._prototype_ = null;
			return tmp3439
		})());
		p5make_package('Perlito5::AST::Lookup');
		p5typeglob_set('Perlito5::AST::Lookup', 'new', (function () {
			var tmp3440;
			tmp3440 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Lookup'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3440._prototype_ = null;
			return tmp3440
		})());
		p5typeglob_set('Perlito5::AST::Lookup', 'obj', (function () {
			var tmp3441;
			tmp3441 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('obj'));
			};
			tmp3441._prototype_ = null;
			return tmp3441
		})());
		p5typeglob_set('Perlito5::AST::Lookup', 'index_exp', (function () {
			var tmp3442;
			tmp3442 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('index_exp'));
			};
			tmp3442._prototype_ = null;
			return tmp3442
		})());
		p5typeglob_set('Perlito5::AST::Lookup', 'autoquote', (function () {
			var tmp3443;
			tmp3443 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.shift());
					var v_index;
					v_index = (List__.shift());
					(function () {
						if ( (p5bool(p5call(v_index, 'isa', ['Perlito5::AST::Apply'], 0)) && p5bool((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('bareword'))) ) {
						(function () {
							var v_full_name;
							v_full_name = ((p5str(( p5bool((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('namespace')) ? (p5str((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('namespace')) + '::') : '')) + p5str((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('code'))));
							(function () {
								if ( !( (p5make_package('Perlito5')['v_PROTO'])._hash_.hasOwnProperty(v_full_name)) ) {
								throw(p5call('Perlito5::AST::Buf', 'new', ['buf', v_full_name], p5want));
							}
							})();
						})();
					}
					else (function () {
						if ( (p5bool(p5call(v_index, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_index, 'code', [], 0)) == 'prefix:<->') || (p5str(p5call(v_index, 'code', [], 0)) == 'prefix:<+>'))) ) {
						(function () {
							var v_arg;
							v_arg = (p5call(v_index, 'arguments', [], p5want)._array_.p5aget(0));
							p5and(v_arg, function () {
								throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', p5call(v_index, 'code', [], 1), 'namespace', p5call(v_index, 'namespace', [], 1), 'arguments', (new p5ArrayRef(p5list_to_a([p5call(v_self, 'autoquote', [v_arg], 1)])))]), p5want))
							});
						})();
					}
					else (function () {
						if ( (p5bool(p5call(v_index, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_index, 'code', [], 0)) == 'list:<,>')) ) {
						(function () {
							var v_obj;
							v_obj = (p5call(v_self, 'obj', [], 0));
							(function () {
								if ( (p5str(p5call(v_obj, 'sigil', [], 0)) == '@') ) {
								throw(p5context([v_index], p5want));
							}
							})();
							var v_args;
							v_args = (p5call(v_index, 'arguments', [], 0));
							throw(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'join', 'namespace', '', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Var', 'new', ['name', ';', 'namespace', '', 'sigil', '$'], 1), p5map(p5pkg['Perlito5::AST::Lookup'], function (p5want) {
	return (( (p5make_package('main')['v__'] != null) ? p5make_package('main')['v__'] : p5call('Perlito5::AST::Buf', 'new', ['buf', ''], 1)));
}, p5list_to_a([p5array_deref((v_args || (v_args = new p5ArrayRef([]))), 'Perlito5::AST::Lookup')]))])))]), p5want));
						})();
					}
					})()
					})()
					})();
					return (p5context([v_index], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3443._prototype_ = null;
			return tmp3443
		})());
		p5make_package('Perlito5::AST::Var');
		p5typeglob_set('Perlito5::AST::Var', 'new', (function () {
			var tmp3444;
			tmp3444 = function (List__, p5want) {
				var v_class;
				var Hash_args = {};
				var tmp3445 = p5list_to_a([List__]);
					v_class = tmp3445.shift();
					Hash_args = p5a_to_h(tmp3445);
					tmp3445 = [];
				var v_var;
				v_var = (p5pkg['Perlito5::AST::Var'].bless([(new p5HashRef(Hash_args)), v_class], 0));
				p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'].p5push([v_var]);
				return (p5context([v_var], p5want));
			};
			tmp3444._prototype_ = null;
			return tmp3444
		})());
		p5typeglob_set('Perlito5::AST::Var', 'sigil', (function () {
			var tmp3446;
			tmp3446 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('sigil'));
			};
			tmp3446._prototype_ = null;
			return tmp3446
		})());
		p5typeglob_set('Perlito5::AST::Var', 'namespace', (function () {
			var tmp3447;
			tmp3447 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('namespace'));
			};
			tmp3447._prototype_ = null;
			return tmp3447
		})());
		p5typeglob_set('Perlito5::AST::Var', 'name', (function () {
			var tmp3448;
			tmp3448 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('name'));
			};
			tmp3448._prototype_ = null;
			return tmp3448
		})());
		p5typeglob_set('Perlito5::AST::Var', 'plain_name', (function () {
			var tmp3449;
			tmp3449 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.shift());
					(function () {
						if ( p5bool(p5call(v_self, 'namespace', [], 0)) ) {
						throw(p5context([(p5str(p5call(v_self, 'namespace', [], 0)) + '::' + p5str(p5call(v_self, 'name', [], 0)))], p5want));
					}
					})();
					return (p5call(v_self, 'name', [], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3449._prototype_ = null;
			return tmp3449
		})());
		p5make_package('Perlito5::AST::Call');
		p5typeglob_set('Perlito5::AST::Call', 'new', (function () {
			var tmp3450;
			tmp3450 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Call'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3450._prototype_ = null;
			return tmp3450
		})());
		p5typeglob_set('Perlito5::AST::Call', 'invocant', (function () {
			var tmp3451;
			tmp3451 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('invocant'));
			};
			tmp3451._prototype_ = null;
			return tmp3451
		})());
		p5typeglob_set('Perlito5::AST::Call', 'method', (function () {
			var tmp3452;
			tmp3452 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('method'));
			};
			tmp3452._prototype_ = null;
			return tmp3452
		})());
		p5typeglob_set('Perlito5::AST::Call', 'arguments', (function () {
			var tmp3453;
			tmp3453 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('arguments'));
			};
			tmp3453._prototype_ = null;
			return tmp3453
		})());
		p5make_package('Perlito5::AST::Apply');
		p5typeglob_set('Perlito5::AST::Apply', 'new', (function () {
			var tmp3454;
			tmp3454 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Apply'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3454._prototype_ = null;
			return tmp3454
		})());
		p5typeglob_set('Perlito5::AST::Apply', 'code', (function () {
			var tmp3455;
			tmp3455 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('code'));
			};
			tmp3455._prototype_ = null;
			return tmp3455
		})());
		p5typeglob_set('Perlito5::AST::Apply', 'special_arg', (function () {
			var tmp3456;
			tmp3456 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('special_arg'));
			};
			tmp3456._prototype_ = null;
			return tmp3456
		})());
		p5typeglob_set('Perlito5::AST::Apply', 'arguments', (function () {
			var tmp3457;
			tmp3457 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('arguments'));
			};
			tmp3457._prototype_ = null;
			return tmp3457
		})());
		p5typeglob_set('Perlito5::AST::Apply', 'namespace', (function () {
			var tmp3458;
			tmp3458 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('namespace'));
			};
			tmp3458._prototype_ = null;
			return tmp3458
		})());
		p5make_package('Perlito5::AST::If');
		p5typeglob_set('Perlito5::AST::If', 'new', (function () {
			var tmp3459;
			tmp3459 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::If'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3459._prototype_ = null;
			return tmp3459
		})());
		p5typeglob_set('Perlito5::AST::If', 'cond', (function () {
			var tmp3460;
			tmp3460 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('cond'));
			};
			tmp3460._prototype_ = null;
			return tmp3460
		})());
		p5typeglob_set('Perlito5::AST::If', 'body', (function () {
			var tmp3461;
			tmp3461 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('body'));
			};
			tmp3461._prototype_ = null;
			return tmp3461
		})());
		p5typeglob_set('Perlito5::AST::If', 'otherwise', (function () {
			var tmp3462;
			tmp3462 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('otherwise'));
			};
			tmp3462._prototype_ = null;
			return tmp3462
		})());
		p5make_package('Perlito5::AST::When');
		p5typeglob_set('Perlito5::AST::When', 'new', (function () {
			var tmp3463;
			tmp3463 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::When'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3463._prototype_ = null;
			return tmp3463
		})());
		p5typeglob_set('Perlito5::AST::When', 'cond', (function () {
			var tmp3464;
			tmp3464 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('cond'));
			};
			tmp3464._prototype_ = null;
			return tmp3464
		})());
		p5typeglob_set('Perlito5::AST::When', 'body', (function () {
			var tmp3465;
			tmp3465 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('body'));
			};
			tmp3465._prototype_ = null;
			return tmp3465
		})());
		p5make_package('Perlito5::AST::While');
		p5typeglob_set('Perlito5::AST::While', 'new', (function () {
			var tmp3466;
			tmp3466 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::While'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3466._prototype_ = null;
			return tmp3466
		})());
		p5typeglob_set('Perlito5::AST::While', 'init', (function () {
			var tmp3467;
			tmp3467 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('init'));
			};
			tmp3467._prototype_ = null;
			return tmp3467
		})());
		p5typeglob_set('Perlito5::AST::While', 'cond', (function () {
			var tmp3468;
			tmp3468 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('cond'));
			};
			tmp3468._prototype_ = null;
			return tmp3468
		})());
		p5typeglob_set('Perlito5::AST::While', 'continue', (function () {
			var tmp3469;
			tmp3469 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('continue'));
			};
			tmp3469._prototype_ = null;
			return tmp3469
		})());
		p5typeglob_set('Perlito5::AST::While', 'body', (function () {
			var tmp3470;
			tmp3470 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('body'));
			};
			tmp3470._prototype_ = null;
			return tmp3470
		})());
		p5make_package('Perlito5::AST::For');
		p5typeglob_set('Perlito5::AST::For', 'new', (function () {
			var tmp3471;
			tmp3471 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::For'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3471._prototype_ = null;
			return tmp3471
		})());
		p5typeglob_set('Perlito5::AST::For', 'cond', (function () {
			var tmp3472;
			tmp3472 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('cond'));
			};
			tmp3472._prototype_ = null;
			return tmp3472
		})());
		p5typeglob_set('Perlito5::AST::For', 'continue', (function () {
			var tmp3473;
			tmp3473 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('continue'));
			};
			tmp3473._prototype_ = null;
			return tmp3473
		})());
		p5typeglob_set('Perlito5::AST::For', 'body', (function () {
			var tmp3474;
			tmp3474 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('body'));
			};
			tmp3474._prototype_ = null;
			return tmp3474
		})());
		p5typeglob_set('Perlito5::AST::For', 'topic', (function () {
			var tmp3475;
			tmp3475 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('topic'));
			};
			tmp3475._prototype_ = null;
			return tmp3475
		})());
		p5make_package('Perlito5::AST::Given');
		p5typeglob_set('Perlito5::AST::Given', 'new', (function () {
			var tmp3476;
			tmp3476 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Given'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3476._prototype_ = null;
			return tmp3476
		})());
		p5typeglob_set('Perlito5::AST::Given', 'cond', (function () {
			var tmp3477;
			tmp3477 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('cond'));
			};
			tmp3477._prototype_ = null;
			return tmp3477
		})());
		p5typeglob_set('Perlito5::AST::Given', 'body', (function () {
			var tmp3478;
			tmp3478 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('body'));
			};
			tmp3478._prototype_ = null;
			return tmp3478
		})());
		p5make_package('Perlito5::AST::Decl');
		p5typeglob_set('Perlito5::AST::Decl', 'new', (function () {
			var tmp3479;
			tmp3479 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Decl'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3479._prototype_ = null;
			return tmp3479
		})());
		p5typeglob_set('Perlito5::AST::Decl', 'decl', (function () {
			var tmp3480;
			tmp3480 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('decl'));
			};
			tmp3480._prototype_ = null;
			return tmp3480
		})());
		p5typeglob_set('Perlito5::AST::Decl', 'type', (function () {
			var tmp3481;
			tmp3481 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('type'));
			};
			tmp3481._prototype_ = null;
			return tmp3481
		})());
		p5typeglob_set('Perlito5::AST::Decl', 'var', (function () {
			var tmp3482;
			tmp3482 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('var'));
			};
			tmp3482._prototype_ = null;
			return tmp3482
		})());
		p5typeglob_set('Perlito5::AST::Decl', 'attributes', (function () {
			var tmp3483;
			tmp3483 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('attributes'));
			};
			tmp3483._prototype_ = null;
			return tmp3483
		})());
		p5make_package('Perlito5::AST::Sub');
		p5typeglob_set('Perlito5::AST::Sub', 'new', (function () {
			var tmp3484;
			tmp3484 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Sub'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3484._prototype_ = null;
			return tmp3484
		})());
		p5typeglob_set('Perlito5::AST::Sub', 'name', (function () {
			var tmp3485;
			tmp3485 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('name'));
			};
			tmp3485._prototype_ = null;
			return tmp3485
		})());
		p5typeglob_set('Perlito5::AST::Sub', 'sig', (function () {
			var tmp3486;
			tmp3486 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('sig'));
			};
			tmp3486._prototype_ = null;
			return tmp3486
		})());
		p5typeglob_set('Perlito5::AST::Sub', 'block', (function () {
			var tmp3487;
			tmp3487 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('block'));
			};
			tmp3487._prototype_ = null;
			return tmp3487
		})());
		p5typeglob_set('Perlito5::AST::Sub', 'attributes', (function () {
			var tmp3488;
			tmp3488 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('attributes'));
			};
			tmp3488._prototype_ = null;
			return tmp3488
		})());
		p5make_package('Perlito5::AST::Use');
		p5typeglob_set('Perlito5::AST::Use', 'new', (function () {
			var tmp3489;
			tmp3489 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::AST::Use'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3489._prototype_ = null;
			return tmp3489
		})());
		p5typeglob_set('Perlito5::AST::Use', 'mod', (function () {
			var tmp3490;
			tmp3490 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('mod'));
			};
			tmp3490._prototype_ = null;
			return tmp3490
		})());
		p5typeglob_set('Perlito5::AST::Use', 'code', (function () {
			var tmp3491;
			tmp3491 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('code'));
			};
			tmp3491._prototype_ = null;
			return tmp3491
		})());
		1;
	})();
	(function () {
		null;
		// use Perlito5::AST
;
		// use strict
;
		p5make_package('Perlito5::CompileTime');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::CompileTime', 'emit_compile_time_block', (function () {
					var tmp3492;
					tmp3492 = function (List__, p5want) {
						var v_block;
						v_block = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::CompileTime'], function (p5want) {
	return (p5and((p5make_package('main')['v__'] != null), function () {
		return p5call(p5make_package('main')['v__'], 'emit_compile_time', [], 1)
	}));
}, p5list_to_a([p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::CompileTime')]))]))));
					};
					tmp3492._prototype_ = null;
					return tmp3492
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_compile_time', (function () {
					var tmp3493;
					tmp3493 = function (List__, p5want) {
						var v_self;
						(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('body', (p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]), 0)));
						return (p5context([v_self], p5want));
					};
					tmp3493._prototype_ = null;
					return tmp3493
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_compile_time_program', (function () {
					var tmp3494;
					tmp3494 = function (List__, p5want) {
						var v_comp_units;
						v_comp_units = (List__.p5aget(0));
						return (p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
									return (p5call(p5make_package('main')['v__'], 'emit_compile_time', [], p5want));
								}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')])));
					};
					tmp3494._prototype_ = null;
					return tmp3494
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_compile_time', (function () {
					var tmp3495;
					tmp3495 = function (List__, p5want) {
						return (p5call(List__.p5aget(0), 'emit_perl5', [], p5want));
					};
					tmp3495._prototype_ = null;
					return tmp3495
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_compile_time', (function () {
					var tmp3496;
					tmp3496 = function (List__, p5want) {
						return (p5call(List__.p5aget(0), 'emit_perl5', [], p5want));
					};
					tmp3496._prototype_ = null;
					return tmp3496
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_compile_time', (function () {
					var tmp3497;
					tmp3497 = function (List__, p5want) {
						return (p5call(List__.p5aget(0), 'emit_perl5', [], p5want));
					};
					tmp3497._prototype_ = null;
					return tmp3497
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_compile_time', (function () {
					var tmp3498;
					tmp3498 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var List_out = [];
						p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
						(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(p5list_to_a(['keyword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')]))), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 1)])))]));
							}
							else {
								List_out.p5push(p5list_to_a([p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 1)]));
							}
							})();
						(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
						return ((p5want ? List_out : List_out.length));
					};
					tmp3498._prototype_ = null;
					return tmp3498
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_compile_time', (function () {
					var tmp3499;
					tmp3499 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$') || (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@')))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_compile_time', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_compile_time', [], 1)]))));
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_compile_time', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_compile_time', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_compile_time', [], 1)])))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_compile_time', [], 1)])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3499._prototype_ = null;
					return tmp3499
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_compile_time', (function () {
					var tmp3500;
					tmp3500 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$') || (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@')))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_compile_time', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_compile_time', [], 1)]))));
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_compile_time', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_compile_time', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_compile_time', [], 1)])))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_compile_time', [], 1)])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3500._prototype_ = null;
					return tmp3500
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Var', 'emit_compile_time', (function () {
					var tmp3501;
					tmp3501 = function (List__, p5want) {
						var v_self;
						(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_decl')) == 'my') ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('_decl', ('global'));
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('namespace', ('MY'));
							}
							})();
						return (p5context([v_self], p5want));
					};
					tmp3501._prototype_ = null;
					return tmp3501
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_compile_time', (function () {
					var tmp3502;
					tmp3502 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_compile_time', [], 0));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_compile_time', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_compile_time', [], 1)])))]))));
							}
							})();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								(function () {
									if ( (((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '&')) || ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('code')) == 'prefix:<&>'))) ) {
									throw((new p5ArrayRef(p5list_to_a(['apply', '(', v_invocant, p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_compile_time', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))]))));
								}
								})();
								v_meth = ('');
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_compile_time', [], 0));
							}
							})();
							(function () {
								if ( p5bool(v_meth) ) {
								throw((new p5ArrayRef(p5list_to_a(['call', v_invocant, v_meth, p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_compile_time', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'list:<,>', p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_compile_time', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3502._prototype_ = null;
					return tmp3502
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Apply', 'emit_compile_time_args', (function () {
					var tmp3503;
					tmp3503 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							p5and(!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'))), function () {
								throw(p5context([], p5want))
							});
							return (p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
									return (p5call(p5make_package('main')['v__'], 'emit_compile_time', [], p5want));
								}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')])));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3503._prototype_ = null;
					return tmp3503
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_compile_time', (function () {
					var tmp3504;
					tmp3504 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( p5bool(p5pkg['Perlito5::AST::Apply'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')], 0)) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), 'emit_compile_time', [], 1), p5call(v_self, 'emit_compile_time_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'infix:<=>>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0), 'emit_compile_time', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_compile_time', [], 1)]))));
							}
							})();
							(function () {
								if ( p5bool(p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'].p5hget(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')))) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), p5call(v_self, 'emit_compile_time_args', [], 1)]))));
							}
							})();
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
							}
							})();
							var v_code;
							v_code = ((p5str(v_ns) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'))));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:s') ) {
								throw(p5context([('s!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(2)._hash_.p5hget('buf')))], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:m') ) {
								(function () {
									var v_s;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										v_s = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										(function () {
											var v_ast;
											(function(){ var v_ast; p5for_lex(function (v) { v_ast = v }, function () {
													(function () {
														if ( p5bool(p5call(v_ast, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
														(v_s = ((p5str(v_s) + p5str((v_ast || (v_ast = new p5HashRef({})))._hash_.p5hget('buf')))));
													}
													else {
														(v_s = ((p5str(v_s) + p5str(p5call(v_ast, 'emit_compile_time', [], 0)))));
													}
													})();
												}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '') })()
										})();
									}
									})();
									throw(p5context([('m!' + p5str(v_s) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')))], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:tr') ) {
								throw(p5context([('tr!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'package') ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt', 'package', (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')])))]))));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'map') || ((p5str(v_code) == 'grep') || (p5str(v_code) == 'sort'))) ) {
								(function () {
									if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
									throw((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str(v_code) + '>'), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_compile_time', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('special_arg')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Apply')]))]))), (new p5ArrayRef(p5list_to_a(['op', 'list:<,>', p5call(v_self, 'emit_compile_time_args', [], 1)])))]))));
								}
								})();
								throw((new p5ArrayRef(p5list_to_a(['apply', '(', v_code, p5call(v_self, 'emit_compile_time_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (((p5str(v_code) == 'eval') || (p5str(v_code) == 'do')) && (p5pkg['Perlito5::AST::Apply'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)], 0) == 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str(v_code) + '>'), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_compile_time', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'readline') ) {
								throw((new p5ArrayRef(p5list_to_a(['paren', '<', p5call(v_self, 'emit_compile_time_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) && !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))))) ) {
								throw((new p5ArrayRef(['bareword', v_code])));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['apply', '(', v_code, p5call(v_self, 'emit_compile_time_args', [], 1)]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3504._prototype_ = null;
					return tmp3504
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_compile_time', (function () {
					var tmp3505;
					tmp3505 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'if', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')) && (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')], 0) != 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'unless', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)])))]))));
							}
							})();
							var List_out = [];
							List_out = p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'if'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)]))), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]);
							var v_otherwise;
							v_otherwise = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'));
							(function () {
								p5while(function () {
									List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'elsif'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('cond'), 'emit_compile_time', [], 1)]))), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget_hash('body')._hash_.p5hget('stmts')]), 1)])))]));
									v_otherwise = ((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('otherwise'));
								}, function () {
									return p5and(v_otherwise, function () {
										return p5and((p5num(p5num(p5array_deref((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts'), 'Perlito5::AST::If'))) == 1), function () {
											return p5and((p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget(0)], 0) == 'Perlito5::AST::If'), function () {
												return p5context([p5and((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('body'), function () {
													return (p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('body')], 0) == 'Perlito5::AST::Block')
												})], 0)
											})
										})
									})
								}, false, '', 0)
							})();
							p5and(!( (p5bool(v_otherwise) && p5bool((p5num(p5array_deref(p5call(v_otherwise, 'stmts', [], p5want), 'Perlito5::AST::If')))))), function () {
								throw((p5want ? List_out : List_out.length))
							});
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'else'])), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([p5call(v_otherwise, 'stmts', [], 1)]), 1)])))]));
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3505._prototype_ = null;
					return tmp3505
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_compile_time', (function () {
					var tmp3506;
					tmp3506 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'when'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)]))), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)]))));
					};
					tmp3506._prototype_ = null;
					return tmp3506
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_compile_time', (function () {
					var tmp3507;
					tmp3507 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_out = [];
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw(p5context([(p5want ? List_out : List_out.length), (new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'while'])), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)])))])))], p5want));
							}
							})();
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'while'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)]))), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::While')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3507._prototype_ = null;
					return tmp3507
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_compile_time', (function () {
					var tmp3508;
					tmp3508 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_out = [];
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw(p5context([(p5want ? List_out : List_out.length), (new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_compile_time', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'for', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)])))])))], p5want));
							}
							})();
							var v_cond;
							(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								v_cond = ((new p5ArrayRef(p5list_to_a(['paren_semicolon', '(', ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_compile_time', [], 1) : (new p5ArrayRef([]))), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), 'emit_compile_time', [], 1) : (new p5ArrayRef([]))), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_compile_time', [], 1) : (new p5ArrayRef([])))]))));
							}
							else {
								v_cond = ((new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_compile_time', [], 1)]))));
							}
							})();
							var List_sig = [];
							var v_sig_ast;
							v_sig_ast = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'));
							(function () {
								if ( !( p5bool(v_sig_ast)) ) {}
							else {
								List_sig = p5list_to_a([p5call(v_sig_ast, 'emit_compile_time', [], 1)]);
							}
							})();
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'for'])), List_sig, v_cond, p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::For')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3508._prototype_ = null;
					return tmp3508
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_compile_time', (function () {
					var tmp3509;
					tmp3509 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_compile_time', [], p5want));
					};
					tmp3509._prototype_ = null;
					return tmp3509
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_compile_time', (function () {
					var tmp3510;
					tmp3510 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_parts = [];
							p5and(((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig') != null), function () {
								return List_parts.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['paren', '(', (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig')])))])))]))
							});
							p5and(((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('block') != null), function () {
								return List_parts.p5push(p5list_to_a([p5pkg['Perlito5::CompileTime'].emit_compile_time_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget('stmts')]), 1)]))
							});
							p5and(!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'))), function () {
								throw((new p5ArrayRef(p5list_to_a(['op', 'prefix:<sub>', List_parts]))))
							});
							return ((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'sub'])), (new p5ArrayRef(['bareword', (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')))])), List_parts]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3510._prototype_ = null;
					return tmp3510
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_compile_time', (function () {
					var tmp3511;
					tmp3511 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
							return (function () {
								if ( p5bool(p5make_package('Perlito5')['v_EMIT_USE']) ) {
								(function () {
									throw((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'use'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')])))]))))
								})()
							}
							else {
								(function () {
									throw((new p5ArrayRef(['comment', ('# ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')))])))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3511._prototype_ = null;
					return tmp3511
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::CompileTime::Emitter
;
	(function () {
		p5make_package('Perlito5::CompileTime::Dumper');
		// use strict
;
		p5typeglob_set('Perlito5::CompileTime::Dumper', 'generate_eval_string', (function () {
			var tmp3512;
			tmp3512 = function (List__, p5want) {
				var v_source;
				var tmp3513 = p5list_to_a([List__]);
					v_source = tmp3513.shift();
				var v_m;
				v_m = (p5pkg['Perlito5::Grammar'].exp_stmts([v_source, 0], 0));
				var v_block;
				v_block = (p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', p5pkg['Perlito5::Match'].flat([v_m], 1)]), 0));
				var List_data = [];
				List_data = p5list_to_a([p5call(v_block, 'emit_perl5', [], 1)]);
				var v_out;
				v_out = ((new p5ArrayRef([])));
				p5pkg['Perlito5::Perl5::PrettyPrinter'].pretty_print(p5list_to_a([(new p5ArrayRef(List_data)), 0, v_out]), null);
				var v_source_new;
				p5list_to_a([(v_source_new = (p5pkg['Perlito5::CompileTime::Dumper'].join([''].concat(p5list_to_a([p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper')])), 0))), ';1' + String.fromCharCode(10)]);
				return (p5context([v_source_new], p5want));
			};
			tmp3512._prototype_ = null;
			return tmp3512
		})());
		p5typeglob_set('Perlito5::CompileTime::Dumper', '_dumper', (function () {
			var tmp3514;
			tmp3514 = function (List__, p5want) {
				try {
					var v_obj;
					var v_tab;
					var v_seen;
					var v_pos;
					var tmp3515 = p5list_to_a([List__]);
					v_obj = tmp3515.shift();
					v_tab = tmp3515.shift();
					v_seen = tmp3515.shift();
					v_pos = tmp3515.shift();
					p5and(!( (v_obj != null)), function () {
						throw(p5context(['undef'], p5want))
					});
					var v_ref;
					v_ref = (p5pkg['Perlito5::CompileTime::Dumper'].ref([v_obj], 0));
					p5and(!( p5bool(v_ref)), function () {
						throw(p5pkg['Perlito5::Dumper'].escape_string([v_obj], p5want))
					});
					var v_as_string;
					v_as_string = (v_obj);
					p5and((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_as_string)), function () {
						throw((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_as_string)))
					});
					(v_seen || (v_seen = new p5HashRef({})))._hash_.p5hset(p5str(v_as_string), (v_pos));
					var v_tab1;
					v_tab1 = ((p5str(v_tab) + '    '));
					(function () {
						if ( (p5str(v_ref) == 'ARRAY') ) {
						(function () {
							p5or(p5num(p5array_deref((v_obj || (v_obj = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper')), function () {
								throw(p5context(['[]'], p5want))
							});
							var List_out = [];
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_here;
										v_here = ((p5str(v_pos) + '->[' + p5str(v_i) + ']'));
										List_out.p5push(p5list_to_a([v_tab1, p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([(v_obj || (v_obj = new p5ArrayRef([])))._array_.p5aget(p5num(v_i)), v_tab1, v_seen, v_here]), 1), ',' + String.fromCharCode(10)]));
									}, p5list_to_a([p5range(0, (p5array_deref((v_obj || (v_obj = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').length - 1), 1, "tmp3516", 0)]), false, '') })()
							})();
							throw(p5context([p5pkg['Perlito5::CompileTime::Dumper'].join([''].concat(p5list_to_a(['[' + String.fromCharCode(10), List_out, v_tab, ']'])), p5want)], p5want));
						})();
					}
					else (function () {
						if ( (p5str(v_ref) == 'HASH') ) {
						(function () {
							p5or(p5pkg['Perlito5::CompileTime::Dumper'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::CompileTime::Dumper')], 0), function () {
								throw(p5context(['{}'], p5want))
							});
							var List_out = [];
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_here;
										v_here = ((p5str(v_pos) + '->{' + p5str(v_i) + '}'));
										List_out.p5push(p5list_to_a([v_tab1, (String.fromCharCode(39) + p5str(v_i) + String.fromCharCode(39) + ' => '), p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([(v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget(p5str(v_i)), v_tab1, v_seen, v_here]), 1), ',' + String.fromCharCode(10)]));
									}, p5list_to_a([p5sort(p5pkg['Perlito5::CompileTime::Dumper'], function (p5want) {
										return (p5cmp(p5str(p5make_package('Perlito5::CompileTime::Dumper')['v_a']), p5str(p5make_package('Perlito5::CompileTime::Dumper')['v_b'])));
									}, p5list_to_a([p5pkg['Perlito5::CompileTime::Dumper'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::CompileTime::Dumper')], 1)]))]), false, '') })()
							})();
							throw(p5context([p5pkg['Perlito5::CompileTime::Dumper'].join([''].concat(p5list_to_a(['{' + String.fromCharCode(10), List_out, v_tab, '}'])), p5want)], p5want));
						})();
					}
					else (function () {
						if ( ((p5str(v_ref) == 'SCALAR') || (p5str(v_ref) == 'REF')) ) {
						throw(p5context([(String.fromCharCode(92) + p5str(p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([p5scalar_deref(v_obj, 'Perlito5::CompileTime::Dumper', ""), v_tab1, v_seen, v_pos]), 0)))], p5want));
					}
					else (function () {
						if ( (p5str(v_ref) == 'CODE') ) {
						(function () {
							var v_closure_flag;
							v_closure_flag = (p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({})), 'Perlito5::dump'], 0));
							var v_captures;
							v_captures = (p5defined_or((v_obj)([v_closure_flag], 0), function () {
										return (new p5HashRef({}))
									}));
							var List_vars = [];
							(function () {
								var v_var;
								(function(){ var v_var; p5for_lex(function (v) { v_var = v }, function () {
										List_vars.p5push([('my ' + p5str(v_var) + ' = ' + p5str(p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([(v_captures || (v_captures = new p5HashRef({})))._hash_.p5hget(p5str(v_var)), v_tab1, v_seen, v_pos]), 0)) + '; ')]);
									}, p5list_to_a([p5pkg['Perlito5::CompileTime::Dumper'].keys([p5hash_deref((v_captures || (v_captures = new p5HashRef({}))), 'Perlito5::CompileTime::Dumper')], 1)]), false, '') })()
							})();
							throw(p5context([p5pkg['Perlito5::CompileTime::Dumper'].join([''].concat(p5list_to_a(['do { ', List_vars, 'sub { "DUMMY" } ', '}'])), p5want)], p5want));
						})();
					}
					})()
					})()
					})()
					})();
					var List_out = [];
					(function () {
						var v_i;
						(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
								var v_here;
								v_here = ((p5str(v_pos) + '->{' + p5str(v_i) + '}'));
								List_out.p5push(p5list_to_a([v_tab1, (String.fromCharCode(39) + p5str(v_i) + String.fromCharCode(39) + ' => '), p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([(v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget(p5str(v_i)), v_tab1, v_seen, v_here]), 1), ',' + String.fromCharCode(10)]));
							}, p5list_to_a([p5sort(p5pkg['Perlito5::CompileTime::Dumper'], function (p5want) {
								return (p5cmp(p5str(p5make_package('Perlito5::CompileTime::Dumper')['v_a']), p5str(p5make_package('Perlito5::CompileTime::Dumper')['v_b'])));
							}, p5list_to_a([p5pkg['Perlito5::CompileTime::Dumper'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::CompileTime::Dumper')], 1)]))]), false, '') })()
					})();
					return (p5context([p5pkg['Perlito5::CompileTime::Dumper'].join([''].concat(p5list_to_a(['bless({' + String.fromCharCode(10), List_out, v_tab, ('}, ' + String.fromCharCode(39) + p5str(v_ref) + String.fromCharCode(39) + ')')])), p5want)], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3514._prototype_ = null;
			return tmp3514
		})());
		p5typeglob_set('Perlito5::CompileTime::Dumper', '_dump_global', (function () {
			var tmp3517;
			tmp3517 = function (List__, p5want) {
				try {
					var v_item;
					var v_seen;
					var v_dumper_seen;
					var v_vars;
					var v_tab;
					var tmp3518 = p5list_to_a([List__]);
					v_item = tmp3518.shift();
					v_seen = tmp3518.shift();
					v_dumper_seen = tmp3518.shift();
					v_vars = tmp3518.shift();
					v_tab = tmp3518.shift();
					var v_n;
					v_n = ((p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('namespace')) + '::' + p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('name'))));
					return (function () {
						if ( !( p5bool((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_n)))) ) {
						(function () {
							if ( (p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) == '$') ) {
							p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + (p5str(v_n) + ' = ') + p5str(p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([(function () {
	var p5want = 1;
	var r;
	p5pkg["main"]["v_@"] = "";
	var p5strict = p5pkg["Perlito5"]["v_STRICT"];
	p5pkg["Perlito5"]["v_STRICT"] = 1;
	try {
		r = eval(p5pkg["Perlito5::Javascript2::Runtime"].perl5_to_js([p5str(v_n), 'Perlito5::CompileTime::Dumper', 'list', (new p5ArrayRef(p5list_to_a([(new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 591, '_namespace' : 'Perlito5::Grammar::Scope', 'name' : 'Special_var', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 587, '_namespace' : 'Perlito5', 'name' : 'CORE_PROTO', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 586, '_namespace' : 'Perlito5', 'name' : 'CORE_OVERRIDABLE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 585, '_namespace' : 'Perlito5', 'name' : 'SPECIAL_VAR', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', '_real_sigil' : '%', 'name' : 'ENV', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : 'INC', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 584, '_namespace' : 'Perlito5', 'name' : 'PACKAGES', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 583, '_namespace' : 'Perlito5', 'name' : 'ID', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 582, '_namespace' : 'Perlito5', 'name' : 'SCOPE_STMT', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 581, '_namespace' : 'Perlito5', 'name' : 'SCOPE_DEPTH', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 579, '_namespace' : 'Perlito5', 'name' : 'BASE_SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 580, '_namespace' : 'Perlito5', 'name' : 'SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 579, '_namespace' : 'Perlito5', 'name' : 'BASE_SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 578, '_namespace' : 'Perlito5', 'name' : 'FILE_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 577, '_namespace' : 'Perlito5', 'name' : 'LINE_NUMBER', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 576, '_namespace' : 'Perlito5', 'name' : 'PKG_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 575, '_namespace' : 'Perlito5', 'name' : 'DATA_SECTION', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 574, '_namespace' : 'Perlito5', 'name' : 'CALLER', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 573, '_namespace' : 'Perlito5', 'name' : 'BYTES', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 572, '_namespace' : 'Perlito5', 'name' : 'UTF8', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 571, '_namespace' : 'Perlito5', 'name' : 'WARNINGS', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 570, '_namespace' : 'Perlito5', 'name' : 'STRICT', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 569, '_namespace' : 'Perlito5', 'name' : 'EMIT_USE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 568, '_namespace' : 'Perlito5', 'name' : 'EXPAND_USE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ']', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ']', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '?', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '?', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ';', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ';', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '!', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '!', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ',', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ',', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '"', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '"', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '/', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '/', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 339, 'name' : 'Op_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 338, 'name' : 'Op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 337, 'name' : 'End_token_chars', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 336, 'name' : 'End_token', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 333, 'name' : 'Term', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 332, 'name' : 'Term_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 331, 'name' : 'Parsed_op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 330, 'name' : 'Parsed_op_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 323, 'name' : 'Assoc', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 322, 'name' : 'PrefixPrecedence', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 321, 'name' : 'Precedence', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 320, 'name' : 'Operator', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 114, 'name' : 'copyright_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 113, 'name' : 'help_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 111, 'name' : 'wrapper_priority', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 110, 'name' : 'wrapper_end', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 109, 'name' : 'wrapper_begin', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 108, 'name' : 'bootstrapping', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 107, 'name' : 'boilerplate', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 106, 'name' : 'expand_use', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 105, 'name' : 'verbose', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 100, 'name' : '_V5_COMPILER_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 705, 'name' : 'n', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 704, 'name' : 'tab', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 703, 'name' : 'vars', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 702, 'name' : 'dumper_seen', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 701, 'name' : 'seen', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 705, 'name' : 'n', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 701, 'name' : 'seen', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1)])))]))))])))]))
	}
	catch(err) {
		if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
			throw(err)
		}
		else if ( err instanceof p5_error || err instanceof Error ) {
			p5pkg["main"]["v_@"] = err;
			if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
				try {
					p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
				}
				catch(err) { }
			}
		}
		else {
			return(err);
		}
	}
	p5pkg["Perlito5"]["v_STRICT"] = p5strict;
	return r;
})(), '  ', v_dumper_seen, v_n]), 0)) + ';' + String.fromCharCode(10))]);
						}
						else (function () {
							if ( ((p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) == '@') || (p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) == '%')) ) {
							(function () {
								var v_ref;
								v_ref = ((String.fromCharCode(92) + p5str(v_n)));
								var v_d;
								v_d = (p5pkg['Perlito5::CompileTime::Dumper']._dumper(p5list_to_a([(function () {
	var p5want = 1;
	var r;
	p5pkg["main"]["v_@"] = "";
	var p5strict = p5pkg["Perlito5"]["v_STRICT"];
	p5pkg["Perlito5"]["v_STRICT"] = 1;
	try {
		r = eval(p5pkg["Perlito5::Javascript2::Runtime"].perl5_to_js([p5str(v_ref), 'Perlito5::CompileTime::Dumper', 'list', (new p5ArrayRef(p5list_to_a([(new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 591, '_namespace' : 'Perlito5::Grammar::Scope', 'name' : 'Special_var', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 587, '_namespace' : 'Perlito5', 'name' : 'CORE_PROTO', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 586, '_namespace' : 'Perlito5', 'name' : 'CORE_OVERRIDABLE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 585, '_namespace' : 'Perlito5', 'name' : 'SPECIAL_VAR', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', '_real_sigil' : '%', 'name' : 'ENV', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : 'INC', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 584, '_namespace' : 'Perlito5', 'name' : 'PACKAGES', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 583, '_namespace' : 'Perlito5', 'name' : 'ID', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 582, '_namespace' : 'Perlito5', 'name' : 'SCOPE_STMT', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 581, '_namespace' : 'Perlito5', 'name' : 'SCOPE_DEPTH', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 579, '_namespace' : 'Perlito5', 'name' : 'BASE_SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 580, '_namespace' : 'Perlito5', 'name' : 'SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 579, '_namespace' : 'Perlito5', 'name' : 'BASE_SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 578, '_namespace' : 'Perlito5', 'name' : 'FILE_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 577, '_namespace' : 'Perlito5', 'name' : 'LINE_NUMBER', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 576, '_namespace' : 'Perlito5', 'name' : 'PKG_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 575, '_namespace' : 'Perlito5', 'name' : 'DATA_SECTION', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 574, '_namespace' : 'Perlito5', 'name' : 'CALLER', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 573, '_namespace' : 'Perlito5', 'name' : 'BYTES', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 572, '_namespace' : 'Perlito5', 'name' : 'UTF8', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 571, '_namespace' : 'Perlito5', 'name' : 'WARNINGS', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 570, '_namespace' : 'Perlito5', 'name' : 'STRICT', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 569, '_namespace' : 'Perlito5', 'name' : 'EMIT_USE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 568, '_namespace' : 'Perlito5', 'name' : 'EXPAND_USE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ']', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ']', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '?', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '?', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ';', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ';', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '!', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '!', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ',', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ',', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '"', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '"', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '/', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '/', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 339, 'name' : 'Op_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 338, 'name' : 'Op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 337, 'name' : 'End_token_chars', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 336, 'name' : 'End_token', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 333, 'name' : 'Term', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 332, 'name' : 'Term_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 331, 'name' : 'Parsed_op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 330, 'name' : 'Parsed_op_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 323, 'name' : 'Assoc', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 322, 'name' : 'PrefixPrecedence', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 321, 'name' : 'Precedence', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 320, 'name' : 'Operator', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 114, 'name' : 'copyright_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 113, 'name' : 'help_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 111, 'name' : 'wrapper_priority', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 110, 'name' : 'wrapper_end', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 109, 'name' : 'wrapper_begin', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 108, 'name' : 'bootstrapping', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 107, 'name' : 'boilerplate', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 106, 'name' : 'expand_use', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 105, 'name' : 'verbose', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 100, 'name' : '_V5_COMPILER_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 705, 'name' : 'n', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 704, 'name' : 'tab', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 703, 'name' : 'vars', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 702, 'name' : 'dumper_seen', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 701, 'name' : 'seen', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 705, 'name' : 'n', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 701, 'name' : 'seen', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 700, 'name' : 'item', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 705, 'name' : 'n', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::CompileTime::Dumper'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 706, 'name' : 'ref', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1)])))]))))])))]))
	}
	catch(err) {
		if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
			throw(err)
		}
		else if ( err instanceof p5_error || err instanceof Error ) {
			p5pkg["main"]["v_@"] = err;
			if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
				try {
					p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
				}
				catch(err) { }
			}
		}
		else {
			return(err);
		}
	}
	p5pkg["Perlito5"]["v_STRICT"] = p5strict;
	return r;
})(), (p5str(v_tab) + '  '), v_dumper_seen, v_ref]), 0));
								(function () {
									if ( ((p5str(v_d) == '[]') || (p5str(v_d) == '{}')) ) {
									p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + (p5str(v_n) + ' = ();' + String.fromCharCode(10)))]);
								}
								else {
									p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + (p5str(v_n) + ' = ') + p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + p5str(v_d) + '};' + String.fromCharCode(10))]);
								}
								})();
							})();
						}
						else (function () {
							if ( (p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) == '*') ) {
							p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + ('# ' + p5str(v_n) + String.fromCharCode(10)))]);
							p5for(p5make_package('main'), "v__", function () {
									var local_idx = p5LOCAL.length;
									(function () {
										var v_tmp3519 = (v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil');
										p5LOCAL.push(function(){ (v_item || (v_item = new p5HashRef({})))._hash_.p5hset('sigil', (v_tmp3519)) });
										return (v_item || (v_item = new p5HashRef({})))._hash_.p5hset('sigil', (null));
									})();
									(v_item || (v_item = new p5HashRef({})))._hash_.p5hset('sigil', (p5make_package('main')['v__']));
									p5pkg['Perlito5::CompileTime::Dumper']._dump_global([v_item, v_seen, v_dumper_seen, v_vars, v_tab], null);
									p5cleanup_local(local_idx, null);
								}, ['$', '@', '%'], false, '');
						}
						})()
						})()
						})();
						return ((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hset(p5str(v_n), (1)));
					}
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3517._prototype_ = null;
			return tmp3517
		})());
		p5typeglob_set('Perlito5::CompileTime::Dumper', '_emit_globals', (function () {
			var tmp3520;
			tmp3520 = function (List__, p5want) {
				try {
					var v_scope;
					var v_seen;
					var v_dumper_seen;
					var v_vars;
					var v_tab;
					var tmp3521 = p5list_to_a([List__]);
					v_scope = tmp3521.shift();
					v_seen = tmp3521.shift();
					v_dumper_seen = tmp3521.shift();
					v_vars = tmp3521.shift();
					v_tab = tmp3521.shift();
					var v_block;
					v_block = ((v_scope || (v_scope = new p5HashRef({})))._hash_.p5hget('block'));
					(function () {
						var v_item;
						(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
								(function () {
									if ( ((p5pkg['Perlito5::CompileTime::Dumper'].ref([v_item], 0) == 'Perlito5::AST::Var') && !( p5bool((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_decl')))) ) {
									(v_item || (v_item = new p5HashRef({})))._hash_.p5hset('_decl', ('global'));
								}
								})();
								(function () {
									if ( ((p5pkg['Perlito5::CompileTime::Dumper'].ref([v_item], 0) == 'Perlito5::AST::Var') && (p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_decl')) == 'global')) ) {
									(v_item || (v_item = new p5HashRef({})))._hash_.p5hset('namespace', (p5or((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return (v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_namespace')
											})));
									p5and(p5or((p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('name')) == '0'), function () {
										return (p5num((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('name')) > 0)
									}), function () {
										throw(new p5_error("next", ''))
									});
									p5pkg['Perlito5::CompileTime::Dumper']._dump_global([v_item, v_seen, v_dumper_seen, v_vars, v_tab], null);
								}
								})();
								(function () {
									if ( ((p5pkg['Perlito5::CompileTime::Dumper'].ref([v_item], 0) == 'Perlito5::AST::Var') && (p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_decl')) == 'my')) ) {
									(function () {
										var v_id;
										v_id = ((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('_id'));
										(function () {
											if ( !( p5bool((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_id)))) ) {
											p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + '# my ' + p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('name')) + ';' + String.fromCharCode(10))]);
										}
										})();
										(v_seen || (v_seen = new p5HashRef({})))._hash_.p5hset(p5str(v_id), (1));
									})();
								}
								})();
								return (function () {
									if ( ((p5pkg['Perlito5::CompileTime::Dumper'].ref([v_item], 0) == 'HASH') && p5bool((v_item || (v_item = new p5HashRef({})))._hash_.p5hget('block'))) ) {
									p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + '{' + String.fromCharCode(10))]);
									p5pkg['Perlito5::CompileTime::Dumper']._emit_globals([v_item, v_seen, v_dumper_seen, v_vars, (p5str(v_tab) + '  ')], null);
									return (p5array_deref((v_vars || (v_vars = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper').p5push([(p5str(v_tab) + '}' + String.fromCharCode(10))]));
								}
								})()
							}, p5list_to_a([p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::CompileTime::Dumper')]), false, '') })()
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3520._prototype_ = null;
			return tmp3520
		})());
		p5typeglob_set('Perlito5::CompileTime::Dumper', 'emit_globals', (function () {
			var tmp3522;
			tmp3522 = function (List__, p5want) {
				var v_scope;
				v_scope = (p5defined_or(List__.shift(), function () {
								return p5make_package('Perlito5')['v_BASE_SCOPE']
							}));
				var List_vars = [];
				var Hash_seen = {};
				var v_dumper_seen;
				v_dumper_seen = ((new p5HashRef({})));
				var v_tab;
				v_tab = ('');
				p5pkg['Perlito5::CompileTime::Dumper']._emit_globals(p5list_to_a([v_scope, (new p5HashRef(Hash_seen)), v_dumper_seen, (new p5ArrayRef(List_vars)), v_tab]), null);
				return (p5context([p5pkg['Perlito5::CompileTime::Dumper'].join([''].concat(p5list_to_a([List_vars])), p5want)], p5want));
			};
			tmp3522._prototype_ = null;
			return tmp3522
		})());
		1;
	})();
	// use Perlito5::CompileTime::Dumper
;
	(function () {
		p5block(function (v) {}, function () {
				p5make_package('main');
				p5make_package('Perlito5::Grammar::Regex6');
				// use Perlito5::Grammar::Precedence
;
				p5typeglob_set('Perlito5::Grammar::Regex6', 'term_token', (function () {
					var tmp3523;
					tmp3523 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([p5and(('token' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 5)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((5 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												var v_m2;
												v_m2 = (p5pkg['Perlito5::Grammar'].ident(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
												return (function () {
													if ( p5bool(v_m2) ) {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::ident', (v_m2));
													return ((1));
												}
												else {
													return ((0));
												}
												})()
											})()], 0), function () {
												return p5and(p5context([(function () {
													var v_m2;
													v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
													return (function () {
														if ( p5bool(v_m2) ) {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
														return ((1));
													}
													else {
														return ((0));
													}
													})()
												})()], 0), function () {
													return p5and(p5context([p5and(('{' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0), function () {
														return p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].rule(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Regex6::rule', (v_m2));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5and(p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0), function () {
																return p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																	var v_source;
																	v_source = ((p5str(p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::ident')]), 0)) + '{ ' + 'my $str     = $_[0]; ' + 'my $pos     = $_[1]; ' + 'my $MATCH = { str => $str, from => $pos, to => $pos }; ' + 'my $tmp = ( ' + p5str(p5call(p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Regex6::rule')]), 0), 'emit_perl5', [], 0)) + '); ' + '$tmp ? $MATCH : 0; ' + '}'));
																	var v_ast;
																	v_ast = (p5call_sub('Perlito5::Grammar::Block', 'named_sub_def', [v_source, 0], 0));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a(['term', p5pkg['Perlito5::Match'].flat([v_ast], 1)])))));
																	return ((1));
																})()], 0)
															})
														})
													})
												})
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3523._prototype_ = null;
					return tmp3523
				})());
				p5pkg['Perlito5::Grammar::Precedence'].add_term(p5list_to_a(['token', p5pkg['Perlito5::Grammar::Regex6'].term_token]), null);
				p5typeglob_set('Perlito5::Grammar::Regex6', 'any', (function () {
					var tmp3524;
					tmp3524 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(('' != p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
										return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3524._prototype_ = null;
					return tmp3524
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'literal', (function () {
					var tmp3525;
					tmp3525 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_last_match_null;
										v_last_match_null = (0);
										var v_m;
										v_m = (v_MATCH);
										var v_to;
										v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										(function () {
											p5while(function () {
												(function () {
													if ( (p5num(v_to) == p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'))) ) {
													v_last_match_null = ((p5num(v_last_match_null) + 1));
												}
												else {
													v_last_match_null = (0);
												}
												})();
												v_m = (v_MATCH);
												v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
											}, function () {
												return p5and(p5context([(function () {
													var v_pos1;
													v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
													return ((p5or(p5context([(function () {
															return ((p5context([p5and(p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([92], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																	return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																})], 0), function () {
																	return p5context([p5and(('' != p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0)
																})], 0)));
														})()], 0), function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([p5and(p5context([(function () {
																		var v_tmp;
																		v_tmp = (v_MATCH);
																		v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
																		var v_res;
																		v_res = (p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([39], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0));
																		v_MATCH = (v_tmp);
																		return ((( p5bool(v_res) ? 0 : 1)));
																	})()], 0), function () {
																		return p5context([p5and(('' != p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0)
																	})], 0)));
															})()], 0)
														})));
												})()], 0), function () {
													return p5context([(p5num(v_last_match_null) < 2)], 0)
												})
											}, false, '', 0)
										})();
										v_MATCH = (v_m);
										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_to));
										return ((1));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3525._prototype_ = null;
					return tmp3525
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'metasyntax_exp', (function () {
					var tmp3526;
					tmp3526 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_last_match_null;
										v_last_match_null = (0);
										var v_m;
										v_m = (v_MATCH);
										var v_to;
										v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										var v_count;
										v_count = (0);
										(function () {
											p5while(function () {
												(function () {
													if ( (p5num(v_to) == p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'))) ) {
													v_last_match_null = ((p5num(v_last_match_null) + 1));
												}
												else {
													v_last_match_null = (0);
												}
												})();
												v_m = (v_MATCH);
												v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
												v_count = ((p5num(v_count) + 1));
											}, function () {
												return p5and(p5context([p5and(p5context([(function () {
													var v_tmp;
													v_tmp = (v_MATCH);
													v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
													var v_res;
													v_res = (p5context([p5and(('>' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0));
													v_MATCH = (v_tmp);
													return ((( p5bool(v_res) ? 0 : 1)));
												})()], 0), function () {
													return p5context([p5and(('' != p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0)
												})], 0), function () {
													return p5context([(p5num(v_last_match_null) < 2)], 0)
												})
											}, false, '', 0)
										})();
										v_MATCH = (v_m);
										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_to));
										return (((p5num(v_count) > 0)));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3526._prototype_ = null;
					return tmp3526
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'string_code', (function () {
					var tmp3527;
					tmp3527 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_last_match_null;
										v_last_match_null = (0);
										var v_m;
										v_m = (v_MATCH);
										var v_to;
										v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										var v_count;
										v_count = (0);
										(function () {
											p5while(function () {
												(function () {
													if ( (p5num(v_to) == p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'))) ) {
													v_last_match_null = ((p5num(v_last_match_null) + 1));
												}
												else {
													v_last_match_null = (0);
												}
												})();
												v_m = (v_MATCH);
												v_to = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
												v_count = ((p5num(v_count) + 1));
											}, function () {
												return p5and(p5context([(function () {
													var v_pos1;
													v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
													return ((p5or(p5context([(function () {
															return ((p5context([p5and(p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([92], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																	return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																})], 0), function () {
																	return p5context([p5and(('' != p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0)
																})], 0)));
														})()], 0), function () {
															return p5or(p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([p5and(p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([39], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5and(p5context([(function () {
																			var v_m2;
																			v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].literal(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																			return (function () {
																				if ( p5bool(v_m2) ) {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																				return ((1));
																			}
																			else {
																				return ((0));
																			}
																			})()
																		})()], 0), function () {
																			return p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([39], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																				return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																			})], 0)
																		})
																	})], 0)));
															})()], 0), function () {
																return p5or(p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																	return ((p5context([p5and(p5context([p5and(('{' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].string_code(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0)
																			})
																		})], 0)));
																})()], 0), function () {
																	return p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																		return ((p5context([p5and(p5context([(function () {
																				var v_tmp;
																				v_tmp = (v_MATCH);
																				v_MATCH = ((new p5HashRef(p5a_to_h(p5list_to_a(['str', v_str, 'from', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to'), 'to', (v_tmp || (v_tmp = new p5HashRef({})))._hash_.p5hget('to')])))));
																				var v_res;
																				v_res = (p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																							return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																						})], 0));
																				v_MATCH = (v_tmp);
																				return ((( p5bool(v_res) ? 0 : 1)));
																			})()], 0), function () {
																				return p5context([p5and(('' != p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0)
																			})], 0)));
																	})()], 0)
																})
															})
														})));
												})()], 0), function () {
													return p5context([(p5num(v_last_match_null) < 2)], 0)
												})
											}, false, '', 0)
										})();
										v_MATCH = (v_m);
										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_to));
										return (((p5num(v_count) > 0)));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3527._prototype_ = null;
					return tmp3527
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'parsed_code', (function () {
					var tmp3528;
					tmp3528 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].string_code(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5context([(function () {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat([v_MATCH], 0)));
											return ((1));
										})()], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3528._prototype_ = null;
					return tmp3528
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'rule_term', (function () {
					var tmp3529;
					tmp3529 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(p5context([p5and(('<before' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 7)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((7 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0), function () {
														return p5and(p5context([(function () {
															var v_m2;
															v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
															return (function () {
																if ( p5bool(v_m2) ) {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																return ((1));
															}
															else {
																return ((0));
															}
															})()
														})()], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].rule(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('rule', (v_m2));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5and(p5context([p5and(('>' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																	return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																})], 0), function () {
																	return p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Before', 'new', p5list_to_a(['rule_exp', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('rule')]), 1)]), 0)));
																		return ((1));
																	})()], 0)
																})
															})
														})
													})], 0)));
											})()], 0), function () {
												return p5or(p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([p5and(p5context([p5and(('<!before' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 8)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((8 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0), function () {
															return p5and(p5context([(function () {
																var v_m2;
																v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})()], 0), function () {
																return p5and(p5context([(function () {
																	var v_m2;
																	v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].rule(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																	return (function () {
																		if ( p5bool(v_m2) ) {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('rule', (v_m2));
																		return ((1));
																	}
																	else {
																		return ((0));
																	}
																	})()
																})()], 0), function () {
																	return p5and(p5context([p5and(('>' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::NotBefore', 'new', p5list_to_a(['rule_exp', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('rule')]), 1)]), 0)));
																			return ((1));
																		})()], 0)
																	})
																})
															})
														})], 0)));
												})()], 0), function () {
													return p5or(p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
														return ((p5context([p5and(p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([39], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0), function () {
																return p5and(p5context([(function () {
																	var v_m2;
																	v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].literal(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																	return (function () {
																		if ( p5bool(v_m2) ) {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('literal', (v_m2));
																		return ((1));
																	}
																	else {
																		return ((0));
																	}
																	})()
																})()], 0), function () {
																	return p5and(p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([39], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Constant', 'new', p5list_to_a(['constant', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('literal')]), 1)]), 0)));
																			return ((1));
																		})()], 0)
																	})
																})
															})], 0)));
													})()], 0), function () {
														return p5or(p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
															return ((p5context([p5and(p5context([p5and(('<' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																	return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																})], 0), function () {
																	return p5context([(function () {
																		var v_pos1;
																		v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																		return ((p5or(p5context([(function () {
																				return ((p5context([p5and(p5context([p5and(('.' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																						return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																					})], 0), function () {
																						return p5and(p5context([(function () {
																							var v_m2;
																							v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].metasyntax_exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																							return (function () {
																								if ( p5bool(v_m2) ) {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('metasyntax_exp', (v_m2));
																								return ((1));
																							}
																							else {
																								return ((0));
																							}
																							})()
																						})()], 0), function () {
																							return p5and(p5context([p5and(('>' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																								return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																							})], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Subrule', 'new', p5list_to_a(['metasyntax', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('metasyntax_exp')]), 1), 'captures', 0]), 0)));
																									return ((1));
																								})()], 0)
																							})
																						})
																					})], 0)));
																			})()], 0), function () {
																				return p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																					return ((p5context([p5and(p5context([(function () {
																							var v_m2;
																							v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].metasyntax_exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																							return (function () {
																								if ( p5bool(v_m2) ) {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('metasyntax_exp', (v_m2));
																								return ((1));
																							}
																							else {
																								return ((0));
																							}
																							})()
																						})()], 0), function () {
																							return p5and(p5context([p5and(('>' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																								return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																							})], 0), function () {
																								return p5context([(function () {
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																									(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Subrule', 'new', p5list_to_a(['metasyntax', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('metasyntax_exp')]), 1), 'captures', 1]), 0)));
																									return ((1));
																								})()], 0)
																							})
																						})], 0)));
																				})()], 0)
																			})));
																	})()], 0)
																})], 0)));
														})()], 0), function () {
															return p5or(p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([p5and(p5context([p5and(('{' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																		return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																	})], 0), function () {
																		return p5and(p5context([(function () {
																			var v_m2;
																			v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].parsed_code(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																			return (function () {
																				if ( p5bool(v_m2) ) {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('parsed_code', (v_m2));
																				return ((1));
																			}
																			else {
																				return ((0));
																			}
																			})()
																		})()], 0), function () {
																			return p5and(p5context([p5and(('}' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																				return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																			})], 0), function () {
																				return p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Block', 'new', p5list_to_a(['closure', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('parsed_code')]), 1)]), 0)));
																					return ((1));
																				})()], 0)
																			})
																		})
																	})], 0)));
															})()], 0), function () {
																return p5or(p5context([(function () {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																	return ((p5context([p5and(p5context([p5and((p5pkg['Perlito5::Grammar::Regex6'].chr([92], 0) == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5context([(function () {
																				var v_pos1;
																				v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
																				return ((p5or(p5context([(function () {
																						return ((p5context([p5and(p5context([p5and(('c' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																								return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																							})], 0), function () {
																								return p5and(p5context([(function () {
																									var v_m2;
																									v_m2 = (p5call_sub('Perlito5::Grammar::Number', 'digits', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																									return (function () {
																										if ( p5bool(v_m2) ) {
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Number::digits', (v_m2));
																										return ((1));
																									}
																									else {
																										return ((0));
																									}
																									})()
																								})()], 0), function () {
																									return p5context([(function () {
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Constant', 'new', ['constant', p5pkg['Perlito5::Grammar::Regex6'].chr([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('Perlito5::Grammar::Number::digits')]), 0)], 1)], 0)));
																										return ((1));
																									})()], 0)
																								})
																							})], 0)));
																					})()], 0), function () {
																						return p5context([(function () {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																							return ((p5context([p5and(p5context([(function () {
																									var v_m2;
																									v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].any(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																									return (function () {
																										if ( p5bool(v_m2) ) {
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('any', (v_m2));
																										return ((1));
																									}
																									else {
																										return ((0));
																									}
																									})()
																								})()], 0), function () {
																									return p5context([(function () {
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																										(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::SpecialChar', 'new', p5list_to_a(['char', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('any')]), 1)]), 0)));
																										return ((1));
																									})()], 0)
																								})], 0)));
																						})()], 0)
																					})));
																			})()], 0)
																		})], 0)));
																})()], 0), function () {
																	return p5or(p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																		return ((p5context([p5and(p5context([p5and(('.' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																				return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																			})], 0), function () {
																				return p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Dot', 'new', [], 0)));
																					return ((1));
																				})()], 0)
																			})], 0)));
																	})()], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																			return ((p5context([p5and(p5context([p5and(('[' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																					return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																				})], 0), function () {
																					return p5and(p5context([(function () {
																						var v_m2;
																						v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].rule(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																						return (function () {
																							if ( p5bool(v_m2) ) {
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																							(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('rule', (v_m2));
																							return ((1));
																						}
																						else {
																							return ((0));
																						}
																						})()
																					})()], 0), function () {
																						return p5and(p5context([p5and((']' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																							return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																						})], 0), function () {
																							return p5context([(function () {
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																								(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('rule')]), 0)));
																								return ((1));
																							})()], 0)
																						})
																					})
																				})], 0)));
																		})()], 0)
																	})
																})
															})
														})
													})
												})
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3529._prototype_ = null;
					return tmp3529
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'quant_exp', (function () {
					var tmp3530;
					tmp3530 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(('?' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
														return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
													})], 0)));
											})()], 0), function () {
												return p5or(p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([p5and(('*' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0)));
												})()], 0), function () {
													return p5context([(function () {
														(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
														return ((p5context([p5and(('+' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
															})], 0)));
													})()], 0)
												})
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3530._prototype_ = null;
					return tmp3530
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'quantifier', (function () {
					var tmp3531;
					tmp3531 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Space::opt_ws', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].rule_term(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('rule_term', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5and(p5context([(function () {
												var v_m2;
												v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
												return (function () {
													if ( p5bool(v_m2) ) {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Space::opt_ws', (v_m2));
													return ((1));
												}
												else {
													return ((0));
												}
												})()
											})()], 0), function () {
												return p5context([(function () {
													var v_pos1;
													v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
													return ((p5or(p5context([(function () {
															return ((p5context([p5and(p5context([(function () {
																	var v_m2;
																	v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].quant_exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																	return (function () {
																		if ( p5bool(v_m2) ) {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('quant_exp', (v_m2));
																		return ((1));
																	}
																	else {
																		return ((0));
																	}
																	})()
																})()], 0), function () {
																	return p5and(p5context([(function () {
																		var v_m2;
																		v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'opt_ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																		return (function () {
																			if ( p5bool(v_m2) ) {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('Perlito5::Grammar::Space::opt_ws', (v_m2));
																			return ((1));
																		}
																		else {
																			return ((0));
																		}
																		})()
																	})()], 0), function () {
																		return p5context([(function () {
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																			(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Quantifier', 'new', p5list_to_a(['term', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('rule_term')]), 1), 'quant', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('quant_exp')]), 1)]), 0)));
																			return ((1));
																		})()], 0)
																	})
																})], 0)));
														})()], 0), function () {
															return p5context([(function () {
																(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																return ((p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('rule_term')]), 0)));
																		return ((1));
																	})()], 0)));
															})()], 0)
														})));
												})()], 0)
											})
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3531._prototype_ = null;
					return tmp3531
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'concat_list', (function () {
					var tmp3532;
					tmp3532 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].quantifier(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('quantifier', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5context([(function () {
															var v_pos1;
															v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
															return ((p5or(p5context([(function () {
																	return ((p5context([p5and(p5context([(function () {
																			var v_m2;
																			v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].concat_list(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																			return (function () {
																				if ( p5bool(v_m2) ) {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('concat_list', (v_m2));
																				return ((1));
																			}
																			else {
																				return ((0));
																			}
																			})()
																		})()], 0), function () {
																			return p5context([(function () {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('quantifier')]), 1), p5array_deref(p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('concat_list')]), p5want), 'Perlito5::Grammar::Regex6')])))));
																				return ((1));
																			})()], 0)
																		})], 0)));
																})()], 0), function () {
																	return p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																		return ((p5context([(function () {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('quantifier')]), 1)])))));
																				return ((1));
																			})()], 0)));
																	})()], 0)
																})));
														})()], 0)
													})], 0)));
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef([]))));
															return ((1));
														})()], 0)));
												})()], 0)
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3532._prototype_ = null;
					return tmp3532
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'concat_exp', (function () {
					var tmp3533;
					tmp3533 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_m2;
										v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].concat_list(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
										return (function () {
											if ( p5bool(v_m2) ) {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('concat_list', (v_m2));
											return ((1));
										}
										else {
											return ((0));
										}
										})()
									})()], 0), function () {
										return p5context([(function () {
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
											(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Concat', 'new', p5list_to_a(['concat', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('concat_list')]), 1)]), 0)));
											return ((1));
										})()], 0)
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3533._prototype_ = null;
					return tmp3533
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'or_list_exp', (function () {
					var tmp3534;
					tmp3534 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(p5context([(function () {
														var v_m2;
														v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].concat_exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
														return (function () {
															if ( p5bool(v_m2) ) {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('concat_exp', (v_m2));
															return ((1));
														}
														else {
															return ((0));
														}
														})()
													})()], 0), function () {
														return p5context([(function () {
															var v_pos1;
															v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
															return ((p5or(p5context([(function () {
																	return ((p5context([p5and(p5context([p5and(('|' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
																			return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
																		})], 0), function () {
																			return p5and(p5context([(function () {
																				var v_m2;
																				v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].or_list_exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																				return (function () {
																					if ( p5bool(v_m2) ) {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('or_list_exp', (v_m2));
																					return ((1));
																				}
																				else {
																					return ((0));
																				}
																				})()
																			})()], 0), function () {
																				return p5context([(function () {
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																					(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('concat_exp')]), 1), p5array_deref(p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('or_list_exp')]), p5want), 'Perlito5::Grammar::Regex6')])))));
																					return ((1));
																				})()], 0)
																			})
																		})], 0)));
																})()], 0), function () {
																	return p5context([(function () {
																		(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
																		return ((p5context([(function () {
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
																				(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('concat_exp')]), 1)])))));
																				return ((1));
																			})()], 0)));
																	})()], 0)
																})));
														})()], 0)
													})], 0)));
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((p5context([(function () {
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
															(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', ((new p5ArrayRef([]))));
															return ((1));
														})()], 0)));
												})()], 0)
											})));
									})()], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3534._prototype_ = null;
					return tmp3534
				})());
				p5typeglob_set('Perlito5::Grammar::Regex6', 'rule', (function () {
					var tmp3535;
					tmp3535 = function (List__, p5want) {
						var v_str;
						v_str = (List__.p5aget(0));
						var v_pos;
						v_pos = (List__.p5aget(1));
						var v_MATCH;
						v_MATCH = ((new p5HashRef({'str' : v_str, 'from' : v_pos, 'to' : v_pos})));
						var v_tmp;
						v_tmp = (p5context([p5context([p5and(p5context([(function () {
										var v_pos1;
										v_pos1 = ((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to'));
										return ((p5or(p5context([(function () {
												return ((p5context([p5and(p5context([(function () {
														var v_m;
														v_m = (v_MATCH);
														(function () {
															if ( !( p5bool((function () {
																var v_m2;
																v_m2 = (p5call_sub('Perlito5::Grammar::Space', 'ws', p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
																return (function () {
																	if ( p5bool(v_m2) ) {
																	(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
																	return ((1));
																}
																else {
																	return ((0));
																}
																})()
															})())) ) {
															v_MATCH = (v_m);
														}
														})();
														return ((1));
													})()], 0), function () {
														return p5context([p5and(('|' == p5str(v_str).substr(p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')), 1)), function () {
															return p5context([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((1 + p5num((v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')))))], 0)
														})], 0)
													})], 0)));
											})()], 0), function () {
												return p5context([(function () {
													(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', (v_pos1));
													return ((1));
												})()], 0)
											})));
									})()], 0), function () {
										return p5and(p5context([(function () {
											var v_m2;
											v_m2 = (p5pkg['Perlito5::Grammar::Regex6'].or_list_exp(p5list_to_a([v_str, (v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('to')]), 0));
											return (function () {
												if ( p5bool(v_m2) ) {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('to', ((v_m2 || (v_m2 = new p5HashRef({})))._hash_.p5hget('to')));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('or_list_exp', (v_m2));
												return ((1));
											}
											else {
												return ((0));
											}
											})()
										})()], 0), function () {
											return p5context([(function () {
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('str', (v_str));
												(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hset('capture', (p5call('Perlito5::Rul::Or', 'new', p5list_to_a(['or_list', p5pkg['Perlito5::Match'].flat(p5list_to_a([(v_MATCH || (v_MATCH = new p5HashRef({})))._hash_.p5hget('or_list_exp')]), 1)]), 0)));
												return ((1));
											})()], 0)
										})
									})], 0)], 0));
						return (( p5bool(v_tmp) ? v_MATCH : 0));
					};
					tmp3535._prototype_ = null;
					return tmp3535
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::Grammar::Regex6
;
	(function () {
		null;
		p5make_package('Perlito5::Rul');
		p5typeglob_set('Perlito5::Rul', 'new', (function () {
			var tmp3536;
			tmp3536 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3536._prototype_ = null;
			return tmp3536
		})());
		p5typeglob_set('Perlito5::Rul', 'constant', (function () {
			var tmp3537;
			tmp3537 = function (List__, p5want) {
				try {
					var v_str;
					v_str = (List__.shift());
					var v_len;
					v_len = (p5pkg['Perlito5::Rul'].length([v_str], 0));
					(function () {
						if ( (p5str(v_str) == String.fromCharCode(92)) ) {
						v_str = (String.fromCharCode(92) + String.fromCharCode(92));
					}
					})();
					(function () {
						if ( (p5str(v_str) == String.fromCharCode(39)) ) {
						v_str = (String.fromCharCode(92) + String.fromCharCode(39));
					}
					})();
					return (function () {
						if ( p5bool(v_len) ) {
						return (p5context([('( ' + String.fromCharCode(39) + p5str(v_str) + String.fromCharCode(39) + ' eq substr( $str, $MATCH->{to}, ' + p5str(v_len) + ') ' + '&& ( $MATCH->{to} = ' + p5str(v_len) + ' + $MATCH->{to} )' + ')')], p5want));
					}
					else {
						(function () {
							throw(p5context(['1'], p5want))
						})()
					}
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3537._prototype_ = null;
			return tmp3537
		})());
		p5make_package('Perlito5::Rul::Quantifier');
		p5typeglob_set('Perlito5::Rul::Quantifier', 'new', (function () {
			var tmp3538;
			tmp3538 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Quantifier'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3538._prototype_ = null;
			return tmp3538
		})());
		p5typeglob_set('Perlito5::Rul::Quantifier', 'term', (function () {
			var tmp3539;
			tmp3539 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('term'));
			};
			tmp3539._prototype_ = null;
			return tmp3539
		})());
		p5typeglob_set('Perlito5::Rul::Quantifier', 'quant', (function () {
			var tmp3540;
			tmp3540 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('quant'));
			};
			tmp3540._prototype_ = null;
			return tmp3540
		})());
		p5typeglob_set('Perlito5::Rul::Quantifier', 'emit_perl5', (function () {
			var tmp3541;
			tmp3541 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.p5aget(0));
					(function () {
						if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('quant')) == '') ) {
						throw(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'emit_perl5', [], p5want));
					}
					})();
					(function () {
						if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('quant')) == '+') ) {
						p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'set_captures_to_array', [], null);
						throw(p5context([('(do { ' + 'my $last_match_null = 0; ' + 'my $m = $MATCH; ' + 'my $to = $MATCH->{to}; ' + 'my $count = 0; ' + 'while (' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'emit_perl5', [], 0)) + ' && ($last_match_null < 2)) ' + '{ ' + 'if ($to == $MATCH->{to}) { ' + '$last_match_null = $last_match_null + 1; ' + '} ' + 'else { ' + '$last_match_null = 0; ' + '}; ' + '$m = $MATCH; ' + '$to = $MATCH->{to}; ' + '$count = $count + 1; ' + '}; ' + '$MATCH = $m; ' + '$MATCH->{to} = $to; ' + '$count > 0; ' + '})')], p5want));
					}
					})();
					(function () {
						if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('quant')) == '*') ) {
						p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'set_captures_to_array', [], null);
						throw(p5context([('(do { ' + 'my $last_match_null = 0; ' + 'my $m = $MATCH; ' + 'my $to = $MATCH->{to}; ' + 'while (' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'emit_perl5', [], 0)) + ' && ($last_match_null < 2)) ' + '{ ' + 'if ($to == $MATCH->{to}) { ' + '$last_match_null = $last_match_null + 1; ' + '} ' + 'else { ' + '$last_match_null = 0; ' + '}; ' + '$m = $MATCH; ' + '$to = $MATCH->{to}; ' + '}; ' + '$MATCH = $m; ' + '$MATCH->{to} = $to; ' + '1 ' + '})')], p5want));
					}
					})();
					(function () {
						if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('quant')) == '?') ) {
						p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'set_captures_to_array', [], null);
						throw(p5context([('(do { ' + 'my $m = $MATCH; ' + 'if (!' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'emit_perl5', [], 0)) + ') ' + '{ ' + '$MATCH = $m; ' + '}; ' + '1 ' + '})')], p5want));
					}
					})();
					return (p5pkg['Perlito5::Rul::Quantifier'].die([].concat(['Perlito5::Rul::Quantifier:  not implemented']), p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3541._prototype_ = null;
			return tmp3541
		})());
		p5typeglob_set('Perlito5::Rul::Quantifier', 'set_captures_to_array', (function () {
			var tmp3542;
			tmp3542 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('term'), 'set_captures_to_array', [], p5want));
			};
			tmp3542._prototype_ = null;
			return tmp3542
		})());
		p5make_package('Perlito5::Rul::Or');
		p5typeglob_set('Perlito5::Rul::Or', 'new', (function () {
			var tmp3543;
			tmp3543 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Or'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3543._prototype_ = null;
			return tmp3543
		})());
		p5typeglob_set('Perlito5::Rul::Or', 'or_list', (function () {
			var tmp3544;
			tmp3544 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('or_list'));
			};
			tmp3544._prototype_ = null;
			return tmp3544
		})());
		p5typeglob_set('Perlito5::Rul::Or', 'emit_perl5', (function () {
			var tmp3545;
			tmp3545 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.p5aget(0));
					(function () {
						if ( (p5num((p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('or_list'), 'Perlito5::Rul::Or')))) == 1) ) {
						throw(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('or_list')._array_.p5aget(0), 'emit_perl5', [], p5want));
					}
					})();
					return (p5context([('(do { ' + 'my $pos1 = $MATCH->{to}; (do { ' + p5pkg['Perlito5::Rul::Or'].join(['}) || (do { $MATCH->{to} = $pos1; '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Rul::Or'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('or_list'), 'Perlito5::Rul::Or')]))])), 0) + '}) })')], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3545._prototype_ = null;
			return tmp3545
		})());
		p5typeglob_set('Perlito5::Rul::Or', 'set_captures_to_array', (function () {
			var tmp3546;
			tmp3546 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5map(p5pkg['Perlito5::Rul::Or'], function (p5want) {
							return (p5call(p5make_package('main')['v__'], 'set_captures_to_array', [], p5want));
						}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('or_list'), 'Perlito5::Rul::Or')])));
			};
			tmp3546._prototype_ = null;
			return tmp3546
		})());
		p5make_package('Perlito5::Rul::Concat');
		p5typeglob_set('Perlito5::Rul::Concat', 'new', (function () {
			var tmp3547;
			tmp3547 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Concat'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3547._prototype_ = null;
			return tmp3547
		})());
		p5typeglob_set('Perlito5::Rul::Concat', 'concat', (function () {
			var tmp3548;
			tmp3548 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('concat'));
			};
			tmp3548._prototype_ = null;
			return tmp3548
		})());
		p5typeglob_set('Perlito5::Rul::Concat', 'emit_perl5', (function () {
			var tmp3549;
			tmp3549 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.p5aget(0));
					(function () {
						if ( (p5num((p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('concat'), 'Perlito5::Rul::Concat')))) == 1) ) {
						throw(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('concat')._array_.p5aget(0), 'emit_perl5', [], p5want));
					}
					})();
					return (p5context([('(' + p5pkg['Perlito5::Rul::Concat'].join([' && '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Rul::Concat'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('concat'), 'Perlito5::Rul::Concat')]))])), 0) + ')')], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3549._prototype_ = null;
			return tmp3549
		})());
		p5typeglob_set('Perlito5::Rul::Concat', 'set_captures_to_array', (function () {
			var tmp3550;
			tmp3550 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5map(p5pkg['Perlito5::Rul::Concat'], function (p5want) {
							return (p5call(p5make_package('main')['v__'], 'set_captures_to_array', [], p5want));
						}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('concat'), 'Perlito5::Rul::Concat')])));
			};
			tmp3550._prototype_ = null;
			return tmp3550
		})());
		p5make_package('Perlito5::Rul::Subrule');
		p5typeglob_set('Perlito5::Rul::Subrule', 'new', (function () {
			var tmp3551;
			tmp3551 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Subrule'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3551._prototype_ = null;
			return tmp3551
		})());
		p5typeglob_set('Perlito5::Rul::Subrule', 'metasyntax', (function () {
			var tmp3552;
			tmp3552 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('metasyntax'));
			};
			tmp3552._prototype_ = null;
			return tmp3552
		})());
		p5typeglob_set('Perlito5::Rul::Subrule', 'captures', (function () {
			var tmp3553;
			tmp3553 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('captures'));
			};
			tmp3553._prototype_ = null;
			return tmp3553
		})());
		p5typeglob_set('Perlito5::Rul::Subrule', 'emit_perl5', (function () {
			var tmp3554;
			tmp3554 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				var v_meth;
				v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('metasyntax'));
				var v_code;
				(function () {
						if ( (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('captures')) == 1) ) {
						v_code = (('if ($m2) { $MATCH->{to} = $m2->{to}; $MATCH->{' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('metasyntax')) + String.fromCharCode(39) + '} = $m2; 1 } else { 0 }; '));
					}
					else (function () {
						if ( (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('captures')) > 1) ) {
						v_code = (('if ($m2) { ' + '$MATCH->{to} = $m2->{to}; ' + 'if (exists $MATCH->{' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('metasyntax')) + String.fromCharCode(39) + '}) { ' + 'push @{ $MATCH->{' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('metasyntax')) + String.fromCharCode(39) + '} }, $m2; ' + '} ' + 'else { ' + '$MATCH->{' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('metasyntax')) + String.fromCharCode(39) + '} = [ $m2 ]; ' + '}; ' + '1 ' + '} else { 0 }; '));
					}
					else {
						v_code = ('if ($m2) { $MATCH->{to} = $m2->{to}; 1 } else { 0 }; ');
					}
					})()
					})();
				return (p5context([('(do { ' + 'my $m2 = ' + p5str(v_meth) + '($str, $MATCH->{to}); ' + p5str(v_code) + '})')], p5want));
			};
			tmp3554._prototype_ = null;
			return tmp3554
		})());
		p5typeglob_set('Perlito5::Rul::Subrule', 'set_captures_to_array', (function () {
			var tmp3555;
			tmp3555 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (function () {
						if ( (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('captures')) > 0) ) {
						return ((v_self || (v_self = new p5HashRef({})))._hash_.p5hset('captures', ((p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('captures')) + 1))));
					}
					})()
			};
			tmp3555._prototype_ = null;
			return tmp3555
		})());
		p5make_package('Perlito5::Rul::Constant');
		p5typeglob_set('Perlito5::Rul::Constant', 'new', (function () {
			var tmp3556;
			tmp3556 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Constant'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3556._prototype_ = null;
			return tmp3556
		})());
		p5typeglob_set('Perlito5::Rul::Constant', 'constant', (function () {
			var tmp3557;
			tmp3557 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('constant'));
			};
			tmp3557._prototype_ = null;
			return tmp3557
		})());
		p5typeglob_set('Perlito5::Rul::Constant', 'emit_perl5', (function () {
			var tmp3558;
			tmp3558 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				var v_str;
				v_str = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('constant'));
				return (p5pkg['Perlito5::Rul'].constant([v_str], p5want));
			};
			tmp3558._prototype_ = null;
			return tmp3558
		})());
		p5typeglob_set('Perlito5::Rul::Constant', 'set_captures_to_array', (function () {
			var tmp3559;
			tmp3559 = function (List__, p5want) {
				var v_self;
				return ((v_self = (List__.p5aget(0))));
			};
			tmp3559._prototype_ = null;
			return tmp3559
		})());
		p5make_package('Perlito5::Rul::Dot');
		p5typeglob_set('Perlito5::Rul::Dot', 'new', (function () {
			var tmp3560;
			tmp3560 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Dot'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3560._prototype_ = null;
			return tmp3560
		})());
		p5typeglob_set('Perlito5::Rul::Dot', 'emit_perl5', (function () {
			var tmp3561;
			tmp3561 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5context([('( ' + String.fromCharCode(39) + String.fromCharCode(39) + ' ne substr( $str, $MATCH->{to}, 1 ) ' + '&& ($MATCH->{to} = 1 + $MATCH->{to})' + ')')], p5want));
			};
			tmp3561._prototype_ = null;
			return tmp3561
		})());
		p5typeglob_set('Perlito5::Rul::Dot', 'set_captures_to_array', (function () {
			var tmp3562;
			tmp3562 = function (List__, p5want) {
				var v_self;
				return ((v_self = (List__.p5aget(0))));
			};
			tmp3562._prototype_ = null;
			return tmp3562
		})());
		p5make_package('Perlito5::Rul::SpecialChar');
		p5typeglob_set('Perlito5::Rul::SpecialChar', 'new', (function () {
			var tmp3563;
			tmp3563 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::SpecialChar'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3563._prototype_ = null;
			return tmp3563
		})());
		p5typeglob_set('Perlito5::Rul::SpecialChar', 'char', (function () {
			var tmp3564;
			tmp3564 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('char'));
			};
			tmp3564._prototype_ = null;
			return tmp3564
		})());
		p5typeglob_set('Perlito5::Rul::SpecialChar', 'emit_perl5', (function () {
			var tmp3565;
			tmp3565 = function (List__, p5want) {
				try {
					var v_self;
					v_self = (List__.p5aget(0));
					var v_char;
					v_char = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('char'));
					(function () {
						if ( (p5str(v_char) == 'n') ) {
						throw(p5call(p5call('Perlito5::Rul::Subrule', 'new', ['metasyntax', 'is_newline', 'captures', 0], 0), 'emit_perl5', [], p5want));
					}
					})();
					(function () {
						if ( (p5str(v_char) == 'N') ) {
						throw(p5call(p5call('Perlito5::Rul::Subrule', 'new', ['metasyntax', 'not_newline', 'captures', 0], 0), 'emit_perl5', [], p5want));
					}
					})();
					(function () {
						if ( (p5str(v_char) == 'd') ) {
						throw(p5call(p5call('Perlito5::Rul::Subrule', 'new', ['metasyntax', 'digit', 'captures', 0], 0), 'emit_perl5', [], p5want));
					}
					})();
					(function () {
						if ( (p5str(v_char) == 's') ) {
						throw(p5call(p5call('Perlito5::Rul::Subrule', 'new', ['metasyntax', 'space', 'captures', 0], 0), 'emit_perl5', [], p5want));
					}
					})();
					(function () {
						if ( (p5str(v_char) == 't') ) {
						throw(p5pkg['Perlito5::Rul'].constant([p5pkg['Perlito5::Rul::SpecialChar'].chr([9], 1)], p5want));
					}
					})();
					return (p5pkg['Perlito5::Rul'].constant([v_char], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3565._prototype_ = null;
			return tmp3565
		})());
		p5typeglob_set('Perlito5::Rul::SpecialChar', 'set_captures_to_array', (function () {
			var tmp3566;
			tmp3566 = function (List__, p5want) {
				var v_self;
				return ((v_self = (List__.p5aget(0))));
			};
			tmp3566._prototype_ = null;
			return tmp3566
		})());
		p5make_package('Perlito5::Rul::Block');
		p5typeglob_set('Perlito5::Rul::Block', 'new', (function () {
			var tmp3567;
			tmp3567 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Block'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3567._prototype_ = null;
			return tmp3567
		})());
		p5typeglob_set('Perlito5::Rul::Block', 'closure', (function () {
			var tmp3568;
			tmp3568 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('closure'));
			};
			tmp3568._prototype_ = null;
			return tmp3568
		})());
		p5typeglob_set('Perlito5::Rul::Block', 'emit_perl5', (function () {
			var tmp3569;
			tmp3569 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5context([('(do { ' + '$MATCH->{str} = $str; ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('closure')) + '; 1 })')], p5want));
			};
			tmp3569._prototype_ = null;
			return tmp3569
		})());
		p5typeglob_set('Perlito5::Rul::Block', 'set_captures_to_array', (function () {
			var tmp3570;
			tmp3570 = function (List__, p5want) {
				var v_self;
				return ((v_self = (List__.p5aget(0))));
			};
			tmp3570._prototype_ = null;
			return tmp3570
		})());
		p5make_package('Perlito5::Rul::Before');
		p5typeglob_set('Perlito5::Rul::Before', 'new', (function () {
			var tmp3571;
			tmp3571 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::Before'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3571._prototype_ = null;
			return tmp3571
		})());
		p5typeglob_set('Perlito5::Rul::Before', 'rule_exp', (function () {
			var tmp3572;
			tmp3572 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('rule_exp'));
			};
			tmp3572._prototype_ = null;
			return tmp3572
		})());
		p5typeglob_set('Perlito5::Rul::Before', 'emit_perl5', (function () {
			var tmp3573;
			tmp3573 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5context([('(do { ' + 'my $tmp = $MATCH; ' + '$MATCH = { ' + String.fromCharCode(39) + 'str' + String.fromCharCode(39) + ' => $str, ' + String.fromCharCode(39) + 'from' + String.fromCharCode(39) + ' => $tmp->{to}, ' + String.fromCharCode(39) + 'to' + String.fromCharCode(39) + ' => $tmp->{to} }; ' + 'my $res = ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('rule_exp'), 'emit_perl5', [], 0)) + '; ' + '$MATCH = $tmp; ' + '$res ? 1 : 0 ' + '})')], p5want));
			};
			tmp3573._prototype_ = null;
			return tmp3573
		})());
		p5typeglob_set('Perlito5::Rul::Before', 'set_captures_to_array', (function () {
			var tmp3574;
			tmp3574 = function (List__, p5want) {
				var v_self;
				return ((v_self = (List__.p5aget(0))));
			};
			tmp3574._prototype_ = null;
			return tmp3574
		})());
		p5make_package('Perlito5::Rul::NotBefore');
		p5typeglob_set('Perlito5::Rul::NotBefore', 'new', (function () {
			var tmp3575;
			tmp3575 = function (List__, p5want) {
				var v_class;
				v_class = (List__.shift());
				return (p5pkg['Perlito5::Rul::NotBefore'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
			};
			tmp3575._prototype_ = null;
			return tmp3575
		})());
		p5typeglob_set('Perlito5::Rul::NotBefore', 'rule_exp', (function () {
			var tmp3576;
			tmp3576 = function (List__, p5want) {
				return (List__.p5aget_hash(0)._hash_.p5hget('rule_exp'));
			};
			tmp3576._prototype_ = null;
			return tmp3576
		})());
		p5typeglob_set('Perlito5::Rul::NotBefore', 'emit_perl5', (function () {
			var tmp3577;
			tmp3577 = function (List__, p5want) {
				var v_self;
				v_self = (List__.p5aget(0));
				return (p5context([('(do { ' + 'my $tmp = $MATCH; ' + '$MATCH = { ' + String.fromCharCode(39) + 'str' + String.fromCharCode(39) + ' => $str, ' + String.fromCharCode(39) + 'from' + String.fromCharCode(39) + ' => $tmp->{to}, ' + String.fromCharCode(39) + 'to' + String.fromCharCode(39) + ' => $tmp->{to} }; ' + 'my $res = ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('rule_exp'), 'emit_perl5', [], 0)) + '; ' + '$MATCH = $tmp; ' + '$res ? 0 : 1 ' + '})')], p5want));
			};
			tmp3577._prototype_ = null;
			return tmp3577
		})());
		p5typeglob_set('Perlito5::Rul::NotBefore', 'set_captures_to_array', (function () {
			var tmp3578;
			tmp3578 = function (List__, p5want) {
				var v_self;
				return ((v_self = (List__.p5aget(0))));
			};
			tmp3578._prototype_ = null;
			return tmp3578
		})());
		1;
	})();
	// use Perlito5::Emitter::Token
;
	(function () {
		p5make_package('Perlito5::Dumper');
		p5typeglob_set('Perlito5::Dumper', 'ast_dumper', (function () {
			var tmp3579;
			tmp3579 = function (List__, p5want) {
				var v_seen;
				v_seen = ((new p5HashRef({})));
				var v_level;
				v_level = ('');
				var v_pos;
				v_pos = ('[TODO - recursive structure in AST is not supported]');
				return (p5pkg['Perlito5::Dumper']._dumper(p5list_to_a([List__.p5aget(0), v_level, v_seen, v_pos]), p5want));
			};
			tmp3579._prototype_ = null;
			return tmp3579
		})());
		p5typeglob_set('Perlito5::Dumper', '_dumper', (function () {
			var tmp3580;
			tmp3580 = function (List__, p5want) {
				try {
					var v_obj;
					var v_tab;
					var v_seen;
					var v_pos;
					var tmp3581 = p5list_to_a([List__]);
					v_obj = tmp3581.shift();
					v_tab = tmp3581.shift();
					v_seen = tmp3581.shift();
					v_pos = tmp3581.shift();
					p5and(!( (v_obj != null)), function () {
						throw(p5context(['undef'], p5want))
					});
					var v_ref;
					v_ref = (p5pkg['Perlito5::Dumper'].ref([v_obj], 0));
					p5and(!( p5bool(v_ref)), function () {
						throw(p5pkg['Perlito5::Dumper'].escape_string([v_obj], p5want))
					});
					var v_as_string;
					v_as_string = (v_obj);
					p5and((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_as_string)), function () {
						throw((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_as_string)))
					});
					(v_seen || (v_seen = new p5HashRef({})))._hash_.p5hset(p5str(v_as_string), (v_pos));
					var v_tab1;
					v_tab1 = ((p5str(v_tab) + '    '));
					(function () {
						if ( (p5str(v_ref) == 'ARRAY') ) {
						(function () {
							p5or(p5num(p5array_deref((v_obj || (v_obj = new p5ArrayRef([]))), 'Perlito5::Dumper')), function () {
								throw(p5context(['[]'], p5want))
							});
							var List_out = [];
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_here;
										v_here = ((p5str(v_pos) + '->[' + p5str(v_i) + ']'));
										List_out.p5push(p5list_to_a([v_tab1, p5pkg['Perlito5::Dumper']._dumper(p5list_to_a([(v_obj || (v_obj = new p5ArrayRef([])))._array_.p5aget(p5num(v_i)), v_tab1, v_seen, v_here]), 1), ',' + String.fromCharCode(10)]));
									}, p5list_to_a([p5range(0, (p5array_deref((v_obj || (v_obj = new p5ArrayRef([]))), 'Perlito5::Dumper').length - 1), 1, "tmp3582", 0)]), false, '') })()
							})();
							throw(p5context([p5pkg['Perlito5::Dumper'].join([''].concat(p5list_to_a(['[' + String.fromCharCode(10), List_out, v_tab, ']'])), p5want)], p5want));
						})();
					}
					else (function () {
						if ( (p5str(v_ref) == 'HASH') ) {
						(function () {
							p5or(p5pkg['Perlito5::Dumper'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::Dumper')], 0), function () {
								throw(p5context(['{}'], p5want))
							});
							var List_out = [];
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_here;
										v_here = ((p5str(v_pos) + '->{' + p5str(v_i) + '}'));
										List_out.p5push(p5list_to_a([v_tab1, (String.fromCharCode(39) + p5str(v_i) + String.fromCharCode(39) + ' => '), p5pkg['Perlito5::Dumper']._dumper(p5list_to_a([(v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget(p5str(v_i)), v_tab1, v_seen, v_here]), 1), ',' + String.fromCharCode(10)]));
									}, p5list_to_a([p5sort(p5pkg['Perlito5::Dumper'], function (p5want) {
										return (p5cmp(p5str(p5make_package('Perlito5::Dumper')['v_a']), p5str(p5make_package('Perlito5::Dumper')['v_b'])));
									}, p5list_to_a([p5pkg['Perlito5::Dumper'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::Dumper')], 1)]))]), false, '') })()
							})();
							throw(p5context([p5pkg['Perlito5::Dumper'].join([''].concat(p5list_to_a(['{' + String.fromCharCode(10), List_out, v_tab, '}'])), p5want)], p5want));
						})();
					}
					else (function () {
						if ( ((p5str(v_ref) == 'SCALAR') || (p5str(v_ref) == 'REF')) ) {
						throw(p5context([(String.fromCharCode(92) + p5str(p5pkg['Perlito5::Dumper']._dumper(p5list_to_a([p5scalar_deref(v_obj, 'Perlito5::Dumper', ""), v_tab1, v_seen, v_pos]), 0)))], p5want));
					}
					else (function () {
						if ( (p5str(v_ref) == 'CODE') ) {
						throw(p5context(['sub { "DUMMY" }'], p5want));
					}
					})()
					})()
					})()
					})();
					var List_out = [];
					(function () {
						var v_i;
						(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
								var v_here;
								v_here = ((p5str(v_pos) + '->{' + p5str(v_i) + '}'));
								List_out.p5push(p5list_to_a([v_tab1, (String.fromCharCode(39) + p5str(v_i) + String.fromCharCode(39) + ' => '), p5pkg['Perlito5::Dumper']._dumper(p5list_to_a([(v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget(p5str(v_i)), v_tab1, v_seen, v_here]), 1), ',' + String.fromCharCode(10)]));
							}, p5list_to_a([p5sort(p5pkg['Perlito5::Dumper'], function (p5want) {
								return (p5cmp(p5str(p5make_package('Perlito5::Dumper')['v_a']), p5str(p5make_package('Perlito5::Dumper')['v_b'])));
							}, p5list_to_a([p5pkg['Perlito5::Dumper'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::Dumper')], 1)]))]), false, '') })()
					})();
					return (p5context([p5pkg['Perlito5::Dumper'].join([''].concat(p5list_to_a(['bless({' + String.fromCharCode(10), List_out, v_tab, ('}, ' + String.fromCharCode(39) + p5str(v_ref) + String.fromCharCode(39) + ')')])), p5want)], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3580._prototype_ = null;
			return tmp3580
		})());
		var Hash_safe_char = {};
		Hash_safe_char = p5a_to_h([' ', 1, '!', 1, '"', 1, '#', 1, '$', 1, '%', 1, '&', 1, '(', 1, ')', 1, '*', 1, '+', 1, ',', 1, '-', 1, '.', 1, '/', 1, ':', 1, ';', 1, '<', 1, '=', 1, '>', 1, '?', 1, '@', 1, '[', 1, ']', 1, '^', 1, '_', 1, '`', 1, '{', 1, '|', 1, '}', 1, '~', 1]);
		p5typeglob_set('Perlito5::Dumper', 'escape_string', (function () {
			var tmp3583;
			tmp3583 = function (List__, p5want) {
				try {
					var v_s;
					v_s = (List__.shift());
					var List_out = [];
					var v_tmp;
					v_tmp = ('');
					p5and((p5str(v_s) == ''), function () {
						throw(p5context([String.fromCharCode(39) + String.fromCharCode(39)], p5want))
					});
					p5and(p5and((p5str((0 + p5num(v_s))) == p5str(v_s)), function () {
						return p5m(v_s, '[0-9]', '', 0)
					}), function () {
						throw(p5context([(0 + p5num(v_s))], p5want))
					});
					(function () {
						var v_i;
						(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
								var v_c;
								v_c = (p5str(v_s).substr(p5num(v_i), 1));
								(function () {
									if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (((p5str(v_c) >= '0') && (p5str(v_c) <= '9')) || (Hash_safe_char).hasOwnProperty(v_c)))) ) {
									v_tmp = ((p5str(v_tmp) + p5str(v_c)));
								}
								else {
									p5and((p5str(v_tmp) != ''), function () {
										return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
									});
									List_out.p5push([('chr(' + p5str(p5pkg['Perlito5::Dumper'].ord([v_c], 0)) + ')')]);
									v_tmp = ('');
								}
								})();
							}, p5list_to_a([p5range(0, (p5pkg['Perlito5::Dumper'].length([v_s], 0) - 1), 1, "tmp3584", 0)]), false, '') })()
					})();
					p5and((p5str(v_tmp) != ''), function () {
						return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
					});
					return (p5context([p5pkg['Perlito5::Dumper'].join([' . '].concat(p5list_to_a([List_out])), p5want)], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3583._prototype_ = null;
			return tmp3583
		})());
		p5typeglob_set('Perlito5::Dumper', '_identity', (function () {
			var tmp3585;
			tmp3585 = function (List__, p5want) {
				return (p5context([(p5str(List__.p5aget(0)) == p5str(List__.p5aget(1)))], p5want));
			};
			tmp3585._prototype_ = null;
			return tmp3585
		})());
		1;
	})();
	// use Perlito5::Dumper
;
	(function () {
		p5make_package('Perlito5::JSON');
		p5typeglob_set('Perlito5::JSON', 'ast_dumper', (function () {
			var tmp3586;
			tmp3586 = function (List__, p5want) {
				var v_seen;
				v_seen = ((new p5HashRef({})));
				var v_level;
				v_level = ('');
				var v_pos;
				v_pos = ('[TODO - recursive structure in AST is not supported]');
				return (p5pkg['Perlito5::JSON']._dumper(p5list_to_a([List__.p5aget(0), v_level, v_seen, v_pos]), p5want));
			};
			tmp3586._prototype_ = null;
			return tmp3586
		})());
		p5typeglob_set('Perlito5::JSON', '_dumper', (function () {
			var tmp3587;
			tmp3587 = function (List__, p5want) {
				try {
					var local_idx = p5LOCAL.length;
					var regex_tmp = p5_regex_capture;
					p5LOCAL.push(function(){ p5_regex_capture = regex_tmp });
					var v_obj;
					var v_tab;
					var v_seen;
					var v_pos;
					var tmp3588 = p5list_to_a([List__]);
					v_obj = tmp3588.shift();
					v_tab = tmp3588.shift();
					v_seen = tmp3588.shift();
					v_pos = tmp3588.shift();
					p5and(!( (v_obj != null)), function () {
						throw(p5context(['null'], p5want))
					});
					var v_ref;
					v_ref = (p5pkg['Perlito5::JSON'].ref([v_obj], 0));
					p5and(!( p5bool(v_ref)), function () {
						throw(p5pkg['Perlito5::JSON'].escape_string([v_obj], p5want))
					});
					var v_as_string;
					v_as_string = (v_obj);
					p5and((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_as_string)), function () {
						throw((v_seen || (v_seen = new p5HashRef({})))._hash_.p5hget(p5str(v_as_string)))
					});
					(v_seen || (v_seen = new p5HashRef({})))._hash_.p5hset(p5str(v_as_string), (v_pos));
					var v_tab1;
					v_tab1 = ((p5str(v_tab) + '  '));
					(function () {
						if ( (p5str(v_ref) == 'ARRAY') ) {
						(function () {
							p5or(p5num(p5array_deref((v_obj || (v_obj = new p5ArrayRef([]))), 'Perlito5::JSON')), function () {
								throw(p5context(['[]'], p5want))
							});
							var List_out = [];
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_here;
										v_here = ((p5str(v_pos) + '[' + p5str(v_i) + ']'));
										List_out.p5push([(p5str(v_tab1) + p5str(p5pkg['Perlito5::JSON']._dumper(p5list_to_a([(v_obj || (v_obj = new p5ArrayRef([])))._array_.p5aget(p5num(v_i)), v_tab1, v_seen, v_here]), 0)))]);
									}, p5list_to_a([p5range(0, (p5array_deref((v_obj || (v_obj = new p5ArrayRef([]))), 'Perlito5::JSON').length - 1), 1, "tmp3589", 0)]), false, '') })()
							})();
							throw(p5context([('[' + String.fromCharCode(10) + p5pkg['Perlito5::JSON'].join([',' + String.fromCharCode(10)].concat(p5list_to_a([List_out])), 0) + String.fromCharCode(10) + p5str(v_tab) + ']')], p5want));
						})();
					}
					else (function () {
						if ( (p5str(v_ref) == 'SCALAR') ) {
						throw(p5context([('{ "_type": "SCALAR", "value": ' + p5str(p5pkg['Perlito5::JSON']._dumper(p5list_to_a([p5scalar_deref(v_obj, 'Perlito5::JSON', ""), v_tab1, v_seen, v_pos]), 0)) + ' }')], p5want));
					}
					else (function () {
						if ( (p5str(v_ref) == 'CODE') ) {
						throw(p5context(['{ "_type": "CODE", "value": "DUMMY" }'], p5want));
					}
					})()
					})()
					})();
					(function () {
							var tmp = p5s(v_ref, '^Perlito5::AST::', function () {
								return ''
							}, '', 0);
							v_ref = tmp[0];
							return tmp[1];
						})();
					var List_out = [];
					p5and((p5str(v_ref) != 'HASH'), function () {
						return List_out.p5push([('"_type": "' + p5str(v_ref) + '"')])
					});
					(function () {
						var v_i;
						(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
								var v_here;
								v_here = ((p5str(v_pos) + '{' + p5str(v_i) + '}'));
								List_out.p5push([(p5str(v_tab1) + ('"' + p5str(v_i) + '": ') + p5str(p5pkg['Perlito5::JSON']._dumper(p5list_to_a([(v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget(p5str(v_i)), v_tab1, v_seen, v_here]), 0)))]);
							}, p5list_to_a([p5sort(p5pkg['Perlito5::JSON'], function (p5want) {
								return (p5cmp(p5str(p5make_package('Perlito5::JSON')['v_a']), p5str(p5make_package('Perlito5::JSON')['v_b'])));
							}, p5list_to_a([p5pkg['Perlito5::JSON'].keys([p5hash_deref((v_obj || (v_obj = new p5HashRef({}))), 'Perlito5::JSON')], 1)]))]), false, '') })()
					})();
					return p5cleanup_local(local_idx, (p5context([('{ ' + p5pkg['Perlito5::JSON'].join([',' + String.fromCharCode(10)].concat(p5list_to_a([List_out])), 0) + String.fromCharCode(10) + p5str(v_tab) + '}')], p5want)));
					p5cleanup_local(local_idx, null);
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return p5cleanup_local(local_idx, err);
					}
				}
			};
			tmp3587._prototype_ = null;
			return tmp3587
		})());
		p5typeglob_set('Perlito5::JSON', 'escape_string', (function () {
			var tmp3590;
			tmp3590 = function (List__, p5want) {
				try {
					var v_s;
					v_s = (List__.shift());
					var List_out = [];
					p5and((p5str(v_s) == ''), function () {
						throw(p5context(['""'], p5want))
					});
					p5and(p5and((p5str((0 + p5num(v_s))) == p5str(v_s)), function () {
						return p5m(v_s, '[0-9]', '', 0)
					}), function () {
						throw(p5context([(0 + p5num(v_s))], p5want))
					});
					(function () {
						var v_i;
						(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
								var v_c;
								v_c = (p5str(v_s).substr(p5num(v_i), 1));
								(function () {
									if ( ((p5str(v_c) == String.fromCharCode(92)) || (p5str(v_c) == '"')) ) {
									List_out.p5push([(String.fromCharCode(92) + p5str(v_c))]);
								}
								else (function () {
									if ( (p5str(v_c) == String.fromCharCode(10)) ) {
									List_out.p5push([String.fromCharCode(92) + 'n']);
								}
								else (function () {
									if ( (p5str(v_c) == String.fromCharCode(13)) ) {
									List_out.p5push([String.fromCharCode(92) + 'r']);
								}
								else (function () {
									if ( (p5str(v_c) == String.fromCharCode(9)) ) {
									List_out.p5push([String.fromCharCode(92) + 't']);
								}
								else (function () {
									if ( (p5str(v_c) == String.fromCharCode(8)) ) {
									List_out.p5push([String.fromCharCode(92) + 'b']);
								}
								else (function () {
									if ( (p5str(v_c) == String.fromCharCode(12)) ) {
									List_out.p5push([String.fromCharCode(92) + 'f']);
								}
								else (function () {
									if ( (p5str(v_c) <= p5pkg['Perlito5::JSON'].chr([31], 0)) ) {
									List_out.p5push(p5list_to_a([p5pkg['Perlito5::JSON'].sprintf([String.fromCharCode(92) + 'u%04x'].concat([p5pkg['Perlito5::JSON'].ord([v_c], 1)]), 1)]));
								}
								else {
									List_out.p5push([v_c]);
								}
								})()
								})()
								})()
								})()
								})()
								})()
								})();
							}, p5list_to_a([p5range(0, (p5pkg['Perlito5::JSON'].length([v_s], 0) - 1), 1, "tmp3591", 0)]), false, '') })()
					})();
					return (p5context([p5pkg['Perlito5::JSON'].join([''].concat(p5list_to_a(['"', List_out, '"'])), p5want)], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp3590._prototype_ = null;
			return tmp3590
		})());
		1;
	})();
	// use Perlito5::JSON
;
	(function () {
		null;
		// use Perlito5::AST
;
		// use Perlito5::Dumper
;
		// use strict
;
		p5make_package('Perlito5::Javascript2');
		p5block(function (v) {}, function () {
				var Hash_label = {};
				p5typeglob_set('Perlito5::Javascript2', 'pkg', (function () {
					var tmp3592;
					tmp3592 = function (List__, p5want) {
						return (p5context([('p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ']')], p5want));
					};
					tmp3592._prototype_ = null;
					return tmp3592
				})());
				p5typeglob_set('Perlito5::Javascript2', 'get_label', (function () {
					var tmp3593;
					tmp3593 = function (List__, p5want) {
						return (p5context([('tmp' + p5str((function () {
	var tmp3594 = p5make_package('Perlito5')['v_ID'];
	p5make_package('Perlito5')['v_ID'] = p5incr_(tmp3594);
	return tmp3594
})()))], p5want));
					};
					tmp3593._prototype_ = null;
					return tmp3593
				})());
				p5typeglob_set('Perlito5::Javascript2', 'tab', (function () {
					var tmp3595;
					tmp3595 = function (List__, p5want) {
						var v_level;
						v_level = (List__.shift());
						return (p5str_replicate(String.fromCharCode(9),p5num(v_level)));
					};
					tmp3595._prototype_ = null;
					return tmp3595
				})());
				if (typeof p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_prefix_js_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_prefix_js_str'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_prefix_js_str'] = {'prefix:<-A>' : 'p5atime', 'prefix:<-C>' : 'p5ctime', 'prefix:<-M>' : 'p5mtime', 'prefix:<-d>' : 'p5is_directory', 'prefix:<-e>' : 'p5file_exists', 'prefix:<-f>' : 'p5is_file', 'prefix:<-s>' : 'p5size'};
				if (typeof p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_str'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_str'] = {'infix:<eq>' : ' == ', 'infix:<ne>' : ' != ', 'infix:<le>' : ' <= ', 'infix:<ge>' : ' >= ', 'infix:<lt>' : ' < ', 'infix:<gt>' : ' > '};
				if (typeof p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_num'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_num'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_num'] = {'infix:<==>' : ' == ', 'infix:<!=>' : ' != ', 'infix:<+>' : ' + ', 'infix:<->' : ' - ', 'infix:<*>' : ' * ', 'infix:</>' : ' / ', 'infix:<>>' : ' > ', 'infix:<<>' : ' < ', 'infix:<>=>' : ' >= ', 'infix:<<=>' : ' <= ', 'infix:<&>' : ' & ', 'infix:<|>' : ' | ', 'infix:<^>' : ' ^ ', 'infix:<>>>' : ' >>> '};
				if (typeof p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript2']['Hash_op_to_bool'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript2']['Hash_op_to_bool'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript2']['Hash_op_to_bool'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['prefix:<!>', 'infix:<!=>', 'infix:<==>', 'infix:<<=>', 'infix:<>=>', 'infix:<>>', 'infix:<<>', 'infix:<eq>', 'infix:<ne>', 'infix:<ge>', 'infix:<le>', 'infix:<gt>', 'infix:<lt>', 'infix:<~~>', 'prefix:<not>', 'exists', 'defined'])]));
				if (typeof p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] = {}), 'Perlito5::Javascript2']['Hash_op_to_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] = {}), 'Perlito5::Javascript2']['Hash_op_to_str'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] = {}), 'Perlito5::Javascript2']['Hash_op_to_str'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['substr', 'join', 'list:<.>', 'chr', 'lc', 'uc', 'lcfirst', 'ucfirst', 'ref'])]));
				if (typeof p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] = {}), 'Perlito5::Javascript2']['Hash_op_to_num'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] = {}), 'Perlito5::Javascript2']['Hash_op_to_num'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] = {}), 'Perlito5::Javascript2']['Hash_op_to_num'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['length', 'index', 'ord', 'oct', 'infix:<->', 'infix:<+>', 'infix:<*>', 'infix:</>', 'infix:<%>', 'infix:<**>'])]));
				var Hash_safe_char = {};
				Hash_safe_char = p5a_to_h([' ', 1, '!', 1, '"', 1, '#', 1, '$', 1, '%', 1, '&', 1, '(', 1, ')', 1, '*', 1, '+', 1, ',', 1, '-', 1, '.', 1, '/', 1, ':', 1, ';', 1, '<', 1, '=', 1, '>', 1, '?', 1, '@', 1, '[', 1, ']', 1, '^', 1, '_', 1, '`', 1, '{', 1, '|', 1, '}', 1, '~', 1]);
				p5typeglob_set('Perlito5::Javascript2', 'escape_string', (function () {
					var tmp3596;
					tmp3596 = function (List__, p5want) {
						try {
							var v_s;
							v_s = (List__.shift());
							var List_out = [];
							var v_tmp;
							v_tmp = ('');
							p5and((p5str(v_s) == ''), function () {
								throw(p5context([String.fromCharCode(39) + String.fromCharCode(39)], p5want))
							});
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_c;
										v_c = (p5str(v_s).substr(p5num(v_i), 1));
										(function () {
											if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (((p5str(v_c) >= '0') && (p5str(v_c) <= '9')) || (Hash_safe_char).hasOwnProperty(v_c)))) ) {
											v_tmp = ((p5str(v_tmp) + p5str(v_c)));
										}
										else {
											p5and((p5str(v_tmp) != ''), function () {
												return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
											});
											List_out.p5push([('String.fromCharCode(' + p5str(p5pkg['Perlito5::Javascript2'].ord([v_c], 0)) + ')')]);
											v_tmp = ('');
										}
										})();
									}, p5list_to_a([p5range(0, (p5pkg['Perlito5::Javascript2'].length([v_s], 0) - 1), 1, "tmp3597", 0)]), false, '') })()
							})();
							p5and((p5str(v_tmp) != ''), function () {
								return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
							});
							return (p5context([p5pkg['Perlito5::Javascript2'].join([' + '].concat(p5list_to_a([List_out])), p5want)], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3596._prototype_ = null;
					return tmp3596
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_str', (function () {
					var tmp3598;
					tmp3598 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript2')))))) ) {
								throw(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Buf'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] = {}), 'Perlito5::Javascript2']['Hash_op_to_str']).hasOwnProperty(p5call(v_cond, 'code', [], p5want)))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_javascript2', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5str(' + p5str(p5call(v_cond, 'emit_javascript2', [v_level, v_wantarray], 0)) + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3598._prototype_ = null;
					return tmp3598
				})());
				p5typeglob_set('Perlito5::Javascript2', 'is_num', (function () {
					var tmp3599;
					tmp3599 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							p5and(p5or(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0), function () {
								return p5or(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0), function () {
									return p5context([p5and(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] = {}), 'Perlito5::Javascript2']['Hash_op_to_num']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))
									})], 0)
								})
							}), function () {
								throw(p5context([1], p5want))
							});
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3599._prototype_ = null;
					return tmp3599
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_num', (function () {
					var tmp3600;
					tmp3600 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							return (function () {
								if ( p5bool(p5pkg['Perlito5::Javascript2'].is_num([v_cond], 0)) ) {
								(function () {
									throw(p5call(v_cond, 'emit_javascript2', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5num(' + p5str(p5call(v_cond, 'emit_javascript2', [v_level, v_wantarray], 0)) + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3600._prototype_ = null;
					return tmp3600
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_bool', (function () {
					var tmp3601;
					tmp3601 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript2')))))) ) {
								throw(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<&&>') || (p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<and>'))) ) {
								throw(p5context([('(' + p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' && ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<||>') || (p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<or>'))) ) {
								throw(p5context([('(' + p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' || ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript2']['Hash_op_to_bool']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_javascript2', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5bool(' + p5str(p5call(v_cond, 'emit_javascript2', [v_level, v_wantarray], 0)) + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3601._prototype_ = null;
					return tmp3601
				})());
				p5typeglob_set('Perlito5::Javascript2', 'is_scalar', (function () {
					var tmp3602;
					tmp3602 = function (List__, p5want) {
						return (p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Int'], 0))), function () {
									return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Num'], 0))), function () {
										return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0))), function () {
											return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Sub'], 0))), function () {
												return p5and(!( (p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(List__.p5aget_hash(0)._hash_.p5hget('sigil')) == '$'))), function () {
													return !( (p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_str'] = {}), 'Perlito5::Javascript2']['Hash_op_to_str']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || ((p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_num'] = {}), 'Perlito5::Javascript2']['Hash_op_to_num']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript2')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript2']['Hash_op_to_bool']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code'))))))
												})
											})
										})
									})
								}));
					};
					tmp3602._prototype_ = null;
					return tmp3602
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_list', (function () {
					var tmp3603;
					tmp3603 = function (List__, p5want) {
						try {
							var v_items;
							v_items = (p5pkg['Perlito5::Javascript2'].to_list_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_literal_type;
							v_literal_type = (p5or(List__.p5aget(2), function () {
										return 'array'
									}));
							var v_wantarray;
							v_wantarray = ('list');
							var v_interpolate;
							v_interpolate = (0);
							p5for(p5make_package('main'), "v__", function () {
									p5and(p5pkg['Perlito5::Javascript2'].is_scalar([p5make_package('main')['v__']], 0), function () {
										return v_interpolate = (1)
									});
								}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2')]), false, '');
							(function () {
								if ( (p5str(v_literal_type) == 'hash') ) {
								(function () {
									if ( !( p5bool(v_interpolate)) ) {
									(function () {
										var List_out = [];
										var v_printable;
										v_printable = (1);
										var List_in = [];
										List_in = p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2')]);
										(function () {
											p5while(function () {
												var v_k;
												v_k = (List_in.shift());
												var v_v;
												v_v = (List_in.shift());
												v_k = (p5call(v_k, 'emit_javascript2', [v_level, 0], 0));
												p5and(p5m(v_k, '[ ' + String.fromCharCode(92) + '[]', '', 0), function () {
													return v_printable = (0)
												});
												v_v = (( p5bool(v_v) ? p5call(v_v, 'emit_javascript2', [v_level, 0], 0) : 'null'));
												List_out.p5push([(p5str(v_k) + ' : ' + p5str(v_v))]);
											}, function () {
												return List_in.length
											}, false, '', 0)
										})();
										p5and(v_printable, function () {
											throw(p5context([('{' + p5pkg['Perlito5::Javascript2'].join([', '].concat(p5list_to_a([List_out])), 0) + '}')], p5want))
										});
									})();
								}
								})();
								throw(p5context([('p5a_to_h(' + p5str(p5pkg['Perlito5::Javascript2'].to_list([v_items, v_level, 'array'], 0)) + ')')], p5want));
							}
							})();
							return (( p5bool(v_interpolate) ? p5context([('p5list_to_a([' + p5pkg['Perlito5::Javascript2'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2')]))])), 0) + '])')], p5want) : p5context([('[' + p5pkg['Perlito5::Javascript2'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2')]))])), 0) + ']')], p5want)));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3603._prototype_ = null;
					return tmp3603
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_list_preprocess', (function () {
					var tmp3604;
					tmp3604 = function (List__, p5want) {
						var List_items = [];
						(function () {
								var v_item;
								(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
										(function () {
											if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_item, 'code', [], 0)) == 'circumfix:<( )>') || ((p5str(p5call(v_item, 'code', [], 0)) == 'list:<,>') || (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')))) ) {
											(function () {
												if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')) ) {
												(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aset(0, (p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)));
											}
											})();
											(function () {
												var v_arg;
												(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
														List_items.p5push([v_arg]);
													}, p5list_to_a([p5array_deref(p5pkg['Perlito5::Javascript2'].to_list_preprocess(p5list_to_a([p5call(v_item, 'arguments', [], 1)]), p5want), 'Perlito5::Javascript2')]), false, '') })()
											})();
										}
										else {
											List_items.p5push([v_item]);
										}
										})();
									}, p5list_to_a([p5array_deref(List__.p5aget_array(0), 'Perlito5::Javascript2')]), false, '') })()
							})();
						return ((new p5ArrayRef(List_items)));
					};
					tmp3604._prototype_ = null;
					return tmp3604
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_scalar', (function () {
					var tmp3605;
					tmp3605 = function (List__, p5want) {
						var v_items;
						v_items = (p5pkg['Perlito5::Javascript2'].to_scalar_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_wantarray;
						v_wantarray = ('scalar');
						return (( p5bool(p5num(p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2'))) ? ('(' + p5pkg['Perlito5::Javascript2'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2')]))])), 0) + ')') : 'null'));
					};
					tmp3605._prototype_ = null;
					return tmp3605
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_scalar_preprocess', (function () {
					var tmp3606;
					tmp3606 = function (List__, p5want) {
						var List_items = [];
						(function () {
								var v_item;
								(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
										(function () {
											if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_item, 'code', [], 0)) == 'list:<,>') || (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>'))) ) {
											(function () {
												if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')) ) {
												(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aset(0, (p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)));
											}
											})();
											(function () {
												var v_arg;
												(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
														List_items.p5push([v_arg]);
													}, p5list_to_a([p5array_deref(p5pkg['Perlito5::Javascript2'].to_scalar_preprocess(p5list_to_a([p5call(v_item, 'arguments', [], 1)]), p5want), 'Perlito5::Javascript2')]), false, '') })()
											})();
										}
										else {
											List_items.p5push([v_item]);
										}
										})();
									}, p5list_to_a([p5array_deref(List__.p5aget_array(0), 'Perlito5::Javascript2')]), false, '') })()
							})();
						return ((new p5ArrayRef(List_items)));
					};
					tmp3606._prototype_ = null;
					return tmp3606
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_runtime_context', (function () {
					var tmp3607;
					tmp3607 = function (List__, p5want) {
						try {
							var v_items;
							v_items = (p5pkg['Perlito5::Javascript2'].to_scalar_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_wantarray;
							v_wantarray = ('runtime');
							p5and(p5and((p5num(p5num(p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2'))) == 1), function () {
								return p5pkg['Perlito5::Javascript2'].is_scalar(p5list_to_a([(v_items || (v_items = new p5ArrayRef([])))._array_.p5aget(0)]), 0)
							}), function () {
								throw(p5call((v_items || (v_items = new p5ArrayRef([])))._array_.p5aget(0), 'emit_javascript2', [v_level, v_wantarray], p5want))
							});
							return (p5context([('p5context(' + '[' + p5pkg['Perlito5::Javascript2'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript2')]))])), 0) + ']' + ', p5want)')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3607._prototype_ = null;
					return tmp3607
				})());
				p5typeglob_set('Perlito5::Javascript2', 'to_context', (function () {
					var tmp3608;
					tmp3608 = function (List__, p5want) {
						var v_wantarray;
						v_wantarray = (List__.shift());
						return (( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want'))));
					};
					tmp3608._prototype_ = null;
					return tmp3608
				})());
				p5typeglob_set('Perlito5::Javascript2', 'autoquote', (function () {
					var tmp3609;
					tmp3609 = function (List__, p5want) {
						var v_index;
						v_index = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						v_index = (p5call('Perlito5::AST::Lookup', 'autoquote', [v_index], 0));
						return (p5pkg['Perlito5::Javascript2'].to_str([v_index, v_level], p5want));
					};
					tmp3609._prototype_ = null;
					return tmp3609
				})());
				p5typeglob_set('Perlito5::Javascript2', 'emit_javascript2_autovivify', (function () {
					var tmp3610;
					tmp3610 = function (List__, p5want) {
						try {
							var v_obj;
							v_obj = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_type;
							v_type = (List__.shift());
							(function () {
								if ( (p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Index'], 0)) || (p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Lookup'], 0)) || p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Call'], 0)))) ) {
								throw(p5call(v_obj, 'emit_javascript2', [v_level, 0, v_type], p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_obj, 'code', [], 0)) == 'prefix:<$>')) ) {
								(function () {
									var v_arg;
									v_arg = ((v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									throw(p5context([('p5scalar_deref(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_type], 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Apply'], 0)) ) {
								throw(p5call(v_obj, 'emit_javascript2', [v_level], p5want));
							}
							})();
							(function () {
								if ( p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
								throw(p5call(v_obj, 'emit_javascript2', [v_level], p5want));
							}
							})();
							return (p5context([('(' + p5str(p5call(v_obj, 'emit_javascript2', [v_level], 0)) + ' || (' + p5str(p5call(v_obj, 'emit_javascript2', [v_level], 0)) + ' = ' + p5str(( (p5str(v_type) == 'array') ? 'new p5ArrayRef([])' : ( (p5str(v_type) == 'hash') ? 'new p5HashRef({})' : 'new p5ScalarRef(null)'))) + ')' + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3610._prototype_ = null;
					return tmp3610
				})());
				p5typeglob_set('Perlito5::Javascript2', 'emit_javascript2_list_with_tabs', (function () {
					var tmp3611;
					tmp3611 = function (List__, p5want) {
						var v_level;
						var v_argument;
						var tmp3612 = p5list_to_a([List__]);
							v_level = tmp3612.shift();
							v_argument = tmp3612.shift();
						var v_tab;
						v_tab = (p5pkg['Perlito5::Javascript2'].tab([v_level], 0));
						return (p5map(p5pkg['Perlito5::Javascript2'], function (p5want) {
									return (( (p5pkg['Perlito5::Javascript2'].ref([p5make_package('main')['v__']], 0) == 'ARRAY') ? p5pkg['Perlito5::Javascript2'].emit_javascript2_list_with_tabs([(p5num(v_level) + 1), p5make_package('main')['v__']], p5want) : (p5str(v_tab) + p5str(p5make_package('main')['v__']))));
								}, p5list_to_a([p5array_deref((v_argument || (v_argument = new p5ArrayRef([]))), 'Perlito5::Javascript2')])));
					};
					tmp3611._prototype_ = null;
					return tmp3611
				})());
				p5typeglob_set('Perlito5::Javascript2', 'emit_func_javascript2', (function () {
					var tmp3613;
					tmp3613 = function (List__, p5want) {
						var v_level;
						var v_wantarray;
						var List_argument = [];
						var tmp3614 = p5list_to_a([List__]);
							v_level = tmp3614.shift();
							v_wantarray = tmp3614.shift();
							List_argument = tmp3614;
							tmp3614 = [];
						return (p5context([p5pkg['Perlito5::Javascript2'].join([String.fromCharCode(10)].concat(p5list_to_a(['function () {', p5pkg['Perlito5::Javascript2'].emit_javascript2_list_with_tabs(p5list_to_a([v_level, (new p5ArrayRef(p5list_to_a([(new p5ArrayRef(List_argument)), '}'])))]), 1)])), p5want)], p5want));
					};
					tmp3613._prototype_ = null;
					return tmp3613
				})());
				p5typeglob_set('Perlito5::Javascript2', 'emit_wrap_javascript2', (function () {
					var tmp3615;
					tmp3615 = function (List__, p5want) {
						var v_level;
						var v_wantarray;
						var List_argument = [];
						var tmp3616 = p5list_to_a([List__]);
							v_level = tmp3616.shift();
							v_wantarray = tmp3616.shift();
							List_argument = tmp3616;
							tmp3616 = [];
						return (p5context([p5pkg['Perlito5::Javascript2'].join([String.fromCharCode(10)].concat(p5list_to_a(['(function () {', p5pkg['Perlito5::Javascript2'].emit_javascript2_list_with_tabs(p5list_to_a([v_level, (new p5ArrayRef(p5list_to_a([(new p5ArrayRef(List_argument)), '})()'])))]), 1)])), p5want)], p5want));
					};
					tmp3615._prototype_ = null;
					return tmp3615
				})());
				p5typeglob_set('Perlito5::Javascript2', 'emit_function_javascript2', (function () {
					var tmp3617;
					tmp3617 = function (List__, p5want) {
						var v_level;
						var v_wantarray;
						var v_argument;
						var tmp3618 = p5list_to_a([List__]);
							v_level = tmp3618.shift();
							v_wantarray = tmp3618.shift();
							v_argument = tmp3618.shift();
						return (function () {
								if ( (p5bool(p5call(v_argument, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_argument, 'code', [], 0)) == 'return') || ((p5str(p5call(v_argument, 'code', [], 0)) == 'last') || ((p5str(p5call(v_argument, 'code', [], 0)) == 'next') || (p5str(p5call(v_argument, 'code', [], 0)) == 'redo'))))) ) {
								return (p5pkg['Perlito5::Javascript2'].emit_func_javascript2(p5list_to_a([v_level, v_wantarray, p5call(v_argument, 'emit_javascript2', [v_level, v_wantarray], 1)]), p5want));
							}
							else {
								return (p5pkg['Perlito5::Javascript2'].emit_func_javascript2([v_level, v_wantarray, ('return ' + p5str(p5call(v_argument, 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)))], p5want));
							}
							})()
					};
					tmp3617._prototype_ = null;
					return tmp3617
				})());
				p5typeglob_set('Perlito5::Javascript2', 'emit_wrap_statement_javascript2', (function () {
					var tmp3619;
					tmp3619 = function (List__, p5want) {
						try {
							var v_level;
							var v_wantarray;
							var v_argument;
							var tmp3620 = p5list_to_a([List__]);
							v_level = tmp3620.shift();
							v_wantarray = tmp3620.shift();
							v_argument = tmp3620.shift();
							(function () {
								if ( (p5str(v_wantarray) == 'void') ) {
								throw(p5context([v_argument], p5want));
							}
							})();
							return (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, v_wantarray, v_argument], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3619._prototype_ = null;
					return tmp3619
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::Javascript2::LexicalBlock');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::Javascript2::LexicalBlock', 'new', (function () {
					var tmp3621;
					tmp3621 = function (List__, p5want) {
						var v_class;
						v_class = (List__.shift());
						return (p5pkg['Perlito5::Javascript2::LexicalBlock'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
					};
					tmp3621._prototype_ = null;
					return tmp3621
				})());
				p5typeglob_set('Perlito5::Javascript2::LexicalBlock', 'block', (function () {
					var tmp3622;
					tmp3622 = function (List__, p5want) {
						return (List__.p5aget_hash(0)._hash_.p5hget('block'));
					};
					tmp3622._prototype_ = null;
					return tmp3622
				})());
				p5typeglob_set('Perlito5::Javascript2::LexicalBlock', 'has_decl', (function () {
					var tmp3623;
					tmp3623 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_type;
							v_type = (List__.p5aget(1));
							(function () {
								var v_decl;
								(function(){ var v_decl; p5for_lex(function (v) { v_decl = v }, function () {
										p5and(p5grep(p5pkg['Perlito5::Javascript2::LexicalBlock'], function (p5want) {
											return (((p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('decl')) == p5str(v_type))));
										}, p5list_to_a([p5call(v_decl, 'emit_javascript2_get_decl', [], 1)])), function () {
											throw(p5context([1], p5want))
										});
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Javascript2::LexicalBlock')]), false, '') })()
							})();
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3623._prototype_ = null;
					return tmp3623
				})());
				p5typeglob_set('Perlito5::Javascript2::LexicalBlock', 'emit_javascript2_subroutine_body', (function () {
					var tmp3624;
					tmp3624 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3625 = p5list_to_a([List__]);
							v_self = tmp3625.shift();
							v_level = tmp3625.shift();
							v_wantarray = tmp3625.shift();
						(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('top_level', (1));
						var v_outer_throw;
						v_outer_throw = (p5make_package('Perlito5')['v_THROW']);
						p5make_package('Perlito5')['v_THROW'] = (0);
						var v_s;
						v_s = (p5call(v_self, 'emit_javascript2', [v_level, v_wantarray], 0));
						p5make_package('Perlito5')['v_THROW'] = (v_outer_throw);
						return (p5context([v_s], p5want));
					};
					tmp3624._prototype_ = null;
					return tmp3624
				})());
				p5typeglob_set('Perlito5::Javascript2::LexicalBlock', 'emit_javascript2', (function () {
					var tmp3626;
					tmp3626 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp3627 = p5list_to_a([List__]);
							v_self = tmp3627.shift();
							v_level = tmp3627.shift();
							v_wantarray = tmp3627.shift();
							var v_original_level;
							v_original_level = (v_level);
							var List_block = [];
							(function () {
								var v_stmt;
								(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
										(function () {
											if ( (v_stmt != null) ) {
											List_block.p5push([v_stmt]);
										}
										})();
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Javascript2::LexicalBlock')]), false, '') })()
							})();
							(function () {
								if ( !( p5bool(List_block.length)) ) {
								p5and((p5str(v_wantarray) == 'list'), function () {
									throw(p5context(['return []'], p5want))
								});
								p5and((p5str(v_wantarray) == 'scalar'), function () {
									throw(p5context(['return null'], p5want))
								});
								p5and((p5str(v_wantarray) == 'runtime'), function () {
									throw(p5context(['return p5want ? [] : null'], p5want))
								});
								throw(p5context(['null;'], p5want));
							}
							})();
							var List_str = [];
							var v_has_local;
							v_has_local = (p5call(v_self, 'has_decl', ['local'], 0));
							var v_has_regex;
							v_has_regex = (0);
							(function () {
								if ( p5bool(p5grep(p5pkg['Perlito5::Javascript2::LexicalBlock'], function (p5want) {
									return ((p5call(p5make_package('main')['v__'], 'emit_javascript2_has_regex', [], 0)));
								}, p5list_to_a([List_block]))) ) {
								v_has_local = (1);
								v_has_regex = (1);
							}
							})();
							var v_create_context;
							v_create_context = (p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('create_context'), function () {
										return p5call(v_self, 'has_decl', ['my'], 0)
									}));
							var v_outer_pkg;
							v_outer_pkg = (p5make_package('Perlito5')['v_PKG_NAME']);
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) || p5bool(v_create_context)) ) {
								(function () {
									var tmp3628 = v_level;
									v_level = p5incr_(tmp3628);
									return tmp3628
								})();
							}
							})();
							var v_last_statement;
							(function () {
								if ( (p5str(v_wantarray) != 'void') ) {
								v_last_statement = (List_block.pop());
							}
							})();
							(function () {
								var v_decl;
								(function(){ var v_decl; p5for_lex(function (v) { v_decl = v }, function () {
										(function () {
											if ( ((p5pkg['Perlito5::Javascript2::LexicalBlock'].ref([v_decl], 0) == 'Perlito5::AST::Apply') && (p5str(p5call(v_decl, 'code', [], 0)) == 'package')) ) {
											p5make_package('Perlito5')['v_PKG_NAME'] = ((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('namespace'));
										}
										})();
										var List_var_decl = [];
										List_var_decl = p5list_to_a([p5call(v_decl, 'emit_javascript2_get_decl', [], 1)]);
										(function () {
											var v_arg;
											(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
													List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2_init', [v_level, v_wantarray], 1)]));
												}, p5list_to_a([List_var_decl]), false, '') })()
										})();
										(function () {
											if ( !( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(v_decl, 'decl', [], 0)) == 'my'))) ) {
											List_str.p5push([(p5str(p5call(v_decl, 'emit_javascript2', [v_level, 'void'], 0)) + ';')]);
										}
										})();
									}, p5list_to_a([List_block]), false, '') })()
							})();
							(function () {
								if ( p5bool(v_last_statement) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_last_statement, 'emit_javascript2_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
									(function () {
										if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_last_statement, 'code', [], 0)) == 'return') && (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) && p5bool(p5num(p5array_deref((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript2::LexicalBlock')))))) ) {
										v_last_statement = ((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::For'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::While'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::If'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Block'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Use'], 0)) || ((p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'goto')) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'return')))))))) ) {
										List_str.p5push(p5list_to_a([p5call(v_last_statement, 'emit_javascript2', [v_level, v_wantarray], 1)]));
									}
									else (function () {
										if ( p5bool(v_has_local) ) {
										List_str.p5push([('return p5cleanup_local(local_idx, (' + p5str(( (p5str(v_wantarray) == 'runtime') ? p5pkg['Perlito5::Javascript2'].to_runtime_context(p5list_to_a([(new p5ArrayRef([v_last_statement])), (p5num(v_level) + 1)]), 0) : ( (p5str(v_wantarray) == 'scalar') ? p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_last_statement])), (p5num(v_level) + 1)]), 0) : p5call(v_last_statement, 'emit_javascript2', [v_level, v_wantarray], 0)))) + '));')]);
									}
									else {
										List_str.p5push([('return (' + p5str(( (p5str(v_wantarray) == 'runtime') ? p5pkg['Perlito5::Javascript2'].to_runtime_context(p5list_to_a([(new p5ArrayRef([v_last_statement])), (p5num(v_level) + 1)]), 0) : ( (p5str(v_wantarray) == 'scalar') ? p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_last_statement])), (p5num(v_level) + 1)]), 0) : p5call(v_last_statement, 'emit_javascript2', [v_level, v_wantarray], 0)))) + ');')]);
									}
									})()
									})();
								})();
							}
							})();
							(function () {
								if ( p5bool(v_has_local) ) {
								List_str.p5unshift(p5list_to_a(['var local_idx = p5LOCAL.length;', ( p5bool(v_has_regex) ? p5context(['var regex_tmp = p5_regex_capture;', 'p5LOCAL.push(function(){ p5_regex_capture = regex_tmp });'], 1) : p5context([], 1))]));
								List_str.p5push(['p5cleanup_local(local_idx, null);']);
							}
							})();
							var v_out;
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) && p5bool(p5make_package('Perlito5')['v_THROW'])) ) {
								(function () {
									v_level = (v_original_level);
									var v_tab;
									v_tab = ((String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0))));
									v_out = (('try {' + p5str(v_tab) + p5pkg['Perlito5::Javascript2::LexicalBlock'].join([v_tab].concat(p5list_to_a([List_str])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + 'catch(err) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + 'if ( err instanceof Error ) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + 'throw(err);' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + 'else {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + p5str(( p5bool(v_has_local) ? 'return p5cleanup_local(local_idx, err)' : 'return(err)')) + ';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}'));
								})();
							}
							else (function () {
								if ( p5bool(v_create_context) ) {
								(function () {
									v_level = (v_original_level);
									var v_tab;
									v_tab = ((String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0))));
									v_out = (('(function () {' + p5str(v_tab) + p5pkg['Perlito5::Javascript2::LexicalBlock'].join([v_tab].concat(p5list_to_a([List_str])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '})();'));
								})();
							}
							else {
								(function () {
									v_level = (v_original_level);
									var v_tab;
									v_tab = ((String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0))));
									v_out = (p5pkg['Perlito5::Javascript2::LexicalBlock'].join([v_tab].concat(p5list_to_a([List_str])), 0));
								})();
							}
							})()
							})();
							p5make_package('Perlito5')['v_PKG_NAME'] = (v_outer_pkg);
							return (p5context([v_out], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3626._prototype_ = null;
					return tmp3626
				})());
				p5typeglob_set('Perlito5::Javascript2::LexicalBlock', 'emit_javascript2_has_regex', (function () {
					var tmp3629;
					tmp3629 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3629._prototype_ = null;
					return tmp3629
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_javascript2', (function () {
					var tmp3630;
					tmp3630 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3631 = p5list_to_a([List__]);
							v_self = tmp3631.shift();
							v_level = tmp3631.shift();
							v_wantarray = tmp3631.shift();
						return (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, p5call(p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]), 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 1)]), p5want));
					};
					tmp3630._prototype_ = null;
					return tmp3630
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_javascript2_program', (function () {
					var tmp3632;
					tmp3632 = function (List__, p5want) {
						var v_comp_units;
						var Hash_options = {};
						var tmp3633 = p5list_to_a([List__]);
							v_comp_units = tmp3633.shift();
							Hash_options = p5a_to_h(tmp3633);
							tmp3633 = [];
						p5make_package('Perlito5')['v_PKG_NAME'] = ('main');
						var v_level;
						v_level = (0);
						var v_wantarray;
						v_wantarray = ('void');
						var v_str;
						(function () {
								if ( p5bool(Hash_options.p5hget('expand_use')) ) {
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript2::Runtime', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript2::Array', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript2::CORE', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript2::IO', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript2::Sprintf', 'emit_javascript2', [], 0)))));
							}
							})();
						(v_str = ((p5str(v_str) + ('var p5want;' + String.fromCharCode(10) + 'var List__ = [];' + String.fromCharCode(10)))));
						(function () {
								var v_comp_unit;
								(function(){ var v_comp_unit; p5for_lex(function (v) { v_comp_unit = v }, function () {
										v_str = ((p5str(v_str) + p5str(p5call(v_comp_unit, 'emit_javascript2', [v_level, v_wantarray], 0)) + String.fromCharCode(10)));
									}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')]), false, '') })()
							})();
						return (p5context([v_str], p5want));
					};
					tmp3632._prototype_ = null;
					return tmp3632
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_javascript2_get_decl', (function () {
					var tmp3634;
					tmp3634 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3634._prototype_ = null;
					return tmp3634
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_javascript2_has_regex', (function () {
					var tmp3635;
					tmp3635 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3635._prototype_ = null;
					return tmp3635
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_javascript2', (function () {
					var tmp3636;
					tmp3636 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3637 = p5list_to_a([List__]);
							v_self = tmp3637.shift();
							v_level = tmp3637.shift();
							v_wantarray = tmp3637.shift();
						return ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('int'));
					};
					tmp3636._prototype_ = null;
					return tmp3636
				})());
				p5typeglob_set('Perlito5::AST::Int', 'emit_javascript2_get_decl', (function () {
					var tmp3638;
					tmp3638 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3638._prototype_ = null;
					return tmp3638
				})());
				p5typeglob_set('Perlito5::AST::Int', 'emit_javascript2_has_regex', (function () {
					var tmp3639;
					tmp3639 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3639._prototype_ = null;
					return tmp3639
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_javascript2', (function () {
					var tmp3640;
					tmp3640 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3641 = p5list_to_a([List__]);
							v_self = tmp3641.shift();
							v_level = tmp3641.shift();
							v_wantarray = tmp3641.shift();
						return ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('num'));
					};
					tmp3640._prototype_ = null;
					return tmp3640
				})());
				p5typeglob_set('Perlito5::AST::Num', 'emit_javascript2_get_decl', (function () {
					var tmp3642;
					tmp3642 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3642._prototype_ = null;
					return tmp3642
				})());
				p5typeglob_set('Perlito5::AST::Num', 'emit_javascript2_has_regex', (function () {
					var tmp3643;
					tmp3643 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3643._prototype_ = null;
					return tmp3643
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_javascript2', (function () {
					var tmp3644;
					tmp3644 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3645 = p5list_to_a([List__]);
							v_self = tmp3645.shift();
							v_level = tmp3645.shift();
							v_wantarray = tmp3645.shift();
						return (p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('buf')]), p5want));
					};
					tmp3644._prototype_ = null;
					return tmp3644
				})());
				p5typeglob_set('Perlito5::AST::Buf', 'emit_javascript2_get_decl', (function () {
					var tmp3646;
					tmp3646 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3646._prototype_ = null;
					return tmp3646
				})());
				p5typeglob_set('Perlito5::AST::Buf', 'emit_javascript2_has_regex', (function () {
					var tmp3647;
					tmp3647 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3647._prototype_ = null;
					return tmp3647
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_javascript2', (function () {
					var tmp3648;
					tmp3648 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3649 = p5list_to_a([List__]);
							v_self = tmp3649.shift();
							v_level = tmp3649.shift();
							v_wantarray = tmp3649.shift();
						var v_body;
						(function () {
								if ( (p5str(v_wantarray) != 'void') ) {
								v_body = (p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 0));
							}
							else {
								v_body = (p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 0));
							}
							})();
						var v_init;
						v_init = ('');
						(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == 'INIT') ) {
								(function () {
									var v_tmp;
									v_tmp = (('p5pkg.main.' + p5str(p5pkg['Perlito5::Javascript2'].get_label([], 0))));
									v_init = ((p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + ('if (' + p5str(v_tmp) + ') { return }; ' + p5str(v_tmp) + ' = 1;' + String.fromCharCode(10))));
								})();
							}
							})();
						return (p5context([(p5str(( (p5str(v_wantarray) != 'void') ? 'return ' : '')) + 'p5block(' + 'function (v) {}, ' + 'function () {' + String.fromCharCode(10) + p5str(v_init) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + p5str(p5call(v_body, 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + '[0], ' + p5str(p5call(v_self, 'emit_javascript2_continue', [v_level, v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})]), 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + ')')], p5want));
					};
					tmp3648._prototype_ = null;
					return tmp3648
				})());
				p5typeglob_set('Perlito5::AST::Block', 'emit_javascript2_continue', (function () {
					var tmp3650;
					tmp3650 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							(function () {
								if ( (!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue'))) || !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block'))))) ) {
								throw(p5context(['false'], p5want));
							}
							})();
							return (p5context([('function () {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue'), 'stmts', [], 1)]), 0)], 0), 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3650._prototype_ = null;
					return tmp3650
				})());
				p5typeglob_set('Perlito5::AST::Block', 'emit_javascript2_get_decl', (function () {
					var tmp3651;
					tmp3651 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3651._prototype_ = null;
					return tmp3651
				})());
				p5typeglob_set('Perlito5::AST::Block', 'emit_javascript2_has_regex', (function () {
					var tmp3652;
					tmp3652 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3652._prototype_ = null;
					return tmp3652
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript2', (function () {
					var tmp3653;
					tmp3653 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_autovivification_type;
							var tmp3654 = p5list_to_a([List__]);
							v_self = tmp3654.shift();
							v_level = tmp3654.shift();
							v_wantarray = tmp3654.shift();
							v_autovivification_type = tmp3654.shift();
							var v_method;
							v_method = (p5or(v_autovivification_type, function () {
										return 'p5aget'
									}));
							p5and((p5str(v_autovivification_type) == 'array'), function () {
								return v_method = ('p5aget_array')
							});
							p5and((p5str(v_autovivification_type) == 'hash'), function () {
								return v_method = ('p5aget_hash')
							});
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'code', [], 0)) == 'circumfix:<( )>')))) ) {
								throw(p5context([('p5list_slice(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_javascript2', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								(function () {
									var v_obj;
									v_obj = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									p5and((p5str((v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget('sigil')) == '%'), function () {
										return (v_obj || (v_obj = new p5HashRef({})))._hash_.p5hset('sigil', ('@'))
									});
									p5and((p5str((v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<%>'), function () {
										return (v_obj || (v_obj = new p5HashRef({})))._hash_.p5hset('code', ('prefix:<@>'))
									});
									throw(p5context([('p5hash_slice(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_javascript2', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_javascript2_container', [v_level], 0)) + '.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3653._prototype_ = null;
					return tmp3653
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript2_set', (function () {
					var tmp3655;
					tmp3655 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp3656 = p5list_to_a([List__]);
							v_self = tmp3656.shift();
							v_arguments = tmp3656.shift();
							v_level = tmp3656.shift();
							v_wantarray = tmp3656.shift();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var src=' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), v_level]), 0)) + ';'), ('var out=' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + ';'), ('var tmp' + ';'), 'for (var i=0, l=v.length; i<l; ++i) {', (new p5ArrayRef(['tmp = src.p5aget(i);', 'out.p5aset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_javascript2_container', [v_level], 0)) + '.p5aset(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3655._prototype_ = null;
					return tmp3655
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript2_set_list', (function () {
					var tmp3657;
					tmp3657 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp3658 = p5list_to_a([List__]);
							v_self = tmp3658.shift();
							v_level = tmp3658.shift();
							v_list = tmp3658.shift();
							var v_wantarray;
							v_wantarray = ('list');
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var out=' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + ';'), ('var tmp' + ';'), 'for (var i=0, l=v.length; i<l; ++i) {', (new p5ArrayRef([('tmp = ' + p5str(v_list) + '.shift();'), 'out.p5aset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_javascript2_container', [v_level], 0)) + '.p5aset(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3657._prototype_ = null;
					return tmp3657
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript2_container', (function () {
					var tmp3659;
					tmp3659 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj'), 'Perlito5::AST::Index'), 'code', 'prefix:<@>']), 0));
									throw(p5call(v_v, 'emit_javascript2', [v_level], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'code', [], 0)) == 'circumfix:<( )>')) ) {
								throw(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj')]))), v_level]), p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hset('sigil', ('@'));
								(function () {
									throw(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_javascript2', [v_level], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + '._array_')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3659._prototype_ = null;
					return tmp3659
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript2_get_decl', (function () {
					var tmp3660;
					tmp3660 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3660._prototype_ = null;
					return tmp3660
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript2_has_regex', (function () {
					var tmp3661;
					tmp3661 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3661._prototype_ = null;
					return tmp3661
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript2', (function () {
					var tmp3662;
					tmp3662 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_autovivification_type;
							var tmp3663 = p5list_to_a([List__]);
							v_self = tmp3663.shift();
							v_level = tmp3663.shift();
							v_wantarray = tmp3663.shift();
							v_autovivification_type = tmp3663.shift();
							var v_method;
							v_method = (p5or(v_autovivification_type, function () {
										return 'p5hget'
									}));
							p5and((p5str(v_autovivification_type) == 'array'), function () {
								return v_method = ('p5hget_array')
							});
							p5and((p5str(v_autovivification_type) == 'hash'), function () {
								return v_method = ('p5hget_hash')
							});
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(function () {
									var v_v;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) ) {
										v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									}
									})();
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5context([('p5list_lookup_slice(' + p5str(p5call(v_v, 'emit_javascript2', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								(function () {
									var v_v;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) ) {
										v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									}
									})();
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5context([('p5hash_lookup_slice(' + p5str(p5call(v_v, 'emit_javascript2', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_javascript2_container', [v_level], 0)) + '.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Javascript2'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3662._prototype_ = null;
					return tmp3662
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript2_set', (function () {
					var tmp3664;
					tmp3664 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp3665 = p5list_to_a([List__]);
							v_self = tmp3665.shift();
							v_arguments = tmp3665.shift();
							v_level = tmp3665.shift();
							v_wantarray = tmp3665.shift();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(function () {
									var v_v;
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0), function () {
										return v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'))
									});
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var src=' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), v_level]), 0)) + ';'), ('var out=' + p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + ';'), ('var tmp' + ';'), ('for (var i=0, l=v.length; i<l; ++i)' + '{'), (new p5ArrayRef(['tmp = src.p5hget(i);', 'out.p5hset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_javascript2_container', [v_level], 0)) + '.p5hset(' + p5str(p5pkg['Perlito5::Javascript2'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3664._prototype_ = null;
					return tmp3664
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript2_set_list', (function () {
					var tmp3666;
					tmp3666 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp3667 = p5list_to_a([List__]);
							v_self = tmp3667.shift();
							v_level = tmp3667.shift();
							v_list = tmp3667.shift();
							var v_wantarray;
							v_wantarray = ('list');
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(function () {
									var v_v;
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0), function () {
										return v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'))
									});
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var out=' + p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + ';'), ('var tmp' + ';'), ('for (var i=0, l=v.length; i<l; ++i)' + '{'), (new p5ArrayRef([('tmp = ' + p5str(v_list) + '.shift();'), 'out.p5hset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_javascript2_container', [v_level], 0)) + '.p5hset(' + p5str(p5pkg['Perlito5::Javascript2'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3666._prototype_ = null;
					return tmp3666
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript2_container', (function () {
					var tmp3668;
					tmp3668 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj'), 'Perlito5::AST::Lookup'), 'code', 'prefix:<%>']), 0));
									throw(p5call(v_v, 'emit_javascript2', [v_level], p5want));
								})();
							}
							})();
							return (function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								var v_v;
								v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj'), 'Perlito5::AST::Lookup'), 'sigil', '%']), 0));
								(function () {
									throw(p5call(v_v, 'emit_javascript2', [v_level], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'hash']), 0)) + '._hash_')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3668._prototype_ = null;
					return tmp3668
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript2_get_decl', (function () {
					var tmp3669;
					tmp3669 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3669._prototype_ = null;
					return tmp3669
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript2_has_regex', (function () {
					var tmp3670;
					tmp3670 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3670._prototype_ = null;
					return tmp3670
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				var v_table;
				v_table = ((new p5HashRef({'$' : 'v_', '@' : 'List_', '%' : 'Hash_', '&' : ''})));
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript2_global', (function () {
					var tmp3671;
					tmp3671 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp3672 = p5list_to_a([List__]);
							v_self = tmp3672.shift();
							v_level = tmp3672.shift();
							v_wantarray = tmp3672.shift();
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							var v_namespace;
							v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_namespace')
									}));
							(function () {
								if ( ((p5str(v_sigil) == '@') && ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == '_') && (p5str(v_namespace) == 'main'))) ) {
								(function () {
									var v_s;
									v_s = ('List__');
									(function () {
										if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
										throw(p5context([('(' + p5str(v_s) + '.length - 1)')], p5want));
									}
									})();
									(function () {
										if ( (p5str(v_wantarray) == 'scalar') ) {
										throw(p5context([(p5str(v_s) + '.length')], p5want));
									}
									})();
									(function () {
										if ( (p5str(v_wantarray) == 'runtime') ) {
										throw(p5context([('(p5want' + ' ? ' + p5str(v_s) + ' : ' + p5str(v_s) + '.length' + ')')], p5want));
									}
									})();
									throw(p5context([v_s], p5want));
								})();
							}
							})();
							(function () {
								if ( ((p5str(v_sigil) == '$') && (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) > 0)) ) {
								throw(p5context([('p5_regex_capture[' + p5str((p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) - 1)) + ']')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '::') ) {
								p5and((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == '__PACKAGE__'), function () {
									throw(p5pkg['Perlito5::Javascript2'].pkg([], p5want))
								});
								p5and((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == '__SUB__'), function () {
									throw(p5defined_or(p5make_package('Perlito5::AST::Sub')['v_SUB_REF'], function () {
										return '__SUB__'
									}))
								});
								throw(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], p5want));
							}
							})();
							var v_s;
							v_s = (('p5make_package(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + ')[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([(p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name))], 0)) + ']'));
							(function () {
								if ( (p5str(v_sigil) == '*') ) {
								throw(p5context([v_s], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '&') ) {
								throw(p5context([(p5str(v_s) + '(List__, ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								v_s = ((p5str(v_s) + ' || (' + p5str(v_s) + ' = [])'));
								v_s = (('p5pkg[' + p5str(v_s) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + '][' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([(p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name))], 0)) + ']'));
								(function () {
									if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
									throw(p5context([('(' + p5str(v_s) + '.length - 1)')], p5want));
								}
								})();
								(function () {
									if ( (p5str(v_wantarray) == 'scalar') ) {
									throw(p5context([(p5str(v_s) + '.length')], p5want));
								}
								})();
							}
							else (function () {
								if ( (p5str(v_sigil) == '%') ) {
								v_s = ((p5str(v_s) + ' || (' + p5str(v_s) + ' = {})'));
								v_s = (('p5pkg[' + p5str(v_s) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + '][' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([(p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name))], 0)) + ']'));
							}
							})()
							})();
							return (p5context([v_s], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3671._prototype_ = null;
					return tmp3671
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript2', (function () {
					var tmp3673;
					tmp3673 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp3674 = p5list_to_a([List__]);
							v_self = tmp3674.shift();
							v_level = tmp3674.shift();
							v_wantarray = tmp3674.shift();
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							var v_decl_type;
							v_decl_type = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
										return 'global'
									}));
							(function () {
								if ( (p5str(v_decl_type) != 'my') ) {
								throw(p5call(v_self, 'emit_javascript2_global', [v_level, v_wantarray], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								(function () {
									if ( (p5str(v_wantarray) == 'scalar') ) {
									throw(p5context([(p5str(p5call(v_self, 'emit_javascript2', [v_level, 'list'], 0)) + '.length')], p5want));
								}
								})();
								(function () {
									if ( (p5str(v_wantarray) == 'runtime') ) {
									throw(p5context([('(p5want' + ' ? ' + p5str(p5call(v_self, 'emit_javascript2', [v_level, 'list'], 0)) + ' : ' + p5str(p5call(v_self, 'emit_javascript2', [v_level, 'list'], 0)) + '.length' + ')')], p5want));
								}
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
								throw(p5context([('(' + p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget('@')) + p5str(v_str_name) + '.length - 1)')], p5want));
							}
							})();
							return (p5context([(p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name))], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3673._prototype_ = null;
					return tmp3673
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript2_set', (function () {
					var tmp3675;
					tmp3675 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp3676 = p5list_to_a([List__]);
							v_self = tmp3676.shift();
							v_arguments = tmp3676.shift();
							v_level = tmp3676.shift();
							v_wantarray = tmp3676.shift();
							var v_open;
							v_open = (( (p5str(v_wantarray) == 'void') ? '' : '('));
							var v_close;
							v_close = (( (p5str(v_wantarray) == 'void') ? '' : ')'));
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							(function () {
								if ( (p5str(v_sigil) == '$') ) {
								throw(p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_javascript2', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + p5str(v_close))], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								(function () {
									if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
									(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('sigil', ('@'));
									throw(p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_javascript2', [], 0)) + '.length = 1 + ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + p5str(v_close))], p5want));
								}
								})();
								throw(p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_javascript2', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + p5str(v_close))], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '%') ) {
								throw(p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_javascript2', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1), 'hash']), 0)) + p5str(v_close))], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '*') ) {
								(function () {
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_namespace')
											}));
									throw(p5context([('p5typeglob_set(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to variable ', v_sigil, p5call(v_self, 'name', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3675._prototype_ = null;
					return tmp3675
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript2_set_list', (function () {
					var tmp3677;
					tmp3677 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp3678 = p5list_to_a([List__]);
							v_self = tmp3678.shift();
							v_level = tmp3678.shift();
							v_list = tmp3678.shift();
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							(function () {
								if ( (p5str(v_sigil) == '$') ) {
								throw(p5context([(p5str(p5call(v_self, 'emit_javascript2', [], 0)) + ' = ' + p5str(v_list) + '.shift()')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								throw(p5context([p5pkg['Perlito5::AST::Var'].join([(';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat([(p5str(p5call(v_self, 'emit_javascript2', [], 0)) + ' = ' + p5str(v_list)), (p5str(v_list) + ' = []')]), p5want)], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '%') ) {
								throw(p5context([p5pkg['Perlito5::AST::Var'].join([(';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat([(p5str(p5call(v_self, 'emit_javascript2', [], 0)) + ' = p5a_to_h(' + p5str(v_list) + ')'), (p5str(v_list) + ' = []')]), p5want)], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to variable ', v_sigil, p5call(v_self, 'name', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3677._prototype_ = null;
					return tmp3677
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript2_get_decl', (function () {
					var tmp3679;
					tmp3679 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3679._prototype_ = null;
					return tmp3679
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript2_has_regex', (function () {
					var tmp3680;
					tmp3680 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3680._prototype_ = null;
					return tmp3680
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript2', (function () {
					var tmp3681;
					tmp3681 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp3682 = p5list_to_a([List__]);
							v_self = tmp3682.shift();
							v_level = tmp3682.shift();
							v_wantarray = tmp3682.shift();
						return (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript2', [v_level], p5want));
					};
					tmp3681._prototype_ = null;
					return tmp3681
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript2_init', (function () {
					var tmp3683;
					tmp3683 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp3684 = p5list_to_a([List__]);
							v_self = tmp3684.shift();
							v_level = tmp3684.shift();
							v_wantarray = tmp3684.shift();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'local') ) {
								(function () {
									var v_var;
									v_var = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'));
									var v_var_set;
									var v_tmp_name;
									v_tmp_name = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
									(function () {
										if ( (p5pkg['Perlito5::AST::Decl'].ref([v_var], 0) == 'Perlito5::AST::Var') ) {
										v_var_set = ((p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ' = v_' + p5str(v_tmp_name)));
									}
									else {
										(function () {
											var v_tmp;
											v_tmp = (p5call('Perlito5::AST::Var', 'new', ['sigil', '$', 'name', v_tmp_name, '_decl', 'my'], 0));
											v_var_set = (p5call(v_var, 'emit_javascript2_set', [v_tmp], 0));
										})();
									}
									})();
									throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, v_wantarray, ('var v_' + p5str(v_tmp_name) + ' = ' + p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ';'), ('p5LOCAL.push(function(){ ' + p5str(v_var_set) + ' });'), ('return ' + p5str(p5call(v_var, 'emit_javascript2_set', p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'undef', 'arguments', (new p5ArrayRef([])), 'namespace', '']), 1), (p5num(v_level) + 1)]), 0)) + ';')], 0)) + ';')], p5want));
								})();
							}
							})();
							return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'my') ) {
								var v_str;
								v_str = (('var ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript2', [], 0))));
								(function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '%') ) {
									v_str = ((p5str(v_str) + ' = {};'));
								}
								else (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '@') ) {
									v_str = ((p5str(v_str) + ' = [];'));
								}
								else {
									v_str = ((p5str(v_str) + ';'));
								}
								})()
								})();
								(function () {
									throw(p5context([v_str], p5want))
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'our') ) {
								var v_str;
								v_str = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript2', [], 0));
								(function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '%') ) {
									v_str = ((p5str(v_str) + ' = {};'));
								}
								else (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '@') ) {
									v_str = ((p5str(v_str) + ' = [];'));
								}
								else {
									throw(p5context([('// our ' + p5str(v_str))], p5want));
								}
								})()
								})();
								(function () {
									throw(p5context([('if (typeof ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript2', [], 0)) + ' == "undefined" ) { ' + p5str(v_str) + '}')], p5want))
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'state') ) {
								(function () {
									throw(p5context([('// state ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript2', [], 0)))], p5want))
								})()
							}
							else {
								return (p5pkg['Perlito5::AST::Decl'].die([].concat([('not implemented: Perlito5::AST::Decl ' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) + String.fromCharCode(39))]), p5want));
							}
							})()
							})()
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3683._prototype_ = null;
					return tmp3683
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript2_set', (function () {
					var tmp3685;
					tmp3685 = function (List__, p5want) {
						var v_self;
						var v_arguments;
						var v_level;
						var v_wantarray;
						var tmp3686 = p5list_to_a([List__]);
							v_self = tmp3686.shift();
							v_arguments = tmp3686.shift();
							v_level = tmp3686.shift();
							v_wantarray = tmp3686.shift();
						return (p5call(p5call(v_self, 'var', [], 0), 'emit_javascript2_set', [v_arguments, v_level, v_wantarray], p5want));
					};
					tmp3685._prototype_ = null;
					return tmp3685
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript2_set_list', (function () {
					var tmp3687;
					tmp3687 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_list;
						var tmp3688 = p5list_to_a([List__]);
							v_self = tmp3688.shift();
							v_level = tmp3688.shift();
							v_list = tmp3688.shift();
						return (p5call(p5call(v_self, 'var', [], 0), 'emit_javascript2_set_list', [v_level, v_list], p5want));
					};
					tmp3687._prototype_ = null;
					return tmp3687
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript2_get_decl', (function () {
					var tmp3689;
					tmp3689 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						return (p5context([v_self], p5want));
					};
					tmp3689._prototype_ = null;
					return tmp3689
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript2_has_regex', (function () {
					var tmp3690;
					tmp3690 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3690._prototype_ = null;
					return tmp3690
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_javascript2', (function () {
					var tmp3691;
					tmp3691 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_autovivification_type;
							var tmp3692 = p5list_to_a([List__]);
							v_self = tmp3692.shift();
							v_level = tmp3692.shift();
							v_wantarray = tmp3692.shift();
							v_autovivification_type = tmp3692.shift();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<[ ]>') ) {
								(function () {
									var v_method;
									v_method = (p5or(v_autovivification_type, function () {
												return 'p5aget'
											}));
									p5and((p5str(v_autovivification_type) == 'array'), function () {
										return v_method = ('p5aget_array')
									});
									p5and((p5str(v_autovivification_type) == 'hash'), function () {
										return v_method = ('p5aget_hash')
									});
									throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '._array_.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<{ }>') ) {
								(function () {
									var v_method;
									v_method = (p5or(v_autovivification_type, function () {
												return 'p5hget'
											}));
									p5and((p5str(v_autovivification_type) == 'array'), function () {
										return v_method = ('p5hget_array')
									});
									p5and((p5str(v_autovivification_type) == 'hash'), function () {
										return v_method = ('p5hget_hash')
									});
									throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '._hash_.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Javascript2'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1), 'list']), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								(function () {
									var v_invocant;
									(function () {
										if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										(function () {
											var v_arg;
											v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget_array('arguments')._array_.p5aget(0));
											v_invocant = (('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ')'));
										})();
									}
									else (function () {
										if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '&')) ) {
										v_invocant = (('p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})]), 0)) + '][' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('name')]), 0)) + ']'));
									}
									else {
										v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_javascript2', [v_level, 'scalar'], 0));
									}
									})()
									})();
									throw(p5context([('(' + p5str(v_invocant) + ')(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_javascript2', [v_level, 'scalar'], 0));
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_javascript2', [v_level, 'scalar'], 0));
							}
							else {
								v_meth = (p5pkg['Perlito5::Javascript2'].escape_string([v_meth], 0));
							}
							})();
							return (p5context([('p5call(' + p5str(v_invocant) + ', ' + p5str(v_meth) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3691._prototype_ = null;
					return tmp3691
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_javascript2_set', (function () {
					var tmp3693;
					tmp3693 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp3694 = p5list_to_a([List__]);
							v_self = tmp3694.shift();
							v_arguments = tmp3694.shift();
							v_level = tmp3694.shift();
							v_wantarray = tmp3694.shift();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '._array_.p5aset(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '._hash_.p5hset(' + p5str(p5pkg['Perlito5::Javascript2'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1), 'list']), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Call'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to method ', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3693._prototype_ = null;
					return tmp3693
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_javascript2_set_list', (function () {
					var tmp3695;
					tmp3695 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp3696 = p5list_to_a([List__]);
							v_self = tmp3696.shift();
							v_level = tmp3696.shift();
							v_list = tmp3696.shift();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '._array_.p5aset(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '._hash_.p5hset(' + p5str(p5pkg['Perlito5::Javascript2'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1), 'list']), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Call'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to method ', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3695._prototype_ = null;
					return tmp3695
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_javascript2_get_decl', (function () {
					var tmp3697;
					tmp3697 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3697._prototype_ = null;
					return tmp3697
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_javascript2_has_regex', (function () {
					var tmp3698;
					tmp3698 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp3698._prototype_ = null;
					return tmp3698
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Apply', 'emit_regex_javascript2', (function () {
					var tmp3699;
					tmp3699 = function (List__, p5want) {
						try {
							var v_op;
							v_op = (List__.shift());
							var v_var;
							v_var = (List__.shift());
							var v_regex;
							v_regex = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							(function () {
								if ( p5bool(p5call(v_regex, 'isa', ['Perlito5::AST::Var'], 0)) ) {
								v_regex = ((new p5HashRef(p5a_to_h(p5list_to_a(['code', 'p5:m', 'arguments', (new p5ArrayRef([v_regex, '']))])))));
							}
							})();
							var v_str;
							var v_code;
							v_code = ((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('code'));
							var v_regex_args;
							v_regex_args = ((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('arguments'));
							(function () {
								if ( (p5str(v_code) == 'p5:s') ) {
								(function () {
									var v_replace;
									v_replace = ((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1));
									var v_modifier;
									v_modifier = ((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(2)._hash_.p5hget('buf'));
									var v_fun;
									(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_replace], 0) == 'Perlito5::AST::Block') ) {
										var local_idx = p5LOCAL.length;
										var regex_tmp = p5_regex_capture;
										p5LOCAL.push(function(){ p5_regex_capture = regex_tmp });
										v_replace = (p5call('Perlito5::AST::Sub', 'new', ['block', v_replace], 0));
										v_fun = (p5call(v_replace, 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0));
										(function () {
												var tmp = p5s(v_modifier, 'e', function () {
													return ''
												}, 'g', 0);
												v_modifier = tmp[0];
												return tmp[1];
											})();
										p5cleanup_local(local_idx, null);
									}
									else {
										v_fun = (p5pkg['Perlito5::Javascript2'].emit_function_javascript2([(p5num(v_level) + 2), v_wantarray, v_replace], 0));
									}
									})();
									v_str = (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([(p5num(v_level) + 1), v_wantarray, ('var tmp = p5s(' + p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), 'emit_javascript2', [], 0)) + ', ' + p5str(v_fun) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_modifier], 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ');'), (p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ' = tmp[0];'), 'return tmp[1];'], 0));
								})();
							}
							else (function () {
								if ( (p5str(v_code) == 'p5:m') ) {
								v_str = (('p5m(' + p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), 'emit_javascript2', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(1)._hash_.p5hget('buf')]), 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')'));
							}
							else (function () {
								if ( (p5str(v_code) == 'p5:tr') ) {
								v_str = (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([(p5num(v_level) + 1), v_wantarray, ('var tmp = p5tr(' + p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), 'emit_javascript2', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1), 'emit_javascript2', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(2)._hash_.p5hget('buf')]), 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ');'), (p5str(p5call(v_var, 'emit_javascript2', [], 0)) + ' = tmp[0];'), 'return tmp[1];'], 0));
							}
							else {
								p5pkg['Perlito5::AST::Apply'].die([].concat([('Error: regex emitter - unknown operator ' + p5str(v_code))]), null);
							}
							})()
							})()
							})();
							(function () {
								if ( (p5str(v_op) == '=~') ) {
								throw(p5context([v_str], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_op) == '!~') ) {
								throw(p5context([('!(' + p5str(v_str) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Apply'].die([].concat(['Error: regex emitter']), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3699._prototype_ = null;
					return tmp3699
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_javascript2_set', (function () {
					var tmp3700;
					tmp3700 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp3701 = p5list_to_a([List__]);
							v_self = tmp3701.shift();
							v_arguments = tmp3701.shift();
							v_level = tmp3701.shift();
							v_wantarray = tmp3701.shift();
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( (p5str(v_code) == 'prefix:<$>') ) {
								throw(p5context([('p5scalar_deref_set(' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (p5num(v_level) + 1), 'scalar']), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<*>') ) {
								throw(p5context([('p5typeglob_deref_set(' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							}
							})();
							var v_open;
							v_open = (( (p5str(v_wantarray) == 'void') ? '' : '('));
							var v_close;
							v_close = (( (p5str(v_wantarray) == 'void') ? '' : ')'));
							return (p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_javascript2', [(p5num(v_level) + 1)], 0)) + ' = ' + p5str(p5call(v_arguments, 'emit_javascript2', [(p5num(v_level) + 1)], 0)) + p5str(v_close))], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp3700._prototype_ = null;
					return tmp3700
				})());
				var Hash_emit_js = {};
				Hash_emit_js = p5a_to_h(['infix:<=~>', (function () {
							var tmp3864;
							tmp3864 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3865 = p5list_to_a([List__]);
									v_self = tmp3865.shift();
									v_level = tmp3865.shift();
									v_wantarray = tmp3865.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript2(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level, v_wantarray]), p5want));
							};
							tmp3864._prototype_ = null;
							return tmp3864
						})(), 'infix:<!~>', (function () {
							var tmp3866;
							tmp3866 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3867 = p5list_to_a([List__]);
									v_self = tmp3867.shift();
									v_level = tmp3867.shift();
									v_wantarray = tmp3867.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript2(p5list_to_a(['!~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level, v_wantarray]), p5want));
							};
							tmp3866._prototype_ = null;
							return tmp3866
						})(), 'p5:s', (function () {
							var tmp3868;
							tmp3868 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3869 = p5list_to_a([List__]);
									v_self = tmp3869.shift();
									v_level = tmp3869.shift();
									v_wantarray = tmp3869.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript2(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(3), v_self, v_level, v_wantarray]), p5want));
							};
							tmp3868._prototype_ = null;
							return tmp3868
						})(), 'p5:m', (function () {
							var tmp3870;
							tmp3870 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3871 = p5list_to_a([List__]);
									v_self = tmp3871.shift();
									v_level = tmp3871.shift();
									v_wantarray = tmp3871.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript2(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2), v_self, v_level, v_wantarray]), p5want));
							};
							tmp3870._prototype_ = null;
							return tmp3870
						})(), 'p5:tr', (function () {
							var tmp3872;
							tmp3872 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3873 = p5list_to_a([List__]);
									v_self = tmp3873.shift();
									v_level = tmp3873.shift();
									v_wantarray = tmp3873.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript2(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(3), v_self, v_level, v_wantarray]), p5want));
							};
							tmp3872._prototype_ = null;
							return tmp3872
						})(), 'p5:qr', (function () {
							var tmp3874;
							tmp3874 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3875 = p5list_to_a([List__]);
									v_self = tmp3875.shift();
									v_level = tmp3875.shift();
									v_wantarray = tmp3875.shift();
								return (p5context([('p5qr(' + p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp3874._prototype_ = null;
							return tmp3874
						})(), '__PACKAGE__', (function () {
							var tmp3876;
							tmp3876 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], p5want));
							};
							tmp3876._prototype_ = null;
							return tmp3876
						})(), '__SUB__', (function () {
							var tmp3877;
							tmp3877 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5defined_or(p5make_package('Perlito5::AST::Sub')['v_SUB_REF'], function () {
											return '__SUB__'
										}));
							};
							tmp3877._prototype_ = null;
							return tmp3877
						})(), 'wantarray', (function () {
							var tmp3878;
							tmp3878 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context(['p5want'], p5want));
							};
							tmp3878._prototype_ = null;
							return tmp3878
						})(), 'package', (function () {
							var tmp3879;
							tmp3879 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5make_package(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')]), 0)) + ')')], p5want));
							};
							tmp3879._prototype_ = null;
							return tmp3879
						})(), 'infix:<~~>', (function () {
							var tmp3880;
							tmp3880 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3881 = p5list_to_a([List__]);
									v_self = tmp3881.shift();
									v_level = tmp3881.shift();
									v_wantarray = tmp3881.shift();
								var v_arg0;
								v_arg0 = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_arg1;
								v_arg1 = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1));
								return (p5context([('p5smrt_scalar(' + p5str(p5call(v_arg0, 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5call(v_arg1, 'emit_javascript2', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp3880._prototype_ = null;
							return tmp3880
						})(), 'infix:<&&>', (function () {
							var tmp3882;
							tmp3882 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3883 = p5list_to_a([List__]);
									v_self = tmp3883.shift();
									v_level = tmp3883.shift();
									v_wantarray = tmp3883.shift();
								return (p5context([('p5and(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp3882._prototype_ = null;
							return tmp3882
						})(), 'infix:<and>', (function () {
							var tmp3884;
							tmp3884 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3885 = p5list_to_a([List__]);
									v_self = tmp3885.shift();
									v_level = tmp3885.shift();
									v_wantarray = tmp3885.shift();
								return (p5context([('p5and(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp3884._prototype_ = null;
							return tmp3884
						})(), 'infix:<||>', (function () {
							var tmp3886;
							tmp3886 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3887 = p5list_to_a([List__]);
									v_self = tmp3887.shift();
									v_level = tmp3887.shift();
									v_wantarray = tmp3887.shift();
								return (p5context([('p5or(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp3886._prototype_ = null;
							return tmp3886
						})(), 'infix:<or>', (function () {
							var tmp3888;
							tmp3888 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3889 = p5list_to_a([List__]);
									v_self = tmp3889.shift();
									v_level = tmp3889.shift();
									v_wantarray = tmp3889.shift();
								return (p5context([('p5or(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp3888._prototype_ = null;
							return tmp3888
						})(), 'infix:<xor>', (function () {
							var tmp3890;
							tmp3890 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3891 = p5list_to_a([List__]);
									v_self = tmp3891.shift();
									v_level = tmp3891.shift();
									v_wantarray = tmp3891.shift();
								return (p5context([('p5xor(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp3890._prototype_ = null;
							return tmp3890
						})(), 'infix:<=>>', (function () {
							var tmp3892;
							tmp3892 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3893 = p5list_to_a([List__]);
									v_self = tmp3893.shift();
									v_level = tmp3893.shift();
									v_wantarray = tmp3893.shift();
								return (p5context([(p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0), 'emit_javascript2', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_javascript2', [v_level], 0)))], p5want));
							};
							tmp3892._prototype_ = null;
							return tmp3892
						})(), 'infix:<cmp>', (function () {
							var tmp3894;
							tmp3894 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5cmp(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_str([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp3894._prototype_ = null;
							return tmp3894
						})(), 'infix:<<=>>', (function () {
							var tmp3895;
							tmp3895 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5cmp(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp3895._prototype_ = null;
							return tmp3895
						})(), 'infix:<**>', (function () {
							var tmp3896;
							tmp3896 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('Math.pow(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp3896._prototype_ = null;
							return tmp3896
						})(), 'infix:<<<>', (function () {
							var tmp3897;
							tmp3897 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5shift_left(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp3897._prototype_ = null;
							return tmp3897
						})(), 'infix:<%>', (function () {
							var tmp3898;
							tmp3898 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5modulo(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp3898._prototype_ = null;
							return tmp3898
						})(), 'prefix:<!>', (function () {
							var tmp3899;
							tmp3899 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								return (p5context([('!( ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ')')], p5want));
							};
							tmp3899._prototype_ = null;
							return tmp3899
						})(), 'prefix:<not>', (function () {
							var tmp3900;
							tmp3900 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_arg;
									v_arg = (p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').pop());
									(function () {
										if ( !( p5bool(v_arg)) ) {
										throw(p5context(['true'], p5want));
									}
									})();
									return (p5context([('!( ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool([v_arg, v_level], 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3900._prototype_ = null;
							return tmp3900
						})(), 'prefix:<~>', (function () {
							var tmp3901;
							tmp3901 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5complement( ' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ')')], p5want));
							};
							tmp3901._prototype_ = null;
							return tmp3901
						})(), 'prefix:<->', (function () {
							var tmp3902;
							tmp3902 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3903 = p5list_to_a([List__]);
									v_self = tmp3903.shift();
									v_level = tmp3903.shift();
									v_wantarray = tmp3903.shift();
								return (p5context([('p5negative( ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp3902._prototype_ = null;
							return tmp3902
						})(), 'prefix:<+>', (function () {
							var tmp3904;
							tmp3904 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3905 = p5list_to_a([List__]);
									v_self = tmp3905.shift();
									v_level = tmp3905.shift();
									v_wantarray = tmp3905.shift();
								return (p5context([('(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, v_wantarray], 0)) + ')')], p5want));
							};
							tmp3904._prototype_ = null;
							return tmp3904
						})(), 'require', (function () {
							var tmp3906;
							tmp3906 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3907 = p5list_to_a([List__]);
									v_self = tmp3907.shift();
									v_level = tmp3907.shift();
									v_wantarray = tmp3907.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('is_version_string')) ) {
										throw(p5context([('p5pkg["Perlito5"]["test_perl_version"]([' + p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + '], ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
									}
									})();
									return (p5context([('p5pkg["Perlito5::Grammar::Use"]["require"]([' + p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ', ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('bareword')) ? 1 : 0)) + '], ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3906._prototype_ = null;
							return tmp3906
						})(), 'select', (function () {
							var tmp3908;
							tmp3908 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3909 = p5list_to_a([List__]);
									v_self = tmp3909.shift();
									v_level = tmp3909.shift();
									v_wantarray = tmp3909.shift();
								return (p5context([('p5pkg["CORE"]["select"]([' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('bareword')) ? p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0) : p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0))) + '])')], p5want));
							};
							tmp3908._prototype_ = null;
							return tmp3908
						})(), 'prefix:<$>', (function () {
							var tmp3910;
							tmp3910 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3911 = p5list_to_a([List__]);
									v_self = tmp3911.shift();
									v_level = tmp3911.shift();
									v_wantarray = tmp3911.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5scalar_deref(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + '""' + ')')], p5want));
							};
							tmp3910._prototype_ = null;
							return tmp3910
						})(), 'prefix:<@>', (function () {
							var tmp3912;
							tmp3912 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3913 = p5list_to_a([List__]);
									v_self = tmp3913.shift();
									v_level = tmp3913.shift();
									v_wantarray = tmp3913.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_s;
								v_s = (('p5array_deref(' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify([v_arg, v_level, 'array'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')'));
								return (( (p5str(v_wantarray) == 'scalar') ? ('p5num(' + p5str(v_s) + ')') : v_s));
							};
							tmp3912._prototype_ = null;
							return tmp3912
						})(), 'prefix:<$#>', (function () {
							var tmp3914;
							tmp3914 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3915 = p5list_to_a([List__]);
									v_self = tmp3915.shift();
									v_level = tmp3915.shift();
									v_wantarray = tmp3915.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('(p5array_deref(' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify([v_arg, v_level, 'array'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ').length - 1)')], p5want));
							};
							tmp3914._prototype_ = null;
							return tmp3914
						})(), 'prefix:<%>', (function () {
							var tmp3916;
							tmp3916 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3917 = p5list_to_a([List__]);
									v_self = tmp3917.shift();
									v_level = tmp3917.shift();
									v_wantarray = tmp3917.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5hash_deref(' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify([v_arg, v_level, 'hash'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							};
							tmp3916._prototype_ = null;
							return tmp3916
						})(), 'prefix:<&>', (function () {
							var tmp3918;
							tmp3918 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3919 = p5list_to_a([List__]);
									v_self = tmp3919.shift();
									v_level = tmp3919.shift();
									v_wantarray = tmp3919.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ')([])')], p5want));
							};
							tmp3918._prototype_ = null;
							return tmp3918
						})(), 'circumfix:<[ ]>', (function () {
							var tmp3920;
							tmp3920 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3921 = p5list_to_a([List__]);
									v_self = tmp3921.shift();
									v_level = tmp3921.shift();
									v_wantarray = tmp3921.shift();
								return (p5context([('(new p5ArrayRef(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + '))')], p5want));
							};
							tmp3920._prototype_ = null;
							return tmp3920
						})(), 'circumfix:<{ }>', (function () {
							var tmp3922;
							tmp3922 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3923 = p5list_to_a([List__]);
									v_self = tmp3923.shift();
									v_level = tmp3923.shift();
									v_wantarray = tmp3923.shift();
								return (p5context([('(new p5HashRef(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level, 'hash']), 0)) + '))')], p5want));
							};
							tmp3922._prototype_ = null;
							return tmp3922
						})(), 'prefix:<' + String.fromCharCode(92) + '>', (function () {
							var tmp3924;
							tmp3924 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3925 = p5list_to_a([List__]);
									v_self = tmp3925.shift();
									v_level = tmp3925.shift();
									v_wantarray = tmp3925.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) ) {
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<@>') ) {
											throw(p5context([('(new p5ArrayRef(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<%>') ) {
											throw(p5context([('(new p5HashRef(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'circumfix:<( )>') ) {
											throw(p5context([('p5_list_of_refs(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>') ) {
											throw(p5context([('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
										}
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '@') ) {
											throw(p5context([('(new p5ArrayRef(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '%') ) {
											throw(p5context([('(new p5HashRef(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '*') ) {
											throw(p5context([('(new p5GlobRef(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '&') ) {
											(function () {
												if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
												throw(p5context([('p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace')]), 0)) + '].' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
											}
											else {
												throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].pkg([], 0)) + '.' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
											}
											})();
										}
										})();
									}
									})();
									return (p5context([('(new p5ScalarRef(' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + '))')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3924._prototype_ = null;
							return tmp3924
						})(), 'postfix:<++>', (function () {
							var tmp3926;
							tmp3926 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3927 = p5list_to_a([List__]);
									v_self = tmp3927.shift();
									v_level = tmp3927.shift();
									v_wantarray = tmp3927.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) || (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) || p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)))) ) {
										throw(p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1), 0, 'p5postincr'], p5want));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '$')) ) {
										(function () {
											var v_tmp;
											v_tmp = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, 'scalar', ('var ' + p5str(v_tmp) + ' = ' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ';'), (p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ' = p5incr_(' + p5str(v_tmp) + ');'), ('return ' + p5str(v_tmp))], p5want));
										})();
									}
									})();
									return (p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')++')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3926._prototype_ = null;
							return tmp3926
						})(), 'postfix:<-->', (function () {
							var tmp3928;
							tmp3928 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3929 = p5list_to_a([List__]);
									v_self = tmp3929.shift();
									v_level = tmp3929.shift();
									v_wantarray = tmp3929.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) || (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) || p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)))) ) {
										throw(p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1), 0, 'p5postdecr'], p5want));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '$')) ) {
										(function () {
											var v_tmp;
											v_tmp = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, 'scalar', ('var ' + p5str(v_tmp) + ' = ' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ';'), (p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ' = p5decr_(' + p5str(v_tmp) + ');'), ('return ' + p5str(v_tmp))], p5want));
										})();
									}
									})();
									return (p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')--')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3928._prototype_ = null;
							return tmp3928
						})(), 'prefix:<++>', (function () {
							var tmp3930;
							tmp3930 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3931 = p5list_to_a([List__]);
									v_self = tmp3931.shift();
									v_level = tmp3931.shift();
									v_wantarray = tmp3931.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) || (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) || p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)))) ) {
										throw(p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1), 0, 'p5incr'], p5want));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '$')) ) {
										(function () {
											var v_tmp;
											v_tmp = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, 'scalar', ('var ' + p5str(v_tmp) + ' = ' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ';'), (p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ' = p5incr_(' + p5str(v_tmp) + ');'), ('return ' + p5str(p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1)], 0)))], p5want));
										})();
									}
									})();
									return (p5context([('++(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3930._prototype_ = null;
							return tmp3930
						})(), 'prefix:<-->', (function () {
							var tmp3932;
							tmp3932 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3933 = p5list_to_a([List__]);
									v_self = tmp3933.shift();
									v_level = tmp3933.shift();
									v_wantarray = tmp3933.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) || (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) || p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)))) ) {
										throw(p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1), 0, 'p5decr'], p5want));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '$')) ) {
										(function () {
											var v_tmp;
											v_tmp = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, 'scalar', ('var ' + p5str(v_tmp) + ' = ' + p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ';'), (p5str(p5call(v_arg, 'emit_javascript2', [v_level], 0)) + ' = p5decr_(' + p5str(v_tmp) + ');'), ('return ' + p5str(p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1)], 0)))], p5want));
										})();
									}
									})();
									return (p5context([('--(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3932._prototype_ = null;
							return tmp3932
						})(), 'infix:<x>', (function () {
							var tmp3934;
							tmp3934 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3935 = p5list_to_a([List__]);
									v_self = tmp3935.shift();
									v_level = tmp3935.shift();
									v_wantarray = tmp3935.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Apply') && ((p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'circumfix:<( )>') || (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'list:<,>'))) ) {
										throw(p5context([('p5list_replicate(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'list'], 0)) + ',' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
									}
									})();
									return (p5context([('p5str_replicate(' + p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ',' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3934._prototype_ = null;
							return tmp3934
						})(), 'list:<.>', (function () {
							var tmp3936;
							tmp3936 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3937 = p5list_to_a([List__]);
									v_self = tmp3937.shift();
									v_level = tmp3937.shift();
									v_wantarray = tmp3937.shift();
								return (p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' + '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_str([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp3936._prototype_ = null;
							return tmp3936
						})(), 'list:<,>', (function () {
							var tmp3938;
							tmp3938 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3939 = p5list_to_a([List__]);
									v_self = tmp3939.shift();
									v_level = tmp3939.shift();
									v_wantarray = tmp3939.shift();
								return (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), p5want));
							};
							tmp3938._prototype_ = null;
							return tmp3938
						})(), 'infix:<..>', (function () {
							var tmp3940;
							tmp3940 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3941 = p5list_to_a([List__]);
									v_self = tmp3941.shift();
									v_level = tmp3941.shift();
									v_wantarray = tmp3941.shift();
								return (p5context([('p5range(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_javascript2', [v_level], 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ', ' + '"' + p5str(p5pkg['Perlito5::Javascript2'].get_label([], 0)) + '"' + ', ' + '0' + ')')], p5want));
							};
							tmp3940._prototype_ = null;
							return tmp3940
						})(), 'infix:<...>', (function () {
							var tmp3942;
							tmp3942 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3943 = p5list_to_a([List__]);
									v_self = tmp3943.shift();
									v_level = tmp3943.shift();
									v_wantarray = tmp3943.shift();
								return (p5context([('p5range(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_javascript2', [v_level], 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ', ' + '"' + p5str(p5pkg['Perlito5::Javascript2'].get_label([], 0)) + '"' + ', ' + '1' + ')')], p5want));
							};
							tmp3942._prototype_ = null;
							return tmp3942
						})(), 'delete', (function () {
							var tmp3944;
							tmp3944 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3945 = p5list_to_a([List__]);
									v_self = tmp3945.shift();
									v_level = tmp3945.shift();
									v_wantarray = tmp3945.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												throw(p5context([('(delete ' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + '[' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_javascript2', [v_level], 0)) + '])')], p5want));
											}
											})();
											throw(p5context([('(delete ' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + '._hash_[' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_javascript2', [v_level], 0)) + '])')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												throw(p5context([('(delete ' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + '[' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_javascript2', [v_level], 0)) + '])')], p5want));
											}
											})();
											throw(p5context([('(delete ' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + '._array_[' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_javascript2', [v_level], 0)) + '])')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<{ }>') ) {
											throw(p5context([('(delete ' + p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_javascript2', [], 0)) + '._hash_[' + p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_javascript2', [v_level], 0)) + '])')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<[ ]>') ) {
											throw(p5context([('(delete ' + p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_javascript2', [], 0)) + '._array_[' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_javascript2', [v_level], 0)) + '])')], p5want));
										}
										})();
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_arg, 'sigil', [], 0)) == '&')) ) {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO delete &code']), null);
									}
									})();
									return (function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										return (p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO delete &$code']), p5want));
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3944._prototype_ = null;
							return tmp3944
						})(), 'scalar', (function () {
							var tmp3946;
							tmp3946 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3947 = p5list_to_a([List__]);
									v_self = tmp3947.shift();
									v_level = tmp3947.shift();
									v_wantarray = tmp3947.shift();
								return (p5pkg['Perlito5::Javascript2'].to_scalar(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), p5want));
							};
							tmp3946._prototype_ = null;
							return tmp3946
						})(), 'ternary:<? :>', (function () {
							var tmp3948;
							tmp3948 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3949 = p5list_to_a([List__]);
									v_self = tmp3949.shift();
									v_level = tmp3949.shift();
									v_wantarray = tmp3949.shift();
								return (p5context([('( ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ' ? ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)], 0), 'emit_javascript2', [v_level, v_wantarray], 0)) + ' : ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2)], 0), 'emit_javascript2', [v_level, v_wantarray], 0)) + ')')], p5want));
							};
							tmp3948._prototype_ = null;
							return tmp3948
						})(), 'my', (function () {
							var tmp3950;
							tmp3950 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3951 = p5list_to_a([List__]);
									v_self = tmp3951.shift();
									v_level = tmp3951.shift();
									v_wantarray = tmp3951.shift();
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp3950._prototype_ = null;
							return tmp3950
						})(), 'our', (function () {
							var tmp3952;
							tmp3952 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3953 = p5list_to_a([List__]);
									v_self = tmp3953.shift();
									v_level = tmp3953.shift();
									v_wantarray = tmp3953.shift();
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp3952._prototype_ = null;
							return tmp3952
						})(), 'local', (function () {
							var tmp3954;
							tmp3954 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3955 = p5list_to_a([List__]);
									v_self = tmp3955.shift();
									v_level = tmp3955.shift();
									v_wantarray = tmp3955.shift();
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp3954._prototype_ = null;
							return tmp3954
						})(), 'circumfix:<( )>', (function () {
							var tmp3956;
							tmp3956 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3957 = p5list_to_a([List__]);
									v_self = tmp3957.shift();
									v_level = tmp3957.shift();
									v_wantarray = tmp3957.shift();
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp3956._prototype_ = null;
							return tmp3956
						})(), 'infix:<=>', (function () {
							var tmp3958;
							tmp3958 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3959 = p5list_to_a([List__]);
									v_self = tmp3959.shift();
									v_level = tmp3959.shift();
									v_wantarray = tmp3959.shift();
									var v_parameters;
									v_parameters = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									var v_arguments;
									v_arguments = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1));
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_parameters, 'code', [], 0)) == 'my') || ((p5str(p5call(v_parameters, 'code', [], 0)) == 'local') || (p5str(p5call(v_parameters, 'code', [], 0)) == 'circumfix:<( )>')))) ) {
										(function () {
											(function () {
												if ( (p5str(v_wantarray) == 'void') ) {
												(function () {
													var v_tmp;
													v_tmp = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
													throw(p5context([p5pkg['Perlito5::AST::Apply'].join([(';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat(p5list_to_a([('var ' + p5str(v_tmp) + ' = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0))), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
																return (p5call(p5make_package('main')['v__'], 'emit_javascript2_set_list', [v_level, v_tmp], 1));
															}, p5list_to_a([p5array_deref(p5call(v_parameters, 'arguments', [], p5want), 'Perlito5::AST::Apply')]))])), p5want)], p5want));
												})();
											}
											})();
											var v_tmp;
											v_tmp = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
											var v_tmp2;
											v_tmp2 = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, ('var ' + p5str(v_tmp) + ' = ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ';'), ('var ' + p5str(v_tmp2) + ' = ' + p5str(v_tmp) + '.slice(0);'), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return ((p5str(p5call(p5make_package('main')['v__'], 'emit_javascript2_set_list', [(p5num(v_level) + 1), v_tmp], 0)) + ';'));
}, p5list_to_a([p5array_deref(p5call(v_parameters, 'arguments', [], p5want), 'Perlito5::AST::Apply')])), ('return ' + p5str(v_tmp2))]), p5want));
										})();
									}
									})();
									return (p5call(v_parameters, 'emit_javascript2_set', [v_arguments, (p5num(v_level) + 1), v_wantarray], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3958._prototype_ = null;
							return tmp3958
						})(), 'break', (function () {
							var tmp3960;
							tmp3960 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3961 = p5list_to_a([List__]);
									v_self = tmp3961.shift();
									v_level = tmp3961.shift();
									v_wantarray = tmp3961.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_statement_javascript2([v_level, v_wantarray, 'throw(new p5_error("break", ""))'], p5want));
							};
							tmp3960._prototype_ = null;
							return tmp3960
						})(), 'next', (function () {
							var tmp3962;
							tmp3962 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3963 = p5list_to_a([List__]);
									v_self = tmp3963.shift();
									v_level = tmp3963.shift();
									v_wantarray = tmp3963.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code'), function () {
												return ''
											}));
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_statement_javascript2([v_level, v_wantarray, ('throw(new p5_error("next", ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_label], 0)) + '))')], p5want));
							};
							tmp3962._prototype_ = null;
							return tmp3962
						})(), 'last', (function () {
							var tmp3964;
							tmp3964 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3965 = p5list_to_a([List__]);
									v_self = tmp3965.shift();
									v_level = tmp3965.shift();
									v_wantarray = tmp3965.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code'), function () {
												return ''
											}));
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_statement_javascript2([v_level, v_wantarray, ('throw(new p5_error("last", ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_label], 0)) + '))')], p5want));
							};
							tmp3964._prototype_ = null;
							return tmp3964
						})(), 'redo', (function () {
							var tmp3966;
							tmp3966 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3967 = p5list_to_a([List__]);
									v_self = tmp3967.shift();
									v_level = tmp3967.shift();
									v_wantarray = tmp3967.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code'), function () {
												return ''
											}));
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_statement_javascript2([v_level, v_wantarray, ('throw(new p5_error("redo", ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_label], 0)) + '))')], p5want));
							};
							tmp3966._prototype_ = null;
							return tmp3966
						})(), 'return', (function () {
							var tmp3968;
							tmp3968 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3969 = p5list_to_a([List__]);
									v_self = tmp3969.shift();
									v_level = tmp3969.shift();
									v_wantarray = tmp3969.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_statement_javascript2([v_level, v_wantarray, ('throw(' + p5str(p5pkg['Perlito5::Javascript2'].to_runtime_context(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							};
							tmp3968._prototype_ = null;
							return tmp3968
						})(), 'goto', (function () {
							var tmp3970;
							tmp3970 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3971 = p5list_to_a([List__]);
									v_self = tmp3971.shift();
									v_level = tmp3971.shift();
									v_wantarray = tmp3971.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_statement_javascript2([v_level, v_wantarray, ('throw(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
							};
							tmp3970._prototype_ = null;
							return tmp3970
						})(), 'do', (function () {
							var tmp3972;
							tmp3972 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3973 = p5list_to_a([List__]);
									v_self = tmp3973.shift();
									v_level = tmp3973.shift();
									v_wantarray = tmp3973.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Block'], 0)) ) {
										(function () {
											var v_block;
											v_block = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('stmts'));
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_block], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 1)]), p5want));
										})();
									}
									})();
									var v_tmp_strict;
									v_tmp_strict = (p5make_package('Perlito5')['v_STRICT']);
									p5make_package('Perlito5')['v_STRICT'] = (0);
									var v_ast;
									v_ast = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'eval', 'namespace', '', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do_file', 'namespace', 'Perlito5::Grammar::Use', 'arguments', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 1)]))), '_scope', p5call('Perlito5::Grammar::Scope', 'new_base_scope', [], 1)]), 0));
									var v_js;
									v_js = (p5call(v_ast, 'emit_javascript2', [v_level, v_wantarray], 0));
									p5make_package('Perlito5')['v_STRICT'] = (v_tmp_strict);
									return (p5context([v_js], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3972._prototype_ = null;
							return tmp3972
						})(), 'eval', (function () {
							var tmp3974;
							tmp3974 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3975 = p5list_to_a([List__]);
									v_self = tmp3975.shift();
									v_level = tmp3975.shift();
									v_wantarray = tmp3975.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_eval;
								(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Block'], 0)) ) {
										v_eval = (p5call(p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do', 'arguments', (new p5ArrayRef([v_arg]))]), 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0));
									}
									else {
										(function () {
											var v_scope_perl5;
											v_scope_perl5 = (p5pkg['Perlito5::Dumper'].ast_dumper(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_scope')])))]), 0));
											var v_m;
											v_m = (p5pkg['Perlito5::Grammar::Expression'].term_square([v_scope_perl5, 0], 0));
											(function () {
												if ( (!( p5bool(v_m)) || (p5num((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')) < p5pkg['Perlito5::AST::Apply'].length([v_scope_perl5], 0))) ) {
												p5pkg['Perlito5::AST::Apply'].die([].concat(['invalid internal scope in eval' + String.fromCharCode(10)]), null);
											}
											})();
											v_m = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([p5pkg['Perlito5::Match'].flat([v_m], p5want)._array_.p5aget(2)]), 0));
											var v_scope_js;
											v_scope_js = (('(new p5ArrayRef(' + p5str(p5pkg['Perlito5::Javascript2'].to_list([v_m], 0)) + '))'));
											v_eval = (('eval(p5pkg["Perlito5::Javascript2::Runtime"].perl5_to_js([' + p5str(p5pkg['Perlito5::Javascript2'].to_str([v_arg], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_wantarray], 0)) + ', ' + p5str(v_scope_js) + ']))'));
										})();
									}
									})();
								var v_context;
								v_context = (p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0));
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, ( (p5str(v_context) == 'p5want') ? p5context([], 1) : ('var p5want = ' + p5str(v_context) + ';')), 'var r;', 'p5pkg["main"]["v_@"] = "";', 'var p5strict = p5pkg["Perlito5"]["v_STRICT"];', ('p5pkg["Perlito5"]["v_STRICT"] = ' + p5str(p5make_package('Perlito5')['v_STRICT']) + ';'), 'try {', (new p5ArrayRef([('r = ' + p5str(v_eval) + '')])), '}', 'catch(err) {', (new p5ArrayRef(p5list_to_a(['if (err instanceof p5_error && (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ' || err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ' || err.type == ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ')) {', (new p5ArrayRef(['throw(err)'])), '}', 'else if ( err instanceof p5_error || err instanceof Error ) {', (new p5ArrayRef(p5list_to_a(['p5pkg["main"]["v_@"] = err;', 'if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "' + String.fromCharCode(92) + 'n") {', (new p5ArrayRef(p5list_to_a([('try {' + ''), (new p5ArrayRef(['p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "' + String.fromCharCode(92) + 'n" + err.stack + "' + String.fromCharCode(92) + 'n";'])), '}', 'catch(err) { }']))), '}']))), '}', 'else {', (new p5ArrayRef(['return(err);'])), '}']))), '}', 'p5pkg["Perlito5"]["v_STRICT"] = p5strict;', 'return r;']), p5want));
							};
							tmp3974._prototype_ = null;
							return tmp3974
						})(), 'substr', (function () {
							var tmp3976;
							tmp3976 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3977 = p5list_to_a([List__]);
									v_self = tmp3977.shift();
									v_level = tmp3977.shift();
									v_wantarray = tmp3977.shift();
									var v_length;
									v_length = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2));
									(function () {
										if ( (p5bool(v_length) && (p5bool(p5call(v_length, 'isa', ['Perlito5::AST::Int'], 0)) && (p5num((v_length || (v_length = new p5HashRef({})))._hash_.p5hget('int')) > 0))) ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + '.substr(' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2)]), 0)) + ')')], p5want));
									}
									})();
									var v_arg_list;
									v_arg_list = (p5pkg['Perlito5::Javascript2'].to_list_preprocess(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0));
									var v_arg_code;
									v_arg_code = (p5pkg['Perlito5::Javascript2'].to_list([v_arg_list], 0));
									return (p5context([('CORE.substr(' + p5str(v_arg_code) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3976._prototype_ = null;
							return tmp3976
						})(), 'undef', (function () {
							var tmp3978;
							tmp3978 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3979 = p5list_to_a([List__]);
									v_self = tmp3979.shift();
									v_level = tmp3979.shift();
									v_wantarray = tmp3979.shift();
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										(function () {
											var v_arg;
											v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
											(function () {
												if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Var') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '&')) ) {
												throw(p5context([('(delete p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})]), 0)) + '][' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + '])')], p5want));
											}
											})();
											throw(p5context([('(' + p5str(p5call(v_arg, 'emit_javascript2', [], 0)) + ' = null)')], p5want));
										})();
									}
									})();
									return (p5context(['null'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3978._prototype_ = null;
							return tmp3978
						})(), 'defined', (function () {
							var tmp3980;
							tmp3980 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3981 = p5list_to_a([List__]);
									v_self = tmp3981.shift();
									v_level = tmp3981.shift();
									v_wantarray = tmp3981.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_invocant;
								(function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Apply') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										(function () {
											var v_arg2;
											v_arg2 = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
											v_invocant = (('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call(v_arg2, 'emit_javascript2', [v_level], 0)) + ')'));
										})();
									}
									else (function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Var') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '&')) ) {
										v_invocant = (('p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})]), 0)) + '][' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + ']'));
									}
									else {
										v_invocant = (p5call(v_arg, 'emit_javascript2', [v_level, 'scalar'], 0));
									}
									})()
									})();
								return (p5context([('(' + p5str(v_invocant) + ' != null)')], p5want));
							};
							tmp3980._prototype_ = null;
							return tmp3980
						})(), 'shift', (function () {
							var tmp3982;
							tmp3982 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3983 = p5list_to_a([List__]);
									v_self = tmp3983.shift();
									v_level = tmp3983.shift();
									v_wantarray = tmp3983.shift();
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level], 0)) + '.shift()')], p5want));
									}
									})();
									return (p5context(['List__.shift()'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3982._prototype_ = null;
							return tmp3982
						})(), 'pop', (function () {
							var tmp3984;
							tmp3984 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp3985 = p5list_to_a([List__]);
									v_self = tmp3985.shift();
									v_level = tmp3985.shift();
									v_wantarray = tmp3985.shift();
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level], 0)) + '.pop()')], p5want));
									}
									})();
									return (p5context(['List__.pop()'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp3984._prototype_ = null;
							return tmp3984
						})(), 'unshift', (function () {
							var tmp3986;
							tmp3986 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3987 = p5list_to_a([List__]);
									v_self = tmp3987.shift();
									v_level = tmp3987.shift();
									v_wantarray = tmp3987.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								return (p5context([(p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + '.p5unshift(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_arguments))]), 0)) + ')')], p5want));
							};
							tmp3986._prototype_ = null;
							return tmp3986
						})(), 'push', (function () {
							var tmp3988;
							tmp3988 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3989 = p5list_to_a([List__]);
									v_self = tmp3989.shift();
									v_level = tmp3989.shift();
									v_wantarray = tmp3989.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								return (p5context([(p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + '.p5push(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_arguments))]), 0)) + ')')], p5want));
							};
							tmp3988._prototype_ = null;
							return tmp3988
						})(), 'tie', (function () {
							var tmp3990;
							tmp3990 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3991 = p5list_to_a([List__]);
									v_self = tmp3991.shift();
									v_level = tmp3991.shift();
									v_wantarray = tmp3991.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								var v_meth;
								(function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '%')) ) {
										v_meth = ('hash');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '@')) ) {
										v_meth = ('array');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
										v_meth = ('scalar');
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['tie ' + String.fromCharCode(39), p5pkg['Perlito5::AST::Apply'].ref([v_v], 1), String.fromCharCode(39) + ' not implemented']), null);
									}
									})()
									})()
									})();
								return (p5context([('p5tie_' + p5str(v_meth) + '(' + p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_arguments))]), 0)) + ')')], p5want));
							};
							tmp3990._prototype_ = null;
							return tmp3990
						})(), 'untie', (function () {
							var tmp3992;
							tmp3992 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3993 = p5list_to_a([List__]);
									v_self = tmp3993.shift();
									v_level = tmp3993.shift();
									v_wantarray = tmp3993.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								var v_meth;
								(function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '%')) ) {
										v_meth = ('hash');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '@')) ) {
										v_meth = ('array');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
										v_meth = ('scalar');
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['tie ' + String.fromCharCode(39), p5pkg['Perlito5::AST::Apply'].ref([v_v], 1), String.fromCharCode(39) + ' not implemented']), null);
									}
									})()
									})()
									})();
								return (p5context([('p5untie_' + p5str(v_meth) + '(' + p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + ')')], p5want));
							};
							tmp3992._prototype_ = null;
							return tmp3992
						})(), 'print', (function () {
							var tmp3994;
							tmp3994 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3995 = p5list_to_a([List__]);
									v_self = tmp3995.shift();
									v_level = tmp3995.shift();
									v_wantarray = tmp3995.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'), 'emit_javascript2', [v_level], 0));
									}
									else {
										v_fun = ('"STDOUT"');
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('p5pkg["Perlito5::IO"].print(' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp3994._prototype_ = null;
							return tmp3994
						})(), 'say', (function () {
							var tmp3996;
							tmp3996 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3997 = p5list_to_a([List__]);
									v_self = tmp3997.shift();
									v_level = tmp3997.shift();
									v_wantarray = tmp3997.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'), 'emit_javascript2', [v_level], 0));
									}
									else {
										v_fun = ('"STDOUT"');
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('p5pkg["Perlito5::IO"].say(' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp3996._prototype_ = null;
							return tmp3996
						})(), 'printf', (function () {
							var tmp3998;
							tmp3998 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp3999 = p5list_to_a([List__]);
									v_self = tmp3999.shift();
									v_level = tmp3999.shift();
									v_wantarray = tmp3999.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'), 'emit_javascript2', [v_level], 0));
									}
									else {
										v_fun = ('"STDOUT"');
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('p5pkg["Perlito5::IO"].printf(' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp3998._prototype_ = null;
							return tmp3998
						})(), 'close', (function () {
							var tmp4000;
							tmp4000 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4001 = p5list_to_a([List__]);
									v_self = tmp4001.shift();
									v_level = tmp4001.shift();
									v_wantarray = tmp4001.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (List_in.shift());
								return (p5context([('p5pkg["Perlito5::IO"].close(' + p5str(p5call(v_fun, 'emit_javascript2', [v_level], 0)) + ', [])')], p5want));
							};
							tmp4000._prototype_ = null;
							return tmp4000
						})(), 'open', (function () {
							var tmp4002;
							tmp4002 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4003 = p5list_to_a([List__]);
									v_self = tmp4003.shift();
									v_level = tmp4003.shift();
									v_wantarray = tmp4003.shift();
									var List_in = [];
									List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
									var v_fun;
									v_fun = (List_in.shift());
									return (function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) != 'Perlito5::AST::Apply') ) {
										(function () {
											throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, v_wantarray, (p5str(p5call(v_fun, 'emit_javascript2', [v_level], 0)) + ' = CORE.bless([ {file_handle : {id : null}}, "GLOB" ]);'), ('return CORE.open(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')')], p5want))
										})()
									}
									else {
										p5make_package('Perlito5')['v_STRICT'] = (0);
										(function () {
											throw(p5context([('CORE.open(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')')], p5want))
										})()
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4002._prototype_ = null;
							return tmp4002
						})(), 'chomp', (function () {
							var tmp4004;
							tmp4004 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4005 = p5list_to_a([List__]);
									v_self = tmp4005.shift();
									v_level = tmp4005.shift();
									v_wantarray = tmp4005.shift();
								var v_v;
								v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, v_wantarray, ('var r = p5chomp(' + p5str(p5pkg['Perlito5::Javascript2'].to_str([v_v, v_level], 0)) + ');'), (p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + ' = r[1];'), 'return r[0]'], p5want));
							};
							tmp4004._prototype_ = null;
							return tmp4004
						})(), 'chop', (function () {
							var tmp4006;
							tmp4006 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4007 = p5list_to_a([List__]);
									v_self = tmp4007.shift();
									v_level = tmp4007.shift();
									v_wantarray = tmp4007.shift();
								var v_v;
								v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, v_wantarray, ('var r = p5chop(' + p5str(p5pkg['Perlito5::Javascript2'].to_str([v_v, v_level], 0)) + ');'), (p5str(p5call(v_v, 'emit_javascript2', [v_level], 0)) + ' = r[1];'), 'return r[0]'], p5want));
							};
							tmp4006._prototype_ = null;
							return tmp4006
						})(), 'read', (function () {
							var tmp4008;
							tmp4008 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4009 = p5list_to_a([List__]);
									v_self = tmp4009.shift();
									v_level = tmp4009.shift();
									v_wantarray = tmp4009.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (List_in.shift());
								var v_scalar;
								v_scalar = (List_in.shift());
								var v_length;
								v_length = (List_in.shift());
								return (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2([v_level, v_wantarray, ('var r = p5pkg["Perlito5::IO"].read(' + p5str(p5call(v_fun, 'emit_javascript2', [v_level], 0)) + ', [' + p5str(p5call(v_length, 'emit_javascript2', [v_level], 0)) + ']);'), (p5str(p5call(v_scalar, 'emit_javascript2', [v_level], 0)) + ' = r[1];'), 'return r[0]'], p5want));
							};
							tmp4008._prototype_ = null;
							return tmp4008
						})(), 'readline', (function () {
							var tmp4010;
							tmp4010 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4011 = p5list_to_a([List__]);
									v_self = tmp4011.shift();
									v_level = tmp4011.shift();
									v_wantarray = tmp4011.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (p5or(List_in.shift(), function () {
												return p5pkg['Perlito5::AST::Apply'].bless([(new p5HashRef(p5a_to_h(p5list_to_a(['arguments', (new p5ArrayRef([])), 'bareword', 1, 'code', 'ARGV', 'namespace', ''])))), 'Perlito5::AST::Apply'], 0)
											}));
								return (p5context([('CORE.readline([' + p5str(p5call(v_fun, 'emit_javascript2', [v_level], 0)) + '], ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
							};
							tmp4010._prototype_ = null;
							return tmp4010
						})(), 'map', (function () {
							var tmp4012;
							tmp4012 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4013 = p5list_to_a([List__]);
									v_self = tmp4013.shift();
									v_level = tmp4013.shift();
									v_wantarray = tmp4013.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'));
									}
									else {
										v_fun = (List_in.shift());
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										v_fun = ((new p5ArrayRef([v_fun])));
									}
									})();
								return (p5context([('p5map(' + p5str(p5pkg['Perlito5::Javascript2'].pkg([], 0)) + ', ' + 'function (p5want) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_fun], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}, ' + p5str(v_list) + ')')], p5want));
							};
							tmp4012._prototype_ = null;
							return tmp4012
						})(), 'grep', (function () {
							var tmp4014;
							tmp4014 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4015 = p5list_to_a([List__]);
									v_self = tmp4015.shift();
									v_level = tmp4015.shift();
									v_wantarray = tmp4015.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'));
									}
									else {
										v_fun = (List_in.shift());
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										v_fun = ((new p5ArrayRef([v_fun])));
									}
									})();
								return (p5context([('p5grep(' + p5str(p5pkg['Perlito5::Javascript2'].pkg([], 0)) + ', ' + 'function (p5want) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_fun], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}, ' + p5str(v_list) + ')')], p5want));
							};
							tmp4014._prototype_ = null;
							return tmp4014
						})(), 'sort', (function () {
							var tmp4016;
							tmp4016 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4017 = p5list_to_a([List__]);
									v_self = tmp4017.shift();
									v_level = tmp4017.shift();
									v_wantarray = tmp4017.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								var v_list;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'));
									}
									else (function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([p5list_slice(List_in, [0], 0)], 0) == 'Perlito5::AST::Block') ) {
										v_fun = (List_in.shift());
									}
									})()
									})();
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = (('function (p5want) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', (v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts')]), 0)], 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}'));
									}
									else {
										v_fun = ('null');
									}
									})();
								v_list = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('p5sort(' + p5str(p5pkg['Perlito5::Javascript2'].pkg([], 0)) + ', ' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp4016._prototype_ = null;
							return tmp4016
						})(), 'infix:<//>', (function () {
							var tmp4018;
							tmp4018 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4019 = p5list_to_a([List__]);
									v_self = tmp4019.shift();
									v_level = tmp4019.shift();
									v_wantarray = tmp4019.shift();
								return (p5context([('p5defined_or' + '(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp4018._prototype_ = null;
							return tmp4018
						})(), 'exists', (function () {
							var tmp4020;
							tmp4020 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4021 = p5list_to_a([List__]);
									v_self = tmp4021.shift();
									v_level = tmp4021.shift();
									v_wantarray = tmp4021.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												(v_v || (v_v = new p5HashRef({})))._hash_.p5hset('sigil', ('%'));
												throw(p5context([('(' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + ').hasOwnProperty(' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
											}
											})();
											throw(p5context([('(' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + ')._hash_.hasOwnProperty(' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												throw(p5context([('(' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + ').hasOwnProperty(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
											}
											})();
											throw(p5context([('(' + p5str(p5call(v_v, 'emit_javascript2', [], 0)) + ')._array_.hasOwnProperty(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<{ }>') ) {
											throw(p5context([('(' + p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_javascript2', [], 0)) + ')._hash_.hasOwnProperty(' + p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<[ ]>') ) {
											throw(p5context([('(' + p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_javascript2', [], 0)) + ')._array_.hasOwnProperty(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_javascript2', [v_level], 0)) + ')')], p5want));
										}
										})();
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_arg, 'sigil', [], 0)) == '&')) ) {
										(function () {
											var v_name;
											v_name = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name'));
											var v_namespace;
											v_namespace = (p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
														return p5make_package('Perlito5')['v_PKG_NAME']
													}));
											throw(p5context([('p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + '].hasOwnProperty(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_name], 0)) + ')')], p5want));
										})();
									}
									})();
									return (function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										var v_arg2;
										v_arg2 = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
										(function () {
											throw(p5context([('p5sub_exists(' + p5str(p5pkg['Perlito5::Javascript2'].to_str([v_arg2], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want))
										})()
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4020._prototype_ = null;
							return tmp4020
						})(), 'prototype', (function () {
							var tmp4022;
							tmp4022 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4023 = p5list_to_a([List__]);
									v_self = tmp4023.shift();
									v_level = tmp4023.shift();
									v_wantarray = tmp4023.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5sub_prototype(' + p5str(p5call(v_arg, 'emit_javascript2', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							};
							tmp4022._prototype_ = null;
							return tmp4022
						})(), 'split', (function () {
							var tmp4024;
							tmp4024 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4025 = p5list_to_a([List__]);
									v_self = tmp4025.shift();
									v_level = tmp4025.shift();
									v_wantarray = tmp4025.shift();
								var List_js = [];
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								(function () {
										if ( (p5bool(v_arg) && (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:m'))) ) {
										List_js.p5push([('new RegExp(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript2', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')]), 0)) + ')')]);
										p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').shift();
									}
									})();
								return (p5context([('CORE.split(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([List_js, p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
							};
							tmp4024._prototype_ = null;
							return tmp4024
						})()]);
				p5typeglob_set('Perlito5::AST::Apply', 'emit_javascript2', (function () {
					var tmp4026;
					tmp4026 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4027 = p5list_to_a([List__]);
							v_self = tmp4027.shift();
							v_level = tmp4027.shift();
							v_wantarray = tmp4027.shift();
							var v_apply;
							v_apply = (p5call(v_self, 'op_assign', [], 0));
							(function () {
								if ( p5bool(v_apply) ) {
								throw(p5call(v_apply, 'emit_javascript2', [v_level], p5want));
							}
							})();
							var v_apply;
							v_apply = (p5call(v_self, 'op_auto', [], 0));
							(function () {
								if ( p5bool(v_apply) ) {
								throw(p5call(v_apply, 'emit_javascript2', [v_level], p5want));
							}
							})();
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( (p5pkg['Perlito5::AST::Apply'].ref([v_code], 0) != '') ) {
								(function () {
									var List_args = [];
									List_args = [];
									p5for(p5make_package('main'), "v__", function () {
											List_args.p5push(p5list_to_a([p5call(p5make_package('main')['v__'], 'emit_javascript2', [], 1)]));
										}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '');
									throw(p5context([('(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), 'emit_javascript2', [v_level], 0)) + ')(' + p5pkg['Perlito5::AST::Apply'].join([','].concat(p5list_to_a([List_args])), 0) + ')')], p5want));
								})();
							}
							})();
							p5and((Hash_emit_js).hasOwnProperty(v_code), function () {
								throw((Hash_emit_js.p5hget(p5str(v_code)))([v_self, v_level, v_wantarray], p5want))
							});
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_str']).hasOwnProperty(v_code) ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_str'].p5hget(p5str(v_code))].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_str([p5make_package('main')['v__'], v_level], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_num']).hasOwnProperty(v_code) ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript2')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript2']['Hash_op_infix_js_num'].p5hget(p5str(v_code))].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript2'].to_num([p5make_package('main')['v__'], v_level], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_prefix_js_str']).hasOwnProperty(v_code) ) {
								throw(p5context([(p5str(p5pkg[p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript2')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript2']['Hash_op_prefix_js_str'].p5hget(p5str(v_code))) + '(' + p5str(p5pkg['Perlito5::Javascript2'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								(function () {
									if ( ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == 'JS') && (p5str(v_code) == 'inline')) ) {
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										throw((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['JS::inline needs a string constant']), null);
									}
									})();
								}
								})();
								v_code = (('p5pkg[' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')]), 0)) + '].' + p5str(v_code)));
							}
							else {
								v_code = ((p5str(p5pkg['Perlito5::Javascript2'].pkg([], 0)) + '.' + p5str(v_code)));
							}
							})();
							var v_sig;
							var v_may_need_autoload;
							p5block(function (v) {}, function () {
									var v_name;
									v_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5make_package('Perlito5')['v_PKG_NAME']
											}));
									var v_effective_name;
									v_effective_name = ((p5str(v_namespace) + '::' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'))));
									(function () {
										if ( (p5make_package('Perlito5')['v_PROTO'])._hash_.hasOwnProperty(v_effective_name) ) {
										v_sig = ((p5make_package('Perlito5')['v_PROTO'] || (p5make_package('Perlito5')['v_PROTO'] = new p5HashRef({})))._hash_.p5hget(p5str(v_effective_name)));
									}
									else (function () {
										if ( ((!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'))) || (p5str(v_namespace) == 'CORE')) && (p5make_package('Perlito5')['v_CORE_PROTO'])._hash_.hasOwnProperty(('CORE::' + p5str(v_name)))) ) {
										v_effective_name = (('CORE::' + p5str(v_name)));
										v_sig = ((p5make_package('Perlito5')['v_CORE_PROTO'] || (p5make_package('Perlito5')['v_CORE_PROTO'] = new p5HashRef({})))._hash_.p5hget(p5str(v_effective_name)));
									}
									else {
										(function () {
											if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) ) {
											(function () {
												if ( p5bool(p5make_package('Perlito5')['v_STRICT']) ) {
												p5pkg['Perlito5::AST::Apply'].die([].concat([('Bareword ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_name], 0)) + ' not allowed while "strict subs" in use')]), null);
											}
											})();
											throw(p5pkg['Perlito5::Javascript2'].escape_string([(p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ? (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::') : '')) + p5str(v_name))], p5want));
										}
										})();
										v_may_need_autoload = (1);
									}
									})()
									})();
									p5and(p5context([(v_self)._hash_.hasOwnProperty('proto')], 0), function () {
										return v_sig = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('proto'))
									});
								}, [0], false, ''
							);
							(function () {
								if ( p5bool(v_sig) ) {
								(function () {
									var List_out = [];
									List_out = [];
									var List_in = [];
									List_in = p5list_to_a([p5array_deref(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
												return (new p5ArrayRef([]))
											}), 'Perlito5::AST::Apply')]);
									var v_close;
									v_close = (']');
									var v_optional;
									v_optional = (0);
									(function () {
										p5while(function () {
											var v_c;
											v_c = (p5str(v_sig).substr(0, 1));
											(function () {
												if ( (p5str(v_c) == ';') ) {
												v_optional = (1);
											}
											else (function () {
												if ( ((p5str(v_c) == '$') || (p5str(v_c) == '_')) ) {
												p5and(p5or(List_in.length, function () {
													return !( p5bool(v_optional))
												}), function () {
													return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript2', [(p5num(v_level) + 1), 'scalar'], 1)]))
												});
											}
											else (function () {
												if ( (p5str(v_c) == '+') ) {
												(function () {
													if ( (p5bool(List_in.length) || !( p5bool(v_optional))) ) {
													(function () {
														var v_in;
														v_in = (List_in.shift());
														(function () {
															if ( ((p5bool(p5call(v_in, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_in || (v_in = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<@>')) || ((p5bool(p5call(v_in, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_in, 'sigil', [], 0)) == '@')) || ((p5bool(p5call(v_in, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_in || (v_in = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call(v_in, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_in, 'sigil', [], 0)) == '%'))))) ) {
															List_out.p5push(p5list_to_a([p5call(v_in, 'emit_javascript2', [(p5num(v_level) + 1), 'list'], 1)]));
														}
														else {
															List_out.p5push(p5list_to_a([p5call(v_in, 'emit_javascript2', [(p5num(v_level) + 1), 'scalar'], 1)]));
														}
														})();
													})();
												}
												})();
											}
											else (function () {
												if ( (p5str(v_c) == '@') ) {
												p5and(p5or(List_in.length, function () {
													return !( p5bool(v_optional))
												}), function () {
													return v_close = (('].concat(' + p5str(p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(List_in)), (p5num(v_level) + 1)]), 0)) + ')'))
												});
												List_in = [];
											}
											else (function () {
												if ( (p5str(v_c) == '&') ) {
												List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript2', [(p5num(v_level) + 1), 'scalar'], 1)]));
											}
											else (function () {
												if ( (p5str(v_c) == '*') ) {
												(function () {
													if ( (p5bool(List_in.length) || !( p5bool(v_optional))) ) {
													(function () {
														var v_arg;
														v_arg = (List_in.shift());
														(function () {
															if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('bareword')) ) {
															List_out.p5push(p5list_to_a([p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')]), 1)]));
														}
														else {
															List_out.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2', [(p5num(v_level) + 1), 'scalar'], 1)]));
														}
														})();
													})();
												}
												})();
											}
											else (function () {
												if ( (p5str(v_c) == String.fromCharCode(92)) ) {
												(function () {
													if ( (p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '$') ) {
													v_sig = (CORE.substr([v_sig, 1], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript2', [(p5num(v_level) + 1), 'scalar'], 1)]))
													});
												}
												else (function () {
													if ( ((p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '@') || (p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '%')) ) {
													v_sig = (CORE.substr([v_sig, 1], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript2', [(p5num(v_level) + 1), 'list'], 1)]))
													});
												}
												else (function () {
													if ( (p5str(v_sig).substr(0, 5) == String.fromCharCode(92) + '[@%]') ) {
													v_sig = (CORE.substr([v_sig, 4], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript2', [(p5num(v_level) + 1), 'list'], 1)]))
													});
												}
												else (function () {
													if ( (p5str(v_sig).substr(0, 6) == String.fromCharCode(92) + '[$@%]') ) {
													v_sig = (CORE.substr([v_sig, 5], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript2', [(p5num(v_level) + 1), 'list'], 1)]))
													});
												}
												})()
												})()
												})()
												})();
											}
											})()
											})()
											})()
											})()
											})()
											})()
											})();
											v_sig = (CORE.substr([v_sig, 1], 0));
										}, function () {
											return p5pkg['Perlito5::AST::Apply'].length([v_sig], 0)
										}, false, '', 0)
									})();
									throw(p5context([(p5str(v_code) + '([' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([List_out])), 0) + p5str(v_close) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							var v_arg_list;
							v_arg_list = (p5pkg['Perlito5::Javascript2'].to_list_preprocess(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0));
							var v_arg_code;
							v_arg_code = (( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'scalar') ? ('[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript2', [v_level], 1));
	}, p5list_to_a([p5array_deref((v_arg_list || (v_arg_list = new p5ArrayRef([]))), 'Perlito5::AST::Apply')]))])), 0) + ']') : p5pkg['Perlito5::Javascript2'].to_list([v_arg_list], 0)));
							(function () {
								if ( p5bool(v_may_need_autoload) ) {
								(function () {
									var v_name;
									v_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5make_package('Perlito5')['v_PKG_NAME']
											}));
									throw(p5context([('p5call_sub(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_name], 0)) + ', ' + p5str(v_arg_code) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5context([(p5str(v_code) + '(' + p5str(v_arg_code) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].to_context([v_wantarray], 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4026._prototype_ = null;
					return tmp4026
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_javascript2_set_list', (function () {
					var tmp4028;
					tmp4028 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp4029 = p5list_to_a([List__]);
							v_self = tmp4029.shift();
							v_level = tmp4029.shift();
							v_list = tmp4029.shift();
							(function () {
								if ( (p5str(p5call(v_self, 'code', [], 0)) == 'undef') ) {
								throw(p5context([(p5str(v_list) + '.shift()')], p5want));
							}
							})();
							(function () {
								if ( (p5str(p5call(v_self, 'code', [], 0)) == 'prefix:<$>') ) {
								throw(p5context([('p5scalar_deref_set(' + p5str(p5pkg['Perlito5::Javascript2'].emit_javascript2_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (p5num(v_level) + 1), 'scalar']), 0)) + ', ' + p5str(v_list) + '.shift()' + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Apply'].die([].concat(p5list_to_a(['not implemented: assign to ', p5call(v_self, 'code', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4028._prototype_ = null;
					return tmp4028
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_javascript2_get_decl', (function () {
					var tmp4030;
					tmp4030 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( ((p5str(v_code) == 'my') || ((p5str(v_code) == 'our') || ((p5str(v_code) == 'state') || (p5str(v_code) == 'local')))) ) {
								throw(p5context([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
										return (( (p5pkg['Perlito5::AST::Apply'].ref([p5make_package('main')['v__']], 0) == 'Perlito5::AST::Var') ? p5call('Perlito5::AST::Decl', 'new', ['decl', v_code, 'type', '', 'var', p5make_package('main')['v__']], p5want) : p5context([], p5want)));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))], p5want));
							}
							})();
							(function () {
								if ( ((p5str(v_code) != 'do') && (p5str(v_code) != 'eval')) ) {
								p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
									throw(p5context([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
										return ((p5context([p5call(p5make_package('main')['v__'], 'emit_javascript2_get_decl', [], p5want)], p5want)));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))], p5want))
								});
							}
							})();
							return (p5context([], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4030._prototype_ = null;
					return tmp4030
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_javascript2_has_regex', (function () {
					var tmp4031;
					tmp4031 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( ((p5str(v_code) == 'p5:m') || ((p5str(v_code) == 'p5:s') || ((p5str(v_code) == 'infix:<=~>') || (p5str(v_code) == 'infix:<!~>')))) ) {
								throw(p5context([1], p5want));
							}
							})();
							return (p5context([], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4031._prototype_ = null;
					return tmp4031
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_javascript2', (function () {
					var tmp4032;
					tmp4032 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4033 = p5list_to_a([List__]);
							v_self = tmp4033.shift();
							v_level = tmp4033.shift();
							v_wantarray = tmp4033.shift();
							var v_cond;
							v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
							var List_str = [];
							var v_old_level;
							v_old_level = (v_level);
							(function () {
								if ( p5bool(v_cond) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_cond, 'emit_javascript2_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												v_level = ((p5num(v_old_level) + 1));
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
								})();
							}
							})();
							var v_body;
							v_body = (( (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body') : ( !( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::If')))) ? null : ( (p5str(v_wantarray) != 'void') ? p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 0) : p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'create_context', 1]), 0)))));
							var v_otherwise;
							v_otherwise = (( (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')], 0) != 'Perlito5::AST::Block') ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise') : ( !( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], p5want), 'Perlito5::AST::If')))) ? null : ( (p5str(v_wantarray) != 'void') ? p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], 1)]), 0) : p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], 1), 'create_context', 1]), 0)))));
							var v_s;
							v_s = (('if ( ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool([v_cond, (p5num(v_level) + 1)], 0)) + ' ) {'));
							(function () {
								if ( p5bool(v_body) ) {
								v_s = ((p5str(v_s) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(v_body, 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}'));
							}
							else {
								v_s = ((p5str(v_s) + '}'));
							}
							})();
							(function () {
								if ( p5bool(v_otherwise) ) {
								(function () {
									if ( ((p5num(p5num(p5array_deref((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::AST::If'))) == 1) && (p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('block')._array_.p5aget(0)], 0) == 'Perlito5::AST::If')) ) {
									v_s = ((p5str(v_s) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + 'else ' + p5str(p5call((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('block')._array_.p5aget(0), 'emit_javascript2', [v_level, v_wantarray], 0))));
								}
								else {
									v_s = ((p5str(v_s) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + 'else {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(v_otherwise, 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}'));
								}
								})();
							}
							})();
							List_str.p5push([v_s]);
							return (function () {
								if ( p5bool(List_str.length) ) {
								v_level = (v_old_level);
								(function () {
									throw(p5context([(p5str(( (p5str(v_wantarray) != 'void') ? 'return ' : '')) + p5str(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, List_str]), 0)))], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([p5pkg['Perlito5::AST::If'].join([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat(p5list_to_a([List_str])), p5want)], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4032._prototype_ = null;
					return tmp4032
				})());
				p5typeglob_set('Perlito5::AST::If', 'emit_javascript2_get_decl', (function () {
					var tmp4034;
					tmp4034 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4034._prototype_ = null;
					return tmp4034
				})());
				p5typeglob_set('Perlito5::AST::If', 'emit_javascript2_has_regex', (function () {
					var tmp4035;
					tmp4035 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4035._prototype_ = null;
					return tmp4035
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_javascript2', (function () {
					var tmp4036;
					tmp4036 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4037 = p5list_to_a([List__]);
							v_self = tmp4037.shift();
							v_level = tmp4037.shift();
							v_wantarray = tmp4037.shift();
							var v_cond;
							v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
							var List_str = [];
							var v_old_level;
							v_old_level = (v_level);
							(function () {
								if ( p5bool(v_cond) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_cond, 'emit_javascript2_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												v_level = ((p5num(v_old_level) + 1));
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
								})();
							}
							})();
							v_cond = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Var', 'new', ['name', '_', 'namespace', 'main', 'sigil', '$'], 1), v_cond]))), 'code', 'infix:<~~>', 'namespace', '']), 0));
							var v_next;
							v_next = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef([])), 'bareword', 1, 'code', 'next', 'namespace', '']), 0));
							var v_body;
							v_body = (( (p5pkg['Perlito5::AST::When'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')])))]), 0) : ( !( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::When')))) ? null : ( (p5str(v_wantarray) != 'void') ? p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 0) : p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'create_context', 1]), 0)))));
							p5array_deref((v_body || (v_body = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::AST::When').p5push([v_next]);
							var v_s;
							v_s = (('if ( ' + p5str(p5pkg['Perlito5::Javascript2'].to_bool([v_cond, (p5num(v_level) + 1)], 0)) + ' ) {'));
							(function () {
								if ( p5bool(v_body) ) {
								v_s = ((p5str(v_s) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(v_body, 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)) + '}'));
							}
							else {
								v_s = ((p5str(v_s) + '}'));
							}
							})();
							List_str.p5push([v_s]);
							return (function () {
								if ( p5bool(List_str.length) ) {
								v_level = (v_old_level);
								(function () {
									throw(p5context([(p5str(( (p5str(v_wantarray) != 'void') ? 'return ' : '')) + p5str(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, List_str]), 0)))], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([p5pkg['Perlito5::AST::When'].join([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat(p5list_to_a([List_str])), p5want)], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4036._prototype_ = null;
					return tmp4036
				})());
				p5typeglob_set('Perlito5::AST::When', 'emit_javascript2_get_decl', (function () {
					var tmp4038;
					tmp4038 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4038._prototype_ = null;
					return tmp4038
				})());
				p5typeglob_set('Perlito5::AST::When', 'emit_javascript2_has_regex', (function () {
					var tmp4039;
					tmp4039 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4039._prototype_ = null;
					return tmp4039
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_javascript2', (function () {
					var tmp4040;
					tmp4040 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4041 = p5list_to_a([List__]);
							v_self = tmp4041.shift();
							v_level = tmp4041.shift();
							v_wantarray = tmp4041.shift();
							var v_cond;
							v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
							var List_str = [];
							var v_old_level;
							v_old_level = (v_level);
							(function () {
								if ( p5bool(v_cond) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_cond, 'emit_javascript2_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												v_level = ((p5num(v_old_level) + 1));
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
								})();
							}
							})();
							(function () {
								if ( ((p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('code')) == 'do')) ) {
								List_str.p5push([('do {' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '} while (' + p5str(p5pkg['Perlito5::Javascript2'].to_bool([v_cond, (p5num(v_level) + 2)], 0)) + ')')]);
							}
							else {
								(function () {
									var v_body;
									v_body = (( (p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]))) : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('stmts')));
									List_str.p5push([('p5while(' + 'function () {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_body], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + p5str(p5pkg['Perlito5::Javascript2'].emit_function_javascript2([(p5num(v_level) + 1), 'scalar', v_cond], 0)) + ', ' + p5str(p5pkg['Perlito5::AST::Block'].emit_javascript2_continue([v_self, v_level, v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})]), 0)) + ', ' + '0' + ')')]);
								})();
							}
							})();
							return (function () {
								if ( p5bool(List_str.length) ) {
								v_level = (v_old_level);
								(function () {
									throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, List_str]), p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([p5pkg['Perlito5::AST::While'].join([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat(p5list_to_a([List_str])), p5want)], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4040._prototype_ = null;
					return tmp4040
				})());
				p5typeglob_set('Perlito5::AST::While', 'emit_javascript2_get_decl', (function () {
					var tmp4042;
					tmp4042 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4042._prototype_ = null;
					return tmp4042
				})());
				p5typeglob_set('Perlito5::AST::While', 'emit_javascript2_has_regex', (function () {
					var tmp4043;
					tmp4043 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4043._prototype_ = null;
					return tmp4043
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_javascript2', (function () {
					var tmp4044;
					tmp4044 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4045 = p5list_to_a([List__]);
							v_self = tmp4045.shift();
							v_level = tmp4045.shift();
							v_wantarray = tmp4045.shift();
							var v_body;
							v_body = (( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]))) : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('stmts')));
							var List_str = [];
							var v_old_level;
							v_old_level = (v_level);
							var v_cond;
							v_cond = (( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond') : (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')])))));
							(function () {
								var v_expr;
								(function(){ var v_expr; p5for_lex(function (v) { v_expr = v }, function () {
										(function () {
											if ( p5bool(v_expr) ) {
											(function () {
												var List_var_decl = [];
												List_var_decl = p5list_to_a([p5call(v_expr, 'emit_javascript2_get_decl', [], 1)]);
												(function () {
													var v_arg;
													(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
															v_level = ((p5num(v_old_level) + 1));
															List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript2_init', [v_level, v_wantarray], 1)]));
														}, p5list_to_a([List_var_decl]), false, '') })()
												})();
											})();
										}
										})();
									}, p5list_to_a([p5array_deref((v_cond || (v_cond = new p5ArrayRef([]))), 'Perlito5::AST::For'), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic')]), false, '') })()
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								List_str.p5push(p5list_to_a([p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, ('var label = ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})]), 0)) + ';'), ('for ( ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_javascript2', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? (p5str(p5pkg['Perlito5::Javascript2'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), (p5num(v_level) + 1)]), 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_javascript2', [(p5num(v_level) + 1)], 0)) + ' ') : '')) + ') {'), (new p5ArrayRef(p5list_to_a(['var _redo;', 'do {', (new p5ArrayRef(p5list_to_a(['_redo = false;', 'try {', (new p5ArrayRef(p5list_to_a([p5call(p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_body], 0), 'emit_javascript2', [(p5num(v_level) + 4), v_wantarray], 1)]))), '}', 'catch(err) {', (new p5ArrayRef(p5list_to_a(['if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {', (new p5ArrayRef(['if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }', 'else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }', 'else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }'])), '}', 'else {', (new p5ArrayRef(['throw(err)'])), '}']))), '}']))), '} while (_redo);']))), '}']), 1)]));
							}
							else {
								(function () {
									var v_cond;
									v_cond = (p5pkg['Perlito5::Javascript2'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')]))), (p5num(v_level) + 1)]), 0));
									var v_topic;
									v_topic = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'));
									var v_decl;
									v_decl = ('');
									var v_v;
									v_v = (v_topic);
									(function () {
										if ( p5bool((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('decl')) ) {
										v_decl = ((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('decl'));
										v_v = ((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('var'));
									}
									else {
										v_decl = (p5or((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
													return 'global'
												}));
									}
									})();
									var v_namespace;
									v_namespace = (p5or((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5or((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('_namespace'), function () {
													return p5make_package('Perlito5')['v_PKG_NAME']
												})
											}));
									var v_s;
									(function () {
										if ( ((p5str(v_decl) == 'my') || (p5str(v_decl) == 'state')) ) {
										(function () {
											var v_sig;
											v_sig = (p5call(v_v, 'emit_javascript2', [(p5num(v_level) + 1)], 0));
											List_str.p5push([('(function(){ ' + ('var ' + p5str(v_sig) + '; ') + 'p5for_lex(' + ('function (v) { ' + p5str(v_sig) + ' = v }, ') + 'function () {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_body], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + p5str(v_cond) + ', ' + p5str(p5pkg['Perlito5::AST::Block'].emit_javascript2_continue([v_self, v_level, v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})]), 0)) + ') ' + '})()')]);
										})();
									}
									else {
										List_str.p5push([('p5for(' + 'p5make_package(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string([v_namespace], 0)) + '), ' + '"v_' + p5str((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('name')) + '", ' + 'function () {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 2)], 0)) + p5str(p5call(p5context([p5call('Perlito5::Javascript2::LexicalBlock', 'new', ['block', v_body], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 2), v_wantarray], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + p5str(v_cond) + ', ' + p5str(p5pkg['Perlito5::AST::Block'].emit_javascript2_continue([v_self, v_level, v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})]), 0)) + ')')]);
									}
									})();
								})();
							}
							})();
							return (function () {
								if ( (p5num(List_str.length) > 1) ) {
								v_level = (v_old_level);
								(function () {
									throw(p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, v_wantarray, List_str]), p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([p5pkg['Perlito5::AST::For'].join([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript2'].tab([v_level], 0)))].concat(p5list_to_a([List_str])), p5want)], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4044._prototype_ = null;
					return tmp4044
				})());
				p5typeglob_set('Perlito5::AST::For', 'emit_javascript2_get_decl', (function () {
					var tmp4046;
					tmp4046 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4046._prototype_ = null;
					return tmp4046
				})());
				p5typeglob_set('Perlito5::AST::For', 'emit_javascript2_has_regex', (function () {
					var tmp4047;
					tmp4047 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4047._prototype_ = null;
					return tmp4047
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_javascript2', (function () {
					var tmp4048;
					tmp4048 = function (List__, p5want) {
						try {
							var local_idx = p5LOCAL.length;
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4049 = p5list_to_a([List__]);
							v_self = tmp4049.shift();
							v_level = tmp4049.shift();
							v_wantarray = tmp4049.shift();
							var v_prototype;
							v_prototype = (( ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig') != null) ? p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig')]), 0) : 'null'));
							var v_sub_ref;
							v_sub_ref = (p5pkg['Perlito5::Javascript2'].get_label([], 0));
							(function () {
								var v_tmp4050 = p5make_package('Perlito5::AST::Sub')['v_SUB_REF'];
								p5LOCAL.push(function(){ p5make_package('Perlito5::AST::Sub')['v_SUB_REF'] = v_tmp4050 });
								return (p5make_package('Perlito5::AST::Sub')['v_SUB_REF'] = (null));
							})();
							p5make_package('Perlito5::AST::Sub')['v_SUB_REF'] = (v_sub_ref);
							var v_js_block;
							v_js_block = (p5call(p5call('Perlito5::Javascript2::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget('stmts')]), 0), 'emit_javascript2_subroutine_body', [(p5num(v_level) + 2), 'runtime'], 0));
							var v_s;
							v_s = (p5pkg['Perlito5::Javascript2'].emit_wrap_javascript2(p5list_to_a([v_level, 'scalar', ('var ' + p5str(v_sub_ref) + ';'), (p5str(v_sub_ref) + ' = function (List__, p5want) {'), (new p5ArrayRef([v_js_block])), '};', (p5str(v_sub_ref) + '._prototype_ = ' + p5str(v_prototype) + ';'), ('return ' + p5str(v_sub_ref))]), 0));
							return (function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) ) {
								(function () {
									throw(p5context([('p5typeglob_set(' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript2'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + ', ' + p5str(v_s) + ')')], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([v_s], p5want))
								})()
							}
							})()
							p5cleanup_local(local_idx, null);
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return p5cleanup_local(local_idx, err);
							}
						}
					};
					tmp4048._prototype_ = null;
					return tmp4048
				})());
				p5typeglob_set('Perlito5::AST::Sub', 'emit_javascript2_get_decl', (function () {
					var tmp4051;
					tmp4051 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4051._prototype_ = null;
					return tmp4051
				})());
				p5typeglob_set('Perlito5::AST::Sub', 'emit_javascript2_has_regex', (function () {
					var tmp4052;
					tmp4052 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4052._prototype_ = null;
					return tmp4052
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_javascript2', (function () {
					var tmp4053;
					tmp4053 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4054 = p5list_to_a([List__]);
							v_self = tmp4054.shift();
							v_level = tmp4054.shift();
							v_wantarray = tmp4054.shift();
							p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
							return (function () {
								if ( (p5str(v_wantarray) != 'void') ) {
								(function () {
									throw(p5context(['p5context([], p5want)'], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('// ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')) + String.fromCharCode(10))], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4053._prototype_ = null;
					return tmp4053
				})());
				p5typeglob_set('Perlito5::AST::Use', 'emit_javascript2_get_decl', (function () {
					var tmp4055;
					tmp4055 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4055._prototype_ = null;
					return tmp4055
				})());
				p5typeglob_set('Perlito5::AST::Use', 'emit_javascript2_has_regex', (function () {
					var tmp4056;
					tmp4056 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4056._prototype_ = null;
					return tmp4056
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::Javascript2::Emitter
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript2::Runtime');
		p5typeglob_set('Perlito5::Javascript2::Runtime', 'perl5_to_js', (function () {
			var tmp4057;
			tmp4057 = function (List__, p5want) {
				var local_idx = p5LOCAL.length;
				var v_source;
				var v_namespace;
				var v_want;
				var v_scope_js;
				var tmp4058 = p5list_to_a([List__]);
					v_source = tmp4058.shift();
					v_namespace = tmp4058.shift();
					v_want = tmp4058.shift();
					v_scope_js = tmp4058.shift();
				var v_strict_old;
				v_strict_old = (p5make_package('Perlito5')['v_STRICT']);
				(function () {
						var v_tmp4059 = p5make_package('Perlito5')['v_BASE_SCOPE'];
						p5LOCAL.push(function(){ p5make_package('Perlito5')['v_BASE_SCOPE'] = v_tmp4059 });
						return (p5make_package('Perlito5')['v_BASE_SCOPE'] = (null));
					})();
				p5make_package('Perlito5')['v_BASE_SCOPE'] = ((v_scope_js || (v_scope_js = new p5ArrayRef([])))._array_.p5aget(0));
				(function () {
						var v_tmp4060 = p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'];
						p5LOCAL.push(function(){ p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = v_tmp4060 });
						return (p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'] = p5list_to_a([null]));
					})();
				p5pkg[p5make_package('Perlito5')['List_SCOPE_STMT'] || (p5make_package('Perlito5')['List_SCOPE_STMT'] = []), 'Perlito5']['List_SCOPE_STMT'];
				(function () {
						var v_tmp4061 = p5make_package('Perlito5')['v_SCOPE'];
						p5LOCAL.push(function(){ p5make_package('Perlito5')['v_SCOPE'] = v_tmp4061 });
						return (p5make_package('Perlito5')['v_SCOPE'] = (null));
					})();
				p5make_package('Perlito5')['v_SCOPE'] = (p5make_package('Perlito5')['v_BASE_SCOPE']);
				(function () {
						var v_tmp4062 = p5make_package('Perlito5')['v_SCOPE_DEPTH'];
						p5LOCAL.push(function(){ p5make_package('Perlito5')['v_SCOPE_DEPTH'] = v_tmp4062 });
						return (p5make_package('Perlito5')['v_SCOPE_DEPTH'] = (null));
					})();
				p5make_package('Perlito5')['v_SCOPE_DEPTH'] = (0);
				(function () {
						var v_tmp4063 = p5make_package('Perlito5')['v_PKG_NAME'];
						p5LOCAL.push(function(){ p5make_package('Perlito5')['v_PKG_NAME'] = v_tmp4063 });
						return (p5make_package('Perlito5')['v_PKG_NAME'] = (null));
					})();
				p5make_package('Perlito5')['v_PKG_NAME'] = (v_namespace);
				var v_match;
				v_match = (p5pkg['Perlito5::Grammar'].exp_stmts([v_source, 0], 0));
				(function () {
						if ( (!( p5bool(v_match)) || (p5num((v_match || (v_match = new p5HashRef({})))._hash_.p5hget('to')) != p5pkg['Perlito5::Javascript2::Runtime'].length([v_source], 0))) ) {
						p5pkg['Perlito5::Javascript2::Runtime'].die([].concat(p5list_to_a(['Syntax error in eval near pos ', (v_match || (v_match = new p5HashRef({})))._hash_.p5hget('to')])), null);
					}
					})();
				var v_ast;
				v_ast = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Block', 'new', p5list_to_a(['stmts', (v_match || (v_match = new p5HashRef({})))._hash_.p5hget('capture')]), 1)])))]), 0));
				var v_js_code;
				v_js_code = (p5call(v_ast, 'emit_javascript2', [0, v_want], 0));
				p5make_package('Perlito5')['v_STRICT'] = (v_strict_old);
				return p5cleanup_local(local_idx, (p5context([v_js_code], p5want)));
				p5cleanup_local(local_idx, null);
			};
			tmp4057._prototype_ = null;
			return tmp4057
		})());
		p5typeglob_set('Perlito5::Javascript2::Runtime', 'emit_javascript2', (function () {
			var tmp4064;
			tmp4064 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript2/Runtime.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Runtime for "Perlito" Perl5-in-Javascript2' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + '"use strict";' + String.fromCharCode(10) + 'var isNode = typeof require != "undefined";' + String.fromCharCode(10) + String.fromCharCode(10) + 'if (typeof p5pkg !== "object") {' + String.fromCharCode(10) + '    var p5pkg = {};' + String.fromCharCode(10) + '    var p5LOCAL = [];' + String.fromCharCode(10) + String.fromCharCode(10) + '    var universal = function () {};' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL = new universal();' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL._ref_ = "UNIVERSAL";' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL.isa = function (List__) {' + String.fromCharCode(10) + '        // TODO - use @ISA' + String.fromCharCode(10) + '        return List__[0]._class_._ref_ == List__[1]' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL.can = function (List__) {' + String.fromCharCode(10) + '        var o = List__[0];' + String.fromCharCode(10) + '        var s = List__[1];' + String.fromCharCode(10) + '        if ( s.indexOf("::") == -1 ) {' + String.fromCharCode(10) + '            return p5method_lookup(s, o._class_._ref__, {})' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = s.split("::");' + String.fromCharCode(10) + '        s = c.pop(); ' + String.fromCharCode(10) + '        return p5method_lookup(s, c.join("::"), {});' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL.DOES = p5pkg.UNIVERSAL.can;' + String.fromCharCode(10) + String.fromCharCode(10) + '    var core = function () {};' + String.fromCharCode(10) + '    p5pkg["CORE"] = new core();' + String.fromCharCode(10) + '    p5pkg["CORE"]._ref_ = "CORE";' + String.fromCharCode(10) + String.fromCharCode(10) + '    var core_global = function () {};' + String.fromCharCode(10) + '    core_global.prototype = p5pkg.CORE;' + String.fromCharCode(10) + '    p5pkg["CORE::GLOBAL"] = new core_global();' + String.fromCharCode(10) + '    p5pkg["CORE::GLOBAL"]._ref_ = "CORE::GLOBAL";' + String.fromCharCode(10) + String.fromCharCode(10) + '    var p5_error = function (type, v) {' + String.fromCharCode(10) + '        this.type = type;' + String.fromCharCode(10) + '        this.v = this.message = v;' + String.fromCharCode(10) + '        this.toString = function(){' + String.fromCharCode(10) + '            if (this.type == ' + String.fromCharCode(39) + 'break' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                return ' + String.fromCharCode(39) + 'Can' + String.fromCharCode(92) + String.fromCharCode(39) + 't "break" outside a given block' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (this.type == ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ' || this.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ' || this.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (this.v == "") { return ' + String.fromCharCode(39) + 'Can' + String.fromCharCode(92) + String.fromCharCode(39) + 't "' + String.fromCharCode(39) + ' + this.type + ' + String.fromCharCode(39) + '" outside a loop block' + String.fromCharCode(39) + ' }' + String.fromCharCode(10) + '                return ' + String.fromCharCode(39) + 'Label not found for "' + String.fromCharCode(39) + ' + this.type + ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' + this.v + ' + String.fromCharCode(39) + '"' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return this.v;' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5_error.prototype = Error.prototype;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5make_package(pkg_name) {' + String.fromCharCode(10) + '    if (!p5pkg.hasOwnProperty(pkg_name)) {' + String.fromCharCode(10) + '        var tmp = function () {};' + String.fromCharCode(10) + '        tmp.prototype = p5pkg["CORE::GLOBAL"];' + String.fromCharCode(10) + '        p5pkg[pkg_name] = new tmp();' + String.fromCharCode(10) + '        p5pkg[pkg_name]._ref_ = pkg_name;' + String.fromCharCode(10) + '        p5pkg[pkg_name]._class_ = p5pkg[pkg_name];  // XXX memory leak' + String.fromCharCode(10) + '        p5pkg[pkg_name]._is_package_ = 1;' + String.fromCharCode(10) + String.fromCharCode(10) + '        // TODO - add the other package global variables' + String.fromCharCode(10) + '        p5pkg[pkg_name]["List_ISA"] = [];' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_a"] = null;' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_b"] = null;' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v__"] = null;' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_AUTOLOAD"] = null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg[pkg_name];' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5code_lookup_by_name(package_name, sub_name) {' + String.fromCharCode(10) + '    // sub_name can be a function already' + String.fromCharCode(10) + '    if (typeof sub_name === "function") {' + String.fromCharCode(10) + '        return sub_name;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // sub_name can have an optional namespace' + String.fromCharCode(10) + '    var parts = sub_name.split(/::/);' + String.fromCharCode(10) + '    if (parts.length > 1) {' + String.fromCharCode(10) + '        sub_name = parts.pop();' + String.fromCharCode(10) + '        package_name = parts.join("::");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (p5pkg.hasOwnProperty(package_name)) {' + String.fromCharCode(10) + '        var c = p5pkg[package_name];' + String.fromCharCode(10) + '        if ( c.hasOwnProperty(sub_name) ) {' + String.fromCharCode(10) + '            return c[sub_name]' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return null;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5get_class_for_method(method, class_name, seen) {' + String.fromCharCode(10) + '    // default mro' + String.fromCharCode(10) + '    // TODO - cache the methods that were already looked up' + String.fromCharCode(10) + '    if ( p5pkg[class_name].hasOwnProperty(method) ) {' + String.fromCharCode(10) + '        return class_name' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var isa = p5pkg[class_name].List_ISA;' + String.fromCharCode(10) + '    if (isa) {' + String.fromCharCode(10) + '        for (var i = 0; i < isa.length; i++) {' + String.fromCharCode(10) + '            if (!seen[isa[i]]) {' + String.fromCharCode(10) + '                var m = p5get_class_for_method(method, isa[i], seen);' + String.fromCharCode(10) + '                if (m) {' + String.fromCharCode(10) + '                    return m ' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                seen[isa[i]]++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5method_lookup(method, class_name, seen) {' + String.fromCharCode(10) + '    var c = p5get_class_for_method(method, class_name, seen);' + String.fromCharCode(10) + '    if (c) {' + String.fromCharCode(10) + '        return p5pkg[c][method]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if ( p5pkg.UNIVERSAL.hasOwnProperty(method) ) {' + String.fromCharCode(10) + '        return p5pkg.UNIVERSAL[method]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5method_not_found(method, class_name) {' + String.fromCharCode(10) + '    return "Can' + String.fromCharCode(39) + 't locate object method ' + String.fromCharCode(92) + '""' + String.fromCharCode(10) + '        + method + "' + String.fromCharCode(92) + '" via package ' + String.fromCharCode(92) + '"" + class_name + "' + String.fromCharCode(92) + '" (perhaps you forgot to load ' + String.fromCharCode(92) + '""' + String.fromCharCode(10) + '        + class_name + "' + String.fromCharCode(92) + '"?)";' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5call(invocant, method, list, p5want) {' + String.fromCharCode(10) + '    var invocant_original = invocant;' + String.fromCharCode(10) + '    if (typeof invocant === "string") {' + String.fromCharCode(10) + '        list.unshift(invocant);' + String.fromCharCode(10) + '        invocant = p5make_package(invocant);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else if ( invocant.hasOwnProperty("_is_package_") ) {' + String.fromCharCode(10) + '        list.unshift(invocant._ref_);   // invocant is a "package" object' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        list.unshift(invocant);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    if ( invocant.hasOwnProperty("_class_") ) {' + String.fromCharCode(10) + String.fromCharCode(10) + '        if ( invocant._class_.hasOwnProperty(method) ) {' + String.fromCharCode(10) + '            return invocant._class_[method](list, p5want)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var m = p5method_lookup(method, invocant._class_._ref_, {});' + String.fromCharCode(10) + '        if (m) {' + String.fromCharCode(10) + '            return m(list, p5want)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // method can have an optional namespace' + String.fromCharCode(10) + '        var pkg_name = method.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            var name = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '            m = p5method_lookup(name, pkg_name, {});' + String.fromCharCode(10) + '            if (m) {' + String.fromCharCode(10) + '                return m(list, p5want)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            p5pkg.CORE.die([p5method_not_found(name, pkg_name)]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (method == "print" || method == "printf" || method == "say" || method == "close") {' + String.fromCharCode(10) + '            list.shift();' + String.fromCharCode(10) + '            return p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '][method]( invocant_original, list, p5want);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        pkg_name = p5get_class_for_method(' + String.fromCharCode(39) + 'AUTOLOAD' + String.fromCharCode(39) + ', invocant._class_._ref_, {}) || p5get_class_for_method(' + String.fromCharCode(39) + 'AUTOLOAD' + String.fromCharCode(39) + ', "UNIVERSAL", {});' + String.fromCharCode(10) + '        if (pkg_name) {' + String.fromCharCode(10) + '            p5pkg[pkg_name]["v_AUTOLOAD"] = invocant._class_._ref_ + "::" + method;' + String.fromCharCode(10) + '            return p5pkg[pkg_name]["AUTOLOAD"](list, p5want);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        p5pkg.CORE.die([p5method_not_found(method, invocant._class_._ref_)]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg.CORE.die(["Can' + String.fromCharCode(39) + 't call method ", method, " on unblessed reference"]);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5call_sub(namespace, name, list, p5want) {' + String.fromCharCode(10) + '    if(p5pkg[namespace].hasOwnProperty(name)) {' + String.fromCharCode(10) + '        return p5pkg[namespace][name](list, p5want)' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if(p5pkg[namespace].hasOwnProperty("AUTOLOAD")) {' + String.fromCharCode(10) + '        p5pkg[namespace]["v_AUTOLOAD"] = namespace + "::" + name;' + String.fromCharCode(10) + '        return p5pkg[namespace]["AUTOLOAD"](list, p5want)' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg.CORE.die(["Undefined subroutine &" + namespace + "::" + name]);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5sub_exists(name, current_pkg_name) {' + String.fromCharCode(10) + '    var v = name;' + String.fromCharCode(10) + '    var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '    if (pkg_name.length > 1) {' + String.fromCharCode(10) + '        v = pkg_name.pop();' + String.fromCharCode(10) + '        pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        pkg_name = current_pkg_name;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var c = v.charCodeAt(0);' + String.fromCharCode(10) + '    if (c < 27) {' + String.fromCharCode(10) + '        v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '        pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg.hasOwnProperty(pkg_name) && p5pkg[pkg_name].hasOwnProperty(v) ' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5sub_prototype(name, current_pkg_name) {' + String.fromCharCode(10) + '    if (!name) {' + String.fromCharCode(10) + '        return null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof name === "function") {' + String.fromCharCode(10) + '        return name._prototype_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var v = name;' + String.fromCharCode(10) + '    var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '    if (pkg_name.length > 1) {' + String.fromCharCode(10) + '        v = pkg_name.pop();' + String.fromCharCode(10) + '        pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        pkg_name = current_pkg_name;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var c = v.charCodeAt(0);' + String.fromCharCode(10) + '    if (c < 27) {' + String.fromCharCode(10) + '        v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '        pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (p5pkg.hasOwnProperty(pkg_name) && p5pkg[pkg_name].hasOwnProperty(v)) {' + String.fromCharCode(10) + '        return p5pkg[pkg_name][v]._prototype_' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg["Perlito5"].v_PROTO._hash_[name] || p5pkg["Perlito5"].v_CORE_PROTO._hash_[name]' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5scalar_deref(v, current_pkg_name, autoviv_type) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = current_pkg_name;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = v.charCodeAt(0);' + String.fromCharCode(10) + '        if (c < 27) {' + String.fromCharCode(10) + '            v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '            pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var name = "v_"+v;' + String.fromCharCode(10) + '        if (!p5make_package(pkg_name)[name]) {' + String.fromCharCode(10) + '            if (autoviv_type == ' + String.fromCharCode(39) + 'array' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                p5pkg[pkg_name][name] = new p5ArrayRef([]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (autoviv_type == ' + String.fromCharCode(39) + 'hash' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                p5pkg[pkg_name][name] = new p5HashRef([]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (autoviv_type == ' + String.fromCharCode(39) + 'scalar' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                p5pkg[pkg_name][name] = new p5ScalarRef([]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return p5pkg[pkg_name][name];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (!v._scalar_) {' + String.fromCharCode(10) + '        if (autoviv_type == ' + String.fromCharCode(39) + 'array' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '            v._scalar_ = new p5ArrayRef([]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (autoviv_type == ' + String.fromCharCode(39) + 'hash' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '            v._scalar_ = new p5HashRef([]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (autoviv_type == ' + String.fromCharCode(39) + 'scalar' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '            v._scalar_ = new p5ScalarRef([]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return v._scalar_;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5scalar_deref_set(v, n, current_pkg_name) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = current_pkg_name;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = v.charCodeAt(0);' + String.fromCharCode(10) + '        if (c < 27) {' + String.fromCharCode(10) + '            v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '            pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var name = "v_"+v;' + String.fromCharCode(10) + '        p5make_package(pkg_name)[name] = n;' + String.fromCharCode(10) + '        return p5pkg[pkg_name][name];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    v._scalar_ = n;' + String.fromCharCode(10) + '    return v._scalar_;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5array_deref(v, current_pkg_name) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = current_pkg_name;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = v.charCodeAt(0);' + String.fromCharCode(10) + '        if (c < 27) {' + String.fromCharCode(10) + '            v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '            pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var name = "List_"+v;' + String.fromCharCode(10) + '        if (!p5make_package(pkg_name)[name]) {' + String.fromCharCode(10) + '                p5pkg[pkg_name][name] = [];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return p5pkg[pkg_name][name];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return v._array_;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5hash_deref(v, current_pkg_name) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = current_pkg_name;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = v.charCodeAt(0);' + String.fromCharCode(10) + '        if (c < 27) {' + String.fromCharCode(10) + '            v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '            pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var name = "Hash_"+v;' + String.fromCharCode(10) + '        if (!p5make_package(pkg_name)[name]) {' + String.fromCharCode(10) + '                p5pkg[pkg_name][name] = [];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return p5pkg[pkg_name][name];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return v._hash_;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + '// regex globals' + String.fromCharCode(10) + 'p5make_package("Regex");' + String.fromCharCode(10) + 'var p5_last_regex = new RegExp("", "");' + String.fromCharCode(10) + 'var p5_regex_capture = [];' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5make_package("main");' + String.fromCharCode(10) + 'p5make_package("Perlito5");' + String.fromCharCode(10) + 'p5pkg["Perlito5"].v_PKG_NAME = "main";' + String.fromCharCode(10) + 'p5make_package("main::STDIN").file_handle = { id : 0, readline_buffer : ' + String.fromCharCode(39) + String.fromCharCode(39) + ' };' + String.fromCharCode(10) + 'p5make_package("main::STDOUT").file_handle = { id : 1 };' + String.fromCharCode(10) + 'p5make_package("main::STDERR").file_handle = { id : 2 };' + String.fromCharCode(10) + 'p5make_package("ARGV").file_handle = { id : null };' + String.fromCharCode(10) + 'p5pkg["STDOUT"] = p5pkg["main::STDOUT"];' + String.fromCharCode(10) + 'p5pkg["STDERR"] = p5pkg["main::STDERR"];' + String.fromCharCode(10) + 'p5pkg["STDIN"] = p5pkg["main::STDIN"];' + String.fromCharCode(10) + 'p5pkg["Perlito5"].v_SELECT = "main::STDOUT";' + String.fromCharCode(10) + 'p5pkg["main"]["v_@"] = [];      // $@' + String.fromCharCode(10) + 'p5pkg["main"]["v_|"] = 0;       // $|' + String.fromCharCode(10) + 'p5pkg["main"]["v_/"] = "' + String.fromCharCode(92) + 'n";    // $/' + String.fromCharCode(10) + 'p5pkg["main"][' + String.fromCharCode(39) + 'v_"' + String.fromCharCode(39) + '] = " ";     // $"' + String.fromCharCode(10) + 'p5pkg["main"]["List_#"] = [];   // @#' + String.fromCharCode(10) + 'p5scalar_deref_set(String.fromCharCode(15), isNode ? "node.js" : "javascript2");  // $^O' + String.fromCharCode(10) + 'p5pkg["main"]["List_INC"] = [];' + String.fromCharCode(10) + 'p5pkg["main"]["Hash_INC"] = {};' + String.fromCharCode(10) + 'p5pkg["main"]["List_ARGV"] = [];' + String.fromCharCode(10) + 'p5pkg["main"]["Hash_ENV"] = {};' + String.fromCharCode(10) + 'p5pkg["main"]["Hash_SIG"] = {};' + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + '    p5pkg["main"]["List_ARGV"] = process.argv.splice(2);' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5pkg["main"]["Hash_ENV"] = {};' + String.fromCharCode(10) + '    for (var e in process.env) p5pkg["main"]["Hash_ENV"][e] = process.env[e];' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5pkg["main"]["v_$"] = process.pid;   // $$' + String.fromCharCode(10) + '    p5scalar_deref_set(String.fromCharCode(24), process.argv[0]);  // $^X' + String.fromCharCode(10) + '} else if (typeof arguments === "object") {' + String.fromCharCode(10) + '    p5pkg["main"]["List_ARGV"] = arguments;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5make_package("Perlito5::IO");' + String.fromCharCode(10) + 'p5make_package("Perlito5::Runtime");' + String.fromCharCode(10) + 'p5make_package("Perlito5::Grammar");' + String.fromCharCode(10) + String.fromCharCode(10) + 'var sigils = { ' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + 'List_' + String.fromCharCode(39) + ', ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + 'Hash_' + String.fromCharCode(39) + ', ' + String.fromCharCode(39) + '$' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + 'v_' + String.fromCharCode(39) + ', ' + String.fromCharCode(39) + '&' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + String.fromCharCode(39) + ' };' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5typeglob_set(namespace, name, obj) {' + String.fromCharCode(10) + '    p5make_package(namespace);' + String.fromCharCode(10) + '    if ( obj.hasOwnProperty("_ref_") ) {' + String.fromCharCode(10) + '        if ( obj._ref_ == "HASH" ) {' + String.fromCharCode(10) + '            p5pkg[namespace][sigils[' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + '] + name] = obj._hash_;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if ( obj._ref_ == "ARRAY" ) {' + String.fromCharCode(10) + '            p5pkg[namespace][sigils[' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + '] + name] = obj._array_;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if ( obj._ref_ == "SCALAR" ) {' + String.fromCharCode(10) + '            p5pkg[namespace][sigils[' + String.fromCharCode(39) + '$' + String.fromCharCode(39) + '] + name] = obj._scalar_;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if ( obj._ref_ == "CODE" ) {' + String.fromCharCode(10) + '            p5pkg[namespace][sigils[' + String.fromCharCode(39) + '&' + String.fromCharCode(39) + '] + name] = obj._code_;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if ( obj._ref_ == "GLOB" ) {' + String.fromCharCode(10) + '            // TODO' + String.fromCharCode(10) + '            p5pkg[namespace][name] = obj;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        p5pkg[namespace][name] = obj;   // native CODE' + String.fromCharCode(10) + '        // TODO - non-reference' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg[namespace][name];  // TODO - return GLOB' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5typeglob_deref_set(v, obj, current_pkg_name) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = current_pkg_name;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return p5typeglob_set(pkg_name, v, obj);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    CORE.die(["TODO: can' + String.fromCharCode(39) + 't p5typeglob_deref_set()"]);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5cleanup_local(idx, value) {' + String.fromCharCode(10) + '    while (p5LOCAL.length > idx) {' + String.fromCharCode(10) + '        var l = p5LOCAL.pop();' + String.fromCharCode(10) + '        l();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return value;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + '//-------- Reference' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5id = Math.floor(Math.random() * 1000000000) + 1000000000;' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5HashRef(o) {' + String.fromCharCode(10) + '    this._hash_ = o;' + String.fromCharCode(10) + '    this._ref_ = "HASH";' + String.fromCharCode(10) + '    this.bool = function() { return 1 };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5ArrayRef(o) {' + String.fromCharCode(10) + '    this._array_ = o;' + String.fromCharCode(10) + '    this._ref_ = "ARRAY";' + String.fromCharCode(10) + '    this.bool = function() { return 1 };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5ScalarRef(o) {' + String.fromCharCode(10) + '    this._scalar_ = o;' + String.fromCharCode(10) + '    this._ref_ = "SCALAR";' + String.fromCharCode(10) + '    this.bool = function() { return 1 };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5GlobRef(o) {' + String.fromCharCode(10) + '    this._scalar_ = o;' + String.fromCharCode(10) + '    this._ref_ = "GLOB";' + String.fromCharCode(10) + '    this.bool = function() { return 1 };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5CodeRef(o) {' + String.fromCharCode(10) + '    this._code_ = o;' + String.fromCharCode(10) + '    this._ref_ = "CODE";' + String.fromCharCode(10) + '    this.bool = function() { return 1 };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + '//-------- Hash ' + String.fromCharCode(10) + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5hget", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) { return this[i] }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5hset", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i, v) { this[i] = v; return this[i] }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5incr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        this[i] = p5incr_(this[i]);' + String.fromCharCode(10) + '        return this[i];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5postincr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        var v = this[i];' + String.fromCharCode(10) + '        this[i] = p5incr_(this[i]);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5decr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        this[i] = p5decr_(this[i]);' + String.fromCharCode(10) + '        return this[i];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5postdecr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        var v = this[i];' + String.fromCharCode(10) + '        this[i] = p5decr_(this[i]);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5hget_array", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (this[i] == null) { this[i] = new p5ArrayRef([]) }' + String.fromCharCode(10) + '        return this[i]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Object.prototype, "p5hget_hash", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (this[i] == null) { this[i] = new p5HashRef({}) }' + String.fromCharCode(10) + '        return this[i]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + String.fromCharCode(10) + '//-------' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5context = function(List__, p5want) {' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        return p5list_to_a(List__);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // scalar: return the last value' + String.fromCharCode(10) + '    var o = List__;' + String.fromCharCode(10) + '    if (o instanceof Array) {' + String.fromCharCode(10) + '        o =   o.length' + String.fromCharCode(10) + '            ? o[o.length-1]' + String.fromCharCode(10) + '            : null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (o instanceof Array) {' + String.fromCharCode(10) + '        o =   o.length' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5list_to_a = function(args) {' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    for (var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        var o = args[i];' + String.fromCharCode(10) + '        if  (  o == null' + String.fromCharCode(10) + '            || o._class_    // perl5 blessed reference' + String.fromCharCode(10) + '            || o._ref_      // perl5 un-blessed reference' + String.fromCharCode(10) + '            )' + String.fromCharCode(10) + '        {' + String.fromCharCode(10) + '            res.push(o);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o instanceof Array) {' + String.fromCharCode(10) + '            // perl5 array' + String.fromCharCode(10) + '            for (var j = 0; j < o.length; j++) {' + String.fromCharCode(10) + '                res.push(o[j]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (typeof o === "object") {' + String.fromCharCode(10) + '            // perl5 hash' + String.fromCharCode(10) + '            for(var j in o) {' + String.fromCharCode(10) + '                if (o.hasOwnProperty(j)) {' + String.fromCharCode(10) + '                    res.push(j);' + String.fromCharCode(10) + '                    res.push(o[j]);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // non-ref' + String.fromCharCode(10) + '            res.push(o);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5_list_of_refs = function(a) {' + String.fromCharCode(10) + '    // implements ' + String.fromCharCode(92) + '( @a )' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    for (var i = 0; i < a.length; i++) {' + String.fromCharCode(10) + '        res.push(new p5ScalarRef(a[i]));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5a_to_h = function(a) {' + String.fromCharCode(10) + '    var res = {};' + String.fromCharCode(10) + '    for (var i = 0; i < a.length; i+=2) {' + String.fromCharCode(10) + '        res[p5str(a[i])] = a[i+1];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5idx = function(a, i) {' + String.fromCharCode(10) + '    return i >= 0 ? i : a.length + i' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5smrt_scalar = function(a1, a2) {' + String.fromCharCode(10) + '    if (a2 == null) {' + String.fromCharCode(10) + '        return a1 == null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof a2 == "string") {' + String.fromCharCode(10) + '        return p5str(a1) == a2;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof a2 == "number") {' + String.fromCharCode(10) + '        return p5num(a1) == a2;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    CORE.die("Not implemented: smartmatch operator with argument type ' + String.fromCharCode(39) + '", (typeof a2), "' + String.fromCharCode(39) + '");' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5str = function(o) {' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "object") {' + String.fromCharCode(10) + '        if (o instanceof Array) {' + String.fromCharCode(10) + '            return CORE.join([""].concat(o));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if ( o.hasOwnProperty("_ref_") ) {' + String.fromCharCode(10) + '            var class_name = ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            if (o._class_ && typeof o._class_._ref_ === "string") {' + String.fromCharCode(10) + '                // blessed reference' + String.fromCharCode(10) + '                // test for overload' + String.fromCharCode(10) + '                var meth = p5method_lookup(' + String.fromCharCode(39) + '(""' + String.fromCharCode(39) + ', o._class_._ref_, {});' + String.fromCharCode(10) + '                if (meth) {' + String.fromCharCode(10) + '                    return p5str(meth([o], 0));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                // TODO - test the "fallback" flag' + String.fromCharCode(10) + '                meth = p5method_lookup(' + String.fromCharCode(39) + '(0+' + String.fromCharCode(39) + ', o._class_._ref_, {});' + String.fromCharCode(10) + '                if (meth) {' + String.fromCharCode(10) + '                    return p5str(meth([o], 0));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                // no overload, strigify the reference instead' + String.fromCharCode(10) + '                class_name = o._class_._ref_ + ' + String.fromCharCode(39) + '=' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (!o._id_) { o._id_ = p5id++ }' + String.fromCharCode(10) + '            return [class_name, o._ref_, ' + String.fromCharCode(39) + '(0x' + String.fromCharCode(39) + ', o._id_.toString( 16 ), ' + String.fromCharCode(39) + ')' + String.fromCharCode(39) + '].join(' + String.fromCharCode(39) + String.fromCharCode(39) + ');' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "function") {' + String.fromCharCode(10) + '        var class_name = ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        if (o._class_ && typeof o._class_._ref_ === "string") {' + String.fromCharCode(10) + '            // blessed reference' + String.fromCharCode(10) + '            class_name = o._class_._ref_ + ' + String.fromCharCode(39) + '=' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (!o._id_) { o._id_ = p5id++ }' + String.fromCharCode(10) + '        return [class_name, ' + String.fromCharCode(39) + 'CODE(0x' + String.fromCharCode(39) + ', o._id_.toString( 16 ), ' + String.fromCharCode(39) + ')' + String.fromCharCode(39) + '].join(' + String.fromCharCode(39) + String.fromCharCode(39) + ');' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o == "number" && Math.abs(o) < 0.0001 && o != 0) {' + String.fromCharCode(10) + '        return o.toExponential().replace(/e-(' + String.fromCharCode(92) + 'd)$/,"e-0$1");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "boolean") {' + String.fromCharCode(10) + '        return o ? "1" : "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o !== "string") {' + String.fromCharCode(10) + '        return "" + o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5num = function(o) {' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return 0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "object") {' + String.fromCharCode(10) + '        if (o instanceof Array) {' + String.fromCharCode(10) + '            return o.length;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if ( o.hasOwnProperty("_ref_") ) {' + String.fromCharCode(10) + '            if (o._class_ && typeof o._class_._ref_ === "string") {' + String.fromCharCode(10) + '                // blessed reference' + String.fromCharCode(10) + '                // test for overload' + String.fromCharCode(10) + '                var meth = p5method_lookup(' + String.fromCharCode(39) + '(0+' + String.fromCharCode(39) + ', o._class_._ref_, {});' + String.fromCharCode(10) + '                if (meth) {' + String.fromCharCode(10) + '                    return p5num(meth([o], 0));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                // TODO - test the "fallback" flag' + String.fromCharCode(10) + '                meth = p5method_lookup(' + String.fromCharCode(39) + '(""' + String.fromCharCode(39) + ', o._class_._ref_, {});' + String.fromCharCode(10) + '                if (meth) {' + String.fromCharCode(10) + '                    return p5num(meth([o], 0));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o !== "number") {' + String.fromCharCode(10) + '        var s = p5str(o).trim();' + String.fromCharCode(10) + '        var s1 = s.substr(0, 3).toUpperCase();' + String.fromCharCode(10) + '        if ( s1 == "NAN" ) { return NaN };' + String.fromCharCode(10) + '        if ( s1 == "INF" ) { return Infinity };' + String.fromCharCode(10) + '        s1 = s.substr(0, 4).toUpperCase();' + String.fromCharCode(10) + '        if ( s1 == "-NAN" ) { return NaN };' + String.fromCharCode(10) + '        if ( s1 == "-INF" ) { return -Infinity };' + String.fromCharCode(10) + '        s1 = parseFloat(s);' + String.fromCharCode(10) + '        if ( isNaN(s1) ) { return 0 };' + String.fromCharCode(10) + '        return s1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5bool = function(o) {' + String.fromCharCode(10) + '    if (o) {' + String.fromCharCode(10) + '        if (typeof o === "boolean") {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o === "number") {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o === "string") {' + String.fromCharCode(10) + '            return o != "" && o != "0";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.length === "number") {' + String.fromCharCode(10) + '            return o.length;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (o instanceof Error) {' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return false;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5incr_ = function(o) {' + String.fromCharCode(10) + '    if (typeof o === "number") {' + String.fromCharCode(10) + '        return o + 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5str_inc(p5str(o));' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5decr_ = function(o) {' + String.fromCharCode(10) + '    if (typeof o === "number") {' + String.fromCharCode(10) + '        return o - 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5num(o) - 1;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5modulo = function(o, k) {' + String.fromCharCode(10) + '    var m = o % k;' + String.fromCharCode(10) + '    if ( k < 0 && m > 0 ) {' + String.fromCharCode(10) + '        m = m + k;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else if ( k > 0 && m < 0 ) {' + String.fromCharCode(10) + '        m = m + k;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return m;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5shift_left = function(o, k) {' + String.fromCharCode(10) + '    return k < 31 ? o << k : o * Math.pow(2, k);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5and = function(a, fb) {' + String.fromCharCode(10) + '    if (p5bool(a)) {' + String.fromCharCode(10) + '        return fb();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return a;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5or = function(a, fb) {' + String.fromCharCode(10) + '    if (p5bool(a)) {' + String.fromCharCode(10) + '        return a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return fb();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5defined_or = function(a, fb) {' + String.fromCharCode(10) + '    if (a == null) {' + String.fromCharCode(10) + '        return fb();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return a;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5xor = function(a, fb) {' + String.fromCharCode(10) + '    return p5bool(a) ? !p5bool(fb()) : fb()' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5cmp = function(a, b) {' + String.fromCharCode(10) + '    return a > b ? 1 : a < b ? -1 : 0 ' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5complement = function(a) {' + String.fromCharCode(10) + '    return a < 0 ? ~a : 4294967295 - a' + String.fromCharCode(10) + '    // return a < 0 ? ~a : 18446744073709551615 - a' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5str_replicate = function(o, n) {' + String.fromCharCode(10) + '    n = Math.floor(n);' + String.fromCharCode(10) + '    return n > 0 ? Array(n + 1).join(o) : "";' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5list_replicate = function(o, n, want) {' + String.fromCharCode(10) + '    o = p5list_to_a([o]);' + String.fromCharCode(10) + '    n = p5num(n);' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (!want) {' + String.fromCharCode(10) + '        return p5str_replicate(o.pop(), n);   // scalar context' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < n; i++) {' + String.fromCharCode(10) + '        for(var j = 0; j < o.length; j++) {' + String.fromCharCode(10) + '            out.push(o[j]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return (want ? out : out.length)' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5list_slice = function(o, ix, want) {' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for (var i=0, l=ix.length; i<l; ++i) {' + String.fromCharCode(10) + '        if (ix[i] < o.length) {' + String.fromCharCode(10) + '            out[i] = o[ix[i]];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (want) { return out }' + String.fromCharCode(10) + '    return out.length ? out[out.length-1] : null;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5hash_slice = function(o, ix, want) {' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for (var i=0, l=ix.length; i<l; ++i) {' + String.fromCharCode(10) + '        out.push(ix[i]);' + String.fromCharCode(10) + '        out.push(o[ix[i]]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (want) { return out }' + String.fromCharCode(10) + '    return out.length ? out[out.length-1] : null;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5list_lookup_slice = function(o, ix, want) {' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for (var i=0, l=ix.length; i<l; ++i) {' + String.fromCharCode(10) + '        out[i] = o[ix[i]];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (want) { return out }' + String.fromCharCode(10) + '    return out.length ? out[out.length-1] : null;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5hash_lookup_slice = function(o, ix, want) {' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for (var i=0, l=ix.length; i<l; ++i) {' + String.fromCharCode(10) + '        out.push(ix[i]);' + String.fromCharCode(10) + '        out.push(o[ix[i]]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (want) { return out }' + String.fromCharCode(10) + '    return out.length ? out[out.length-1] : null;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5str_inc = function(s) {' + String.fromCharCode(10) + '    if (s.length < 2) {' + String.fromCharCode(10) + '        if ((s >= "0" && s <= "8") || (s >= "A" && s <= "Y") || (s >= "a" && s <= "y")) {' + String.fromCharCode(10) + '            return String.fromCharCode(s.charCodeAt(0) + 1);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s == "9") {' + String.fromCharCode(10) + '            return "10";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s == "Z") {' + String.fromCharCode(10) + '            return "AA";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s == "z") {' + String.fromCharCode(10) + '            return "aa";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return "1";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var c0 = s.substr(0, 1);' + String.fromCharCode(10) + '    if (c0 >= "0" && c0 <= "9") {' + String.fromCharCode(10) + '        return p5str(p5num(s)+1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var c = p5str_inc(s.substr(s.length-1, 1));' + String.fromCharCode(10) + '    if (c.length == 1) {' + String.fromCharCode(10) + '        return s.substr(0, s.length-1) + c;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5str_inc(s.substr(0, s.length-1)) + c.substr(c.length-1, 1);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5range_state = {};' + String.fromCharCode(10) + 'var p5range = function(a, b, p5want, id, three_dots) {' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        // list context' + String.fromCharCode(10) + '        var tmp = [];' + String.fromCharCode(10) + '        if (typeof a === "number" || typeof b === "number") {' + String.fromCharCode(10) + '            a = p5num(a);' + String.fromCharCode(10) + '            b = p5num(b);' + String.fromCharCode(10) + '            while (a <= b) {' + String.fromCharCode(10) + '                tmp.push(a);' + String.fromCharCode(10) + '                a++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            a = p5str(a);' + String.fromCharCode(10) + '            b = p5str(b);' + String.fromCharCode(10) + '            var c = a.substr(0, 1);' + String.fromCharCode(10) + '            if ( c == ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '                if (a == "+") {' + String.fromCharCode(10) + '                    return [a]' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                a = a.substr(1)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if ( c == ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '                if (a == "-") {' + String.fromCharCode(10) + '                    return [a]' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                return p5range(p5num(a), b, p5want, id, three_dots)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            c = b.substr(0, 1);' + String.fromCharCode(10) + '            if ( c == ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '                b = b.substr(1)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            while (  (a.length < b.length)' + String.fromCharCode(10) + '                  || (a.length == b.length && a <= b) ) {' + String.fromCharCode(10) + '                tmp.push(a);' + String.fromCharCode(10) + '                a = p5incr_(a);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return tmp;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // flip-flop operator' + String.fromCharCode(10) + '    var v;' + String.fromCharCode(10) + '    if (p5range_state[id]) {' + String.fromCharCode(10) + '        v = ++p5range_state[id];' + String.fromCharCode(10) + '        if (p5bool(b)) {' + String.fromCharCode(10) + '            p5range_state[id] = 0;' + String.fromCharCode(10) + '            v = v + "E0";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        p5range_state[id] = 0;' + String.fromCharCode(10) + '        if (p5bool(a)) {' + String.fromCharCode(10) + '            p5range_state[id]++;' + String.fromCharCode(10) + '            v = p5range_state[id];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (v && !three_dots && p5bool(b)) {' + String.fromCharCode(10) + '            p5range_state[id] = 0;' + String.fromCharCode(10) + '            v = v + "E0";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5negative = function(o) {' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return ' + String.fromCharCode(39) + '-0' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "object" && (o instanceof Array)) {' + String.fromCharCode(10) + '        return -(o.length);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o !== "number") {' + String.fromCharCode(10) + '        var s = p5str(o);' + String.fromCharCode(10) + '        var c = s.substr(0, 1);' + String.fromCharCode(10) + '        if ( c == ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' ) { s = s.substr(1); return ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' + s }' + String.fromCharCode(10) + '        if ( c == ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' ) { s = s.substr(1); return ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' + s }' + String.fromCharCode(10) + '        var s1 = parseFloat(s.trim());' + String.fromCharCode(10) + '        if ( isNaN(s1) ) {' + String.fromCharCode(10) + '            if ( c.length && !c.match(/[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/) ) {' + String.fromCharCode(10) + '                if ( s.trim().substr(0,1) == "-" ) { return 0 };' + String.fromCharCode(10) + '                return ' + String.fromCharCode(39) + '-0' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            };' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' + s' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '        return -s1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return -o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5qr = function(search, modifier) {' + String.fromCharCode(10) + '    // TODO - "Regex" stringification' + String.fromCharCode(10) + '    var re = new RegExp(search, modifier);' + String.fromCharCode(10) + '    return CORE.bless([(new p5ScalarRef(re)), ' + String.fromCharCode(39) + 'Regex' + String.fromCharCode(39) + ']);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5m = function(s, search, modifier, want) {' + String.fromCharCode(10) + '    // TODO - captures' + String.fromCharCode(10) + '    var re;' + String.fromCharCode(10) + '    if (search.hasOwnProperty(' + String.fromCharCode(39) + '_scalar_' + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '        // search is a Regex object' + String.fromCharCode(10) + '        re = search._scalar_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        re = new RegExp(search, modifier);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5_regex_capture = [];' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    var myArray;' + String.fromCharCode(10) + '    while ((myArray = re.exec(s)) !== null) {' + String.fromCharCode(10) + '        var m = myArray.shift();' + String.fromCharCode(10) + '        if (myArray.length) {' + String.fromCharCode(10) + '            res = res.concat(myArray);' + String.fromCharCode(10) + '            p5_regex_capture = p5_regex_capture.concat(myArray);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            res.push(m);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (re.lastIndex == 0) {' + String.fromCharCode(10) + '            return (want ? res : res.length)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return (want ? res : res.length)' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5s = function(s, search, fun_replace, modifier, want) {' + String.fromCharCode(10) + '    // TODO - captures' + String.fromCharCode(10) + '    var count = null;' + String.fromCharCode(10) + '    var re;' + String.fromCharCode(10) + '    if (search.hasOwnProperty(' + String.fromCharCode(39) + '_scalar_' + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '        // search is a Regex object' + String.fromCharCode(10) + '        re = search._scalar_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        re = new RegExp(search, modifier);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5_regex_capture = [];' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    var myArray;' + String.fromCharCode(10) + '    var last_index = 0;' + String.fromCharCode(10) + '    while ((myArray = re.exec(s)) !== null) {' + String.fromCharCode(10) + '        var m = myArray.shift();' + String.fromCharCode(10) + '        p5_regex_capture = [].concat(myArray);' + String.fromCharCode(10) + '        if (myArray.index > last_index) {' + String.fromCharCode(10) + '            res.push(s.substr(last_index, myArray.index - last_index));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        res.push(fun_replace());' + String.fromCharCode(10) + '        last_index = re.lastIndex;' + String.fromCharCode(10) + '        if (last_index == 0) {' + String.fromCharCode(10) + '            count = 1;' + String.fromCharCode(10) + '            last_index = myArray.index + m.length;' + String.fromCharCode(10) + '            if (s.length > last_index) {' + String.fromCharCode(10) + '                res.push(s.substr(last_index, s.length - last_index));' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return [res.join(' + String.fromCharCode(39) + String.fromCharCode(39) + '), count]' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        count++;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (s.length > last_index) {' + String.fromCharCode(10) + '        res.push(s.substr(last_index, s.length - last_index));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return [res.join(' + String.fromCharCode(39) + String.fromCharCode(39) + '), count]' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5tr = function(s, search, replace, modifier, want) {' + String.fromCharCode(10) + '    var count = 0;' + String.fromCharCode(10) + '    // TODO - expand character lists in spec' + String.fromCharCode(10) + '    // TODO - modifiers' + String.fromCharCode(10) + '    search = search.split("");' + String.fromCharCode(10) + '    replace = replace.split("");' + String.fromCharCode(10) + '    while (search.length > replace.length) {' + String.fromCharCode(10) + '        replace.push(replace[replace.length-1]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var tr = {};' + String.fromCharCode(10) + '    for(var i = 0; i < search.length; i++) {' + String.fromCharCode(10) + '        tr[search[i]] = replace[i];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var res = s.split("");' + String.fromCharCode(10) + '    for(var i = 0; i < res.length; i++) {' + String.fromCharCode(10) + '        if (tr.hasOwnProperty(res[i])) {' + String.fromCharCode(10) + '            res[i] = tr[res[i]];' + String.fromCharCode(10) + '            count++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return [res.join(' + String.fromCharCode(39) + String.fromCharCode(39) + '), count]' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5chop = function(s) {' + String.fromCharCode(10) + '    // TODO - array, hash' + String.fromCharCode(10) + '    return [s.substr(-1,1), s.substr(0,s.length-1)]' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5chomp = function(s) {' + String.fromCharCode(10) + '    // TODO - array, hash' + String.fromCharCode(10) + '    // TODO - special cases of $/ - empty string, reference' + String.fromCharCode(10) + '    var sep = p5pkg["main"]["v_/"];  // $/' + String.fromCharCode(10) + '    var c = s.substr(-sep.length);' + String.fromCharCode(10) + '    if (c == sep) {' + String.fromCharCode(10) + '        return [c.length, s.substr(0,s.length-sep.length)]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        return [0, s]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5for = function(namespace, var_name, func, args, cont, label) {' + String.fromCharCode(10) + '    var local_idx = p5LOCAL.length;' + String.fromCharCode(10) + '    var v_old = namespace[var_name];' + String.fromCharCode(10) + '    var _redo;' + String.fromCharCode(10) + '    p5LOCAL.push(function(){ namespace[var_name] = v_old });' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        namespace[var_name] = args[i];' + String.fromCharCode(10) + '        do {' + String.fromCharCode(10) + '            _redo = false;' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                func()' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                        p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                        return' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (cont) {' + String.fromCharCode(10) + '                try {' + String.fromCharCode(10) + '                    if (!_redo) { cont() }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                catch(err) {' + String.fromCharCode(10) + '                    if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                        if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                            p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                            return' + String.fromCharCode(10) + '                        }' + String.fromCharCode(10) + '                        else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                        else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                    }            ' + String.fromCharCode(10) + '                    else {' + String.fromCharCode(10) + '                        throw(err)' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        } while (_redo);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5for_lex = function(set_var, func, args, cont, label) {' + String.fromCharCode(10) + '    var local_idx = p5LOCAL.length;' + String.fromCharCode(10) + '    var _redo;' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        set_var(args[i]);' + String.fromCharCode(10) + '        do {' + String.fromCharCode(10) + '            _redo = false;' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                func()' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                        p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                        return' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }            ' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (cont) {' + String.fromCharCode(10) + '                try {' + String.fromCharCode(10) + '                    if (!_redo) { cont() }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                catch(err) {' + String.fromCharCode(10) + '                    if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                        if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                            p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                            return' + String.fromCharCode(10) + '                        }' + String.fromCharCode(10) + '                        else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                        else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                    }            ' + String.fromCharCode(10) + '                    else {' + String.fromCharCode(10) + '                        throw(err)' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        } while (_redo);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5block = function(set_var, func, args, cont, label) {' + String.fromCharCode(10) + '    var local_idx = p5LOCAL.length;' + String.fromCharCode(10) + '    var _redo;' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        set_var(args[i]);' + String.fromCharCode(10) + '        do {' + String.fromCharCode(10) + '            _redo = false;' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                return func()' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                        p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                        return' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }            ' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (cont) {' + String.fromCharCode(10) + '                try {' + String.fromCharCode(10) + '                    if (!_redo) { cont() }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                catch(err) {' + String.fromCharCode(10) + '                    if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                        if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                            p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                            return' + String.fromCharCode(10) + '                        }' + String.fromCharCode(10) + '                        else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                        else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                    }            ' + String.fromCharCode(10) + '                    else {' + String.fromCharCode(10) + '                        throw(err)' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        } while (_redo);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5while = function(func, cond, cont, label, redo) {' + String.fromCharCode(10) + '    var local_idx = p5LOCAL.length;' + String.fromCharCode(10) + '    while (redo || p5bool(cond())) {' + String.fromCharCode(10) + '        redo = false;' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            func()' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                    p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                    return' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { redo = true }' + String.fromCharCode(10) + '                else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '            }            ' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                throw(err)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (cont) {' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                if (!redo) { cont() }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && (err.v == label || err.v == ' + String.fromCharCode(39) + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                        p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '                        return' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }            ' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5cleanup_local(local_idx, null);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5map = function(namespace, func, args) {' + String.fromCharCode(10) + '    var v_old = p5pkg["main"]["v__"];' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        p5pkg["main"]["v__"] = args[i];' + String.fromCharCode(10) + '        var o = p5list_to_a([func(1)]);' + String.fromCharCode(10) + '        for(var j = 0; j < o.length; j++) {' + String.fromCharCode(10) + '            out.push(o[j]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg["main"]["v__"] = v_old;' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5grep = function(namespace, func, args) {' + String.fromCharCode(10) + '    var v_old = p5pkg["main"]["v__"];' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        p5pkg["main"]["v__"] = args[i];' + String.fromCharCode(10) + '        if (p5bool(func(0))) {' + String.fromCharCode(10) + '            out.push(args[i])' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg["main"]["v__"] = v_old;' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5sort = function(namespace, func, args) {' + String.fromCharCode(10) + '    var a_old = namespace["v_a"];' + String.fromCharCode(10) + '    var b_old = namespace["v_b"];' + String.fromCharCode(10) + '    var out = ' + String.fromCharCode(10) + '        func == null' + String.fromCharCode(10) + '        ? args.sort()' + String.fromCharCode(10) + '        : args.sort(' + String.fromCharCode(10) + '            function(a, b) {' + String.fromCharCode(10) + '                namespace["v_a"] = a;' + String.fromCharCode(10) + '                namespace["v_b"] = b;' + String.fromCharCode(10) + '                return func(0);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        );' + String.fromCharCode(10) + '    namespace["v_a"] = a_old;' + String.fromCharCode(10) + '    namespace["v_b"] = b_old;' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4064._prototype_ = null;
			return tmp4064
		})());
		1;
	})();
	// use Perlito5::Javascript2::Runtime
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript2::Array');
		p5typeglob_set('Perlito5::Javascript2::Array', 'emit_javascript2', (function () {
			var tmp4065;
			tmp4065 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript2/Runtime.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Runtime for "Perlito" Perl5-in-Javascript2' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + '//-------- Array ' + String.fromCharCode(10) + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5aget", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        return this[i] ' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5aset", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i, v) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        this[i] = v;' + String.fromCharCode(10) + '        return this[i]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5incr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        this[i] = p5incr_(this[i]);' + String.fromCharCode(10) + '        return this[i];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5postincr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        var v = this[i];' + String.fromCharCode(10) + '        this[i] = p5incr_(this[i]);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5decr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        this[i] = p5decr_(this[i]);' + String.fromCharCode(10) + '        return this[i];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5postdecr", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        var v = this[i];' + String.fromCharCode(10) + '        this[i] = p5decr_(this[i]);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5aget_array", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        if (this[i] == null) { this[i] = new p5ArrayRef([]) }' + String.fromCharCode(10) + '        return this[i]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5aget_hash", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    value : function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        if (this[i] == null) { this[i] = new p5HashRef({}) }' + String.fromCharCode(10) + '        return this[i]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5unshift", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    configurable : true,' + String.fromCharCode(10) + '    value : function (args) { ' + String.fromCharCode(10) + '        for(var i = args.length-1; i >= 0; i--) {' + String.fromCharCode(10) + '            this.unshift(args[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.length; ' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + 'Object.defineProperty( Array.prototype, "p5push", {' + String.fromCharCode(10) + '    enumerable : false,' + String.fromCharCode(10) + '    configurable : true,' + String.fromCharCode(10) + '    value : function (args) { ' + String.fromCharCode(10) + '        for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '            this.push(args[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.length; ' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '});' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5tie_array = function(v, List__) {' + String.fromCharCode(10) + '    var pkg_name = p5str(List__.shift());' + String.fromCharCode(10) + String.fromCharCode(10) + '    var res = p5call(pkg_name, ' + String.fromCharCode(39) + 'TIEARRAY' + String.fromCharCode(39) + ', List__, null);' + String.fromCharCode(10) + '    ' + String.fromCharCode(10) + '    // TODO' + String.fromCharCode(10) + '    ' + String.fromCharCode(10) + '    //  A class implementing an ordinary array should have the following methods:' + String.fromCharCode(10) + '    //      TIEARRAY pkg_name, LIST' + String.fromCharCode(10) + '    //      FETCH this, key' + String.fromCharCode(10) + '    //      STORE this, key, value' + String.fromCharCode(10) + '    //      FETCHSIZE this' + String.fromCharCode(10) + '    //      STORESIZE this, count' + String.fromCharCode(10) + '    //      CLEAR this' + String.fromCharCode(10) + '    //      PUSH this, LIST' + String.fromCharCode(10) + '    //      POP this' + String.fromCharCode(10) + '    //      SHIFT this' + String.fromCharCode(10) + '    //      UNSHIFT this, LIST' + String.fromCharCode(10) + '    //      SPLICE this, offset, length, LIST' + String.fromCharCode(10) + '    //      EXTEND this, count' + String.fromCharCode(10) + '    //      DESTROY this' + String.fromCharCode(10) + '    //      UNTIE this' + String.fromCharCode(10) + '    ' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5aget", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            return p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5aset", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i, value) {' + String.fromCharCode(10) + '            p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, value]);' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5incr", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            var value = p5incr_(p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]));' + String.fromCharCode(10) + '            p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, value]);' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5postincr", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            var value = p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]);' + String.fromCharCode(10) + '            p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, p5incr_(value)]);' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5decr", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            var value = p5decr_(p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]));' + String.fromCharCode(10) + '            p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, value]);' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5postdecr", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            var value = p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]);' + String.fromCharCode(10) + '            p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, p5decr_(value)]);' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    ' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5aget_array", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            var value = p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]);' + String.fromCharCode(10) + '            if (value == null) {' + String.fromCharCode(10) + '                value = new p5ArrayRef([]);' + String.fromCharCode(10) + '                p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, value]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5aget_hash", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) {' + String.fromCharCode(10) + '            var value = p5call(res, ' + String.fromCharCode(39) + 'FETCH' + String.fromCharCode(39) + ', [i]);' + String.fromCharCode(10) + '            if (value == null) {' + String.fromCharCode(10) + '                value = new p5HashRef({});' + String.fromCharCode(10) + '                p5call(res, ' + String.fromCharCode(39) + 'STORE' + String.fromCharCode(39) + ', [i, value]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return value;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5untie", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (i) { return p5call(res, ' + String.fromCharCode(39) + 'UNTIE' + String.fromCharCode(39) + ', []) }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "shift", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function () { return p5call(res, ' + String.fromCharCode(39) + 'SHIFT' + String.fromCharCode(39) + ', []) }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "pop", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function () { return p5call(res, ' + String.fromCharCode(39) + 'POP' + String.fromCharCode(39) + ', []) }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5unshift", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (args) { ' + String.fromCharCode(10) + '            for(var i = args.length-1; i >= 0; i--) {' + String.fromCharCode(10) + '                p5call(res, ' + String.fromCharCode(39) + 'UNSHIFT' + String.fromCharCode(39) + ', [args[i]]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return p5call(res, ' + String.fromCharCode(39) + 'FETCHSIZE' + String.fromCharCode(39) + ', []); ' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '    Object.defineProperty( v, "p5push", {' + String.fromCharCode(10) + '        enumerable : false,' + String.fromCharCode(10) + '        configurable : true,' + String.fromCharCode(10) + '        value : function (args) { ' + String.fromCharCode(10) + '            for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '                p5call(res, ' + String.fromCharCode(39) + 'PUSH' + String.fromCharCode(39) + ', [args[i]]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return p5call(res, ' + String.fromCharCode(39) + 'FETCHSIZE' + String.fromCharCode(39) + ', []); ' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5untie_array = function(v) {' + String.fromCharCode(10) + '    if (v.hasOwnProperty(' + String.fromCharCode(39) + 'p5untie' + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '        var res = v.p5untie();  // call UNTIE' + String.fromCharCode(10) + '        delete v.p5aget;' + String.fromCharCode(10) + '        delete v.p5aset;' + String.fromCharCode(10) + '        delete v.p5incr;' + String.fromCharCode(10) + '        delete v.p5postincr;' + String.fromCharCode(10) + '        delete v.p5decr;' + String.fromCharCode(10) + '        delete v.p5postdecr;' + String.fromCharCode(10) + '        delete v.p5aget_array;' + String.fromCharCode(10) + '        delete v.p5aget_hash;' + String.fromCharCode(10) + '        delete v.p5untie;' + String.fromCharCode(10) + '        delete v.shift;' + String.fromCharCode(10) + '        delete v.pop;' + String.fromCharCode(10) + '        delete v.p5unshift;' + String.fromCharCode(10) + '        delete v.p5push;' + String.fromCharCode(10) + '        return res;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        return null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5ArrayOfAlias(o) {' + String.fromCharCode(10) + String.fromCharCode(10) + '    // this is the structure that represents @_' + String.fromCharCode(10) + '    // _array = [ ref, index,' + String.fromCharCode(10) + '    //            ref, index,' + String.fromCharCode(10) + '    //            ...' + String.fromCharCode(10) + '    //          ]' + String.fromCharCode(10) + String.fromCharCode(10) + '    // TODO - autovivify array cells' + String.fromCharCode(10) + String.fromCharCode(10) + '    this._array_ = o;' + String.fromCharCode(10) + String.fromCharCode(10) + '    this.p5aget = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        return this._array_[i+i][this._array_[i+i+1]]; ' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5aset = function (i, v) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        this._array_[i+i][this._array_[i+i+1]] = v;' + String.fromCharCode(10) + '        return this._array_[i+i][this._array_[i+i+1]]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5incr = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        this._array_[i+i][this._array_[i+i+1]] = p5incr_(this._array_[i+i][this._array_[i+i+1]]);' + String.fromCharCode(10) + '        return this._array_[i+i][this._array_[i+i+1]];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5postincr = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        var v = this._array_[i+i][this._array_[i+i+1]];' + String.fromCharCode(10) + '        this._array_[i+i][this._array_[i+i+1]] = p5incr_(this._array_[i+i][this._array_[i+i+1]]);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5decr = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        this._array_[i+i][this._array_[i+i+1]] = p5decr_(this._array_[i+i][this._array_[i+i+1]]);' + String.fromCharCode(10) + '        return this._array_[i+i][this._array_[i+i+1]];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5postdecr = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        var v = this._array_[i+i][this._array_[i+i+1]];' + String.fromCharCode(10) + '        this._array_[i+i][this._array_[i+i+1]] = p5decr_(this._array_[i+i][this._array_[i+i+1]]);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5aget_array = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        if (this._array_[i+i][this._array_[i+i+1]] == null) {' + String.fromCharCode(10) + '            this._array_[i+i][this._array_[i+i+1]] = new p5ArrayRef([])' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_[i+i][this._array_[i+i+1]]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5aget_hash = function (i) {' + String.fromCharCode(10) + '        if (i < 0) { i =  this.length + i };' + String.fromCharCode(10) + '        if (this._array_[i+i][this._array_[i+i+1]] == null) {' + String.fromCharCode(10) + '            this._array_[i+i][this._array_[i+i+1]] = new p5HashRef({})' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_[i+i][this._array_[i+i+1]]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5unshift = function (args) { ' + String.fromCharCode(10) + '        for(var i = args.length-1; i >= 0; i--) {' + String.fromCharCode(10) + '            this.unshift(0);' + String.fromCharCode(10) + '            this.unshift([args[i]]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_.length / 2; ' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.p5push = function (args) { ' + String.fromCharCode(10) + '        for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '            this.push([args[i]]);' + String.fromCharCode(10) + '            this.push(0);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_.length / 2; ' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.shift = function () { ' + String.fromCharCode(10) + '        var v0 = this._array_.shift();' + String.fromCharCode(10) + '        return v0[this._array_.shift()];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.pop = function () { ' + String.fromCharCode(10) + '        var v1 = this._array_.pop();' + String.fromCharCode(10) + '        var v0 = this._array_.pop();' + String.fromCharCode(10) + '        return v0[v1];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4065._prototype_ = null;
			return tmp4065
		})());
		1;
	})();
	// use Perlito5::Javascript2::Array
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript2::CORE');
		p5typeglob_set('Perlito5::Javascript2::CORE', 'emit_javascript2', (function () {
			var tmp4066;
			tmp4066 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript2/CORE.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// CORE functions for "Perlito" Perl5-in-Javascript2' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + 'var CORE = p5pkg.CORE;' + String.fromCharCode(10) + String.fromCharCode(10) + 'var isNode = typeof require != "undefined";' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        var sleep = require("sleep");' + String.fromCharCode(10) + '        CORE.sleep = function(List__) {' + String.fromCharCode(10) + '            var n = p5num(List__[0]) || 1;' + String.fromCharCode(10) + '            sleep.usleep(n * 1000000);  // sleep for n seconds (1 second is 1000000 microseconds)' + String.fromCharCode(10) + '            return n;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch (err) {' + String.fromCharCode(10) + '        CORE.sleep = function(List__) {' + String.fromCharCode(10) + '            CORE.die("sleep() function failed. Maybe you need ' + String.fromCharCode(39) + 'npm install sleep' + String.fromCharCode(39) + '?' + String.fromCharCode(92) + 'n" + err);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'if (!CORE.sleep) {' + String.fromCharCode(10) + '    CORE.sleep = function(List__) {' + String.fromCharCode(10) + '        CORE.die("sleep() not supported for this platform");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.time = function(List__) {' + String.fromCharCode(10) + '    return CORE.int([Date.now() / 1000]);' + String.fromCharCode(10) + '}' + String.fromCharCode(10)) + (('var _fmt_date = function(date) {' + String.fromCharCode(10) + '    return [' + String.fromCharCode(39) + 'Sun' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Mon' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Tue' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Wed' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Thu' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Fri' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Sat' + String.fromCharCode(39) + '][date.getDay()] + ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' +' + String.fromCharCode(10) + '        [' + String.fromCharCode(39) + 'Jan' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Feb' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Mar' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Apr' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'May' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Jun' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Jul' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Aug' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Sep' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Oct' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Nov' + String.fromCharCode(39) + ',' + String.fromCharCode(39) + 'Dec' + String.fromCharCode(39) + '][date.getMonth()] + ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' +' + String.fromCharCode(10) + '        date.getDate() + ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' + ' + String.fromCharCode(10) + '        CORE.sprintf([ "%02d:%02d:%02d ", date.getHours(), date.getMinutes(), date.getSeconds() ]) +' + String.fromCharCode(10) + '        date.getFullYear();' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'var _list_date = function(date) {' + String.fromCharCode(10) + '    var year_start = new Date(date);' + String.fromCharCode(10) + '    year_start.setMonth(0, 1);' + String.fromCharCode(10) + '    var year_day = Math.round((date-year_start)/8.64e7);' + String.fromCharCode(10) + String.fromCharCode(10) + '    var isdst = 0;  // not implemented' + String.fromCharCode(10) + String.fromCharCode(10) + '    return [date.getSeconds(),date.getMinutes(),date.getHours(),date.getDate(),' + String.fromCharCode(10) + '        date.getMonth(),date.getFullYear()-1900,date.getDay(),' + String.fromCharCode(10) + '        year_day,' + String.fromCharCode(10) + '        isdst' + String.fromCharCode(10) + '    ];' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'CORE.localtime = function(List__, want) {' + String.fromCharCode(10) + '    var n = List__.length ? p5num(List__[0]) : CORE.time() ;' + String.fromCharCode(10) + '    var date = new Date(n*1000);' + String.fromCharCode(10) + '    if (!want) {' + String.fromCharCode(10) + '        return _fmt_date(date);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return _list_date(date);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'CORE.gmtime = function(List__, want) {' + String.fromCharCode(10) + '    var n = List__.length ? p5num(List__[0]) : CORE.time() ;' + String.fromCharCode(10) + '    var ofs = new Date().getTimezoneOffset() * 60;' + String.fromCharCode(10) + '    var date = new Date((n + ofs)*1000);' + String.fromCharCode(10) + '    if (!want) {' + String.fromCharCode(10) + '        return _fmt_date(date);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return _list_date(date);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.bless = function(List__) {' + String.fromCharCode(10) + '    var o        = List__[0];' + String.fromCharCode(10) + '    var pkg_name = List__[1];' + String.fromCharCode(10) + '    if (typeof pkg_name === "object") {' + String.fromCharCode(10) + '        // bless {}, Class' + String.fromCharCode(10) + '        o._class_ = pkg_name;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (!p5pkg.hasOwnProperty(pkg_name)) {' + String.fromCharCode(10) + '        p5make_package(pkg_name);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    o._class_ = p5pkg[pkg_name];' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.caller = function(List__, want) {' + String.fromCharCode(10) + '    if (p5pkg["Perlito5"].v_CALLER && p5pkg["Perlito5"].v_CALLER._array_ && p5pkg["Perlito5"].v_CALLER._array_.p5aget(0) ) {' + String.fromCharCode(10) + '        // TODO' + String.fromCharCode(10) + '        return p5pkg["Perlito5"].v_CALLER._array_.p5aget(0)._array_' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5context([], want);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.chr = function(List__) {' + String.fromCharCode(10) + '    var v = p5num(List__[0]);' + String.fromCharCode(10) + '    return String.fromCharCode(v >= 0 ? v : 65533);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.ord = function(List__) {' + String.fromCharCode(10) + '    return p5str(List__[0]).charCodeAt(0);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.hex = function(List__) {' + String.fromCharCode(10) + '    var v = List__[0];' + String.fromCharCode(10) + String.fromCharCode(10) + '    for(var i = 0; i < v.length; i++) {' + String.fromCharCode(10) + '        if (v.charCodeAt(i) > 255) {' + String.fromCharCode(10) + '            CORE.die(["Wide character in hex"]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var b1 = v.substr(0,1);' + String.fromCharCode(10) + '    var b2 = v.substr(0,2);' + String.fromCharCode(10) + '    if (b1 == "x" || b1 == "X" || b2 == "0x" || b2 == "0X") {' + String.fromCharCode(10) + '        return CORE.oct(List__);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    v = "0x" + v;' + String.fromCharCode(10) + '    return CORE.oct([v]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.oct = function(List__) {' + String.fromCharCode(10) + '    var v = List__[0];' + String.fromCharCode(10) + '    v = v.trim();' + String.fromCharCode(10) + String.fromCharCode(10) + '    for(var i = 0; i < v.length; i++) {' + String.fromCharCode(10) + '        if (v.charCodeAt(i) > 255) {' + String.fromCharCode(10) + '            CORE.die(["Wide character in oct"]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var b = v.substr(0,1);' + String.fromCharCode(10) + '    if (b == "b" || b == "B" || b == "x" || b == "X") {' + String.fromCharCode(10) + '        v = "0" + v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    b = v.substr(0,2);' + String.fromCharCode(10) + String.fromCharCode(10) + '    for(var i = 2; i < v.length; i++) {' + String.fromCharCode(10) + '        if (v.substr(i,2) == "__") {' + String.fromCharCode(10) + '            v = v.substr(0, i);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var re = new RegExp(' + String.fromCharCode(39) + '_' + String.fromCharCode(39) + ', ' + String.fromCharCode(39) + 'g' + String.fromCharCode(39) + ');' + String.fromCharCode(10) + '    v = v.replace(re, "");' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (b == "0b" || b == "0B") {' + String.fromCharCode(10) + '        for(var i = 2; i < v.length; i++) {' + String.fromCharCode(10) + '            var c = v.substr(i,1);' + String.fromCharCode(10) + '            if (c >= "0" && c <= "1") {}' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                v = v.substr(0, i);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (v.length == 2) { return 0 }' + String.fromCharCode(10) + '        return parseInt(v.substr(2), 2);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (b == "0x" || b == "0X") {' + String.fromCharCode(10) + '        for(var i = 2; i < v.length; i++) {' + String.fromCharCode(10) + '            var c = v.substr(i,1);' + String.fromCharCode(10) + '            if (c >= "0" && c <= "9" || c >= "A" && c <= "F" || c >= "a" && c <= "f") {}' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                v = v.substr(0, i);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (v.length == 2) { return 0 }' + String.fromCharCode(10) + '        return parseInt(v.substr(2), 16);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    return parseInt(v, 8);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.abs   = function(List__) { return Math.abs(List__[0]) };' + String.fromCharCode(10) + 'CORE.exp   = function(List__) { return Math.exp(List__[0]) };' + String.fromCharCode(10) + 'CORE.log   = function(List__) { return Math.log(List__[0]) };' + String.fromCharCode(10) + 'CORE.cos   = function(List__) { return Math.cos(List__[0]) };' + String.fromCharCode(10) + 'CORE.sin   = function(List__) { return Math.sin(List__[0]) };' + String.fromCharCode(10) + 'CORE.sqrt  = function(List__) { return Math.sqrt(List__[0]) };' + String.fromCharCode(10) + 'CORE.atan2 = function(List__) { return Math.atan2(List__[0], List__[1]) };' + String.fromCharCode(10) + 'CORE.int   = function(List__) { return List__[0] > 0 ? Math.floor(List__[0]) : Math.ceil(List__[0]) };' + String.fromCharCode(10) + String.fromCharCode(10) + 'var p5rand = function(v) { return Math.random() * v };' + String.fromCharCode(10) + 'CORE.srand = function(List__) {' + String.fromCharCode(10) + '    if (List__.length > 0) {' + String.fromCharCode(10) + '        var v = p5num(List__[0]) || 1;' + String.fromCharCode(10) + '        p5rand = function() {' + String.fromCharCode(10) + '            v = Math.sin(v) * 10000;' + String.fromCharCode(10) + '            return v - Math.floor(v);' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '        return List__[0];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return CORE.int(CORE.rand(100000));' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + 'CORE.rand = function(List__) {' + String.fromCharCode(10) + '    var v = p5num(List__[0]) || 1;' + String.fromCharCode(10) + '    return p5rand(v);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.lc      = function(List__) { return p5str(List__[0]).toLowerCase() };' + String.fromCharCode(10) + 'CORE.uc      = function(List__) { return p5str(List__[0]).toUpperCase() };' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.lcfirst = function(List__) {' + String.fromCharCode(10) + '    var s = p5str(List__[0]);' + String.fromCharCode(10) + '    var c = s.length > 0 ? s.slice(0,1).toLowerCase() : "";' + String.fromCharCode(10) + '    s = s.length > 1 ? s.substr(1) : "";' + String.fromCharCode(10) + '    return c + s' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.ucfirst = function(List__) {' + String.fromCharCode(10) + '    var s = p5str(List__[0]);' + String.fromCharCode(10) + '    var c = s.length > 0 ? s.slice(0,1).toUpperCase() : "";' + String.fromCharCode(10) + '    s = s.length > 1 ? s.substr(1) : "";' + String.fromCharCode(10) + '    return c + s' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.quotemeta = function(List__) {' + String.fromCharCode(10) + '    var s = p5str(List__[0]);' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < s.length; i++) {' + String.fromCharCode(10) + '        if (s.substr(i, 1).match(/[^0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz]/)) {' + String.fromCharCode(10) + '            out.push(String.fromCharCode(92));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        out.push(s.substr(i, 1));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return out.join("");       ' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.substr = function(List__) {' + String.fromCharCode(10) + '    var expr        = List__[0];' + String.fromCharCode(10) + '    var offset      = List__[1];' + String.fromCharCode(10) + '    var length      = List__[2];' + String.fromCharCode(10) + '    var replacement = List__[3];' + String.fromCharCode(10) + '    if (length < 0) {' + String.fromCharCode(10) + '        var s = p5str(expr);' + String.fromCharCode(10) + '        length = s.length - offset + length;' + String.fromCharCode(10) + '    } ' + String.fromCharCode(10) + '    return p5str(expr).substr(offset, length);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.values = function(List__, p5want) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    delete o["_each_"];' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return [];' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '        if (typeof o.values === "function") {' + String.fromCharCode(10) + '            return o.values();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var out = [];' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            out.push(o[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return out;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return CORE.keys(List__, p5want);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.keys = function(List__, p5want) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    delete o["_each_"];' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return [];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.keys === "function") {' + String.fromCharCode(10) + '            return o.keys();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var out = [];' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            out.push(i);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return out;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.keys === "function") {' + String.fromCharCode(10) + '            return p5num(o.keys());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var out = 0;' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            out++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return out;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.each = function(List__, p5want) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    if (o.hasOwnProperty("_each_")) {' + String.fromCharCode(10) + '        return o._each_(p5want)' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var keys = CORE.keys([o], 1);' + String.fromCharCode(10) + '    var i = 0;' + String.fromCharCode(10) + '    o._each_ = function () {' + String.fromCharCode(10) + '        if (i < keys.length) {' + String.fromCharCode(10) + '            i++;' + String.fromCharCode(10) + '            return p5want ? [keys[i-1], o[keys[i-1]]] : keys[i-1];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        i = 0;' + String.fromCharCode(10) + '        return p5want ? [] : null;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    return o._each_(p5want);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.reverse = function(List__) {' + String.fromCharCode(10) + '    var o = List__;' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "string") {' + String.fromCharCode(10) + '        return o.split("").reverse().join("")' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < o.length; i++) {' + String.fromCharCode(10) + '        out.unshift(o[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.splice = function(List__, p5want) {' + String.fromCharCode(10) + '    var array  = List__.shift();' + String.fromCharCode(10) + '    // CORE.say([ array ]);' + String.fromCharCode(10) + '    var offset = p5num(List__.shift());' + String.fromCharCode(10) + '    var limit  = List__.length ? p5num(List__.shift()) : (array.length + 1);' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (limit < 0) {' + String.fromCharCode(10) + '        limit = array.length + limit - 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var list = [offset, limit];' + String.fromCharCode(10) + '    for(var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '        list = p5list_to_a([ list, List__[i] ]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var out = array.splice.apply(array, list);' + String.fromCharCode(10) + '    // CORE.say([ CORE.join([":",array]), " ofs=", offset, " lim=", limit, " list=", list, " out=", CORE.join([":",out])  ]);' + String.fromCharCode(10) + '    return p5want ? out : out.pop();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.join = function(List__) {' + String.fromCharCode(10) + '    var s = List__.shift();' + String.fromCharCode(10) + '    var o = [];' + String.fromCharCode(10) + '    for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '        o.push(p5str(List__[i]));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o.join(s);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.index = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    var s = List__[1];' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        return o.indexOf(s, p5num(List__[2]));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch(err) {' + String.fromCharCode(10) + '        return -1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + 'CORE.rindex = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    var s = List__[1];' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        if (List__.length > 2) {' + String.fromCharCode(10) + '            var i = p5num(List__[2]);' + String.fromCharCode(10) + '            if (i < 0) {' + String.fromCharCode(10) + '                if (s.length == 0) {' + String.fromCharCode(10) + '                    return 0;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                return -1;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return o.lastIndexOf(s, i);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o.lastIndexOf(s);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch(err) {' + String.fromCharCode(10) + '        return -1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.length = function(List__) {' + String.fromCharCode(10) + '    return p5str(List__[0]).length;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.pack    = function(List__) { CORE.warn([ "CORE::pack not implemented" ]) };' + String.fromCharCode(10) + 'CORE.unpack  = function(List__) { CORE.warn([ "CORE::unpack not implemented" ]) };' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.ref = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (o._class_ && typeof o._class_._ref_ === "string") {' + String.fromCharCode(10) + '        // blessed reference' + String.fromCharCode(10) + '        return o._class_._ref_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o._ref_ === "string") {' + String.fromCharCode(10) + '        // un-blessed reference' + String.fromCharCode(10) + '        return o._ref_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "function") {' + String.fromCharCode(10) + '        return "CODE";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return "";' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.split = function(List__, want) {' + String.fromCharCode(10) + '    var pattern = List__[0];' + String.fromCharCode(10) + '    var s       = p5str(List__[1]);' + String.fromCharCode(10) + '    var limit   = p5num(List__[2]);' + String.fromCharCode(10) + '    if (!want) {' + String.fromCharCode(10) + '        // scalar context' + String.fromCharCode(10) + '        return p5num(CORE.split(List__, 1));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (limit == 0) {' + String.fromCharCode(10) + '        // strip trailing empty strings and undef' + String.fromCharCode(10) + '        var res = CORE.split([pattern, s, -1], 1);' + String.fromCharCode(10) + '        while (res.length && (res[res.length - 1] == ' + String.fromCharCode(39) + String.fromCharCode(39) + ' || typeof res[res.length - 1] == "undefined") ) {' + String.fromCharCode(10) + '            res.pop()' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return res;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (s == ' + String.fromCharCode(39) + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        return []' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // make sure pattern is a RegExp' + String.fromCharCode(10) + '    if (typeof pattern === "object" && (pattern instanceof RegExp)) {' + String.fromCharCode(10) + '        pattern = pattern.source;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        pattern = p5str(pattern);' + String.fromCharCode(10) + '        if (pattern == " ") {' + String.fromCharCode(10) + '            // single space string is special' + String.fromCharCode(10) + '            pattern = "(?: |' + String.fromCharCode(92) + 't|' + String.fromCharCode(92) + 'n)+";' + String.fromCharCode(10) + '            s = s.replace(/^(?: |' + String.fromCharCode(92) + 't|' + String.fromCharCode(92) + 'n)+/, "");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // add "g", "m" modifiers' + String.fromCharCode(10) + '    var flags = "g";' + String.fromCharCode(10) + '    if (pattern.substr(0, 1) == "^" || pattern.substr(-1,1) == "$") {' + String.fromCharCode(10) + '        flags = flags + "m";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    pattern = new RegExp(pattern, flags);' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    var pos = 0;' + String.fromCharCode(10) + '    var count = 0;' + String.fromCharCode(10) + '    while (1) {' + String.fromCharCode(10) + '        if (limit > 0 && limit <= (count + 1)) {' + String.fromCharCode(10) + '            res.push(s.substr(pos));' + String.fromCharCode(10) + '            return res;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var m = pattern.exec(s);' + String.fromCharCode(10) + '        if (m === null) {' + String.fromCharCode(10) + '            // no match' + String.fromCharCode(10) + '            res.push(s.substr(pos));' + String.fromCharCode(10) + '            return res;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (m[0].length == 0 && m.index == pos) {' + String.fromCharCode(10) + '            // pointer didn' + String.fromCharCode(39) + 't move' + String.fromCharCode(10) + '            pattern.lastIndex = pattern.lastIndex + 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            var part = s.substr(pos, m.index - pos);' + String.fromCharCode(10) + '            res.push(part);' + String.fromCharCode(10) + '            count++;' + String.fromCharCode(10) + '            pos = m.index + m[0].length;' + String.fromCharCode(10) + '            pattern.lastIndex = pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        for (var i = 1; i < m.length ; i++) {' + String.fromCharCode(10) + '            res.push(m[i]);     // captured substrings; don' + String.fromCharCode(39) + 't increment count' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10))))], p5want));
			};
			tmp4066._prototype_ = null;
			return tmp4066
		})());
		1;
	})();
	// use Perlito5::Javascript2::CORE
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript2::IO');
		p5typeglob_set('Perlito5::Javascript2::IO', 'emit_javascript2', (function () {
			var tmp4067;
			tmp4067 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript2/IO.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// I/O functions for "Perlito" Perl5-in-Javascript2' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + 'var isNode = typeof require != "undefined";' + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + String.fromCharCode(10) + '    var fs = require("fs");' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5typeglob_set("Perlito5::IO", "print", function (filehandle, List__, p5want) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var v = filehandle;' + String.fromCharCode(10) + '            var pkg;' + String.fromCharCode(10) + '            if (CORE.ref([v])) {' + String.fromCharCode(10) + '                // looks like a filehandle' + String.fromCharCode(10) + '                pkg = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                // looks like a package name' + String.fromCharCode(10) + '                pkg = p5make_package(v);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (!pkg.file_handle) {' + String.fromCharCode(10) + '                pkg.file_handle = {};' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var handle_id = pkg.file_handle.id;' + String.fromCharCode(10) + '            if (handle_id == 1) {' + String.fromCharCode(10) + '                for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '                    process.stdout.write(p5str(List__[i]));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (handle_id == 2) {' + String.fromCharCode(10) + '                for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '                    process.stderr.write(p5str(List__[i]));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '                    fs.writeSync(handle_id, p5str(List__[i]));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    } );' + String.fromCharCode(10) + String.fromCharCode(10) + '    var p5_extra_buffer_size = 100;' + String.fromCharCode(10) + '    p5typeglob_set("Perlito5::IO", "read", function (filehandle, List__, p5want) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var v = filehandle;' + String.fromCharCode(10) + '            var length = List__.shift();' + String.fromCharCode(10) + '            var pkg;' + String.fromCharCode(10) + '            if (CORE.ref([v])) {' + String.fromCharCode(10) + '                // looks like a filehandle' + String.fromCharCode(10) + '                pkg = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                // looks like a package name' + String.fromCharCode(10) + '                pkg = p5make_package(v);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (!pkg.file_handle) {' + String.fromCharCode(10) + '                pkg.file_handle = {};' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var handle_id = pkg.file_handle.id;' + String.fromCharCode(10) + String.fromCharCode(10) + '            if (!pkg.file_handle.buffer) {' + String.fromCharCode(10) + '                // we don' + String.fromCharCode(39) + 't have any data yet' + String.fromCharCode(10) + '                var length_wanted = length + 2 * p5_extra_buffer_size;' + String.fromCharCode(10) + '                var buffer = new Buffer(length_wanted);' + String.fromCharCode(10) + '                var bytes_read = fs.readSync(handle_id, buffer, 0, length_wanted, null);' + String.fromCharCode(10) + '                if (bytes_read < length_wanted) {' + String.fromCharCode(10) + '                    pkg.file_handle.buffer_eof = 1;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                pkg.file_handle.buffer = buffer;' + String.fromCharCode(10) + '                pkg.file_handle.buffer_start = 0;' + String.fromCharCode(10) + '                pkg.file_handle.buffer_end = bytes_read;' + String.fromCharCode(10) + '                pkg.file_handle.buffer_length = pkg.file_handle.buffer_end;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (pkg.file_handle.buffer_length > (length + p5_extra_buffer_size)) {' + String.fromCharCode(10) + '                // we have enough data' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (!pkg.file_handle.buffer_eof) {' + String.fromCharCode(10) + '                // we have some data; append more data to the internal buffer' + String.fromCharCode(10) + '                var length_wanted = length + 2 * p5_extra_buffer_size;' + String.fromCharCode(10) + '                var buffer = new Buffer(pkg.file_handle.buffer_length + length_wanted);' + String.fromCharCode(10) + '                pkg.file_handle.buffer.copy(buffer, 0, pkg.file_handle.buffer_start, pkg.file_handle.buffer_end);' + String.fromCharCode(10) + '                var bytes_read = fs.readSync(handle_id, buffer, pkg.file_handle.buffer_length, length_wanted, null);' + String.fromCharCode(10) + '                if (bytes_read < length_wanted) {' + String.fromCharCode(10) + '                    pkg.file_handle.buffer_eof = 1;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                pkg.file_handle.buffer = buffer;' + String.fromCharCode(10) + '                pkg.file_handle.buffer_start = 0;' + String.fromCharCode(10) + '                pkg.file_handle.buffer_end = pkg.file_handle.buffer_length + bytes_read;' + String.fromCharCode(10) + '                pkg.file_handle.buffer_length = pkg.file_handle.buffer_end;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + String.fromCharCode(10) + '            var s = pkg.file_handle.buffer.toString(' + String.fromCharCode(39) + 'utf-8' + String.fromCharCode(39) + ', pkg.file_handle.buffer_start, pkg.file_handle.buffer_end).substr(0, length);' + String.fromCharCode(10) + String.fromCharCode(10) + '            // how many bytes we actually used' + String.fromCharCode(10) + '            var buffer_used = Buffer.byteLength(s, ' + String.fromCharCode(39) + 'utf-8' + String.fromCharCode(39) + ');' + String.fromCharCode(10) + String.fromCharCode(10) + '            pkg.file_handle.buffer_start = pkg.file_handle.buffer_start + buffer_used;' + String.fromCharCode(10) + '            pkg.file_handle.buffer_length = pkg.file_handle.buffer_length - buffer_used;' + String.fromCharCode(10) + String.fromCharCode(10) + '            if ( handle_id == 0) {' + String.fromCharCode(10) + '                // STDIN' + String.fromCharCode(10) + '                pkg.file_handle.buffer_eof = (s.length ? 0 : 1);' + String.fromCharCode(10) + '                pkg.file_handle.eof = (s.length ? 0 : 1);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if ( pkg.file_handle.buffer_eof && pkg.file_handle.buffer_length <= 0 ) {' + String.fromCharCode(10) + '                pkg.file_handle.eof = 1;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + String.fromCharCode(10) + '            return [s.length, s];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return [];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    } );' + String.fromCharCode(10) + String.fromCharCode(10) + '    var p5ARGV = 0;' + String.fromCharCode(10) + '    p5typeglob_set("Perlito5::IO", "readline", function (List__, p5want) {' + String.fromCharCode(10) + '        var filehandle = List__.shift();' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (p5want) {' + String.fromCharCode(10) + '            var out = [];' + String.fromCharCode(10) + '            while (1) {' + String.fromCharCode(10) + '                var s = p5pkg["Perlito5::IO"].readline([filehandle], 0);' + String.fromCharCode(10) + '                if (s == null) {' + String.fromCharCode(10) + '                    return out;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                out.push(s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        var v = filehandle;' + String.fromCharCode(10) + '        var pkg;' + String.fromCharCode(10) + '        if (CORE.ref([v])) {' + String.fromCharCode(10) + '            // looks like a filehandle' + String.fromCharCode(10) + '            pkg = v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // looks like a package name' + String.fromCharCode(10) + '            pkg = p5make_package(v);' + String.fromCharCode(10) + '            if (v == "ARGV") {' + String.fromCharCode(10) + '                // ARGV is magical' + String.fromCharCode(10) + '                if (pkg.file_handle.id == null) {' + String.fromCharCode(10) + '                    if (!p5ARGV) {' + String.fromCharCode(10) + '                        if (p5pkg["main"]["List_ARGV"].length == 0) {' + String.fromCharCode(10) + '                            p5pkg["main"]["List_ARGV"].push(' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ');' + String.fromCharCode(10) + '                        }' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    p5ARGV = 1;' + String.fromCharCode(10) + '                    // TODO - open $ARGV[1], ...' + String.fromCharCode(10) + '                    var filename = p5pkg["main"]["List_ARGV"].shift();' + String.fromCharCode(10) + '                    CORE.open([ "ARGV", "<", filename ]) || CORE.die([ p5pkg["main"]["v_!"] ]);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (!pkg.file_handle) {' + String.fromCharCode(10) + '            pkg.file_handle = {};' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (CORE.eof([v])) {' + String.fromCharCode(10) + '            return null;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        var separator = p5pkg["main"]["v_/"];  // input record separator' + String.fromCharCode(10) + '        var buf = pkg.file_handle.readline_buffer;' + String.fromCharCode(10) + '        var pos;' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (separator) {' + String.fromCharCode(10) + '            pos = buf.indexOf(separator);' + String.fromCharCode(10) + '            while ( pos < 0 && !pkg.file_handle.eof ) {' + String.fromCharCode(10) + '                var r = p5pkg["Perlito5::IO"].read(filehandle, [100]);' + String.fromCharCode(10) + '                buf = buf + r[1];' + String.fromCharCode(10) + '                pos = buf.indexOf(separator);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // no separator' + String.fromCharCode(10) + '            pos = -1;' + String.fromCharCode(10) + '            while ( !pkg.file_handle.eof ) {' + String.fromCharCode(10) + '                var r = p5pkg["Perlito5::IO"].read(filehandle, [100]);' + String.fromCharCode(10) + '                buf = buf + r[1];' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pkg.file_handle.readline_buffer = ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            if (!buf.length) {' + String.fromCharCode(10) + '                pkg.file_handle.readline_buffer = ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '                pkg.file_handle.eof = 1;' + String.fromCharCode(10) + '                return null' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return buf;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var s = buf.substr(0, pos + separator.length);' + String.fromCharCode(10) + '        pkg.file_handle.readline_buffer = buf.substr(pos + separator.length);' + String.fromCharCode(10) + '        if (!s.length) {' + String.fromCharCode(10) + '            pkg.file_handle.readline_buffer = ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            pkg.file_handle.eof = 1;' + String.fromCharCode(10) + '            return null' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return s;' + String.fromCharCode(10) + '    } );' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5typeglob_set("Perlito5::IO", "close", function (filehandle, List__, p5want) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var v = filehandle;' + String.fromCharCode(10) + '            var pkg;' + String.fromCharCode(10) + '            if (CORE.ref([v])) {' + String.fromCharCode(10) + '                // looks like a filehandle' + String.fromCharCode(10) + '                pkg = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                // looks like a package name' + String.fromCharCode(10) + '                pkg = p5make_package(v);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (!pkg.file_handle) {' + String.fromCharCode(10) + '                pkg.file_handle = {};' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var handle_id = pkg.file_handle.id;' + String.fromCharCode(10) + '            if (handle_id == 1) {' + String.fromCharCode(10) + '                process.stdout.close();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (handle_id == 2) {' + String.fromCharCode(10) + '                process.stderr.close();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                fs.closeSync(handle_id);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            pkg.file_handle.id = null;' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    } );' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.eof = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var filehandle = List__.shift();' + String.fromCharCode(10) + '            var v = filehandle;' + String.fromCharCode(10) + '            var pkg;' + String.fromCharCode(10) + '            if (CORE.ref([v])) {' + String.fromCharCode(10) + '                // looks like a filehandle' + String.fromCharCode(10) + '                pkg = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                // looks like a package name' + String.fromCharCode(10) + '                pkg = p5make_package(v);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (!pkg.file_handle) {' + String.fromCharCode(10) + '                pkg.file_handle = {};' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var handle_id = pkg.file_handle.id;' + String.fromCharCode(10) + '            if (handle_id == null) {' + String.fromCharCode(10) + '                return 1;  // file is not open' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return pkg.file_handle.eof && pkg.file_handle.readline_buffer.length == 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.open = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var filehandle = List__.shift();' + String.fromCharCode(10) + '            var flags = List__.shift();' + String.fromCharCode(10) + '            var path;' + String.fromCharCode(10) + '            if (List__.length) {' + String.fromCharCode(10) + '                path = List__.shift();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                // 2-argument open' + String.fromCharCode(10) + '                var re = new RegExp("^([<>+|]*)(.*)$", "");' + String.fromCharCode(10) + '                var capture = re.exec(flags);' + String.fromCharCode(10) + '                flags = capture[1];' + String.fromCharCode(10) + '                path = capture[2];' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var v = filehandle;' + String.fromCharCode(10) + '            var pkg;' + String.fromCharCode(10) + '            if (CORE.ref([v])) {' + String.fromCharCode(10) + '                // looks like a filehandle' + String.fromCharCode(10) + '                pkg = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                // looks like a package name' + String.fromCharCode(10) + '                pkg = p5make_package(v);' + String.fromCharCode(10) + '                if (path == "-") {' + String.fromCharCode(10) + '                    if (flags == ' + String.fromCharCode(39) + '>' + String.fromCharCode(39) + ' || flags == ' + String.fromCharCode(39) + '>>' + String.fromCharCode(39) + ' || flags == ' + String.fromCharCode(39) + '+>' + String.fromCharCode(39) + ' || flags == ' + String.fromCharCode(39) + '+>>' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                        pkg.file_handle = p5pkg["STDOUT"].file_handle;' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    else {' + String.fromCharCode(10) + '                        pkg.file_handle = p5pkg["STDIN"].file_handle;' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (!pkg.file_handle) {' + String.fromCharCode(10) + '                pkg.file_handle = {};' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var handle_id = pkg.file_handle.id;' + String.fromCharCode(10) + '            if (handle_id != null) {' + String.fromCharCode(10) + '                if (handle_id < 2) {' + String.fromCharCode(10) + '                    return 1;   // STDIN, STDOUT, STDERR' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                p5pkg["Perlito5::IO"].close(filehandle, []);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (flags == ' + String.fromCharCode(39) + '>' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                flags = ' + String.fromCharCode(39) + 'w' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (flags == ' + String.fromCharCode(39) + '>>' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                flags = ' + String.fromCharCode(39) + 'a' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (flags == ' + String.fromCharCode(39) + '<' + String.fromCharCode(39) + ' || flags == ' + String.fromCharCode(39) + String.fromCharCode(39) + ' || flags == ' + String.fromCharCode(39) + '<:encoding(UTF-8)' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                flags = ' + String.fromCharCode(39) + 'r' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (flags == ' + String.fromCharCode(39) + '+>' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                flags = ' + String.fromCharCode(39) + 'w+' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (flags == ' + String.fromCharCode(39) + '+>>' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                flags = ' + String.fromCharCode(39) + 'a+' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (flags == ' + String.fromCharCode(39) + '+<' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                flags = ' + String.fromCharCode(39) + 'r+' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                CORE.die([ "don' + String.fromCharCode(39) + 't know what to do with MODE ' + String.fromCharCode(39) + '", flags, "' + String.fromCharCode(39) + '" ]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            var id = fs.openSync(path, flags);' + String.fromCharCode(10) + '            pkg.file_handle = { id : id, readline_buffer : ' + String.fromCharCode(39) + String.fromCharCode(39) + ' };' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    var p5atime = function(s) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["atime"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    var p5mtime = function(s) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["mtime"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    var p5ctime = function(s) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["ctime"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    var p5size = function(s) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["size"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    var p5is_file = function(s) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat.isFile() ? 1 : 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    var p5is_directory = function(s) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat.isDirectory() ? 1 : 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    var p5file_exists = function(s) {' + String.fromCharCode(10) + '        return p5is_file(s) || p5is_directory(s);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.binmode = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            // TODO' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.rmdir = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            fs.rmdir(p5str(List__[0]));' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.chdir = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            process.chdir(p5str(List__[0]));' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.exit = function(List__) {' + String.fromCharCode(10) + '        process.exit(List__[0]);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.rename = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            fs.renameSync(p5str(List__[0]), p5str(List__[1]));' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.unlink = function(List__) {' + String.fromCharCode(10) + '        var count = 0;' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            for(var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '                fs.unlinkSync(p5str(List__[i]));' + String.fromCharCode(10) + '                count++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return count;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return count;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '} else {' + String.fromCharCode(10) + '    // not running in node.js' + String.fromCharCode(10) + '    p5typeglob_set("Perlito5::IO", "print", function (filehandle, List__, p5want) {' + String.fromCharCode(10) + '        var s = "";' + String.fromCharCode(10) + '        for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '            s = s + p5str(List__[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof write === ' + String.fromCharCode(39) + 'function' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '            // d8 shell uses "write"' + String.fromCharCode(10) + '            write(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (typeof print === ' + String.fromCharCode(39) + 'function' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '            // Rhino uses "print"' + String.fromCharCode(10) + '            print(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (console && typeof console.log === ' + String.fromCharCode(39) + 'function' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '            console.log(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            alert(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return 1;' + String.fromCharCode(10) + '    });' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5typeglob_set("Perlito5::IO", "say", function (filehandle, List__, p5want) {' + String.fromCharCode(10) + '    p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].print( filehandle, List__);' + String.fromCharCode(10) + '    p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].print( filehandle, ["' + String.fromCharCode(92) + 'n"]);' + String.fromCharCode(10) + '    return 1;' + String.fromCharCode(10) + '} );' + String.fromCharCode(10) + 'p5typeglob_set("Perlito5::IO", "printf", function (filehandle, List__, p5want) {' + String.fromCharCode(10) + '    p5pkg["Perlito5::IO"].print( filehandle, CORE.sprintf(List__));' + String.fromCharCode(10) + '    return 1;' + String.fromCharCode(10) + '} );' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.select = function(List__) {' + String.fromCharCode(10) + '    if (List__.length == 1) {' + String.fromCharCode(10) + '        var v = List__[0];' + String.fromCharCode(10) + '        p5pkg["Perlito5"].v_SELECT = v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg["Perlito5"].v_SELECT;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.die = function(List__) {' + String.fromCharCode(10) + '    var i;' + String.fromCharCode(10) + '    var s = "";' + String.fromCharCode(10) + '    for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '        s = s + p5str(List__[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (s.substr(-1, 1) != "' + String.fromCharCode(92) + 'n") {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            if (s == "") {' + String.fromCharCode(10) + '                s = "Died";' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            s = s + " at " + p5pkg["Perlito5"].v_FILE_NAME + " line " + p5pkg["Perlito5"].v_LINE_NUMBER;' + String.fromCharCode(10) + '            s = s + "' + String.fromCharCode(92) + 'n" + new Error().stack + "' + String.fromCharCode(92) + 'n";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) { }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg["main"]["v_@"] = s;' + String.fromCharCode(10) + '    throw(new p5_error("die", s));' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.say = function(List__) {' + String.fromCharCode(10) + '    return p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].say( ' + String.fromCharCode(39) + 'STDOUT' + String.fromCharCode(39) + ', List__);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + 'CORE.print = function(List__) {' + String.fromCharCode(10) + '    return p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].print( ' + String.fromCharCode(39) + 'STDOUT' + String.fromCharCode(39) + ', List__);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + 'CORE.printf = function(List__) {' + String.fromCharCode(10) + '    return p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].printf( ' + String.fromCharCode(39) + 'STDOUT' + String.fromCharCode(39) + ', List__);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + 'CORE.readline = function(List__, p5want) {' + String.fromCharCode(10) + '    return p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].readline(List__, p5want);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.warn = function(List__) {' + String.fromCharCode(10) + '    var i;' + String.fromCharCode(10) + '    var s = "";' + String.fromCharCode(10) + '    for (var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '        s = s + p5str(List__[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (s.substr(-1, 1) != "' + String.fromCharCode(92) + 'n") {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            if (s == "") {' + String.fromCharCode(10) + '                s = "Warning: something' + String.fromCharCode(39) + 's wrong";' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            s = s + " at " + p5pkg["Perlito5"].v_FILE_NAME + " line " + p5pkg["Perlito5"].v_LINE_NUMBER;' + String.fromCharCode(10) + '            s = s + "' + String.fromCharCode(92) + 'n" + new Error().stack + "' + String.fromCharCode(92) + 'n";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) { }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg[' + String.fromCharCode(39) + 'Perlito5::IO' + String.fromCharCode(39) + '].print( ' + String.fromCharCode(39) + 'STDERR' + String.fromCharCode(39) + ', [s]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4067._prototype_ = null;
			return tmp4067
		})());
		1;
	})();
	// use Perlito5::Javascript2::IO
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript2::Sprintf');
		p5typeglob_set('Perlito5::Javascript2::Sprintf', 'emit_javascript2', (function () {
			var tmp4068;
			tmp4068 = function (List__, p5want) {
				return (p5context([(('/**' + String.fromCharCode(10) + ' * Copyright (c) 2010 Jakob Westhoff' + String.fromCharCode(10) + ' *' + String.fromCharCode(10) + ' * Permission is hereby granted, free of charge, to any person obtaining a copy' + String.fromCharCode(10) + ' * of this software and associated documentation files (the "Software"), to deal' + String.fromCharCode(10) + ' * in the Software without restriction, including without limitation the rights' + String.fromCharCode(10) + ' * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell' + String.fromCharCode(10) + ' * copies of the Software, and to permit persons to whom the Software is' + String.fromCharCode(10) + ' * furnished to do so, subject to the following conditions:' + String.fromCharCode(10) + ' * ' + String.fromCharCode(10) + ' * The above copyright notice and this permission notice shall be included in' + String.fromCharCode(10) + ' * all copies or substantial portions of the Software.' + String.fromCharCode(10) + ' * ' + String.fromCharCode(10) + ' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR' + String.fromCharCode(10) + ' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,' + String.fromCharCode(10) + ' * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE' + String.fromCharCode(10) + ' * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER' + String.fromCharCode(10) + ' * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,' + String.fromCharCode(10) + ' * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN' + String.fromCharCode(10) + ' * THE SOFTWARE.' + String.fromCharCode(10) + ' */' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.sprintf = function(List__) {' + String.fromCharCode(10) + '    var format = List__.shift();' + String.fromCharCode(10) + '    var list = List__;' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Check for format definition' + String.fromCharCode(10) + '    if ( typeof format != ' + String.fromCharCode(39) + 'string' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '        CORE.die(["sprintf: The first arguments need to be a valid format string."]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    ' + String.fromCharCode(10) + '    /**' + String.fromCharCode(10) + '     * Define the regex to match a formating string' + String.fromCharCode(10) + '     * The regex consists of the following parts:' + String.fromCharCode(10) + '     * percent sign to indicate the start' + String.fromCharCode(10) + '     * (optional) sign specifier' + String.fromCharCode(10) + '     * (optional) padding specifier' + String.fromCharCode(10) + '     * (optional) alignment specifier' + String.fromCharCode(10) + '     * (optional) width specifier' + String.fromCharCode(10) + '     * (optional) precision specifier' + String.fromCharCode(10) + '     * type specifier:' + String.fromCharCode(10) + '     *  % - literal percent sign' + String.fromCharCode(10) + '     *  b - binary number' + String.fromCharCode(10) + '     *  c - ASCII character represented by the given value' + String.fromCharCode(10) + '     *  d - signed decimal number' + String.fromCharCode(10) + '     *  f - floating point value' + String.fromCharCode(10) + '     *  o - octal number' + String.fromCharCode(10) + '     *  s - string' + String.fromCharCode(10) + '     *  x - hexadecimal number (lowercase characters)' + String.fromCharCode(10) + '     *  X - hexadecimal number (uppercase characters)' + String.fromCharCode(10) + '     */' + String.fromCharCode(10) + '    var r = new RegExp( /%(' + String.fromCharCode(92) + '+)?([0 ]|' + String.fromCharCode(39) + '(.))?(-)?([0-9]+)?(' + String.fromCharCode(92) + '.([0-9]+))?([%bcdfosxX])/g );' + String.fromCharCode(10) + String.fromCharCode(10) + '    /**' + String.fromCharCode(10) + '     * Each format string is splitted into the following parts:' + String.fromCharCode(10) + '     * 0: Full format string' + String.fromCharCode(10) + '     * 1: sign specifier (+)' + String.fromCharCode(10) + '     * 2: padding specifier (0/<space>/' + String.fromCharCode(39) + '<any char>)' + String.fromCharCode(10) + '     * 3: if the padding character starts with a ' + String.fromCharCode(39) + ' this will be the real ' + String.fromCharCode(10) + '     *    padding character' + String.fromCharCode(10) + '     * 4: alignment specifier' + String.fromCharCode(10) + '     * 5: width specifier' + String.fromCharCode(10) + '     * 6: precision specifier including the dot' + String.fromCharCode(10) + '     * 7: precision specifier without the dot' + String.fromCharCode(10) + '     * 8: type specifier' + String.fromCharCode(10) + '     */' + String.fromCharCode(10) + '    var parts      = [];' + String.fromCharCode(10) + '    var paramIndex = 0;' + String.fromCharCode(10) + '    var part;' + String.fromCharCode(10) + '    while ( part = r.exec( format ) ) {' + String.fromCharCode(10) + '        // Check if an input value has been provided, for the current' + String.fromCharCode(10) + '        // format string' + String.fromCharCode(10) + '        if ( paramIndex >= list.length ) {' + String.fromCharCode(10) + '            CORE.die(["sprintf: At least one argument was missing."]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        parts[parts.length] = {' + String.fromCharCode(10) + '            /* beginning of the part in the string */' + String.fromCharCode(10) + '            begin: part.index,' + String.fromCharCode(10) + '            /* end of the part in the string */' + String.fromCharCode(10) + '            end: part.index + part[0].length,' + String.fromCharCode(10) + '            /* force sign */' + String.fromCharCode(10) + '            sign: ( part[1] == ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' ),' + String.fromCharCode(10) + '            /* is the given data negative */' + String.fromCharCode(10) + '            negative: ( parseInt( list[paramIndex] ) < 0 ) ? true : false,' + String.fromCharCode(10) + '            /* padding character (default: <space>) */' + String.fromCharCode(10) + '            padding: ( part[2] == undefined )' + String.fromCharCode(10) + '                     ? ( ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' ) /* default */' + String.fromCharCode(10) + '                     : ( ( part[2].substring( 0, 1 ) == "' + String.fromCharCode(39) + '" ) ' + String.fromCharCode(10) + '                         ? ( part[3] ) /* use special char */' + String.fromCharCode(10) + '                         : ( part[2] ) /* use normal <space> or zero */' + String.fromCharCode(10) + '                       ),' + String.fromCharCode(10) + '            /* should the output be aligned left?*/' + String.fromCharCode(10) + '            alignLeft: ( part[4] == ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' ),' + String.fromCharCode(10) + '            /* width specifier (number or false) */' + String.fromCharCode(10) + '            width: ( part[5] != undefined ) ? part[5] : false,' + String.fromCharCode(10) + '            /* precision specifier (number or false) */' + String.fromCharCode(10) + '            precision: ( part[7] != undefined ) ? part[7] : false,' + String.fromCharCode(10) + '            /* type specifier */' + String.fromCharCode(10) + '            type: part[8],' + String.fromCharCode(10) + '            /* the given data associated with this part converted to a string */' + String.fromCharCode(10) + '            data: ( part[8] != ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ' ) ? String ( list[paramIndex++] ) : false' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var newString = "";' + String.fromCharCode(10) + '    var start = 0;' + String.fromCharCode(10) + '    // Generate our new formated string' + String.fromCharCode(10) + '    for( var i=0; i<parts.length; ++i ) {' + String.fromCharCode(10) + '        // Add first unformated string part' + String.fromCharCode(10) + '        newString += format.substring( start, parts[i].begin );' + String.fromCharCode(10) + '        ' + String.fromCharCode(10) + '        // Mark the new string start' + String.fromCharCode(10) + '        start = parts[i].end;' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Create the appropriate preformat substitution' + String.fromCharCode(10) + '        // This substitution is only the correct type conversion. All the' + String.fromCharCode(10) + '        // different options and flags haven' + String.fromCharCode(39) + 't been applied to it at this' + String.fromCharCode(10) + '        // point' + String.fromCharCode(10) + '        var preSubstitution = "";' + String.fromCharCode(10) + '        switch ( parts[i].type ) {' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = "%";' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'b' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 2 );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'c' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = String.fromCharCode( Math.abs( parseInt( parts[i].data ) ) );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'd' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = String( Math.abs( parseInt( parts[i].data ) ) );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'f' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = ( parts[i].precision == false )' + String.fromCharCode(10) + '                                  ? ( String( ( Math.abs( parseFloat( parts[i].data ) ) ) ) )' + String.fromCharCode(10) + '                                  : ( Math.abs( parseFloat( parts[i].data ) ).toFixed( parts[i].precision ) );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'o' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 8 );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 's' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = parts[i].data.substring( 0, parts[i].precision ? parts[i].precision : parts[i].data.length ); /* Cut if precision is defined */' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'x' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 16 ).toLowerCase();' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'X' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 16 ).toUpperCase();' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            default:' + String.fromCharCode(10) + '                throw ' + String.fromCharCode(39) + 'sprintf: Unknown type "' + String.fromCharCode(39) + ' + parts[i].type + ' + String.fromCharCode(39) + '" detected. This should never happen. Maybe the regex is wrong.' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // The % character is a special type and does not need further processing' + String.fromCharCode(10) + '        if ( parts[i].type ==  "%" ) {' + String.fromCharCode(10) + '            newString += preSubstitution;' + String.fromCharCode(10) + '            continue;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Modify the preSubstitution by taking sign, padding and width' + String.fromCharCode(10) + '        // into account' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Pad the string based on the given width' + String.fromCharCode(10) + '        if ( parts[i].width != false ) {' + String.fromCharCode(10) + '            // Padding needed?' + String.fromCharCode(10) + '            if ( parts[i].width > preSubstitution.length ) ' + String.fromCharCode(10) + '            {' + String.fromCharCode(10) + '                var origLength = preSubstitution.length;' + String.fromCharCode(10) + '                for( var j = 0; j < parts[i].width - origLength; ++j ) ' + String.fromCharCode(10) + '                {' + String.fromCharCode(10) + '                    preSubstitution = ( parts[i].alignLeft == true ) ' + String.fromCharCode(10) + '                                      ? ( preSubstitution + parts[i].padding )' + String.fromCharCode(10) + '                                      : ( parts[i].padding + preSubstitution );' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Add a sign symbol if neccessary or enforced, but only if we are' + String.fromCharCode(10) + '        // not handling a string' + String.fromCharCode(10) + '        if ( parts[i].type == ' + String.fromCharCode(39) + 'b' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'd' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'o' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'f' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'x' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'X' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '            if ( parts[i].negative == true ) {' + String.fromCharCode(10) + '                preSubstitution = "-" + preSubstitution;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if ( parts[i].sign == true ) {' + String.fromCharCode(10) + '                preSubstitution = "+" + preSubstitution;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Add the substitution to the new string' + String.fromCharCode(10) + '        newString += preSubstitution;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Add the last part of the given format string, which may still be there' + String.fromCharCode(10) + '    newString += format.substring( start, format.length );' + String.fromCharCode(10) + String.fromCharCode(10) + '    return newString;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4068._prototype_ = null;
			return tmp4068
		})());
		1;
	})();
	// use Perlito5::Javascript2::Sprintf
;
	(function () {
		null;
		// use Perlito5::AST
;
		// use Perlito5::Dumper
;
		// use feature
;
		p5make_package('Perlito5::Javascript3');
		p5block(function (v) {}, function () {
				var Hash_label = {};
				p5typeglob_set('Perlito5::Javascript3', 'pkg', (function () {
					var tmp4069;
					tmp4069 = function (List__, p5want) {
						return (p5context([('p5pkg["' + p5str(p5make_package('Perlito5')['v_PKG_NAME']) + '"]')], p5want));
					};
					tmp4069._prototype_ = null;
					return tmp4069
				})());
				p5typeglob_set('Perlito5::Javascript3', 'pkg_new_var', (function () {
					var tmp4070;
					tmp4070 = function (List__, p5want) {
						return (Hash_label.p5hset(p5str(p5make_package('Perlito5')['v_PKG_NAME']), (('p5' + p5str((function () {
	var tmp4071 = p5make_package('Perlito5')['v_ID'];
	p5make_package('Perlito5')['v_ID'] = p5incr_(tmp4071);
	return tmp4071
})())))));
					};
					tmp4070._prototype_ = null;
					return tmp4070
				})());
				p5typeglob_set('Perlito5::Javascript3', 'get_label', (function () {
					var tmp4072;
					tmp4072 = function (List__, p5want) {
						return ((function () {
									var tmp4073 = p5make_package('Perlito5')['v_ID'];
									p5make_package('Perlito5')['v_ID'] = p5incr_(tmp4073);
									return tmp4073
								})());
					};
					tmp4072._prototype_ = null;
					return tmp4072
				})());
				p5typeglob_set('Perlito5::Javascript3', 'tab', (function () {
					var tmp4074;
					tmp4074 = function (List__, p5want) {
						var v_level;
						v_level = (List__.shift());
						return (p5str_replicate(String.fromCharCode(9),p5num(v_level)));
					};
					tmp4074._prototype_ = null;
					return tmp4074
				})());
				if (typeof p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_prefix_js_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_prefix_js_str'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_prefix_js_str'] = {'prefix:<-A>' : 'p5atime', 'prefix:<-C>' : 'p5ctime', 'prefix:<-M>' : 'p5mtime', 'prefix:<-d>' : 'p5is_directory', 'prefix:<-e>' : 'p5file_exists', 'prefix:<-f>' : 'p5is_file', 'prefix:<-s>' : 'p5size'};
				if (typeof p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_str'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_str'] = {'infix:<eq>' : ' == ', 'infix:<ne>' : ' != ', 'infix:<le>' : ' <= ', 'infix:<ge>' : ' >= ', 'infix:<lt>' : ' < ', 'infix:<gt>' : ' > '};
				if (typeof p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_num'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_num'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_num'] = {'infix:<==>' : ' == ', 'infix:<!=>' : ' != ', 'infix:<+>' : ' + ', 'infix:<->' : ' - ', 'infix:<*>' : ' * ', 'infix:</>' : ' / ', 'infix:<%>' : ' % ', 'infix:<>>' : ' > ', 'infix:<<>' : ' < ', 'infix:<>=>' : ' >= ', 'infix:<<=>' : ' <= ', 'infix:<&>' : ' & ', 'infix:<|>' : ' | ', 'infix:<^>' : ' ^ ', 'infix:<>>>' : ' >>> ', 'infix:<<<>' : ' << '};
				if (typeof p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript3']['Hash_op_to_bool'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript3']['Hash_op_to_bool'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript3']['Hash_op_to_bool'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['prefix:<!>', 'infix:<!=>', 'infix:<==>', 'infix:<<=>', 'infix:<>=>', 'infix:<>>', 'infix:<<>', 'infix:<eq>', 'infix:<ne>', 'infix:<ge>', 'infix:<le>', 'infix:<gt>', 'infix:<lt>', 'prefix:<not>', 'exists', 'defined'])]));
				if (typeof p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] = {}), 'Perlito5::Javascript3']['Hash_op_to_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] = {}), 'Perlito5::Javascript3']['Hash_op_to_str'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] = {}), 'Perlito5::Javascript3']['Hash_op_to_str'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['substr', 'join', 'list:<.>', 'chr'])]));
				if (typeof p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] = {}), 'Perlito5::Javascript3']['Hash_op_to_num'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] = {}), 'Perlito5::Javascript3']['Hash_op_to_num'] = {};}
				p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] = {}), 'Perlito5::Javascript3']['Hash_op_to_num'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['length', 'index', 'ord', 'oct', 'infix:<->', 'infix:<+>', 'infix:<*>', 'infix:</>', 'infix:<%>', 'infix:<**>'])]));
				var Hash_safe_char = {};
				Hash_safe_char = p5a_to_h([' ', 1, '!', 1, '"', 1, '#', 1, '$', 1, '%', 1, '&', 1, '(', 1, ')', 1, '*', 1, '+', 1, ',', 1, '-', 1, '.', 1, '/', 1, ':', 1, ';', 1, '<', 1, '=', 1, '>', 1, '?', 1, '@', 1, '[', 1, ']', 1, '^', 1, '_', 1, '`', 1, '{', 1, '|', 1, '}', 1, '~', 1]);
				p5typeglob_set('Perlito5::Javascript3', 'escape_string', (function () {
					var tmp4075;
					tmp4075 = function (List__, p5want) {
						try {
							var v_s;
							v_s = (List__.shift());
							var List_out = [];
							var v_tmp;
							v_tmp = ('');
							p5and((p5str(v_s) == ''), function () {
								throw(p5context([String.fromCharCode(39) + String.fromCharCode(39)], p5want))
							});
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_c;
										v_c = (p5str(v_s).substr(p5num(v_i), 1));
										(function () {
											if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (((p5str(v_c) >= '0') && (p5str(v_c) <= '9')) || (Hash_safe_char).hasOwnProperty(v_c)))) ) {
											v_tmp = ((p5str(v_tmp) + p5str(v_c)));
										}
										else {
											p5and((p5str(v_tmp) != ''), function () {
												return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
											});
											List_out.p5push([('String.fromCharCode(' + p5str(p5pkg['Perlito5::Javascript3'].ord([v_c], 0)) + ')')]);
											v_tmp = ('');
										}
										})();
									}, p5list_to_a([p5range(0, (p5pkg['Perlito5::Javascript3'].length([v_s], 0) - 1), 1, "tmp4076", 0)]), false, '') })()
							})();
							p5and((p5str(v_tmp) != ''), function () {
								return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
							});
							return (p5context([p5pkg['Perlito5::Javascript3'].join([' + '].concat(p5list_to_a([List_out])), p5want)], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4075._prototype_ = null;
					return tmp4075
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_str', (function () {
					var tmp4077;
					tmp4077 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript3')))))) ) {
								throw(p5pkg['Perlito5::Javascript3'].to_str(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Buf'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] = {}), 'Perlito5::Javascript3']['Hash_op_to_str']).hasOwnProperty(p5call(v_cond, 'code', [], p5want)))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_javascript3', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5str(' + p5str(p5call(v_cond, 'emit_javascript3', [v_level, v_wantarray], 0)) + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4077._prototype_ = null;
					return tmp4077
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_num', (function () {
					var tmp4078;
					tmp4078 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] = {}), 'Perlito5::Javascript3']['Hash_op_to_num']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_javascript3', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5num(' + p5str(p5call(v_cond, 'emit_javascript3', [v_level, v_wantarray], 0)) + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4078._prototype_ = null;
					return tmp4078
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_bool', (function () {
					var tmp4079;
					tmp4079 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript3')))))) ) {
								throw(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<&&>') || (p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<and>'))) ) {
								throw(p5context([('(' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' && ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<||>') || (p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<or>'))) ) {
								throw(p5context([('(' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' || ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript3']['Hash_op_to_bool']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_javascript3', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5bool(' + p5str(p5call(v_cond, 'emit_javascript3', [v_level, v_wantarray], 0)) + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4079._prototype_ = null;
					return tmp4079
				})());
				p5typeglob_set('Perlito5::Javascript3', 'is_scalar', (function () {
					var tmp4080;
					tmp4080 = function (List__, p5want) {
						return (p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Int'], 0))), function () {
									return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Num'], 0))), function () {
										return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0))), function () {
											return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Sub'], 0))), function () {
												return p5and(!( (p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(List__.p5aget_hash(0)._hash_.p5hget('sigil')) == '$'))), function () {
													return !( (p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_str'] = {}), 'Perlito5::Javascript3']['Hash_op_to_str']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || ((p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_num'] = {}), 'Perlito5::Javascript3']['Hash_op_to_num']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || ((p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] || (p5make_package('Perlito5::Javascript3')['Hash_op_to_bool'] = {}), 'Perlito5::Javascript3']['Hash_op_to_bool']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || (p5str(List__.p5aget_hash(0)._hash_.p5hget('code')) == 'prefix:<' + String.fromCharCode(92) + '>'))))))
												})
											})
										})
									})
								}));
					};
					tmp4080._prototype_ = null;
					return tmp4080
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_value', (function () {
					var tmp4081;
					tmp4081 = function (List__, p5want) {
						var v_v;
						v_v = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_wantarray;
						v_wantarray = (List__.shift());
						return (( !( p5bool(v_v)) ? 'null' : ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ? (p5str(p5call(v_v, 'emit_javascript3', [v_level, v_wantarray], 0)) + '.FETCH()') : p5call(v_v, 'emit_javascript3', [v_level, v_wantarray], p5want))));
					};
					tmp4081._prototype_ = null;
					return tmp4081
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_list', (function () {
					var tmp4082;
					tmp4082 = function (List__, p5want) {
						try {
							var v_items;
							v_items = (p5pkg['Perlito5::Javascript3'].to_list_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_literal_type;
							v_literal_type = (p5or(List__.p5aget(2), function () {
										return 'array'
									}));
							var v_wantarray;
							v_wantarray = ('list');
							var v_interpolate;
							v_interpolate = (0);
							p5for(p5make_package('main'), "v__", function () {
									p5and(p5pkg['Perlito5::Javascript3'].is_scalar([p5make_package('main')['v__']], 0), function () {
										return v_interpolate = (1)
									});
								}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3')]), false, '');
							(function () {
								if ( (p5str(v_literal_type) == 'hash') ) {
								(function () {
									if ( !( p5bool(v_interpolate)) ) {
									(function () {
										var List_out = [];
										var v_printable;
										v_printable = (1);
										var List_in = [];
										List_in = p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3')]);
										(function () {
											p5while(function () {
												var v_k;
												v_k = (List_in.shift());
												var v_v;
												v_v = (List_in.shift());
												v_k = (p5call(v_k, 'emit_javascript3', [v_level, 0], 0));
												p5and(p5m(v_k, '[ ' + String.fromCharCode(92) + '[]', '', 0), function () {
													return v_printable = (0)
												});
												v_v = (p5pkg['Perlito5::Javascript3'].to_value([v_v, v_level, v_wantarray], 0));
												List_out.p5push([(p5str(v_k) + ' : ' + p5str(v_v))]);
											}, function () {
												return List_in.length
											}, false, '', 0)
										})();
										p5and(v_printable, function () {
											throw(p5context([('{' + p5pkg['Perlito5::Javascript3'].join([', '].concat(p5list_to_a([List_out])), 0) + '}')], p5want))
										});
									})();
								}
								})();
								throw(p5context([('p5a_to_h(' + p5str(p5pkg['Perlito5::Javascript3'].to_list([v_items, v_level, 'array'], 0)) + ')')], p5want));
							}
							})();
							return (( p5bool(v_interpolate) ? p5context([('p5list_to_a(' + p5pkg['Perlito5::Javascript3'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3')]))])), 0) + ')')], p5want) : p5context([('[' + p5pkg['Perlito5::Javascript3'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_value([p5make_package('main')['v__'], v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3')]))])), 0) + ']')], p5want)));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4082._prototype_ = null;
					return tmp4082
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_list_preprocess', (function () {
					var tmp4083;
					tmp4083 = function (List__, p5want) {
						var List_items = [];
						(function () {
								var v_item;
								(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
										(function () {
											if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_item, 'code', [], 0)) == 'circumfix:<( )>') || ((p5str(p5call(v_item, 'code', [], 0)) == 'list:<,>') || (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')))) ) {
											(function () {
												if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')) ) {
												(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aset(0, (p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)));
											}
											})();
											(function () {
												var v_arg;
												(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
														List_items.p5push([v_arg]);
													}, p5list_to_a([p5array_deref(p5pkg['Perlito5::Javascript3'].to_list_preprocess(p5list_to_a([p5call(v_item, 'arguments', [], 1)]), p5want), 'Perlito5::Javascript3')]), false, '') })()
											})();
										}
										else {
											List_items.p5push([v_item]);
										}
										})();
									}, p5list_to_a([p5array_deref(List__.p5aget_array(0), 'Perlito5::Javascript3')]), false, '') })()
							})();
						return ((new p5ArrayRef(List_items)));
					};
					tmp4083._prototype_ = null;
					return tmp4083
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_scalar', (function () {
					var tmp4084;
					tmp4084 = function (List__, p5want) {
						var v_items;
						v_items = (p5pkg['Perlito5::Javascript3'].to_scalar_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_wantarray;
						v_wantarray = ('scalar');
						return (( p5bool(p5num(p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3'))) ? ('(' + p5pkg['Perlito5::Javascript3'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3')]))])), 0) + ')') : 'null'));
					};
					tmp4084._prototype_ = null;
					return tmp4084
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_scalar_preprocess', (function () {
					var tmp4085;
					tmp4085 = function (List__, p5want) {
						var List_items = [];
						(function () {
								var v_item;
								(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
										(function () {
											if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_item, 'code', [], 0)) == 'list:<,>') || (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>'))) ) {
											(function () {
												if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')) ) {
												(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aset(0, (p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)));
											}
											})();
											(function () {
												var v_arg;
												(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
														List_items.p5push([v_arg]);
													}, p5list_to_a([p5array_deref(p5pkg['Perlito5::Javascript3'].to_scalar_preprocess(p5list_to_a([p5call(v_item, 'arguments', [], 1)]), p5want), 'Perlito5::Javascript3')]), false, '') })()
											})();
										}
										else {
											List_items.p5push([v_item]);
										}
										})();
									}, p5list_to_a([p5array_deref(List__.p5aget_array(0), 'Perlito5::Javascript3')]), false, '') })()
							})();
						return ((new p5ArrayRef(List_items)));
					};
					tmp4085._prototype_ = null;
					return tmp4085
				})());
				p5typeglob_set('Perlito5::Javascript3', 'to_runtime_context', (function () {
					var tmp4086;
					tmp4086 = function (List__, p5want) {
						try {
							var v_items;
							v_items = (p5pkg['Perlito5::Javascript3'].to_scalar_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_wantarray;
							v_wantarray = ('runtime');
							p5and(p5and((p5num(p5num(p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3'))) == 1), function () {
								return p5pkg['Perlito5::Javascript3'].is_scalar(p5list_to_a([(v_items || (v_items = new p5ArrayRef([])))._array_.p5aget(0)]), 0)
							}), function () {
								throw(p5call((v_items || (v_items = new p5ArrayRef([])))._array_.p5aget(0), 'emit_javascript3', [v_level, v_wantarray], p5want))
							});
							return (p5context([('p5context(' + '[' + p5pkg['Perlito5::Javascript3'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Javascript3')]))])), 0) + ']' + ', p5want)')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4086._prototype_ = null;
					return tmp4086
				})());
				p5typeglob_set('Perlito5::Javascript3', 'autoquote', (function () {
					var tmp4087;
					tmp4087 = function (List__, p5want) {
						var v_index;
						v_index = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						(function () {
								if ( (p5bool(p5call(v_index, 'isa', ['Perlito5::AST::Apply'], 0)) && p5bool((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('bareword'))) ) {
								(function () {
									var v_full_name;
									v_full_name = ((p5str(( p5bool((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('namespace')) ? (p5str((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('namespace')) + '::') : '')) + p5str((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('code'))));
									(function () {
										if ( !( (p5make_package('Perlito5')['v_PROTO'])._hash_.hasOwnProperty(v_full_name)) ) {
										v_index = (p5call('Perlito5::AST::Buf', 'new', ['buf', v_full_name], 0));
									}
									})();
								})();
							}
							})();
						return (p5pkg['Perlito5::Javascript3'].to_str([v_index, v_level], p5want));
					};
					tmp4087._prototype_ = null;
					return tmp4087
				})());
				p5typeglob_set('Perlito5::Javascript3', 'emit_javascript3_autovivify', (function () {
					var tmp4088;
					tmp4088 = function (List__, p5want) {
						var v_obj;
						v_obj = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_type;
						v_type = (List__.shift());
						var v_wantarray;
						v_wantarray = ('scalar');
						return (p5call(v_obj, 'emit_javascript3', [v_level, v_wantarray, v_type], p5want));
					};
					tmp4088._prototype_ = null;
					return tmp4088
				})());
				p5typeglob_set('Perlito5::Javascript3', 'emit_function_javascript3', (function () {
					var tmp4089;
					tmp4089 = function (List__, p5want) {
						try {
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var v_argument;
							v_argument = (List__.shift());
							(function () {
								if ( (p5bool(p5call(v_argument, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_argument, 'code', [], 0)) == 'return')) ) {
								throw(p5context([('function () { ' + p5str(p5call(v_argument, 'emit_javascript3', [v_level, v_wantarray], 0)) + ' }')], p5want));
							}
							})();
							return (p5context([('function () { return ' + p5str(p5call(v_argument, 'emit_javascript3', [v_level, v_wantarray], 0)) + ' }')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4089._prototype_ = null;
					return tmp4089
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::Javascript3::LexicalBlock');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::Javascript3::LexicalBlock', 'new', (function () {
					var tmp4090;
					tmp4090 = function (List__, p5want) {
						var v_class;
						v_class = (List__.shift());
						return (p5pkg['Perlito5::Javascript3::LexicalBlock'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
					};
					tmp4090._prototype_ = null;
					return tmp4090
				})());
				p5typeglob_set('Perlito5::Javascript3::LexicalBlock', 'block', (function () {
					var tmp4091;
					tmp4091 = function (List__, p5want) {
						return (List__.p5aget_hash(0)._hash_.p5hget('block'));
					};
					tmp4091._prototype_ = null;
					return tmp4091
				})());
				p5typeglob_set('Perlito5::Javascript3::LexicalBlock', 'needs_return', (function () {
					var tmp4092;
					tmp4092 = function (List__, p5want) {
						return (List__.p5aget_hash(0)._hash_.p5hget('needs_return'));
					};
					tmp4092._prototype_ = null;
					return tmp4092
				})());
				p5typeglob_set('Perlito5::Javascript3::LexicalBlock', 'top_level', (function () {
					var tmp4093;
					tmp4093 = function (List__, p5want) {
						return (List__.p5aget_hash(0)._hash_.p5hget('top_level'));
					};
					tmp4093._prototype_ = null;
					return tmp4093
				})());
				p5typeglob_set('Perlito5::Javascript3::LexicalBlock', 'has_decl', (function () {
					var tmp4094;
					tmp4094 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_type;
							v_type = (List__.p5aget(1));
							(function () {
								var v_decl;
								(function(){ var v_decl; p5for_lex(function (v) { v_decl = v }, function () {
										(function () {
											if ( (v_decl != null) ) {
											(function () {
												if ( ((p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(v_decl, 'decl', [], 0)) == p5str(v_type))) || (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_decl, 'code', [], 0)) == p5str(v_type)))) ) {
												throw(p5context([1], p5want));
											}
											})();
											(function () {
												if ( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_decl, 'code', [], 0)) == 'infix:<=>')) ) {
												(function () {
													var v_var;
													v_var = (p5call(v_decl, 'arguments', [], p5want)._array_.p5aget(0));
													(function () {
														if ( ((p5bool(p5call(v_var, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(v_var, 'decl', [], 0)) == p5str(v_type))) || (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_decl, 'code', [], 0)) == p5str(v_type)))) ) {
														throw(p5context([1], p5want));
													}
													})();
												})();
											}
											})();
										}
										})();
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Javascript3::LexicalBlock')]), false, '') })()
							})();
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4094._prototype_ = null;
					return tmp4094
				})());
				p5typeglob_set('Perlito5::Javascript3::LexicalBlock', 'emit_javascript3', (function () {
					var tmp4095;
					tmp4095 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var List_block = [];
							p5for(p5make_package('main'), "v__", function () {
									(function () {
										if ( (p5make_package('main')['v__'] != null) ) {
										List_block.p5push([p5make_package('main')['v__']]);
									}
									})();
								}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Javascript3::LexicalBlock')]), false, '');
							(function () {
								if ( !( p5bool(List_block.length)) ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + 'null;')], p5want));
							}
							})();
							var v_out;
							v_out = ('');
							var List_str = [];
							var v_has_local;
							v_has_local = (p5call(v_self, 'has_decl', ['local'], 0));
							var v_create_context;
							v_create_context = (p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('create_context'), function () {
										return p5call(v_self, 'has_decl', ['my'], 0)
									}));
							var v_outer_pkg;
							v_outer_pkg = (p5make_package('Perlito5')['v_PKG_NAME']);
							var v_outer_throw;
							v_outer_throw = (p5make_package('Perlito5')['v_THROW']);
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level'), function () {
								return p5make_package('Perlito5')['v_THROW'] = (0)
							});
							p5and(v_has_local, function () {
								return (v_out = ((p5str(v_out) + (p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + 'var local_idx = p5LOCAL.length;' + String.fromCharCode(10)))))
							});
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) ) {
								(function () {
									var tmp4096 = v_level;
									v_level = p5incr_(tmp4096);
									return tmp4096
								})();
							}
							})();
							(function () {
								if ( p5bool(v_create_context) ) {
								(v_out = ((p5str(v_out) + (p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '(function () {' + String.fromCharCode(10)))));
								(function () {
									var tmp4097 = v_level;
									v_level = p5incr_(tmp4097);
									return tmp4097
								})();
							}
							})();
							var v_tab;
							v_tab = (p5pkg['Perlito5::Javascript3'].tab([v_level], 0));
							var v_last_statement;
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('needs_return')) ) {
								v_last_statement = (List_block.pop());
							}
							})();
							(function () {
								var v_decl;
								(function(){ var v_decl; p5for_lex(function (v) { v_decl = v }, function () {
										(function () {
											if ( ((p5pkg['Perlito5::Javascript3::LexicalBlock'].ref([v_decl], 0) == 'Perlito5::AST::Apply') && (p5str(p5call(v_decl, 'code', [], 0)) == 'package')) ) {
											p5make_package('Perlito5')['v_PKG_NAME'] = ((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('namespace'));
										}
										})();
										(function () {
											if ( p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Decl'], 0)) ) {
											List_str.p5push(p5list_to_a([p5call(v_decl, 'emit_javascript3_init', [], 1)]));
										}
										})();
										(function () {
											if ( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_decl, 'code', [], 0)) == 'my')) ) {
											p5for(p5make_package('main'), "v__", function () {
													(function () {
														if ( p5bool(p5call(p5make_package('main')['v__'], 'isa', ['Perlito5::AST::Var'], 0)) ) {
														(function () {
															var v_d;
															v_d = (p5call('Perlito5::AST::Decl', 'new', p5list_to_a(['decl', p5call(v_decl, 'code', [], 1), 'var', p5make_package('main')['v__']]), 0));
															List_str.p5push(p5list_to_a([p5call(v_d, 'emit_javascript3_init', [], 1)]));
														})();
													}
													})();
												}, p5list_to_a([p5array_deref((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript3::LexicalBlock')]), false, '');
										}
										})();
										(function () {
											if ( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_decl, 'code', [], 0)) == 'infix:<=>')) ) {
											(function () {
												var v_arg;
												v_arg = ((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
												(function () {
													if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Decl'], 0)) ) {
													List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript3_init', [], 1)]));
												}
												})();
												(function () {
													if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_arg, 'code', [], 0)) == 'my')) ) {
													p5for(p5make_package('main'), "v__", function () {
															(function () {
																if ( p5bool(p5call(p5make_package('main')['v__'], 'isa', ['Perlito5::AST::Var'], 0)) ) {
																(function () {
																	var v_d;
																	v_d = (p5call('Perlito5::AST::Decl', 'new', p5list_to_a(['decl', p5call(v_arg, 'code', [], 1), 'var', p5make_package('main')['v__']]), 0));
																	List_str.p5push(p5list_to_a([p5call(v_d, 'emit_javascript3_init', [], 1)]));
																})();
															}
															})();
														}, p5list_to_a([p5array_deref((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript3::LexicalBlock')]), false, '');
												}
												})();
											})();
										}
										})();
										(function () {
											if ( !( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(v_decl, 'decl', [], 0)) == 'my'))) ) {
											List_str.p5push([(p5str(p5call(v_decl, 'emit_javascript3', [v_level, 'void'], 0)) + ';')]);
										}
										})();
									}, p5list_to_a([List_block]), false, '') })()
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('needs_return')) && p5bool(v_last_statement)) ) {
								(function () {
									if ( p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Decl'], 0)) ) {
									List_str.p5push(p5list_to_a([p5call(v_last_statement, 'emit_javascript3_init', [], 1)]));
								}
								})();
								(function () {
									if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'infix:<=>')) ) {
									(function () {
										if ( p5bool(p5call((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Decl'], 0)) ) {
										List_str.p5push(p5list_to_a([p5call((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3_init', [], 1)]));
									}
									})();
								}
								})();
								(function () {
									if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_last_statement, 'code', [], 0)) == 'return') && (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) && p5bool(p5num(p5array_deref((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Javascript3::LexicalBlock')))))) ) {
									v_last_statement = ((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								}
								})();
								(function () {
									if ( p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::If'], 0)) ) {
									(function () {
										var v_cond;
										v_cond = (p5call(v_last_statement, 'cond', [], 0));
										var v_body;
										v_body = (p5call(v_last_statement, 'body', [], 0));
										var v_otherwise;
										v_otherwise = (p5call(v_last_statement, 'otherwise', [], 0));
										v_body = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call(v_body, 'stmts', [], 1), 'needs_return', 1]), 0));
										List_str.p5push([('if ( ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool([v_cond, (p5num(v_level) + 1)], 0)) + ' ) {' + String.fromCharCode(10) + p5str(p5call(v_body, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}')]);
										(function () {
											if ( p5bool(v_otherwise) ) {
											v_otherwise = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call(v_otherwise, 'stmts', [], 1), 'needs_return', 1]), 0));
											List_str.p5push([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + 'else {' + String.fromCharCode(10) + p5str(p5call(v_otherwise, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}')]);
										}
										})();
									})();
								}
								else (function () {
									if ( p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Block'], 0)) ) {
									(function () {
										var v_body;
										v_body = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', (v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget('stmts'), 'needs_return', 1]), 0));
										List_str.p5push([('for (var i_ = 0; i_ < 1 ; i_++) {' + String.fromCharCode(10) + p5str(p5call(v_body, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}')]);
									})();
								}
								else (function () {
									if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::For'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::While'], 0)) || ((p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'goto')) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'return'))))) ) {
									List_str.p5push(p5list_to_a([p5call(v_last_statement, 'emit_javascript3', [v_level, 'runtime'], 1)]));
								}
								else (function () {
									if ( p5bool(v_has_local) ) {
									List_str.p5push([('return p5cleanup_local(local_idx, (' + p5str(p5pkg['Perlito5::Javascript3'].to_runtime_context(p5list_to_a([(new p5ArrayRef([v_last_statement])), v_level]), 0)) + '));')]);
								}
								else {
									List_str.p5push([('return (' + p5str(p5pkg['Perlito5::Javascript3'].to_runtime_context(p5list_to_a([(new p5ArrayRef([v_last_statement])), v_level]), 0)) + ');')]);
								}
								})()
								})()
								})()
								})();
							}
							})();
							(function () {
								if ( p5bool(v_has_local) ) {
								List_str.p5push(['p5cleanup_local(local_idx, null);']);
							}
							})();
							(function () {
								if ( p5bool(v_create_context) ) {
								(function () {
									var tmp4098 = v_level;
									v_level = p5decr_(tmp4098);
									return tmp4098
								})();
								List_str.p5push(['})();']);
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) && p5bool(p5make_package('Perlito5')['v_THROW'])) ) {
								(function () {
									var tmp4099 = v_level;
									v_level = p5decr_(tmp4099);
									return tmp4099
								})();
								(v_out = ((p5str(v_out) + (p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + 'try {' + String.fromCharCode(10) + p5pkg['Perlito5::Javascript3::LexicalBlock'].join([String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3::LexicalBlock'], function (p5want) {
		return ((p5str(v_tab) + p5str(p5make_package('main')['v__'])));
	}, p5list_to_a([List_str]))])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + 'catch(err) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + 'if ( err instanceof Error ) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 2)], 0)) + 'throw(err);' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + 'else {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 2)], 0)) + p5str(( p5bool(v_has_local) ? 'return p5cleanup_local(local_idx, err)' : 'return(err)')) + ';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}'))));
							}
							else {
								(v_out = ((p5str(v_out) + p5pkg['Perlito5::Javascript3::LexicalBlock'].join([String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::Javascript3::LexicalBlock'], function (p5want) {
		return ((p5str(v_tab) + p5str(p5make_package('main')['v__'])));
	}, p5list_to_a([List_str]))])), 0))));
							}
							})();
							p5make_package('Perlito5')['v_PKG_NAME'] = (v_outer_pkg);
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level'), function () {
								return p5make_package('Perlito5')['v_THROW'] = (v_outer_throw)
							});
							return (p5context([v_out], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4095._prototype_ = null;
					return tmp4095
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_javascript3', (function () {
					var tmp4100;
					tmp4100 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_str;
						v_str = (('(function () {' + String.fromCharCode(10) + p5str(p5call(p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'needs_return', 0]), 0), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '})()' + String.fromCharCode(10)));
						return (p5context([v_str], p5want));
					};
					tmp4100._prototype_ = null;
					return tmp4100
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_javascript3_program', (function () {
					var tmp4101;
					tmp4101 = function (List__, p5want) {
						var v_comp_units;
						var Hash_options = {};
						var tmp4102 = p5list_to_a([List__]);
							v_comp_units = tmp4102.shift();
							Hash_options = p5a_to_h(tmp4102);
							tmp4102 = [];
						p5make_package('Perlito5')['v_PKG_NAME'] = ('main');
						var v_str;
						(function () {
								if ( p5bool(Hash_options.p5hget('expand_use')) ) {
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript3::Runtime', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript3::Array', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript3::CORE', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript3::IO', 'emit_javascript2', [], 0)))));
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Javascript3::Sprintf', 'emit_javascript2', [], 0)))));
							}
							})();
						(v_str = ((p5str(v_str) + ('var p5want = null;' + String.fromCharCode(10) + 'var ' + p5str(p5pkg['Perlito5::Javascript3'].pkg_new_var([], 0)) + ' = p5pkg[' + String.fromCharCode(39) + p5str(p5make_package('Perlito5')['v_PKG_NAME']) + String.fromCharCode(39) + '];' + String.fromCharCode(10)))));
						(function () {
								var v_comp_unit;
								(function(){ var v_comp_unit; p5for_lex(function (v) { v_comp_unit = v }, function () {
										v_str = ((p5str(v_str) + p5str(p5call(v_comp_unit, 'emit_javascript3', [], 0)) + String.fromCharCode(10)));
									}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')]), false, '') })()
							})();
						return (p5context([v_str], p5want));
					};
					tmp4101._prototype_ = null;
					return tmp4101
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_javascript3', (function () {
					var tmp4103;
					tmp4103 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						return ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('int'));
					};
					tmp4103._prototype_ = null;
					return tmp4103
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_javascript3', (function () {
					var tmp4104;
					tmp4104 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						return ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('num'));
					};
					tmp4104._prototype_ = null;
					return tmp4104
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_javascript3', (function () {
					var tmp4105;
					tmp4105 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						return (p5pkg['Perlito5::Javascript3'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('buf')]), p5want));
					};
					tmp4105._prototype_ = null;
					return tmp4105
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_javascript3', (function () {
					var tmp4106;
					tmp4106 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_init;
						v_init = ('');
						(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == 'INIT') ) {
								(function () {
									var v_tmp;
									v_tmp = (('p5pkg.main._tmp' + p5str(p5pkg['Perlito5::Javascript3'].get_label([], 0))));
									v_init = ((p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 2)], 0)) + ('if (' + p5str(v_tmp) + ') { return }; ' + p5str(v_tmp) + ' = 1;' + String.fromCharCode(10))));
								})();
							}
							})();
						return (p5context([('p5for_lex(' + 'function () {' + String.fromCharCode(10) + p5str(v_init) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts'), 'needs_return', 0, 'top_level', 0]), 0)], 0), 'emit_javascript3', [(p5num(v_level) + 2)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + '[0], ' + p5str(p5call(v_self, 'emit_javascript3_continue', [v_level], 0)) + ', ' + '"' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})) + '"' + ')')], p5want));
					};
					tmp4106._prototype_ = null;
					return tmp4106
				})());
				p5typeglob_set('Perlito5::AST::Block', 'emit_javascript3_continue', (function () {
					var tmp4107;
					tmp4107 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue'))) || !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block'))))) ) {
								throw(p5context(['false'], p5want));
							}
							})();
							return (p5context([('function () {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue'), 'stmts', [], 1), 'needs_return', 0, 'top_level', 0]), 0)], 0), 'emit_javascript3', [(p5num(v_level) + 2)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4107._prototype_ = null;
					return tmp4107
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript3', (function () {
					var tmp4108;
					tmp4108 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var v_type;
							v_type = (List__.shift());
							v_type = (( p5bool(v_type) ? ('"' + p5str(v_type) + '"') : 'null'));
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '@', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'name', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'name', [], 1)]), 0));
									throw(p5context([(p5str(p5call(v_v, 'emit_javascript3', [v_level], 0)) + '.aget(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(v_type) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'array']), 0)) + '.aget(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0)) + ', ' + p5str(v_type) + ')')], p5want));
							}
							})();
							return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + '.aget(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(v_type) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4108._prototype_ = null;
					return tmp4108
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_javascript3_set', (function () {
					var tmp4109;
					tmp4109 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_arguments;
							v_arguments = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '@', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'name', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'name', [], 1)]), 0));
									throw(p5context([(p5str(p5call(v_v, 'emit_javascript3', [v_level], 0)) + '.aset(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'array']), 0)) + '.aset(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + '.aset(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4109._prototype_ = null;
					return tmp4109
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript3', (function () {
					var tmp4110;
					tmp4110 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var v_type;
							v_type = (List__.shift());
							v_type = (( p5bool(v_type) ? ('"' + p5str(v_type) + '"') : 'null'));
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '%', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'name', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'name', [], 1)]), 0));
									throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify([v_v, v_level, 'hash'], 0)) + '.hget(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(v_type) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'hash']), 0)) + '.hget(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level, 'list']), 0)) + ', ' + p5str(v_type) + ')')], p5want));
							}
							})();
							return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'hash']), 0)) + '.hget(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(v_type) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4110._prototype_ = null;
					return tmp4110
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_javascript3_set', (function () {
					var tmp4111;
					tmp4111 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_arguments;
							v_arguments = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '%', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'name', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'name', [], 1)]), 0));
									throw(p5context([(p5str(p5call(v_v, 'emit_javascript3', [v_level], 0)) + '.hset(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'hash']), 0)) + '.hset(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level, 'list']), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'hash']), 0)) + '.hset(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4111._prototype_ = null;
					return tmp4111
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				var v_table;
				v_table = ((new p5HashRef({'$' : 'v_', '@' : 'List_', '%' : 'Hash_', '&' : ''})));
				p5typeglob_set('Perlito5::AST::Var', 'emit_javascript3', (function () {
					var tmp4112;
					tmp4112 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							p5and((p5str(v_str_name) == String.fromCharCode(92)), function () {
								return v_str_name = (String.fromCharCode(92) + String.fromCharCode(92))
							});
							p5and((p5str(v_str_name) == '"'), function () {
								return v_str_name = (String.fromCharCode(92) + '"')
							});
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '@') ) {
								(function () {
									if ( (p5str(v_wantarray) == 'scalar') ) {
									throw(p5context([(p5str(p5call(v_self, 'emit_javascript3', [v_level, 'list'], 0)) + '.FETCHSIZE()')], p5want));
								}
								})();
								(function () {
									if ( (p5str(v_wantarray) == 'runtime') ) {
									throw(p5context([('(p5want' + ' ? ' + p5str(p5call(v_self, 'emit_javascript3', [v_level, 'list'], 0)) + ' : ' + p5str(p5call(v_self, 'emit_javascript3', [v_level, 'list'], 0)) + '.FETCHSIZE()' + ')')], p5want));
								}
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '&') ) {
								throw(p5context([('p5pkg["' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})) + '"]["' + p5str(v_str_name) + '"]')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '*') ) {
								throw(p5context([('p5pkg["' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})) + '"]["' + p5str(v_str_name) + '"]')], p5want));
							}
							})();
							var v_decl_type;
							v_decl_type = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
										return 'global'
									}));
							(function () {
								if ( (p5str(v_decl_type) == 'our') ) {
								(function () {
									var v_sigil;
									v_sigil = (( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ? '@' : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')));
									var v_s;
									v_s = (('p5pkg["' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_namespace')
})) + '"]["' + p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name) + '"]'));
									(function () {
										if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
										throw(p5context([('(' + p5str(v_s) + '.FETCHSIZE() - 1)')], p5want));
									}
									})();
									throw(p5context([v_s], p5want));
								})();
							}
							})();
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								p5block(function (v) {}, function () {
										(function () {
											if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
											throw(p5context([('(p5global("@", "' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '", "' + p5str(v_str_name) + '").FETCHSIZE() - 1)')], p5want));
										}
										})();
										throw(p5context([('p5global("' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '", "' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '", "' + p5str(v_str_name) + '")')], p5want));
									}, [0], false, ''
								);
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
								throw(p5context([('(' + p5str(v_ns) + p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget('@')) + p5str(v_str_name) + '.FETCHSIZE() - 1)')], p5want));
							}
							})();
							return (p5context([(p5str(v_ns) + p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')))) + p5str(v_str_name))], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4112._prototype_ = null;
					return tmp4112
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript3', (function () {
					var tmp4113;
					tmp4113 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						return (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript3', [v_level], p5want));
					};
					tmp4113._prototype_ = null;
					return tmp4113
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_javascript3_init', (function () {
					var tmp4114;
					tmp4114 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'my') ) {
								var v_str;
								v_str = ('');
								v_str = ((p5str(v_str) + 'var ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript3', [], 0)) + ' = '));
								(function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '%') ) {
									v_str = ((p5str(v_str) + 'new p5Hash({});'));
								}
								else (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '@') ) {
									v_str = ((p5str(v_str) + 'new p5Array([]);'));
								}
								else {
									v_str = ((p5str(v_str) + 'new p5Scalar(null);'));
								}
								})()
								})();
								(function () {
									throw(p5context([v_str], p5want))
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'our') ) {
								var v_str_name;
								v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('name'));
								p5and((p5str(v_str_name) == String.fromCharCode(92)), function () {
									return v_str_name = (String.fromCharCode(92) + String.fromCharCode(92))
								});
								p5and((p5str(v_str_name) == '"'), function () {
									return v_str_name = (String.fromCharCode(92) + '"')
								});
								(function () {
									throw(p5context([('p5global("' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('sigil')) + '", ' + '"' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})) + '", ' + '"' + p5str(v_str_name) + '")')], p5want))
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'local') ) {
								var v_decl_namespace;
								v_decl_namespace = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('_namespace'));
								var v_ns;
								v_ns = (('p5pkg["' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('namespace'), function () {
	return p5or(v_decl_namespace, function () {
		return p5make_package('Perlito5')['v_PKG_NAME']
	})
})) + '"]'));
								(function () {
									throw(p5context([('p5set_local(' + p5str(v_ns) + ',' + p5str(p5pkg['Perlito5::Javascript3'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('name')]), 0)) + ',' + p5str(p5pkg['Perlito5::Javascript3'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('sigil')]), 0)) + '); ')], p5want))
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'state') ) {
								(function () {
									throw(p5context([('// state ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_javascript3', [], 0)))], p5want))
								})()
							}
							else {
								return (p5pkg['Perlito5::AST::Decl'].die([].concat([('not implemented: Perlito5::AST::Decl ' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) + String.fromCharCode(39))]), p5want));
							}
							})()
							})()
							})()
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4114._prototype_ = null;
					return tmp4114
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_javascript3', (function () {
					var tmp4115;
					tmp4115 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var v_type;
							v_type = (List__.shift());
							v_type = (( p5bool(v_type) ? ('"' + p5str(v_type) + '"') : 'null'));
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<[ ]>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '.aget(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(v_type) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<{ }>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '.hget(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level, 'list']), 0)) + ', ' + p5str(v_type) + ')')], p5want));
							}
							})();
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_javascript3', [v_level, 'scalar'], 0));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								throw(p5context([('p5code(' + p5str(v_invocant) + ')(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want')))) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_javascript3', [v_level, 'scalar'], 0));
							}
							else {
								v_meth = (('"' + p5str(v_meth) + '"'));
							}
							})();
							return (p5context([('p5call(' + p5str(v_invocant) + ', ' + p5str(v_meth) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want')))) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4115._prototype_ = null;
					return tmp4115
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Apply', 'emit_regex_javascript3', (function () {
					var tmp4116;
					tmp4116 = function (List__, p5want) {
						try {
							var v_op;
							v_op = (List__.shift());
							var v_var;
							v_var = (List__.shift());
							var v_regex;
							v_regex = (List__.shift());
							(function () {
								if ( p5bool(p5call(v_regex, 'isa', ['Perlito5::AST::Var'], 0)) ) {
								v_regex = ((new p5HashRef(p5a_to_h(p5list_to_a(['code', 'p5:m', 'arguments', (new p5ArrayRef([v_regex, '']))])))));
							}
							})();
							var v_str;
							var v_code;
							v_code = ((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('code'));
							var v_regex_args;
							v_regex_args = ((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('arguments'));
							(function () {
								if ( (p5str(v_code) == 'p5:s') ) {
								v_str = ((p5str(p5call(v_var, 'emit_javascript3', [], 0)) + '.assign(p5str(' + p5str(p5call(v_var, 'emit_javascript3', [], 0)) + ').replace(/' + p5str((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '/' + p5str((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(2)._hash_.p5hget('buf')) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1), 'emit_javascript3', [], 0)) + '))'));
							}
							else (function () {
								if ( (p5str(v_code) == 'p5:m') ) {
								(function () {
									var v_ast;
									v_ast = ((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_ast, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										v_str = (('(' + 'p5str(' + p5str(p5call(v_var, 'emit_javascript3', [], 0)) + ')' + '.match(/' + p5str((v_ast || (v_ast = new p5HashRef({})))._hash_.p5hget('buf')) + '/' + p5str((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(1)._hash_.p5hget('buf')) + ')' + ' ? 1 : 0)'));
									}
									else {
										v_str = (('(new RegExp(' + p5str(p5call(v_ast, 'emit_javascript3', [], 0)) + ', ' + '"' + p5str((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '"' + '))' + '.exec(' + 'p5str(' + p5str(p5call(v_var, 'emit_javascript3', [], 0)) + ')' + ')'));
									}
									})();
								})();
							}
							else (function () {
								if ( (p5str(v_code) == 'p5:tr') ) {
								v_str = (('p5tr(' + p5str(p5call(v_var, 'emit_javascript3', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), 'emit_javascript3', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1), 'emit_javascript3', [], 0)) + ')'));
							}
							else {
								p5pkg['Perlito5::AST::Apply'].die([].concat([('Error: regex emitter - unknown operator ' + p5str(v_code))]), null);
							}
							})()
							})()
							})();
							(function () {
								if ( (p5str(v_op) == '=~') ) {
								throw(p5context([v_str], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_op) == '!~') ) {
								throw(p5context([('!(' + p5str(v_str) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Apply'].die([].concat(['Error: regex emitter']), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4116._prototype_ = null;
					return tmp4116
				})());
				var Hash_emit_js = {};
				Hash_emit_js = p5a_to_h(['infix:<=~>', (function () {
							var tmp4174;
							tmp4174 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript3(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), p5want));
							};
							tmp4174._prototype_ = null;
							return tmp4174
						})(), 'infix:<!~>', (function () {
							var tmp4175;
							tmp4175 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript3(p5list_to_a(['!~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), p5want));
							};
							tmp4175._prototype_ = null;
							return tmp4175
						})(), 'p5:s', (function () {
							var tmp4176;
							tmp4176 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript3(p5list_to_a(['=~', p5call('Perlito5::AST::Var', 'new', ['sigil', '$', 'namespace', '', 'name', '_'], 1), v_self]), p5want));
							};
							tmp4176._prototype_ = null;
							return tmp4176
						})(), 'p5:m', (function () {
							var tmp4177;
							tmp4177 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript3(p5list_to_a(['=~', p5call('Perlito5::AST::Var', 'new', ['sigil', '$', 'namespace', '', 'name', '_'], 1), v_self]), p5want));
							};
							tmp4177._prototype_ = null;
							return tmp4177
						})(), 'p5:tr', (function () {
							var tmp4178;
							tmp4178 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_javascript3(p5list_to_a(['=~', p5call('Perlito5::AST::Var', 'new', ['sigil', '$', 'namespace', '', 'name', '_'], 1), v_self]), p5want));
							};
							tmp4178._prototype_ = null;
							return tmp4178
						})(), '__PACKAGE__', (function () {
							var tmp4179;
							tmp4179 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('"' + p5str(p5make_package('Perlito5')['v_PKG_NAME']) + '"')], p5want));
							};
							tmp4179._prototype_ = null;
							return tmp4179
						})(), 'wantarray', (function () {
							var tmp4180;
							tmp4180 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context(['p5want'], p5want));
							};
							tmp4180._prototype_ = null;
							return tmp4180
						})(), 'package', (function () {
							var tmp4181;
							tmp4181 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('var ' + p5str(p5pkg['Perlito5::Javascript3'].pkg_new_var([], 0)) + ' = p5make_package("' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '")')], p5want));
							};
							tmp4181._prototype_ = null;
							return tmp4181
						})(), 'infix:<=>>', (function () {
							var tmp4182;
							tmp4182 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_javascript3', [v_level], 0)))], p5want));
							};
							tmp4182._prototype_ = null;
							return tmp4182
						})(), 'infix:<cmp>', (function () {
							var tmp4183;
							tmp4183 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5cmp(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_str([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4183._prototype_ = null;
							return tmp4183
						})(), 'infix:<<=>>', (function () {
							var tmp4184;
							tmp4184 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5cmp(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4184._prototype_ = null;
							return tmp4184
						})(), 'infix:<**>', (function () {
							var tmp4185;
							tmp4185 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('Math.pow(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4185._prototype_ = null;
							return tmp4185
						})(), 'prefix:<!>', (function () {
							var tmp4186;
							tmp4186 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								return (p5context([('!( ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ')')], p5want));
							};
							tmp4186._prototype_ = null;
							return tmp4186
						})(), 'prefix:<not>', (function () {
							var tmp4187;
							tmp4187 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								return (p5context([('!( ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ')')], p5want));
							};
							tmp4187._prototype_ = null;
							return tmp4187
						})(), 'prefix:<~>', (function () {
							var tmp4188;
							tmp4188 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5complement( ' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ')')], p5want));
							};
							tmp4188._prototype_ = null;
							return tmp4188
						})(), 'prefix:<->', (function () {
							var tmp4189;
							tmp4189 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('-( ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4189._prototype_ = null;
							return tmp4189
						})(), 'prefix:<+>', (function () {
							var tmp4190;
							tmp4190 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [v_level, v_wantarray], 0)) + ')')], p5want));
							};
							tmp4190._prototype_ = null;
							return tmp4190
						})(), 'require', (function () {
							var tmp4191;
							tmp4191 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (p5list_slice(List__, [0], 0));
									var v_level;
									v_level = (p5list_slice(List__, [1], 0));
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Num'], 0)) ) {
										throw(p5context(['1'], p5want));
									}
									})();
									return (p5context([('p5pkg["Perlito5::Grammar::Use"].require([' + p5str(p5pkg['Perlito5::Javascript3'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ', ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('bareword')) ? 1 : 0)) + '])')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4191._prototype_ = null;
							return tmp4191
						})(), 'prefix:<$>', (function () {
							var tmp4192;
							tmp4192 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify([v_arg, v_level, 'scalar'], 0)) + '.sderef()')], p5want));
							};
							tmp4192._prototype_ = null;
							return tmp4192
						})(), 'prefix:<@>', (function () {
							var tmp4193;
							tmp4193 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify([v_arg, v_level, 'array'], 0)) + '.aderef()')], p5want));
							};
							tmp4193._prototype_ = null;
							return tmp4193
						})(), 'prefix:<$#>', (function () {
							var tmp4194;
							tmp4194 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('(' + p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify([v_arg, v_level, 'array'], 0)) + '.aderef().FETCHSIZE() - 1)')], p5want));
							};
							tmp4194._prototype_ = null;
							return tmp4194
						})(), 'prefix:<%>', (function () {
							var tmp4195;
							tmp4195 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify([v_arg, v_level, 'hash'], 0)) + '.hderef()')], p5want));
							};
							tmp4195._prototype_ = null;
							return tmp4195
						})(), 'prefix:<&>', (function () {
							var tmp4196;
							tmp4196 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5code_lookup_by_name("' + p5str(p5make_package('Perlito5')['v_PKG_NAME']) + '", ' + p5str(p5call(v_arg, 'emit_javascript3', [v_level], 0)) + ')')], p5want));
							};
							tmp4196._prototype_ = null;
							return tmp4196
						})(), 'circumfix:<[ ]>', (function () {
							var tmp4197;
							tmp4197 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5context([('(new p5ArrayRef(new p5Array(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')))')], p5want));
							};
							tmp4197._prototype_ = null;
							return tmp4197
						})(), 'circumfix:<{ }>', (function () {
							var tmp4198;
							tmp4198 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5context([('(new p5HashRef(new p5Hash(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level, 'hash']), 0)) + ')))')], p5want));
							};
							tmp4198._prototype_ = null;
							return tmp4198
						})(), 'prefix:<' + String.fromCharCode(92) + '>', (function () {
							var tmp4199;
							tmp4199 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (p5list_slice(List__, [0], 0));
									var v_level;
									v_level = (p5list_slice(List__, [1], 0));
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '@') ) {
											throw(p5context([('(new p5ArrayRef(' + p5str(p5call(v_arg, 'emit_javascript3', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '%') ) {
											throw(p5context([('(new p5HashRef(' + p5str(p5call(v_arg, 'emit_javascript3', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '*') ) {
											throw(p5context([('(new p5GlobRef(' + p5str(p5call(v_arg, 'emit_javascript3', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '&') ) {
											(function () {
												if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
												throw(p5context([('p5pkg["' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace')) + '"].' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
											}
											else {
												throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + '.' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
											}
											})();
										}
										})();
									}
									})();
									return (p5context([('(new p5ScalarRef(' + p5str(p5call(v_arg, 'emit_javascript3', [v_level], 0)) + '))')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4199._prototype_ = null;
							return tmp4199
						})(), 'postfix:<++>', (function () {
							var tmp4200;
							tmp4200 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'lvalue']), 0)) + '.p5postincr()')], p5want));
							};
							tmp4200._prototype_ = null;
							return tmp4200
						})(), 'postfix:<-->', (function () {
							var tmp4201;
							tmp4201 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'lvalue']), 0)) + '.p5postdecr()')], p5want));
							};
							tmp4201._prototype_ = null;
							return tmp4201
						})(), 'prefix:<++>', (function () {
							var tmp4202;
							tmp4202 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'lvalue']), 0)) + '.p5incr()')], p5want));
							};
							tmp4202._prototype_ = null;
							return tmp4202
						})(), 'prefix:<-->', (function () {
							var tmp4203;
							tmp4203 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, 'lvalue']), 0)) + '.p5decr()')], p5want));
							};
							tmp4203._prototype_ = null;
							return tmp4203
						})(), 'infix:<x>', (function () {
							var tmp4204;
							tmp4204 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('p5str_replicate(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4204._prototype_ = null;
							return tmp4204
						})(), 'list:<.>', (function () {
							var tmp4205;
							tmp4205 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' + '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_str([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4205._prototype_ = null;
							return tmp4205
						})(), 'list:<,>', (function () {
							var tmp4206;
							tmp4206 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), p5want));
							};
							tmp4206._prototype_ = null;
							return tmp4206
						})(), 'infix:<..>', (function () {
							var tmp4207;
							tmp4207 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('(function (a) { ' + 'for (var i=' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [], 0)) + ', l=' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_javascript3', [], 0)) + '; ' + 'i<=l; ++i)' + '{ ' + 'a.push(i) ' + '}; ' + 'return a ' + '})([])')], p5want));
							};
							tmp4207._prototype_ = null;
							return tmp4207
						})(), 'delete', (function () {
							var tmp4208;
							tmp4208 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								return (p5context([('(delete ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [], 0)) + ')')], p5want));
							};
							tmp4208._prototype_ = null;
							return tmp4208
						})(), 'scalar', (function () {
							var tmp4209;
							tmp4209 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								var v_level;
								v_level = (p5list_slice(List__, [1], 0));
								return (p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), p5want));
							};
							tmp4209._prototype_ = null;
							return tmp4209
						})(), 'ternary:<? :>', (function () {
							var tmp4210;
							tmp4210 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('( ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ' ? ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)], 0), 'emit_javascript3', [v_level, v_wantarray], 0)) + ' : ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2)], 0), 'emit_javascript3', [v_level, v_wantarray], 0)) + ')')], p5want));
							};
							tmp4210._prototype_ = null;
							return tmp4210
						})(), 'my', (function () {
							var tmp4211;
							tmp4211 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp4211._prototype_ = null;
							return tmp4211
						})(), 'our', (function () {
							var tmp4212;
							tmp4212 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp4212._prototype_ = null;
							return tmp4212
						})(), 'local', (function () {
							var tmp4213;
							tmp4213 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp4213._prototype_ = null;
							return tmp4213
						})(), 'circumfix:<( )>', (function () {
							var tmp4214;
							tmp4214 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('p5context(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'runtime') ? 'p5want' : ( (p5str(v_wantarray) == 'list') ? 1 : 0))) + ')')], p5want));
							};
							tmp4214._prototype_ = null;
							return tmp4214
						})(), 'infix:<=>', (function () {
							var tmp4215;
							tmp4215 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_wantarray;
									v_wantarray = (List__.shift());
									var v_parameters;
									v_parameters = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									var v_arguments;
									v_arguments = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1));
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_parameters, 'code', [], 0)) == 'prefix:<*>')) ) {
										throw(p5context([('p5set_glob(' + p5str(p5call((v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_parameters, 'code', [], 0)) == 'my') || ((p5str(p5call(v_parameters, 'code', [], 0)) == 'our') || ((p5str(p5call(v_parameters, 'code', [], 0)) == 'local') || (p5str(p5call(v_parameters, 'code', [], 0)) == 'circumfix:<( )>'))))) ) {
										(function () {
											var v_tmp;
											v_tmp = (('tmp' + p5str(p5pkg['Perlito5::Javascript3'].get_label([], 0))));
											var v_tmp2;
											v_tmp2 = (('tmp' + p5str(p5pkg['Perlito5::Javascript3'].get_label([], 0))));
											throw(p5context([('(function () { ' + 'var ' + p5str(v_tmp) + ' = ' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + '; ' + 'var ' + p5str(v_tmp2) + ' = ' + p5str(v_tmp) + '.slice(0); ' + p5pkg['Perlito5::AST::Apply'].join(['; '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return ((p5context([( (p5bool(p5call(p5make_package('main')['v__'], 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(p5make_package('main')['v__'], 'code', [], 0)) == 'undef')) ? (p5str(v_tmp) + '.shift()') : ( (p5str(p5call(p5make_package('main')['v__'], 'sigil', [], 0)) == '$') ? (p5str(p5call(p5make_package('main')['v__'], 'emit_javascript3', [], 0)) + '.assign(' + p5str(v_tmp) + '.shift())') : ( (p5str(p5call(p5make_package('main')['v__'], 'sigil', [], 0)) == '@') ? (p5str(p5call(p5make_package('main')['v__'], 'emit_javascript3', [], 0)) + '.assign(' + p5str(v_tmp) + '); ' + p5str(v_tmp) + ' = []') : ( (p5str(p5call(p5make_package('main')['v__'], 'sigil', [], 0)) == '%') ? (p5str(p5call(p5make_package('main')['v__'], 'emit_javascript3', [], 0)) + '.assign(p5a_to_h(' + p5str(v_tmp) + ')); ' + p5str(v_tmp) + ' = []') : p5pkg['Perlito5::AST::Apply'].die([].concat(['not implemented']), 1)))))], 1)));
	}, p5list_to_a([p5array_deref(p5call(v_parameters, 'arguments', [], p5want), 'Perlito5::AST::Apply')])), ('return ' + p5str(v_tmp2))])), 0) + ' })()')], p5want));
										})();
									}
									})();
									(function () {
										if ( ((p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_parameters, 'sigil', [], 0)) == '$')) || (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(p5call(v_parameters, 'var', [], 0), 'sigil', [], 0)) == '$'))) ) {
										throw(p5context([('' + p5str(p5call(v_parameters, 'emit_javascript3', [], 0)) + '.assign(' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Call'], 0)) && (p5str((v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>')) ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '.aset(' + p5str(p5pkg['Perlito5::Javascript3'].to_num(p5list_to_a([(v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
									}
									else (function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Call'], 0)) && (p5str((v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>')) ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].emit_javascript3_autovivify(p5list_to_a([(v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '.hset(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_parameters || (v_parameters = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
									}
									else (function () {
										if ( p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Index'], 0)) ) {
										throw(p5call(v_parameters, 'emit_javascript3_set', [v_arguments, (p5num(v_level) + 1)], p5want));
									}
									else (function () {
										if ( p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Lookup'], 0)) ) {
										throw(p5call(v_parameters, 'emit_javascript3_set', [v_arguments, (p5num(v_level) + 1)], p5want));
									}
									})()
									})()
									})()
									})();
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_parameters, 'sigil', [], 0)) == '@')) ) {
										throw(p5context([(p5str(p5call(v_parameters, 'emit_javascript3', [], 0)) + '.assign(new p5Array(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + '))')], p5want));
									}
									else (function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(p5call(v_parameters, 'var', [], 0), 'sigil', [], 0)) == '@')) ) {
										throw(p5context([(p5str(p5call(p5call(v_parameters, 'var', [], 0), 'emit_javascript3', [], 0)) + '.assign(new p5Array(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + '))')], p5want));
									}
									else (function () {
										if ( ((p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_parameters, 'sigil', [], 0)) == '%')) || (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Decl'], 0)) && (p5str(p5call(p5call(v_parameters, 'var', [], 0), 'sigil', [], 0)) == '%'))) ) {
										throw(p5context([(p5str(p5call(v_parameters, 'emit_javascript3', [], 0)) + '.assign(new p5Hash(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1), 'hash']), 0)) + '))')], p5want));
									}
									})()
									})()
									})();
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_parameters, 'sigil', [], 0)) == '*')) ) {
										throw(p5context([('(' + p5str(p5call(v_parameters, 'emit_javascript3', [v_level], 0)) + ' = ' + p5str(p5call(v_arguments, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + ')')], p5want));
									}
									})();
									p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a([p5pkg['Perlito5::Dumper'].ast_dumper([v_parameters], 1)]));
									return (p5pkg['Perlito5::AST::Apply'].die([].concat(['assignment: don' + String.fromCharCode(39) + 't know what to do with left side isa ', p5pkg['Perlito5::AST::Apply'].ref([v_parameters], 1)]), p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4215._prototype_ = null;
							return tmp4215
						})(), 'break', (function () {
							var tmp4216;
							tmp4216 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5context(['throw(new p5_error("break", ""))'], p5want));
							};
							tmp4216._prototype_ = null;
							return tmp4216
						})(), 'next', (function () {
							var tmp4217;
							tmp4217 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code'), function () {
												return ''
											}));
								return (p5context([('throw(new p5_error("next", "' + p5str(v_label) + '"))')], p5want));
							};
							tmp4217._prototype_ = null;
							return tmp4217
						})(), 'last', (function () {
							var tmp4218;
							tmp4218 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code'), function () {
												return ''
											}));
								return (p5context([('throw(new p5_error("last", "' + p5str(v_label) + '"))')], p5want));
							};
							tmp4218._prototype_ = null;
							return tmp4218
						})(), 'redo', (function () {
							var tmp4219;
							tmp4219 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code'), function () {
												return ''
											}));
								return (p5context([('throw(new p5_error("redo", "' + p5str(v_label) + '"))')], p5want));
							};
							tmp4219._prototype_ = null;
							return tmp4219
						})(), 'return', (function () {
							var tmp4220;
							tmp4220 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5context([('throw(' + p5str(p5pkg['Perlito5::Javascript3'].to_runtime_context(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')')], p5want));
							};
							tmp4220._prototype_ = null;
							return tmp4220
						})(), 'goto', (function () {
							var tmp4221;
							tmp4221 = function (List__, p5want) {
								var v_self;
								v_self = (p5list_slice(List__, [0], 0));
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5context([('throw((' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [], 0)) + ')([List__, p5want]))')], p5want));
							};
							tmp4221._prototype_ = null;
							return tmp4221
						})(), 'do', (function () {
							var tmp4222;
							tmp4222 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								var v_ast;
								v_ast = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'eval', 'namespace', '', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do_file', 'namespace', 'Perlito5::Grammar::Use', 'arguments', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 1)])))]), 0));
								return (p5call(v_ast, 'emit_javascript3', [v_level], p5want));
							};
							tmp4222._prototype_ = null;
							return tmp4222
						})(), 'eval', (function () {
							var tmp4223;
							tmp4223 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_wantarray;
									v_wantarray = (List__.shift());
									p5make_package('Perlito5')['v_THROW'] = (1);
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									var v_eval;
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Block'], 0)) ) {
										(function () {
											var v_block;
											v_block = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('stmts'));
											throw(p5call_sub('Perlito5::Javascript3', 'emit_wrap_javascript3', p5list_to_a([v_level, v_wantarray, p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', ['block', v_block, 'needs_return', 1], 0)], 0), 'emit_javascript2', [(p5num(v_level) + 1), v_wantarray], 1)]), p5want));
										})();
									}
									else {
										(function () {
											var v_var_env_perl5;
											v_var_env_perl5 = (p5pkg['Perlito5::Dumper'].ast_dumper(p5list_to_a([(new p5ArrayRef([]))]), 0));
											var v_m;
											v_m = (p5pkg['Perlito5::Grammar::Expression'].term_square([v_var_env_perl5, 0], 0));
											v_m = (p5pkg['Perlito5::Grammar::Expression'].expand_list(p5list_to_a([p5pkg['Perlito5::Match'].flat([v_m], p5want)._array_.p5aget(2)]), 0));
											var v_var_env_js;
											v_var_env_js = (('(new p5ArrayRef(new p5Array(' + p5str(p5pkg['Perlito5::Javascript3'].to_list([v_m], 0)) + ')))'));
											v_eval = (('eval(perl5_to_js(' + p5str(p5pkg['Perlito5::Javascript3'].to_str([v_arg], 0)) + ', ' + '"' + p5str(p5make_package('Perlito5')['v_PKG_NAME']) + '", ' + p5str(v_var_env_js) + ', ' + '"' + p5str(v_wantarray) + '"' + '))'));
										})();
									}
									})();
									return (p5context([('(function (p5want) {' + String.fromCharCode(10) + 'var r = null;' + String.fromCharCode(10) + 'p5pkg["main"]["v_@"].assign("");' + String.fromCharCode(10) + 'try {' + String.fromCharCode(10) + 'r = ' + p5str(v_eval) + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'catch(err) {' + String.fromCharCode(10) + 'if ( err instanceof p5_error ) {' + String.fromCharCode(10) + 'p5pkg["main"]["v_@"].assign(err);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'else if ( err instanceof Error ) {' + String.fromCharCode(10) + 'p5pkg["main"]["v_@"].assign(err);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'else {' + String.fromCharCode(10) + 'return(err);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'return r;' + String.fromCharCode(10) + '})(' + p5str(( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want')))) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4223._prototype_ = null;
							return tmp4223
						})(), 'undef', (function () {
							var tmp4224;
							tmp4224 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_wantarray;
									v_wantarray = (List__.shift());
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [], 0)) + '.assign(null)')], p5want));
									}
									})();
									return (p5context(['null'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4224._prototype_ = null;
							return tmp4224
						})(), 'shift', (function () {
							var tmp4225;
							tmp4225 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_wantarray;
									v_wantarray = (List__.shift());
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + '.shift([' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '])')], p5want));
									}
									})();
									return (p5context([(p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + '.shift([List__])')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4225._prototype_ = null;
							return tmp4225
						})(), 'map', (function () {
							var tmp4226;
							tmp4226 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (List_in.shift());
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										v_fun = ((new p5ArrayRef([v_fun])));
									}
									})();
								return (p5context([('p5map(' + p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + ', ' + 'function (p5want) {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', ['block', v_fun, 'needs_return', 1, 'top_level', 0], 0)], 0), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}, ' + p5str(v_list) + ')')], p5want));
							};
							tmp4226._prototype_ = null;
							return tmp4226
						})(), 'grep', (function () {
							var tmp4227;
							tmp4227 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (List_in.shift());
								var v_list;
								v_list = (p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										v_fun = ((new p5ArrayRef([v_fun])));
									}
									})();
								return (p5context([('p5grep(' + p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + ', ' + 'function (p5want) {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', ['block', v_fun, 'needs_return', 1, 'top_level', 0], 0)], 0), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}, ' + p5str(v_list) + ')')], p5want));
							};
							tmp4227._prototype_ = null;
							return tmp4227
						})(), 'sort', (function () {
							var tmp4228;
							tmp4228 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								var v_list;
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([p5list_slice(List_in, [0], 0)], 0) == 'Perlito5::AST::Block') ) {
										v_fun = (List_in.shift());
										v_fun = (('function (p5want) {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', (v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'), 'needs_return', 1, 'top_level', 0]), 0)], 0), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}'));
									}
									else {
										v_fun = ('null');
									}
									})();
								v_list = (p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('p5sort(' + p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + ', ' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp4228._prototype_ = null;
							return tmp4228
						})(), 'infix:<//>', (function () {
							var tmp4229;
							tmp4229 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								var v_wantarray;
								v_wantarray = (List__.shift());
								return (p5context([('p5defined_or' + '(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].emit_function_javascript3(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							};
							tmp4229._prototype_ = null;
							return tmp4229
						})(), 'exists', (function () {
							var tmp4230;
							tmp4230 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_wantarray;
									v_wantarray = (List__.shift());
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a(['sigil', '%', 'namespace', p5call(v_v, 'namespace', [], 1), 'name', p5call(v_v, 'name', [], 1)]), 0));
												throw(p5context([('(' + p5str(p5call(v_v, 'emit_javascript3', [], 0)) + ').exists(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ')')], p5want));
											}
											})();
											throw(p5context([('(' + p5str(p5call(v_v, 'emit_javascript3', [], 0)) + ').hderef().exists(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ')')], p5want));
										})();
									}
									})();
									return (function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)) ) {
										return (function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<{ }>') ) {
											(function () {
												throw(p5context([('(' + p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_javascript3', [], 0)) + ').hderef().exists(' + p5str(p5pkg['Perlito5::Javascript3'].autoquote(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')')], p5want))
											})()
										}
										})()
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4230._prototype_ = null;
							return tmp4230
						})()]);
				p5typeglob_set('Perlito5::AST::Apply', 'emit_javascript3', (function () {
					var tmp4231;
					tmp4231 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							var v_apply;
							v_apply = (p5call(v_self, 'op_assign', [], 0));
							(function () {
								if ( p5bool(v_apply) ) {
								throw(p5call(v_apply, 'emit_javascript3', [v_level], p5want));
							}
							})();
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( (p5pkg['Perlito5::AST::Apply'].ref([v_code], 0) != '') ) {
								(function () {
									var List_args = [];
									List_args = [];
									p5for(p5make_package('main'), "v__", function () {
											List_args.p5push(p5list_to_a([p5call(p5make_package('main')['v__'], 'emit_javascript3', [], 1)]));
										}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '');
									throw(p5context([('p5code(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), 'emit_javascript3', [v_level], 0)) + ')(' + p5pkg['Perlito5::AST::Apply'].join([','].concat(p5list_to_a([List_args])), 0) + ')')], p5want));
								})();
							}
							})();
							p5and((Hash_emit_js).hasOwnProperty(v_code), function () {
								throw((Hash_emit_js.p5hget(p5str(v_code)))([v_self, v_level, v_wantarray], p5want))
							});
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_str']).hasOwnProperty(v_code) ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_str'].p5hget(p5str(v_code))].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_str([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_num']).hasOwnProperty(v_code) ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] || (p5make_package('Perlito5::Javascript3')['Hash_op_infix_js_num'] = {}), 'Perlito5::Javascript3']['Hash_op_infix_js_num'].p5hget(p5str(v_code))].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Javascript3'].to_num([p5make_package('main')['v__']], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_prefix_js_str']).hasOwnProperty(v_code) ) {
								throw(p5context([(p5str(p5pkg[p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Javascript3')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Javascript3']['Hash_op_prefix_js_str'].p5hget(p5str(v_code))) + '(' + p5str(p5pkg['Perlito5::Javascript3'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'infix:<&&>') || (p5str(v_code) == 'infix:<and>')) ) {
								throw(p5context([('p5and' + '(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].emit_function_javascript3(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'infix:<||>') || (p5str(v_code) == 'infix:<or>')) ) {
								throw(p5context([('p5or' + '(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_javascript3', [v_level, 'scalar'], 0)) + ', ' + p5str(p5pkg['Perlito5::Javascript3'].emit_function_javascript3(p5list_to_a([v_level, v_wantarray, (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								(function () {
									if ( ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == 'JS') && (p5str(v_code) == 'inline')) ) {
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										throw((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['JS::inline needs a string constant']), null);
									}
									})();
								}
								})();
								v_code = (('p5pkg["' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '"].' + p5str(v_code)));
							}
							else {
								v_code = ((p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + '.' + p5str(v_code)));
							}
							})();
							var v_sig;
							var v_may_need_autoload;
							p5block(function (v) {}, function () {
									var v_name;
									v_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5make_package('Perlito5')['v_PKG_NAME']
											}));
									var v_effective_name;
									v_effective_name = ((p5str(v_namespace) + '::' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'))));
									(function () {
										if ( (p5make_package('Perlito5')['v_PROTO'])._hash_.hasOwnProperty(v_effective_name) ) {
										v_sig = ((p5make_package('Perlito5')['v_PROTO'] || (p5make_package('Perlito5')['v_PROTO'] = new p5HashRef({})))._hash_.p5hget(p5str(v_effective_name)));
									}
									else (function () {
										if ( ((!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'))) || (p5str(v_namespace) == 'CORE')) && (p5make_package('Perlito5')['v_CORE_PROTO'])._hash_.hasOwnProperty(('CORE::' + p5str(v_name)))) ) {
										v_effective_name = (('CORE::' + p5str(v_name)));
										v_sig = ((p5make_package('Perlito5')['v_CORE_PROTO'] || (p5make_package('Perlito5')['v_CORE_PROTO'] = new p5HashRef({})))._hash_.p5hget(p5str(v_effective_name)));
									}
									else {
										(function () {
											if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) ) {
											(function () {
												if ( p5bool(p5make_package('Perlito5')['v_STRICT']) ) {
												p5pkg['Perlito5::AST::Apply'].die([].concat([('Bareword "' + p5str(v_name) + '" not allowed while "strict subs" in use')]), null);
											}
											})();
											throw(p5pkg['Perlito5::Javascript3'].escape_string([(p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ? (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::') : '')) + p5str(v_name))], p5want));
										}
										})();
										v_may_need_autoload = (1);
									}
									})()
									})();
								}, [0], false, ''
							);
							(function () {
								if ( (((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'say') || (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'print')) && (!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'))) && p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')))) ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('arguments', ((new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Var', 'new', ['sigil', '$', 'namespace', '', 'name', '_'], 1)])))));
							}
							})();
							(function () {
								if ( p5bool(v_sig) ) {
								(function () {
									var List_out = [];
									List_out = [];
									var List_in = [];
									List_in = p5list_to_a([p5array_deref(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
												return (new p5ArrayRef([]))
											}), 'Perlito5::AST::Apply')]);
									var v_optional;
									v_optional = (0);
									(function () {
										p5while(function () {
											var v_c;
											v_c = (p5str(v_sig).substr(0, 1));
											(function () {
												if ( (p5str(v_c) == ';') ) {
												v_optional = (1);
											}
											else (function () {
												if ( ((p5str(v_c) == '$') || (p5str(v_c) == '_')) ) {
												p5and(p5or(List_in.length, function () {
													return !( p5bool(v_optional))
												}), function () {
													return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript3', [v_level, 'scalar'], 1)]))
												});
											}
											else (function () {
												if ( (p5str(v_c) == '@') ) {
												p5and(p5or(List_in.length, function () {
													return !( p5bool(v_optional))
												}), function () {
													return List_out.p5push([('new p5Array(' + p5str(p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0)) + ')')])
												});
												List_in = [];
											}
											else (function () {
												if ( (p5str(v_c) == '*') ) {
												(function () {
													if ( (p5bool(List_in.length) || !( p5bool(v_optional))) ) {
													(function () {
														var v_arg;
														v_arg = (List_in.shift());
														(function () {
															if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('bareword')) ) {
															List_out.p5push([('p5pkg["' + p5str(p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})) + '"]["f_' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) + '"]')]);
														}
														else {
															List_out.p5push(p5list_to_a([p5call(v_arg, 'emit_javascript3', [v_level, 'scalar'], 1)]));
														}
														})();
													})();
												}
												})();
											}
											else (function () {
												if ( (p5str(v_c) == String.fromCharCode(92)) ) {
												(function () {
													if ( (p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '$') ) {
													v_sig = (CORE.substr([v_sig, 1], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript3', [v_level, 'scalar'], 1)]))
													});
												}
												else (function () {
													if ( ((p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '@') || (p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '%')) ) {
													v_sig = (CORE.substr([v_sig, 1], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript3', [v_level, 'list'], 1)]))
													});
												}
												else (function () {
													if ( (p5str(v_sig).substr(0, 5) == String.fromCharCode(92) + '[@%]') ) {
													v_sig = (CORE.substr([v_sig, 4], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_javascript3', [v_level, 'list'], 1)]))
													});
												}
												})()
												})()
												})();
											}
											})()
											})()
											})()
											})()
											})();
											v_sig = (CORE.substr([v_sig, 1], 0));
										}, function () {
											return p5pkg['Perlito5::AST::Apply'].length([v_sig], 0)
										}, false, '', 0)
									})();
									throw(p5context([(p5str(v_code) + '([' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([List_out])), 0) + '], ' + p5str(( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want')))) + ')')], p5want));
								})();
							}
							})();
							var List_args = [];
							List_args = [];
							var v_arg_list;
							v_arg_list = (p5pkg['Perlito5::Javascript3'].to_list_preprocess(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0));
							p5for(p5make_package('main'), "v__", function () {
									List_args.p5push(p5list_to_a([p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level], 1)]));
								}, p5list_to_a([p5array_deref((v_arg_list || (v_arg_list = new p5ArrayRef([]))), 'Perlito5::AST::Apply')]), false, '');
							var v_arg_code;
							v_arg_code = (( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'scalar') ? ('[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([List_args])), 0) + ']') : ('p5param_list(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_javascript3', [v_level, 'list', 'lvalue'], 1));
	}, p5list_to_a([p5array_deref((v_arg_list || (v_arg_list = new p5ArrayRef([]))), 'Perlito5::AST::Apply')]))])), 0) + ')')));
							(function () {
								if ( p5bool(v_may_need_autoload) ) {
								(function () {
									var v_name;
									v_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5make_package('Perlito5')['v_PKG_NAME']
											}));
									throw(p5context([('p5call_sub(' + '"' + p5str(v_namespace) + '", ' + '"' + p5str(v_name) + '", ' + p5str(v_arg_code) + ', ' + p5str(( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want')))) + ')')], p5want));
								})();
							}
							})();
							return (p5context([(p5str(v_code) + '(' + p5str(v_arg_code) + ', ' + p5str(( (p5str(v_wantarray) == 'list') ? '1' : ( (p5str(v_wantarray) == 'scalar') ? '0' : ( (p5str(v_wantarray) == 'void') ? 'null' : 'p5want')))) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4231._prototype_ = null;
					return tmp4231
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_javascript3', (function () {
					var tmp4232;
					tmp4232 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						var v_body;
						v_body = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'needs_return', 0, 'create_context', 1]), 0));
						var v_s;
						v_s = (('if ( ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool([v_cond, (p5num(v_level) + 1)], 0)) + ' ) {' + String.fromCharCode(10) + p5str(p5call(v_body, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}'));
						(function () {
								if ( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], p5want), 'Perlito5::AST::If'))) ) {
								(function () {
									var v_otherwise;
									v_otherwise = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], 1), 'needs_return', 0, 'create_context', 1]), 0));
									v_s = ((p5str(v_s) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + 'else {' + String.fromCharCode(10) + p5str(p5call(v_otherwise, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}'));
								})();
							}
							})();
						return (p5context([v_s], p5want));
					};
					tmp4232._prototype_ = null;
					return tmp4232
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_javascript3', (function () {
					var tmp4233;
					tmp4233 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						var v_body;
						v_body = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'needs_return', 0, 'create_context', 1]), 0));
						var v_expr;
						v_expr = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'infix:<==>', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Var', 'new', ['sigil', '$', 'namespace', '', 'name', '_'], 1), v_cond])))]), 0));
						var v_label;
						v_label = ('');
						var v_s;
						v_s = (('if ( ' + p5str(p5pkg['Perlito5::Javascript3'].to_bool([v_expr, (p5num(v_level) + 1)], 0)) + ' ) {' + String.fromCharCode(10) + p5str(p5call(v_body, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + 'throw(new p5_error("next", "' + p5str(v_label) + '"))' + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}'));
						return (p5context([v_s], p5want));
					};
					tmp4233._prototype_ = null;
					return tmp4233
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_javascript3', (function () {
					var tmp4234;
					tmp4234 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						return (p5context([('p5while(' + 'function () {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'needs_return', 0, 'top_level', 0]), 0)], 0), 'emit_javascript3', [(p5num(v_level) + 2)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + p5str(p5pkg['Perlito5::Javascript3'].emit_function_javascript3([v_level, 0, v_cond], 0)) + ', ' + p5str(p5pkg['Perlito5::AST::Block'].emit_javascript3_continue([v_self, v_level], 0)) + ', ' + '"' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})) + '"' + ')')], p5want));
					};
					tmp4234._prototype_ = null;
					return tmp4234
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_javascript3', (function () {
					var tmp4235;
					tmp4235 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								(function () {
									var v_body;
									v_body = (p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'needs_return', 0, 'create_context', 1]), 0));
									throw(p5context([('for ( ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + ' ') : ' ')) + ') {' + String.fromCharCode(10) + p5str(p5call(v_body, 'emit_javascript3', [(p5num(v_level) + 1)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}')], p5want));
								})();
							}
							})();
							var v_cond;
							v_cond = (p5pkg['Perlito5::Javascript3'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')]))), (p5num(v_level) + 1)]), 0));
							return (function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic')) ) {
								var v_v;
								v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'));
								var v_sig;
								v_sig = (p5call(v_v, 'emit_javascript3', [(p5num(v_level) + 1)], 0));
								(function () {
									throw(p5context([('p5for_lex(' + ('function (' + p5str(v_sig) + ') {' + String.fromCharCode(10)) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'needs_return', 0, 'top_level', 0]), 0)], 0), 'emit_javascript3', [(p5num(v_level) + 2)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + p5str(v_cond) + ', ' + p5str(p5pkg['Perlito5::AST::Block'].emit_javascript3_continue([v_self, v_level], 0)) + ', ' + '"' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})) + '"' + ')')], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('p5for(' + p5str(p5pkg['Perlito5::Javascript3'].pkg([], 0)) + ', ' + 'function () {' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'needs_return', 0, 'top_level', 0]), 0)], 0), 'emit_javascript3', [(p5num(v_level) + 2)], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + '}, ' + p5str(v_cond) + ', ' + p5str(p5pkg['Perlito5::AST::Block'].emit_javascript3_continue([v_self, v_level], 0)) + ', ' + '"' + p5str(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
	return ''
})) + '"' + ')')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4235._prototype_ = null;
					return tmp4235
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_javascript3', (function () {
					var tmp4236;
					tmp4236 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_s;
							v_s = (('function (List__, p5want) {' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([(p5num(v_level) + 1)], 0)) + 'List__ = new p5Array(List__);' + String.fromCharCode(10) + p5str(p5call(p5context([p5call('Perlito5::Javascript3::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('block'), 'needs_return', 1, 'top_level', 1]), 0)], 0), 'emit_javascript3', [v_level], 0)) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Javascript3'].tab([v_level], 0)) + '}'));
							return (function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) ) {
								(function () {
									throw(p5context([('p5typeglob_set("' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '", "' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) + '", ' + p5str(v_s) + ')')], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([v_s], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4236._prototype_ = null;
					return tmp4236
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_javascript3', (function () {
					var tmp4237;
					tmp4237 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
						return (p5context([('// ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')) + String.fromCharCode(10))], p5want));
					};
					tmp4237._prototype_ = null;
					return tmp4237
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::Javascript3::Emitter
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript3::Runtime');
		p5typeglob_set('Perlito5::Javascript3::Runtime', 'emit_javascript3', (function () {
			var tmp4238;
			tmp4238 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript3/Runtime.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Runtime for "Perlito" Perl5-in-Javascript3' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + 'var isNode = typeof require != "undefined";' + String.fromCharCode(10) + String.fromCharCode(10) + 'if (typeof p5pkg !== "object") {' + String.fromCharCode(10) + '    p5pkg = {};' + String.fromCharCode(10) + '    p5LOCAL = [];' + String.fromCharCode(10) + String.fromCharCode(10) + '    var universal = function () {};' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL = new universal();' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL._ref_ = "UNIVERSAL";' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL.isa = function (List__) {' + String.fromCharCode(10) + '        // TODO - use @ISA' + String.fromCharCode(10) + '        var o = List__[0];' + String.fromCharCode(10) + '        var s = p5str(List__[1]);' + String.fromCharCode(10) + '        if (o instanceof p5Scalar) {' + String.fromCharCode(10) + '            o = o.FETCH();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o._class_._ref_ == s' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL.can = function (List__) {' + String.fromCharCode(10) + '        var o = List__[0];' + String.fromCharCode(10) + '        var s = p5str(List__[1]);' + String.fromCharCode(10) + '        if (o instanceof p5Scalar) {' + String.fromCharCode(10) + '            o = o.FETCH();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if ( s.indexOf("::") == -1 ) {' + String.fromCharCode(10) + '            return p5method_lookup(s, o._class_._ref__, {})' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = s.split("::");' + String.fromCharCode(10) + '        s = c.pop(); ' + String.fromCharCode(10) + '        return p5method_lookup(s, c.join("::"), {});' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5pkg.UNIVERSAL.DOES = p5pkg.UNIVERSAL.can;' + String.fromCharCode(10) + String.fromCharCode(10) + '    var core = function () {};' + String.fromCharCode(10) + '    p5pkg["CORE"] = new core();' + String.fromCharCode(10) + '    p5pkg["CORE"]._ref_ = "CORE";' + String.fromCharCode(10) + String.fromCharCode(10) + '    var core_global = function () {};' + String.fromCharCode(10) + '    core_global.prototype = p5pkg.CORE;' + String.fromCharCode(10) + '    p5pkg["CORE::GLOBAL"] = new core_global();' + String.fromCharCode(10) + '    p5pkg["CORE::GLOBAL"]._ref_ = "CORE::GLOBAL";' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5_error = function (type, v) {' + String.fromCharCode(10) + '        this.type = type;' + String.fromCharCode(10) + '        this.v = this.message = v;' + String.fromCharCode(10) + '        this.toString = function(){' + String.fromCharCode(10) + '            if (this.type == ' + String.fromCharCode(39) + 'break' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                return ' + String.fromCharCode(39) + 'Can' + String.fromCharCode(92) + String.fromCharCode(39) + 't "break" outside a given block' + String.fromCharCode(39) + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (this.type == ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ' || this.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ' || this.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (this.v == "") { return ' + String.fromCharCode(39) + 'Can' + String.fromCharCode(92) + String.fromCharCode(39) + 't "' + String.fromCharCode(39) + ' + this.type + ' + String.fromCharCode(39) + '" outside a loop block' + String.fromCharCode(39) + ' }' + String.fromCharCode(10) + '                return ' + String.fromCharCode(39) + 'Label not found for "' + String.fromCharCode(39) + ' + this.type + ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' + this.v + ' + String.fromCharCode(39) + '"' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return this.v;' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5_error.prototype = Error.prototype;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5make_package(pkg_name) {' + String.fromCharCode(10) + '    if (!p5pkg.hasOwnProperty(pkg_name)) {' + String.fromCharCode(10) + '        var tmp = function () {};' + String.fromCharCode(10) + '        tmp.prototype = p5pkg["CORE::GLOBAL"];' + String.fromCharCode(10) + '        p5pkg[pkg_name] = new tmp();' + String.fromCharCode(10) + '        p5pkg[pkg_name]._ref_ = pkg_name;' + String.fromCharCode(10) + '        p5pkg[pkg_name]._class_ = p5pkg[pkg_name];  // XXX memory leak' + String.fromCharCode(10) + String.fromCharCode(10) + '        // TODO - add the other package global variables' + String.fromCharCode(10) + '        p5pkg[pkg_name]["List_ISA"] = new p5Array([]);' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_a"] = new p5Scalar(null);' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_b"] = new p5Scalar(null);' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v__"] = new p5Scalar(null);' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_AUTOLOAD"] = new p5Scalar(null);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg[pkg_name];' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5code_lookup_by_name(package_name, sub_name) {' + String.fromCharCode(10) + '    // sub_name can have an optional namespace' + String.fromCharCode(10) + '    var parts = sub_name.split(/::/);' + String.fromCharCode(10) + '    if (parts.length > 1) {' + String.fromCharCode(10) + '        sub_name = parts.pop();' + String.fromCharCode(10) + '        package_name = parts.join("::");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (p5pkg.hasOwnProperty(package_name)) {' + String.fromCharCode(10) + '        var c = p5pkg[package_name];' + String.fromCharCode(10) + '        if ( c.hasOwnProperty(sub_name) ) {' + String.fromCharCode(10) + '            return c[sub_name]' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return null;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5get_class_for_method(method, class_name, seen) {' + String.fromCharCode(10) + '    // default mro' + String.fromCharCode(10) + '    // TODO - cache the methods that were already looked up' + String.fromCharCode(10) + '    if ( p5pkg[class_name].hasOwnProperty(method) ) {' + String.fromCharCode(10) + '        return class_name' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var isa = p5pkg[class_name].List_ISA;' + String.fromCharCode(10) + '    for (var i = 0; i < isa.length; i++) {' + String.fromCharCode(10) + '        if (!seen[isa[i]]) {' + String.fromCharCode(10) + '            var m = p5get_class_for_method(method, isa[i], seen);' + String.fromCharCode(10) + '            if (m) {' + String.fromCharCode(10) + '                return m ' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            seen[isa[i]]++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5method_lookup(method, class_name, seen) {' + String.fromCharCode(10) + '    var c = p5get_class_for_method(method, class_name, seen);' + String.fromCharCode(10) + '    if (c) {' + String.fromCharCode(10) + '        return p5pkg[c][method]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if ( p5pkg.UNIVERSAL.hasOwnProperty(method) ) {' + String.fromCharCode(10) + '        return p5pkg.UNIVERSAL[method]' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5call(invocant, method, list, p5want) {' + String.fromCharCode(10) + '    list.unshift(invocant);' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (invocant instanceof p5Scalar) {' + String.fromCharCode(10) + '        // TODO - move p5call() to p5Scalar method' + String.fromCharCode(10) + '        invocant = invocant.FETCH();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    if ( invocant.hasOwnProperty("_class_") ) {' + String.fromCharCode(10) + String.fromCharCode(10) + '        if ( invocant._class_.hasOwnProperty(method) ) {' + String.fromCharCode(10) + '            return invocant._class_[method](list, p5want)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var m = p5method_lookup(method, invocant._class_._ref_, {});' + String.fromCharCode(10) + '        if (m) {' + String.fromCharCode(10) + '            return m(list, p5want)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // method can have an optional namespace' + String.fromCharCode(10) + '        var pkg_name = method.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            var name = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '            m = p5method_lookup(name, pkg_name, {});' + String.fromCharCode(10) + '            if (m) {' + String.fromCharCode(10) + '                return m(list, p5want)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            p5pkg.CORE.die(["method not found: ", name, " in class ", pkg_name]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        pkg_name = p5get_class_for_method(' + String.fromCharCode(39) + 'AUTOLOAD' + String.fromCharCode(39) + ', invocant._class_._ref_, {}) || p5get_class_for_method(' + String.fromCharCode(39) + 'AUTOLOAD' + String.fromCharCode(39) + ', "UNIVERSAL", {});' + String.fromCharCode(10) + '        if (pkg_name) {' + String.fromCharCode(10) + '            p5pkg[pkg_name]["v_AUTOLOAD"] = invocant._class_._ref_ + "::" + method;' + String.fromCharCode(10) + '            return p5pkg[pkg_name]["AUTOLOAD"](list, p5want);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        p5pkg.CORE.die(["method not found: ", method, " in class ", invocant._class_._ref_]);' + String.fromCharCode(10) + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // the invocant doesn' + String.fromCharCode(39) + 't have a class' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (typeof invocant === "string") {' + String.fromCharCode(10) + '        var aclass = p5make_package(invocant);' + String.fromCharCode(10) + '        return p5call(aclass, method, list, p5want);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5pkg.CORE.die(["Can' + String.fromCharCode(39) + 't call method ", method, " on unblessed reference"]);' + String.fromCharCode(10) + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5call_sub(namespace, name, list, p5want) {' + String.fromCharCode(10) + '    if(p5pkg[namespace].hasOwnProperty(name)) {' + String.fromCharCode(10) + '        return p5pkg[namespace][name](list, p5want)' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if(p5pkg[namespace].hasOwnProperty("AUTOLOAD")) {' + String.fromCharCode(10) + '        p5pkg[namespace]["v_AUTOLOAD"] = namespace + "::" + name;' + String.fromCharCode(10) + '        return p5pkg[namespace]["AUTOLOAD"](list, p5want)' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    p5pkg.CORE.die(["Undefined subroutine &" + namespace + "::" + name]);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5scalar_deref(v) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = p5pkg["Perlito5"].v_PKG_NAME;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = v.charCodeAt(0);' + String.fromCharCode(10) + '        if (c < 27) {' + String.fromCharCode(10) + '            v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '            pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return p5pkg[pkg_name]["v_"+v];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return v._scalar_;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5scalar_deref_set(v, n) {' + String.fromCharCode(10) + '    if (typeof v === "string") {' + String.fromCharCode(10) + '        var pkg_name = v.split(/::/);' + String.fromCharCode(10) + '        if (pkg_name.length > 1) {' + String.fromCharCode(10) + '            v = pkg_name.pop();' + String.fromCharCode(10) + '            pkg_name = pkg_name.join("::");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            pkg_name = p5pkg["Perlito5"].v_PKG_NAME;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var c = v.charCodeAt(0);' + String.fromCharCode(10) + '        if (c < 27) {' + String.fromCharCode(10) + '            v = String.fromCharCode(c + 64) + v.substr(1);' + String.fromCharCode(10) + '            pkg_name = ' + String.fromCharCode(39) + 'main' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        p5pkg[pkg_name]["v_"+v] = n;' + String.fromCharCode(10) + '        return p5pkg[pkg_name]["v_"+v];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    v._scalar_ = n;' + String.fromCharCode(10) + '    return v._scalar_;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5make_package("main");' + String.fromCharCode(10) + 'p5make_package("Perlito5");' + String.fromCharCode(10) + 'p5pkg["Perlito5"].v_PKG_NAME = "main";' + String.fromCharCode(10) + 'p5pkg["main"]["v_@"]       = new p5Scalar("");  // $@' + String.fromCharCode(10) + 'p5pkg["main"]["v_|"]       = new p5Scalar(0);   // $|' + String.fromCharCode(10) + 'p5pkg["main"]["List_#"]    = new p5Array([]);   // @#' + String.fromCharCode(10) + 'p5scalar_deref_set(String.fromCharCode(15), isNode ? "node.js" : "javascript2");  // $^O' + String.fromCharCode(10) + 'p5pkg["main"]["List_INC"]  = new p5Array([]);' + String.fromCharCode(10) + 'p5pkg["main"]["Hash_INC"]  = new p5Hash({});' + String.fromCharCode(10) + 'p5pkg["main"]["List_ARGV"] = new p5Array([]);' + String.fromCharCode(10) + 'p5pkg["main"]["Hash_ENV"]  = new p5Hash({});' + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + '    p5pkg["main"]["List_ARGV"] = new p5Array(process.argv.splice(2));' + String.fromCharCode(10) + '    p5pkg["main"]["Hash_ENV"]  = new p5Hash(process.env);' + String.fromCharCode(10) + '    p5pkg["main"]["v_$"]       = new p5Scalar(process.pid);' + String.fromCharCode(10) + '} else if (typeof arguments === "object") {' + String.fromCharCode(10) + '    p5pkg["main"]["List_ARGV"] = new p5Array(arguments);' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5make_package("Perlito5::IO");' + String.fromCharCode(10) + 'p5make_package("Perlito5::Runtime");' + String.fromCharCode(10) + 'p5make_package("Perlito5::Grammar");' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5typeglob_set(pkg_name, sub_name, func) {' + String.fromCharCode(10) + '    p5make_package(pkg_name);' + String.fromCharCode(10) + '    p5pkg[pkg_name][sub_name] = func;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5set_glob(name, data) {' + String.fromCharCode(10) + '    if ( name.indexOf("::") == -1 ) {' + String.fromCharCode(10) + '        p5pkg[ p5pkg["Perlito5"].v_PKG_NAME.FETCH() ][name] = data;' + String.fromCharCode(10) + '        return data;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var c = name.split("::");' + String.fromCharCode(10) + '    s = c.pop(); ' + String.fromCharCode(10) + '    var pkg = c.join("::");' + String.fromCharCode(10) + '    p5make_package(pkg);' + String.fromCharCode(10) + '    p5pkg[pkg][s] = data;' + String.fromCharCode(10) + '    return data;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'var sigils = { ' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + 'List_' + String.fromCharCode(39) + ', ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + 'Hash_' + String.fromCharCode(39) + ', ' + String.fromCharCode(39) + '$' + String.fromCharCode(39) + ' : ' + String.fromCharCode(39) + 'v_' + String.fromCharCode(39) + ' };' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5set_local(namespace, name, sigil) {' + String.fromCharCode(10) + '    var vname = sigils[sigil] + name;' + String.fromCharCode(10) + '    p5LOCAL.push([namespace, vname, namespace[vname]]);' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (sigil == ' + String.fromCharCode(39) + '$' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        namespace[vname] = new p5Scalar(null);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else if (sigil == ' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        namespace[vname] = new p5Array([]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else if (sigil == ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        namespace[vname] = new p5Hash({});' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return namespace[vname];' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5cleanup_local(idx, value) {' + String.fromCharCode(10) + '    while (p5LOCAL.length > idx) {' + String.fromCharCode(10) + '        l = p5LOCAL.pop();' + String.fromCharCode(10) + '        l[0][l[1]] = l[2];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return value;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5global(sigil, namespace, name) {' + String.fromCharCode(10) + '    // TODO - autovivify namespace' + String.fromCharCode(10) + '    var vname = sigils[sigil] + name;' + String.fromCharCode(10) + '    var v = p5pkg[namespace][vname];' + String.fromCharCode(10) + '    if (v != null) {' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (sigil == ' + String.fromCharCode(39) + '$' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        p5pkg[namespace][vname] = new p5Scalar(null);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else if (sigil == ' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        p5pkg[namespace][vname] = new p5Array([]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else if (sigil == ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '        p5pkg[namespace][vname] = new p5Hash({});' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg[namespace][vname];' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5HashRef(o) {' + String.fromCharCode(10) + '    this._href_ = o;' + String.fromCharCode(10) + '    this._ref_ = "HASH";' + String.fromCharCode(10) + '    this.p5bool = function() { return 1 };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return "HASH(0x0000)";  // TODO' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.hderef = function() {' + String.fromCharCode(10) + '        return this._href_;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.hset = function(i, v) {' + String.fromCharCode(10) + '        return this._href_.hset(i, v);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.hget = function(i, autoviv) {' + String.fromCharCode(10) + '        return this._href_.hget(i, autoviv);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5ArrayRef(o) {' + String.fromCharCode(10) + '    this._aref_ = o;' + String.fromCharCode(10) + '    this._ref_ = "ARRAY";' + String.fromCharCode(10) + '    this.p5bool = function() { return 1 };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return "ARRAY(0x0000)";  // TODO' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.aderef = function() {' + String.fromCharCode(10) + '        return this._aref_;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.aset = function(i, v) {' + String.fromCharCode(10) + '        return this._aref_.aset(i, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.aget = function(i, autoviv) {' + String.fromCharCode(10) + '        return this._aref_.aget(i, autoviv);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5ScalarRef(o) {' + String.fromCharCode(10) + '    this._scalar_ = o;' + String.fromCharCode(10) + '    this._ref_ = "SCALAR";' + String.fromCharCode(10) + '    this.p5bool = function() { return 1 };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return "SCALAR(0x0000)";  // TODO' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.sderef = function() {' + String.fromCharCode(10) + '        return this._scalar_;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5GlobRef(o) {' + String.fromCharCode(10) + '    this._scalar_ = o;' + String.fromCharCode(10) + '    this._ref_ = "GLOB";' + String.fromCharCode(10) + '    this.p5bool = function() { return 1 };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return "GLOB(0x0000)";  // TODO' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5Array(o) {' + String.fromCharCode(10) + '    // TODO - array slice' + String.fromCharCode(10) + '    this._array_ = o;' + String.fromCharCode(10) + '    this._ref_ = "";' + String.fromCharCode(10) + '    this.p5bool = function() {' + String.fromCharCode(10) + '        return this._array_.length != 0' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return ' + String.fromCharCode(39) + String.fromCharCode(39) + ' + this._array_.length;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5num = function() {' + String.fromCharCode(10) + '        return this._array_.length;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.aset = function(i, v) {' + String.fromCharCode(10) + '        if (i < 0) {' + String.fromCharCode(10) + '            i = this._array_.length + i;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (this._array_[i] instanceof p5Scalar) {' + String.fromCharCode(10) + '            this._array_[i].assign(v);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            if (v instanceof p5Scalar) {' + String.fromCharCode(10) + '                this._array_[i] = v.FETCH();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                this._array_[i] = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.aget = function(i, autoviv) {' + String.fromCharCode(10) + '        if (i < 0) {' + String.fromCharCode(10) + '            i = this._array_.length + i;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (autoviv) {' + String.fromCharCode(10) + '            if (autoviv == ' + String.fromCharCode(39) + 'lvalue' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (this._array_.length < i) {' + String.fromCharCode(10) + '                    // don' + String.fromCharCode(39) + 't vivify yet; create a proxy object' + String.fromCharCode(10) + '                    return new p5ArrayProxy(this, i);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                if (!(this._array_[i] instanceof p5Scalar)) {' + String.fromCharCode(10) + '                    this._array_[i] = new p5Scalar(this._array_[i]);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (autoviv == ' + String.fromCharCode(39) + 'array' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (!(this._array_[i] instanceof p5ArrayRef) &&' + String.fromCharCode(10) + '                    !(this._array_[i] instanceof p5Scalar))' + String.fromCharCode(10) + '                {' + String.fromCharCode(10) + '                    this._array_[i] = new p5ArrayRef(new p5Array([]));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (autoviv == ' + String.fromCharCode(39) + 'hash' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (!(this._array_[i] instanceof p5HashRef) &&' + String.fromCharCode(10) + '                    !(this._array_[i] instanceof p5Scalar))' + String.fromCharCode(10) + '                {' + String.fromCharCode(10) + '                    this._array_[i] = new p5HashRef(new p5Hash({}));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_[i];' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.get_values = function(o) {' + String.fromCharCode(10) + '        // add values to the param (a native js list)' + String.fromCharCode(10) + '        for(var i = 0; i < this._array_.length; i++) {' + String.fromCharCode(10) + '            o.push(this._array_[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.get_lvalues = function(o) {' + String.fromCharCode(10) + '        // add lvalues to the param (a native js list)' + String.fromCharCode(10) + '        for(var i = 0; i < this._array_.length; i++) {' + String.fromCharCode(10) + '            o.push(this._array_[i] instanceof p5Scalar ? this._array_[i] : this.aget(i, "lvalue"));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.assign = function(a) {' + String.fromCharCode(10) + '        if (a instanceof Array) {' + String.fromCharCode(10) + '            // TODO - cleanup, this shouldn' + String.fromCharCode(39) + 't happen' + String.fromCharCode(10) + '            this._array_ = a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this._array_ = a._array_;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    // operations that can be tie()' + String.fromCharCode(10) + '    this.FETCHSIZE = function() {' + String.fromCharCode(10) + '        return this._array_.length;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.PUSH = function(v) {' + String.fromCharCode(10) + '        for(var i = 0; i < v._array_.length; i++) {' + String.fromCharCode(10) + '            this._array_.push(v._array_[i] instanceof p5Scalar ? v._array_[i].FETCH() :  v._array_[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_.length;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.UNSHIFT = function(v) {' + String.fromCharCode(10) + '        for(var i = v._array_.length-1; i >= 0; i--) {' + String.fromCharCode(10) + '            this._array_.unshift(v._array_[i] instanceof p5Scalar ? v._array_[i].FETCH() :  v._array_[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_.length;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.POP = function() {' + String.fromCharCode(10) + '        if (this._array_.length == null) {' + String.fromCharCode(10) + '            return null;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_.pop();' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.SHIFT = function(v) {' + String.fromCharCode(10) + '        if (this._array_.length == null) {' + String.fromCharCode(10) + '            return null;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._array_.shift();' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5Hash(o) {' + String.fromCharCode(10) + '    // TODO - hash slice' + String.fromCharCode(10) + '    this._hash_ = o;' + String.fromCharCode(10) + '    this._ref_ = "";' + String.fromCharCode(10) + '    this.p5bool = function() {' + String.fromCharCode(10) + '        o = this._hash_;' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return ' + String.fromCharCode(39) + String.fromCharCode(39) + ' + this.p5num() + ' + String.fromCharCode(39) + '/8' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5num = function() {' + String.fromCharCode(10) + '        var out = 0;' + String.fromCharCode(10) + '        for (var i in this._hash_) {' + String.fromCharCode(10) + '            out++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return out;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.exists = function(i) {' + String.fromCharCode(10) + '        return this._hash_.hasOwnProperty(i);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.hset = function(i, v) {' + String.fromCharCode(10) + '        if (this._hash_[i] instanceof p5Scalar) {' + String.fromCharCode(10) + '            this._hash_[i].assign(v);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            if (v instanceof p5Scalar) {' + String.fromCharCode(10) + '                this._hash_[i] = v.FETCH();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                this._hash_[i] = v;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.hget = function(i, autoviv) {' + String.fromCharCode(10) + '        if (autoviv) {' + String.fromCharCode(10) + '            if (autoviv == ' + String.fromCharCode(39) + 'lvalue' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (! this._hash_.hasOwnProperty(i)) {' + String.fromCharCode(10) + '                    // don' + String.fromCharCode(39) + 't autovivify yet; create a proxy object' + String.fromCharCode(10) + '                    return new p5HashProxy(this, i);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                if (!(this._hash_[i] instanceof p5Scalar)) {' + String.fromCharCode(10) + '                    this._hash_[i] = new p5Scalar(this._hash_[i]);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (autoviv == ' + String.fromCharCode(39) + 'array' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (!(this._hash_[i] instanceof p5ArrayRef) &&' + String.fromCharCode(10) + '                    !(this._hash_[i] instanceof p5Scalar))' + String.fromCharCode(10) + '                {' + String.fromCharCode(10) + '                    this._hash_[i] = new p5ArrayRef(new p5Array([]));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if (autoviv == ' + String.fromCharCode(39) + 'hash' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                if (!(this._hash_[i] instanceof p5HashRef) &&' + String.fromCharCode(10) + '                    !(this._hash_[i] instanceof p5Scalar))' + String.fromCharCode(10) + '                {' + String.fromCharCode(10) + '                    this._hash_[i] = new p5HashRef(new p5Hash({}));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._hash_[i];' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.get_values = function(o) {' + String.fromCharCode(10) + '        // add a native list of values to the param' + String.fromCharCode(10) + '        for (var i in this._hash_) {' + String.fromCharCode(10) + '            o.push(i);' + String.fromCharCode(10) + '            o.push(this._hash_[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.get_lvalues = function(o) {' + String.fromCharCode(10) + '        // add a native list of lvalues to the param' + String.fromCharCode(10) + '        for (var i in this._hash_) {' + String.fromCharCode(10) + '            o.push(i);' + String.fromCharCode(10) + '            o.push(this._hash_[i] instanceof p5Scalar ? this._hash_[i] : this.hget(i, "lvalue"));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.assign = function(h) {' + String.fromCharCode(10) + '        if (h instanceof p5Hash) {' + String.fromCharCode(10) + '            this._hash_ = h._hash_;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // TODO - cleanup, this shouldn' + String.fromCharCode(39) + 't happen' + String.fromCharCode(10) + '            this._hash_ = h;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5Scalar(o) {' + String.fromCharCode(10) + '    this._v_ = o;' + String.fromCharCode(10) + '    this._ref_ = "";' + String.fromCharCode(10) + String.fromCharCode(10) + '    // be a value' + String.fromCharCode(10) + '    this.p5bool = function() {' + String.fromCharCode(10) + '        return p5bool(this._v_);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5string = function() {' + String.fromCharCode(10) + '        return p5str(this._v_);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5num = function() {' + String.fromCharCode(10) + '        return p5num(this._v_);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5code = function() {' + String.fromCharCode(10) + '        return p5code(this._v_);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5incr = function() {' + String.fromCharCode(10) + '        this._v_ = p5incr(this._v_);' + String.fromCharCode(10) + '        return this._v_;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5postincr = function() {' + String.fromCharCode(10) + '        var v = this._v_;' + String.fromCharCode(10) + '        this._v_ = p5incr(this._v_);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5decr = function() {' + String.fromCharCode(10) + '        this._v_ = p5decr(this._v_);' + String.fromCharCode(10) + '        return this._v_;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.p5postdecr = function() {' + String.fromCharCode(10) + '        var v = this._v_;' + String.fromCharCode(10) + '        this._v_ = p5decr(this._v_);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    // be a scalar ref' + String.fromCharCode(10) + '    this.sderef = function(i) {' + String.fromCharCode(10) + '        // TODO - autovivify scalar (with proxy object?)' + String.fromCharCode(10) + '        return this._v_.sderef();' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    // be an array ref' + String.fromCharCode(10) + '    this.aderef = function() {' + String.fromCharCode(10) + '        // TODO - autovivify array (with proxy object?)' + String.fromCharCode(10) + '        return this._v_.aderef();' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.aget = function(i, autoviv) {' + String.fromCharCode(10) + '        // TODO - autovivify array (with proxy object?)' + String.fromCharCode(10) + '        if (this._v_ == null) {' + String.fromCharCode(10) + '            this._v_ = new p5ArrayRef(new p5Array([]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._v_.aget(i, autoviv);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.aset = function(i, v) {' + String.fromCharCode(10) + '        if (this._v_ == null) {' + String.fromCharCode(10) + '            this._v_ = new p5ArrayRef(new p5Array([]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._v_.aset(i, v);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    // be a hash ref' + String.fromCharCode(10) + '    this.hderef = function() {' + String.fromCharCode(10) + '        // TODO - autovivify hash (with proxy object?)' + String.fromCharCode(10) + '        if (this._v_ == null) {' + String.fromCharCode(10) + '            this._v_ = new p5HashRef(new p5Hash([]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._v_.hderef();' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.hget = function(i, autoviv) {' + String.fromCharCode(10) + '        // TODO - autovivify hash (with proxy object?)' + String.fromCharCode(10) + '        if (this._v_ == null) {' + String.fromCharCode(10) + '            this._v_ = new p5HashRef(new p5Hash([]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._v_.hget(i, autoviv);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    this.hset = function(i, v) {' + String.fromCharCode(10) + '        if (this._v_ == null) {' + String.fromCharCode(10) + '            this._v_ = new p5HashRef(new p5Hash([]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._v_.hset(i, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // be a container' + String.fromCharCode(10) + '    this.get_values = function(o) {' + String.fromCharCode(10) + '        // add a native list of values to the param' + String.fromCharCode(10) + '        o.push(this);' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.get_lvalues = function(o) {' + String.fromCharCode(10) + '        // add a native list of lvalues to the param' + String.fromCharCode(10) + '        o.push(this);' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    this.assign = function(v) {' + String.fromCharCode(10) + '        if (v instanceof p5Scalar) {' + String.fromCharCode(10) + '            this._v_ = v.FETCH();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this._v_ = v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    // operations that can be tie()' + String.fromCharCode(10) + '    this.FETCH = function() {' + String.fromCharCode(10) + '        // not an lvalue' + String.fromCharCode(10) + '        return this._v_;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5HashProxy(h, k) {' + String.fromCharCode(10) + '    this._hashobj_ = h;' + String.fromCharCode(10) + '    this._key_ = k;' + String.fromCharCode(10) + '    this._v_ = null;' + String.fromCharCode(10) + '    this.assign = function(v) {' + String.fromCharCode(10) + '        // write-through; alternately, use read-through' + String.fromCharCode(10) + '        if (v instanceof p5Scalar) {' + String.fromCharCode(10) + '            this._v_ = v.FETCH();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this._v_ = v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._hashobj_.hset(this._key_, this._v_);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'p5HashProxy.prototype = new p5Scalar();' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'function p5ArrayProxy(a, k) {' + String.fromCharCode(10) + '    this._arrayobj_ = a;' + String.fromCharCode(10) + '    this._key_ = k;' + String.fromCharCode(10) + '    this._v_ = null;' + String.fromCharCode(10) + '    this.assign = function(v) {' + String.fromCharCode(10) + '        // write-through; alternately, use read-through' + String.fromCharCode(10) + '        if (v instanceof p5Scalar) {' + String.fromCharCode(10) + '            this._v_ = v.FETCH();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this._v_ = v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this._arrayobj_.aset(this._key_, this._v_);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'p5ArrayProxy.prototype = new p5Scalar();' + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10) + 'p5param_list = function() {' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    for (i = 0; i < arguments.length; i++) {' + String.fromCharCode(10) + '        if (arguments[i] == null) {' + String.fromCharCode(10) + '            res.push(null)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (arguments[i].hasOwnProperty("get_lvalues")) {' + String.fromCharCode(10) + '            // container' + String.fromCharCode(10) + '            arguments[i].get_lvalues(res);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (arguments[i] instanceof Array) {' + String.fromCharCode(10) + '            // js Array -- possibly generated by p5context()' + String.fromCharCode(10) + '            // maybe too late to get lvalues -- needs more testing' + String.fromCharCode(10) + '            // this doesn' + String.fromCharCode(39) + 't handle nested Array' + String.fromCharCode(10) + '            o = arguments[i];' + String.fromCharCode(10) + '            for (j = 0; j < o.length; j++) {' + String.fromCharCode(10) + '                res.push(o[j]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // non-container' + String.fromCharCode(10) + '            res.push(arguments[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5list_to_a = function() {' + String.fromCharCode(10) + '    var res = [];' + String.fromCharCode(10) + '    for (i = 0; i < arguments.length; i++) {' + String.fromCharCode(10) + '        if (arguments[i] == null) {' + String.fromCharCode(10) + '            res.push(null)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (arguments[i].hasOwnProperty("get_values")) {' + String.fromCharCode(10) + '            // container' + String.fromCharCode(10) + '            arguments[i].get_values(res);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (arguments[i] instanceof Array) {' + String.fromCharCode(10) + '            // js Array -- possibly generated by p5context()' + String.fromCharCode(10) + '            o = arguments[i];' + String.fromCharCode(10) + '            for (j = 0; j < o.length; j++) {' + String.fromCharCode(10) + '                res.push(o[j]);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // non-container' + String.fromCharCode(10) + '            res.push(arguments[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5a_to_h = function(a) {' + String.fromCharCode(10) + '    var res = {};' + String.fromCharCode(10) + '    for (i = 0; i < a.length; i+=2) {' + String.fromCharCode(10) + '        res[p5str(a[i])] = a[i+1];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return res;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + '    var fs = require("fs");' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5context = function(List__, p5want) {' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        return p5list_to_a.apply(null, List__);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // scalar: return the last value' + String.fromCharCode(10) + '    var o = List__;' + String.fromCharCode(10) + '    while (o instanceof Array) {' + String.fromCharCode(10) + '        o =   o.length' + String.fromCharCode(10) + '            ? o[o.length-1]' + String.fromCharCode(10) + '            : null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5code = function(o) {' + String.fromCharCode(10) + '    if (typeof o === "function") {' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o.p5code();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5str = function(o) {' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "object" && (o instanceof Array)) {' + String.fromCharCode(10) + '        return CORE.join(["", o]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o.p5string === "function") {' + String.fromCharCode(10) + '        return o.p5string();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o == "number" && Math.abs(o) < 0.0001 && o != 0) {' + String.fromCharCode(10) + '        return o.toExponential().replace(/e-(' + String.fromCharCode(92) + 'd)$/,"e-0$1");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "boolean") {' + String.fromCharCode(10) + '        return o ? "1" : "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o !== "string") {' + String.fromCharCode(10) + '        return "" + o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5num = function(o) {' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return 0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "object" && (o instanceof Array)) {' + String.fromCharCode(10) + '        return o.length;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o.p5num === "function") {' + String.fromCharCode(10) + '        return o.p5num();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o !== "number") {' + String.fromCharCode(10) + '        return parseFloat(p5str(o));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5bool = function(o) {' + String.fromCharCode(10) + '    if (o) {' + String.fromCharCode(10) + '        if (typeof o === "boolean") {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o === "number") {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o === "string") {' + String.fromCharCode(10) + '            return o != "" && o != "0";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.p5bool === "function") {' + String.fromCharCode(10) + '            return o.p5bool();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.length === "number") {' + String.fromCharCode(10) + '            return o.length;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (o instanceof Error) {' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return false;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5incr = function(o) {' + String.fromCharCode(10) + '    if (typeof o === "number") {' + String.fromCharCode(10) + '        return o + 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5str_inc(p5str(o));' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5decr = function(o) {' + String.fromCharCode(10) + '    if (typeof o === "number") {' + String.fromCharCode(10) + '        return o - 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5num(o) - 1;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5and = function(a, fb) {' + String.fromCharCode(10) + '    if (p5bool(a)) {' + String.fromCharCode(10) + '        return fb();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return a;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5or = function(a, fb) {' + String.fromCharCode(10) + '    if (p5bool(a)) {' + String.fromCharCode(10) + '        return a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return fb();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5defined_or = function(a, fb) {' + String.fromCharCode(10) + '    if (a == null) {' + String.fromCharCode(10) + '        return fb();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return a;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5cmp = function(a, b) {' + String.fromCharCode(10) + '    return a > b ? 1 : a < b ? -1 : 0 ' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5complement = function(a) {' + String.fromCharCode(10) + '    return a < 0 ? ~a : 4294967295 - a' + String.fromCharCode(10) + '    // return a < 0 ? ~a : 18446744073709551615 - a' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5str_replicate = function(o, n) {' + String.fromCharCode(10) + '    n = p5num(n);' + String.fromCharCode(10) + '    return n ? Array(n + 1).join(o) : "";' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5str_inc = function(s) {' + String.fromCharCode(10) + '    s = p5str(s);' + String.fromCharCode(10) + '    if (s.length < 2) {' + String.fromCharCode(10) + '        if (s.match(/[012345678ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxy]/)) {' + String.fromCharCode(10) + '            return String.fromCharCode(s.charCodeAt(0) + 1);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s == "9") {' + String.fromCharCode(10) + '            return "10";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s == "Z") {' + String.fromCharCode(10) + '            return "AA";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s == "z") {' + String.fromCharCode(10) + '            return "aa";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return "1";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var c = p5str_inc(s.substr(s.length-1, 1));' + String.fromCharCode(10) + '    if (c.length == 1) {' + String.fromCharCode(10) + '        return s.substr(0, s.length-1) + c;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5str_inc(s.substr(0, s.length-1)) + c.substr(c.length-1, 1);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5for = function(namespace, func, args, cont, label) {' + String.fromCharCode(10) + '    var _redo = false;' + String.fromCharCode(10) + String.fromCharCode(10) + '    var v_old = namespace["v__"];' + String.fromCharCode(10) + '    namespace["v__"] = new p5Scalar(null);' + String.fromCharCode(10) + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        namespace["v__"].assign(args[i]);   // ??? - should this be a bind?' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            func()' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            if (err instanceof p5_error && err.v == label) {' + String.fromCharCode(10) + '                if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }' + String.fromCharCode(10) + '                else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { i--; _redo = true }' + String.fromCharCode(10) + '                else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                throw(err)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (cont) {' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                if (!_redo) { cont() }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && err.v == label) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }            ' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    namespace["v__"] = v_old;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5for_lex = function(func, args, cont, label) {' + String.fromCharCode(10) + '    var _redo = false;' + String.fromCharCode(10) + '    var _arg  = new p5Scalar(null);' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            _arg.assign(args[i]);' + String.fromCharCode(10) + '            func(_arg)' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            if (err instanceof p5_error && err.v == label) {' + String.fromCharCode(10) + '                if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }' + String.fromCharCode(10) + '                else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { i--; _redo = true }' + String.fromCharCode(10) + '                else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '            }            ' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                throw(err)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (cont) {' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                if (!_redo) { cont() }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && err.v == label) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }            ' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5while = function(func, cond, cont, label) {' + String.fromCharCode(10) + '    var _redo = false;' + String.fromCharCode(10) + '    while (_redo || p5bool(cond())) {' + String.fromCharCode(10) + '        _redo = false;' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            func()' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            if (err instanceof p5_error && err.v == label) {' + String.fromCharCode(10) + '                if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }' + String.fromCharCode(10) + '                else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '            }            ' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                throw(err)' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (cont) {' + String.fromCharCode(10) + '            try {' + String.fromCharCode(10) + '                if (!_redo) { cont() }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            catch(err) {' + String.fromCharCode(10) + '                if (err instanceof p5_error && err.v == label) {' + String.fromCharCode(10) + '                    if (err.type == ' + String.fromCharCode(39) + 'last' + String.fromCharCode(39) + ') { return }' + String.fromCharCode(10) + '                    else if (err.type == ' + String.fromCharCode(39) + 'redo' + String.fromCharCode(39) + ') { _redo = true }' + String.fromCharCode(10) + '                    else if (err.type != ' + String.fromCharCode(39) + 'next' + String.fromCharCode(39) + ') { throw(err) }' + String.fromCharCode(10) + '                }            ' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    throw(err)' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5map = function(namespace, func, args) {' + String.fromCharCode(10) + '    var v_old = namespace["v__"];' + String.fromCharCode(10) + '    namespace["v__"] = new p5Scalar(null);' + String.fromCharCode(10) + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        namespace["v__"].assign(args[i]);' + String.fromCharCode(10) + '        var o = p5list_to_a(func(1));' + String.fromCharCode(10) + '        for(var j = 0; j < o.length; j++) {' + String.fromCharCode(10) + '            out.push(o[j]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    namespace["v__"] = v_old;' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5grep = function(namespace, func, args) {' + String.fromCharCode(10) + '    var v_old = namespace["v__"];' + String.fromCharCode(10) + '    namespace["v__"] = new p5Scalar(null);' + String.fromCharCode(10) + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < args.length; i++) {' + String.fromCharCode(10) + '        namespace["v__"].assign(args[i]);' + String.fromCharCode(10) + '        if (p5bool(func(0))) {' + String.fromCharCode(10) + '            out.push(args[i])' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    namespace["v__"] = v_old;' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'p5sort = function(namespace, func, args) {' + String.fromCharCode(10) + '    var a_old = namespace["v_a"];' + String.fromCharCode(10) + '    var b_old = namespace["v_b"];' + String.fromCharCode(10) + '    namespace["v_a"] = new p5Scalar(null);' + String.fromCharCode(10) + '    namespace["v_b"] = new p5Scalar(null);' + String.fromCharCode(10) + String.fromCharCode(10) + '    var out = ' + String.fromCharCode(10) + '        func == null' + String.fromCharCode(10) + '        ? args.sort()' + String.fromCharCode(10) + '        : args.sort(' + String.fromCharCode(10) + '            function(a, b) {' + String.fromCharCode(10) + '                namespace["v_a"].assign(a);' + String.fromCharCode(10) + '                namespace["v_b"].assign(b);' + String.fromCharCode(10) + '                return func(0);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        );' + String.fromCharCode(10) + '    namespace["v_a"] = a_old;' + String.fromCharCode(10) + '    namespace["v_b"] = b_old;' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'perl5_to_js = function( source, namespace, var_env_js, p5want ) {' + String.fromCharCode(10) + '    // CORE.say(["source: [" + source + "]"]);' + String.fromCharCode(10) + String.fromCharCode(10) + '    var strict_old = p5global("$", "Perlito5", "STRICT").FETCH();' + String.fromCharCode(10) + String.fromCharCode(10) + '    var namespace_old = p5global("$", "Perlito5", "PKG_NAME").FETCH();' + String.fromCharCode(10) + '    p5pkg["Perlito5"].v_PKG_NAME.assign(namespace);' + String.fromCharCode(10) + String.fromCharCode(10) + '    match = p5call(p5pkg["Perlito5::Grammar"], "exp_stmts", [source, 0]);' + String.fromCharCode(10) + String.fromCharCode(10) + '    if ( !p5bool(match) || p5str(match.hget("to")) != source.length ) {' + String.fromCharCode(10) + '        CORE.die(["Syntax error in eval near pos ", match.hget("to") ]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    ast = p5pkg.CORE.bless([' + String.fromCharCode(10) + '        new p5HashRef(new p5Hash({' + String.fromCharCode(10) + '            code: "do",' + String.fromCharCode(10) + '            arguments: [ p5pkg.CORE.bless([' + String.fromCharCode(10) + '                        new p5HashRef(new p5Hash({' + String.fromCharCode(10) + '                            stmts:   p5pkg["Perlito5::Match"].flat([match])' + String.fromCharCode(10) + '                        })),' + String.fromCharCode(10) + '                        p5pkg["Perlito5::AST::Block"]' + String.fromCharCode(10) + '                    ]) ]' + String.fromCharCode(10) + '        })),' + String.fromCharCode(10) + '        p5pkg["Perlito5::AST::Apply"]' + String.fromCharCode(10) + '    ]);' + String.fromCharCode(10) + String.fromCharCode(10) + '    // CORE.say(["ast: [" + ast + "]"]);' + String.fromCharCode(10) + '    js_code = p5call(ast, "emit_javascript3", [0, p5want]);' + String.fromCharCode(10) + '    // CORE.say(["js-source: [" + js_code + "]"]);' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5pkg["Perlito5"].v_PKG_NAME.assign(namespace_old);' + String.fromCharCode(10) + '    p5pkg["Perlito5"].v_STRICT.assign(strict_old);' + String.fromCharCode(10) + '    return js_code;' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4238._prototype_ = null;
			return tmp4238
		})());
		1;
	})();
	// use Perlito5::Javascript3::Runtime
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript3::CORE');
		p5typeglob_set('Perlito5::Javascript3::CORE', 'emit_javascript3', (function () {
			var tmp4239;
			tmp4239 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript3/CORE.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// CORE functions for "Perlito" Perl5-in-Javascript3' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + 'var CORE = p5pkg.CORE;' + String.fromCharCode(10) + String.fromCharCode(10) + 'var isNode = typeof require != "undefined";' + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + '    CORE.print = function(List__) {' + String.fromCharCode(10) + '        var i;' + String.fromCharCode(10) + '        for (i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '            process.stdout.write(p5str(List__[i]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '} else {' + String.fromCharCode(10) + '    CORE.print = function(List__) {' + String.fromCharCode(10) + '        var i;' + String.fromCharCode(10) + '        for (i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '            write(p5str(List__[i]));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return 1;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.say = function(List__) {' + String.fromCharCode(10) + '    CORE.print(List__);' + String.fromCharCode(10) + '    return CORE.print(["' + String.fromCharCode(92) + 'n"]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.die = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0]._array_;   // prototype is ' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + String.fromCharCode(10) + '    var i;' + String.fromCharCode(10) + '    var s = "";' + String.fromCharCode(10) + '    for (i = 0; i < o.length; i++) {' + String.fromCharCode(10) + '        s = s + p5str(o[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        s = s + "' + String.fromCharCode(92) + 'n" + new Error().stack;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch(err) { }' + String.fromCharCode(10) + '    p5pkg["main"]["v_@"].assign("Died: " + s);' + String.fromCharCode(10) + '    throw(new p5_error("die", "Died: " + s));' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.warn = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0]._array_;   // prototype is ' + String.fromCharCode(39) + '@' + String.fromCharCode(39) + String.fromCharCode(10) + '    var i;' + String.fromCharCode(10) + '    var s = "";' + String.fromCharCode(10) + '    for (i = 0; i < o.length; i++) {' + String.fromCharCode(10) + '        s = s + p5str(o[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        s = s + "' + String.fromCharCode(92) + 'n" + new Error().stack;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch(err) { }' + String.fromCharCode(10) + '    CORE.print(["Warning: " + s + "' + String.fromCharCode(92) + 'n"]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.bless = function(List__) {' + String.fromCharCode(10) + '    var o        = List__[0];' + String.fromCharCode(10) + '    var pkg_name = List__[1];' + String.fromCharCode(10) + '    if (o instanceof p5Scalar) {' + String.fromCharCode(10) + '        o = o.FETCH();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (pkg_name instanceof p5Scalar) {' + String.fromCharCode(10) + '        pkg_name = pkg_name.FETCH();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof pkg_name === "object") {' + String.fromCharCode(10) + '        // bless {}, Class' + String.fromCharCode(10) + '        o._class_ = pkg_name;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (!p5pkg.hasOwnProperty(pkg_name)) {' + String.fromCharCode(10) + '        p5make_package(pkg_name);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    o._class_ = p5pkg[pkg_name];' + String.fromCharCode(10) + '    return o;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.caller = function(List__, p5want) {' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        return p5pkg["Perlito5"]["CALLER"][0];' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return p5pkg["Perlito5"]["CALLER"][0][0];' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.chr = function(List__) {' + String.fromCharCode(10) + '    var v = p5num(List__[0]);' + String.fromCharCode(10) + '    return String.fromCharCode(v >= 0 ? v : 65533);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.ord = function(List__) {' + String.fromCharCode(10) + '    return p5str(List__[0]).charCodeAt(0);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.oct = function(List__) {' + String.fromCharCode(10) + '    var v = p5str(List__[0]);' + String.fromCharCode(10) + '    var b = v.substr(0,2);' + String.fromCharCode(10) + '    v = v.replace("_", "");' + String.fromCharCode(10) + '    if (b == "0b" || b == "0B") { return parseInt(v.substr(2), 2)  }' + String.fromCharCode(10) + '    if (b == "0x" || b == "0X") { return parseInt(v.substr(2), 16) }' + String.fromCharCode(10) + '    return parseInt(v, 8);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.abs   = function(List__) { return Math.abs(p5num(List__[0])) };' + String.fromCharCode(10) + 'CORE.exp   = function(List__) { return Math.exp(p5num(List__[0])) };' + String.fromCharCode(10) + 'CORE.log   = function(List__) { return Math.log(p5num(List__[0])) };' + String.fromCharCode(10) + 'CORE.cos   = function(List__) { return Math.cos(p5num(List__[0])) };' + String.fromCharCode(10) + 'CORE.sin   = function(List__) { return Math.sin(p5num(List__[0])) };' + String.fromCharCode(10) + 'CORE.sqrt  = function(List__) { return Math.sqrt(p5num(List__[0])) };' + String.fromCharCode(10) + 'CORE.atan2 = function(List__) { return Math.atan2(p5num(List__[0]), p5num(List__[1])) };' + String.fromCharCode(10) + 'CORE.int   = function(List__) { ' + String.fromCharCode(10) + '    var v = p5num(List__[0]);' + String.fromCharCode(10) + '    return v > 0 ? Math.floor(v) : Math.ceil(v)' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.rand = function(List__) {' + String.fromCharCode(10) + '    var v = p5num(List__[0]) || 1;' + String.fromCharCode(10) + '    return Math.random() * v;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.lc      = function(List__) { return p5str(List__[0]).toLowerCase() };' + String.fromCharCode(10) + 'CORE.uc      = function(List__) { return p5str(List__[0]).toUpperCase() };' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.lcfirst = function(List__) {' + String.fromCharCode(10) + '    var s = p5str(List__[0]);' + String.fromCharCode(10) + '    var c = s.length > 0 ? s.slice(0,1).toLowerCase() : "";' + String.fromCharCode(10) + '    s = s.length > 1 ? s.substr(1) : "";' + String.fromCharCode(10) + '    return c + s' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.ucfirst = function(List__) {' + String.fromCharCode(10) + '    var s = p5str(List__[0]);' + String.fromCharCode(10) + '    var c = s.length > 0 ? s.slice(0,1).toUpperCase() : "";' + String.fromCharCode(10) + '    s = s.length > 1 ? s.substr(1) : "";' + String.fromCharCode(10) + '    return c + s' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.quotemeta = function(List__) {' + String.fromCharCode(10) + '    var s = p5str(List__[0]);' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < s.length; i++) {' + String.fromCharCode(10) + '        if (s.substr(i, 1).match(/[^0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz]/)) {' + String.fromCharCode(10) + '            out.push(String.fromCharCode(92));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        out.push(s.substr(i, 1));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return out.join("");       ' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.substr = function(List__) {' + String.fromCharCode(10) + String.fromCharCode(10) + '    // TODO - lvalue substr()' + String.fromCharCode(10) + String.fromCharCode(10) + '    var s           = p5str(List__[0]);' + String.fromCharCode(10) + '    var offset      = p5num(List__[1]);' + String.fromCharCode(10) + '    var length      = List__.length > 2 ? p5num(List__[2]) : s.length;' + String.fromCharCode(10) + '    var replacement = List__[3];' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (length < 0) {' + String.fromCharCode(10) + '        length = s.length - offset + length;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return s.substr(offset, length);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.defined = function(List__) {' + String.fromCharCode(10) + '    return (List__[0] instanceof p5Scalar) ? ( List__[0].FETCH() != null ) : ( List__[0] != null )' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.values = function(List__, p5want) {' + String.fromCharCode(10) + '    var o = List__[0]._hash_;' + String.fromCharCode(10) + '    delete o["_each_"];' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return new p5Array([]);' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '        if (typeof o.values === "function") {' + String.fromCharCode(10) + '            return o.values();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var out = [];' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            out.push(o[i]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new p5Array(out);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return CORE.keys(List__, p5want);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.keys = function(List__, p5want) {' + String.fromCharCode(10) + '    var o = List__[0]._hash_;' + String.fromCharCode(10) + '    delete o["_each_"];' + String.fromCharCode(10) + '    if (p5want) {' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return new p5Array([]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.keys === "function") {' + String.fromCharCode(10) + '            return o.keys();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var out = [];' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            out.push(i);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new p5Array(out);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    else {' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (typeof o.keys === "function") {' + String.fromCharCode(10) + '            return CORE.scalar([o.keys()]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        var out = 0;' + String.fromCharCode(10) + '        for (var i in o) {' + String.fromCharCode(10) + '            out++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return out;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.each = function(List__, p5want) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    if (o.hasOwnProperty("_each_")) {' + String.fromCharCode(10) + '        return o._each_(p5want)' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var keys = CORE.keys([o], 1);' + String.fromCharCode(10) + '    var i = 0;' + String.fromCharCode(10) + '    o._each_ = function () {' + String.fromCharCode(10) + '        if (i < keys.length) {' + String.fromCharCode(10) + '            i++;' + String.fromCharCode(10) + '            return p5want ? [keys[i-1], o[keys[i-1]]] : keys[i-1];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        i = 0;' + String.fromCharCode(10) + '        return p5want ? [] : null;' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    return o._each_(p5want);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.reverse = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    if (o instanceof p5Scalar) {' + String.fromCharCode(10) + '        o = o.FETCH();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "string") {' + String.fromCharCode(10) + '        return o.split("").reverse().join("")' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    var out = [];' + String.fromCharCode(10) + '    for(var i = 0; i < o.length; i++) {' + String.fromCharCode(10) + '        out.unshift(o[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return out;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.splice = function(List__, p5want) {' + String.fromCharCode(10) + '    var array  = List__.shift()._array_;' + String.fromCharCode(10) + '    // CORE.say([ array ]);' + String.fromCharCode(10) + '    var offset = p5num(List__.shift());' + String.fromCharCode(10) + '    var limit  = List__.length ? p5num(List__.shift()) : (array.length + 1);' + String.fromCharCode(10) + String.fromCharCode(10) + '    if (limit < 0) {' + String.fromCharCode(10) + '        limit = array.length + limit - 1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var list = [offset, limit];' + String.fromCharCode(10) + '    for(var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '        list = p5list_to_a( list, List__[i]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    out = array.splice.apply(array, list);' + String.fromCharCode(10) + '    // CORE.say([ CORE.join([":",array]), " ofs=", offset, " lim=", limit, " list=", list, " out=", CORE.join([":",out])  ]);' + String.fromCharCode(10) + '    return p5want ? out : out.pop();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.pop = function(List__) {' + String.fromCharCode(10) + '    return List__[0].POP();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.shift = function(List__) {' + String.fromCharCode(10) + '    return List__[0].SHIFT();' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.push = function(List__) {' + String.fromCharCode(10) + '    return List__[0].PUSH(List__[1]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.unshift = function(List__) {' + String.fromCharCode(10) + '    return List__[0].UNSHIFT(List__[1]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.join = function(List__) {' + String.fromCharCode(10) + '    var s = List__[0];' + String.fromCharCode(10) + '    var o = List__[1]._array_;' + String.fromCharCode(10) + '    var a = [];' + String.fromCharCode(10) + '    for (i = 0; i < o.length; i++) {' + String.fromCharCode(10) + '        a.push( p5str(o[i]) );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return a.join(s);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.index = function(List__) {' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        return p5str(List__[0]).indexOf(p5str(List__[1]), p5num(List__[2]));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch(err) {' + String.fromCharCode(10) + '        return -1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + 'CORE.rindex = function(List__) {' + String.fromCharCode(10) + '    var o = p5str(List__[0]);' + String.fromCharCode(10) + '    var s = List__[1];' + String.fromCharCode(10) + '    try {' + String.fromCharCode(10) + '        if (List__.length > 2) {' + String.fromCharCode(10) + '            var i = p5num(List__[2]);' + String.fromCharCode(10) + '            if (i < 0) {' + String.fromCharCode(10) + '                if (s.length == 0) {' + String.fromCharCode(10) + '                    return 0;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                return -1;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return o.lastIndexOf(s, i);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o.lastIndexOf(s);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    catch(err) {' + String.fromCharCode(10) + '        return -1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.length = function(List__) {' + String.fromCharCode(10) + '    var o = p5str(List__[0]);' + String.fromCharCode(10) + '    return o.length;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.pack    = function(List__) { CORE.warn([ "CORE::pack not implemented" ]) };' + String.fromCharCode(10) + 'CORE.unpack  = function(List__) { CORE.warn([ "CORE::unpack not implemented" ]) };' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.ref = function(List__) {' + String.fromCharCode(10) + '    var o = List__[0];' + String.fromCharCode(10) + '    if (o instanceof p5Scalar) {' + String.fromCharCode(10) + '        o = o.FETCH();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (o == null) {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (o._class_ && typeof o._class_._ref_ === "string") {' + String.fromCharCode(10) + '        // blessed reference' + String.fromCharCode(10) + '        return o._class_._ref_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o._ref_ === "string") {' + String.fromCharCode(10) + '        // un-blessed reference' + String.fromCharCode(10) + '        return o._ref_;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    if (typeof o === "function") {' + String.fromCharCode(10) + '        return "CODE";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    return "";' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.split = function(List__) {' + String.fromCharCode(10) + '    var pattern = List__[0];' + String.fromCharCode(10) + '    var s       = p5str(List__[1]);' + String.fromCharCode(10) + '    var limit   = List__[2];' + String.fromCharCode(10) + '    if (typeof pattern === "string") {' + String.fromCharCode(10) + '        if (pattern == " ") {' + String.fromCharCode(10) + '            var res = [];' + String.fromCharCode(10) + '            for (var i_ = 0, a_ = s.split(/(?: |' + String.fromCharCode(92) + 'n)+/); i_ < a_.length ; i_++) {' + String.fromCharCode(10) + '                if (a_[i_] != "") {' + String.fromCharCode(10) + '                    res.push(a_[i_])' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return res;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return s.split(pattern);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    CORE.die(["not implemented"]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.prototype = function(List__, data) {' + String.fromCharCode(10) + '    var name = List__[0];' + String.fromCharCode(10) + '    // TODO - fully qualify "name" using information from "data"' + String.fromCharCode(10) + '    // XXX - lookup in CORE::GLOBAL?' + String.fromCharCode(10) + '    p5pkg["Perlito5"].v_PROTO._hash_[name] || p5pkg["Perlito5"].v_CORE_PROTO._hash_[name]' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4239._prototype_ = null;
			return tmp4239
		})());
		1;
	})();
	// use Perlito5::Javascript3::CORE
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript3::IO');
		p5typeglob_set('Perlito5::Javascript3::IO', 'emit_javascript3', (function () {
			var tmp4240;
			tmp4240 = function (List__, p5want) {
				return (p5context([(('//' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// lib/Perlito5/Javascript3/IO.js' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// I/O functions for "Perlito" Perl5-in-Javascript3' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// AUTHORS' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Flavio Soibelmann Glock  fglock@gmail.com' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// COPYRIGHT' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// Copyright 2009, 2010, 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// This program is free software; you can redistribute it and/or modify it' + String.fromCharCode(10) + '// under the same terms as Perl itself.' + String.fromCharCode(10) + '//' + String.fromCharCode(10) + '// See http://www.perl.com/perl/misc/Artistic.html' + String.fromCharCode(10) + String.fromCharCode(10) + 'var isNode = typeof require != "undefined";' + String.fromCharCode(10) + 'if (isNode) {' + String.fromCharCode(10) + String.fromCharCode(10) + '    var fs = require("fs");' + String.fromCharCode(10) + String.fromCharCode(10) + '    p5atime = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["atime"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5mtime = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["mtime"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5ctime = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["ctime"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5size = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat["size"];' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5is_file = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat.isFile() ? 1 : 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5is_directory = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            var stat = fs.statSync(s); return stat.isDirectory() ? 1 : 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + '    p5file_exists = function(s) {' + String.fromCharCode(10) + '        s = p5str(s);' + String.fromCharCode(10) + '        return p5is_file(s) || p5is_directory(s);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.chdir = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            process.chdir(p5str(List__[0]));' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.close = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            fs.closeSync(p5str(List__[0]));' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.exit = function(List__) {' + String.fromCharCode(10) + '        process.exit(List__[0]);' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.rename = function(List__) {' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            fs.renameSync(p5str(List__[0]), p5str(List__[1]));' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return ' + String.fromCharCode(39) + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '    CORE.unlink = function(List__) {' + String.fromCharCode(10) + '        var count = 0;' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            for(var i = 0; i < List__.length; i++) {' + String.fromCharCode(10) + '                fs.unlinkSync(p5str(List__[i]));' + String.fromCharCode(10) + '                count++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return count;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch(err) {' + String.fromCharCode(10) + '            p5pkg["main"]["v_!"] = err;' + String.fromCharCode(10) + '            return count;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    };' + String.fromCharCode(10) + String.fromCharCode(10) + '}' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4240._prototype_ = null;
			return tmp4240
		})());
		1;
	})();
	// use Perlito5::Javascript3::IO
;
	(function () {
		null;
		p5make_package('Perlito5::Javascript3::Sprintf');
		p5typeglob_set('Perlito5::Javascript3::Sprintf', 'emit_javascript3', (function () {
			var tmp4241;
			tmp4241 = function (List__, p5want) {
				return (p5context([(('/**' + String.fromCharCode(10) + ' * Copyright (c) 2010 Jakob Westhoff' + String.fromCharCode(10) + ' *' + String.fromCharCode(10) + ' * Permission is hereby granted, free of charge, to any person obtaining a copy' + String.fromCharCode(10) + ' * of this software and associated documentation files (the "Software"), to deal' + String.fromCharCode(10) + ' * in the Software without restriction, including without limitation the rights' + String.fromCharCode(10) + ' * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell' + String.fromCharCode(10) + ' * copies of the Software, and to permit persons to whom the Software is' + String.fromCharCode(10) + ' * furnished to do so, subject to the following conditions:' + String.fromCharCode(10) + ' * ' + String.fromCharCode(10) + ' * The above copyright notice and this permission notice shall be included in' + String.fromCharCode(10) + ' * all copies or substantial portions of the Software.' + String.fromCharCode(10) + ' * ' + String.fromCharCode(10) + ' * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR' + String.fromCharCode(10) + ' * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,' + String.fromCharCode(10) + ' * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE' + String.fromCharCode(10) + ' * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER' + String.fromCharCode(10) + ' * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,' + String.fromCharCode(10) + ' * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN' + String.fromCharCode(10) + ' * THE SOFTWARE.' + String.fromCharCode(10) + ' */' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.sprintf = function(List__) {' + String.fromCharCode(10) + '    var format = List__[0];' + String.fromCharCode(10) + '    var list = List__[1];' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Check for format definition' + String.fromCharCode(10) + '    if ( typeof format != ' + String.fromCharCode(39) + 'string' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '        CORE.die(["sprintf: The first arguments need to be a valid format string."]);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    ' + String.fromCharCode(10) + '    /**' + String.fromCharCode(10) + '     * Define the regex to match a formating string' + String.fromCharCode(10) + '     * The regex consists of the following parts:' + String.fromCharCode(10) + '     * percent sign to indicate the start' + String.fromCharCode(10) + '     * (optional) sign specifier' + String.fromCharCode(10) + '     * (optional) padding specifier' + String.fromCharCode(10) + '     * (optional) alignment specifier' + String.fromCharCode(10) + '     * (optional) width specifier' + String.fromCharCode(10) + '     * (optional) precision specifier' + String.fromCharCode(10) + '     * type specifier:' + String.fromCharCode(10) + '     *  % - literal percent sign' + String.fromCharCode(10) + '     *  b - binary number' + String.fromCharCode(10) + '     *  c - ASCII character represented by the given value' + String.fromCharCode(10) + '     *  d - signed decimal number' + String.fromCharCode(10) + '     *  f - floating point value' + String.fromCharCode(10) + '     *  o - octal number' + String.fromCharCode(10) + '     *  s - string' + String.fromCharCode(10) + '     *  x - hexadecimal number (lowercase characters)' + String.fromCharCode(10) + '     *  X - hexadecimal number (uppercase characters)' + String.fromCharCode(10) + '     */' + String.fromCharCode(10) + '    var r = new RegExp( /%(' + String.fromCharCode(92) + '+)?([0 ]|' + String.fromCharCode(39) + '(.))?(-)?([0-9]+)?(' + String.fromCharCode(92) + '.([0-9]+))?([%bcdfosxX])/g );' + String.fromCharCode(10) + String.fromCharCode(10) + '    /**' + String.fromCharCode(10) + '     * Each format string is splitted into the following parts:' + String.fromCharCode(10) + '     * 0: Full format string' + String.fromCharCode(10) + '     * 1: sign specifier (+)' + String.fromCharCode(10) + '     * 2: padding specifier (0/<space>/' + String.fromCharCode(39) + '<any char>)' + String.fromCharCode(10) + '     * 3: if the padding character starts with a ' + String.fromCharCode(39) + ' this will be the real ' + String.fromCharCode(10) + '     *    padding character' + String.fromCharCode(10) + '     * 4: alignment specifier' + String.fromCharCode(10) + '     * 5: width specifier' + String.fromCharCode(10) + '     * 6: precision specifier including the dot' + String.fromCharCode(10) + '     * 7: precision specifier without the dot' + String.fromCharCode(10) + '     * 8: type specifier' + String.fromCharCode(10) + '     */' + String.fromCharCode(10) + '    var parts      = [];' + String.fromCharCode(10) + '    var paramIndex = 0;' + String.fromCharCode(10) + '    while ( part = r.exec( format ) ) {' + String.fromCharCode(10) + '        // Check if an input value has been provided, for the current' + String.fromCharCode(10) + '        // format string' + String.fromCharCode(10) + '        if ( paramIndex >= list.length ) {' + String.fromCharCode(10) + '            CORE.die(["sprintf: At least one argument was missing."]);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        parts[parts.length] = {' + String.fromCharCode(10) + '            /* beginning of the part in the string */' + String.fromCharCode(10) + '            begin: part.index,' + String.fromCharCode(10) + '            /* end of the part in the string */' + String.fromCharCode(10) + '            end: part.index + part[0].length,' + String.fromCharCode(10) + '            /* force sign */' + String.fromCharCode(10) + '            sign: ( part[1] == ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' ),' + String.fromCharCode(10) + '            /* is the given data negative */' + String.fromCharCode(10) + '            negative: ( parseInt( list[paramIndex] ) < 0 ) ? true : false,' + String.fromCharCode(10) + '            /* padding character (default: <space>) */' + String.fromCharCode(10) + '            padding: ( part[2] == undefined )' + String.fromCharCode(10) + '                     ? ( ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ' ) /* default */' + String.fromCharCode(10) + '                     : ( ( part[2].substring( 0, 1 ) == "' + String.fromCharCode(39) + '" ) ' + String.fromCharCode(10) + '                         ? ( part[3] ) /* use special char */' + String.fromCharCode(10) + '                         : ( part[2] ) /* use normal <space> or zero */' + String.fromCharCode(10) + '                       ),' + String.fromCharCode(10) + '            /* should the output be aligned left?*/' + String.fromCharCode(10) + '            alignLeft: ( part[4] == ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' ),' + String.fromCharCode(10) + '            /* width specifier (number or false) */' + String.fromCharCode(10) + '            width: ( part[5] != undefined ) ? part[5] : false,' + String.fromCharCode(10) + '            /* precision specifier (number or false) */' + String.fromCharCode(10) + '            precision: ( part[7] != undefined ) ? part[7] : false,' + String.fromCharCode(10) + '            /* type specifier */' + String.fromCharCode(10) + '            type: part[8],' + String.fromCharCode(10) + '            /* the given data associated with this part converted to a string */' + String.fromCharCode(10) + '            data: ( part[8] != ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ' ) ? String ( list[paramIndex++] ) : false' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    var newString = "";' + String.fromCharCode(10) + '    var start = 0;' + String.fromCharCode(10) + '    // Generate our new formated string' + String.fromCharCode(10) + '    for( var i=0; i<parts.length; ++i ) {' + String.fromCharCode(10) + '        // Add first unformated string part' + String.fromCharCode(10) + '        newString += format.substring( start, parts[i].begin );' + String.fromCharCode(10) + '        ' + String.fromCharCode(10) + '        // Mark the new string start' + String.fromCharCode(10) + '        start = parts[i].end;' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Create the appropriate preformat substitution' + String.fromCharCode(10) + '        // This substitution is only the correct type conversion. All the' + String.fromCharCode(10) + '        // different options and flags haven' + String.fromCharCode(39) + 't been applied to it at this' + String.fromCharCode(10) + '        // point' + String.fromCharCode(10) + '        var preSubstitution = "";' + String.fromCharCode(10) + '        switch ( parts[i].type ) {' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '%' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = "%";' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'b' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 2 );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'c' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = String.fromCharCode( Math.abs( parseInt( parts[i].data ) ) );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'd' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = String( Math.abs( parseInt( parts[i].data ) ) );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'f' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = ( parts[i].precision == false )' + String.fromCharCode(10) + '                                  ? ( String( ( Math.abs( parseFloat( parts[i].data ) ) ) ) )' + String.fromCharCode(10) + '                                  : ( Math.abs( parseFloat( parts[i].data ) ).toFixed( parts[i].precision ) );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'o' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 8 );' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 's' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = parts[i].data.substring( 0, parts[i].precision ? parts[i].precision : parts[i].data.length ); /* Cut if precision is defined */' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'x' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 16 ).toLowerCase();' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + 'X' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                preSubstitution = Math.abs( parseInt( parts[i].data ) ).toString( 16 ).toUpperCase();' + String.fromCharCode(10) + '            break;' + String.fromCharCode(10) + '            default:' + String.fromCharCode(10) + '                throw ' + String.fromCharCode(39) + 'sprintf: Unknown type "' + String.fromCharCode(39) + ' + parts[i].type + ' + String.fromCharCode(39) + '" detected. This should never happen. Maybe the regex is wrong.' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // The % character is a special type and does not need further processing' + String.fromCharCode(10) + '        if ( parts[i].type ==  "%" ) {' + String.fromCharCode(10) + '            newString += preSubstitution;' + String.fromCharCode(10) + '            continue;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Modify the preSubstitution by taking sign, padding and width' + String.fromCharCode(10) + '        // into account' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Pad the string based on the given width' + String.fromCharCode(10) + '        if ( parts[i].width != false ) {' + String.fromCharCode(10) + '            // Padding needed?' + String.fromCharCode(10) + '            if ( parts[i].width > preSubstitution.length ) ' + String.fromCharCode(10) + '            {' + String.fromCharCode(10) + '                var origLength = preSubstitution.length;' + String.fromCharCode(10) + '                for( var j = 0; j < parts[i].width - origLength; ++j ) ' + String.fromCharCode(10) + '                {' + String.fromCharCode(10) + '                    preSubstitution = ( parts[i].alignLeft == true ) ' + String.fromCharCode(10) + '                                      ? ( preSubstitution + parts[i].padding )' + String.fromCharCode(10) + '                                      : ( parts[i].padding + preSubstitution );' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Add a sign symbol if neccessary or enforced, but only if we are' + String.fromCharCode(10) + '        // not handling a string' + String.fromCharCode(10) + '        if ( parts[i].type == ' + String.fromCharCode(39) + 'b' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'd' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'o' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'f' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'x' + String.fromCharCode(39) + ' ' + String.fromCharCode(10) + '          || parts[i].type == ' + String.fromCharCode(39) + 'X' + String.fromCharCode(39) + ' ) {' + String.fromCharCode(10) + '            if ( parts[i].negative == true ) {' + String.fromCharCode(10) + '                preSubstitution = "-" + preSubstitution;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else if ( parts[i].sign == true ) {' + String.fromCharCode(10) + '                preSubstitution = "+" + preSubstitution;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        // Add the substitution to the new string' + String.fromCharCode(10) + '        newString += preSubstitution;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Add the last part of the given format string, which may still be there' + String.fromCharCode(10) + '    newString += format.substring( start, format.length );' + String.fromCharCode(10) + String.fromCharCode(10) + '    return newString;' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10) + 'CORE.printf = function(List__) {' + String.fromCharCode(10) + '    return CORE.print([ CORE.sprintf(List__) ]);' + String.fromCharCode(10) + '};' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4241._prototype_ = null;
			return tmp4241
		})());
		1;
	})();
	// use Perlito5::Javascript3::Sprintf
;
	(function () {
		null;
		// use Perlito5::AST
;
		// use strict
;
		p5make_package('Perlito5::Perl5');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::Perl5', 'escape_string', (function () {
					var tmp4242;
					tmp4242 = function (List__, p5want) {
						return (p5pkg['Perlito5::Dumper'].escape_string(p5list_to_a([List__.p5aget(0)]), p5want));
					};
					tmp4242._prototype_ = null;
					return tmp4242
				})());
				p5typeglob_set('Perlito5::Perl5', 'emit_perl5_block', (function () {
					var tmp4243;
					tmp4243 = function (List__, p5want) {
						var v_block;
						v_block = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::Perl5'], function (p5want) {
	return (p5and((p5make_package('main')['v__'] != null), function () {
		return p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1)
	}));
}, p5list_to_a([p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::Perl5')]))]))));
					};
					tmp4243._prototype_ = null;
					return tmp4243
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_perl5', (function () {
					var tmp4244;
					tmp4244 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['block', (new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'package'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')])))]))), p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5and((p5make_package('main')['v__'] != null), function () {
		return p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1)
	}));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))]))));
					};
					tmp4244._prototype_ = null;
					return tmp4244
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_perl5_program', (function () {
					var tmp4245;
					tmp4245 = function (List__, p5want) {
						var v_comp_units;
						v_comp_units = (List__.p5aget(0));
						return (p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
									return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], p5want));
								}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')])));
					};
					tmp4245._prototype_ = null;
					return tmp4245
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_perl5', (function () {
					var tmp4246;
					tmp4246 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['number', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('int')]))));
					};
					tmp4246._prototype_ = null;
					return tmp4246
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_perl5', (function () {
					var tmp4247;
					tmp4247 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['number', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('num')]))));
					};
					tmp4247._prototype_ = null;
					return tmp4247
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_perl5', (function () {
					var tmp4248;
					tmp4248 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return (p5pkg['Perlito5::Perl5'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('buf')]), p5want));
					};
					tmp4248._prototype_ = null;
					return tmp4248
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_perl5', (function () {
					var tmp4249;
					tmp4249 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var List_out = [];
						p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
						(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(p5list_to_a(['keyword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')]))), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 1)])))]));
							}
							else {
								List_out.p5push(p5list_to_a([p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 1)]));
							}
							})();
						(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
						return ((p5want ? List_out : List_out.length));
					};
					tmp4249._prototype_ = null;
					return tmp4249
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_perl5', (function () {
					var tmp4250;
					tmp4250 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$') || (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@')))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl5', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_perl5', [], 1)]))));
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl5', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_perl5', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_perl5', [], 1)])))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_perl5', [], 1)])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4250._prototype_ = null;
					return tmp4250
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_perl5', (function () {
					var tmp4251;
					tmp4251 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$') || (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@')))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl5', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl5', [], 1)]))));
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl5', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl5', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl5', [], 1)])))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl5', [], 1)])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4251._prototype_ = null;
					return tmp4251
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Var', 'emit_perl5', (function () {
					var tmp4252;
					tmp4252 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							p5and((p5str(v_str_name) == String.fromCharCode(92)), function () {
								return v_str_name = (String.fromCharCode(92) + String.fromCharCode(92))
							});
							p5and((p5str(v_str_name) == String.fromCharCode(39)), function () {
								return v_str_name = (String.fromCharCode(92) + String.fromCharCode(39))
							});
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								p5and((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '::'), function () {
									throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::')], p5want))
								});
								(function () {
									if ( ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == 'main') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1) == '^')) ) {
									throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) + '}')], p5want));
								}
								else {
									v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
								}
								})();
							}
							})();
							var v_c;
							v_c = (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1));
							(function () {
								if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || ((p5str(v_c) == '_') || (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == '/')))) ) {
								throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str(v_ns) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
							}
							})();
							return (p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + String.fromCharCode(39) + p5str(v_ns) + p5str(v_str_name) + String.fromCharCode(39) + '}')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4252._prototype_ = null;
					return tmp4252
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_perl5', (function () {
					var tmp4253;
					tmp4253 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_perl5', [], 0));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_perl5', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_perl5', [], 1)])))]))));
							}
							})();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								(function () {
									if ( (((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '&')) || ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('code')) == 'prefix:<&>'))) ) {
									throw((new p5ArrayRef(p5list_to_a(['apply', '(', v_invocant, p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))]))));
								}
								})();
								v_meth = ('');
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_perl5', [], 0));
							}
							})();
							(function () {
								if ( p5bool(v_meth) ) {
								throw((new p5ArrayRef(p5list_to_a(['call', v_invocant, v_meth, p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'list:<,>', p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4253._prototype_ = null;
					return tmp4253
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Apply', 'emit_perl5_args', (function () {
					var tmp4254;
					tmp4254 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							p5and(!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'))), function () {
								throw(p5context([], p5want))
							});
							return (p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
									return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], p5want));
								}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')])));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4254._prototype_ = null;
					return tmp4254
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_perl5', (function () {
					var tmp4255;
					tmp4255 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( p5bool(p5pkg['Perlito5::AST::Apply'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')], 0)) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), 'emit_perl5', [], 1), p5call(v_self, 'emit_perl5_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'infix:<=>>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0), 'emit_perl5', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_perl5', [], 1)]))));
							}
							})();
							(function () {
								if ( p5bool(p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'].p5hget(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')))) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), p5call(v_self, 'emit_perl5_args', [], 1)]))));
							}
							})();
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
							}
							})();
							var v_code;
							v_code = ((p5str(v_ns) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'))));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:s') ) {
								throw(p5context([('s!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(2)._hash_.p5hget('buf')))], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:m') ) {
								(function () {
									var v_s;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										v_s = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										(function () {
											var v_ast;
											(function(){ var v_ast; p5for_lex(function (v) { v_ast = v }, function () {
													(function () {
														if ( p5bool(p5call(v_ast, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
														(v_s = ((p5str(v_s) + p5str((v_ast || (v_ast = new p5HashRef({})))._hash_.p5hget('buf')))));
													}
													else {
														(v_s = ((p5str(v_s) + p5str(p5call(v_ast, 'emit_perl5', [], 0)))));
													}
													})();
												}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '') })()
										})();
									}
									})();
									throw(p5context([('m!' + p5str(v_s) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')))], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:tr') ) {
								throw(p5context([('tr!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'package') ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt', 'package', (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')])))]))));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'map') || ((p5str(v_code) == 'grep') || (p5str(v_code) == 'sort'))) ) {
								(function () {
									if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
									throw((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str(v_code) + '>'), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl5', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('special_arg')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Apply')]))]))), (new p5ArrayRef(p5list_to_a(['op', 'list:<,>', p5call(v_self, 'emit_perl5_args', [], 1)])))]))));
								}
								})();
								throw((new p5ArrayRef(p5list_to_a(['apply', '(', v_code, p5call(v_self, 'emit_perl5_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (((p5str(v_code) == 'eval') || (p5str(v_code) == 'do')) && (p5pkg['Perlito5::AST::Apply'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)], 0) == 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str(v_code) + '>'), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_perl5', [], 1)]))));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'eval') && (p5str(p5make_package('Perlito5')['v_PHASE']) == 'BEGIN')) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '(', 'eval', (new p5ArrayRef(p5list_to_a(['apply', '(', 'Perlito5::CompileTime::Dumper::generate_eval_string', p5call(v_self, 'emit_perl5_args', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'readline') ) {
								throw((new p5ArrayRef(p5list_to_a(['paren', '<', p5call(v_self, 'emit_perl5_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) && !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))))) ) {
								throw((new p5ArrayRef(['bareword', v_code])));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['apply', '(', v_code, p5call(v_self, 'emit_perl5_args', [], 1)]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4255._prototype_ = null;
					return tmp4255
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_perl5', (function () {
					var tmp4256;
					tmp4256 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'if', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')) && (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')], 0) != 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'unless', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)])))]))));
							}
							})();
							var List_out = [];
							List_out = p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'if'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)]))), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]);
							var v_otherwise;
							v_otherwise = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'));
							(function () {
								p5while(function () {
									List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'elsif'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('cond'), 'emit_perl5', [], 1)]))), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget_hash('body')._hash_.p5hget('stmts')]), 1)])))]));
									v_otherwise = ((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('otherwise'));
								}, function () {
									return p5and(v_otherwise, function () {
										return p5and((p5num(p5num(p5array_deref((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts'), 'Perlito5::AST::If'))) == 1), function () {
											return p5and((p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget(0)], 0) == 'Perlito5::AST::If'), function () {
												return p5context([p5and((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('body'), function () {
													return (p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('body')], 0) == 'Perlito5::AST::Block')
												})], 0)
											})
										})
									})
								}, false, '', 0)
							})();
							p5and(!( (p5bool(v_otherwise) && p5bool((p5num(p5array_deref(p5call(v_otherwise, 'stmts', [], p5want), 'Perlito5::AST::If')))))), function () {
								throw((p5want ? List_out : List_out.length))
							});
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'else'])), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([p5call(v_otherwise, 'stmts', [], 1)]), 1)])))]));
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4256._prototype_ = null;
					return tmp4256
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_perl5', (function () {
					var tmp4257;
					tmp4257 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'when'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)]))), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)]))));
					};
					tmp4257._prototype_ = null;
					return tmp4257
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_perl5', (function () {
					var tmp4258;
					tmp4258 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_out = [];
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw(p5context([(p5want ? List_out : List_out.length), (new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'while'])), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)])))])))], p5want));
							}
							})();
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'while'])), (new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)]))), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::While')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4258._prototype_ = null;
					return tmp4258
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_perl5', (function () {
					var tmp4259;
					tmp4259 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_out = [];
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw(p5context([(p5want ? List_out : List_out.length), (new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_perl5', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'for', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)])))])))], p5want));
							}
							})();
							var v_cond;
							(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								v_cond = ((new p5ArrayRef(p5list_to_a(['paren_semicolon', '(', ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_perl5', [], 1) : (new p5ArrayRef([]))), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), 'emit_perl5', [], 1) : (new p5ArrayRef([]))), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_perl5', [], 1) : (new p5ArrayRef([])))]))));
							}
							else {
								v_cond = ((new p5ArrayRef(p5list_to_a(['paren', '(', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl5', [], 1)]))));
							}
							})();
							var List_sig = [];
							var v_sig_ast;
							v_sig_ast = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'));
							(function () {
								if ( !( p5bool(v_sig_ast)) ) {}
							else {
								List_sig = p5list_to_a([p5call(v_sig_ast, 'emit_perl5', [], 1)]);
							}
							})();
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'for'])), List_sig, v_cond, p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::For')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4259._prototype_ = null;
					return tmp4259
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_perl5', (function () {
					var tmp4260;
					tmp4260 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) + '>'), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('type')) ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('type') : p5context([], 1)), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_perl5', [], 1)]))));
					};
					tmp4260._prototype_ = null;
					return tmp4260
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_perl5', (function () {
					var tmp4261;
					tmp4261 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_sig = [];
							var List_parts = [];
							p5and(((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig') != null), function () {
								return List_sig.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['paren', '(', (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig')])))])))]))
							});
							(function () {
								if ( ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('block') != null) ) {
								List_parts.p5push(p5list_to_a([p5pkg['Perlito5::Perl5'].emit_perl5_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget('stmts')]), 1)]));
								(function () {
									if ( (p5str(p5make_package('Perlito5')['v_PHASE']) == 'BEGIN') ) {
									(function () {
										var List_captured = [];
										(function () {
											var v_stmt;
											(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
													List_captured.p5push(p5list_to_a([p5call(v_stmt, 'get_captures', [], 1)]));
												}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Sub')]), false, '') })()
										})();
										var Hash_dont_capture = {};
										Hash_dont_capture = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
													return (( p5bool((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('dont')) ? p5context([(p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('dont'), 1], 1) : p5context([], 1)));
												}, p5list_to_a([List_captured]))]));
										var Hash_capture = {};
										Hash_capture = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
													return (( p5bool((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('dont')) ? p5context([], 1) : ( p5bool(Hash_dont_capture.p5hget(p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_id')))) ? p5context([], 1) : ( ((p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_decl')) == 'local') || ((p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_decl')) == 'global') || (p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_decl')) == ''))) ? p5context([], 1) : p5context([(p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_id'), p5make_package('main')['v__']], 1)))));
												}, p5list_to_a([List_captured]))]));
										var List_captures_ast = [];
										List_captures_ast = p5list_to_a([p5pkg['Perlito5::AST::Sub'].values([Hash_capture], 1)]);
										var List_captures_perl = [];
										List_captures_perl = p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
													return ((p5str(p5or((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
	return (p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('sigil')
})) + p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('name'))));
												}, p5list_to_a([List_captures_ast]))]);
										var List_extra = [];
										List_extra.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', 'infix:<&&>', '@_', (new p5ArrayRef(p5list_to_a(['op', 'infix:<&&>', (new p5ArrayRef(p5list_to_a(['op', 'infix:<eq>', (new p5ArrayRef(p5list_to_a(['apply', '(', 'ref', (new p5ArrayRef(p5list_to_a(['apply', '[', '$_', (new p5ArrayRef(['number', 0]))])))]))), '"Perlito5::dump"']))), (new p5ArrayRef(p5list_to_a(['apply', '(', 'return', (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
	return (p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', 'infix:<=>>', (String.fromCharCode(39) + p5str(p5make_package('main')['v__']) + String.fromCharCode(39)), (new p5ArrayRef(['op', 'prefix:<' + String.fromCharCode(92) + '>', p5make_package('main')['v__']]))])))]));
}, p5list_to_a([List_captures_perl]))])))])))])))])))]));
										var v_bl;
										v_bl = (p5array_deref(List_parts.p5aget_array(0), 'Perlito5::AST::Sub').shift());
										p5array_deref(List_parts.p5aget_array(0), 'Perlito5::AST::Sub').p5unshift(p5list_to_a([v_bl, List_extra]));
									})();
								}
								})();
							}
							})();
							p5and(!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'))), function () {
								throw((new p5ArrayRef(p5list_to_a(['op', 'prefix:<sub>', List_sig, List_parts]))))
							});
							return ((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'sub'])), (new p5ArrayRef(['bareword', (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')))])), List_sig, List_parts]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4261._prototype_ = null;
					return tmp4261
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_perl5', (function () {
					var tmp4262;
					tmp4262 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
							return (function () {
								if ( p5bool(p5make_package('Perlito5')['v_EMIT_USE']) ) {
								(function () {
									throw((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'use'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')])))]))))
								})()
							}
							else {
								(function () {
									throw((new p5ArrayRef(['comment', ('# ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')))])))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4262._prototype_ = null;
					return tmp4262
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::Perl5::Emitter
;
	(function () {
		p5make_package('Perlito5::Perl5::PrettyPrinter');
		// use strict
;
		// use warnings
;
		var Hash_dispatch = {};
		Hash_dispatch = {'stmt' : (function () {
					var tmp4263;
					tmp4263 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].statement(p5list_to_a([List__]), p5want));
					};
					tmp4263._prototype_ = null;
					return tmp4263
				})(), 'stmt_modifier' : (function () {
					var tmp4264;
					tmp4264 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].statement_modifier(p5list_to_a([List__]), p5want));
					};
					tmp4264._prototype_ = null;
					return tmp4264
				})(), 'block' : (function () {
					var tmp4265;
					tmp4265 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].block(p5list_to_a([List__]), p5want));
					};
					tmp4265._prototype_ = null;
					return tmp4265
				})(), 'keyword' : (function () {
					var tmp4266;
					tmp4266 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].keyword(p5list_to_a([List__]), p5want));
					};
					tmp4266._prototype_ = null;
					return tmp4266
				})(), 'bareword' : (function () {
					var tmp4267;
					tmp4267 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].bareword(p5list_to_a([List__]), p5want));
					};
					tmp4267._prototype_ = null;
					return tmp4267
				})(), 'number' : (function () {
					var tmp4268;
					tmp4268 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].number(p5list_to_a([List__]), p5want));
					};
					tmp4268._prototype_ = null;
					return tmp4268
				})(), 'op' : (function () {
					var tmp4269;
					tmp4269 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].op(p5list_to_a([List__]), p5want));
					};
					tmp4269._prototype_ = null;
					return tmp4269
				})(), 'paren' : (function () {
					var tmp4270;
					tmp4270 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].paren(p5list_to_a([List__]), p5want));
					};
					tmp4270._prototype_ = null;
					return tmp4270
				})(), 'paren_semicolon' : (function () {
					var tmp4271;
					tmp4271 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].paren_semicolon(p5list_to_a([List__]), p5want));
					};
					tmp4271._prototype_ = null;
					return tmp4271
				})(), 'apply' : (function () {
					var tmp4272;
					tmp4272 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].apply(p5list_to_a([List__]), p5want));
					};
					tmp4272._prototype_ = null;
					return tmp4272
				})(), 'call' : (function () {
					var tmp4273;
					tmp4273 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].call(p5list_to_a([List__]), p5want));
					};
					tmp4273._prototype_ = null;
					return tmp4273
				})(), 'comment' : (function () {
					var tmp4274;
					tmp4274 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].comment(p5list_to_a([List__]), p5want));
					};
					tmp4274._prototype_ = null;
					return tmp4274
				})(), 'label' : (function () {
					var tmp4275;
					tmp4275 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl5::PrettyPrinter'].label(p5list_to_a([List__]), p5want));
					};
					tmp4275._prototype_ = null;
					return tmp4275
				})()};
		var Hash_pair = {};
		Hash_pair = p5a_to_h(['(', ')', '[', ']', '{', '}', '<', '>']);
		if (typeof p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'] = {};}
		p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'] = p5a_to_h(p5list_to_a(['prefix:<$>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '$'})), 'prefix:<@>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '@'})), 'prefix:<%>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '%'})), 'prefix:<&>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '&'})), 'prefix:<*>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '*'})), 'prefix:<$#>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '$#'})), 'circumfix:<[ ]>', (new p5HashRef({'fix' : 'circumfix', 'prec' : 0, 'str' : '['})), 'circumfix:<{ }>', (new p5HashRef({'fix' : 'circumfix', 'prec' : 0, 'str' : '{'})), 'circumfix:<( )>', (new p5HashRef({'fix' : 'circumfix', 'prec' : 0, 'str' : '('})), 'infix:<->>', (new p5HashRef(p5a_to_h(p5list_to_a(['fix', 'infix', 'prec', p5negative( 1), 'str', '->'])))), 'prefix:<-->', (new p5HashRef({'fix' : 'prefix', 'prec' : 1, 'str' : '--'})), 'prefix:<++>', (new p5HashRef({'fix' : 'prefix', 'prec' : 1, 'str' : '++'})), 'postfix:<-->', (new p5HashRef({'fix' : 'postfix', 'prec' : 1, 'str' : '--'})), 'postfix:<++>', (new p5HashRef({'fix' : 'postfix', 'prec' : 1, 'str' : '++'})), 'infix:<**>', (new p5HashRef({'fix' : 'infix', 'prec' : 2, 'str' : '**'})), 'prefix:<' + String.fromCharCode(92) + '>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : String.fromCharCode(92)})), 'prefix:<+>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '+'})), 'prefix:<->', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '-'})), 'prefix:<~>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '~'})), 'prefix:<!>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '!'})), 'infix:<=~>', (new p5HashRef({'fix' : 'infix', 'prec' : 4, 'str' : ' =~ '})), 'infix:<!~>', (new p5HashRef({'fix' : 'infix', 'prec' : 4, 'str' : ' !~ '})), 'infix:<*>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' * '})), 'infix:</>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' / '})), 'infix:<%>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' % '})), 'infix:<x>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' x '})), 'infix:<+>', (new p5HashRef({'fix' : 'infix', 'prec' : 6, 'str' : ' + '})), 'infix:<->', (new p5HashRef({'fix' : 'infix', 'prec' : 6, 'str' : ' - '})), 'list:<.>', (new p5HashRef({'fix' : 'list', 'prec' : 6, 'str' : ' . '})), 'infix:<<<>', (new p5HashRef({'fix' : 'infix', 'prec' : 7, 'str' : ' << '})), 'infix:<>>>', (new p5HashRef({'fix' : 'infix', 'prec' : 7, 'str' : ' >> '})), 'infix:<lt>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' lt '})), 'infix:<le>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' le '})), 'infix:<gt>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' gt '})), 'infix:<ge>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' ge '})), 'infix:<<=>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' <= '})), 'infix:<>=>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' >= '})), 'infix:<<>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' < '})), 'infix:<>>', (new p5HashRef({'fix' : 'infix', 'prec' : 9, 'str' : ' > '})), 'infix:<<=>>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' <=> '})), 'infix:<cmp>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' cmp '})), 'infix:<==>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' == '})), 'infix:<!=>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' != '})), 'infix:<ne>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' ne '})), 'infix:<eq>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' eq '})), 'infix:<&>', (new p5HashRef({'fix' : 'infix', 'prec' : 11, 'str' : ' & '})), 'infix:<|>', (new p5HashRef({'fix' : 'infix', 'prec' : 12, 'str' : ' | '})), 'infix:<^>', (new p5HashRef({'fix' : 'infix', 'prec' : 12, 'str' : ' ^ '})), 'infix:<..>', (new p5HashRef({'fix' : 'infix', 'prec' : 13, 'str' : ' .. '})), 'infix:<...>', (new p5HashRef({'fix' : 'infix', 'prec' : 13, 'str' : ' ... '})), 'infix:<~~>', (new p5HashRef({'fix' : 'infix', 'prec' : 13, 'str' : ' ~~ '})), 'infix:<&&>', (new p5HashRef({'fix' : 'infix', 'prec' : 14, 'str' : ' && '})), 'infix:<||>', (new p5HashRef({'fix' : 'infix', 'prec' : 15, 'str' : ' || '})), 'infix:<//>', (new p5HashRef({'fix' : 'infix', 'prec' : 15, 'str' : ' // '})), 'ternary:<? :>', (new p5HashRef({'fix' : 'ternary', 'prec' : 16})), 'infix:<=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' = '})), 'infix:<**=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' **= '})), 'infix:<+=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' += '})), 'infix:<-=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' -= '})), 'infix:<*=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' *= '})), 'infix:</=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' /= '})), 'infix:<x=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' x= '})), 'infix:<|=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' |= '})), 'infix:<&=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' &= '})), 'infix:<.=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' .= '})), 'infix:<<<=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' <<= '})), 'infix:<>>=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' >>= '})), 'infix:<%=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' %= '})), 'infix:<||=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' ||= '})), 'infix:<&&=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' &&= '})), 'infix:<^=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' ^= '})), 'infix:<//=>', (new p5HashRef({'fix' : 'infix', 'prec' : 17, 'str' : ' //= '})), 'infix:<=>>', (new p5HashRef({'fix' : 'infix', 'prec' : 18, 'str' : ' => '})), 'list:<,>', (new p5HashRef({'fix' : 'list', 'prec' : 19, 'str' : ', '})), 'prefix:<not>', (new p5HashRef({'fix' : 'prefix', 'prec' : 20, 'str' : ' not '})), 'infix:<and>', (new p5HashRef({'fix' : 'infix', 'prec' : 21, 'str' : ' and '})), 'infix:<or>', (new p5HashRef({'fix' : 'infix', 'prec' : 22, 'str' : ' or '})), 'infix:<xor>', (new p5HashRef({'fix' : 'infix', 'prec' : 22, 'str' : ' xor '}))]));
		p5for(p5make_package('main'), "v__", function () {
				p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'].p5hset(('prefix:<' + p5str(p5make_package('main')['v__']) + '>'), ((new p5HashRef({'fix' : 'prefix', 'prec' : 8, 'str' : (p5str(p5make_package('main')['v__']) + ' ')}))));
			}, ['-r', '-w', '-x', '-o', '-R', '-W', '-X', '-O', '-e', '-z', '-s', '-f', '-d', '-l', '-p', '-S', '-b', '-c', '-t', '-u', '-g', '-k', '-T', '-B', '-M', '-A', '-C'], false, '');
		p5for(p5make_package('main'), "v__", function () {
				p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'].p5hset(('prefix:<' + p5str(p5make_package('main')['v__']) + '>'), ((new p5HashRef({'fix' : 'parsed', 'prec' : 15, 'str' : p5make_package('main')['v__']}))));
			}, ['do', 'sub', 'my', 'our', 'state', 'local', 'eval', 'map', 'grep', 'sort'], false, '');
		var Hash_tab = {};
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'tab', (function () {
			var tmp4276;
			tmp4276 = function (List__, p5want) {
				var v_level;
				v_level = (List__.p5aget(0));
				return (Hash_tab.p5hset(p5str(v_level), (p5defined_or(Hash_tab.p5hget(p5str(v_level)), function () {
									return p5str_replicate('    ',p5num(v_level))
								}))));
			};
			tmp4276._prototype_ = null;
			return tmp4276
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'render', (function () {
			var tmp4277;
			tmp4277 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4278 = p5list_to_a([List__]);
					v_data = tmp4278.shift();
					v_level = tmp4278.shift();
					v_out = tmp4278.shift();
				return (function () {
						if ( p5bool(p5pkg['Perlito5::Perl5::PrettyPrinter'].ref([v_data], 0)) ) {
						return ((Hash_dispatch.p5hget(p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0))))([v_data, v_level, v_out], p5want));
					}
					else {
						return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([v_data]));
					}
					})()
			};
			tmp4277._prototype_ = null;
			return tmp4277
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'op_precedence', (function () {
			var tmp4279;
			tmp4279 = function (List__, p5want) {
				try {
					var v_data;
					var tmp4280 = p5list_to_a([List__]);
					v_data = tmp4280.shift();
					p5and(!( p5bool(p5pkg['Perlito5::Perl5::PrettyPrinter'].ref([v_data], 0))), function () {
						throw(p5context([0], p5want))
					});
					p5and((p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) != 'op'), function () {
						throw(p5context([0], p5want))
					});
					return (p5or(p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'].p5hget_hash(p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)))._hash_.p5hget('prec'), function () {
							return 0
						}));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4279._prototype_ = null;
			return tmp4279
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'statement_need_semicolon', (function () {
			var tmp4281;
			tmp4281 = function (List__, p5want) {
				try {
					var v_data;
					var tmp4282 = p5list_to_a([List__]);
					v_data = tmp4282.shift();
					p5and(!( p5bool(p5pkg['Perlito5::Perl5::PrettyPrinter'].ref([v_data], 0))), function () {
						throw(p5context([1], p5want))
					});
					p5and(p5or((p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'block'), function () {
						return p5or((p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'comment'), function () {
							return (p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'label')
						})
					}), function () {
						throw(p5context([0], p5want))
					});
					(function () {
						if ( (p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'stmt') ) {
						(function () {
							if ( p5bool(p5pkg['Perlito5::Perl5::PrettyPrinter'].ref([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)], 0)) ) {
							(function () {
								var v_dd;
								v_dd = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1));
								(function () {
									if ( (p5str((v_dd || (v_dd = new p5ArrayRef([])))._array_.p5aget(0)) == 'keyword') ) {
									p5and(p5and(p5pkg['Perlito5::Perl5::PrettyPrinter'].ref([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(p5negative( 1)))], 0), function () {
										return (p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget_array(p5num(p5negative( 1)))._array_.p5aget(0)) == 'block')
									}), function () {
										throw(p5context([0], p5want))
									});
								}
								})();
							})();
						}
						})();
					}
					})();
					return (p5context([1], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4281._prototype_ = null;
			return tmp4281
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'op_render', (function () {
			var tmp4283;
			tmp4283 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var v_current_op;
				var tmp4284 = p5list_to_a([List__]);
					v_data = tmp4284.shift();
					v_level = tmp4284.shift();
					v_out = tmp4284.shift();
					v_current_op = tmp4284.shift();
				return (function () {
						if ( p5bool(p5pkg['Perlito5::Perl5::PrettyPrinter'].ref([v_data], 0)) ) {
						var v_this_prec;
						v_this_prec = (p5pkg['Perlito5::Perl5::PrettyPrinter'].op_precedence([v_data], 0));
						p5and(p5and(v_this_prec, function () {
							return p5and((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec'), function () {
								return (p5num((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec')) < p5num(v_this_prec))
							})
						}), function () {
							return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(['('])
						});
						p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_data, v_level, v_out], null);
						return (p5and(p5and(v_this_prec, function () {
								return p5and((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec'), function () {
									return (p5num((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec')) < p5num(v_this_prec))
								})
							}), function () {
								return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([')'])
							}));
					}
					else {
						return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([v_data]));
					}
					})()
			};
			tmp4283._prototype_ = null;
			return tmp4283
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'op', (function () {
			var tmp4285;
			tmp4285 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4286 = p5list_to_a([List__]);
					v_data = tmp4286.shift();
					v_level = tmp4286.shift();
					v_out = tmp4286.shift();
					var v_op;
					v_op = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1));
					var v_spec;
					v_spec = (p5or(p5pkg[p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl5::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl5::PrettyPrinter']['Hash_op'].p5hget(p5str(v_op)), function () {
								return p5pkg['Perlito5::Perl5::PrettyPrinter'].die([].concat([('unknown op: ' + p5str(v_op))]), 0)
							}));
					(function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'infix') ) {
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(3), v_level, v_out, v_spec]), null);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'prefix') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'postfix') ) {
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'ternary') ) {
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([' ? ']);
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(3), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([' : ']);
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(4), v_level, v_out, v_spec]), null);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'deref') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str'), '{']));
						p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(['}']);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'circumfix') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						(function () {
							var v_line;
							(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
									p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)), v_level, v_out, v_spec]), null);
									p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1))), function () {
										return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([', '])
									});
								}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4287", 0)]), false, '') })()
						})();
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')))]));
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'list') ) {
						(function () {
							var v_line;
							(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
									p5pkg['Perlito5::Perl5::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)), v_level, v_out, v_spec]), null);
									p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1))), function () {
										return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]))
									});
								}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4288", 0)]), false, '') })()
						})();
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'parsed') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						(function () {
							var v_line;
							(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
									var v_d;
									v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
									p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([' ']);
									p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_d, v_level, v_out], null);
								}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4289", 0)]), false, '') })()
						})();
					}
					else {
						p5pkg['Perlito5::Perl5::PrettyPrinter'].die([].concat([('unknown fixity: ' + p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')))]), null);
					}
					})()
					})()
					})()
					})()
					})()
					})()
					})()
					})();
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4285._prototype_ = null;
			return tmp4285
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'call', (function () {
			var tmp4290;
			tmp4290 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4291 = p5list_to_a([List__]);
					v_data = tmp4291.shift();
					v_level = tmp4291.shift();
					v_out = tmp4291.shift();
				var List_dd = [];
				List_dd = p5list_to_a([p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter')]);
				List_dd.shift();
				var v_open;
				v_open = ('(');
				p5pkg['Perlito5::Perl5::PrettyPrinter'].render(p5list_to_a([List_dd.shift(), v_level, v_out]), null);
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(['->']);
				var v_d;
				v_d = (List_dd.p5aget(0));
				p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_d, v_level, v_out], null);
				List_dd.p5aset(0, ('list:<,>'));
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([v_open]);
				p5pkg['Perlito5::Perl5::PrettyPrinter'].op(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', List_dd]))), v_level, v_out]), null);
				return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str(v_open))])));
			};
			tmp4290._prototype_ = null;
			return tmp4290
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'apply', (function () {
			var tmp4292;
			tmp4292 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4293 = p5list_to_a([List__]);
					v_data = tmp4293.shift();
					v_level = tmp4293.shift();
					v_out = tmp4293.shift();
				var List_dd = [];
				List_dd = p5list_to_a([p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter')]);
				List_dd.shift();
				var v_open;
				v_open = (List_dd.shift());
				var v_d;
				v_d = (List_dd.p5aget(0));
				(function () {
						if ( (p5str(v_d) == 'return') ) {
						v_open = (' ');
					}
					})();
				p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_d, v_level, v_out], null);
				List_dd.p5aset(0, ('list:<,>'));
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([v_open]);
				p5pkg['Perlito5::Perl5::PrettyPrinter'].op(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', List_dd]))), v_level, v_out]), null);
				return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str(v_open))])));
			};
			tmp4292._prototype_ = null;
			return tmp4292
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'paren', (function () {
			var tmp4294;
			tmp4294 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4295 = p5list_to_a([List__]);
					v_data = tmp4295.shift();
					v_level = tmp4295.shift();
					v_out = tmp4295.shift();
				var List_dd = [];
				List_dd = p5list_to_a([p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter')]);
				List_dd.shift();
				var v_open;
				v_open = (List_dd.p5aget(0));
				List_dd.p5aset(0, ('list:<,>'));
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([v_open]);
				p5pkg['Perlito5::Perl5::PrettyPrinter'].op(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', List_dd]))), v_level, v_out]), null);
				return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str(v_open))])));
			};
			tmp4294._prototype_ = null;
			return tmp4294
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'paren_semicolon', (function () {
			var tmp4296;
			tmp4296 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4297 = p5list_to_a([List__]);
					v_data = tmp4297.shift();
					v_level = tmp4297.shift();
					v_out = tmp4297.shift();
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
				(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								p5and(p5num(p5array_deref((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget_array(p5num(v_line)), 'Perlito5::Perl5::PrettyPrinter')), function () {
									return p5pkg['Perlito5::Perl5::PrettyPrinter'].render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)), v_level, v_out]), null)
								});
								(function () {
									if ( (p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1))) ) {
									(function () {
										if ( p5bool(p5num(p5array_deref((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget_array((p5num(v_line) + 1)), 'Perlito5::Perl5::PrettyPrinter'))) ) {
										p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(['; ']);
									}
									else {
										p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([';']);
									}
									})();
								}
								})();
							}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4298", 0)]), false, '') })()
					})();
				return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)))])));
			};
			tmp4296._prototype_ = null;
			return tmp4296
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'label', (function () {
			var tmp4299;
			tmp4299 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4300 = p5list_to_a([List__]);
					v_data = tmp4300.shift();
					v_level = tmp4300.shift();
					v_out = tmp4300.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1), ':']));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4299._prototype_ = null;
			return tmp4299
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'keyword', (function () {
			var tmp4301;
			tmp4301 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4302 = p5list_to_a([List__]);
					v_data = tmp4302.shift();
					v_level = tmp4302.shift();
					v_out = tmp4302.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4301._prototype_ = null;
			return tmp4301
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'bareword', (function () {
			var tmp4303;
			tmp4303 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4304 = p5list_to_a([List__]);
					v_data = tmp4304.shift();
					v_level = tmp4304.shift();
					v_out = tmp4304.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4303._prototype_ = null;
			return tmp4303
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'number', (function () {
			var tmp4305;
			tmp4305 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4306 = p5list_to_a([List__]);
					v_data = tmp4306.shift();
					v_level = tmp4306.shift();
					v_out = tmp4306.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4305._prototype_ = null;
			return tmp4305
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'comment', (function () {
			var tmp4307;
			tmp4307 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4308 = p5list_to_a([List__]);
					v_data = tmp4308.shift();
					v_level = tmp4308.shift();
					v_out = tmp4308.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4307._prototype_ = null;
			return tmp4307
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'statement', (function () {
			var tmp4309;
			tmp4309 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4310 = p5list_to_a([List__]);
					v_data = tmp4310.shift();
					v_level = tmp4310.shift();
					v_out = tmp4310.shift();
				(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								var v_d;
								v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
								p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_d, v_level, v_out], null);
								return (p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1))), function () {
										return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([' '])
									}));
							}, p5list_to_a([p5range(1, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4311", 0)]), false, '') })()
					})()
			};
			tmp4309._prototype_ = null;
			return tmp4309
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'statement_modifier', (function () {
			var tmp4312;
			tmp4312 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4313 = p5list_to_a([List__]);
					v_data = tmp4313.shift();
					v_level = tmp4313.shift();
					v_out = tmp4313.shift();
				p5pkg['Perlito5::Perl5::PrettyPrinter'].render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1), v_level, v_out]), null);
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([String.fromCharCode(10), p5pkg['Perlito5::Perl5::PrettyPrinter'].tab([(p5num(v_level) + 1)], 1)]));
				return (p5pkg['Perlito5::Perl5::PrettyPrinter'].render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out]), p5want));
			};
			tmp4312._prototype_ = null;
			return tmp4312
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'block', (function () {
			var tmp4314;
			tmp4314 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4315 = p5list_to_a([List__]);
					v_data = tmp4315.shift();
					v_level = tmp4315.shift();
					v_out = tmp4315.shift();
					(function () {
						if ( (p5num(p5num(p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter'))) == 1) ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(['{}']);
						throw(p5context([], p5want));
					}
					})();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(['{', String.fromCharCode(10)]);
					(function () {
						var tmp4316 = v_level;
						v_level = p5incr_(tmp4316);
						return tmp4316
					})();
					(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								var v_d;
								v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
								p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([p5pkg['Perlito5::Perl5::PrettyPrinter'].tab([v_level], 1)]));
								p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_d, v_level, v_out], null);
								p5and(p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1))), function () {
									return p5pkg['Perlito5::Perl5::PrettyPrinter'].statement_need_semicolon([v_d], 0)
								}), function () {
									return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([';'])
								});
								p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([String.fromCharCode(10)]);
							}, p5list_to_a([p5range(1, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4317", 0)]), false, '') })()
					})();
					(function () {
						var tmp4318 = v_level;
						v_level = p5decr_(tmp4318);
						return tmp4318
					})();
					return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([p5pkg['Perlito5::Perl5::PrettyPrinter'].tab([v_level], 1), '}'])));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4314._prototype_ = null;
			return tmp4314
		})());
		p5typeglob_set('Perlito5::Perl5::PrettyPrinter', 'pretty_print', (function () {
			var tmp4319;
			tmp4319 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4320 = p5list_to_a([List__]);
					v_data = tmp4320.shift();
					v_level = tmp4320.shift();
					v_out = tmp4320.shift();
				(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								var v_d;
								v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
								p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push(p5list_to_a([p5pkg['Perlito5::Perl5::PrettyPrinter'].tab([v_level], 1)]));
								p5pkg['Perlito5::Perl5::PrettyPrinter'].render([v_d, v_level, v_out], null);
								p5and(p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1))), function () {
									return p5pkg['Perlito5::Perl5::PrettyPrinter'].statement_need_semicolon([v_d], 0)
								}), function () {
									return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([';'])
								});
								return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').p5push([String.fromCharCode(10)]));
							}, p5list_to_a([p5range(0, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl5::PrettyPrinter').length - 1), 1, "tmp4321", 0)]), false, '') })()
					})()
			};
			tmp4319._prototype_ = null;
			return tmp4319
		})());
		1;
	})();
	// use Perlito5::Perl5::PrettyPrinter
;
	(function () {
		p5make_package('Perlito5::Perl5::Runtime');
		p5typeglob_set('Perlito5::Perl5::Runtime', 'emit_perl5', (function () {
			var tmp4322;
			tmp4322 = function (List__, p5want) {
				return (p5context([((String.fromCharCode(10) + 'use v5.10;' + String.fromCharCode(10) + 'use feature ' + String.fromCharCode(39) + 'say' + String.fromCharCode(39) + ';' + String.fromCharCode(10) + String.fromCharCode(10)))], p5want));
			};
			tmp4322._prototype_ = null;
			return tmp4322
		})());
		1;
	})();
	// use Perlito5::Perl5::Runtime
;
	(function () {
		p5make_package('Data::Dumper');
		// use Perlito5::Dumper
;
		p5typeglob_set('Data::Dumper', 'import', (function () {
			var tmp4323;
			tmp4323 = function (List__, p5want) {
				try {
					var v_pkg;
					v_pkg = (List__.shift());
					var v_callpkg;
					v_callpkg = (p5pkg['Data::Dumper'].caller([0], 0));
					p5typeglob_deref_set(((p5str(v_callpkg) + '::Dumper')), (p5pkg['Data::Dumper'].Dumper), 'Data::Dumper');
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4323._prototype_ = null;
			return tmp4323
		})());
		p5typeglob_set('Data::Dumper', 'Dumper', (function () {
			var tmp4324;
			tmp4324 = function (List__, p5want) {
				var v_seen;
				v_seen = ((new p5HashRef({})));
				var v_level;
				v_level = ('    ');
				var List_out = [];
				(function () {
						var v_i;
						(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
								var v_pos;
								v_pos = (('$VAR' + p5str((p5num(v_i) + 1))));
								List_out.p5push([(p5str(v_pos) + ' = ' + p5str(p5pkg['Perlito5::Dumper']._dumper(p5list_to_a([List__.p5aget(p5num(v_i)), v_level, v_seen, v_pos]), 0)) + ';' + String.fromCharCode(10))]);
							}, p5list_to_a([p5range(0, (List__.length - 1), 1, "tmp4325", 0)]), false, '') })()
					})();
				return (p5context([p5pkg['Data::Dumper'].join([''].concat(p5list_to_a([List_out])), p5want)], p5want));
			};
			tmp4324._prototype_ = null;
			return tmp4324
		})());
		1;
	})();
	(function () {
		p5make_package('Perlito5::TreeGrammar');
		// use Data::Dumper
;
		// use strict
;
		var Hash_dispatch = {};
		Hash_dispatch = {'Ref' : (function () {
					var tmp4326;
					tmp4326 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Ref(p5list_to_a([List__]), p5want));
					};
					tmp4326._prototype_ = null;
					return tmp4326
				})(), 'Lookup' : (function () {
					var tmp4327;
					tmp4327 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Lookup(p5list_to_a([List__]), p5want));
					};
					tmp4327._prototype_ = null;
					return tmp4327
				})(), 'Index' : (function () {
					var tmp4328;
					tmp4328 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Index(p5list_to_a([List__]), p5want));
					};
					tmp4328._prototype_ = null;
					return tmp4328
				})(), 'Value' : (function () {
					var tmp4329;
					tmp4329 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Value(p5list_to_a([List__]), p5want));
					};
					tmp4329._prototype_ = null;
					return tmp4329
				})(), 'And' : (function () {
					var tmp4330;
					tmp4330 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].And(p5list_to_a([List__]), p5want));
					};
					tmp4330._prototype_ = null;
					return tmp4330
				})(), 'Or' : (function () {
					var tmp4331;
					tmp4331 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Or(p5list_to_a([List__]), p5want));
					};
					tmp4331._prototype_ = null;
					return tmp4331
				})(), 'Not' : (function () {
					var tmp4332;
					tmp4332 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Not(p5list_to_a([List__]), p5want));
					};
					tmp4332._prototype_ = null;
					return tmp4332
				})(), 'Action' : (function () {
					var tmp4333;
					tmp4333 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Action(p5list_to_a([List__]), p5want));
					};
					tmp4333._prototype_ = null;
					return tmp4333
				})(), 'Progn' : (function () {
					var tmp4334;
					tmp4334 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Progn(p5list_to_a([List__]), p5want));
					};
					tmp4334._prototype_ = null;
					return tmp4334
				})(), 'Star' : (function () {
					var tmp4335;
					tmp4335 = function (List__, p5want) {
						return (p5pkg['Perlito5::TreeGrammar'].Star(p5list_to_a([List__]), p5want));
					};
					tmp4335._prototype_ = null;
					return tmp4335
				})()};
		p5typeglob_set('Perlito5::TreeGrammar', 'render', (function () {
			var tmp4336;
			tmp4336 = function (List__, p5want) {
				var v_rule;
				var v_node;
				var tmp4337 = p5list_to_a([List__]);
					v_rule = tmp4337.shift();
					v_node = tmp4337.shift();
				return ((Hash_dispatch.p5hget(p5str((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(0))))([v_rule, v_node], p5want));
			};
			tmp4336._prototype_ = null;
			return tmp4336
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'scan', (function () {
			var tmp4338;
			tmp4338 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4339 = p5list_to_a([List__]);
					v_rule = tmp4339.shift();
					v_node = tmp4339.shift();
					p5and(v_rule, function () {
						return p5pkg['Perlito5::TreeGrammar'].render([v_rule, v_node], null)
					});
					(function () {
						if ( (p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0) == 'ARRAY') ) {
						p5for(p5make_package('main'), "v__", function () {
								p5pkg['Perlito5::TreeGrammar'].scan([v_rule, p5make_package('main')['v__']], null);
							}, p5list_to_a([p5array_deref((v_node || (v_node = new p5ArrayRef([]))), 'Perlito5::TreeGrammar')]), false, '');
					}
					else (function () {
						if ( p5bool(p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0)) ) {
						p5for(p5make_package('main'), "v__", function () {
								p5pkg['Perlito5::TreeGrammar'].scan([v_rule, p5make_package('main')['v__']], null);
							}, p5list_to_a([p5pkg['Perlito5::TreeGrammar'].values([p5hash_deref((v_node || (v_node = new p5HashRef({}))), 'Perlito5::TreeGrammar')], 1)]), false, '');
					}
					})()
					})();
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4338._prototype_ = null;
			return tmp4338
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Action', (function () {
			var tmp4340;
			tmp4340 = function (List__, p5want) {
				var v_rule;
				var v_node;
				var tmp4341 = p5list_to_a([List__]);
					v_rule = tmp4341.shift();
					v_node = tmp4341.shift();
				((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1))([v_node], null);
				return (p5context([1], p5want));
			};
			tmp4340._prototype_ = null;
			return tmp4340
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Not', (function () {
			var tmp4342;
			tmp4342 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4343 = p5list_to_a([List__]);
					v_rule = tmp4343.shift();
					v_node = tmp4343.shift();
					var v_result;
					p5and(p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1), v_node]), 0), function () {
						throw(p5context([], p5want))
					});
					return (p5context([1], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4342._prototype_ = null;
			return tmp4342
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Star', (function () {
			var tmp4344;
			tmp4344 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4345 = p5list_to_a([List__]);
					v_rule = tmp4345.shift();
					v_node = tmp4345.shift();
					var v_result;
					(function () {
						p5while(function () {
							return (p5or(p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1), v_node]), 0), function () {
									(function () {
									throw(p5context([], p5want))
								})()
								}));
						}, function () {
							return 1
						}, false, '', 0)
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4344._prototype_ = null;
			return tmp4344
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Progn', (function () {
			var tmp4346;
			tmp4346 = function (List__, p5want) {
				var v_rule;
				var v_node;
				var tmp4347 = p5list_to_a([List__]);
					v_rule = tmp4347.shift();
					v_node = tmp4347.shift();
				var v_result;
				p5for(p5make_package('main'), "v__", function () {
							v_result = (p5pkg['Perlito5::TreeGrammar'].render([p5make_package('main')['v__'], v_node], 0));
						}, p5list_to_a([p5list_slice(p5array_deref((v_rule || (v_rule = new p5ArrayRef([]))), 'Perlito5::TreeGrammar'), p5list_to_a([p5range(1, (p5array_deref((v_rule || (v_rule = new p5ArrayRef([]))), 'Perlito5::TreeGrammar').length - 1), 1, "tmp4348", 0)]), 1)]), false, '');
				return (p5context([v_result], p5want));
			};
			tmp4346._prototype_ = null;
			return tmp4346
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'And', (function () {
			var tmp4349;
			tmp4349 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4350 = p5list_to_a([List__]);
					v_rule = tmp4350.shift();
					v_node = tmp4350.shift();
					var v_result;
					p5for(p5make_package('main'), "v__", function () {
							p5or((v_result = (p5pkg['Perlito5::TreeGrammar'].render([p5make_package('main')['v__'], v_node], 0))), function () {
								throw(p5context([], p5want))
							});
						}, p5list_to_a([p5list_slice(p5array_deref((v_rule || (v_rule = new p5ArrayRef([]))), 'Perlito5::TreeGrammar'), p5list_to_a([p5range(1, (p5array_deref((v_rule || (v_rule = new p5ArrayRef([]))), 'Perlito5::TreeGrammar').length - 1), 1, "tmp4351", 0)]), 1)]), false, '');
					return (p5context([v_result], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4349._prototype_ = null;
			return tmp4349
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Or', (function () {
			var tmp4352;
			tmp4352 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4353 = p5list_to_a([List__]);
					v_rule = tmp4353.shift();
					v_node = tmp4353.shift();
					var v_result;
					p5for(p5make_package('main'), "v__", function () {
							p5and((v_result = (p5pkg['Perlito5::TreeGrammar'].render([p5make_package('main')['v__'], v_node], 0))), function () {
								throw(p5context([v_result], p5want))
							});
						}, p5list_to_a([p5list_slice(p5array_deref((v_rule || (v_rule = new p5ArrayRef([]))), 'Perlito5::TreeGrammar'), p5list_to_a([p5range(1, (p5array_deref((v_rule || (v_rule = new p5ArrayRef([]))), 'Perlito5::TreeGrammar').length - 1), 1, "tmp4354", 0)]), 1)]), false, '');
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4352._prototype_ = null;
			return tmp4352
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Ref', (function () {
			var tmp4355;
			tmp4355 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4356 = p5list_to_a([List__]);
					v_rule = tmp4356.shift();
					v_node = tmp4356.shift();
					p5and((p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0) != p5str((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1))), function () {
						throw(p5context([], p5want))
					});
					p5and(!( p5bool((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2))), function () {
						throw(p5context([1], p5want))
					});
					return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2), v_node]), p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4355._prototype_ = null;
			return tmp4355
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Lookup', (function () {
			var tmp4357;
			tmp4357 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4358 = p5list_to_a([List__]);
					v_rule = tmp4358.shift();
					v_node = tmp4358.shift();
					p5and(p5or(!( p5bool(p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0))), function () {
						return p5or((p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0) == 'ARRAY'), function () {
							return !( (v_node)._hash_.hasOwnProperty((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1)))
						})
					}), function () {
						throw(p5context([], p5want))
					});
					p5and(!( p5bool((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2))), function () {
						throw(p5context([1], p5want))
					});
					return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2), (v_node || (v_node = new p5HashRef({})))._hash_.p5hget(p5str((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1)))]), p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4357._prototype_ = null;
			return tmp4357
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Index', (function () {
			var tmp4359;
			tmp4359 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4360 = p5list_to_a([List__]);
					v_rule = tmp4360.shift();
					v_node = tmp4360.shift();
					p5and(p5or(!( p5bool(p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0))), function () {
						return p5or((p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0) != 'ARRAY'), function () {
							return !( (v_node)._array_.hasOwnProperty((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1)))
						})
					}), function () {
						throw(p5context([], p5want))
					});
					p5and(!( p5bool((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2))), function () {
						throw(p5context([1], p5want))
					});
					return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2), (v_node || (v_node = new p5ArrayRef([])))._array_.p5aget(p5num((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1)))]), p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4359._prototype_ = null;
			return tmp4359
		})());
		p5typeglob_set('Perlito5::TreeGrammar', 'Value', (function () {
			var tmp4361;
			tmp4361 = function (List__, p5want) {
				try {
					var v_rule;
					var v_node;
					var tmp4362 = p5list_to_a([List__]);
					v_rule = tmp4362.shift();
					v_node = tmp4362.shift();
					p5and(p5or(p5pkg['Perlito5::TreeGrammar'].ref([v_node], 0), function () {
						return (p5str(v_node) != p5str((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(1)))
					}), function () {
						throw(p5context([], p5want))
					});
					p5and(!( p5bool((v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2))), function () {
						throw(p5context([1], p5want))
					});
					return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(v_rule || (v_rule = new p5ArrayRef([])))._array_.p5aget(2), v_node]), p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4361._prototype_ = null;
			return tmp4361
		})());
		1;
	})();
	(function () {
		p5make_package('Perlito5::Perl6::TreeGrammar');
		// use Data::Dumper
;
		// use strict
;
		// use Perlito5::TreeGrammar
;
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'refactor_range_operator', (function () {
			var tmp4363;
			tmp4363 = function (List__, p5want) {
				var v_class;
				var v_in;
				var tmp4364 = p5list_to_a([List__]);
					v_class = tmp4364.shift();
					v_in = tmp4364.shift();
				return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Lookup', 'code', (new p5ArrayRef(['Value', 'infix:<..>']))]))), (new p5ArrayRef(p5list_to_a(['Lookup', 'arguments', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Index', 0, (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(['Ref', 'Perlito5::AST::Int'])), (new p5ArrayRef(p5list_to_a(['Lookup', 'int', (new p5ArrayRef(['Value', 0]))])))])))]))), (new p5ArrayRef(p5list_to_a(['Index', 1, (new p5ArrayRef(p5list_to_a(['Or', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(['Ref', 'Perlito5::AST::Int'])), (new p5ArrayRef(['Action', (function () {
	var tmp4365;
	tmp4365 = function (List__, p5want) {
		(v_in || (v_in = new p5HashRef({})))._hash_.p5hset('code', ('p6_prefix:<^>'));
		List__.p5aget_hash(0)._hash_.p5postincr('int');
		return (p5array_deref((v_in || (v_in = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Perl6::TreeGrammar').shift());
	};
	tmp4365._prototype_ = null;
	return tmp4365
})()]))]))), (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(['Ref', 'Perlito5::AST::Apply'])), (new p5ArrayRef(p5list_to_a(['Lookup', 'code', (new p5ArrayRef(['Value', 'prefix:<$#>']))]))), (new p5ArrayRef(['Action', (function () {
	var tmp4366;
	tmp4366 = function (List__, p5want) {
		p5pkg['Perlito5::Perl6::TreeGrammar'].bless([v_in, 'Perlito5::AST::Call'], null);
		(delete v_in._hash_['code']);
		(v_in || (v_in = new p5HashRef({})))._hash_.p5hset('method', ('keys'));
		p5array_deref((v_in || (v_in = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Perl6::TreeGrammar').shift();
		var v_invocant;
		v_invocant = (p5array_deref((v_in || (v_in = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Perl6::TreeGrammar').shift());
		return ((v_in || (v_in = new p5HashRef({})))._hash_.p5hset('invocant', ((v_invocant || (v_invocant = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0))));
	};
	tmp4366._prototype_ = null;
	return tmp4366
})()]))]))), (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(['Ref', 'Perlito5::AST::Var'])), (new p5ArrayRef(p5list_to_a(['Lookup', 'sigil', (new p5ArrayRef(['Value', '$#']))]))), (new p5ArrayRef(['Action', (function () {
	var tmp4367;
	tmp4367 = function (List__, p5want) {
		p5pkg['Perlito5::Perl6::TreeGrammar'].bless([v_in, 'Perlito5::AST::Call'], null);
		(delete v_in._hash_['code']);
		(v_in || (v_in = new p5HashRef({})))._hash_.p5hset('method', ('keys'));
		(v_in || (v_in = new p5HashRef({})))._hash_.p5hset('arguments', ((new p5ArrayRef([]))));
		var v_invocant;
		v_invocant = (List__.p5aget(0));
		(v_invocant || (v_invocant = new p5HashRef({})))._hash_.p5hset('sigil', ('@'));
		return ((v_in || (v_in = new p5HashRef({})))._hash_.p5hset('invocant', (v_invocant)));
	};
	tmp4367._prototype_ = null;
	return tmp4367
})()]))])))])))])))])))])))]))), v_in]), p5want));
			};
			tmp4363._prototype_ = null;
			return tmp4363
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'refactor_while_glob', (function () {
			var tmp4368;
			tmp4368 = function (List__, p5want) {
				var v_class;
				var v_in;
				var tmp4369 = p5list_to_a([List__]);
					v_class = tmp4369.shift();
					v_in = tmp4369.shift();
				return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::While', (new p5ArrayRef(p5list_to_a(['Lookup', 'cond', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(['Ref', 'Perlito5::AST::Apply'])), (new p5ArrayRef(p5list_to_a(['Lookup', 'code', (new p5ArrayRef(['Value', 'readline']))]))), (new p5ArrayRef(['Action', (function () {
	var tmp4370;
	tmp4370 = function (List__, p5want) {
		return (p5pkg['Perlito5::Perl6::TreeGrammar'].bless([v_in, 'Perlito5::AST::For'], p5want));
	};
	tmp4370._prototype_ = null;
	return tmp4370
})()]))])))])))]))), v_in]), p5want));
			};
			tmp4368._prototype_ = null;
			return tmp4368
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'refactor_sub_arguments', (function () {
			var tmp4371;
			tmp4371 = function (List__, p5want) {
				var v_class;
				var v_in;
				var tmp4372 = p5list_to_a([List__]);
					v_class = tmp4372.shift();
					v_in = tmp4372.shift();
				var v_rule;
				var v_result;
				p5context([v_rule, v_result], 0);
				v_rule = (p5pkg['Perlito5::Perl6::TreeGrammar'].is_sub(p5list_to_a([(new p5ArrayRef(['Action', (function () {
	var tmp4373;
	tmp4373 = function (List__, p5want) {
		var v_sub;
		v_sub = (List__.p5aget(0));
		var v_stmts;
		var v_var;
		return (p5pkg['Perlito5::TreeGrammar'].render(p5list_to_a([(new p5ArrayRef(p5list_to_a(['Lookup', 'block', (new p5ArrayRef(p5list_to_a(['Progn', (new p5ArrayRef(['Action', (function () {
	var tmp4374;
	tmp4374 = function (List__, p5want) {
		return ((v_stmts = (List__.p5aget(0))));
	};
	tmp4374._prototype_ = null;
	return tmp4374
})()])), (new p5ArrayRef(p5list_to_a(['Star', (new p5ArrayRef(p5list_to_a(['Index', 0, p5pkg['Perlito5::Perl6::TreeGrammar'].operator_eq(p5list_to_a(['infix:<=>', (new p5ArrayRef(p5list_to_a(['Lookup', 'arguments', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Index', 0, p5pkg['Perlito5::Perl6::TreeGrammar'].my_var(p5list_to_a([(new p5ArrayRef(['Action', (function () {
	var tmp4375;
	tmp4375 = function (List__, p5want) {
		return ((v_var = (List__.p5aget_hash(0)._hash_.p5hget('var'))));
	};
	tmp4375._prototype_ = null;
	return tmp4375
})()]))]), 1)]))), (new p5ArrayRef(p5list_to_a(['Index', 1, p5pkg['Perlito5::Perl6::TreeGrammar'].shift_arg([], 1)]))), (new p5ArrayRef(['Action', (function () {
	var tmp4376;
	tmp4376 = function (List__, p5want) {
		p5array_deref((v_sub || (v_sub = new p5HashRef({})))._hash_.p5hget_array('args'), 'Perlito5::Perl6::TreeGrammar').p5push([v_var]);
		return (p5array_deref((v_stmts || (v_stmts = new p5ArrayRef([]))), 'Perlito5::Perl6::TreeGrammar').shift());
	};
	tmp4376._prototype_ = null;
	return tmp4376
})()]))])))])))]), 1)])))])))])))]))), v_sub]), p5want));
	};
	tmp4373._prototype_ = null;
	return tmp4373
})()]))]), 0));
				return ((v_result = (p5pkg['Perlito5::TreeGrammar'].scan([v_rule, v_in], 0))));
			};
			tmp4371._prototype_ = null;
			return tmp4371
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'is_sub', (function () {
			var tmp4377;
			tmp4377 = function (List__, p5want) {
				return ((new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::Sub', ( p5bool(List__.length) ? (new p5ArrayRef(p5list_to_a(['Progn', List__]))) : p5context([], 1))]))));
			};
			tmp4377._prototype_ = null;
			return tmp4377
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'named_sub', (function () {
			var tmp4378;
			tmp4378 = function (List__, p5want) {
				return ((new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::Sub', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Lookup', 'name', (new p5ArrayRef(p5list_to_a(['Not', (new p5ArrayRef(['Value', '']))])))]))), ( p5bool(List__.length) ? (new p5ArrayRef(p5list_to_a(['Progn', List__]))) : p5context([], 1))])))]))));
			};
			tmp4378._prototype_ = null;
			return tmp4378
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'operator_eq', (function () {
			var tmp4379;
			tmp4379 = function (List__, p5want) {
				var v_name;
				v_name = (List__.shift());
				return ((new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::Apply', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Lookup', 'code', (new p5ArrayRef(['Value', v_name]))]))), ( p5bool(List__.length) ? (new p5ArrayRef(p5list_to_a(['Progn', List__]))) : p5context([], 1))])))]))));
			};
			tmp4379._prototype_ = null;
			return tmp4379
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'my_var', (function () {
			var tmp4380;
			tmp4380 = function (List__, p5want) {
				return ((new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::Decl', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Lookup', 'decl', (new p5ArrayRef(['Value', 'my']))]))), ( p5bool(List__.length) ? (new p5ArrayRef(p5list_to_a(['Progn', List__]))) : p5context([], 1))])))]))));
			};
			tmp4380._prototype_ = null;
			return tmp4380
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'var_is_at', (function () {
			var tmp4381;
			tmp4381 = function (List__, p5want) {
				return ((new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::Var', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Lookup', 'sigil', (new p5ArrayRef(['Value', '@']))]))), (new p5ArrayRef(p5list_to_a(['Lookup', 'name', (new p5ArrayRef(['Value', '_']))]))), ( p5bool(List__.length) ? (new p5ArrayRef(p5list_to_a(['Progn', List__]))) : p5context([], 1))])))]))));
			};
			tmp4381._prototype_ = null;
			return tmp4381
		})());
		p5typeglob_set('Perlito5::Perl6::TreeGrammar', 'shift_arg', (function () {
			var tmp4382;
			tmp4382 = function (List__, p5want) {
				return ((new p5ArrayRef(p5list_to_a(['Ref', 'Perlito5::AST::Apply', (new p5ArrayRef(p5list_to_a(['And', (new p5ArrayRef(p5list_to_a(['Lookup', 'code', (new p5ArrayRef(['Value', 'shift']))]))), (new p5ArrayRef(p5list_to_a(['Or', (new p5ArrayRef(p5list_to_a(['Lookup', 'arguments', (new p5ArrayRef(p5list_to_a(['Not', (new p5ArrayRef(['Index', 0]))])))]))), (new p5ArrayRef(p5list_to_a(['Lookup', 'arguments', (new p5ArrayRef(p5list_to_a(['Index', 0, p5pkg['Perlito5::Perl6::TreeGrammar'].var_is_at([], 1)])))])))]))), ( p5bool(List__.length) ? (new p5ArrayRef(p5list_to_a(['Progn', List__]))) : p5context([], 1))])))]))));
			};
			tmp4382._prototype_ = null;
			return tmp4382
		})());
		1;
	})();
	(function () {
		null;
		// use Perlito5::AST
;
		// use strict
;
		// use Perlito5::Perl6::TreeGrammar
;
		p5block(function (v) {}, function () {
				p5make_package('Perlito5::Perl6');
				p5typeglob_set('Perlito5::Perl6', 'emit_perl6_block', (function () {
					var tmp4383;
					tmp4383 = function (List__, p5want) {
						var v_block;
						v_block = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::Perl6'], function (p5want) {
	return (p5and((p5make_package('main')['v__'] != null), function () {
		return p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1)
	}));
}, p5list_to_a([p5array_deref((v_block || (v_block = new p5ArrayRef([]))), 'Perlito5::Perl6')]))]))));
					};
					tmp4383._prototype_ = null;
					return tmp4383
				})());
				var Hash_safe_char = {};
				Hash_safe_char = p5a_to_h([' ', 1, '!', 1, '"', 1, '#', 1, '$', 1, '%', 1, '&', 1, '(', 1, ')', 1, '*', 1, '+', 1, ',', 1, '-', 1, '.', 1, '/', 1, ':', 1, ';', 1, '<', 1, '=', 1, '>', 1, '?', 1, '@', 1, '[', 1, ']', 1, '^', 1, '_', 1, '`', 1, '{', 1, '|', 1, '}', 1, '~', 1]);
				p5typeglob_set('Perlito5::Perl6', 'escape_string', (function () {
					var tmp4384;
					tmp4384 = function (List__, p5want) {
						try {
							var v_s;
							v_s = (List__.shift());
							var List_out = [];
							var v_tmp;
							v_tmp = ('');
							p5and((p5str(v_s) == ''), function () {
								throw(p5context([String.fromCharCode(39) + String.fromCharCode(39)], p5want))
							});
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_c;
										v_c = (p5str(v_s).substr(p5num(v_i), 1));
										(function () {
											if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (((p5str(v_c) >= '0') && (p5str(v_c) <= '9')) || (Hash_safe_char).hasOwnProperty(v_c)))) ) {
											v_tmp = ((p5str(v_tmp) + p5str(v_c)));
										}
										else {
											p5and((p5str(v_tmp) != ''), function () {
												return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
											});
											List_out.p5push([('chr(' + p5str(p5pkg['Perlito5::Perl6'].ord([v_c], 0)) + ')')]);
											v_tmp = ('');
										}
										})();
									}, p5list_to_a([p5range(0, (p5pkg['Perlito5::Perl6'].length([v_s], 0) - 1), 1, "tmp4385", 0)]), false, '') })()
							})();
							p5and((p5str(v_tmp) != ''), function () {
								return List_out.p5push([(String.fromCharCode(39) + p5str(v_tmp) + String.fromCharCode(39))])
							});
							p5and((p5num(List_out.length) < 2), function () {
								throw((p5want ? List_out : List_out.length))
							});
							return ((new p5ArrayRef(p5list_to_a(['op', 'list:<~>', List_out]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4384._prototype_ = null;
					return tmp4384
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_perl6', (function () {
					var tmp4386;
					tmp4386 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var List_body = [];
						List_body = p5list_to_a([p5grep(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
										return ((p5make_package('main')['v__'] != null));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))]);
						var List_out = [];
						var v_pkg;
						v_pkg = ((new p5HashRef(p5a_to_h(p5list_to_a(['name', 'main', 'body', (new p5ArrayRef([]))])))));
						(function () {
								var v_stmt;
								(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
										(function () {
											if ( ((p5pkg['Perlito5::AST::CompUnit'].ref([v_stmt], 0) == 'Perlito5::AST::Apply') && (p5str((v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget('code')) == 'package')) ) {
											p5make_package('Perlito5')['v_PKG_NAME'] = ((v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget('namespace'));
											p5and(p5num(p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')), function () {
												return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'class'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget('name')]))), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))])))])))]))
											});
											v_pkg = ((new p5HashRef(p5a_to_h(p5list_to_a(['name', (v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget('namespace'), 'body', (new p5ArrayRef([]))])))));
										}
										else {
											p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit').p5push([v_stmt]);
										}
										})();
									}, p5list_to_a([List_body]), false, '') })()
							})();
						p5and(p5num(p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'class'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget('name')]))), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))])))])))]))
							});
						return ((p5want ? List_out : List_out.length));
					};
					tmp4386._prototype_ = null;
					return tmp4386
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_perl6_program', (function () {
					var tmp4387;
					tmp4387 = function (List__, p5want) {
						var v_comp_units;
						v_comp_units = (List__.p5aget(0));
						var List_body = [];
						List_body = p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')]);
						var List_out = [];
						var v_pkg;
						v_pkg = ((new p5HashRef(p5a_to_h(p5list_to_a(['name', 'main', 'body', (new p5ArrayRef([]))])))));
						(function () {
								var v_stmt;
								(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
										(function () {
											if ( ((p5pkg['Perlito5::AST::CompUnit'].ref([v_stmt], 0) == 'Perlito5::AST::Apply') && (p5str((v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget('code')) == 'package')) ) {
											p5make_package('Perlito5')['v_PKG_NAME'] = ((v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget('namespace'));
											(function () {
												if ( p5bool(p5num(p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit'))) ) {
												(function () {
													if ( (p5str((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget('name')) == 'main') ) {
													List_out.p5push(p5list_to_a([p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))]));
												}
												else {
													List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'class'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget('name')]))), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))])))])))]));
												}
												})();
											}
											})();
											v_pkg = ((new p5HashRef(p5a_to_h(p5list_to_a(['name', (v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget('namespace'), 'body', (new p5ArrayRef([]))])))));
										}
										else {
											p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit').p5push([v_stmt]);
										}
										})();
									}, p5list_to_a([List_body]), false, '') })()
							})();
						(function () {
								if ( p5bool(p5num(p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit'))) ) {
								(function () {
									if ( (p5str((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget('name')) == 'main') ) {
									List_out.p5push(p5list_to_a([p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))]));
								}
								else {
									List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'class'])), (new p5ArrayRef(p5list_to_a(['bareword', (v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget('name')]))), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_pkg || (v_pkg = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]))])))])))]));
								}
								})();
							}
							})();
						return ((p5want ? List_out : List_out.length));
					};
					tmp4387._prototype_ = null;
					return tmp4387
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_perl6', (function () {
					var tmp4388;
					tmp4388 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['number', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('int')]))));
					};
					tmp4388._prototype_ = null;
					return tmp4388
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_perl6', (function () {
					var tmp4389;
					tmp4389 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['number', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('num')]))));
					};
					tmp4389._prototype_ = null;
					return tmp4389
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_perl6', (function () {
					var tmp4390;
					tmp4390 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return (p5pkg['Perlito5::Perl6'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('buf')]), p5want));
					};
					tmp4390._prototype_ = null;
					return tmp4390
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_perl6', (function () {
					var tmp4391;
					tmp4391 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var List_out = [];
						p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
						(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(p5list_to_a(['keyword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')]))), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 1)])))]));
							}
							else {
								List_out.p5push(p5list_to_a([p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts')]), 1)]));
							}
							})();
						(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
						return ((p5want ? List_out : List_out.length));
					};
					tmp4391._prototype_ = null;
					return tmp4391
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_perl6_index', (function () {
					var tmp4392;
					tmp4392 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_index;
							v_index = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'));
							(function () {
								if ( (p5bool(p5call(v_index, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_index || (v_index = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<->')) ) {
								(function () {
									var v_arg;
									v_arg = ((v_index || (v_index = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Int'], 0)) ) {
										throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<->', (new p5ArrayRef(['bareword', '*'])), p5call(v_arg, 'emit_perl6', [], 1)]))));
									}
									})();
								})();
							}
							})();
							return (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_perl6', [], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4392._prototype_ = null;
					return tmp4392
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_perl6', (function () {
					var tmp4393;
					tmp4393 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl6', [], 1), p5call(v_self, 'emit_perl6_index', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$') || (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hset('sigil', ('@'));
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl6', [], 1), p5call(v_self, 'emit_perl6_index', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '[', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_perl6', [], 1), p5call(v_self, 'emit_perl6_index', [], 1)]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl6', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call(v_self, 'emit_perl6_index', [], 1)])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4393._prototype_ = null;
					return tmp4393
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_perl6', (function () {
					var tmp4394;
					tmp4394 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hset('sigil', ('%'));
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl6', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl6', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$') || (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hset('sigil', ('%'));
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl6', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl6', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '{', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_perl6', [], 1), p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl6', [], 1)]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_perl6', [], 1), (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_perl6', [], 1)])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4394._prototype_ = null;
					return tmp4394
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Var', 'emit_perl6', (function () {
					var tmp4395;
					tmp4395 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({}))), 'Perlito5::AST::Var'), 'sigil', '@']), 0));
									throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', p5call(v_v, 'emit_perl6', [], 1), (new p5ArrayRef(['keyword', 'end']))]))));
								})();
							}
							})();
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							p5and((p5str(v_str_name) == String.fromCharCode(92)), function () {
								return v_str_name = (String.fromCharCode(92) + String.fromCharCode(92))
							});
							p5and((p5str(v_str_name) == '"'), function () {
								return v_str_name = (String.fromCharCode(92) + '"')
							});
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '::') ) {
								(function () {
									if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == '__PACKAGE__') ) {
									throw((new p5ArrayRef(['bareword', '$?PACKAGE'])));
								}
								})();
								throw((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'));
							}
							})();
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								(function () {
									if ( ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == 'main') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1) == '^')) ) {
									throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) + '}')], p5want));
								}
								else {
									v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
								}
								})();
							}
							})();
							var v_bareword;
							v_bareword = ((p5str(v_ns) + p5str(v_str_name)));
							var v_c;
							v_c = (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1));
							(function () {
								if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (p5str(v_c) == '_'))) ) {
								p5and(p5and((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '@'), function () {
									return (p5str(v_bareword) == 'ARGV')
								}), function () {
									throw(p5context(['@*ARGS'], p5want))
								});
								throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str(v_bareword))], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$') ) {
								p5and((p5str(v_bareword) == '/'), function () {
									throw(p5context(['"' + String.fromCharCode(92) + 'n"'], p5want))
								});
								p5and((p5str(v_bareword) == '$'), function () {
									throw(p5context(['$*PID'], p5want))
								});
								p5and((p5str(v_bareword) == '0'), function () {
									throw(p5context(['$*PROGRAM_NAME'], p5want))
								});
								p5and((p5str(v_bareword) == '@'), function () {
									throw(p5context(['$!'], p5want))
								});
								p5and((p5num(v_bareword) >= 1), function () {
									throw(p5context([('$' + p5str((p5num(v_bareword) - 1)))], p5want))
								});
							}
							})();
							var v_str;
							v_str = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + String.fromCharCode(39) + p5str(v_bareword) + String.fromCharCode(39) + '}'));
							return (p5context([v_str], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4395._prototype_ = null;
					return tmp4395
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_perl6', (function () {
					var tmp4396;
					tmp4396 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_perl6', [], 0));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<[ ]>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_perl6', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'circumfix:<{ }>', p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_perl6', [], 1)])))]))));
							}
							})();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								(function () {
									if ( (((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '&')) || ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('code')) == 'prefix:<&>'))) ) {
									throw((new p5ArrayRef(p5list_to_a(['apply', '(', v_invocant, p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))]))));
								}
								})();
								v_meth = ('');
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_perl6', [], 0));
							}
							})();
							(function () {
								if ( p5bool(v_meth) ) {
								throw((new p5ArrayRef(p5list_to_a(['call', v_invocant, v_meth, p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))]))));
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', v_invocant, (new p5ArrayRef(p5list_to_a(['op', 'list:<,>', p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))])))]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4396._prototype_ = null;
					return tmp4396
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				var Hash_special_var = {};
				Hash_special_var = p5a_to_h([p5pkg['Perlito5::AST::Apply'].chr([15], 1), '$*VM']);
				var Hash_op_translate = {};
				Hash_op_translate = p5a_to_h(['list:<.>', 'list:<~>', 'infix:<.=>', 'infix:<~=>', 'infix:<=~>', 'infix:<~~>', 'infix:<!~>', 'infix:<!~~>', 'infix:<cmp>', 'infix:<leq>', 'ternary:<? :>', 'ternary:<?? !!>', 'reverse', 'flip']);
				p5typeglob_set('Perlito5::AST::Apply', 'emit_perl6_args', (function () {
					var tmp4397;
					tmp4397 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							p5and(!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'))), function () {
								throw(p5context([], p5want))
							});
							return (p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
									return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], p5want));
								}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')])));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4397._prototype_ = null;
					return tmp4397
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_perl6', (function () {
					var tmp4398;
					tmp4398 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( p5bool(p5pkg['Perlito5::AST::Apply'].ref([v_code], 0)) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', p5call(v_code, 'emit_perl6', [], 1), p5call(v_self, 'emit_perl6_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<=>>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', v_code, p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0), 'emit_perl6', [], 1), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_perl6', [], 1)]))));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'nan') && !( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')))) ) {
								throw((new p5ArrayRef(['keyword', 'NaN'])));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'inf') && !( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')))) ) {
								throw((new p5ArrayRef(['keyword', 'Inf'])));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == '__PACKAGE__') && !( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')))) ) {
								throw((new p5ArrayRef(['bareword', '$?PACKAGE'])));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<$#>') ) {
								throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_perl6', [], 1), (new p5ArrayRef(['keyword', 'end']))]))));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'scalar') ) {
								(function () {
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '@')) ) {
										throw((new p5ArrayRef(p5list_to_a(['op', 'infix:<.>', p5call(v_arg, 'emit_perl6', [], 1), (new p5ArrayRef(['keyword', 'elems']))]))));
									}
									})();
								})();
							}
							})();
							(function () {
								if ( (((p5str(v_code) == 'shift') || (p5str(v_code) == 'pop')) && !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))))) ) {
								throw((new p5ArrayRef(['apply', '(', v_code, '@_'])));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'readline') && ((p5pkg['Perlito5::AST::Apply'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)], 0) == 'Perlito5::AST::Buf') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) == ''))) ) {
								throw((new p5ArrayRef(p5list_to_a(['apply', '(', (new p5ArrayRef(['keyword', 'lines']))]))));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<x>') ) {
								(function () {
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Apply') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'circumfix:<( )>')) ) {
										v_code = ('infix:<xx>');
									}
									})();
								})();
							}
							})();
							(function () {
								if ( (((p5str(v_code) == 'print') || (p5str(v_code) == 'say')) && !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))))) ) {
								throw((new p5ArrayRef(['keyword', ('.' + p5str(v_code))])));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<..>') ) {
								p5call('Perlito5::Perl6::TreeGrammar', 'refactor_range_operator', [v_self], null);
								(function () {
									if ( (p5pkg['Perlito5::AST::Apply'].ref([v_self], 0) != 'Perlito5::AST::Apply') ) {
									throw(p5call(v_self, 'emit_perl6', [], p5want));
								}
								})();
								v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							}
							})();
							p5and(Hash_op_translate.p5hget(p5str(v_code)), function () {
								return v_code = (Hash_op_translate.p5hget(p5str(v_code)))
							});
							(function () {
								if ( (p5str(v_code) == 'prefix:<$>') ) {
								(function () {
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									p5and(p5and(p5call(v_arg, 'isa', ['Perlito5::AST::Buf'], 0), function () {
										return (Hash_special_var).hasOwnProperty((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('buf'))
									}), function () {
										throw(Hash_special_var.p5hget(p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('buf'))))
									});
								})();
							}
							})();
							(function () {
								if ( p5bool(p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'].p5hget(p5str(v_code))) ) {
								throw((new p5ArrayRef(p5list_to_a(['op', v_code, p5call(v_self, 'emit_perl6_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'undef') ) {
								(function () {
									if ( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))) ) {
									p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO - undef(expr)']), null);
								}
								else {
									throw(p5context(['Any'], p5want));
								}
								})();
							}
							})();
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
							}
							})();
							v_code = ((p5str(v_ns) + p5str(v_code)));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:s') ) {
								(function () {
									var v_modifier;
									v_modifier = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(2)._hash_.p5hget('buf'));
									p5and(v_modifier, function () {
										return v_modifier = ((':' + p5str(v_modifier)))
									});
									throw(p5context([('s:P5' + p5str(v_modifier) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:m') ) {
								(function () {
									var v_s;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										v_s = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										(function () {
											var v_ast;
											(function(){ var v_ast; p5for_lex(function (v) { v_ast = v }, function () {
													(function () {
														if ( p5bool(p5call(v_ast, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
														(v_s = ((p5str(v_s) + p5str((v_ast || (v_ast = new p5HashRef({})))._hash_.p5hget('buf')))));
													}
													else {
														(v_s = ((p5str(v_s) + p5str(p5call(v_ast, 'emit_perl6', [], 0)))));
													}
													})();
												}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '') })()
										})();
									}
									})();
									var v_modifier;
									v_modifier = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf'));
									p5and(v_modifier, function () {
										return v_modifier = ((':' + p5str(v_modifier)))
									});
									throw(p5context([('m:P5' + p5str(v_modifier) + '!' + p5str(v_s) + '!')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:tr') ) {
								throw(p5context([('tr!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'package') ) {
								p5make_package('Perlito5')['v_PKG_NAME'] = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'));
								throw((new p5ArrayRef(p5list_to_a(['stmt', 'class', (new p5ArrayRef(p5list_to_a(['bareword', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')])))]))));
							}
							})();
							(function () {
								if ( ((p5str(v_code) == 'map') || ((p5str(v_code) == 'grep') || (p5str(v_code) == 'sort'))) ) {
								(function () {
									if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
									throw((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str(v_code) + '>'), (new p5ArrayRef(p5list_to_a(['block', p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('special_arg')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Apply')]))]))), (new p5ArrayRef(p5list_to_a(['op', 'list:<,>', p5call(v_self, 'emit_perl6_args', [], 1)])))]))));
								}
								})();
								throw((new p5ArrayRef(p5list_to_a(['apply', '(', v_code, p5call(v_self, 'emit_perl6_args', [], 1)]))));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) && !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))))) ) {
								throw((new p5ArrayRef(['bareword', v_code])));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'eval') ) {
								v_code = ('EVAL');
							}
							})();
							return ((new p5ArrayRef(p5list_to_a(['apply', '(', v_code, p5call(v_self, 'emit_perl6_args', [], 1)]))));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4398._prototype_ = null;
					return tmp4398
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_perl6', (function () {
					var tmp4399;
					tmp4399 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_perl6', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'if', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1)])))]))));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')) && (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')], 0) != 'Perlito5::AST::Block')) ) {
								throw((new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'emit_perl6', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'unless', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1)])))]))));
							}
							})();
							var List_out = [];
							List_out = p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'if'])), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]);
							var v_otherwise;
							v_otherwise = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'));
							(function () {
								p5while(function () {
									List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'elsif'])), p5call((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('cond'), 'emit_perl6', [], 1), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget_hash('body')._hash_.p5hget('stmts')]), 1)])))]));
									v_otherwise = ((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('otherwise'));
								}, function () {
									return p5and(v_otherwise, function () {
										return p5and((p5num(p5num(p5array_deref((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts'), 'Perlito5::AST::If'))) == 1), function () {
											return p5and((p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget(0)], 0) == 'Perlito5::AST::If'), function () {
												return p5context([p5and((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('body'), function () {
													return (p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('stmts')._array_.p5aget_hash(0)._hash_.p5hget('body')], 0) == 'Perlito5::AST::Block')
												})], 0)
											})
										})
									})
								}, false, '', 0)
							})();
							p5and(!( (p5bool(v_otherwise) && p5bool((p5num(p5array_deref(p5call(v_otherwise, 'stmts', [], p5want), 'Perlito5::AST::If')))))), function () {
								throw((p5want ? List_out : List_out.length))
							});
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'else'])), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([p5call(v_otherwise, 'stmts', [], 1)]), 1)])))]));
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4399._prototype_ = null;
					return tmp4399
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_perl6', (function () {
					var tmp4400;
					tmp4400 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'when'])), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)]))));
					};
					tmp4400._prototype_ = null;
					return tmp4400
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_perl6', (function () {
					var tmp4401;
					tmp4401 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							p5call('Perlito5::Perl6::TreeGrammar', 'refactor_while_glob', [v_self], null);
							(function () {
								if ( (p5pkg['Perlito5::AST::While'].ref([v_self], 0) != 'Perlito5::AST::While') ) {
								throw(p5call(v_self, 'emit_perl6', [], p5want));
							}
							})();
							var List_out = [];
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw(p5context([(p5want ? List_out : List_out.length), (new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_perl6', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'while'])), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1)])))])))], p5want));
							}
							})();
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'while'])), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::While')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4401._prototype_ = null;
					return tmp4401
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_perl6', (function () {
					var tmp4402;
					tmp4402 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var List_out = [];
							p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), function () {
								return List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')])))]))
							});
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) && (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block')) ) {
								throw(p5context([(p5want ? List_out : List_out.length), (new p5ArrayRef(p5list_to_a(['stmt_modifier', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'emit_perl6', [], 1), (new p5ArrayRef(p5list_to_a(['stmt', 'for', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 1)])))])))], p5want));
							}
							})();
							var v_cond;
							var v_keyword;
							(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								v_keyword = ('loop');
								v_cond = ((new p5ArrayRef(p5list_to_a(['paren_semicolon', '(', ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_perl6', [], 1) : (new p5ArrayRef([]))), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), 'emit_perl6', [], 1) : (new p5ArrayRef([]))), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_perl6', [], 1) : (new p5ArrayRef([])))]))));
							}
							else {
								v_keyword = ('for');
								v_cond = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_perl6', [], 0));
							}
							})();
							var List_sig = [];
							var v_sig_ast;
							v_sig_ast = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'));
							(function () {
								if ( !( p5bool(v_sig_ast)) ) {}
							else {
								p5and((p5pkg['Perlito5::AST::For'].ref([v_sig_ast], 0) == 'Perlito5::AST::Decl'), function () {
									return v_sig_ast = ((v_sig_ast || (v_sig_ast = new p5HashRef({})))._hash_.p5hget('var'))
								});
								List_sig = p5list_to_a(['->', p5call(v_sig_ast, 'emit_perl6', [], 1)]);
							}
							})();
							List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', v_keyword])), v_cond, List_sig, p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1)]), 1)])))]));
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget_array('stmts'), 'Perlito5::AST::For')))) ) {
								List_out.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'continue'])), p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts')]), 1)])))]));
							}
							})();
							return ((p5want ? List_out : List_out.length));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4402._prototype_ = null;
					return tmp4402
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_perl6', (function () {
					var tmp4403;
					tmp4403 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						return ((new p5ArrayRef(p5list_to_a(['op', ('prefix:<' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) + '>'), ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('type')) ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('type') : p5context([], 1)), p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_perl6', [], 1)]))));
					};
					tmp4403._prototype_ = null;
					return tmp4403
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_perl6', (function () {
					var tmp4404;
					tmp4404 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							p5call('Perlito5::Perl6::TreeGrammar', 'refactor_sub_arguments', [v_self], null);
							var List_parts = [];
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('args')) ) {
								List_parts.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['paren', '(', p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
	return ((new p5ArrayRef(p5list_to_a(['var', p5call(p5make_package('main')['v__'], 'emit_perl6', [], 1), '?']))));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('args'), 'Perlito5::AST::Sub')])), (new p5ArrayRef(['var', '*@_']))])))]));
							}
							else {
								List_parts.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a(['paren', '(', (new p5ArrayRef(['var', '*@_']))])))]));
							}
							})();
							p5and(((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('block') != null), function () {
								return List_parts.p5push(p5list_to_a([p5pkg['Perlito5::Perl6'].emit_perl6_block(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget('stmts')]), 1)]))
							});
							p5and(!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'))), function () {
								throw((new p5ArrayRef(p5list_to_a(['op', 'prefix:<sub>', List_parts]))))
							});
							var v_is_our;
							v_is_our = (1);
							p5and((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'my'), function () {
								return v_is_our = (0)
							});
							var v_name;
							v_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							(function () {
								if ( (p5str(p5make_package('Perlito5')['v_PKG_NAME']) != p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'))) ) {
								v_name = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::' + p5str(v_name)));
								v_is_our = (0);
							}
							})();
							return (function () {
								if ( p5bool(v_is_our) ) {
								(function () {
									throw((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'our'])), (new p5ArrayRef(['keyword', 'sub'])), (new p5ArrayRef(['bareword', v_name])), List_parts]))))
								})()
							}
							else {
								(function () {
									throw((new p5ArrayRef(p5list_to_a(['stmt', (new p5ArrayRef(['keyword', 'sub'])), (new p5ArrayRef(['bareword', v_name])), List_parts]))))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4404._prototype_ = null;
					return tmp4404
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_perl6', (function () {
					var tmp4405;
					tmp4405 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
						return ((new p5ArrayRef(['comment', ('# ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')))])));
					};
					tmp4405._prototype_ = null;
					return tmp4405
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::Perl6::Emitter
;
	(function () {
		p5make_package('Perlito5::Perl6::PrettyPrinter');
		// use strict
;
		// use warnings
;
		var Hash_dispatch = {};
		Hash_dispatch = {'stmt' : (function () {
					var tmp4406;
					tmp4406 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].statement(p5list_to_a([List__]), p5want));
					};
					tmp4406._prototype_ = null;
					return tmp4406
				})(), 'stmt_modifier' : (function () {
					var tmp4407;
					tmp4407 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].statement_modifier(p5list_to_a([List__]), p5want));
					};
					tmp4407._prototype_ = null;
					return tmp4407
				})(), 'block' : (function () {
					var tmp4408;
					tmp4408 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].block(p5list_to_a([List__]), p5want));
					};
					tmp4408._prototype_ = null;
					return tmp4408
				})(), 'keyword' : (function () {
					var tmp4409;
					tmp4409 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].keyword(p5list_to_a([List__]), p5want));
					};
					tmp4409._prototype_ = null;
					return tmp4409
				})(), 'bareword' : (function () {
					var tmp4410;
					tmp4410 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].bareword(p5list_to_a([List__]), p5want));
					};
					tmp4410._prototype_ = null;
					return tmp4410
				})(), 'number' : (function () {
					var tmp4411;
					tmp4411 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].number(p5list_to_a([List__]), p5want));
					};
					tmp4411._prototype_ = null;
					return tmp4411
				})(), 'op' : (function () {
					var tmp4412;
					tmp4412 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].op(p5list_to_a([List__]), p5want));
					};
					tmp4412._prototype_ = null;
					return tmp4412
				})(), 'paren' : (function () {
					var tmp4413;
					tmp4413 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].paren(p5list_to_a([List__]), p5want));
					};
					tmp4413._prototype_ = null;
					return tmp4413
				})(), 'paren_semicolon' : (function () {
					var tmp4414;
					tmp4414 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].paren_semicolon(p5list_to_a([List__]), p5want));
					};
					tmp4414._prototype_ = null;
					return tmp4414
				})(), 'apply' : (function () {
					var tmp4415;
					tmp4415 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].apply(p5list_to_a([List__]), p5want));
					};
					tmp4415._prototype_ = null;
					return tmp4415
				})(), 'call' : (function () {
					var tmp4416;
					tmp4416 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].call(p5list_to_a([List__]), p5want));
					};
					tmp4416._prototype_ = null;
					return tmp4416
				})(), 'comment' : (function () {
					var tmp4417;
					tmp4417 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].comment(p5list_to_a([List__]), p5want));
					};
					tmp4417._prototype_ = null;
					return tmp4417
				})(), 'label' : (function () {
					var tmp4418;
					tmp4418 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].label(p5list_to_a([List__]), p5want));
					};
					tmp4418._prototype_ = null;
					return tmp4418
				})(), 'var' : (function () {
					var tmp4419;
					tmp4419 = function (List__, p5want) {
						return (p5pkg['Perlito5::Perl6::PrettyPrinter'].var(p5list_to_a([List__]), p5want));
					};
					tmp4419._prototype_ = null;
					return tmp4419
				})()};
		var Hash_pair = {};
		Hash_pair = p5a_to_h(['(', ')', '[', ']', '{', '}']);
		if (typeof p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'] = {};}
		p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'] = p5a_to_h(p5list_to_a(['prefix:<$>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '$'})), 'prefix:<@>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '@'})), 'prefix:<%>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '%'})), 'prefix:<&>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '&'})), 'prefix:<*>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '*'})), 'prefix:<$#>', (new p5HashRef({'fix' : 'deref', 'prec' : 0, 'str' : '$#'})), 'circumfix:<[ ]>', (new p5HashRef({'fix' : 'circumfix', 'prec' : 0, 'str' : '['})), 'circumfix:<{ }>', (new p5HashRef({'fix' : 'circumfix', 'prec' : 0, 'str' : '{'})), 'circumfix:<( )>', (new p5HashRef({'fix' : 'circumfix', 'prec' : 0, 'str' : '('})), 'infix:<.>', (new p5HashRef(p5a_to_h(p5list_to_a(['fix', 'infix', 'prec', p5negative( 1), 'str', '.'])))), 'prefix:<-->', (new p5HashRef({'fix' : 'prefix', 'prec' : 1, 'str' : '--'})), 'prefix:<++>', (new p5HashRef({'fix' : 'prefix', 'prec' : 1, 'str' : '++'})), 'postfix:<-->', (new p5HashRef({'fix' : 'postfix', 'prec' : 1, 'str' : '--'})), 'postfix:<++>', (new p5HashRef({'fix' : 'postfix', 'prec' : 1, 'str' : '++'})), 'infix:<**>', (new p5HashRef({'fix' : 'infix', 'prec' : 2, 'str' : '**'})), 'p6_prefix:<^>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '^'})), 'prefix:<' + String.fromCharCode(92) + '>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : String.fromCharCode(92)})), 'prefix:<+>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '+'})), 'prefix:<->', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '-'})), 'prefix:<~>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '~'})), 'prefix:<!>', (new p5HashRef({'fix' : 'prefix', 'prec' : 3, 'str' : '!'})), 'infix:<=~>', (new p5HashRef({'fix' : 'infix', 'prec' : 4, 'str' : ' =~ '})), 'infix:<!~>', (new p5HashRef({'fix' : 'infix', 'prec' : 4, 'str' : ' !~ '})), 'infix:<*>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' * '})), 'infix:</>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' / '})), 'infix:<%>', (new p5HashRef({'fix' : 'infix', 'prec' : 5, 'str' : ' % '})), 'infix:<+>', (new p5HashRef({'fix' : 'infix', 'prec' : 6, 'str' : ' + '})), 'infix:<->', (new p5HashRef({'fix' : 'infix', 'prec' : 6, 'str' : ' - '})), 'infix:<x>', (new p5HashRef({'fix' : 'infix', 'prec' : 8, 'str' : ' x '})), 'infix:<xx>', (new p5HashRef({'fix' : 'infix', 'prec' : 8, 'str' : ' xx '})), 'list:<~>', (new p5HashRef({'fix' : 'list', 'prec' : 10, 'str' : ' ~ '})), 'infix:<~>', (new p5HashRef({'fix' : 'infix', 'prec' : 10, 'str' : ' ~ '})), 'infix:<<<>', (new p5HashRef({'fix' : 'infix', 'prec' : 12, 'str' : ' << '})), 'infix:<>>>', (new p5HashRef({'fix' : 'infix', 'prec' : 12, 'str' : ' >> '})), 'infix:<lt>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' lt '})), 'infix:<le>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' le '})), 'infix:<gt>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' gt '})), 'infix:<ge>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' ge '})), 'infix:<<=>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' <= '})), 'infix:<>=>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' >= '})), 'infix:<<>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' < '})), 'infix:<>>', (new p5HashRef({'fix' : 'infix', 'prec' : 90, 'str' : ' > '})), 'infix:<<=>>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' <=> '})), 'infix:<cmp>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' cmp '})), 'infix:<leq>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' leq '})), 'infix:<==>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' == '})), 'infix:<!=>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' != '})), 'infix:<ne>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' ne '})), 'infix:<eq>', (new p5HashRef({'fix' : 'infix', 'prec' : 100, 'str' : ' eq '})), 'infix:<&>', (new p5HashRef({'fix' : 'infix', 'prec' : 110, 'str' : ' & '})), 'infix:<|>', (new p5HashRef({'fix' : 'infix', 'prec' : 120, 'str' : ' | '})), 'infix:<^>', (new p5HashRef({'fix' : 'infix', 'prec' : 120, 'str' : ' ^ '})), 'infix:<..>', (new p5HashRef({'fix' : 'infix', 'prec' : 130, 'str' : ' .. '})), 'infix:<...>', (new p5HashRef({'fix' : 'infix', 'prec' : 130, 'str' : ' ... '})), 'infix:<~~>', (new p5HashRef({'fix' : 'infix', 'prec' : 130, 'str' : ' ~~ '})), 'infix:<&&>', (new p5HashRef({'fix' : 'infix', 'prec' : 140, 'str' : ' && '})), 'infix:<||>', (new p5HashRef({'fix' : 'infix', 'prec' : 150, 'str' : ' || '})), 'infix:<//>', (new p5HashRef({'fix' : 'infix', 'prec' : 150, 'str' : ' // '})), 'ternary:<?? !!>', (new p5HashRef({'fix' : 'ternary', 'prec' : 160})), 'infix:<=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' = '})), 'infix:<**=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' **= '})), 'infix:<+=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' += '})), 'infix:<-=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' -= '})), 'infix:<*=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' *= '})), 'infix:</=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' /= '})), 'infix:<x=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' x= '})), 'infix:<|=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' |= '})), 'infix:<&=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' &= '})), 'infix:<.=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' .= '})), 'infix:<<<=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' <<= '})), 'infix:<>>=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' >>= '})), 'infix:<%=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' %= '})), 'infix:<||=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' ||= '})), 'infix:<&&=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' &&= '})), 'infix:<^=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' ^= '})), 'infix:<//=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' //= '})), 'infix:<~=>', (new p5HashRef({'fix' : 'infix', 'prec' : 170, 'str' : ' ~= '})), 'infix:<=>>', (new p5HashRef({'fix' : 'infix', 'prec' : 180, 'str' : ' => '})), 'list:<,>', (new p5HashRef({'fix' : 'list', 'prec' : 190, 'str' : ', '})), 'infix:<:>', (new p5HashRef({'fix' : 'infix', 'prec' : 190, 'str' : ':'})), 'prefix:<not>', (new p5HashRef({'fix' : 'prefix', 'prec' : 200, 'str' : ' not '})), 'infix:<and>', (new p5HashRef({'fix' : 'infix', 'prec' : 210, 'str' : ' and '})), 'infix:<or>', (new p5HashRef({'fix' : 'infix', 'prec' : 220, 'str' : ' or '})), 'infix:<xor>', (new p5HashRef({'fix' : 'infix', 'prec' : 220, 'str' : ' xor '}))]));
		p5for(p5make_package('main'), "v__", function () {
				p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'].p5hset(('prefix:<' + p5str(p5make_package('main')['v__']) + '>'), ((new p5HashRef({'fix' : 'prefix', 'prec' : 8, 'str' : (p5str(p5make_package('main')['v__']) + ' ')}))));
			}, ['-r', '-w', '-x', '-o', '-R', '-W', '-X', '-O', '-e', '-z', '-s', '-f', '-d', '-l', '-p', '-S', '-b', '-c', '-t', '-u', '-g', '-k', '-T', '-B', '-M', '-A', '-C'], false, '');
		p5for(p5make_package('main'), "v__", function () {
				p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'].p5hset(('prefix:<' + p5str(p5make_package('main')['v__']) + '>'), ((new p5HashRef({'fix' : 'parsed', 'prec' : 8, 'str' : p5make_package('main')['v__']}))));
			}, ['do', 'sub', 'my', 'our', 'state', 'local', 'map', 'grep', 'sort'], false, '');
		var Hash_tab = {};
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'tab', (function () {
			var tmp4420;
			tmp4420 = function (List__, p5want) {
				var v_level;
				v_level = (List__.p5aget(0));
				return (Hash_tab.p5hset(p5str(v_level), (p5defined_or(Hash_tab.p5hget(p5str(v_level)), function () {
									return p5str_replicate('    ',p5num(v_level))
								}))));
			};
			tmp4420._prototype_ = null;
			return tmp4420
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'render', (function () {
			var tmp4421;
			tmp4421 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4422 = p5list_to_a([List__]);
					v_data = tmp4422.shift();
					v_level = tmp4422.shift();
					v_out = tmp4422.shift();
				return (function () {
						if ( p5bool(p5pkg['Perlito5::Perl6::PrettyPrinter'].ref([v_data], 0)) ) {
						return ((Hash_dispatch.p5hget(p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0))))([v_data, v_level, v_out], p5want));
					}
					else {
						return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([v_data]));
					}
					})()
			};
			tmp4421._prototype_ = null;
			return tmp4421
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'op_precedence', (function () {
			var tmp4423;
			tmp4423 = function (List__, p5want) {
				try {
					var v_data;
					var tmp4424 = p5list_to_a([List__]);
					v_data = tmp4424.shift();
					p5and(!( p5bool(p5pkg['Perlito5::Perl6::PrettyPrinter'].ref([v_data], 0))), function () {
						throw(p5context([0], p5want))
					});
					p5and((p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) != 'op'), function () {
						throw(p5context([0], p5want))
					});
					return (p5or(p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'].p5hget_hash(p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)))._hash_.p5hget('prec'), function () {
							return 0
						}));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4423._prototype_ = null;
			return tmp4423
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'statement_need_semicolon', (function () {
			var tmp4425;
			tmp4425 = function (List__, p5want) {
				try {
					var v_data;
					var tmp4426 = p5list_to_a([List__]);
					v_data = tmp4426.shift();
					p5and(!( p5bool(p5pkg['Perlito5::Perl6::PrettyPrinter'].ref([v_data], 0))), function () {
						throw(p5context([1], p5want))
					});
					p5and(p5or((p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'block'), function () {
						return p5or((p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'comment'), function () {
							return (p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'label')
						})
					}), function () {
						throw(p5context([0], p5want))
					});
					(function () {
						if ( (p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(0)) == 'stmt') ) {
						(function () {
							if ( p5bool(p5pkg['Perlito5::Perl6::PrettyPrinter'].ref([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)], 0)) ) {
							(function () {
								var v_dd;
								v_dd = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1));
								(function () {
									if ( (p5str((v_dd || (v_dd = new p5ArrayRef([])))._array_.p5aget(0)) == 'keyword') ) {
									p5and(p5and(p5pkg['Perlito5::Perl6::PrettyPrinter'].ref([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(p5negative( 1)))], 0), function () {
										return (p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget_array(p5num(p5negative( 1)))._array_.p5aget(0)) == 'block')
									}), function () {
										throw(p5context([0], p5want))
									});
								}
								})();
							})();
						}
						})();
					}
					})();
					return (p5context([1], p5want));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4425._prototype_ = null;
			return tmp4425
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'op_render', (function () {
			var tmp4427;
			tmp4427 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var v_current_op;
				var tmp4428 = p5list_to_a([List__]);
					v_data = tmp4428.shift();
					v_level = tmp4428.shift();
					v_out = tmp4428.shift();
					v_current_op = tmp4428.shift();
				return (function () {
						if ( p5bool(p5pkg['Perlito5::Perl6::PrettyPrinter'].ref([v_data], 0)) ) {
						var v_this_prec;
						v_this_prec = (p5pkg['Perlito5::Perl6::PrettyPrinter'].op_precedence([v_data], 0));
						p5and(p5and(v_this_prec, function () {
							return p5and((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec'), function () {
								return (p5num((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec')) < p5num(v_this_prec))
							})
						}), function () {
							return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(['('])
						});
						p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_data, v_level, v_out], null);
						return (p5and(p5and(v_this_prec, function () {
								return p5and((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec'), function () {
									return (p5num((v_current_op || (v_current_op = new p5HashRef({})))._hash_.p5hget('prec')) < p5num(v_this_prec))
								})
							}), function () {
								return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([')'])
							}));
					}
					else {
						return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([v_data]));
					}
					})()
			};
			tmp4427._prototype_ = null;
			return tmp4427
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'op', (function () {
			var tmp4429;
			tmp4429 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4430 = p5list_to_a([List__]);
					v_data = tmp4430.shift();
					v_level = tmp4430.shift();
					v_out = tmp4430.shift();
					var v_op;
					v_op = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1));
					var v_spec;
					v_spec = (p5or(p5pkg[p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] || (p5make_package('Perlito5::Perl6::PrettyPrinter')['Hash_op'] = {}), 'Perlito5::Perl6::PrettyPrinter']['Hash_op'].p5hget(p5str(v_op)), function () {
								return p5pkg['Perlito5::Perl6::PrettyPrinter'].die([].concat([('unknown op: ' + p5str(v_op))]), 0)
							}));
					(function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'infix') ) {
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(3), v_level, v_out, v_spec]), null);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'prefix') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'postfix') ) {
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'ternary') ) {
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([' ?? ']);
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(3), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([' !! ']);
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(4), v_level, v_out, v_spec]), null);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'deref') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str'), '(']));
						p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out, v_spec]), null);
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([')']);
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'circumfix') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						(function () {
							var v_line;
							(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
									p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)), v_level, v_out, v_spec]), null);
									p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1))), function () {
										return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([', '])
									});
								}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4431", 0)]), false, '') })()
						})();
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')))]));
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'list') ) {
						(function () {
							var v_line;
							(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
									p5pkg['Perlito5::Perl6::PrettyPrinter'].op_render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)), v_level, v_out, v_spec]), null);
									p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1))), function () {
										return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]))
									});
								}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4432", 0)]), false, '') })()
						})();
					}
					else (function () {
						if ( (p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')) == 'parsed') ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('str')]));
						(function () {
							var v_line;
							(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
									var v_d;
									v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
									p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([' ']);
									p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_d, v_level, v_out], null);
								}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4433", 0)]), false, '') })()
						})();
					}
					else {
						p5pkg['Perlito5::Perl6::PrettyPrinter'].die([].concat([('unknown fixity: ' + p5str((v_spec || (v_spec = new p5HashRef({})))._hash_.p5hget('fix')))]), null);
					}
					})()
					})()
					})()
					})()
					})()
					})()
					})()
					})();
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4429._prototype_ = null;
			return tmp4429
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'call', (function () {
			var tmp4434;
			tmp4434 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4435 = p5list_to_a([List__]);
					v_data = tmp4435.shift();
					v_level = tmp4435.shift();
					v_out = tmp4435.shift();
					var List_dd = [];
					List_dd = p5list_to_a([p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter')]);
					List_dd.shift();
					var v_open;
					v_open = ('(');
					p5pkg['Perlito5::Perl6::PrettyPrinter'].render(p5list_to_a([List_dd.shift(), v_level, v_out]), null);
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(['.']);
					var v_d;
					v_d = (List_dd.p5aget(0));
					p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_d, v_level, v_out], null);
					(function () {
						if ( ((p5str(v_open) == '(') && (p5num(List_dd.length) == 1)) ) {
						throw(p5context([], p5want));
					}
					})();
					List_dd.p5aset(0, ('list:<,>'));
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([v_open]);
					p5pkg['Perlito5::Perl6::PrettyPrinter'].op(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', List_dd]))), v_level, v_out]), null);
					return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str(v_open))])));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4434._prototype_ = null;
			return tmp4434
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'apply', (function () {
			var tmp4436;
			tmp4436 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4437 = p5list_to_a([List__]);
					v_data = tmp4437.shift();
					v_level = tmp4437.shift();
					v_out = tmp4437.shift();
					var List_dd = [];
					List_dd = p5list_to_a([p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter')]);
					List_dd.shift();
					var v_open;
					v_open = (List_dd.shift());
					var v_d;
					v_d = (List_dd.p5aget(0));
					p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_d, v_level, v_out], null);
					(function () {
						if ( ((p5str(v_open) == '(') && (p5num(List_dd.length) == 1)) ) {
						throw(p5context([], p5want));
					}
					})();
					List_dd.p5aset(0, ('list:<,>'));
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([v_open]);
					p5pkg['Perlito5::Perl6::PrettyPrinter'].op(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', List_dd]))), v_level, v_out]), null);
					return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str(v_open))])));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4436._prototype_ = null;
			return tmp4436
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'paren', (function () {
			var tmp4438;
			tmp4438 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4439 = p5list_to_a([List__]);
					v_data = tmp4439.shift();
					v_level = tmp4439.shift();
					v_out = tmp4439.shift();
				var List_dd = [];
				List_dd = p5list_to_a([p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter')]);
				List_dd.shift();
				var v_open;
				v_open = (List_dd.p5aget(0));
				List_dd.p5aset(0, ('list:<,>'));
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([v_open]);
				p5pkg['Perlito5::Perl6::PrettyPrinter'].op(p5list_to_a([(new p5ArrayRef(p5list_to_a(['op', List_dd]))), v_level, v_out]), null);
				return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str(v_open))])));
			};
			tmp4438._prototype_ = null;
			return tmp4438
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'paren_semicolon', (function () {
			var tmp4440;
			tmp4440 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4441 = p5list_to_a([List__]);
					v_data = tmp4441.shift();
					v_level = tmp4441.shift();
					v_out = tmp4441.shift();
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
				(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								p5and(p5num(p5array_deref((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget_array(p5num(v_line)), 'Perlito5::Perl6::PrettyPrinter')), function () {
									return p5pkg['Perlito5::Perl6::PrettyPrinter'].render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)), v_level, v_out]), null)
								});
								(function () {
									if ( (p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1))) ) {
									(function () {
										if ( p5bool(p5num(p5array_deref((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget_array((p5num(v_line) + 1)), 'Perlito5::Perl6::PrettyPrinter'))) ) {
										p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(['; ']);
									}
									else {
										p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([';']);
									}
									})();
								}
								})();
							}, p5list_to_a([p5range(2, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4442", 0)]), false, '') })()
					})();
				return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([Hash_pair.p5hget(p5str((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)))])));
			};
			tmp4440._prototype_ = null;
			return tmp4440
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'var', (function () {
			var tmp4443;
			tmp4443 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4444 = p5list_to_a([List__]);
					v_data = tmp4444.shift();
					v_level = tmp4444.shift();
					v_out = tmp4444.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([p5list_slice(p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter'), p5list_to_a([p5range(1, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4445", 0)]), 1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4443._prototype_ = null;
			return tmp4443
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'label', (function () {
			var tmp4446;
			tmp4446 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4447 = p5list_to_a([List__]);
					v_data = tmp4447.shift();
					v_level = tmp4447.shift();
					v_out = tmp4447.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1), ':']));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4446._prototype_ = null;
			return tmp4446
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'keyword', (function () {
			var tmp4448;
			tmp4448 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4449 = p5list_to_a([List__]);
					v_data = tmp4449.shift();
					v_level = tmp4449.shift();
					v_out = tmp4449.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4448._prototype_ = null;
			return tmp4448
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'bareword', (function () {
			var tmp4450;
			tmp4450 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4451 = p5list_to_a([List__]);
					v_data = tmp4451.shift();
					v_level = tmp4451.shift();
					v_out = tmp4451.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4450._prototype_ = null;
			return tmp4450
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'number', (function () {
			var tmp4452;
			tmp4452 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4453 = p5list_to_a([List__]);
					v_data = tmp4453.shift();
					v_level = tmp4453.shift();
					v_out = tmp4453.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4452._prototype_ = null;
			return tmp4452
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'comment', (function () {
			var tmp4454;
			tmp4454 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4455 = p5list_to_a([List__]);
					v_data = tmp4455.shift();
					v_level = tmp4455.shift();
					v_out = tmp4455.shift();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1)]));
					(function () {
						throw(p5context([], p5want))
					})()
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4454._prototype_ = null;
			return tmp4454
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'statement', (function () {
			var tmp4456;
			tmp4456 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4457 = p5list_to_a([List__]);
					v_data = tmp4457.shift();
					v_level = tmp4457.shift();
					v_out = tmp4457.shift();
				(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								var v_d;
								v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
								p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_d, v_level, v_out], null);
								return (p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1))), function () {
										return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([' '])
									}));
							}, p5list_to_a([p5range(1, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4458", 0)]), false, '') })()
					})()
			};
			tmp4456._prototype_ = null;
			return tmp4456
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'statement_modifier', (function () {
			var tmp4459;
			tmp4459 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4460 = p5list_to_a([List__]);
					v_data = tmp4460.shift();
					v_level = tmp4460.shift();
					v_out = tmp4460.shift();
				p5pkg['Perlito5::Perl6::PrettyPrinter'].render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(1), v_level, v_out]), null);
				p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([String.fromCharCode(10), p5pkg['Perlito5::Perl6::PrettyPrinter'].tab([(p5num(v_level) + 1)], 1)]));
				return (p5pkg['Perlito5::Perl6::PrettyPrinter'].render(p5list_to_a([(v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(2), v_level, v_out]), p5want));
			};
			tmp4459._prototype_ = null;
			return tmp4459
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'block', (function () {
			var tmp4461;
			tmp4461 = function (List__, p5want) {
				try {
					var v_data;
					var v_level;
					var v_out;
					var tmp4462 = p5list_to_a([List__]);
					v_data = tmp4462.shift();
					v_level = tmp4462.shift();
					v_out = tmp4462.shift();
					(function () {
						if ( (p5num(p5num(p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter'))) == 1) ) {
						p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(['{}']);
						throw(p5context([], p5want));
					}
					})();
					p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(['{', String.fromCharCode(10)]);
					(function () {
						var tmp4463 = v_level;
						v_level = p5incr_(tmp4463);
						return tmp4463
					})();
					(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								var v_d;
								v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
								p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([p5pkg['Perlito5::Perl6::PrettyPrinter'].tab([v_level], 1)]));
								p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_d, v_level, v_out], null);
								p5and(p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1))), function () {
									return p5pkg['Perlito5::Perl6::PrettyPrinter'].statement_need_semicolon([v_d], 0)
								}), function () {
									return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([';'])
								});
								p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([String.fromCharCode(10)]);
							}, p5list_to_a([p5range(1, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4464", 0)]), false, '') })()
					})();
					(function () {
						var tmp4465 = v_level;
						v_level = p5decr_(tmp4465);
						return tmp4465
					})();
					return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([p5pkg['Perlito5::Perl6::PrettyPrinter'].tab([v_level], 1), '}'])));
				}
				catch(err) {
					if ( err instanceof Error ) {
						throw(err);
					}
					else {
						return(err);
					}
				}
			};
			tmp4461._prototype_ = null;
			return tmp4461
		})());
		p5typeglob_set('Perlito5::Perl6::PrettyPrinter', 'pretty_print', (function () {
			var tmp4466;
			tmp4466 = function (List__, p5want) {
				var v_data;
				var v_level;
				var v_out;
				var tmp4467 = p5list_to_a([List__]);
					v_data = tmp4467.shift();
					v_level = tmp4467.shift();
					v_out = tmp4467.shift();
				(function () {
						var v_line;
						(function(){ var v_line; p5for_lex(function (v) { v_line = v }, function () {
								var v_d;
								v_d = ((v_data || (v_data = new p5ArrayRef([])))._array_.p5aget(p5num(v_line)));
								p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push(p5list_to_a([p5pkg['Perlito5::Perl6::PrettyPrinter'].tab([v_level], 1)]));
								p5pkg['Perlito5::Perl6::PrettyPrinter'].render([v_d, v_level, v_out], null);
								p5and(p5and((p5num(v_line) != p5num((p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1))), function () {
									return p5pkg['Perlito5::Perl6::PrettyPrinter'].statement_need_semicolon([v_d], 0)
								}), function () {
									return p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([';'])
								});
								return (p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').p5push([String.fromCharCode(10)]));
							}, p5list_to_a([p5range(0, (p5array_deref((v_data || (v_data = new p5ArrayRef([]))), 'Perlito5::Perl6::PrettyPrinter').length - 1), 1, "tmp4468", 0)]), false, '') })()
					})()
			};
			tmp4466._prototype_ = null;
			return tmp4466
		})());
		1;
	})();
	// use Perlito5::Perl6::PrettyPrinter
;
	(function () {
		null;
		// use Perlito5::AST
;
		p5make_package('Perlito5::XS');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::XS', 'tab', (function () {
					var tmp4469;
					tmp4469 = function (List__, p5want) {
						var v_level;
						v_level = (List__.shift());
						return (p5str_replicate('    ',p5num(v_level)));
					};
					tmp4469._prototype_ = null;
					return tmp4469
				})());
				var Hash_safe_char = {};
				Hash_safe_char = p5a_to_h([' ', 1, '!', 1, '"', 1, '#', 1, '$', 1, '%', 1, '&', 1, '(', 1, ')', 1, '*', 1, '+', 1, ',', 1, '-', 1, '.', 1, '/', 1, ':', 1, ';', 1, '<', 1, '=', 1, '>', 1, '?', 1, '@', 1, '[', 1, ']', 1, '^', 1, '_', 1, '`', 1, '{', 1, '|', 1, '}', 1, '~', 1]);
				p5typeglob_set('Perlito5::XS', 'escape_string', (function () {
					var tmp4470;
					tmp4470 = function (List__, p5want) {
						try {
							var v_s;
							v_s = (List__.shift());
							var v_tmp;
							v_tmp = ('');
							p5and((p5str(v_s) == ''), function () {
								throw(p5context(['""'], p5want))
							});
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_c;
										v_c = (p5str(v_s).substr(p5num(v_i), 1));
										(function () {
											if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (((p5str(v_c) >= '0') && (p5str(v_c) <= '9')) || (Hash_safe_char).hasOwnProperty(v_c)))) ) {
											v_tmp = ((p5str(v_tmp) + p5str(v_c)));
										}
										else {
											(v_tmp = ((p5str(v_tmp) + p5str(p5pkg['Perlito5::XS'].sprintf([String.fromCharCode(92) + 'x%02x'].concat([p5pkg['Perlito5::XS'].ord([v_c], 1)]), 0)))));
										}
										})();
									}, p5list_to_a([p5range(0, (p5pkg['Perlito5::XS'].length([v_s], 0) - 1), 1, "tmp4471", 0)]), false, '') })()
							})();
							return (p5context([('"' + p5str(v_tmp) + '"')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4470._prototype_ = null;
					return tmp4470
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_xs', (function () {
					var tmp4472;
					tmp4472 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						var List_body = [];
						p5for(p5make_package('main'), "v__", function () {
									(function () {
										if ( (p5make_package('main')['v__'] != null) ) {
										List_body.p5push([p5make_package('main')['v__']]);
									}
									})();
								}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]), false, '');
						return (p5context([(p5pkg['Perlito5::AST::CompUnit'].join([String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::CompUnit'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [v_level], 0))));
	}, p5list_to_a([List_body]))])), 0) + String.fromCharCode(10) + String.fromCharCode(10) + String.fromCharCode(10))], p5want));
					};
					tmp4472._prototype_ = null;
					return tmp4472
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_xs_program', (function () {
					var tmp4473;
					tmp4473 = function (List__, p5want) {
						var v_comp_units;
						v_comp_units = (List__.p5aget(0));
						var v_str;
						v_str = (('#include "EXTERN.h"' + String.fromCharCode(10) + '#include "perl.h"' + String.fromCharCode(10) + '#include "XSUB.h"' + String.fromCharCode(10) + String.fromCharCode(10)));
						(function () {
								var v_comp_unit;
								(function(){ var v_comp_unit; p5for_lex(function (v) { v_comp_unit = v }, function () {
										(v_str = ((p5str(v_str) + p5str(p5call(v_comp_unit, 'emit_xs', [0], 0)))));
									}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')]), false, '') })()
							})();
						(v_str = ((p5str(v_str) + String.fromCharCode(10))));
						return (p5context([v_str], p5want));
					};
					tmp4473._prototype_ = null;
					return tmp4473
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_xs', (function () {
					var tmp4474;
					tmp4474 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('newSViv(' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('int')) + ')')], p5want));
					};
					tmp4474._prototype_ = null;
					return tmp4474
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_xs', (function () {
					var tmp4475;
					tmp4475 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('newSVnv(' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('num')) + ')')], p5want));
					};
					tmp4475._prototype_ = null;
					return tmp4475
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_xs', (function () {
					var tmp4476;
					tmp4476 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('newSVpv(' + p5str(p5pkg['Perlito5::XS'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('buf')]), 0)) + ', 0)')], p5want));
					};
					tmp4476._prototype_ = null;
					return tmp4476
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_xs', (function () {
					var tmp4477;
					tmp4477 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('do {{' + String.fromCharCode(10) + p5pkg['Perlito5::AST::Block'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Block'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block')]))])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '}}')], p5want));
					};
					tmp4477._prototype_ = null;
					return tmp4477
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_xs', (function () {
					var tmp4478;
					tmp4478 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_level;
							v_level = (List__.p5aget(1));
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(function () {
									var v_v;
									v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									throw(p5context([(p5str(p5call(v_v, 'emit_xs', [v_level], 0)) + '[' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ']')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [v_level], 0)) + '->[' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_xs', [v_level], 0)) + ']')], p5want));
							}
							})();
							return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_xs', [v_level], 0)) + '->[' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ']')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4478._prototype_ = null;
					return tmp4478
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_xs', (function () {
					var tmp4479;
					tmp4479 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_level;
							v_level = (List__.p5aget(1));
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(function () {
									var v_v;
									v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									throw(p5context([(p5str(p5call(v_v, 'emit_xs', [v_level], 0)) + '{' + p5str(p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_xs', [v_level], 0)) + '}')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [v_level], 0)) + '->{' + p5str(p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_xs', [v_level], 0)) + '}')], p5want));
							}
							})();
							return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_xs', [v_level], 0)) + '->{' + p5str(p5call(p5call(v_self, 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_xs', [v_level], 0)) + '}')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4479._prototype_ = null;
					return tmp4479
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Var', 'emit_xs', (function () {
					var tmp4480;
					tmp4480 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							p5and((p5str(v_str_name) == String.fromCharCode(92)), function () {
								return v_str_name = (String.fromCharCode(92) + String.fromCharCode(92))
							});
							p5and((p5str(v_str_name) == '"'), function () {
								return v_str_name = (String.fromCharCode(92) + '"')
							});
							var v_ns;
							v_ns = ('');
							(function () {
								if ( (0 && p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'))) ) {
								(function () {
									if ( ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == 'main') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1) == '^')) ) {
									throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) + '}')], p5want));
								}
								else {
									v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
								}
								})();
							}
							})();
							var v_c;
							v_c = (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')).substr(0, 1));
							(function () {
								if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (p5str(v_c) == '_'))) ) {
								throw((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('sigil', ('*'));
								throw(p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + p5str(v_ns) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
							}
							})();
							return (p5context([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) + '{' + String.fromCharCode(39) + p5str(v_ns) + p5str(v_str_name) + String.fromCharCode(39) + '}')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4480._prototype_ = null;
					return tmp4480
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_xs', (function () {
					var tmp4481;
					tmp4481 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_xs', [], 0));
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw(p5context([(p5str(v_invocant) + '->[' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ']')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw(p5context([(p5str(v_invocant) + '->{' + p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_xs', [v_level], 0)) + '}')], p5want));
							}
							})();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								v_meth = ('');
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_xs', [(p5num(v_level) + 1)], 0));
							}
							})();
							return (p5context([(p5str(v_invocant) + '->' + p5str(v_meth) + '(' + p5pkg['Perlito5::AST::Call'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Call'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Call')]))])), 0) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4481._prototype_ = null;
					return tmp4481
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				var Hash_op_prefix_xs = {};
				Hash_op_prefix_xs = {'say' : 'say', 'keys' : 'keys', 'values' : 'values', 'prefix:<!>' : '!', 'prefix:<++>' : '++', 'prefix:<-->' : '--', 'prefix:<+>' : '+', 'prefix:<->' : '-', 'prefix:<-d>' : '-d', 'prefix:<-e>' : '-e', 'prefix:<-f>' : '-f', 'prefix:<not>' : 'not', 'prefix:<~>' : '~'};
				var Hash_op_infix_xs = {};
				Hash_op_infix_xs = {'list:<,>' : ', ', 'list:<.>' : ' . ', 'infix:<+>' : ' + ', 'infix:<->' : ' - ', 'infix:<*>' : ' * ', 'infix:</>' : ' / ', 'infix:<%>' : ' % ', 'infix:<**>' : ' ** ', 'infix:<>>' : ' > ', 'infix:<<>' : ' < ', 'infix:<>=>' : ' >= ', 'infix:<<=>' : ' <= ', 'infix:<&>' : ' & ', 'infix:<|>' : ' | ', 'infix:<^>' : ' ^ ', 'infix:<&&>' : ' && ', 'infix:<||>' : ' || ', 'infix:<and>' : ' and ', 'infix:<or>' : ' or ', 'infix:<//>' : ' // ', 'infix:<eq>' : ' eq ', 'infix:<ne>' : ' ne ', 'infix:<le>' : ' le ', 'infix:<ge>' : ' ge ', 'infix:<lt>' : ' lt ', 'infix:<gt>' : ' gt ', 'infix:<==>' : ' == ', 'infix:<!=>' : ' != ', 'infix:<=~>' : ' =~ ', 'infix:<!~>' : ' !~ '};
				p5typeglob_set('Perlito5::AST::Apply', 'emit_xs', (function () {
					var tmp4482;
					tmp4482 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_apply;
							v_apply = (p5call(v_self, 'op_assign', [], 0));
							(function () {
								if ( p5bool(v_apply) ) {
								throw(p5call(v_apply, 'emit_xs', [v_level], p5want));
							}
							})();
							var v_ns;
							v_ns = ('');
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								v_ns = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::'));
							}
							})();
							var v_code;
							v_code = ((p5str(v_ns) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'))));
							(function () {
								if ( (p5pkg['Perlito5::AST::Apply'].ref([v_code], 0) != '') ) {
								throw(p5context([('(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ')->(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (Hash_op_infix_xs).hasOwnProperty(v_code) ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([Hash_op_infix_xs.p5hget(p5str(v_code))].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (Hash_op_prefix_xs).hasOwnProperty(v_code) ) {
								throw(p5context([(p5str(Hash_op_prefix_xs.p5hget(p5str(v_code))) + '(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:s') ) {
								throw(p5context([('s!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2)))], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:m') ) {
								(function () {
									var v_s;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										v_s = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										(function () {
											var v_ast;
											(function(){ var v_ast; p5for_lex(function (v) { v_ast = v }, function () {
													(function () {
														if ( p5bool(p5call(v_ast, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
														(v_s = ((p5str(v_s) + p5str((v_ast || (v_ast = new p5HashRef({})))._hash_.p5hget('buf')))));
													}
													else {
														(v_s = ((p5str(v_s) + p5str(p5call(v_ast, 'emit_xs', [(p5num(v_level) + 1)], 0)))));
													}
													})();
												}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '') })()
										})();
									}
									})();
									throw(p5context([('m!' + p5str(v_s) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)))], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:tr') ) {
								throw(p5context([('tr!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf')) + '!' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')) + '!')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == '__PACKAGE__') ) {
								throw(p5context([('"' + p5str(p5make_package('Perlito5')['v_PKG_NAME']) + '"')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) == 'package') ) {
								throw(p5context([('MODULE = ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + ' PACKAGE = ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')))], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'undef') ) {
								throw(p5context(['undef()'], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'scalar') ) {
								throw(p5context([('scalar(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'pop') ) {
								throw(p5context([('pop(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'push') ) {
								throw(p5context([('push(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [], 0)) + ', ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)], 0), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' )')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'shift') ) {
								(function () {
									if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
									throw(p5context([('shift(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
								}
								})();
								throw(p5context(['shift()'], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'unshift') ) {
								throw(p5context([('unshift(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'map') ) {
								(function () {
									(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										throw(p5context([('map {' + String.fromCharCode(10) + p5pkg['Perlito5::AST::Apply'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('special_arg')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Apply')]))])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '} ' + p5pkg['Perlito5::AST::Apply'].join([','].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0))], p5want));
									}
									})();
									var v_str;
									v_str = (p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').shift());
									throw(p5context([('map(' + p5str(p5call(v_str, 'emit_xs', [(p5num(v_level) + 1)], 0)) + ', ' + p5pkg['Perlito5::AST::Apply'].join([','].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<x>') ) {
								throw(p5context([('join("", ' + p5pkg['Perlito5::AST::Apply'].join([' x '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<=>>') ) {
								throw(p5context([(p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0), 'emit_xs', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_xs', [v_level], 0)))], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'join') ) {
								(function () {
									var v_str;
									v_str = (p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').shift());
									throw(p5context([('join(' + p5str(p5call(v_str, 'emit_xs', [], 0)) + ', ' + p5pkg['Perlito5::AST::Apply'].join([','].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'circumfix:<[ ]>') ) {
								throw(p5context([('[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ']')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'circumfix:<{ }>') ) {
								throw(p5context([('{' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '}')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<' + String.fromCharCode(92) + '>') ) {
								throw(p5context([(String.fromCharCode(92) + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<$>') ) {
								throw(p5context([('${' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '}')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<@>') ) {
								throw(p5context([('@{' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '}')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<%>') ) {
								throw(p5context([('%{' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '}')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<&>') ) {
								throw(p5context([('&{' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '}')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<$#>') ) {
								throw(p5context([('$#{' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '}')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'postfix:<++>') ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')++')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'postfix:<-->') ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')--')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<..>') ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([' .. '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'ternary:<? :>') ) {
								throw(p5context([('(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' ? ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' : ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'circumfix:<( )>') ) {
								throw(p5context([('(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'infix:<=>') ) {
								throw(p5pkg['Perlito5::AST::Apply'].emit_xs_bind(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'require') ) {
								throw(p5context([('Perlito5::Grammar::Use::require(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'do') ) {
								(function () {
									var v_ast;
									v_ast = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'eval', 'namespace', '', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do_file', 'namespace', 'Perlito5::Grammar::Use', 'arguments', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 1)])))]), 0));
									throw(p5call(v_ast, 'emit_xs', [v_level], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'eval') ) {
								(function () {
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									var v_eval;
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Block'], 0)) ) {
										v_eval = (p5call(v_arg, 'emit_xs', [(p5num(v_level) + 1)], 0));
									}
									else {
										v_eval = (('(do { ' + 'my $m = Perlito5::Grammar::exp_stmts(' + p5str(p5call(v_arg, 'emit_xs', [(p5num(v_level) + 1), 'scalar'], 0)) + ', 0);' + 'my $source; ' + '$source .= (defined $_ ? $_->emit_xs(0, "scalar") : "") . ";' + String.fromCharCode(92) + 'n" ' + 'for @{ Perlito5::Match::flat($m) }; ' + 'eval $source;' + '})'));
									}
									})();
									throw(p5context([v_eval], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'return') ) {
								throw(p5context([('PUSHs(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'print') ) {
								throw(p5context([('puts( SvPVx_nolen( ' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ') )')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'warn') ) {
								throw(p5context([('warn( SvPVx_nolen( ' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ') )')], p5want));
							}
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) && !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply'))))) ) {
								throw(p5context([v_code], p5want));
							}
							})();
							return (p5context([(p5str(v_code) + '(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4482._prototype_ = null;
					return tmp4482
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_xs_bind', (function () {
					var tmp4483;
					tmp4483 = function (List__, p5want) {
						try {
							var v_parameters;
							v_parameters = (List__.shift());
							var v_arguments;
							v_arguments = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Call'], 0)) ) {
								(function () {
									if ( ((p5str(p5call(v_parameters, 'method', [], 0)) == 'postcircumfix:<{ }>') || (p5str(p5call(v_parameters, 'method', [], 0)) == 'postcircumfix:<[ ]>')) ) {
									throw(p5context([('(' + p5str(p5call(v_parameters, 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' = ' + p5str(p5call(v_arguments, 'emit_xs', [(p5num(v_level) + 1)], 0)) + ')')], p5want));
								}
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_parameters, 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' = ' + p5str(p5call(v_arguments, 'emit_xs', [(p5num(v_level) + 1)], 0)))], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4483._prototype_ = null;
					return tmp4483
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_xs', (function () {
					var tmp4484;
					tmp4484 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('if (' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ') {' + String.fromCharCode(10) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) ? (p5pkg['Perlito5::AST::If'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::If'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::If')]))])), 0) + String.fromCharCode(10)) : '')) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '}' + p5str(( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')) && p5bool((p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], p5want), 'Perlito5::AST::If'))))) ? p5context([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + 'else {' + String.fromCharCode(10) + p5pkg['Perlito5::AST::If'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::If'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], p5want), 'Perlito5::AST::If')]))])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '}')], 0) : '')))], p5want));
					};
					tmp4484._prototype_ = null;
					return tmp4484
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_xs', (function () {
					var tmp4485;
					tmp4485 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('when (' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ') {' + String.fromCharCode(10) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')) ? (p5pkg['Perlito5::AST::When'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::When'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::When')]))])), 0) + String.fromCharCode(10)) : '')) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '}')], p5want));
					};
					tmp4485._prototype_ = null;
					return tmp4485
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_xs', (function () {
					var tmp4486;
					tmp4486 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						return (p5context([('for ( ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('init')) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('init'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool(v_cond) ? (p5str(p5call(v_cond, 'emit_xs', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' ') : ' ')) + ') {' + String.fromCharCode(10) + p5pkg['Perlito5::AST::While'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::While'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::While')]))])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '}')], p5want));
					};
					tmp4486._prototype_ = null;
					return tmp4486
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_xs', (function () {
					var tmp4487;
					tmp4487 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_cond;
						(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								v_cond = ((p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_javascript', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), 'emit_javascript', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_javascript', [(p5num(v_level) + 1)], 0)) + ' ') : ' '))));
							}
							else {
								v_cond = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'emit_xs', [(p5num(v_level) + 1)], 0));
							}
							})();
						var v_sig;
						v_sig = ('');
						var v_sig_ast;
						v_sig_ast = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'sig', [], 0));
						(function () {
								if ( !( p5bool(v_sig_ast)) ) {}
							else (function () {
								if ( p5bool((v_sig_ast || (v_sig_ast = new p5HashRef({})))._hash_.p5hget('decl')) ) {
								v_sig = ((p5str((v_sig_ast || (v_sig_ast = new p5HashRef({})))._hash_.p5hget('decl')) + ' ' + p5str((v_sig_ast || (v_sig_ast = new p5HashRef({})))._hash_.p5hget('type')) + ' ' + p5str(p5call((v_sig_ast || (v_sig_ast = new p5HashRef({})))._hash_.p5hget('var'), 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' '));
							}
							else {
								v_sig = ((p5str(p5call(v_sig_ast, 'emit_xs', [(p5num(v_level) + 1)], 0)) + ' '));
							}
							})()
							})();
						return (p5context([('for ' + p5str(v_sig) + '(' + p5str(v_cond) + ') {' + String.fromCharCode(10) + p5pkg['Perlito5::AST::For'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::For'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::For')]))])), 0) + String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '}')], p5want));
					};
					tmp4487._prototype_ = null;
					return tmp4487
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_xs', (function () {
					var tmp4488;
					tmp4488 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('type', ('SV *'));
						var v_decl;
						v_decl = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl'));
						var v_str;
						v_str = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('type')) + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_xs', [(p5num(v_level) + 1)], 0))));
						return (p5context([v_str], p5want));
					};
					tmp4488._prototype_ = null;
					return tmp4488
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_xs', (function () {
					var tmp4489;
					tmp4489 = function (List__, p5want) {
						var v_self;
						v_self = (List__.p5aget(0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_name;
						v_name = ('');
						p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'), function () {
								return v_name = ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) + ' '))
							});
						var v_sig;
						v_sig = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig'));
						var v_i;
						v_i = (0);
						return (p5context([('void ' + p5str(v_name) + '()' + String.fromCharCode(10) + 'PPCODE:' + String.fromCharCode(10) + p5pkg['Perlito5::AST::Sub'].join([';' + String.fromCharCode(10)].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
		return ((p5str(p5pkg['Perlito5::XS'].tab([(p5num(v_level) + 1)], 0)) + p5str(p5call(p5make_package('main')['v__'], 'emit_xs', [(p5num(v_level) + 1)], 0))));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::AST::Sub')]))])), 0) + ';' + String.fromCharCode(10))], p5want));
					};
					tmp4489._prototype_ = null;
					return tmp4489
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_xs', (function () {
					var tmp4490;
					tmp4490 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
						return (p5context([(String.fromCharCode(10) + p5str(p5pkg['Perlito5::XS'].tab([v_level], 0)) + '# ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')) + String.fromCharCode(10))], p5want));
					};
					tmp4490._prototype_ = null;
					return tmp4490
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::XS::Emitter
;
	(function () {
		null;
		// use Perlito5::AST
;
		// use strict
;
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'get_captures', (function () {
					var tmp4491;
					tmp4491 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4491._prototype_ = null;
					return tmp4491
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'get_captures', (function () {
					var tmp4492;
					tmp4492 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4492._prototype_ = null;
					return tmp4492
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'get_captures', (function () {
					var tmp4493;
					tmp4493 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4493._prototype_ = null;
					return tmp4493
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'get_captures', (function () {
					var tmp4494;
					tmp4494 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4494._prototype_ = null;
					return tmp4494
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'get_captures', (function () {
					var tmp4495;
					tmp4495 = function (List__, p5want) {
						var v_self;
						var tmp4496 = p5list_to_a([List__]);
							v_self = tmp4496.shift();
						var List_var = [];
						(function () {
								var v_stmt;
								(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
										List_var.p5push(p5list_to_a([p5call(v_stmt, 'get_captures', [], 1)]));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('stmts'), 'Perlito5::AST::Block')]), false, '') })()
							})();
						return ((p5want ? List_var : List_var.length));
					};
					tmp4495._prototype_ = null;
					return tmp4495
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'get_captures', (function () {
					var tmp4497;
					tmp4497 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var List_var = [];
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'get_captures', [], 1)]));
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'get_captures', [], 1)]));
						return ((p5want ? List_var : List_var.length));
					};
					tmp4497._prototype_ = null;
					return tmp4497
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'get_captures', (function () {
					var tmp4498;
					tmp4498 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var List_var = [];
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'get_captures', [], 1)]));
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), 'get_captures', [], 1)]));
						return ((p5want ? List_var : List_var.length));
					};
					tmp4498._prototype_ = null;
					return tmp4498
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Var', 'get_captures', (function () {
					var tmp4499;
					tmp4499 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						return (p5context([v_self], p5want));
					};
					tmp4499._prototype_ = null;
					return tmp4499
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'get_captures', (function () {
					var tmp4500;
					tmp4500 = function (List__, p5want) {
						return ((new p5HashRef(p5a_to_h(p5list_to_a(['dont', List__.p5aget_hash(0)._hash_.p5hget_hash('var')._hash_.p5hget('_id')])))));
					};
					tmp4500._prototype_ = null;
					return tmp4500
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'get_captures', (function () {
					var tmp4501;
					tmp4501 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4501._prototype_ = null;
					return tmp4501
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Apply', 'get_captures', (function () {
					var tmp4502;
					tmp4502 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var v_code;
						v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
						var List_var = [];
						p5and(p5pkg['Perlito5::AST::Apply'].ref([v_code], 0), function () {
								return List_var.p5push(p5list_to_a([p5call(v_code, 'get_captures', [], 1)]))
							});
						p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
								return List_var.p5push(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'get_captures', [], 1));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))]))
							});
						(function () {
								if ( ((p5str(v_code) == 'my') || ((p5str(v_code) == 'our') || (p5str(v_code) == 'state'))) ) {
								List_var.p5push(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return (( (p5pkg['Perlito5::AST::Apply'].ref([p5make_package('main')['v__']], 0) == 'Perlito5::AST::Var') ? p5context([(new p5HashRef(p5a_to_h(p5list_to_a(['dont', (p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_id')]))))], 1) : p5context([], 1)));
}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))]));
							}
							})();
						return ((p5want ? List_var : List_var.length));
					};
					tmp4502._prototype_ = null;
					return tmp4502
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'get_captures', (function () {
					var tmp4503;
					tmp4503 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var List_var = [];
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'get_captures', [], 1)]));
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'get_captures', [], 1)]));
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'get_captures', [], 1)]));
						return ((p5want ? List_var : List_var.length));
					};
					tmp4503._prototype_ = null;
					return tmp4503
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'get_captures', (function () {
					var tmp4504;
					tmp4504 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var List_var = [];
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'get_captures', [], 1)]));
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'get_captures', [], 1)]));
						return ((p5want ? List_var : List_var.length));
					};
					tmp4504._prototype_ = null;
					return tmp4504
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'get_captures', (function () {
					var tmp4505;
					tmp4505 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var List_var = [];
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'), 'get_captures', [], 1)]));
						List_var.p5push(p5list_to_a([p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'get_captures', [], 1)]));
						return ((p5want ? List_var : List_var.length));
					};
					tmp4505._prototype_ = null;
					return tmp4505
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'get_captures', (function () {
					var tmp4506;
					tmp4506 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						var List_var = [];
						var v_body;
						v_body = (( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]))) : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('stmts')));
						List_var.p5push(p5list_to_a([p5map(p5pkg['Perlito5::AST::For'], function (p5want) {
	return (p5call(p5make_package('main')['v__'], 'get_captures', [], 1));
}, p5list_to_a([p5array_deref((v_body || (v_body = new p5ArrayRef([]))), 'Perlito5::AST::For'), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'), ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ? p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond'), 'Perlito5::AST::For') : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'))]))]));
						return ((p5want ? List_var : List_var.length));
					};
					tmp4506._prototype_ = null;
					return tmp4506
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'get_captures', (function () {
					var tmp4507;
					tmp4507 = function (List__, p5want) {
						return (p5call(List__.p5aget_hash(0)._hash_.p5hget('block'), 'get_captures', [], p5want));
					};
					tmp4507._prototype_ = null;
					return tmp4507
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'get_captures', (function () {
					var tmp4508;
					tmp4508 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4508._prototype_ = null;
					return tmp4508
				})());
			}, [0], false, ''
		);
		1;
	})();
	(function () {
		null;
		// use Perlito5::AST
;
		// use Perlito5::AST::Captures
;
		// use Perlito5::Dumper
;
		// use strict
;
		p5make_package('Perlito5::Java');
		p5block(function (v) {}, function () {
				var Hash_label = {};
				var Hash_Java_class = {};
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'];
				var Hash_Java_var = {};
				if (typeof p5pkg[p5make_package('Perlito5::Java')['List_Java_init'] || (p5make_package('Perlito5::Java')['List_Java_init'] = []), 'Perlito5::Java']['List_Java_init'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['List_Java_init'] || (p5make_package('Perlito5::Java')['List_Java_init'] = []), 'Perlito5::Java']['List_Java_init'] = [];}
				p5pkg[p5make_package('Perlito5::Java')['List_Java_init'] || (p5make_package('Perlito5::Java')['List_Java_init'] = []), 'Perlito5::Java']['List_Java_init'];
				p5typeglob_set('Perlito5::Java', 'pkg', (function () {
					var tmp4509;
					tmp4509 = function (List__, p5want) {
						return (p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], p5want));
					};
					tmp4509._prototype_ = null;
					return tmp4509
				})());
				p5typeglob_set('Perlito5::Java', 'get_label', (function () {
					var tmp4510;
					tmp4510 = function (List__, p5want) {
						return (p5context([('tmp' + p5str((function () {
	var tmp4511 = p5make_package('Perlito5')['v_ID'];
	p5make_package('Perlito5')['v_ID'] = p5incr_(tmp4511);
	return tmp4511
})()))], p5want));
					};
					tmp4510._prototype_ = null;
					return tmp4510
				})());
				p5typeglob_set('Perlito5::Java', 'tab', (function () {
					var tmp4512;
					tmp4512 = function (List__, p5want) {
						var v_level;
						v_level = (List__.shift());
						return (p5str_replicate('    ',p5num(v_level)));
					};
					tmp4512._prototype_ = null;
					return tmp4512
				})());
				p5typeglob_set('Perlito5::Java', 'get_java_class_info', (function () {
					var tmp4513;
					tmp4513 = function (List__, p5want) {
						return ((new p5HashRef(Hash_Java_class)));
					};
					tmp4513._prototype_ = null;
					return tmp4513
				})());
				p5typeglob_set('Perlito5::Java', 'get_java_var_info', (function () {
					var tmp4514;
					tmp4514 = function (List__, p5want) {
						return ((new p5HashRef(Hash_Java_var)));
					};
					tmp4514._prototype_ = null;
					return tmp4514
				})());
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_Java_loop_label'] || (p5make_package('Perlito5::Java')['Hash_Java_loop_label'] = {}), 'Perlito5::Java']['Hash_Java_loop_label'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_Java_loop_label'] || (p5make_package('Perlito5::Java')['Hash_Java_loop_label'] = {}), 'Perlito5::Java']['Hash_Java_loop_label'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_Java_loop_label'] || (p5make_package('Perlito5::Java')['Hash_Java_loop_label'] = {}), 'Perlito5::Java']['Hash_Java_loop_label'];
				p5typeglob_set('Perlito5::Java', 'get_java_loop_label', (function () {
					var tmp4515;
					tmp4515 = function (List__, p5want) {
						try {
							var v_s;
							v_s = (List__.shift());
							p5and(!( p5bool(v_s)), function () {
								throw(p5context([0], p5want))
							});
							p5and((p5pkg[p5make_package('Perlito5::Java')['Hash_Java_loop_label'] || (p5make_package('Perlito5::Java')['Hash_Java_loop_label'] = {}), 'Perlito5::Java']['Hash_Java_loop_label']).hasOwnProperty(v_s), function () {
								throw(p5pkg[p5make_package('Perlito5::Java')['Hash_Java_loop_label'] || (p5make_package('Perlito5::Java')['Hash_Java_loop_label'] = {}), 'Perlito5::Java']['Hash_Java_loop_label'].p5hget(p5str(v_s)))
							});
							var v_label;
							v_label = ((function () {
										var tmp4516 = p5make_package('Perlito5')['v_ID'];
										p5make_package('Perlito5')['v_ID'] = p5incr_(tmp4516);
										return tmp4516
									})());
							p5pkg[p5make_package('Perlito5::Java')['Hash_Java_loop_label'] || (p5make_package('Perlito5::Java')['Hash_Java_loop_label'] = {}), 'Perlito5::Java']['Hash_Java_loop_label'].p5hset(p5str(v_s), (v_label));
							return (p5context([v_label], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4515._prototype_ = null;
					return tmp4515
				})());
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Java']['Hash_op_prefix_js_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Java']['Hash_op_prefix_js_str'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Java']['Hash_op_prefix_js_str'] = {'prefix:<-A>' : 'p5atime', 'prefix:<-C>' : 'p5ctime', 'prefix:<-M>' : 'p5mtime', 'prefix:<-d>' : 'p5is_directory', 'prefix:<-e>' : 'p5file_exists', 'prefix:<-f>' : 'p5is_file', 'prefix:<-s>' : 'p5size'};
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_infix_js_str'] = {}), 'Perlito5::Java']['Hash_op_infix_js_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_infix_js_str'] = {}), 'Perlito5::Java']['Hash_op_infix_js_str'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_op_infix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_infix_js_str'] = {}), 'Perlito5::Java']['Hash_op_infix_js_str'] = {'infix:<eq>' : ' == ', 'infix:<ne>' : ' != ', 'infix:<le>' : ' <= ', 'infix:<ge>' : ' >= ', 'infix:<lt>' : ' < ', 'infix:<gt>' : ' > '};
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_bool'] || (p5make_package('Perlito5::Java')['Hash_op_to_bool'] = {}), 'Perlito5::Java']['Hash_op_to_bool'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_bool'] || (p5make_package('Perlito5::Java')['Hash_op_to_bool'] = {}), 'Perlito5::Java']['Hash_op_to_bool'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_bool'] || (p5make_package('Perlito5::Java')['Hash_op_to_bool'] = {}), 'Perlito5::Java']['Hash_op_to_bool'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Java'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['prefix:<!>', 'infix:<!=>', 'infix:<==>', 'infix:<<=>', 'infix:<>=>', 'infix:<>>', 'infix:<<>', 'infix:<eq>', 'infix:<ne>', 'infix:<ge>', 'infix:<le>', 'infix:<gt>', 'infix:<lt>', 'prefix:<not>', 'exists', 'defined'])]));
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_str'] || (p5make_package('Perlito5::Java')['Hash_op_to_str'] = {}), 'Perlito5::Java']['Hash_op_to_str'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_str'] || (p5make_package('Perlito5::Java')['Hash_op_to_str'] = {}), 'Perlito5::Java']['Hash_op_to_str'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_str'] || (p5make_package('Perlito5::Java')['Hash_op_to_str'] = {}), 'Perlito5::Java']['Hash_op_to_str'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Java'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['substr', 'join', 'list:<.>', 'chr', 'lc', 'uc', 'lcfirst', 'ucfirst', 'ref'])]));
				if (typeof p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_num'] || (p5make_package('Perlito5::Java')['Hash_op_to_num'] = {}), 'Perlito5::Java']['Hash_op_to_num'] == "undefined" ) { p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_num'] || (p5make_package('Perlito5::Java')['Hash_op_to_num'] = {}), 'Perlito5::Java']['Hash_op_to_num'] = {};}
				p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_num'] || (p5make_package('Perlito5::Java')['Hash_op_to_num'] = {}), 'Perlito5::Java']['Hash_op_to_num'] = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::Java'], function (p5want) {
							return ((p5context([p5make_package('main')['v__'], 1], 1)));
						}, ['length', 'index', 'ord', 'oct', 'infix:<->', 'infix:<+>', 'infix:<*>', 'infix:</>', 'infix:<%>', 'infix:<**>', 'infix:<|>', 'infix:<&>'])]));
				var Hash_safe_char = {};
				Hash_safe_char = p5a_to_h([' ', 1, '!', 1, '#', 1, '$', 1, '%', 1, '&', 1, '(', 1, ')', 1, '*', 1, '+', 1, ',', 1, '-', 1, '.', 1, '/', 1, ':', 1, ';', 1, '<', 1, '=', 1, '>', 1, '?', 1, '@', 1, '[', 1, ']', 1, '^', 1, '_', 1, '`', 1, '{', 1, '|', 1, '}', 1, '~', 1]);
				p5typeglob_set('Perlito5::Java', 'escape_string', (function () {
					var tmp4517;
					tmp4517 = function (List__, p5want) {
						try {
							var v_s;
							v_s = (List__.shift());
							var List_out = [];
							var v_tmp;
							v_tmp = ('');
							p5and((p5str(v_s) == ''), function () {
								throw(p5context(['""'], p5want))
							});
							(function () {
								var v_i;
								(function(){ var v_i; p5for_lex(function (v) { v_i = v }, function () {
										var v_c;
										v_c = (p5str(v_s).substr(p5num(v_i), 1));
										(function () {
											if ( (((p5str(v_c) >= 'a') && (p5str(v_c) <= 'z')) || (((p5str(v_c) >= 'A') && (p5str(v_c) <= 'Z')) || (((p5str(v_c) >= '0') && (p5str(v_c) <= '9')) || (Hash_safe_char).hasOwnProperty(v_c)))) ) {
											v_tmp = ((p5str(v_tmp) + p5str(v_c)));
										}
										else {
											p5and((p5str(v_tmp) != ''), function () {
												return List_out.p5push([('"' + p5str(v_tmp) + '"')])
											});
											List_out.p5push([('(char)' + p5str(p5pkg['Perlito5::Java'].ord([v_c], 0)) + '')]);
											v_tmp = ('');
										}
										})();
									}, p5list_to_a([p5range(0, (p5pkg['Perlito5::Java'].length([v_s], 0) - 1), 1, "tmp4518", 0)]), false, '') })()
							})();
							p5and((p5str(v_tmp) != ''), function () {
								return List_out.p5push([('"' + p5str(v_tmp) + '"')])
							});
							p5and((p5num((List_out.length)) > 1), function () {
								return List_out.p5unshift(['""'])
							});
							return (p5context([p5pkg['Perlito5::Java'].join([' + '].concat(p5list_to_a([List_out])), p5want)], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4517._prototype_ = null;
					return tmp4517
				})());
				p5typeglob_set('Perlito5::Java', 'is_native', (function () {
					var tmp4519;
					tmp4519 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							(function () {
								if ( ((p5pkg['Perlito5::Java'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '::')) ) {
								(function () {
									var v_Java_class;
									v_Java_class = (p5pkg['Perlito5::Java'].get_java_class_info([], 0));
									(function () {
										if ( (v_Java_class)._hash_.hasOwnProperty((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('namespace')) ) {
										throw(p5context([1], p5want));
									}
									})();
								})();
							}
							})();
							(function () {
								if ( ((p5pkg['Perlito5::Java'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('_id'))) ) {
								(function () {
									var v_id;
									v_id = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('_id'));
									var v_Java_var;
									v_Java_var = (p5pkg['Perlito5::Java'].get_java_var_info([], 0));
									var v_type;
									v_type = (p5or((v_Java_var || (v_Java_var = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_id))._hash_.p5hget('type'), function () {
												return 'PlLvalue'
											}));
									(function () {
										if ( (p5str(v_type) != 'PlLvalue') ) {
										throw(p5context([1], p5want));
									}
									})();
								})();
							}
							})();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( p5bool(p5m(v_meth, '^to', '', 0)) ) {
								(function () {
									var v_Java_class;
									v_Java_class = (p5pkg['Perlito5::Java'].get_java_class_info([], 0));
									(function () {
										var v_info;
										(function(){ var v_info; p5for_lex(function (v) { v_info = v }, function () {
												(function () {
													if ( (p5str(v_meth) == p5str((v_info || (v_info = new p5HashRef({})))._hash_.p5hget('perl_to_java'))) ) {
													throw(p5context([1], p5want));
												}
												})();
											}, p5list_to_a([p5pkg['Perlito5::Java'].values([p5hash_deref((v_Java_class || (v_Java_class = new p5HashRef({}))), 'Perlito5::Java')], 1)]), false, '') })()
									})();
								})();
							}
							})();
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4519._prototype_ = null;
					return tmp4519
				})());
				p5typeglob_set('Perlito5::Java', 'to_native_args', (function () {
					var tmp4520;
					tmp4520 = function (List__, p5want) {
						var v_args;
						v_args = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						var v_wantarray;
						v_wantarray = ('scalar');
						var v_s;
						v_s = ('');
						var List_out = [];
						(function () {
								var v_cond;
								(function(){ var v_cond; p5for_lex(function (v) { v_cond = v }, function () {
										var v_is_apply;
										v_is_apply = (p5and(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0), function () {
													return p5and((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
														return p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java'))
													})
												}));
										(function () {
											if ( (p5bool(v_is_apply) && (p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>')) ) {
											List_out.p5push(p5list_to_a([p5pkg['Perlito5::Java'].to_native_args(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 1)]));
										}
										else (function () {
											if ( (p5bool(v_is_apply) && (p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_num'] || (p5make_package('Perlito5::Java')['Hash_op_to_num'] = {}), 'Perlito5::Java']['Hash_op_to_num']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))) ) {
											List_out.p5push([('(' + p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + ').' + p5str(( (p5bool(p5call(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java').p5aget(0), 'isa', ['Perlito5::AST::Num'], 0)) || p5bool(p5call(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java').p5aget(1), 'isa', ['Perlito5::AST::Num'], 0))) ? 'to_double()' : 'to_int()')))]);
										}
										else (function () {
											if ( (p5bool(v_is_apply) && (p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_str'] || (p5make_package('Perlito5::Java')['Hash_op_to_str'] = {}), 'Perlito5::Java']['Hash_op_to_str']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))) ) {
											List_out.p5push([('(' + p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + ').toString()')]);
										}
										else (function () {
											if ( p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
											List_out.p5push(p5list_to_a([p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('buf')]), 1)]));
										}
										else (function () {
											if ( p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) ) {
											List_out.p5push(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('int')]));
										}
										else (function () {
											if ( p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) ) {
											List_out.p5push(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('num')]));
										}
										else {
											List_out.p5push(p5list_to_a([p5call(v_cond, 'emit_java', [v_level, v_wantarray], 1)]));
										}
										})()
										})()
										})()
										})()
										})()
										})();
									}, p5list_to_a([p5array_deref((v_args || (v_args = new p5ArrayRef([]))), 'Perlito5::Java')]), false, '') })()
							})();
						return (p5context([p5pkg['Perlito5::Java'].join([', '].concat(p5list_to_a([List_out])), p5want)], p5want));
					};
					tmp4520._prototype_ = null;
					return tmp4520
				})());
				p5typeglob_set('Perlito5::Java', 'to_native_str', (function () {
					var tmp4521;
					tmp4521 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java')))))) ) {
								throw(p5pkg['Perlito5::Java'].to_native_str(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level, v_wantarray]), p5want));
							}
							})();
							return (function () {
								if ( p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Buf'], 0)) ) {
								(function () {
									throw(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('buf')]), p5want))
								})()
							}
							else return (function () {
								if ( p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) ) {
								(function () {
									throw(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('int')]), p5want))
								})()
							}
							else return (function () {
								if ( p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) ) {
								(function () {
									throw(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('num')]), p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([(p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + '.toString()')], p5want))
								})()
							}
							})()
							})()
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4521._prototype_ = null;
					return tmp4521
				})());
				p5typeglob_set('Perlito5::Java', 'to_str', (function () {
					var tmp4522;
					tmp4522 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java')))))) ) {
								throw(p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Buf'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_str'] || (p5make_package('Perlito5::Java')['Hash_op_to_str'] = {}), 'Perlito5::Java']['Hash_op_to_str']).hasOwnProperty(p5call(v_cond, 'code', [], p5want)))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_java', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('new PlString(' + p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + '.toString())')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4522._prototype_ = null;
					return tmp4522
				})());
				p5typeglob_set('Perlito5::Java', 'to_num', (function () {
					var tmp4523;
					tmp4523 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_type;
							v_type = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_num'] || (p5make_package('Perlito5::Java')['Hash_op_to_num'] = {}), 'Perlito5::Java']['Hash_op_to_num']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))))) ) {
								(function () {
									throw(p5call(v_cond, 'emit_java', [v_level, v_wantarray], p5want))
								})()
							}
							else {
								(function () {
									if ( (p5str(v_type) == 'int') ) {
									throw(p5context([('new PlInt(' + p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + '.to_int())')], p5want));
								}
								})();
								(function () {
									throw(p5context([('new PlDouble(' + p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + '.to_double())')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4523._prototype_ = null;
					return tmp4523
				})());
				p5typeglob_set('Perlito5::Java', 'to_bool', (function () {
					var tmp4524;
					tmp4524 = function (List__, p5want) {
						try {
							var v_cond;
							v_cond = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = ('scalar');
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'circumfix:<( )>') && (p5bool((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java')))))) ) {
								throw(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<&&>') || (p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<and>'))) ) {
								throw(p5context([('(' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' && ' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<||>') || (p5str(p5call(v_cond, 'code', [], 0)) == 'infix:<or>'))) ) {
								throw(p5context([('(' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' || ' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_cond || (v_cond = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Int'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Num'], 0)) || (p5bool(p5call(v_cond, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_bool'] || (p5make_package('Perlito5::Java')['Hash_op_to_bool'] = {}), 'Perlito5::Java']['Hash_op_to_bool']).hasOwnProperty(p5call(v_cond, 'code', [], p5want))))) ) {
								(function () {
									throw(p5context([(p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + '.to_bool()')], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([(p5str(p5call(v_cond, 'emit_java', [v_level, v_wantarray], 0)) + '.to_bool()')], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4524._prototype_ = null;
					return tmp4524
				})());
				p5typeglob_set('Perlito5::Java', 'is_scalar', (function () {
					var tmp4525;
					tmp4525 = function (List__, p5want) {
						return (p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Int'], 0))), function () {
									return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Num'], 0))), function () {
										return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0))), function () {
											return p5and(!( p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Sub'], 0))), function () {
												return p5and(!( (p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(List__.p5aget_hash(0)._hash_.p5hget('sigil')) == '$'))), function () {
													return !( (p5bool(p5call(List__.p5aget(0), 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_str'] || (p5make_package('Perlito5::Java')['Hash_op_to_str'] = {}), 'Perlito5::Java']['Hash_op_to_str']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || ((p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_num'] || (p5make_package('Perlito5::Java')['Hash_op_to_num'] = {}), 'Perlito5::Java']['Hash_op_to_num']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code')) || (p5pkg[p5make_package('Perlito5::Java')['Hash_op_to_bool'] || (p5make_package('Perlito5::Java')['Hash_op_to_bool'] = {}), 'Perlito5::Java']['Hash_op_to_bool']).hasOwnProperty(List__.p5aget_hash(0)._hash_.p5hget('code'))))))
												})
											})
										})
									})
								}));
					};
					tmp4525._prototype_ = null;
					return tmp4525
				})());
				p5typeglob_set('Perlito5::Java', 'to_list', (function () {
					var tmp4526;
					tmp4526 = function (List__, p5want) {
						var v_items;
						v_items = (p5pkg['Perlito5::Java'].to_list_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
						var v_level;
						v_level = (List__.p5aget(1));
						return (p5context([('new PlArray(' + p5pkg['Perlito5::Java'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, 'list'], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Java')]))])), 0) + ')')], p5want));
					};
					tmp4526._prototype_ = null;
					return tmp4526
				})());
				p5typeglob_set('Perlito5::Java', 'to_list_preprocess', (function () {
					var tmp4527;
					tmp4527 = function (List__, p5want) {
						var List_items = [];
						(function () {
								var v_item;
								(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
										(function () {
											if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_item, 'code', [], 0)) == 'circumfix:<( )>') || ((p5str(p5call(v_item, 'code', [], 0)) == 'list:<,>') || (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')))) ) {
											(function () {
												if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')) ) {
												(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aset(0, (p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)));
											}
											})();
											(function () {
												var v_arg;
												(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
														List_items.p5push([v_arg]);
													}, p5list_to_a([p5array_deref(p5pkg['Perlito5::Java'].to_list_preprocess(p5list_to_a([p5call(v_item, 'arguments', [], 1)]), p5want), 'Perlito5::Java')]), false, '') })()
											})();
										}
										else {
											List_items.p5push([v_item]);
										}
										})();
									}, p5list_to_a([p5array_deref(List__.p5aget_array(0), 'Perlito5::Java')]), false, '') })()
							})();
						return ((new p5ArrayRef(List_items)));
					};
					tmp4527._prototype_ = null;
					return tmp4527
				})());
				p5typeglob_set('Perlito5::Java', 'to_scalar', (function () {
					var tmp4528;
					tmp4528 = function (List__, p5want) {
						var v_items;
						v_items = (p5pkg['Perlito5::Java'].to_scalar_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
						var v_level;
						v_level = (List__.p5aget(1));
						var v_wantarray;
						v_wantarray = ('scalar');
						return (( p5bool(p5num(p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Java'))) ? ('(' + p5pkg['Perlito5::Java'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Java')]))])), 0) + ')') : 'null'));
					};
					tmp4528._prototype_ = null;
					return tmp4528
				})());
				p5typeglob_set('Perlito5::Java', 'to_scalar_preprocess', (function () {
					var tmp4529;
					tmp4529 = function (List__, p5want) {
						var List_items = [];
						(function () {
								var v_item;
								(function(){ var v_item; p5for_lex(function (v) { v_item = v }, function () {
										(function () {
											if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_item, 'code', [], 0)) == 'list:<,>') || (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>'))) ) {
											(function () {
												if ( (p5bool(p5call(v_item, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_item, 'code', [], 0)) == 'infix:<=>>')) ) {
												(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aset(0, (p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_item || (v_item = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)));
											}
											})();
											(function () {
												var v_arg;
												(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
														List_items.p5push([v_arg]);
													}, p5list_to_a([p5array_deref(p5pkg['Perlito5::Java'].to_scalar_preprocess(p5list_to_a([p5call(v_item, 'arguments', [], 1)]), p5want), 'Perlito5::Java')]), false, '') })()
											})();
										}
										else {
											List_items.p5push([v_item]);
										}
										})();
									}, p5list_to_a([p5array_deref(List__.p5aget_array(0), 'Perlito5::Java')]), false, '') })()
							})();
						return ((new p5ArrayRef(List_items)));
					};
					tmp4529._prototype_ = null;
					return tmp4529
				})());
				p5typeglob_set('Perlito5::Java', 'to_runtime_context', (function () {
					var tmp4530;
					tmp4530 = function (List__, p5want) {
						try {
							var v_items;
							v_items = (p5pkg['Perlito5::Java'].to_scalar_preprocess(p5list_to_a([List__.p5aget(0)]), 0));
							var v_level;
							v_level = (List__.p5aget(1));
							var v_wantarray;
							v_wantarray = ('runtime');
							p5and(p5and((p5num(p5num(p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Java'))) == 1), function () {
								return p5pkg['Perlito5::Java'].is_scalar(p5list_to_a([(v_items || (v_items = new p5ArrayRef([])))._array_.p5aget(0)]), 0)
							}), function () {
								throw(p5call((v_items || (v_items = new p5ArrayRef([])))._array_.p5aget(0), 'emit_java', [v_level, v_wantarray], p5want))
							});
							return (p5context([('PerlOp.context(want, ' + p5pkg['Perlito5::Java'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_items || (v_items = new p5ArrayRef([]))), 'Perlito5::Java')]))])), 0) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4530._prototype_ = null;
					return tmp4530
				})());
				p5typeglob_set('Perlito5::Java', 'to_context', (function () {
					var tmp4531;
					tmp4531 = function (List__, p5want) {
						var v_wantarray;
						v_wantarray = (List__.shift());
						return (( (p5str(v_wantarray) == 'list') ? 'PlCx.LIST' : ( (p5str(v_wantarray) == 'scalar') ? 'PlCx.SCALAR' : ( (p5str(v_wantarray) == 'void') ? 'PlCx.VOID' : 'want'))));
					};
					tmp4531._prototype_ = null;
					return tmp4531
				})());
				p5typeglob_set('Perlito5::Java', 'autoquote', (function () {
					var tmp4532;
					tmp4532 = function (List__, p5want) {
						var v_index;
						v_index = (List__.shift());
						var v_level;
						v_level = (List__.shift());
						v_index = (p5call('Perlito5::AST::Lookup', 'autoquote', [v_index], 0));
						return (p5pkg['Perlito5::Java'].to_str([v_index, v_level], p5want));
					};
					tmp4532._prototype_ = null;
					return tmp4532
				})());
				p5typeglob_set('Perlito5::Java', 'emit_java_autovivify', (function () {
					var tmp4533;
					tmp4533 = function (List__, p5want) {
						try {
							var v_obj;
							v_obj = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_type;
							v_type = (List__.shift());
							(function () {
								if ( (p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Index'], 0)) || (p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Lookup'], 0)) || p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Call'], 0)))) ) {
								throw(p5call(v_obj, 'emit_java', [v_level, 0, v_type], p5want));
							}
							})();
							(function () {
								if ( (p5bool(p5call(v_obj, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_obj, 'code', [], 0)) == 'prefix:<$>')) ) {
								(function () {
									var v_arg;
									v_arg = ((v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									throw(p5context([('get_scalarref(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string([v_type], 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5call(v_obj, 'emit_java', [v_level], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4533._prototype_ = null;
					return tmp4533
				})());
				p5typeglob_set('Perlito5::Java', 'emit_java_list_with_tabs', (function () {
					var tmp4534;
					tmp4534 = function (List__, p5want) {
						var v_level;
						var v_argument;
						var tmp4535 = p5list_to_a([List__]);
							v_level = tmp4535.shift();
							v_argument = tmp4535.shift();
						var v_tab;
						v_tab = (p5pkg['Perlito5::Java'].tab([v_level], 0));
						return (p5map(p5pkg['Perlito5::Java'], function (p5want) {
									return (( (p5pkg['Perlito5::Java'].ref([p5make_package('main')['v__']], 0) == 'ARRAY') ? p5pkg['Perlito5::Java'].emit_java_list_with_tabs([(p5num(v_level) + 1), p5make_package('main')['v__']], p5want) : (p5str(v_tab) + p5str(p5make_package('main')['v__']))));
								}, p5list_to_a([p5array_deref((v_argument || (v_argument = new p5ArrayRef([]))), 'Perlito5::Java')])));
					};
					tmp4534._prototype_ = null;
					return tmp4534
				})());
				p5typeglob_set('Perlito5::Java', 'emit_wrap_java', (function () {
					var tmp4536;
					tmp4536 = function (List__, p5want) {
						try {
							var v_level;
							var List_argument = [];
							var tmp4537 = p5list_to_a([List__]);
							v_level = tmp4537.shift();
							List_argument = tmp4537;
							tmp4537 = [];
							p5and(p5want, function () {
								throw((p5want ? List_argument : List_argument.length))
							});
							var v_s;
							p5and(!( p5bool(p5pkg['Perlito5::Java'].ref([List_argument.p5aget(0)], 0))), function () {
								return v_s = (List_argument.shift())
							});
							return (p5context([p5pkg['Perlito5::Java'].join([String.fromCharCode(10)].concat(p5list_to_a([( p5bool(v_s) ? v_s : p5context([], 1)), p5pkg['Perlito5::Java'].emit_java_list_with_tabs(p5list_to_a([v_level, (new p5ArrayRef(p5list_to_a([(new p5ArrayRef(List_argument))])))]), 1)])), p5want)], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4536._prototype_ = null;
					return tmp4536
				})());
				p5typeglob_set('Perlito5::Java', 'emit_wrap_statement_java', (function () {
					var tmp4538;
					tmp4538 = function (List__, p5want) {
						try {
							var v_level;
							var v_wantarray;
							var v_argument;
							var tmp4539 = p5list_to_a([List__]);
							v_level = tmp4539.shift();
							v_wantarray = tmp4539.shift();
							v_argument = tmp4539.shift();
							(function () {
								if ( (p5str(v_wantarray) == 'void') ) {
								throw(p5context([v_argument], p5want));
							}
							})();
							return (p5pkg['Perlito5::Java'].emit_wrap_java([v_level, v_argument], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4538._prototype_ = null;
					return tmp4538
				})());
				p5typeglob_set('Perlito5::Java', 'emit_wrap_last_exception_java', (function () {
					var tmp4540;
					tmp4540 = function (List__, p5want) {
						var v_self;
						var v_stmts;
						var tmp4541 = p5list_to_a([List__]);
							v_self = tmp4541.shift();
							v_stmts = tmp4541.shift();
						var v_block_label;
						v_block_label = (p5pkg['Perlito5::Java'].get_java_loop_label(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')]), 0));
						var v_test_label;
						v_test_label = ('e.label_id != 0');
						p5and(v_block_label, function () {
								return v_test_label = (('e.label_id != ' + p5str(v_block_label) + ' && e.label_id != 0'))
							});
						return (p5context(['try {', (new p5ArrayRef(p5list_to_a([p5array_deref((v_stmts || (v_stmts = new p5ArrayRef([]))), 'Perlito5::Java')]))), '}', 'catch(PlLastException e) {', (new p5ArrayRef(p5list_to_a([('if (' + p5str(v_test_label) + ') {'), (new p5ArrayRef(['throw e;'])), '}']))), '}'], p5want));
					};
					tmp4540._prototype_ = null;
					return tmp4540
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::Java::LexicalBlock');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::Java::LexicalBlock', 'new', (function () {
					var tmp4542;
					tmp4542 = function (List__, p5want) {
						var v_class;
						v_class = (List__.shift());
						return (p5pkg['Perlito5::Java::LexicalBlock'].bless([(new p5HashRef(p5a_to_h(p5list_to_a([List__])))), v_class], p5want));
					};
					tmp4542._prototype_ = null;
					return tmp4542
				})());
				p5typeglob_set('Perlito5::Java::LexicalBlock', 'block', (function () {
					var tmp4543;
					tmp4543 = function (List__, p5want) {
						return (List__.p5aget_hash(0)._hash_.p5hget('block'));
					};
					tmp4543._prototype_ = null;
					return tmp4543
				})());
				p5typeglob_set('Perlito5::Java::LexicalBlock', 'has_decl', (function () {
					var tmp4544;
					tmp4544 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.p5aget(0));
							var v_type;
							v_type = (List__.p5aget(1));
							(function () {
								var v_decl;
								(function(){ var v_decl; p5for_lex(function (v) { v_decl = v }, function () {
										p5and(p5grep(p5pkg['Perlito5::Java::LexicalBlock'], function (p5want) {
											return (((p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('decl')) == p5str(v_type))));
										}, p5list_to_a([p5call(v_decl, 'emit_java_get_decl', [], 1)])), function () {
											throw(p5context([1], p5want))
										});
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Java::LexicalBlock')]), false, '') })()
							})();
							return (p5context([0], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4544._prototype_ = null;
					return tmp4544
				})());
				p5typeglob_set('Perlito5::Java::LexicalBlock', 'emit_return', (function () {
					var tmp4545;
					tmp4545 = function (List__, p5want) {
						var v_has_local;
						var v_local_label;
						var v_value;
						var tmp4546 = p5list_to_a([List__]);
							v_has_local = tmp4546.shift();
							v_local_label = tmp4546.shift();
							v_value = tmp4546.shift();
						return (( p5bool(v_has_local) ? ('return PerlOp.cleanup_local(' + p5str(v_local_label) + ', ' + p5str(v_value) + ')') : ('return ' + p5str(v_value))));
					};
					tmp4545._prototype_ = null;
					return tmp4545
				})());
				p5typeglob_set('Perlito5::Java::LexicalBlock', 'emit_java', (function () {
					var tmp4547;
					tmp4547 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4548 = p5list_to_a([List__]);
							v_self = tmp4548.shift();
							v_level = tmp4548.shift();
							v_wantarray = tmp4548.shift();
							var v_original_level;
							v_original_level = (v_level);
							var v_block_label;
							v_block_label = (p5pkg['Perlito5::Java'].get_java_loop_label(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('block_label')]), 0));
							p5and(v_block_label, function () {
								return p5make_package('Perlito5')['v_THROW'] = (1)
							});
							var List_block = [];
							(function () {
								var v_stmt;
								(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
										(function () {
											if ( (v_stmt != null) ) {
											(function () {
												if ( ((p5pkg['Perlito5::Java::LexicalBlock'].ref([v_stmt], 0) == 'Perlito5::AST::Apply') && ((p5str(p5call(v_stmt, 'code', [], 0)) == 'undef') && !( p5bool(p5num(p5array_deref((v_stmt || (v_stmt = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java::LexicalBlock')))))) ) {}
											else {
												List_block.p5push([v_stmt]);
											}
											})();
										}
										})();
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::Java::LexicalBlock')]), false, '') })()
							})();
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) && !( p5bool(List_block.length))) ) {
								List_block.p5push(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'return', 'arguments', (new p5ArrayRef([]))]), 1)]));
							}
							})();
							var List_str = [];
							var List_pre = [];
							var v_has_local;
							v_has_local = (p5call(v_self, 'has_decl', ['local'], 0));
							var v_has_regex;
							v_has_regex = (0);
							(function () {
								if ( p5bool(p5grep(p5pkg['Perlito5::Java::LexicalBlock'], function (p5want) {
									return ((p5call(p5make_package('main')['v__'], 'emit_java_has_regex', [], 0)));
								}, p5list_to_a([List_block]))) ) {
								v_has_regex = (1);
							}
							})();
							var v_local_label;
							v_local_label = (p5pkg['Perlito5::Java'].get_label([], 0));
							(function () {
								if ( p5bool(v_has_local) ) {
								List_pre.p5push([('int ' + p5str(v_local_label) + ' = PerlOp.local_length();')]);
							}
							})();
							var v_create_context;
							v_create_context = (p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('create_context'), function () {
										return p5call(v_self, 'has_decl', ['my'], 0)
									}));
							var v_outer_pkg;
							v_outer_pkg = (p5make_package('Perlito5')['v_PKG_NAME']);
							(function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) || p5bool(v_create_context)) ) {
								(function () {
									var tmp4549 = v_level;
									v_level = p5incr_(tmp4549);
									return tmp4549
								})();
							}
							})();
							var v_last_statement;
							(function () {
								if ( (p5str(v_wantarray) != 'void') ) {
								v_last_statement = (List_block.pop());
							}
							})();
							(function () {
								var v_decl;
								(function(){ var v_decl; p5for_lex(function (v) { v_decl = v }, function () {
										(function () {
											if ( ((p5pkg['Perlito5::Java::LexicalBlock'].ref([v_decl], 0) == 'Perlito5::AST::Apply') && (p5str(p5call(v_decl, 'code', [], 0)) == 'package')) ) {
											p5make_package('Perlito5')['v_PKG_NAME'] = ((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('namespace'));
										}
										})();
										var List_var_decl = [];
										List_var_decl = p5list_to_a([p5call(v_decl, 'emit_java_get_decl', [], 1)]);
										(function () {
											var v_arg;
											(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
													List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_java_init', [v_level, v_wantarray], 1)]));
												}, p5list_to_a([List_var_decl]), false, '') })()
										})();
										(function () {
											if ( !( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Decl'], 0)) && ((p5str(p5call(v_decl, 'decl', [], 0)) == 'my') || (p5str(p5call(v_decl, 'decl', [], 0)) == 'our')))) ) {
											(function () {
												if ( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Int'], 0)) || (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Num'], 0)) || p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Buf'], 0)))) ) {}
											else (function () {
												if ( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Apply'], 0)) && (!( ((p5str((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('namespace')) == 'Java') && (p5str((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('code')) == 'inline'))) && !( ((p5str((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('code')) == 'infix:<=>') || ((p5str((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('code')) == 'print') || (p5str((v_decl || (v_decl = new p5HashRef({})))._hash_.p5hget('code')) == 'say')))))) ) {
												List_str.p5push([('PerlOp.statement(' + p5str(p5call(v_decl, 'emit_java', [v_level, 'void'], 0)) + ');')]);
											}
											else (function () {
												if ( (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::CompUnit'], 0)) || (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::For'], 0)) || (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::While'], 0)) || (p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::If'], 0)) || p5bool(p5call(v_decl, 'isa', ['Perlito5::AST::Block'], 0)))))) ) {
												List_str.p5push(p5list_to_a([p5call(v_decl, 'emit_java', [v_level, 'void'], 1)]));
											}
											else {
												List_str.p5push([(p5str(p5call(v_decl, 'emit_java', [v_level, 'void'], 0)) + ';')]);
											}
											})()
											})()
											})();
										}
										})();
									}, p5list_to_a([List_block]), false, '') })()
							})();
							(function () {
								if ( p5bool(v_last_statement) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_last_statement, 'emit_java_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_java_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
									(function () {
										if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::For'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::While'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::If'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Block'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Use'], 0)) || (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'goto'))))))) ) {
										List_str.p5push([(p5str(p5call(v_last_statement, 'emit_java', [v_level, 'void'], 0)) + ';')]);
										List_str.p5push([(p5str(p5pkg['Perlito5::Java::LexicalBlock'].emit_return([v_has_local, v_local_label, 'PerlOp.context(want)'], 0)) + ';')]);
									}
									else (function () {
										if ( (p5bool(p5call(v_last_statement, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call(v_last_statement, 'code', [], 0)) == 'return')) ) {
										(function () {
											if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) ) {
											(function () {
												if ( !( p5bool(p5num(p5array_deref((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java::LexicalBlock')))) ) {
												List_str.p5push([(p5str(p5pkg['Perlito5::Java::LexicalBlock'].emit_return([v_has_local, v_local_label, 'PerlOp.context(want)'], 0)) + ';')]);
											}
											else {
												List_str.p5push([(p5str(p5pkg['Perlito5::Java::LexicalBlock'].emit_return(p5list_to_a([v_has_local, v_local_label, ( (p5str(v_wantarray) == 'runtime') ? p5pkg['Perlito5::Java'].to_runtime_context(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]))), (p5num(v_level) + 1)]), 1) : ( (p5str(v_wantarray) == 'scalar') ? p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]))), (p5num(v_level) + 1)]), 1) : p5call((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, v_wantarray], 1)))]), 0)) + ';')]);
											}
											})();
										}
										else (function () {
											if ( !( p5bool(p5num(p5array_deref((v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::Java::LexicalBlock')))) ) {
											p5make_package('Perlito5')['v_THROW_RETURN'] = (1);
											List_str.p5push(['return PerlOp.ret(PerlOp.context(want));']);
										}
										else {
											p5make_package('Perlito5')['v_THROW_RETURN'] = (1);
											List_str.p5push([('return PerlOp.ret(' + p5str(p5pkg['Perlito5::Java'].to_runtime_context(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_last_statement || (v_last_statement = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]))), (p5num(v_level) + 1)]), 0)) + ');')]);
										}
										})()
										})();
									}
									else {
										List_str.p5push([(p5str(p5pkg['Perlito5::Java::LexicalBlock'].emit_return(p5list_to_a([v_has_local, v_local_label, ( (p5str(v_wantarray) == 'runtime') ? p5pkg['Perlito5::Java'].to_runtime_context(p5list_to_a([(new p5ArrayRef([v_last_statement])), (p5num(v_level) + 1)]), 1) : ( (p5str(v_wantarray) == 'scalar') ? p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_last_statement])), (p5num(v_level) + 1)]), 1) : p5call(v_last_statement, 'emit_java', [v_level, v_wantarray], 1)))]), 0)) + ';')]);
									}
									})()
									})();
								})();
							}
							})();
							var v_out;
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('eval_block')) ) {
								throw(p5context([(p5want ? List_pre : List_pre.length), 'try {', (new p5ArrayRef(List_str)), '}', 'catch(PlReturnException e) {', (new p5ArrayRef([(p5str(p5pkg['Perlito5::Java::LexicalBlock'].emit_return([v_has_local, v_local_label, 'e.ret'], 0)) + ';')])), '}', 'catch(PlNextException e) {', (new p5ArrayRef(['throw e;'])), '}', 'catch(PlLastException e) {', (new p5ArrayRef(['throw e;'])), '}', 'catch(PlRedoException e) {', (new p5ArrayRef(['throw e;'])), '}', 'catch(PlDieException e) {', (new p5ArrayRef(['PlV.set("main|v_@", e.ret);', 'return PlCx.UNDEF;'])), '}', 'catch(Exception e) {', (new p5ArrayRef(['PlV.set("main|v_@", new PlString(e.getMessage()));', 'return PlCx.UNDEF;'])), '}'], p5want));
							}
							else (function () {
								if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('top_level')) && p5bool(p5make_package('Perlito5')['v_THROW_RETURN'])) ) {
								List_pre.p5push(p5list_to_a(['try {', (new p5ArrayRef(p5list_to_a([List_str]))), '}', 'catch(PlReturnException e) {', (new p5ArrayRef([(p5str(p5pkg['Perlito5::Java::LexicalBlock'].emit_return([v_has_local, v_local_label, 'e.ret'], 0)) + ';')])), '}']));
								List_str = [];
							}
							else (function () {
								if ( ((p5bool(p5make_package('Perlito5')['v_THROW']) || p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue'))) && !( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('not_a_loop')))) ) {
								(function () {
									var v_redo_label;
									v_redo_label = (p5pkg['Perlito5::Java'].get_label([], 0));
									var v_test_label;
									v_test_label = ('e.label_id != 0');
									p5and(v_block_label, function () {
										return v_test_label = (('e.label_id != ' + p5str(v_block_label) + ' && e.label_id != 0'))
									});
									var List_continue = [];
									(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')) ) {
										List_continue.p5push(p5list_to_a([('if (!' + p5str(v_redo_label) + ') {'), (new p5ArrayRef(p5list_to_a(['try {', (new p5ArrayRef(p5list_to_a([p5call(p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('continue')._hash_.p5hget('stmts'), 'not_a_loop', 1]), 0), 'emit_java', [(p5num(v_level) + 2), v_wantarray], 1)]))), '}', 'catch(PlNextException e) {', (new p5ArrayRef(p5list_to_a([('if (' + p5str(v_test_label) + ') {'), (new p5ArrayRef(['throw e;'])), '}']))), '}', 'catch(PlRedoException e) {', (new p5ArrayRef(p5list_to_a([('if (' + p5str(v_test_label) + ') {'), (new p5ArrayRef(['throw e;'])), '}', (p5str(v_redo_label) + ' = true;')]))), '}']))), '}']));
									}
									})();
									List_pre.p5push(p5list_to_a([('boolean ' + p5str(v_redo_label) + ';'), 'do {', (new p5ArrayRef(p5list_to_a([(p5str(v_redo_label) + ' = false;'), 'try {', (new p5ArrayRef(p5list_to_a([List_str]))), '}', 'catch(PlNextException e) {', (new p5ArrayRef(p5list_to_a([('if (' + p5str(v_test_label) + ') {'), (new p5ArrayRef(['throw e;'])), '}']))), '}', 'catch(PlRedoException e) {', (new p5ArrayRef(p5list_to_a([('if (' + p5str(v_test_label) + ') {'), (new p5ArrayRef(['throw e;'])), '}', (p5str(v_redo_label) + ' = true;')]))), '}', List_continue]))), ('} while (' + p5str(v_redo_label) + ');')]));
									List_str = [];
								})();
							}
							else (function () {
								if ( p5bool(v_has_local) ) {
								List_str.p5push([('PerlOp.cleanup_local(' + p5str(v_local_label) + ', PlCx.UNDEF);')]);
							}
							})()
							})()
							})()
							})();
							p5make_package('Perlito5')['v_PKG_NAME'] = (v_outer_pkg);
							return (p5context([(p5want ? List_pre : List_pre.length), (p5want ? List_str : List_str.length)], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4547._prototype_ = null;
					return tmp4547
				})());
				p5typeglob_set('Perlito5::Java::LexicalBlock', 'emit_java_has_regex', (function () {
					var tmp4550;
					tmp4550 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4550._prototype_ = null;
					return tmp4550
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::CompUnit');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_java', (function () {
					var tmp4551;
					tmp4551 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4552 = p5list_to_a([List__]);
							v_self = tmp4552.shift();
							v_level = tmp4552.shift();
							v_wantarray = tmp4552.shift();
						return (p5call(p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'not_a_loop', 1]), 0), 'emit_java', [(p5num(v_level) + 1), v_wantarray], p5want));
					};
					tmp4551._prototype_ = null;
					return tmp4551
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_java_program', (function () {
					var tmp4553;
					tmp4553 = function (List__, p5want) {
						try {
							var v_comp_units;
							var Hash_options = {};
							var tmp4554 = p5list_to_a([List__]);
							v_comp_units = tmp4554.shift();
							Hash_options = p5a_to_h(tmp4554);
							tmp4554 = [];
							p5make_package('Perlito5')['v_PKG_NAME'] = ('main');
							p5make_package('Perlito5')['v_THROW'] = (0);
							p5make_package('Perlito5')['v_THROW_RETURN'] = (0);
							var v_level;
							v_level = (0);
							var v_wantarray;
							v_wantarray = ('void');
							var v_str;
							var v_Java_class;
							v_Java_class = (p5pkg['Perlito5::Java'].get_java_class_info([], 0));
							(function () {
								var v_comp_unit;
								(function(){ var v_comp_unit; p5for_lex(function (v) { v_comp_unit = v }, function () {
										(function () {
											var v_unit_stmt;
											(function(){ var v_unit_stmt; p5for_lex(function (v) { v_unit_stmt = v }, function () {
													(function () {
														if ( (p5pkg['Perlito5::AST::CompUnit'].ref([v_unit_stmt], 0) == 'Perlito5::AST::Block') ) {
														(function () {
															var local_idx = p5LOCAL.length;
															var regex_tmp = p5_regex_capture;
															p5LOCAL.push(function(){ p5_regex_capture = regex_tmp });
															var v_stmt;
															v_stmt = (p5defined_or((v_unit_stmt || (v_unit_stmt = new p5HashRef({})))._hash_.p5hget('stmts'), function () {
																		return (new p5ArrayRef([]))
																	}));
															p5and((p5num(p5num(p5array_deref((v_stmt || (v_stmt = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit'))) != 2), function () {
																throw(new p5_error("next", ''))
															});
															p5or(p5context([p5and((v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget(0), function () {
																return p5and((p5pkg['Perlito5::AST::CompUnit'].ref([(v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget(0)], 0) == 'Perlito5::AST::Apply'), function () {
																	return (p5str((v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget_hash(0)._hash_.p5hget('code')) == 'package')
																})
															})], 0), function () {
																throw(new p5_error("next", ''))
															});
															p5or(p5context([p5and((v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget(1), function () {
																return p5and((p5pkg['Perlito5::AST::CompUnit'].ref([(v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget(1)], 0) == 'Perlito5::AST::Apply'), function () {
																	return p5context([p5or((p5str((v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget_hash(1)._hash_.p5hget('code')) == 'infix:<=>>'), function () {
																		return (p5str((v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget_hash(1)._hash_.p5hget('code')) == 'list:<,>')
																	})], 0)
																})
															})], 0), function () {
																throw(new p5_error("next", ''))
															});
															var v_class;
															v_class = ((v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget_hash(0)._hash_.p5hget('namespace'));
															var v_args_ast;
															v_args_ast = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef(p5list_to_a([(v_stmt || (v_stmt = new p5ArrayRef([])))._array_.p5aget(1)]))), 'code', 'circumfix:<{ }>']), 0));
															var v_out;
															v_out = ((new p5ArrayRef([])));
															p5pkg['Perlito5::Perl5::PrettyPrinter'].pretty_print(p5list_to_a([(new p5ArrayRef(p5list_to_a([p5call(v_args_ast, 'emit_perl5', [], 1)]))), 0, v_out]), null);
															var v_args_perl5;
															v_args_perl5 = (p5pkg['Perlito5::AST::CompUnit'].join([''].concat(p5list_to_a([p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')])), 0));
															p5or((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hset(p5str(v_class), ((function () {
																		var p5want = 0;
																		var r;
																		p5pkg["main"]["v_@"] = "";
																		var p5strict = p5pkg["Perlito5"]["v_STRICT"];
																		p5pkg["Perlito5"]["v_STRICT"] = 1;
																		try {
																			r = eval(p5pkg["Perlito5::Javascript2::Runtime"].perl5_to_js([p5str(v_args_perl5), 'Perlito5::AST::CompUnit', 'scalar', (new p5ArrayRef(p5list_to_a([(new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2195, 'name' : 'tab', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 2194, '_namespace' : 'Perlito5::Perl6::PrettyPrinter', '_real_sigil' : '%', 'name' : 'op', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 2194, '_namespace' : 'Perlito5::Perl6::PrettyPrinter', '_real_sigil' : '%', 'name' : 'op', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 2194, '_namespace' : 'Perlito5::Perl6::PrettyPrinter', 'name' : 'op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2193, 'name' : 'pair', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2192, 'name' : 'dispatch', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2162, 'name' : 'dispatch', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 1997, 'name' : 'tab', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 1996, '_namespace' : 'Perlito5::Perl5::PrettyPrinter', '_real_sigil' : '%', 'name' : 'op', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 1996, '_namespace' : 'Perlito5::Perl5::PrettyPrinter', '_real_sigil' : '%', 'name' : 'op', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 1996, '_namespace' : 'Perlito5::Perl5::PrettyPrinter', 'name' : 'op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 1995, 'name' : 'pair', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 1994, 'name' : 'dispatch', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 892, 'name' : 'safe_char', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 591, '_namespace' : 'Perlito5::Grammar::Scope', 'name' : 'Special_var', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 587, '_namespace' : 'Perlito5', 'name' : 'CORE_PROTO', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 586, '_namespace' : 'Perlito5', 'name' : 'CORE_OVERRIDABLE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 585, '_namespace' : 'Perlito5', 'name' : 'SPECIAL_VAR', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', '_real_sigil' : '%', 'name' : 'ENV', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : 'INC', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 584, '_namespace' : 'Perlito5', 'name' : 'PACKAGES', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 583, '_namespace' : 'Perlito5', 'name' : 'ID', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 582, '_namespace' : 'Perlito5', 'name' : 'SCOPE_STMT', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 581, '_namespace' : 'Perlito5', 'name' : 'SCOPE_DEPTH', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 579, '_namespace' : 'Perlito5', 'name' : 'BASE_SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 580, '_namespace' : 'Perlito5', 'name' : 'SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 579, '_namespace' : 'Perlito5', 'name' : 'BASE_SCOPE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 578, '_namespace' : 'Perlito5', 'name' : 'FILE_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 577, '_namespace' : 'Perlito5', 'name' : 'LINE_NUMBER', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 576, '_namespace' : 'Perlito5', 'name' : 'PKG_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 575, '_namespace' : 'Perlito5', 'name' : 'DATA_SECTION', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 574, '_namespace' : 'Perlito5', 'name' : 'CALLER', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 573, '_namespace' : 'Perlito5', 'name' : 'BYTES', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 572, '_namespace' : 'Perlito5', 'name' : 'UTF8', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 571, '_namespace' : 'Perlito5', 'name' : 'WARNINGS', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 570, '_namespace' : 'Perlito5', 'name' : 'STRICT', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 569, '_namespace' : 'Perlito5', 'name' : 'EMIT_USE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'our', '_id' : 568, '_namespace' : 'Perlito5', 'name' : 'EXPAND_USE', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ']', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ']', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '?', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '?', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ';', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ';', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '!', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '!', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ',', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : ',', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '"', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '"', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '/', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '/', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 365, 'name' : 'prec', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 339, 'name' : 'Op_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 338, 'name' : 'Op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 337, 'name' : 'End_token_chars', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 336, 'name' : 'End_token', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 333, 'name' : 'Term', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 332, 'name' : 'Term_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 331, 'name' : 'Parsed_op', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 330, 'name' : 'Parsed_op_chars', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 323, 'name' : 'Assoc', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 322, 'name' : 'PrefixPrecedence', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 321, 'name' : 'Precedence', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 320, 'name' : 'Operator', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 114, 'name' : 'copyright_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 113, 'name' : 'help_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 111, 'name' : 'wrapper_priority', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 110, 'name' : 'wrapper_end', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 109, 'name' : 'wrapper_begin', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 108, 'name' : 'bootstrapping', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 107, 'name' : 'boilerplate', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 106, 'name' : 'expand_use', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 105, 'name' : 'verbose', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 100, 'name' : '_V5_COMPILER_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2470, 'name' : 'Java_class', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2469, 'name' : 'str', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2468, 'name' : 'wantarray', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2467, 'name' : 'level', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : '_', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2466, 'name' : 'options', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2465, 'name' : 'comp_units', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2465, 'name' : 'comp_units', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2471, 'name' : 'comp_unit', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2471, 'name' : 'comp_unit', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2472, 'name' : 'unit_stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2472, 'name' : 'unit_stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2476, 'name' : 'out', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2477, 'name' : 'args_perl5', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2476, 'name' : 'out', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2475, 'name' : 'args_ast', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2476, 'name' : 'out', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2475, 'name' : 'args_ast', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2474, 'name' : 'class', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2472, 'name' : 'unit_stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5::AST::CompUnit'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 2473, 'name' : 'stmt', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1)])))]))))])))]))
																		}
																		catch(err) {
																			if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
																				throw(err)
																			}
																			else if ( err instanceof p5_error || err instanceof Error ) {
																				p5pkg["main"]["v_@"] = err;
																				if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
																					try {
																						p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
																					}
																					catch(err) { }
																				}
																			}
																			else {
																				return(err);
																			}
																		}
																		p5pkg["Perlito5"]["v_STRICT"] = p5strict;
																		return r;
																	})())), function () {
																return p5pkg['Perlito5::AST::CompUnit'].die([].concat([('error in arguments to generate Java class:' + String.fromCharCode(10) + p5str(p5make_package('main')['v_@']) + String.fromCharCode(10) + p5str(v_args_perl5))]), null)
															});
															p5or((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('import'), function () {
																return p5pkg['Perlito5::AST::CompUnit'].die([].concat(['missing ' + String.fromCharCode(39) + 'import' + String.fromCharCode(39) + ' argument to generate Java class']), null)
															});
															var List_parts = [];
															List_parts = p5list_to_a([CORE.split([new RegExp(String.fromCharCode(92) + '.', ''), (v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('import')], 1)]);
															(v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hset('java_type', (p5defined_or((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('java_type'), function () {
																		return List_parts.p5aget(p5num(p5negative( 1)))
																	})));
															(v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hset('java_native_to_perl', (p5defined_or((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('java_native_to_perl'), function () {
																		return ('p' + p5str((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('java_type')))
																	})));
															(function () {
																	var tmp = p5s((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('java_native_to_perl'), '[<>]', function () {
																		return '_'
																	}, 'g', 0);
																	(v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('java_native_to_perl') = tmp[0];
																	return tmp[1];
																})();
															var v_perl_to_java;
															v_perl_to_java = (v_class);
															(function () {
																	var tmp = p5s(v_perl_to_java, '::', function () {
																		return ''
																	}, 'g', 0);
																	v_perl_to_java = tmp[0];
																	return tmp[1];
																})();
															(v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hset('perl_to_java', (p5defined_or((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hget('perl_to_java'), function () {
																		return ('to_' + p5str(v_perl_to_java))
																	})));
															(v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_class))._hash_.p5hset('perl_package', (v_class));
															(v_unit_stmt || (v_unit_stmt = new p5HashRef({})))._hash_.p5hset('stmts', ((new p5ArrayRef([]))));
															p5cleanup_local(local_idx, null);
														})();
													}
													})();
												}, p5list_to_a([p5array_deref((v_comp_unit || (v_comp_unit = new p5HashRef({})))._hash_.p5hget_array('body'), 'Perlito5::AST::CompUnit')]), false, '') })()
										})();
									}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')]), false, '') })()
							})();
							var List_main = [];
							(function () {
								var v_comp_unit;
								(function(){ var v_comp_unit; p5for_lex(function (v) { v_comp_unit = v }, function () {
										List_main.p5push(p5list_to_a([p5call(v_comp_unit, 'emit_java', [(p5num(v_level) + 1), v_wantarray], 1)]));
									}, p5list_to_a([p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5::AST::CompUnit')]), false, '') })()
							})();
							(function () {
								if ( p5bool(Hash_options.p5hget('expand_use')) ) {
								(v_str = ((p5str(v_str) + p5str(p5call('Perlito5::Java::Runtime', 'emit_java', p5list_to_a(['java_classes', v_Java_class, 'java_constants', (new p5ArrayRef(p5pkg[p5make_package('Perlito5::Java')['List_Java_constants'] || (p5make_package('Perlito5::Java')['List_Java_constants'] = []), 'Perlito5::Java']['List_Java_constants']))]), 0)))));
							}
							})();
							(v_str = ((p5str(v_str) + (p5str(p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([p5negative( 1), 'class Main {', (new p5ArrayRef(p5list_to_a(['public static void main(String[] args) throws Exception {', (new p5ArrayRef(p5list_to_a(['PlEnv.init(args);', 'int want = PlCx.VOID;', 'try {', (new p5ArrayRef(p5list_to_a([p5pkg[p5make_package('Perlito5::Java')['List_Java_init'] || (p5make_package('Perlito5::Java')['List_Java_init'] = []), 'Perlito5::Java']['List_Java_init'], List_main]))), '}', 'catch(PlReturnException e) {', (new p5ArrayRef(['PlCORE.die("Can' + String.fromCharCode(39) + 't return outside a subroutine");'])), '}', 'catch(PlNextException e) {', (new p5ArrayRef(['PlCORE.die("Can' + String.fromCharCode(39) + 't ' + String.fromCharCode(92) + '"next' + String.fromCharCode(92) + '" outside a loop block");'])), '}', 'catch(PlLastException e) {', (new p5ArrayRef(['PlCORE.die("Can' + String.fromCharCode(39) + 't ' + String.fromCharCode(92) + '"last' + String.fromCharCode(92) + '" outside a loop block");'])), '}', 'catch(PlRedoException e) {', (new p5ArrayRef(['PlCORE.die("Can' + String.fromCharCode(39) + 't ' + String.fromCharCode(92) + '"redo' + String.fromCharCode(92) + '" outside a loop block");'])), '}']))), '}']))), '}']), 0)) + String.fromCharCode(10)))));
							return (p5context([v_str], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4553._prototype_ = null;
					return tmp4553
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_java_get_decl', (function () {
					var tmp4555;
					tmp4555 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4555._prototype_ = null;
					return tmp4555
				})());
				p5typeglob_set('Perlito5::AST::CompUnit', 'emit_java_has_regex', (function () {
					var tmp4556;
					tmp4556 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4556._prototype_ = null;
					return tmp4556
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Int');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Int', 'emit_java', (function () {
					var tmp4557;
					tmp4557 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4558 = p5list_to_a([List__]);
							v_self = tmp4558.shift();
							v_level = tmp4558.shift();
							v_wantarray = tmp4558.shift();
							var v_v;
							v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('int'));
							(function () {
								if ( (p5num(v_v) > p5num(p5context([(Math.pow(2, 31) - 1)], 0))) ) {
								throw(p5context([('new PlDouble(' + p5str(v_v) + '.0)')], p5want));
							}
							})();
							(function () {
								if ( ((p5num(v_v) >= p5num(p5negative( 2))) && (p5num(v_v) < 0)) ) {
								throw(p5context([('PlCx.MIN' + p5str(p5pkg['Perlito5::AST::Int'].abs([v_v], 0)))], p5want));
							}
							})();
							(function () {
								if ( ((p5num(v_v) >= 0) && (p5num(v_v) <= 2)) ) {
								throw(p5context([('PlCx.INT' + p5str(p5pkg['Perlito5::AST::Int'].abs([v_v], 0)))], p5want));
							}
							})();
							return (p5context([('new PlInt(' + p5str(v_v) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4557._prototype_ = null;
					return tmp4557
				})());
				p5typeglob_set('Perlito5::AST::Int', 'emit_java_get_decl', (function () {
					var tmp4559;
					tmp4559 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4559._prototype_ = null;
					return tmp4559
				})());
				p5typeglob_set('Perlito5::AST::Int', 'emit_java_has_regex', (function () {
					var tmp4560;
					tmp4560 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4560._prototype_ = null;
					return tmp4560
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Num');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Num', 'emit_java', (function () {
					var tmp4561;
					tmp4561 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4562 = p5list_to_a([List__]);
							v_self = tmp4562.shift();
							v_level = tmp4562.shift();
							v_wantarray = tmp4562.shift();
						return (p5context([('new PlDouble(' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('num')) + ')')], p5want));
					};
					tmp4561._prototype_ = null;
					return tmp4561
				})());
				p5typeglob_set('Perlito5::AST::Num', 'emit_java_get_decl', (function () {
					var tmp4563;
					tmp4563 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4563._prototype_ = null;
					return tmp4563
				})());
				p5typeglob_set('Perlito5::AST::Num', 'emit_java_has_regex', (function () {
					var tmp4564;
					tmp4564 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4564._prototype_ = null;
					return tmp4564
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Buf');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Buf', 'emit_java', (function () {
					var tmp4565;
					tmp4565 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4566 = p5list_to_a([List__]);
							v_self = tmp4566.shift();
							v_level = tmp4566.shift();
							v_wantarray = tmp4566.shift();
						return (p5context([('new PlString(' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('buf')]), 0)) + ')')], p5want));
					};
					tmp4565._prototype_ = null;
					return tmp4565
				})());
				p5typeglob_set('Perlito5::AST::Buf', 'emit_java_get_decl', (function () {
					var tmp4567;
					tmp4567 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4567._prototype_ = null;
					return tmp4567
				})());
				p5typeglob_set('Perlito5::AST::Buf', 'emit_java_has_regex', (function () {
					var tmp4568;
					tmp4568 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4568._prototype_ = null;
					return tmp4568
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Block');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Block', 'emit_java', (function () {
					var tmp4569;
					tmp4569 = function (List__, p5want) {
						var local_idx = p5LOCAL.length;
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4570 = p5list_to_a([List__]);
							v_self = tmp4570.shift();
							v_level = tmp4570.shift();
							v_wantarray = tmp4570.shift();
						(function () {
								var v_tmp4571 = p5make_package('Perlito5')['v_THROW'];
								p5LOCAL.push(function(){ p5make_package('Perlito5')['v_THROW'] = v_tmp4571 });
								return (p5make_package('Perlito5')['v_THROW'] = (null));
							})();
						p5make_package('Perlito5')['v_THROW'] = (0);
						var v_body;
						(function () {
								if ( (p5str(v_wantarray) != 'void') ) {
								v_body = (p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts'), 'block_label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), 'continue', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')]), 0));
							}
							else {
								v_body = (p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('stmts'), 'block_label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), 'continue', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')]), 0));
							}
							})();
						var v_init;
						v_init = ('');
						(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == 'INIT') ) {
								(function () {
									var v_tmp;
									v_tmp = (('p5pkg.main.' + p5str(p5pkg['Perlito5::Java'].get_label([], 0))));
									v_init = ((p5str(p5pkg['Perlito5::Java'].tab([(p5num(v_level) + 2)], 0)) + ('if (' + p5str(v_tmp) + ') { return }; ' + p5str(v_tmp) + ' = 1;' + String.fromCharCode(10))));
								})();
							}
							})();
						var List_str = [];
						List_str = p5list_to_a([p5call(v_body, 'emit_java', [(p5num(v_level) + 1), v_wantarray], 1)]);
						(function () {
								if ( p5bool(p5make_package('Perlito5')['v_THROW']) ) {
								List_str = p5list_to_a([p5pkg['Perlito5::Java'].emit_wrap_last_exception_java(p5list_to_a([v_self, (new p5ArrayRef(List_str))]), 1)]);
							}
							})();
						return p5cleanup_local(local_idx, (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, List_str]), p5want)));
						p5cleanup_local(local_idx, null);
					};
					tmp4569._prototype_ = null;
					return tmp4569
				})());
				p5typeglob_set('Perlito5::AST::Block', 'emit_java_get_decl', (function () {
					var tmp4572;
					tmp4572 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4572._prototype_ = null;
					return tmp4572
				})());
				p5typeglob_set('Perlito5::AST::Block', 'emit_java_has_regex', (function () {
					var tmp4573;
					tmp4573 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4573._prototype_ = null;
					return tmp4573
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Index');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Index', 'emit_java', (function () {
					var tmp4574;
					tmp4574 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_autovivification_type;
							var tmp4575 = p5list_to_a([List__]);
							v_self = tmp4575.shift();
							v_level = tmp4575.shift();
							v_wantarray = tmp4575.shift();
							v_autovivification_type = tmp4575.shift();
							var v_method;
							v_method = (p5or(v_autovivification_type, function () {
										return 'aget'
									}));
							p5and((p5str(v_autovivification_type) == 'scalar'), function () {
								return v_method = ('aget_scalarref')
							});
							p5and((p5str(v_autovivification_type) == 'array'), function () {
								return v_method = ('aget_arrayref')
							});
							p5and((p5str(v_autovivification_type) == 'hash'), function () {
								return v_method = ('aget_hashref')
							});
							p5and((p5str(v_autovivification_type) == 'local'), function () {
								return v_method = ('aget_lvalue_local')
							});
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'code', [], 0)) == 'circumfix:<( )>')))) ) {
								throw(p5context([('p5list_slice(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_java', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								(function () {
									var v_obj;
									v_obj = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									p5and((p5str((v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget('sigil')) == '%'), function () {
										return (v_obj || (v_obj = new p5HashRef({})))._hash_.p5hset('sigil', ('@'))
									});
									p5and((p5str((v_obj || (v_obj = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<%>'), function () {
										return (v_obj || (v_obj = new p5HashRef({})))._hash_.p5hset('code', ('prefix:<@>'))
									});
									throw(p5context([('p5hash_slice(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_java', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							var v_arg;
							v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'));
							var v_s;
							(function () {
								if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Int'], 0)) ) {
								v_s = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('int'));
							}
							else {
								v_s = (p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0));
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.' + p5str(v_method) + '(' + p5str(v_s) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4574._prototype_ = null;
					return tmp4574
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_java_set', (function () {
					var tmp4576;
					tmp4576 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var v_localize;
							var tmp4577 = p5list_to_a([List__]);
							v_self = tmp4577.shift();
							v_arguments = tmp4577.shift();
							v_level = tmp4577.shift();
							v_wantarray = tmp4577.shift();
							v_localize = tmp4577.shift();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								throw(p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var src=' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), v_level]), 0)) + ';'), ('var out=' + p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + ';'), ('var tmp' + ';'), 'for (var i=0, l=v.length; i<l; ++i) {', (new p5ArrayRef(['tmp = src.aget(i);', 'out.aset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
							}
							})();
							(function () {
								if ( p5bool(v_localize) ) {
								throw(p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.aget_lvalue_local(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ').set(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							var v_arg;
							v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'));
							var v_s;
							(function () {
								if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Int'], 0)) ) {
								v_s = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('int'));
							}
							else {
								v_s = (p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0));
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.aset(' + p5str(v_s) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4576._prototype_ = null;
					return tmp4576
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_java_set_list', (function () {
					var tmp4578;
					tmp4578 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp4579 = p5list_to_a([List__]);
							v_self = tmp4579.shift();
							v_level = tmp4579.shift();
							v_list = tmp4579.shift();
							var v_wantarray;
							v_wantarray = ('list');
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								throw(p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var out=' + p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), 0)) + ';'), ('var tmp' + ';'), 'for (var i=0, l=v.length; i<l; ++i) {', (new p5ArrayRef([('tmp = ' + p5str(v_list) + '.shift();'), 'out.aset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
							}
							})();
							var v_arg;
							v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'));
							var v_s;
							(function () {
								if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Int'], 0)) ) {
								v_s = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('int'));
							}
							else {
								v_s = (p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0));
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.aset(' + p5str(v_s) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4578._prototype_ = null;
					return tmp4578
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_java_container', (function () {
					var tmp4580;
					tmp4580 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj'), 'Perlito5::AST::Index'), 'code', 'prefix:<@>']), 0));
									throw(p5call(v_v, 'emit_java', [v_level], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'code', [], 0)) == 'circumfix:<( )>')) ) {
								throw(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj')]))), v_level]), p5want));
							}
							})();
							return (function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hset('sigil', ('@'));
								(function () {
									throw(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'emit_java', [v_level], p5want))
								})()
							}
							else {
								(function () {
									throw(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'array']), p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4580._prototype_ = null;
					return tmp4580
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_java_get_decl', (function () {
					var tmp4581;
					tmp4581 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4581._prototype_ = null;
					return tmp4581
				})());
				p5typeglob_set('Perlito5::AST::Index', 'emit_java_has_regex', (function () {
					var tmp4582;
					tmp4582 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4582._prototype_ = null;
					return tmp4582
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Lookup');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_java', (function () {
					var tmp4583;
					tmp4583 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_autovivification_type;
							var tmp4584 = p5list_to_a([List__]);
							v_self = tmp4584.shift();
							v_level = tmp4584.shift();
							v_wantarray = tmp4584.shift();
							v_autovivification_type = tmp4584.shift();
							var v_method;
							v_method = (p5or(v_autovivification_type, function () {
										return 'hget'
									}));
							p5and((p5str(v_autovivification_type) == 'scalar'), function () {
								return v_method = ('hget_scalarref')
							});
							p5and((p5str(v_autovivification_type) == 'array'), function () {
								return v_method = ('hget_arrayref')
							});
							p5and((p5str(v_autovivification_type) == 'hash'), function () {
								return v_method = ('hget_hashref')
							});
							p5and((p5str(v_autovivification_type) == 'local'), function () {
								return v_method = ('hget_lvalue_local')
							});
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(function () {
									var v_v;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) ) {
										v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									}
									})();
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, 'list'], 0)) + ('.' + p5str(v_method) + '(') + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<%>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '%'))) ) {
								(function () {
									var v_v;
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) ) {
										v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'));
									}
									})();
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5context([('p5hash_lookup_slice(' + p5str(p5call(v_v, 'emit_java', [v_level, 'list'], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4583._prototype_ = null;
					return tmp4583
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_java_set', (function () {
					var tmp4585;
					tmp4585 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var v_localize;
							var tmp4586 = p5list_to_a([List__]);
							v_self = tmp4586.shift();
							v_arguments = tmp4586.shift();
							v_level = tmp4586.shift();
							v_wantarray = tmp4586.shift();
							v_localize = tmp4586.shift();
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(function () {
									var v_v;
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0), function () {
										return v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'))
									});
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.hset(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( p5bool(v_localize) ) {
								throw(p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.hget_lvalue_local(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ').set(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.hset(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4585._prototype_ = null;
					return tmp4585
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_java_set_list', (function () {
					var tmp4587;
					tmp4587 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp4588 = p5list_to_a([List__]);
							v_self = tmp4588.shift();
							v_level = tmp4588.shift();
							v_list = tmp4588.shift();
							var v_wantarray;
							v_wantarray = ('list');
							(function () {
								if ( ((p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<@>')) || (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '@'))) ) {
								(function () {
									var v_v;
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0), function () {
										return v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'))
									});
									p5and(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0), function () {
										return v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'prefix:<%>', 'namespace', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'namespace', [], 1), 'arguments', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'arguments', [], 1)]), 0))
									});
									throw(p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, 'var a = [];', ('var v = ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp')]))), v_level]), 0)) + ';'), ('var out=' + p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ';'), ('var tmp' + ';'), ('for (var i=0, l=v.length; i<l; ++i)' + '{'), (new p5ArrayRef([('tmp = ' + p5str(v_list) + '.shift();'), 'out.hset(v[i], tmp);', 'a.push(tmp)'])), '}', 'return a']), p5want));
								})();
							}
							})();
							return (p5context([(p5str(p5call(v_self, 'emit_java_container', [v_level], 0)) + '.hset(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('index_exp'), v_level]), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4587._prototype_ = null;
					return tmp4587
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_java_container', (function () {
					var tmp4589;
					tmp4589 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							(function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj')._hash_.p5hget('code')) == 'prefix:<$>')) ) {
								(function () {
									var v_v;
									v_v = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj'), 'Perlito5::AST::Lookup'), 'code', 'prefix:<%>']), 0));
									throw(p5call(v_v, 'emit_java', [v_level], p5want));
								})();
							}
							})();
							return (function () {
								if ( (p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), 'sigil', [], 0)) == '$')) ) {
								var v_v;
								v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('obj'), 'Perlito5::AST::Lookup'), 'sigil', '%']), 0));
								(function () {
									throw(p5call(v_v, 'emit_java', [v_level], p5want))
								})()
							}
							else {
								(function () {
									throw(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('obj'), v_level, 'hash']), p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4589._prototype_ = null;
					return tmp4589
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_java_get_decl', (function () {
					var tmp4590;
					tmp4590 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4590._prototype_ = null;
					return tmp4590
				})());
				p5typeglob_set('Perlito5::AST::Lookup', 'emit_java_has_regex', (function () {
					var tmp4591;
					tmp4591 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4591._prototype_ = null;
					return tmp4591
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Var');
		p5block(function (v) {}, function () {
				var v_table;
				v_table = ((new p5HashRef({'$' : 'v_', '@' : 'List_', '%' : 'Hash_', '&' : ''})));
				p5typeglob_set('Perlito5::AST::Var', 'emit_java_global', (function () {
					var tmp4592;
					tmp4592 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_localize;
							var tmp4593 = p5list_to_a([List__]);
							v_self = tmp4593.shift();
							v_level = tmp4593.shift();
							v_wantarray = tmp4593.shift();
							v_localize = tmp4593.shift();
							var v_local;
							v_local = (( p5bool(v_localize) ? '_local' : ''));
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							var v_namespace;
							v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_namespace')
									}));
							(function () {
								if ( ((p5str(v_sigil) == '@') && ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == '_') && (p5str(v_namespace) == 'main'))) ) {
								(function () {
									var v_s;
									v_s = ('List__');
									(function () {
										if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
										throw(p5context([(p5str(v_s) + '.end_of_array_index()')], p5want));
									}
									})();
									(function () {
										if ( (p5str(v_wantarray) == 'scalar') ) {
										throw(p5context([(p5str(v_s) + '.length_of_array()')], p5want));
									}
									})();
									(function () {
										if ( (p5str(v_wantarray) == 'runtime') ) {
										throw(p5context([('(p5want' + ' ? ' + p5str(v_s) + ' : ' + p5str(v_s) + '.to_int()' + ')')], p5want));
									}
									})();
									throw(p5context([v_s], p5want));
								})();
							}
							})();
							(function () {
								if ( ((p5str(v_sigil) == '$') && (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) > 0)) ) {
								throw(p5context([('p5_regex_capture[' + p5str((p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) - 1)) + ']')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '::') ) {
								throw(p5pkg['Perlito5::Java'].escape_string([v_namespace], p5want));
							}
							})();
							var v_index;
							v_index = (p5pkg['Perlito5::Java'].escape_string([(p5str(v_namespace) + '|' + p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name))], 0));
							(function () {
								if ( (p5str(v_sigil) == '$') ) {
								throw(p5context([('PlV.get' + p5str(v_local) + '(' + p5str(v_index) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '*') ) {}
							})();
							(function () {
								if ( (p5str(v_sigil) == '&') ) {}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								(function () {
									(function () {
										if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
										throw(p5context([('PlV.array_get' + p5str(v_local) + '(' + p5str(v_index) + ').end_of_array_index()')], p5want));
									}
									})();
									var v_s;
									v_s = (('PlV.array_get' + p5str(v_local) + '(' + p5str(v_index) + ')'));
									(function () {
										if ( (p5str(v_wantarray) == 'scalar') ) {
										throw(p5context([(p5str(v_s) + '.length_of_array()')], p5want));
									}
									})();
									throw(p5context([v_s], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '%') ) {
								throw(p5context([('PlV.hash_get' + p5str(v_local) + '(' + p5str(v_index) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to access variable ', v_sigil, p5call(v_self, 'name', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4592._prototype_ = null;
					return tmp4592
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_java_global_set', (function () {
					var tmp4594;
					tmp4594 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var v_localize;
							var tmp4595 = p5list_to_a([List__]);
							v_self = tmp4595.shift();
							v_arguments = tmp4595.shift();
							v_level = tmp4595.shift();
							v_wantarray = tmp4595.shift();
							v_localize = tmp4595.shift();
							var v_local;
							v_local = (( p5bool(v_localize) ? '_local' : ''));
							var v_str_name;
							v_str_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name'));
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							var v_namespace;
							v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_namespace')
									}));
							(function () {
								if ( ((p5str(v_sigil) == '@') && ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) == '_') && (p5str(v_namespace) == 'main'))) ) {
								(function () {
									var v_s;
									v_s = ('List__');
									(function () {
										if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
										throw(p5context([(p5str(v_s) + '.set_end_of_array_index(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
									}
									})();
									(function () {
										if ( (p5str(v_wantarray) == 'scalar') ) {
										throw(p5context([(p5str(v_s) + '.to_int()')], p5want));
									}
									})();
									(function () {
										if ( (p5str(v_wantarray) == 'runtime') ) {
										throw(p5context([('(p5want' + ' ? ' + p5str(v_s) + ' : ' + p5str(v_s) + '.to_int()' + ')')], p5want));
									}
									})();
									throw(p5context([v_s], p5want));
								})();
							}
							})();
							(function () {
								if ( ((p5str(v_sigil) == '$') && (p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) > 0)) ) {
								throw(p5context([('p5_regex_capture[' + p5str((p5num((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) - 1)) + ']')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '::') ) {
								throw(p5pkg['Perlito5::Java'].escape_string([v_namespace], p5want));
							}
							})();
							var v_index;
							v_index = (p5pkg['Perlito5::Java'].escape_string([(p5str(v_namespace) + '|' + p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str(v_str_name))], 0));
							(function () {
								if ( (p5str(v_sigil) == '$') ) {
								throw(p5context([('PlV.set' + p5str(v_local) + '(' + p5str(v_index) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								(function () {
									if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
									(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('sigil', ('@'));
									throw(p5context([('PlV.array_get(' + p5str(v_index) + ').set_end_of_array_index(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								}
								})();
								throw(p5context([('PlV.array_set' + p5str(v_local) + '(' + p5str(v_index) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '%') ) {
								throw(p5context([('PlV.hash_set' + p5str(v_local) + '(' + p5str(v_index) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '*') ) {
								p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to variable ', v_sigil, p5call(v_self, 'name', [], 1)])), null);
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '&') ) {}
							})();
							return (p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to variable ', v_sigil, p5call(v_self, 'name', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4594._prototype_ = null;
					return tmp4594
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_java', (function () {
					var tmp4596;
					tmp4596 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4597 = p5list_to_a([List__]);
							v_self = tmp4597.shift();
							v_level = tmp4597.shift();
							v_wantarray = tmp4597.shift();
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							var v_decl_type;
							v_decl_type = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
										return 'global'
									}));
							(function () {
								if ( ((p5str(v_decl_type) != 'my') && (p5str(v_decl_type) != 'our')) ) {
								throw(p5call(v_self, 'emit_java_global', [v_level, v_wantarray], p5want));
							}
							})();
							var v_str_name;
							v_str_name = ((p5str((v_table || (v_table = new p5HashRef({})))._hash_.p5hget(p5str(v_sigil))) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) + '_' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_id'))));
							p5and((p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name']).hasOwnProperty((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_id')), function () {
								return v_str_name = (p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'].p5hget(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_id'))))
							});
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								(function () {
									if ( (p5str(v_wantarray) == 'scalar') ) {
									throw(p5context([(p5str(p5call(v_self, 'emit_java', [v_level, 'list'], 0)) + '.length_of_array()')], p5want));
								}
								})();
								(function () {
									if ( (p5str(v_wantarray) == 'runtime') ) {
									throw(p5context([('(p5want' + ' ? ' + p5str(p5call(v_self, 'emit_java', [v_level, 'list'], 0)) + ' : ' + p5str(p5call(v_self, 'emit_java', [v_level, 'list'], 0)) + '.length_of_array()' + ')')], p5want));
								}
								})();
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
								throw(p5context([(p5str(v_str_name) + '.end_of_array_index()')], p5want));
							}
							})();
							return (p5context([v_str_name], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4596._prototype_ = null;
					return tmp4596
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_java_set', (function () {
					var tmp4598;
					tmp4598 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp4599 = p5list_to_a([List__]);
							v_self = tmp4599.shift();
							v_arguments = tmp4599.shift();
							v_level = tmp4599.shift();
							v_wantarray = tmp4599.shift();
							var v_decl_type;
							v_decl_type = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
										return 'global'
									}));
							(function () {
								if ( ((p5str(v_decl_type) != 'my') && (p5str(v_decl_type) != 'our')) ) {
								throw(p5call(v_self, 'emit_java_global_set', [v_arguments, v_level, v_wantarray], p5want));
							}
							})();
							var v_open;
							v_open = (( (p5str(v_wantarray) == 'void') ? '' : '('));
							var v_close;
							v_close = (( (p5str(v_wantarray) == 'void') ? '' : ')'));
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							(function () {
								if ( (p5str(v_sigil) == '$') ) {
								(function () {
									var v_id;
									v_id = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_id'));
									var v_Java_var;
									v_Java_var = (p5pkg['Perlito5::Java'].get_java_var_info([], 0));
									var v_type;
									v_type = (p5or((v_Java_var || (v_Java_var = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_id))._hash_.p5hget('type'), function () {
												return 'PlLvalue'
											}));
									(function () {
										if ( (p5str(v_type) != 'PlLvalue') ) {
										throw(p5context([(p5str(p5call(v_self, 'emit_java', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::Java'].to_native_args(p5list_to_a([(new p5ArrayRef([v_arguments]))]), 0)))], p5want));
									}
									})();
									throw(p5context([(p5str(p5call(v_self, 'emit_java', [], 0)) + '.set(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								(function () {
									if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')) == '$#') ) {
									(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('sigil', ('@'));
									throw(p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_java', [], 0)) + '.set_end_of_array_index(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')' + p5str(v_close))], p5want));
								}
								})();
								throw(p5context([(p5str(p5call(v_self, 'emit_java', [], 0)) + '.set(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '%') ) {
								throw(p5context([(p5str(p5call(v_self, 'emit_java', [], 0)) + '.set(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1), 'hash']), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '*') ) {
								(function () {
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_namespace')
											}));
									throw(p5context([('p5typeglob_set(' + p5str(p5pkg['Perlito5::Java'].escape_string([v_namespace], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							return (p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to variable ', v_sigil, p5call(v_self, 'name', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4598._prototype_ = null;
					return tmp4598
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_java_set_list', (function () {
					var tmp4600;
					tmp4600 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp4601 = p5list_to_a([List__]);
							v_self = tmp4601.shift();
							v_level = tmp4601.shift();
							v_list = tmp4601.shift();
							var v_sigil;
							v_sigil = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_real_sigil'), function () {
										return (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sigil')
									}));
							(function () {
								if ( (p5str(v_sigil) == '$') ) {
								throw(p5context([(p5str(p5call(v_self, 'emit_java', [], 0)) + '.set(' + p5str(v_list) + '.shift())')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '@') ) {
								throw(p5context([p5pkg['Perlito5::AST::Var'].join([(';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Java'].tab([v_level], 0)))].concat([(p5str(p5call(v_self, 'emit_java', [], 0)) + ' = ' + p5str(v_list)), (p5str(v_list) + ' = []')]), p5want)], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_sigil) == '%') ) {
								throw(p5context([p5pkg['Perlito5::AST::Var'].join([(';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Java'].tab([v_level], 0)))].concat([(p5str(p5call(v_self, 'emit_java', [], 0)) + ' = new PlHash(' + p5str(v_list) + ')'), (p5str(v_list) + ' = []')]), p5want)], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Var'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to variable ', v_sigil, p5call(v_self, 'name', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4600._prototype_ = null;
					return tmp4600
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_java_get_decl', (function () {
					var tmp4602;
					tmp4602 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4602._prototype_ = null;
					return tmp4602
				})());
				p5typeglob_set('Perlito5::AST::Var', 'emit_java_has_regex', (function () {
					var tmp4603;
					tmp4603 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4603._prototype_ = null;
					return tmp4603
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Decl');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Decl', 'emit_java', (function () {
					var tmp4604;
					tmp4604 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4605 = p5list_to_a([List__]);
							v_self = tmp4605.shift();
							v_level = tmp4605.shift();
							v_wantarray = tmp4605.shift();
							var v_var;
							v_var = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'));
							var v_localize;
							v_localize = ('');
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'local') ) {
								v_localize = ('local');
								(function () {
									if ( (p5pkg['Perlito5::AST::Decl'].ref([v_var], 0) == 'Perlito5::AST::Var') ) {
									throw(p5call(v_var, 'emit_java_global', [v_level, v_wantarray, v_localize], p5want));
								}
								})();
							}
							})();
							return (p5call(v_var, 'emit_java', [v_level, v_wantarray, v_localize], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4604._prototype_ = null;
					return tmp4604
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_java_init', (function () {
					var tmp4606;
					tmp4606 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4607 = p5list_to_a([List__]);
							v_self = tmp4607.shift();
							v_level = tmp4607.shift();
							v_wantarray = tmp4607.shift();
							var v_var;
							v_var = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'));
							var v_Java_var;
							v_Java_var = (p5pkg['Perlito5::Java'].get_java_var_info([], 0));
							var v_type;
							v_type = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('type'), function () {
										return 'PlLvalue'
									}));
							var v_id;
							v_id = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var')._hash_.p5hget('_id'));
							(function () {
								if ( p5bool(v_id) ) {
								(v_Java_var || (v_Java_var = new p5HashRef({})))._hash_.p5hset(p5str(v_id), ((new p5HashRef({'id' : v_id, 'type' : v_type}))));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'local') ) {
								throw(p5context([''], p5want));
							}
							})();
							return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'my') ) {
								return (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '%') ) {
									(function () {
										throw(p5context([('PlHash ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_java', [], 0)) + ' = new PlHash();')], p5want))
									})()
								}
								else return (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '@') ) {
									(function () {
										throw(p5context([('PlArray ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_java', [], 0)) + ' = new PlArray();')], p5want))
									})()
								}
								else {
									var v_Java_class;
									v_Java_class = (p5pkg['Perlito5::Java'].get_java_class_info([], 0));
									var v_java_type;
									v_java_type = (p5or((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_type))._hash_.p5hget('java_type'), function () {
												return 'PlLvalue'
											}));
									return (function () {
										if ( (p5str(v_java_type) == 'PlLvalue') ) {
										(function () {
											throw(p5context([(p5str(v_java_type) + ' ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_java', [], 0)) + (' = new ' + p5str(v_java_type) + '();'))], p5want))
										})()
									}
									else {
										(function () {
											throw(p5context([(p5str(v_java_type) + ' ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_java', [], 0)) + ';')], p5want))
										})()
									}
									})()
								}
								})()
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'our') ) {
								var v_v;
								v_v = (p5call('Perlito5::AST::Var', 'new', p5list_to_a([p5hash_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('var'), 'Perlito5::AST::Decl'), '_decl', 'my']), 0));
								return (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '%') ) {
									(function () {
										throw(p5context([('PlHash ' + p5str(p5call(v_v, 'emit_java', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::AST::Var'].emit_java_global(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var')]), 0)) + ';')], p5want))
									})()
								}
								else return (function () {
									if ( (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'sigil', [], 0)) == '@') ) {
									(function () {
										throw(p5context([('PlArray ' + p5str(p5call(v_v, 'emit_java', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::AST::Var'].emit_java_global(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var')]), 0)) + ';')], p5want))
									})()
								}
								else {
									(function () {
										throw(p5context([('PlLvalue ' + p5str(p5call(v_v, 'emit_java', [], 0)) + ' = ' + p5str(p5pkg['Perlito5::AST::Var'].emit_java_global(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var')]), 0)) + ';')], p5want))
									})()
								}
								})()
								})()
							}
							else return (function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'state') ) {
								(function () {
									throw(p5context([('// state ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'), 'emit_java', [], 0)))], p5want))
								})()
							}
							else {
								return (p5pkg['Perlito5::AST::Decl'].die([].concat([('not implemented: Perlito5::AST::Decl ' + String.fromCharCode(39) + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) + String.fromCharCode(39))]), p5want));
							}
							})()
							})()
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4606._prototype_ = null;
					return tmp4606
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_java_set', (function () {
					var tmp4608;
					tmp4608 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp4609 = p5list_to_a([List__]);
							v_self = tmp4609.shift();
							v_arguments = tmp4609.shift();
							v_level = tmp4609.shift();
							v_wantarray = tmp4609.shift();
							var v_var;
							v_var = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('var'));
							var v_localize;
							v_localize = ('');
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('decl')) == 'local') ) {
								v_localize = ('local');
								(function () {
									if ( (p5pkg['Perlito5::AST::Decl'].ref([v_var], 0) == 'Perlito5::AST::Var') ) {
									throw(p5call(v_var, 'emit_java_global_set', [v_arguments, v_level, v_wantarray, v_localize], p5want));
								}
								})();
							}
							})();
							return (p5call(v_var, 'emit_java_set', [v_arguments, v_level, v_wantarray, v_localize], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4608._prototype_ = null;
					return tmp4608
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_java_set_list', (function () {
					var tmp4610;
					tmp4610 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_list;
						var tmp4611 = p5list_to_a([List__]);
							v_self = tmp4611.shift();
							v_level = tmp4611.shift();
							v_list = tmp4611.shift();
						return (p5call(p5call(v_self, 'var', [], 0), 'emit_java_set_list', [v_level, v_list], p5want));
					};
					tmp4610._prototype_ = null;
					return tmp4610
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_java_get_decl', (function () {
					var tmp4612;
					tmp4612 = function (List__, p5want) {
						var v_self;
						v_self = (List__.shift());
						return (p5context([v_self], p5want));
					};
					tmp4612._prototype_ = null;
					return tmp4612
				})());
				p5typeglob_set('Perlito5::AST::Decl', 'emit_java_has_regex', (function () {
					var tmp4613;
					tmp4613 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4613._prototype_ = null;
					return tmp4613
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Call');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Call', 'emit_java', (function () {
					var tmp4614;
					tmp4614 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var v_autovivification_type;
							var tmp4615 = p5list_to_a([List__]);
							v_self = tmp4615.shift();
							v_level = tmp4615.shift();
							v_wantarray = tmp4615.shift();
							v_autovivification_type = tmp4615.shift();
							var v_meth;
							v_meth = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method'));
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<[ ]>') ) {
								(function () {
									var v_method;
									v_method = (p5or(v_autovivification_type, function () {
												return 'aget'
											}));
									p5and((p5str(v_autovivification_type) == 'scalar'), function () {
										return v_method = ('aget_scalarref')
									});
									p5and((p5str(v_autovivification_type) == 'array'), function () {
										return v_method = ('aget_arrayref')
									});
									p5and((p5str(v_autovivification_type) == 'hash'), function () {
										return v_method = ('aget_hashref')
									});
									throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Java'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<{ }>') ) {
								(function () {
									var v_method;
									v_method = (p5or(v_autovivification_type, function () {
												return 'hget'
											}));
									p5and((p5str(v_autovivification_type) == 'scalar'), function () {
										return v_method = ('hget_scalarref')
									});
									p5and((p5str(v_autovivification_type) == 'array'), function () {
										return v_method = ('hget_arrayref')
									});
									p5and((p5str(v_autovivification_type) == 'hash'), function () {
										return v_method = ('hget_hashref')
									});
									throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '.' + p5str(v_method) + '(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1), 'list']), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( (p5str(v_meth) == 'postcircumfix:<( )>') ) {
								(function () {
									var v_invocant;
									(function () {
										if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										(function () {
											var v_arg;
											v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget_array('arguments')._array_.p5aget(0));
											v_invocant = (('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + ')'));
										})();
									}
									else (function () {
										if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '&')) ) {
										v_invocant = (('p5pkg[' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})]), 0)) + '][' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('name')]), 0)) + ']'));
									}
									else (function () {
										if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '::') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('namespace')) == '__SUB__'))) ) {
										v_invocant = ('this');
									}
									else {
										v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_java', [v_level, 'scalar'], 0));
									}
									})()
									})()
									})();
									throw(p5context([(p5str(v_invocant) + '.apply(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
								})();
							}
							})();
							(function () {
								if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('sigil')) == '::')) ) {
								(function () {
									var v_Java_class;
									v_Java_class = (p5pkg['Perlito5::Java'].get_java_class_info([], 0));
									(function () {
										if ( (v_Java_class)._hash_.hasOwnProperty((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('namespace')) ) {
										(function () {
											var v_info;
											v_info = ((v_Java_class || (v_Java_class = new p5HashRef({})))._hash_.p5hget(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('namespace'))));
											(function () {
												if ( (p5str(v_meth) == 'new') ) {
												throw(p5context([('new ' + p5str((v_info || (v_info = new p5HashRef({})))._hash_.p5hget('java_type')) + '(' + p5str(p5pkg['Perlito5::Java'].to_native_args(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
											}
											})();
											throw(p5context([(p5str((v_info || (v_info = new p5HashRef({})))._hash_.p5hget('java_type')) + '.' + p5str(v_meth) + '(' + p5str(p5pkg['Perlito5::Java'].to_native_args(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
										})();
									}
									})();
								})();
							}
							})();
							var v_invocant;
							v_invocant = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), 'emit_java', [v_level, 'scalar'], 0));
							(function () {
								if ( ((p5pkg['Perlito5::AST::Call'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant')], 0) == 'Perlito5::AST::Var') && p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('_id'))) ) {
								(function () {
									var v_id;
									v_id = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('invocant')._hash_.p5hget('_id'));
									var v_Java_var;
									v_Java_var = (p5pkg['Perlito5::Java'].get_java_var_info([], 0));
									var v_type;
									v_type = (p5or((v_Java_var || (v_Java_var = new p5HashRef({})))._hash_.p5hget_hash(p5str(v_id))._hash_.p5hget('type'), function () {
												return 'PlLvalue'
											}));
									(function () {
										if ( (p5str(v_type) != 'PlLvalue') ) {
										throw(p5context([(p5str(v_invocant) + '.' + p5str(v_meth) + '(' + p5str(p5pkg['Perlito5::Java'].to_native_args(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
									}
									})();
								})();
							}
							})();
							(function () {
								if ( p5bool(p5m(v_meth, '^to', '', 0)) ) {
								(function () {
									var v_Java_class;
									v_Java_class = (p5pkg['Perlito5::Java'].get_java_class_info([], 0));
									(function () {
										var v_info;
										(function(){ var v_info; p5for_lex(function (v) { v_info = v }, function () {
												(function () {
													if ( (p5str(v_meth) == p5str((v_info || (v_info = new p5HashRef({})))._hash_.p5hget('perl_to_java'))) ) {
													throw(p5context([(p5str(v_invocant) + '.' + p5str(v_meth) + '()')], p5want));
												}
												})();
											}, p5list_to_a([p5pkg['Perlito5::AST::Call'].values([p5hash_deref((v_Java_class || (v_Java_class = new p5HashRef({}))), 'Perlito5::AST::Call')], 1)]), false, '') })()
									})();
								})();
							}
							})();
							(function () {
								if ( (p5pkg['Perlito5::AST::Call'].ref([v_meth], 0) == 'Perlito5::AST::Var') ) {
								v_meth = (p5call(v_meth, 'emit_java', [v_level, 'scalar'], 0));
							}
							else {
								v_meth = (p5pkg['Perlito5::Java'].escape_string([v_meth], 0));
							}
							})();
							return (p5context([('p5call(' + p5str(v_invocant) + ', ' + p5str(v_meth) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4614._prototype_ = null;
					return tmp4614
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_java_set', (function () {
					var tmp4616;
					tmp4616 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp4617 = p5list_to_a([List__]);
							v_self = tmp4617.shift();
							v_arguments = tmp4617.shift();
							v_level = tmp4617.shift();
							v_wantarray = tmp4617.shift();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '.aset(' + p5str(p5pkg['Perlito5::Java'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '.hset(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1), 'list']), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Call'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to method ', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4616._prototype_ = null;
					return tmp4616
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_java_set_list', (function () {
					var tmp4618;
					tmp4618 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp4619 = p5list_to_a([List__]);
							v_self = tmp4619.shift();
							v_level = tmp4619.shift();
							v_list = tmp4619.shift();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<[ ]>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'array']), 0)) + '.aset(' + p5str(p5pkg['Perlito5::Java'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')) == 'postcircumfix:<{ }>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('invocant'), v_level, 'hash']), 0)) + '.hset(' + p5str(p5pkg['Perlito5::Java'].autoquote(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1), 'list']), 0)) + ', ' + p5str(v_list) + '.shift()' + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Call'].die([].concat(p5list_to_a(['don' + String.fromCharCode(39) + 't know how to assign to method ', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('method')])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4618._prototype_ = null;
					return tmp4618
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_java_get_decl', (function () {
					var tmp4620;
					tmp4620 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4620._prototype_ = null;
					return tmp4620
				})());
				p5typeglob_set('Perlito5::AST::Call', 'emit_java_has_regex', (function () {
					var tmp4621;
					tmp4621 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4621._prototype_ = null;
					return tmp4621
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Apply');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Apply', 'emit_qr_java', (function () {
					var tmp4622;
					tmp4622 = function (List__, p5want) {
						try {
							var v_regex;
							var v_modifier;
							var v_level;
							var tmp4623 = p5list_to_a([List__]);
							v_regex = tmp4623.shift();
							v_modifier = tmp4623.shift();
							v_level = tmp4623.shift();
							(function () {
								if ( ((p5str((v_modifier || (v_modifier = new p5HashRef({})))._hash_.p5hget('buf')) == '') && ((p5pkg['Perlito5::AST::Apply'].ref([v_regex], 0) == 'Perlito5::AST::Var') && (p5str((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('sigil')) == '$'))) ) {
								throw(p5call(v_regex, 'emit_java', [v_level], p5want));
							}
							})();
							var Hash_flags = {};
							Hash_flags = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
										return (p5make_package('main')['v__'], 1);
									}, p5list_to_a([CORE.split([new RegExp('', ''), (v_modifier || (v_modifier = new p5HashRef({})))._hash_.p5hget('buf')], 1)]))]));
							var v_flag_string;
							v_flag_string = (p5or(p5pkg['Perlito5::AST::Apply'].join([' | '].concat(p5list_to_a([( p5bool(Hash_flags.p5hget('i')) ? 'Pattern.CASE_INSENSITIVE' : p5context([], 1)), ( p5bool(Hash_flags.p5hget('x')) ? 'Pattern.COMMENTS' : p5context([], 1)), ( p5bool(Hash_flags.p5hget('m')) ? 'Pattern.MULTILINE' : p5context([], 1)), ( p5bool(Hash_flags.p5hget('s')) ? 'Pattern.DOTALL' : p5context([], 1))])), 0), function () {
										return '0'
									}));
							var v_s;
							v_s = (('new PlRegex(' + p5str(p5pkg['Perlito5::Java'].to_str([v_regex], 0)) + ', ' + p5str(v_flag_string) + ')'));
							(function () {
								if ( (p5pkg['Perlito5::AST::Apply'].ref([v_regex], 0) == 'Perlito5::AST::Buf') ) {
								(function () {
									var v_label;
									v_label = (p5pkg['Perlito5::Java'].get_label([], 0));
									p5pkg[p5make_package('Perlito5::Java')['List_Java_constants'] || (p5make_package('Perlito5::Java')['List_Java_constants'] = []), 'Perlito5::Java']['List_Java_constants'].p5push([('public static final PlRegex ' + p5str(v_label) + ' = ' + p5str(v_s) + ';')]);
									throw(p5context([('PlCx.' + p5str(v_label))], p5want));
								})();
							}
							})();
							return (p5context([v_s], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4622._prototype_ = null;
					return tmp4622
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_regex_java', (function () {
					var tmp4624;
					tmp4624 = function (List__, p5want) {
						try {
							var v_op;
							v_op = (List__.shift());
							var v_var;
							v_var = (List__.shift());
							var v_regex;
							v_regex = (List__.shift());
							var v_level;
							v_level = (List__.shift());
							var v_wantarray;
							v_wantarray = (List__.shift());
							(function () {
								if ( p5bool(p5call(v_regex, 'isa', ['Perlito5::AST::Var'], 0)) ) {
								v_regex = ((new p5HashRef(p5a_to_h(p5list_to_a(['code', 'p5:m', 'arguments', (new p5ArrayRef([v_regex, '']))])))));
							}
							})();
							var v_str;
							var v_code;
							v_code = ((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('code'));
							var v_regex_args;
							v_regex_args = ((v_regex || (v_regex = new p5HashRef({})))._hash_.p5hget('arguments'));
							(function () {
								if ( (p5str(v_code) == 'p5:s') ) {
								(function () {
									var v_replace;
									v_replace = ((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1));
									var v_modifier;
									v_modifier = ((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(2)._hash_.p5hget('buf'));
									(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_replace], 0) == 'Perlito5::AST::Block') ) {
										var local_idx = p5LOCAL.length;
										var regex_tmp = p5_regex_capture;
										p5LOCAL.push(function(){ p5_regex_capture = regex_tmp });
										v_replace = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do', 'arguments', (new p5ArrayRef([v_replace]))]), 0));
										(function () {
												var tmp = p5s(v_modifier, 'e', function () {
													return ''
												}, 'g', 0);
												v_modifier = tmp[0];
												return tmp[1];
											})();
										p5cleanup_local(local_idx, null);
									}
									})();
									v_str = (('PerlOp.replace(' + p5str(p5call(v_var, 'emit_java', [], 0)) + ', ' + p5str(p5pkg['Perlito5::AST::Apply'].emit_qr_java(p5list_to_a([(v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), v_modifier, v_level]), 0)) + ', ' + p5str(p5call(v_replace, 'emit_java', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')'));
								})();
							}
							else (function () {
								if ( (p5str(v_code) == 'p5:m') ) {
								v_str = (('PerlOp.match(' + p5str(p5call(v_var, 'emit_java', [], 0)) + ', ' + p5str(p5pkg['Perlito5::AST::Apply'].emit_qr_java(p5list_to_a([(v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), (v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')'));
							}
							else (function () {
								if ( (p5str(v_code) == 'p5:tr') ) {
								v_str = (p5pkg['Perlito5::Java'].emit_wrap_java([(p5num(v_level) + 1), ('var tmp = p5tr(' + p5str(p5call(v_var, 'emit_java', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(0), 'emit_java', [], 0)) + ', ' + p5str(p5call((v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget(1), 'emit_java', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_regex_args || (v_regex_args = new p5ArrayRef([])))._array_.p5aget_hash(2)._hash_.p5hget('buf')]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ');'), (p5str(p5call(v_var, 'emit_java', [], 0)) + ' = tmp[0];'), 'return tmp[1];'], 0));
							}
							else {
								p5pkg['Perlito5::AST::Apply'].die([].concat([('Error: regex emitter - unknown operator ' + p5str(v_code))]), null);
							}
							})()
							})()
							})();
							(function () {
								if ( (p5str(v_op) == '=~') ) {
								throw(p5context([v_str], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_op) == '!~') ) {
								throw(p5context([('!(' + p5str(v_str) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Apply'].die([].concat(['Error: regex emitter']), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4624._prototype_ = null;
					return tmp4624
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_java_set', (function () {
					var tmp4625;
					tmp4625 = function (List__, p5want) {
						try {
							var v_self;
							var v_arguments;
							var v_level;
							var v_wantarray;
							var tmp4626 = p5list_to_a([List__]);
							v_self = tmp4626.shift();
							v_arguments = tmp4626.shift();
							v_level = tmp4626.shift();
							v_wantarray = tmp4626.shift();
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( (p5str(v_code) == 'prefix:<$>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (p5num(v_level) + 1), 'scalar']), 0)) + '.scalar_deref_set(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<@>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (p5num(v_level) + 1), 'array']), 0)) + '.array_deref_set(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<%>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (p5num(v_level) + 1), 'hash']), 0)) + '.hash_deref_set(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( (p5str(v_code) == 'prefix:<*>') ) {
								throw(p5context(['PlCORE.die("prefix:<*> not implemented")'], p5want));
								throw(p5context([('p5typeglob_deref_set(' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							}
							})();
							var v_open;
							v_open = (( (p5str(v_wantarray) == 'void') ? '' : '('));
							var v_close;
							v_close = (( (p5str(v_wantarray) == 'void') ? '' : ')'));
							return (p5context([(p5str(v_open) + p5str(p5call(v_self, 'emit_java', [(p5num(v_level) + 1)], 0)) + ' = ' + p5str(p5call(v_arguments, 'emit_java', [(p5num(v_level) + 1)], 0)) + p5str(v_close))], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4625._prototype_ = null;
					return tmp4625
				})());
				var Hash_emit_js = {};
				Hash_emit_js = p5a_to_h(p5list_to_a(['infix:<=~>', (function () {
							var tmp4627;
							tmp4627 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4628 = p5list_to_a([List__]);
									v_self = tmp4628.shift();
									v_level = tmp4628.shift();
									v_wantarray = tmp4628.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_java(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level, v_wantarray]), p5want));
							};
							tmp4627._prototype_ = null;
							return tmp4627
						})(), 'infix:<!~>', (function () {
							var tmp4629;
							tmp4629 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4630 = p5list_to_a([List__]);
									v_self = tmp4630.shift();
									v_level = tmp4630.shift();
									v_wantarray = tmp4630.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_java(p5list_to_a(['!~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level, v_wantarray]), p5want));
							};
							tmp4629._prototype_ = null;
							return tmp4629
						})(), 'p5:s', (function () {
							var tmp4631;
							tmp4631 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4632 = p5list_to_a([List__]);
									v_self = tmp4632.shift();
									v_level = tmp4632.shift();
									v_wantarray = tmp4632.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_java(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(3), v_self, v_level, v_wantarray]), p5want));
							};
							tmp4631._prototype_ = null;
							return tmp4631
						})(), 'p5:m', (function () {
							var tmp4633;
							tmp4633 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4634 = p5list_to_a([List__]);
									v_self = tmp4634.shift();
									v_level = tmp4634.shift();
									v_wantarray = tmp4634.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_java(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2), v_self, v_level, v_wantarray]), p5want));
							};
							tmp4633._prototype_ = null;
							return tmp4633
						})(), 'p5:tr', (function () {
							var tmp4635;
							tmp4635 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4636 = p5list_to_a([List__]);
									v_self = tmp4636.shift();
									v_level = tmp4636.shift();
									v_wantarray = tmp4636.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_regex_java(p5list_to_a(['=~', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(3), v_self, v_level, v_wantarray]), p5want));
							};
							tmp4635._prototype_ = null;
							return tmp4635
						})(), 'p5:qr', (function () {
							var tmp4637;
							tmp4637 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4638 = p5list_to_a([List__]);
									v_self = tmp4638.shift();
									v_level = tmp4638.shift();
									v_wantarray = tmp4638.shift();
								return (p5pkg['Perlito5::AST::Apply'].emit_qr_java(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), p5want));
							};
							tmp4637._prototype_ = null;
							return tmp4637
						})(), '__PACKAGE__', (function () {
							var tmp4639;
							tmp4639 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4640 = p5list_to_a([List__]);
									v_self = tmp4640.shift();
									v_level = tmp4640.shift();
									v_wantarray = tmp4640.shift();
								return (p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], p5want));
							};
							tmp4639._prototype_ = null;
							return tmp4639
						})(), '__SUB__', (function () {
							var tmp4641;
							tmp4641 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4642 = p5list_to_a([List__]);
									v_self = tmp4642.shift();
									v_level = tmp4642.shift();
									v_wantarray = tmp4642.shift();
								return (p5defined_or(p5make_package('Perlito5::AST::Sub')['v_SUB_REF'], function () {
											return 'this'
										}));
							};
							tmp4641._prototype_ = null;
							return tmp4641
						})(), 'wantarray', (function () {
							var tmp4643;
							tmp4643 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4644 = p5list_to_a([List__]);
									v_self = tmp4644.shift();
									v_level = tmp4644.shift();
									v_wantarray = tmp4644.shift();
								return (p5context(['(want == PlCx.VOID ? PlCx.UNDEF : new PlInt(want-1))'], p5want));
							};
							tmp4643._prototype_ = null;
							return tmp4643
						})(), 'package', (function () {
							var tmp4645;
							tmp4645 = function (List__, p5want) {
								return (p5context([''], p5want));
							};
							tmp4645._prototype_ = null;
							return tmp4645
						})(), 'uc', (function () {
							var tmp4646;
							tmp4646 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4647 = p5list_to_a([List__]);
									v_self = tmp4647.shift();
									v_level = tmp4647.shift();
									v_wantarray = tmp4647.shift();
								return (p5context([('new PlString(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.toString().toUpperCase())')], p5want));
							};
							tmp4646._prototype_ = null;
							return tmp4646
						})(), 'lc', (function () {
							var tmp4648;
							tmp4648 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4649 = p5list_to_a([List__]);
									v_self = tmp4649.shift();
									v_level = tmp4649.shift();
									v_wantarray = tmp4649.shift();
								return (p5context([('new PlString(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.toString().toLowerCase())')], p5want));
							};
							tmp4648._prototype_ = null;
							return tmp4648
						})(), 'ucfirst', (function () {
							var tmp4650;
							tmp4650 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4651 = p5list_to_a([List__]);
									v_self = tmp4651.shift();
									v_level = tmp4651.shift();
									v_wantarray = tmp4651.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.ucfirst()')], p5want));
							};
							tmp4650._prototype_ = null;
							return tmp4650
						})(), 'lcfirst', (function () {
							var tmp4652;
							tmp4652 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4653 = p5list_to_a([List__]);
									v_self = tmp4653.shift();
									v_level = tmp4653.shift();
									v_wantarray = tmp4653.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.lcfirst()')], p5want));
							};
							tmp4652._prototype_ = null;
							return tmp4652
						})(), 'quotemeta', (function () {
							var tmp4654;
							tmp4654 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4655 = p5list_to_a([List__]);
									v_self = tmp4655.shift();
									v_level = tmp4655.shift();
									v_wantarray = tmp4655.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.quotemeta()')], p5want));
							};
							tmp4654._prototype_ = null;
							return tmp4654
						})(), 'index', (function () {
							var tmp4656;
							tmp4656 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4657 = p5list_to_a([List__]);
									v_self = tmp4657.shift();
									v_level = tmp4657.shift();
									v_wantarray = tmp4657.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.toString().indexOf(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.toString()))')], p5want));
							};
							tmp4656._prototype_ = null;
							return tmp4656
						})(), 'ord', (function () {
							var tmp4658;
							tmp4658 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4659 = p5list_to_a([List__]);
									v_self = tmp4659.shift();
									v_level = tmp4659.shift();
									v_wantarray = tmp4659.shift();
								return (p5context([('PerlOp.ord(' + p5str(p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ')')], p5want));
							};
							tmp4658._prototype_ = null;
							return tmp4658
						})(), 'chr', (function () {
							var tmp4660;
							tmp4660 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4661 = p5list_to_a([List__]);
									v_self = tmp4661.shift();
									v_level = tmp4661.shift();
									v_wantarray = tmp4661.shift();
								return (p5context([('new PlString((char)' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4660._prototype_ = null;
							return tmp4660
						})(), 'int', (function () {
							var tmp4662;
							tmp4662 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4663 = p5list_to_a([List__]);
									v_self = tmp4663.shift();
									v_level = tmp4663.shift();
									v_wantarray = tmp4663.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4662._prototype_ = null;
							return tmp4662
						})(), 'rand', (function () {
							var tmp4664;
							tmp4664 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4665 = p5list_to_a([List__]);
									v_self = tmp4665.shift();
									v_level = tmp4665.shift();
									v_wantarray = tmp4665.shift();
								return (p5context([('PerlOp.rand(' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_double()') : '1.0')) + ')')], p5want));
							};
							tmp4664._prototype_ = null;
							return tmp4664
						})(), 'srand', (function () {
							var tmp4666;
							tmp4666 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4667 = p5list_to_a([List__]);
									v_self = tmp4667.shift();
									v_level = tmp4667.shift();
									v_wantarray = tmp4667.shift();
								return (p5context([('PerlOp.srand(' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int()') : '')) + ')')], p5want));
							};
							tmp4666._prototype_ = null;
							return tmp4666
						})(), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
							var v_op;
							v_op = (p5make_package('main')['v__']);
							return (p5context([v_op, (function () {
								var tmp4668;
								tmp4668 = function (List__, p5want) {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4669 = p5list_to_a([List__]);
										v_self = tmp4669.shift();
										v_level = tmp4669.shift();
										v_wantarray = tmp4669.shift();
									return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.' + p5str(v_op) + '()')], p5want));
								};
								tmp4668._prototype_ = null;
								return tmp4668
							})()], 1));
						}, ['abs', 'sqrt', 'cos', 'sin', 'exp', 'log']), 'infix:<%>', (function () {
							var tmp4670;
							tmp4670 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4671 = p5list_to_a([List__]);
									v_self = tmp4671.shift();
									v_level = tmp4671.shift();
									v_wantarray = tmp4671.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int() % ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4670._prototype_ = null;
							return tmp4670
						})(), 'infix:<>>>', (function () {
							var tmp4672;
							tmp4672 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4673 = p5list_to_a([List__]);
									v_self = tmp4673.shift();
									v_level = tmp4673.shift();
									v_wantarray = tmp4673.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int() >>> ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4672._prototype_ = null;
							return tmp4672
						})(), 'infix:<<<>', (function () {
							var tmp4674;
							tmp4674 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4675 = p5list_to_a([List__]);
									v_self = tmp4675.shift();
									v_level = tmp4675.shift();
									v_wantarray = tmp4675.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int() << ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4674._prototype_ = null;
							return tmp4674
						})(), 'infix:<^>', (function () {
							var tmp4676;
							tmp4676 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4677 = p5list_to_a([List__]);
									v_self = tmp4677.shift();
									v_level = tmp4677.shift();
									v_wantarray = tmp4677.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int() ^ ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4676._prototype_ = null;
							return tmp4676
						})(), 'infix:<&>', (function () {
							var tmp4678;
							tmp4678 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4679 = p5list_to_a([List__]);
									v_self = tmp4679.shift();
									v_level = tmp4679.shift();
									v_wantarray = tmp4679.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int() & ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4678._prototype_ = null;
							return tmp4678
						})(), 'infix:<|>', (function () {
							var tmp4680;
							tmp4680 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4681 = p5list_to_a([List__]);
									v_self = tmp4681.shift();
									v_level = tmp4681.shift();
									v_wantarray = tmp4681.shift();
								return (p5context([('new PlInt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int() | ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '.to_int())')], p5want));
							};
							tmp4680._prototype_ = null;
							return tmp4680
						})(), 'infix:<+>', (function () {
							var tmp4682;
							tmp4682 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4683 = p5list_to_a([List__]);
									v_self = tmp4683.shift();
									v_level = tmp4683.shift();
									v_wantarray = tmp4683.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.add(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4682._prototype_ = null;
							return tmp4682
						})(), 'infix:<->', (function () {
							var tmp4684;
							tmp4684 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4685 = p5list_to_a([List__]);
									v_self = tmp4685.shift();
									v_level = tmp4685.shift();
									v_wantarray = tmp4685.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.sub(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4684._prototype_ = null;
							return tmp4684
						})(), 'infix:<*>', (function () {
							var tmp4686;
							tmp4686 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4687 = p5list_to_a([List__]);
									v_self = tmp4687.shift();
									v_level = tmp4687.shift();
									v_wantarray = tmp4687.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.mul(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4686._prototype_ = null;
							return tmp4686
						})(), 'infix:</>', (function () {
							var tmp4688;
							tmp4688 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4689 = p5list_to_a([List__]);
									v_self = tmp4689.shift();
									v_level = tmp4689.shift();
									v_wantarray = tmp4689.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.div(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4688._prototype_ = null;
							return tmp4688
						})(), 'infix:<==>', (function () {
							var tmp4690;
							tmp4690 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4691 = p5list_to_a([List__]);
									v_self = tmp4691.shift();
									v_level = tmp4691.shift();
									v_wantarray = tmp4691.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_eq(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4690._prototype_ = null;
							return tmp4690
						})(), 'infix:<!=>', (function () {
							var tmp4692;
							tmp4692 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4693 = p5list_to_a([List__]);
									v_self = tmp4693.shift();
									v_level = tmp4693.shift();
									v_wantarray = tmp4693.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_ne(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4692._prototype_ = null;
							return tmp4692
						})(), 'infix:<>>', (function () {
							var tmp4694;
							tmp4694 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4695 = p5list_to_a([List__]);
									v_self = tmp4695.shift();
									v_level = tmp4695.shift();
									v_wantarray = tmp4695.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_gt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4694._prototype_ = null;
							return tmp4694
						})(), 'infix:<>=>', (function () {
							var tmp4696;
							tmp4696 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4697 = p5list_to_a([List__]);
									v_self = tmp4697.shift();
									v_level = tmp4697.shift();
									v_wantarray = tmp4697.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_ge(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4696._prototype_ = null;
							return tmp4696
						})(), 'infix:<<>', (function () {
							var tmp4698;
							tmp4698 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4699 = p5list_to_a([List__]);
									v_self = tmp4699.shift();
									v_level = tmp4699.shift();
									v_wantarray = tmp4699.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_lt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4698._prototype_ = null;
							return tmp4698
						})(), 'infix:<<=>', (function () {
							var tmp4700;
							tmp4700 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4701 = p5list_to_a([List__]);
									v_self = tmp4701.shift();
									v_level = tmp4701.shift();
									v_wantarray = tmp4701.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_le(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4700._prototype_ = null;
							return tmp4700
						})(), 'infix:<eq>', (function () {
							var tmp4702;
							tmp4702 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4703 = p5list_to_a([List__]);
									v_self = tmp4703.shift();
									v_level = tmp4703.shift();
									v_wantarray = tmp4703.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_eq(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4702._prototype_ = null;
							return tmp4702
						})(), 'infix:<ne>', (function () {
							var tmp4704;
							tmp4704 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4705 = p5list_to_a([List__]);
									v_self = tmp4705.shift();
									v_level = tmp4705.shift();
									v_wantarray = tmp4705.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_ne(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4704._prototype_ = null;
							return tmp4704
						})(), 'infix:<gt>', (function () {
							var tmp4706;
							tmp4706 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4707 = p5list_to_a([List__]);
									v_self = tmp4707.shift();
									v_level = tmp4707.shift();
									v_wantarray = tmp4707.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_gt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4706._prototype_ = null;
							return tmp4706
						})(), 'infix:<ge>', (function () {
							var tmp4708;
							tmp4708 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4709 = p5list_to_a([List__]);
									v_self = tmp4709.shift();
									v_level = tmp4709.shift();
									v_wantarray = tmp4709.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_ge(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4708._prototype_ = null;
							return tmp4708
						})(), 'infix:<lt>', (function () {
							var tmp4710;
							tmp4710 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4711 = p5list_to_a([List__]);
									v_self = tmp4711.shift();
									v_level = tmp4711.shift();
									v_wantarray = tmp4711.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_lt(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4710._prototype_ = null;
							return tmp4710
						})(), 'infix:<le>', (function () {
							var tmp4712;
							tmp4712 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4713 = p5list_to_a([List__]);
									v_self = tmp4713.shift();
									v_level = tmp4713.shift();
									v_wantarray = tmp4713.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_le(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4712._prototype_ = null;
							return tmp4712
						})(), 'infix:<~~>', (function () {
							var tmp4714;
							tmp4714 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4715 = p5list_to_a([List__]);
									v_self = tmp4715.shift();
									v_level = tmp4715.shift();
									v_wantarray = tmp4715.shift();
								var v_arg0;
								v_arg0 = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_arg1;
								v_arg1 = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1));
								return (p5context([('PerlOp.smartmatch_scalar(' + p5str(p5call(v_arg0, 'emit_java', [v_level, 'scalar'], 0)) + ', ' + p5str(p5call(v_arg1, 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4714._prototype_ = null;
							return tmp4714
						})(), 'infix:<&&>', (function () {
							var tmp4716;
							tmp4716 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4717 = p5list_to_a([List__]);
									v_self = tmp4717.shift();
									v_level = tmp4717.shift();
									v_wantarray = tmp4717.shift();
									(function () {
										if ( (p5str(v_wantarray) == 'void') ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' ? ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ' : PlCx.UNDEF')], p5want));
									}
									})();
									return (p5context([('PerlOp.and1(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + ') ? ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ' : PerlOp.and3()')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4716._prototype_ = null;
							return tmp4716
						})(), 'infix:<and>', (function () {
							var tmp4718;
							tmp4718 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4719 = p5list_to_a([List__]);
									v_self = tmp4719.shift();
									v_level = tmp4719.shift();
									v_wantarray = tmp4719.shift();
									(function () {
										if ( (p5str(v_wantarray) == 'void') ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' ? ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ' : PlCx.UNDEF')], p5want));
									}
									})();
									return (p5context([('PerlOp.and1(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + ') ? ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ' : PerlOp.and3()')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4718._prototype_ = null;
							return tmp4718
						})(), 'infix:<||>', (function () {
							var tmp4720;
							tmp4720 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4721 = p5list_to_a([List__]);
									v_self = tmp4721.shift();
									v_level = tmp4721.shift();
									v_wantarray = tmp4721.shift();
									(function () {
										if ( (p5str(v_wantarray) == 'void') ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' ? ' + ' PlCx.UNDEF : ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)))], p5want));
									}
									})();
									return (p5context([('PerlOp.or1(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + ') ? PerlOp.or2() : ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4720._prototype_ = null;
							return tmp4720
						})(), 'infix:<or>', (function () {
							var tmp4722;
							tmp4722 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4723 = p5list_to_a([List__]);
									v_self = tmp4723.shift();
									v_level = tmp4723.shift();
									v_wantarray = tmp4723.shift();
									(function () {
										if ( (p5str(v_wantarray) == 'void') ) {
										throw(p5context([(p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' ? ' + ' PlCx.UNDEF : ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)))], p5want));
									}
									})();
									return (p5context([('PerlOp.or1(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + ') ? PerlOp.or2() : ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4722._prototype_ = null;
							return tmp4722
						})(), 'infix:<xor>', (function () {
							var tmp4724;
							tmp4724 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4725 = p5list_to_a([List__]);
									v_self = tmp4725.shift();
									v_level = tmp4725.shift();
									v_wantarray = tmp4725.shift();
								return (p5context([('( ' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' ? new PlBool(!' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ') : ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)], 0), 'emit_java', [v_level, v_wantarray], 0)) + ')')], p5want));
							};
							tmp4724._prototype_ = null;
							return tmp4724
						})(), 'infix:<=>>', (function () {
							var tmp4726;
							tmp4726 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4727 = p5list_to_a([List__]);
									v_self = tmp4727.shift();
									v_level = tmp4727.shift();
									v_wantarray = tmp4727.shift();
								return (p5context([(p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0), 'emit_java', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level], 0)))], p5want));
							};
							tmp4726._prototype_ = null;
							return tmp4726
						})(), 'infix:<cmp>', (function () {
							var tmp4728;
							tmp4728 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4729 = p5list_to_a([List__]);
									v_self = tmp4729.shift();
									v_level = tmp4729.shift();
									v_wantarray = tmp4729.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.str_cmp(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4728._prototype_ = null;
							return tmp4728
						})(), 'infix:<<=>>', (function () {
							var tmp4730;
							tmp4730 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4731 = p5list_to_a([List__]);
									v_self = tmp4731.shift();
									v_level = tmp4731.shift();
									v_wantarray = tmp4731.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.num_cmp(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4730._prototype_ = null;
							return tmp4730
						})(), 'infix:<**>', (function () {
							var tmp4732;
							tmp4732 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4733 = p5list_to_a([List__]);
									v_self = tmp4733.shift();
									v_level = tmp4733.shift();
									v_wantarray = tmp4733.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.pow(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4732._prototype_ = null;
							return tmp4732
						})(), 'atan2', (function () {
							var tmp4734;
							tmp4734 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4735 = p5list_to_a([List__]);
									v_self = tmp4735.shift();
									v_level = tmp4735.shift();
									v_wantarray = tmp4735.shift();
								return (p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + '.atan2(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + ')')], p5want));
							};
							tmp4734._prototype_ = null;
							return tmp4734
						})(), 'prefix:<!>', (function () {
							var tmp4736;
							tmp4736 = function (List__, p5want) {
								var v_self;
								v_self = (List__.shift());
								var v_level;
								v_level = (List__.shift());
								return (p5context([('new PlBool(!(' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + '))')], p5want));
							};
							tmp4736._prototype_ = null;
							return tmp4736
						})(), 'prefix:<not>', (function () {
							var tmp4737;
							tmp4737 = function (List__, p5want) {
								try {
									var v_self;
									v_self = (List__.shift());
									var v_level;
									v_level = (List__.shift());
									var v_arg;
									v_arg = (p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').pop());
									(function () {
										if ( !( p5bool(v_arg)) ) {
										throw(p5context(['PlCx.TRUE'], p5want));
									}
									})();
									return (p5context([('new PlBool(!( ' + p5str(p5pkg['Perlito5::Java'].to_bool([v_arg, v_level], 0)) + '))')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4737._prototype_ = null;
							return tmp4737
						})(), 'prefix:<~>', (function () {
							var tmp4738;
							tmp4738 = function (List__, p5want) {
								var v_self;
								v_self = (List__.p5aget(0));
								return (p5context([('new PlInt(~' + p5str(p5pkg['Perlito5::Java'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + '.to_int())')], p5want));
							};
							tmp4738._prototype_ = null;
							return tmp4738
						})(), 'prefix:<->', (function () {
							var tmp4739;
							tmp4739 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4740 = p5list_to_a([List__]);
									v_self = tmp4740.shift();
									v_level = tmp4740.shift();
									v_wantarray = tmp4740.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Int'], 0)) ) {
										(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hset('int', (p5negative( (v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('int'))));
										throw(p5call(v_arg, 'emit_java', [v_level, 'scalar'], p5want));
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Num'], 0)) ) {
										(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hset('num', (p5negative( (v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('num'))));
										throw(p5call(v_arg, 'emit_java', [v_level, 'scalar'], p5want));
									}
									})();
									return (p5context([(p5str(p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0)) + '.neg()')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4739._prototype_ = null;
							return tmp4739
						})(), 'prefix:<+>', (function () {
							var tmp4741;
							tmp4741 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4742 = p5list_to_a([List__]);
									v_self = tmp4742.shift();
									v_level = tmp4742.shift();
									v_wantarray = tmp4742.shift();
								return (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, v_wantarray], p5want));
							};
							tmp4741._prototype_ = null;
							return tmp4741
						})(), 'require', (function () {
							var tmp4743;
							tmp4743 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4744 = p5list_to_a([List__]);
									v_self = tmp4744.shift();
									v_level = tmp4744.shift();
									v_wantarray = tmp4744.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('is_version_string')) ) {
										throw(p5context([('p5pkg["Perlito5"]["test_perl_version"]([' + p5str(p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + '], ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
									}
									})();
									return (p5context([('p5pkg["Perlito5::Grammar::Use"]["require"]([' + p5str(p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ', ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('bareword')) ? 1 : 0)) + '], ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4743._prototype_ = null;
							return tmp4743
						})(), 'select', (function () {
							var tmp4745;
							tmp4745 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4746 = p5list_to_a([List__]);
									v_self = tmp4746.shift();
									v_level = tmp4746.shift();
									v_wantarray = tmp4746.shift();
								return (p5context([('p5pkg["CORE"]["select"]([' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('bareword')) ? p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0) : p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0))) + '])')], p5want));
							};
							tmp4745._prototype_ = null;
							return tmp4745
						})(), 'prefix:<$>', (function () {
							var tmp4747;
							tmp4747 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4748 = p5list_to_a([List__]);
									v_self = tmp4748.shift();
									v_level = tmp4748.shift();
									v_wantarray = tmp4748.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + '.scalar_deref()')], p5want));
							};
							tmp4747._prototype_ = null;
							return tmp4747
						})(), 'prefix:<@>', (function () {
							var tmp4749;
							tmp4749 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4750 = p5list_to_a([List__]);
									v_self = tmp4750.shift();
									v_level = tmp4750.shift();
									v_wantarray = tmp4750.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_s;
								v_s = ((p5str(p5pkg['Perlito5::Java'].emit_java_autovivify([v_arg, v_level, 'array'], 0)) + '.array_deref()'));
								return (( (p5str(v_wantarray) == 'scalar') ? (p5str(v_s) + '.scalar()') : v_s));
							};
							tmp4749._prototype_ = null;
							return tmp4749
						})(), 'prefix:<$#>', (function () {
							var tmp4751;
							tmp4751 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4752 = p5list_to_a([List__]);
									v_self = tmp4752.shift();
									v_level = tmp4752.shift();
									v_wantarray = tmp4752.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify([v_arg, v_level, 'array'], 0)) + '.array_deref().end_of_array_index()')], p5want));
							};
							tmp4751._prototype_ = null;
							return tmp4751
						})(), 'prefix:<%>', (function () {
							var tmp4753;
							tmp4753 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4754 = p5list_to_a([List__]);
									v_self = tmp4754.shift();
									v_level = tmp4754.shift();
									v_wantarray = tmp4754.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify([v_arg, v_level, 'hash'], 0)) + '.hash_deref()')], p5want));
							};
							tmp4753._prototype_ = null;
							return tmp4753
						})(), 'prefix:<&>', (function () {
							var tmp4755;
							tmp4755 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4756 = p5list_to_a([List__]);
									v_self = tmp4756.shift();
									v_level = tmp4756.shift();
									v_wantarray = tmp4756.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + ')([])')], p5want));
							};
							tmp4755._prototype_ = null;
							return tmp4755
						})(), 'circumfix:<[ ]>', (function () {
							var tmp4757;
							tmp4757 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4758 = p5list_to_a([List__]);
									v_self = tmp4758.shift();
									v_level = tmp4758.shift();
									v_wantarray = tmp4758.shift();
								return (p5context([('new PlArrayRef(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4757._prototype_ = null;
							return tmp4757
						})(), 'circumfix:<{ }>', (function () {
							var tmp4759;
							tmp4759 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4760 = p5list_to_a([List__]);
									v_self = tmp4760.shift();
									v_level = tmp4760.shift();
									v_wantarray = tmp4760.shift();
								return (p5context([('(new PlHashRef(new PlHash(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')))')], p5want));
							};
							tmp4759._prototype_ = null;
							return tmp4759
						})(), 'prefix:<' + String.fromCharCode(92) + '>', (function () {
							var tmp4761;
							tmp4761 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4762 = p5list_to_a([List__]);
									v_self = tmp4762.shift();
									v_level = tmp4762.shift();
									v_wantarray = tmp4762.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) ) {
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<@>') ) {
											throw(p5context([('new PlArrayRef(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<%>') ) {
											throw(p5context([('new PlHashRef(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'circumfix:<( )>') ) {
											throw(p5context([('p5_list_of_refs(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>') ) {
											throw(p5context([('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '@') ) {
											throw(p5context([('new PlArrayRef(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '%') ) {
											throw(p5context([('(new PlHashRef(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '*') ) {
											throw(p5context([('(new PlGlobRef(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + '))')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'sigil', [], 0)) == '&') ) {
											(function () {
												if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
												throw(p5context([('p5pkg[' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace')]), 0)) + '].' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
											}
											else {
												throw(p5context([(p5str(p5pkg['Perlito5::Java'].pkg([], 0)) + '.' + p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')))], p5want));
											}
											})();
										}
										})();
									}
									})();
									return (p5context([('(new PlLvalueRef(' + p5str(p5call(v_arg, 'emit_java', [v_level], 0)) + '))')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4761._prototype_ = null;
							return tmp4761
						})(), 'postfix:<++>', (function () {
							var tmp4763;
							tmp4763 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4764 = p5list_to_a([List__]);
									v_self = tmp4764.shift();
									v_level = tmp4764.shift();
									v_wantarray = tmp4764.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0)) + '.post_incr()')], p5want));
							};
							tmp4763._prototype_ = null;
							return tmp4763
						})(), 'postfix:<-->', (function () {
							var tmp4765;
							tmp4765 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4766 = p5list_to_a([List__]);
									v_self = tmp4766.shift();
									v_level = tmp4766.shift();
									v_wantarray = tmp4766.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0)) + '.post_decr()')], p5want));
							};
							tmp4765._prototype_ = null;
							return tmp4765
						})(), 'prefix:<++>', (function () {
							var tmp4767;
							tmp4767 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4768 = p5list_to_a([List__]);
									v_self = tmp4768.shift();
									v_level = tmp4768.shift();
									v_wantarray = tmp4768.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0)) + '.pre_incr()')], p5want));
							};
							tmp4767._prototype_ = null;
							return tmp4767
						})(), 'prefix:<-->', (function () {
							var tmp4769;
							tmp4769 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4770 = p5list_to_a([List__]);
									v_self = tmp4770.shift();
									v_level = tmp4770.shift();
									v_wantarray = tmp4770.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([(p5str(p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0)) + '.pre_decr()')], p5want));
							};
							tmp4769._prototype_ = null;
							return tmp4769
						})(), 'infix:<x>', (function () {
							var tmp4771;
							tmp4771 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4772 = p5list_to_a([List__]);
									v_self = tmp4772.shift();
									v_level = tmp4772.shift();
									v_wantarray = tmp4772.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Apply') && ((p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'circumfix:<( )>') || (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'list:<,>'))) ) {
										throw(p5context([('PerlOp.list_replicate(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]))), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
									}
									})();
									return (p5context([('PerlOp.string_replicate(' + p5str(p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ',' + p5str(p5pkg['Perlito5::Java'].to_num(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), v_level]), 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4771._prototype_ = null;
							return tmp4771
						})(), 'list:<.>', (function () {
							var tmp4773;
							tmp4773 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4774 = p5list_to_a([List__]);
									v_self = tmp4774.shift();
									v_level = tmp4774.shift();
									v_wantarray = tmp4774.shift();
								return (p5context([('new PlString(' + p5pkg['Perlito5::AST::Apply'].join([' + '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5pkg['Perlito5::Java'].to_native_str([p5make_package('main')['v__'], v_level, 'scalar'], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4773._prototype_ = null;
							return tmp4773
						})(), 'list:<,>', (function () {
							var tmp4775;
							tmp4775 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4776 = p5list_to_a([List__]);
									v_self = tmp4776.shift();
									v_level = tmp4776.shift();
									v_wantarray = tmp4776.shift();
								return (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), p5want));
							};
							tmp4775._prototype_ = null;
							return tmp4775
						})(), 'infix:<..>', (function () {
							var tmp4777;
							tmp4777 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4778 = p5list_to_a([List__]);
									v_self = tmp4778.shift();
									v_level = tmp4778.shift();
									v_wantarray = tmp4778.shift();
								return (p5context([('PerlOp.range(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + '"' + p5str(p5pkg['Perlito5::Java'].get_label([], 0)) + '"' + ', ' + '0' + ')')], p5want));
							};
							tmp4777._prototype_ = null;
							return tmp4777
						})(), 'infix:<...>', (function () {
							var tmp4779;
							tmp4779 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4780 = p5list_to_a([List__]);
									v_self = tmp4780.shift();
									v_level = tmp4780.shift();
									v_wantarray = tmp4780.shift();
								return (p5context([('PerlOp.range(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + '"' + p5str(p5pkg['Perlito5::Java'].get_label([], 0)) + '"' + ', ' + '1' + ')')], p5want));
							};
							tmp4779._prototype_ = null;
							return tmp4779
						})(), 'delete', (function () {
							var tmp4781;
							tmp4781 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4782 = p5list_to_a([List__]);
									v_self = tmp4782.shift();
									v_level = tmp4782.shift();
									v_wantarray = tmp4782.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call(v_v, 'sigil', [], 0)) == '$') || (p5str(p5call(v_v, 'sigil', [], 0)) == '@'))) ) {
												throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray], 0)) + '.delete(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_java', [v_level], 0)) + ')')], p5want));
											}
											})();
											throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray, 'hash'], 0)) + '.delete(' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_java', [v_level], 0)) + ')')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && ((p5str(p5call(v_v, 'sigil', [], 0)) == '$') || (p5str(p5call(v_v, 'sigil', [], 0)) == '@'))) ) {
												throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray], 0)) + '.delete(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_java', [v_level], 0)) + ')')], p5want));
											}
											})();
											throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray, 'array'], 0)) + '.delete(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_java', [v_level], 0)) + ')')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<{ }>') ) {
											throw(p5context([(p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_java', [v_level, v_wantarray, 'hash'], 0)) + '.delete(' + p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<[ ]>') ) {
											throw(p5context([(p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_java', [v_level, v_wantarray, 'array'], 0)) + '.delete(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_arg, 'sigil', [], 0)) == '&')) ) {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO delete &code']), null);
									}
									})();
									return (function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										return (p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO delete &$code']), p5want));
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4781._prototype_ = null;
							return tmp4781
						})(), 'scalar', (function () {
							var tmp4783;
							tmp4783 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4784 = p5list_to_a([List__]);
									v_self = tmp4784.shift();
									v_level = tmp4784.shift();
									v_wantarray = tmp4784.shift();
								return (p5pkg['Perlito5::Java'].to_scalar(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), p5want));
							};
							tmp4783._prototype_ = null;
							return tmp4783
						})(), 'ternary:<? :>', (function () {
							var tmp4785;
							tmp4785 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4786 = p5list_to_a([List__]);
									v_self = tmp4786.shift();
									v_level = tmp4786.shift();
									v_wantarray = tmp4786.shift();
								return (p5context([('( ' + p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), v_level]), 0)) + ' ? ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1)], 0), 'emit_java', [v_level, v_wantarray], 0)) + ' : ' + p5str(p5call(p5context([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(2)], 0), 'emit_java', [v_level, v_wantarray], 0)) + ')')], p5want));
							};
							tmp4785._prototype_ = null;
							return tmp4785
						})(), 'my', (function () {
							var tmp4787;
							tmp4787 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4788 = p5list_to_a([List__]);
									v_self = tmp4788.shift();
									v_level = tmp4788.shift();
									v_wantarray = tmp4788.shift();
								return (p5context([('PerlOp.context(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5pkg['Perlito5::Java'].to_context([v_wantarray], 1), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4787._prototype_ = null;
							return tmp4787
						})(), 'our', (function () {
							var tmp4789;
							tmp4789 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4790 = p5list_to_a([List__]);
									v_self = tmp4790.shift();
									v_level = tmp4790.shift();
									v_wantarray = tmp4790.shift();
								return (p5context([('PerlOp.context(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5pkg['Perlito5::Java'].to_context([v_wantarray], 1), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4789._prototype_ = null;
							return tmp4789
						})(), 'local', (function () {
							var tmp4791;
							tmp4791 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4792 = p5list_to_a([List__]);
									v_self = tmp4792.shift();
									v_level = tmp4792.shift();
									v_wantarray = tmp4792.shift();
								return (p5context([('PerlOp.context(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5pkg['Perlito5::Java'].to_context([v_wantarray], 1), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4791._prototype_ = null;
							return tmp4791
						})(), 'circumfix:<( )>', (function () {
							var tmp4793;
							tmp4793 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4794 = p5list_to_a([List__]);
									v_self = tmp4794.shift();
									v_level = tmp4794.shift();
									v_wantarray = tmp4794.shift();
								return (p5context([('PerlOp.context(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5pkg['Perlito5::Java'].to_context([v_wantarray], 1), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, v_wantarray], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4793._prototype_ = null;
							return tmp4793
						})(), 'infix:<=>', (function () {
							var tmp4795;
							tmp4795 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4796 = p5list_to_a([List__]);
									v_self = tmp4796.shift();
									v_level = tmp4796.shift();
									v_wantarray = tmp4796.shift();
									var v_parameters;
									v_parameters = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									var v_arguments;
									v_arguments = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1));
									(function () {
										if ( (p5bool(p5call(v_parameters, 'isa', ['Perlito5::AST::Apply'], 0)) && ((p5str(p5call(v_parameters, 'code', [], 0)) == 'my') || ((p5str(p5call(v_parameters, 'code', [], 0)) == 'local') || (p5str(p5call(v_parameters, 'code', [], 0)) == 'circumfix:<( )>')))) ) {
										(function () {
											(function () {
												if ( (p5str(v_wantarray) == 'void') ) {
												(function () {
													var v_tmp;
													v_tmp = (p5pkg['Perlito5::Java'].get_label([], 0));
													throw(p5context([p5pkg['Perlito5::AST::Apply'].join([(';' + String.fromCharCode(10) + p5str(p5pkg['Perlito5::Java'].tab([v_level], 0)))].concat(p5list_to_a([('PlArray ' + p5str(v_tmp) + ' = ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0))), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
																return (p5call(p5make_package('main')['v__'], 'emit_java_set_list', [v_level, v_tmp], 1));
															}, p5list_to_a([p5array_deref(p5call(v_parameters, 'arguments', [], p5want), 'Perlito5::AST::Apply')]))])), p5want)], p5want));
												})();
											}
											})();
											var v_tmp;
											v_tmp = (p5pkg['Perlito5::Java'].get_label([], 0));
											var v_tmp2;
											v_tmp2 = (p5pkg['Perlito5::Java'].get_label([], 0));
											throw(p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, ('PlArray ' + p5str(v_tmp) + ' = ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef([v_arguments])), (p5num(v_level) + 1)]), 0)) + ';'), ('PlArray ' + p5str(v_tmp2) + ' = ' + p5str(v_tmp) + '.slice(0);'), p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
	return ((p5str(p5call(p5make_package('main')['v__'], 'emit_java_set_list', [(p5num(v_level) + 1), v_tmp], 0)) + ';'));
}, p5list_to_a([p5array_deref(p5call(v_parameters, 'arguments', [], p5want), 'Perlito5::AST::Apply')])), ('return ' + p5str(v_tmp2))]), p5want));
										})();
									}
									})();
									return (p5call(v_parameters, 'emit_java_set', [v_arguments, (p5num(v_level) + 1), v_wantarray], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4795._prototype_ = null;
							return tmp4795
						})(), 'break', (function () {
							var tmp4797;
							tmp4797 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4798 = p5list_to_a([List__]);
									v_self = tmp4798.shift();
									v_level = tmp4798.shift();
									v_wantarray = tmp4798.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO - break() not implemented']), p5want));
							};
							tmp4797._prototype_ = null;
							return tmp4797
						})(), 'next', (function () {
							var tmp4799;
							tmp4799 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4800 = p5list_to_a([List__]);
									v_self = tmp4800.shift();
									v_level = tmp4800.shift();
									v_wantarray = tmp4800.shift();
									p5make_package('Perlito5')['v_THROW'] = (1);
									var v_label;
									v_label = (p5pkg['Perlito5::Java'].get_java_loop_label(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code')]), 0));
									(function () {
										if ( (p5num(v_label) == 0) ) {
										throw(p5context(['PerlOp.next()'], p5want));
									}
									})();
									return (p5context([('PerlOp.next(' + p5str(v_label) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4799._prototype_ = null;
							return tmp4799
						})(), 'last', (function () {
							var tmp4801;
							tmp4801 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4802 = p5list_to_a([List__]);
									v_self = tmp4802.shift();
									v_level = tmp4802.shift();
									v_wantarray = tmp4802.shift();
									p5make_package('Perlito5')['v_THROW'] = (1);
									var v_label;
									v_label = (p5pkg['Perlito5::Java'].get_java_loop_label(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code')]), 0));
									(function () {
										if ( (p5num(v_label) == 0) ) {
										throw(p5context(['PerlOp.last()'], p5want));
									}
									})();
									return (p5context([('PerlOp.last(' + p5str(v_label) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4801._prototype_ = null;
							return tmp4801
						})(), 'redo', (function () {
							var tmp4803;
							tmp4803 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4804 = p5list_to_a([List__]);
									v_self = tmp4804.shift();
									v_level = tmp4804.shift();
									v_wantarray = tmp4804.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								var v_label;
								v_label = (p5pkg['Perlito5::Java'].get_java_loop_label(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('code')]), 0));
								return (p5context([('PerlOp.redo(' + p5str(v_label) + ')')], p5want));
							};
							tmp4803._prototype_ = null;
							return tmp4803
						})(), 'return', (function () {
							var tmp4805;
							tmp4805 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4806 = p5list_to_a([List__]);
									v_self = tmp4806.shift();
									v_level = tmp4806.shift();
									v_wantarray = tmp4806.shift();
									p5make_package('Perlito5')['v_THROW_RETURN'] = (1);
									(function () {
										if ( !( p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context(['PerlOp.ret(PerlOp.context(want))'], p5want));
									}
									})();
									return (p5context([('PerlOp.ret(' + p5str(p5pkg['Perlito5::Java'].to_runtime_context(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), (p5num(v_level) + 1)]), 0)) + ')')], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4805._prototype_ = null;
							return tmp4805
						})(), 'goto', (function () {
							var tmp4807;
							tmp4807 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4808 = p5list_to_a([List__]);
									v_self = tmp4808.shift();
									v_level = tmp4808.shift();
									v_wantarray = tmp4808.shift();
								p5make_package('Perlito5')['v_THROW'] = (1);
								return (p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO - goto() not implemented']), p5want));
							};
							tmp4807._prototype_ = null;
							return tmp4807
						})(), 'caller', (function () {
							var tmp4809;
							tmp4809 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4810 = p5list_to_a([List__]);
									v_self = tmp4810.shift();
									v_level = tmp4810.shift();
									v_wantarray = tmp4810.shift();
								return (p5context([('PerlOp.caller(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ')')], p5want));
							};
							tmp4809._prototype_ = null;
							return tmp4809
						})(), 'do', (function () {
							var tmp4811;
							tmp4811 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4812 = p5list_to_a([List__]);
									v_self = tmp4812.shift();
									v_level = tmp4812.shift();
									v_wantarray = tmp4812.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Block'], 0)) ) {
										(function () {
											var v_ast;
											v_ast = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['method', 'postcircumfix:<( )>', 'invocant', p5call('Perlito5::AST::Sub', 'new', p5list_to_a(['block', v_arg, 'attributes', (new p5ArrayRef([])), '_do_block', 1]), 1), 'arguments', (new p5ArrayRef([]))]), 0));
											throw(p5call(v_ast, 'emit_java', [(p5num(v_level) + 1), v_wantarray], p5want));
										})();
									}
									})();
									var v_tmp_strict;
									v_tmp_strict = (p5make_package('Perlito5')['v_STRICT']);
									p5make_package('Perlito5')['v_STRICT'] = (0);
									var v_ast;
									v_ast = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'eval', 'namespace', '', 'arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['code', 'do_file', 'namespace', 'Perlito5::Grammar::Use', 'arguments', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 1)]))), '_scope', p5call('Perlito5::Grammar::Scope', 'new_base_scope', [], 1)]), 0));
									var v_js;
									v_js = (p5call(v_ast, 'emit_java', [v_level, v_wantarray], 0));
									p5make_package('Perlito5')['v_STRICT'] = (v_tmp_strict);
									return (p5context([v_js], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4811._prototype_ = null;
							return tmp4811
						})(), 'eval', (function () {
							var tmp4813;
							tmp4813 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4814 = p5list_to_a([List__]);
									v_self = tmp4814.shift();
									v_level = tmp4814.shift();
									v_wantarray = tmp4814.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									var v_eval;
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Block'], 0)) ) {
										(function () {
											var v_ast;
											v_ast = (p5call('Perlito5::AST::Call', 'new', p5list_to_a(['method', 'postcircumfix:<( )>', 'invocant', p5call('Perlito5::AST::Sub', 'new', p5list_to_a(['block', v_arg, 'attributes', (new p5ArrayRef([])), '_eval_block', 1]), 1), 'arguments', (new p5ArrayRef([]))]), 0));
											throw(p5call(v_ast, 'emit_java', [(p5num(v_level) + 1), v_wantarray], p5want));
										})();
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['Java eval string not yet implemented']), null);
									}
									})();
									var v_context;
									v_context = (p5pkg['Perlito5::Java'].to_context([v_wantarray], 0));
									return (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, ( (p5str(v_context) == 'p5want') ? p5context([], 1) : ('var p5want = ' + p5str(v_context) + ';')), 'var r;', 'p5pkg["main"]["v_@"] = "";', 'var p5strict = p5pkg["Perlito5"]["v_STRICT"];', ('p5pkg["Perlito5"]["v_STRICT"] = ' + p5str(p5make_package('Perlito5')['v_STRICT']) + ';'), 'try {', (new p5ArrayRef([('r = ' + p5str(v_eval) + '')])), '}', 'catch(err) {', (new p5ArrayRef(p5list_to_a(['if ( err instanceof p5_error || err instanceof Error ) {', (new p5ArrayRef(p5list_to_a(['p5pkg["main"]["v_@"] = err;', 'if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "' + String.fromCharCode(92) + 'n") {', (new p5ArrayRef(p5list_to_a([('try {' + ''), (new p5ArrayRef(['p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "' + String.fromCharCode(92) + 'n" + err.stack + "' + String.fromCharCode(92) + 'n";'])), '}', 'catch(err) { }']))), '}']))), '}', 'else {', (new p5ArrayRef(['return(err);'])), '}']))), '}', 'p5pkg["Perlito5"]["v_STRICT"] = p5strict;', 'return r;']), p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4813._prototype_ = null;
							return tmp4813
						})(), 'length', (function () {
							var tmp4815;
							tmp4815 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4816 = p5list_to_a([List__]);
									v_self = tmp4816.shift();
									v_level = tmp4816.shift();
									v_wantarray = tmp4816.shift();
								var v_arg;
								v_arg = (p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').shift());
								return (p5context([(p5str(p5pkg['Perlito5::Java'].to_str([v_arg], 0)) + '.length(' + ')')], p5want));
							};
							tmp4815._prototype_ = null;
							return tmp4815
						})(), 'substr', (function () {
							var tmp4817;
							tmp4817 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4818 = p5list_to_a([List__]);
									v_self = tmp4818.shift();
									v_level = tmp4818.shift();
									v_wantarray = tmp4818.shift();
								var v_arg;
								v_arg = (p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').shift());
								return (p5context([(p5str(p5pkg['Perlito5::Java'].to_str([v_arg], 0)) + '.substr(' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, 'scalar'], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + ')')], p5want));
							};
							tmp4817._prototype_ = null;
							return tmp4817
						})(), 'undef', (function () {
							var tmp4819;
							tmp4819 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4820 = p5list_to_a([List__]);
									v_self = tmp4820.shift();
									v_level = tmp4820.shift();
									v_wantarray = tmp4820.shift();
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										(function () {
											var v_arg;
											v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
											(function () {
												if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Var') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '&')) ) {
												throw(p5context([('(delete p5pkg[' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})]), 0)) + '][' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + '])')], p5want));
											}
											})();
											(v_self || (v_self = new p5HashRef({})))._hash_.p5hset('arguments', ((new p5ArrayRef([]))));
											throw(p5call(v_arg, 'emit_java_set', [v_self, v_level, v_wantarray], p5want));
										})();
									}
									})();
									return (p5context(['PlCx.UNDEF'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4819._prototype_ = null;
							return tmp4819
						})(), 'defined', (function () {
							var tmp4821;
							tmp4821 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4822 = p5list_to_a([List__]);
									v_self = tmp4822.shift();
									v_level = tmp4822.shift();
									v_wantarray = tmp4822.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								var v_invocant;
								(function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Apply') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										(function () {
											var v_arg2;
											v_arg2 = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
											v_invocant = (('p5code_lookup_by_name(' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ', ' + p5str(p5call(v_arg2, 'emit_java', [v_level], 0)) + ')'));
										})();
									}
									else (function () {
										if ( ((p5pkg['Perlito5::AST::Apply'].ref([v_arg], 0) == 'Perlito5::AST::Var') && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('sigil')) == '&')) ) {
										v_invocant = (('p5pkg[' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
	return p5make_package('Perlito5')['v_PKG_NAME']
})]), 0)) + '][' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name')]), 0)) + ']'));
									}
									else {
										v_invocant = (p5call(v_arg, 'emit_java', [v_level, 'scalar'], 0));
									}
									})()
									})();
								return (p5context([('new PlBool(!' + p5str(v_invocant) + '.is_undef())')], p5want));
							};
							tmp4821._prototype_ = null;
							return tmp4821
						})(), 'shift', (function () {
							var tmp4823;
							tmp4823 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4824 = p5list_to_a([List__]);
									v_self = tmp4824.shift();
									v_level = tmp4824.shift();
									v_wantarray = tmp4824.shift();
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + '.shift()')], p5want));
									}
									})();
									return (p5context(['List__.shift()'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4823._prototype_ = null;
							return tmp4823
						})(), 'pop', (function () {
							var tmp4825;
							tmp4825 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4826 = p5list_to_a([List__]);
									v_self = tmp4826.shift();
									v_level = tmp4826.shift();
									v_wantarray = tmp4826.shift();
									(function () {
										if ( (p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')) && p5bool(p5num(p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')))) ) {
										throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + '.pop()')], p5want));
									}
									})();
									return (p5context(['List__.pop()'], p5want));
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4825._prototype_ = null;
							return tmp4825
						})(), 'unshift', (function () {
							var tmp4827;
							tmp4827 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4828 = p5list_to_a([List__]);
									v_self = tmp4828.shift();
									v_level = tmp4828.shift();
									v_wantarray = tmp4828.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								return (p5context([(p5str(p5call(v_v, 'emit_java', [v_level], 0)) + '.unshift(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_arguments))]), 0)) + ')')], p5want));
							};
							tmp4827._prototype_ = null;
							return tmp4827
						})(), 'push', (function () {
							var tmp4829;
							tmp4829 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4830 = p5list_to_a([List__]);
									v_self = tmp4830.shift();
									v_level = tmp4830.shift();
									v_wantarray = tmp4830.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								return (p5context([(p5str(p5call(v_v, 'emit_java', [v_level], 0)) + '.push(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_arguments))]), 0)) + ')')], p5want));
							};
							tmp4829._prototype_ = null;
							return tmp4829
						})(), 'time', (function () {
							var tmp4831;
							tmp4831 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4832 = p5list_to_a([List__]);
									v_self = tmp4832.shift();
									v_level = tmp4832.shift();
									v_wantarray = tmp4832.shift();
								return (p5context([('PlCORE.time(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4831._prototype_ = null;
							return tmp4831
						})(), 'sleep', (function () {
							var tmp4833;
							tmp4833 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4834 = p5list_to_a([List__]);
									v_self = tmp4834.shift();
									v_level = tmp4834.shift();
									v_wantarray = tmp4834.shift();
								return (p5context([('PlCORE.sleep(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4833._prototype_ = null;
							return tmp4833
						})(), 'ref', (function () {
							var tmp4835;
							tmp4835 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4836 = p5list_to_a([List__]);
									v_self = tmp4836.shift();
									v_level = tmp4836.shift();
									v_wantarray = tmp4836.shift();
								return (p5context([('PlCORE.ref(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4835._prototype_ = null;
							return tmp4835
						})(), 'exit', (function () {
							var tmp4837;
							tmp4837 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4838 = p5list_to_a([List__]);
									v_self = tmp4838.shift();
									v_level = tmp4838.shift();
									v_wantarray = tmp4838.shift();
								return (p5context([('PlCORE.exit(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4837._prototype_ = null;
							return tmp4837
						})(), 'warn', (function () {
							var tmp4839;
							tmp4839 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4840 = p5list_to_a([List__]);
									v_self = tmp4840.shift();
									v_level = tmp4840.shift();
									v_wantarray = tmp4840.shift();
								return (p5context([('PlCORE.warn(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4839._prototype_ = null;
							return tmp4839
						})(), 'die', (function () {
							var tmp4841;
							tmp4841 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4842 = p5list_to_a([List__]);
									v_self = tmp4842.shift();
									v_level = tmp4842.shift();
									v_wantarray = tmp4842.shift();
								return (p5context([('PlCORE.die(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4841._prototype_ = null;
							return tmp4841
						})(), 'system', (function () {
							var tmp4843;
							tmp4843 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4844 = p5list_to_a([List__]);
									v_self = tmp4844.shift();
									v_level = tmp4844.shift();
									v_wantarray = tmp4844.shift();
								return (p5context([('PlCORE.system(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4843._prototype_ = null;
							return tmp4843
						})(), 'qx', (function () {
							var tmp4845;
							tmp4845 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4846 = p5list_to_a([List__]);
									v_self = tmp4846.shift();
									v_level = tmp4846.shift();
									v_wantarray = tmp4846.shift();
								return (p5context([('PlCORE.qx(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4845._prototype_ = null;
							return tmp4845
						})(), 'tie', (function () {
							var tmp4847;
							tmp4847 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4848 = p5list_to_a([List__]);
									v_self = tmp4848.shift();
									v_level = tmp4848.shift();
									v_wantarray = tmp4848.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								var v_meth;
								(function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '%')) ) {
										v_meth = ('hash');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '@')) ) {
										v_meth = ('array');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
										v_meth = ('scalar');
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['tie ' + String.fromCharCode(39), p5pkg['Perlito5::AST::Apply'].ref([v_v], 1), String.fromCharCode(39) + ' not implemented']), null);
									}
									})()
									})()
									})();
								return (p5context([('p5tie_' + p5str(v_meth) + '(' + p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_arguments))]), 0)) + ')')], p5want));
							};
							tmp4847._prototype_ = null;
							return tmp4847
						})(), 'untie', (function () {
							var tmp4849;
							tmp4849 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4850 = p5list_to_a([List__]);
									v_self = tmp4850.shift();
									v_level = tmp4850.shift();
									v_wantarray = tmp4850.shift();
								var List_arguments = [];
								List_arguments = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_v;
								v_v = (List_arguments.shift());
								var v_meth;
								(function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '%')) ) {
										v_meth = ('hash');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '@')) ) {
										v_meth = ('array');
									}
									else (function () {
										if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
										v_meth = ('scalar');
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['tie ' + String.fromCharCode(39), p5pkg['Perlito5::AST::Apply'].ref([v_v], 1), String.fromCharCode(39) + ' not implemented']), null);
									}
									})()
									})()
									})();
								return (p5context([('p5untie_' + p5str(v_meth) + '(' + p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ')')], p5want));
							};
							tmp4849._prototype_ = null;
							return tmp4849
						})(), 'print', (function () {
							var tmp4851;
							tmp4851 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4852 = p5list_to_a([List__]);
									v_self = tmp4852.shift();
									v_level = tmp4852.shift();
									v_wantarray = tmp4852.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'), 'emit_java', [v_level], 0));
									}
									else {
										v_fun = ('PlCx.STDOUT');
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('PlCORE.print(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp4851._prototype_ = null;
							return tmp4851
						})(), 'say', (function () {
							var tmp4853;
							tmp4853 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4854 = p5list_to_a([List__]);
									v_self = tmp4854.shift();
									v_level = tmp4854.shift();
									v_wantarray = tmp4854.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'), 'emit_java', [v_level], 0));
									}
									else {
										v_fun = ('PlCx.STDOUT');
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('PlCORE.say(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp4853._prototype_ = null;
							return tmp4853
						})(), 'printf', (function () {
							var tmp4855;
							tmp4855 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4856 = p5list_to_a([List__]);
									v_self = tmp4856.shift();
									v_level = tmp4856.shift();
									v_wantarray = tmp4856.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = (p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'), 'emit_java', [v_level], 0));
									}
									else {
										v_fun = ('PlCx.STDOUT');
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								return (p5context([('PlCORE.printf(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(v_fun) + ', ' + p5str(v_list) + ')')], p5want));
							};
							tmp4855._prototype_ = null;
							return tmp4855
						})(), 'join', (function () {
							var tmp4857;
							tmp4857 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4858 = p5list_to_a([List__]);
									v_self = tmp4858.shift();
									v_level = tmp4858.shift();
									v_wantarray = tmp4858.shift();
								return (p5context([('PlCORE.join(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4857._prototype_ = null;
							return tmp4857
						})(), 'reverse', (function () {
							var tmp4859;
							tmp4859 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4860 = p5list_to_a([List__]);
									v_self = tmp4860.shift();
									v_level = tmp4860.shift();
									v_wantarray = tmp4860.shift();
								return (p5context([('PlCORE.reverse(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0)) + ')')], p5want));
							};
							tmp4859._prototype_ = null;
							return tmp4859
						})(), 'values', (function () {
							var tmp4861;
							tmp4861 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4862 = p5list_to_a([List__]);
									v_self = tmp4862.shift();
									v_level = tmp4862.shift();
									v_wantarray = tmp4862.shift();
								return (p5context([('PlCORE.values(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ')')], p5want));
							};
							tmp4861._prototype_ = null;
							return tmp4861
						})(), 'keys', (function () {
							var tmp4863;
							tmp4863 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4864 = p5list_to_a([List__]);
									v_self = tmp4864.shift();
									v_level = tmp4864.shift();
									v_wantarray = tmp4864.shift();
								return (p5context([('PlCORE.keys(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ')')], p5want));
							};
							tmp4863._prototype_ = null;
							return tmp4863
						})(), 'each', (function () {
							var tmp4865;
							tmp4865 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4866 = p5list_to_a([List__]);
									v_self = tmp4866.shift();
									v_level = tmp4866.shift();
									v_wantarray = tmp4866.shift();
								return (p5context([('PlCORE.each(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level], 0)) + ')')], p5want));
							};
							tmp4865._prototype_ = null;
							return tmp4865
						})(), 'close', (function () {
							var tmp4867;
							tmp4867 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4868 = p5list_to_a([List__]);
									v_self = tmp4868.shift();
									v_level = tmp4868.shift();
									v_wantarray = tmp4868.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (List_in.shift());
								return (p5context([('p5pkg["Perlito5::IO"].close(' + p5str(p5call(v_fun, 'emit_java', [v_level], 0)) + ', [])')], p5want));
							};
							tmp4867._prototype_ = null;
							return tmp4867
						})(), 'open', (function () {
							var tmp4869;
							tmp4869 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4870 = p5list_to_a([List__]);
									v_self = tmp4870.shift();
									v_level = tmp4870.shift();
									v_wantarray = tmp4870.shift();
									var List_in = [];
									List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
									var v_fun;
									v_fun = (List_in.shift());
									return (function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) != 'Perlito5::AST::Apply') ) {
										(function () {
											throw(p5pkg['Perlito5::Java'].emit_wrap_java([v_level, (p5str(p5call(v_fun, 'emit_java', [v_level], 0)) + ' = CORE.bless([ {file_handle : {id : null}}, "GLOB" ]);'), ('return CORE.open(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')')], p5want))
										})()
									}
									else {
										p5make_package('Perlito5')['v_STRICT'] = (0);
										(function () {
											throw(p5context([('CORE.open(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), v_level]), 0)) + ')')], p5want))
										})()
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4869._prototype_ = null;
							return tmp4869
						})(), 'chomp', (function () {
							var tmp4871;
							tmp4871 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4872 = p5list_to_a([List__]);
									v_self = tmp4872.shift();
									v_level = tmp4872.shift();
									v_wantarray = tmp4872.shift();
								var v_v;
								v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5pkg['Perlito5::Java'].emit_wrap_java([v_level, ('var r = p5chomp(' + p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ');'), (p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ' = r[1];'), 'return r[0]'], p5want));
							};
							tmp4871._prototype_ = null;
							return tmp4871
						})(), 'chop', (function () {
							var tmp4873;
							tmp4873 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4874 = p5list_to_a([List__]);
									v_self = tmp4874.shift();
									v_level = tmp4874.shift();
									v_wantarray = tmp4874.shift();
								var v_v;
								v_v = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5pkg['Perlito5::Java'].emit_wrap_java([v_level, ('var r = p5chop(' + p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ');'), (p5str(p5call(v_v, 'emit_java', [v_level], 0)) + ' = r[1];'), 'return r[0]'], p5want));
							};
							tmp4873._prototype_ = null;
							return tmp4873
						})(), 'read', (function () {
							var tmp4875;
							tmp4875 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4876 = p5list_to_a([List__]);
									v_self = tmp4876.shift();
									v_level = tmp4876.shift();
									v_wantarray = tmp4876.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (List_in.shift());
								var v_scalar;
								v_scalar = (List_in.shift());
								var v_length;
								v_length = (List_in.shift());
								return (p5pkg['Perlito5::Java'].emit_wrap_java([v_level, ('var r = p5pkg["Perlito5::IO"].read(' + p5str(p5call(v_fun, 'emit_java', [v_level], 0)) + ', [' + p5str(p5call(v_length, 'emit_java', [v_level], 0)) + ']);'), (p5str(p5call(v_scalar, 'emit_java', [v_level], 0)) + ' = r[1];'), 'return r[0]'], p5want));
							};
							tmp4875._prototype_ = null;
							return tmp4875
						})(), 'readline', (function () {
							var tmp4877;
							tmp4877 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4878 = p5list_to_a([List__]);
									v_self = tmp4878.shift();
									v_level = tmp4878.shift();
									v_wantarray = tmp4878.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								v_fun = (p5or(List_in.shift(), function () {
												return p5pkg['Perlito5::AST::Apply'].bless([(new p5HashRef(p5a_to_h(p5list_to_a(['arguments', (new p5ArrayRef([])), 'bareword', 1, 'code', 'ARGV', 'namespace', ''])))), 'Perlito5::AST::Apply'], 0)
											}));
								return (p5context([('CORE.readline([' + p5str(p5call(v_fun, 'emit_java', [v_level], 0)) + '])')], p5want));
							};
							tmp4877._prototype_ = null;
							return tmp4877
						})(), 'map', (function () {
							var tmp4879;
							tmp4879 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4880 = p5list_to_a([List__]);
									v_self = tmp4880.shift();
									v_level = tmp4880.shift();
									v_wantarray = tmp4880.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'));
									}
									else {
										v_fun = (List_in.shift());
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										v_fun = ((new p5ArrayRef([v_fun])));
									}
									})();
								var v_sub;
								v_sub = (p5call('Perlito5::AST::Sub', 'new', p5list_to_a(['block', p5call('Perlito5::AST::Block', 'new', ['stmts', v_fun], 1)]), 0));
								return (p5context([('PerlOp.map(' + p5str(p5call(v_sub, 'emit_java', [(p5num(v_level) + 1)], 0)) + ', ' + p5str(v_list) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
							};
							tmp4879._prototype_ = null;
							return tmp4879
						})(), 'grep', (function () {
							var tmp4881;
							tmp4881 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4882 = p5list_to_a([List__]);
									v_self = tmp4882.shift();
									v_level = tmp4882.shift();
									v_wantarray = tmp4882.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'));
									}
									else {
										v_fun = (List_in.shift());
									}
									})();
								var v_list;
								v_list = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										v_fun = ((new p5ArrayRef([v_fun])));
									}
									})();
								var v_sub;
								v_sub = (p5call('Perlito5::AST::Sub', 'new', p5list_to_a(['block', p5call('Perlito5::AST::Block', 'new', ['stmts', v_fun], 1)]), 0));
								return (p5context([('PerlOp.grep(' + p5str(p5call(v_sub, 'emit_java', [(p5num(v_level) + 1)], 0)) + ', ' + p5str(v_list) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
							};
							tmp4881._prototype_ = null;
							return tmp4881
						})(), 'sort', (function () {
							var tmp4883;
							tmp4883 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4884 = p5list_to_a([List__]);
									v_self = tmp4884.shift();
									v_level = tmp4884.shift();
									v_wantarray = tmp4884.shift();
								var List_in = [];
								List_in = p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]);
								var v_fun;
								var v_list;
								(function () {
										if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg')) ) {
										v_fun = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('special_arg'));
									}
									else (function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([List_in.p5aget(0)], 0) == 'Perlito5::AST::Block') ) {
										v_fun = (List_in.shift());
									}
									})()
									})();
								(function () {
										if ( (p5pkg['Perlito5::AST::Apply'].ref([v_fun], 0) == 'Perlito5::AST::Block') ) {
										v_fun = ((v_fun || (v_fun = new p5HashRef({})))._hash_.p5hget('stmts'));
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['TODO: sort without block not implemented yet']), null);
									}
									})();
								v_list = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in))]), 0));
								var v_sub;
								v_sub = (p5call('Perlito5::AST::Sub', 'new', p5list_to_a(['block', p5call('Perlito5::AST::Block', 'new', ['stmts', v_fun], 1)]), 0));
								return (p5context([('PerlOp.sort(' + p5str(p5call(v_sub, 'emit_java', [(p5num(v_level) + 1)], 0)) + ', ' + p5str(v_list) + ', ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].pkg([], 0)) + ')')], p5want));
							};
							tmp4883._prototype_ = null;
							return tmp4883
						})(), 'infix:<//>', (function () {
							var tmp4885;
							tmp4885 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4886 = p5list_to_a([List__]);
									v_self = tmp4886.shift();
									v_level = tmp4886.shift();
									v_wantarray = tmp4886.shift();
								return (p5context([('PerlOp.defined_or1(' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [v_level, 'scalar'], 0)) + ') ? PerlOp.defined_or2() : ' + p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(1), 'emit_java', [v_level, 'scalar'], 0)) + '')], p5want));
							};
							tmp4885._prototype_ = null;
							return tmp4885
						})(), 'exists', (function () {
							var tmp4887;
							tmp4887 = function (List__, p5want) {
								try {
									var v_self;
									var v_level;
									var v_wantarray;
									var tmp4888 = p5list_to_a([List__]);
									v_self = tmp4888.shift();
									v_level = tmp4888.shift();
									v_wantarray = tmp4888.shift();
									var v_arg;
									v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Lookup'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray], 0)) + '.exists(' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_java', [v_level], 0)) + ')')], p5want));
											}
											})();
											throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray, 'hash'], 0)) + '.exists(' + p5str(p5call(p5call(v_arg, 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp')]), 0), 'emit_java', [v_level], 0)) + ')')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Index'], 0)) ) {
										(function () {
											var v_v;
											v_v = (p5call(v_arg, 'obj', [], 0));
											(function () {
												if ( (p5bool(p5call(v_v, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_v, 'sigil', [], 0)) == '$')) ) {
												throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray], 0)) + '.exists(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_java', [v_level], 0)) + ')')], p5want));
											}
											})();
											throw(p5context([(p5str(p5call(v_v, 'emit_java', [v_level, v_wantarray, 'array'], 0)) + '.exists(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('index_exp'), 'emit_java', [v_level], 0)) + ')')], p5want));
										})();
									}
									})();
									(function () {
										if ( p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Call'], 0)) ) {
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<{ }>') ) {
											throw(p5context([(p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_java', [v_level, v_wantarray, 'hash'], 0)) + '.exists(' + p5str(p5call(p5call('Perlito5::AST::Lookup', 'autoquote', p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments')]), 0), 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
										(function () {
											if ( (p5str(p5call(v_arg, 'method', [], 0)) == 'postcircumfix:<[ ]>') ) {
											throw(p5context([(p5str(p5call(p5call(v_arg, 'invocant', [], 0), 'emit_java', [v_level, v_wantarray, 'array'], 0)) + '.exists(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('arguments'), 'emit_java', [v_level], 0)) + ')')], p5want));
										}
										})();
									}
									})();
									(function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Var'], 0)) && (p5str(p5call(v_arg, 'sigil', [], 0)) == '&')) ) {
										(function () {
											var v_name;
											v_name = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('name'));
											var v_namespace;
											v_namespace = (p5or((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
														return p5make_package('Perlito5')['v_PKG_NAME']
													}));
											throw(p5context([('p5pkg[' + p5str(p5pkg['Perlito5::Java'].escape_string([v_namespace], 0)) + '].hasOwnProperty(' + p5str(p5pkg['Perlito5::Java'].escape_string([v_name], 0)) + ')')], p5want));
										})();
									}
									})();
									return (function () {
										if ( (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'prefix:<&>')) ) {
										var v_arg2;
										v_arg2 = ((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
										(function () {
											throw(p5context([('p5sub_exists(' + p5str(p5pkg['Perlito5::Java'].to_str([v_arg2], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want))
										})()
									}
									})()
								}
								catch(err) {
									if ( err instanceof Error ) {
										throw(err);
									}
									else {
										return(err);
									}
								}
							};
							tmp4887._prototype_ = null;
							return tmp4887
						})(), 'prototype', (function () {
							var tmp4889;
							tmp4889 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4890 = p5list_to_a([List__]);
									v_self = tmp4890.shift();
									v_level = tmp4890.shift();
									v_wantarray = tmp4890.shift();
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								return (p5context([('p5sub_prototype(' + p5str(p5call(v_arg, 'emit_java', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string([p5make_package('Perlito5')['v_PKG_NAME']], 0)) + ')')], p5want));
							};
							tmp4889._prototype_ = null;
							return tmp4889
						})(), 'split', (function () {
							var tmp4891;
							tmp4891 = function (List__, p5want) {
								var v_self;
								var v_level;
								var v_wantarray;
								var tmp4892 = p5list_to_a([List__]);
									v_self = tmp4892.shift();
									v_level = tmp4892.shift();
									v_wantarray = tmp4892.shift();
								var List_js = [];
								var v_arg;
								v_arg = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0));
								(function () {
										if ( (p5bool(v_arg) && (p5bool(p5call(v_arg, 'isa', ['Perlito5::AST::Apply'], 0)) && (p5str((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')) == 'p5:m'))) ) {
										List_js.p5push([('new RegExp(' + p5str(p5call((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'emit_java', [], 0)) + ', ' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(1)._hash_.p5hget('buf')]), 0)) + ')')]);
										p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply').shift();
									}
									})();
								return (p5context([('CORE.split(' + '[' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([List_js, p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
		return (p5call(p5make_package('main')['v__'], 'emit_java', [], 1));
	}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))])), 0) + '], ' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ')')], p5want));
							};
							tmp4891._prototype_ = null;
							return tmp4891
						})()]));
				p5typeglob_set('Perlito5::AST::Apply', 'emit_java', (function () {
					var tmp4893;
					tmp4893 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4894 = p5list_to_a([List__]);
							v_self = tmp4894.shift();
							v_level = tmp4894.shift();
							v_wantarray = tmp4894.shift();
							var v_apply;
							v_apply = (p5call(v_self, 'op_assign', [], 0));
							(function () {
								if ( p5bool(v_apply) ) {
								throw(p5call(v_apply, 'emit_java', [v_level], p5want));
							}
							})();
							var v_apply;
							v_apply = (p5call(v_self, 'op_auto', [], 0));
							(function () {
								if ( p5bool(v_apply) ) {
								throw(p5call(v_apply, 'emit_java', [v_level], p5want));
							}
							})();
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( (p5pkg['Perlito5::AST::Apply'].ref([v_code], 0) != '') ) {
								(function () {
									var List_args = [];
									List_args = [];
									p5for(p5make_package('main'), "v__", function () {
											List_args.p5push(p5list_to_a([p5call(p5make_package('main')['v__'], 'emit_java', [], 1)]));
										}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]), false, '');
									throw(p5context([(p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'), 'emit_java', [v_level], 0)) + '.apply(' + p5pkg['Perlito5::AST::Apply'].join([','].concat(p5list_to_a([List_args])), 0) + ')')], p5want));
								})();
							}
							})();
							p5and((Hash_emit_js).hasOwnProperty(v_code), function () {
								throw((Hash_emit_js.p5hget(p5str(v_code)))([v_self, v_level, v_wantarray], p5want))
							});
							(function () {
								if ( (p5pkg[p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Java']['Hash_op_prefix_js_str']).hasOwnProperty(v_code) ) {
								throw(p5context([(p5str(p5pkg[p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] || (p5make_package('Perlito5::Java')['Hash_op_prefix_js_str'] = {}), 'Perlito5::Java']['Hash_op_prefix_js_str'].p5hget(p5str(v_code))) + '(' + p5str(p5pkg['Perlito5::Java'].to_str(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0)]), 0)) + ')')], p5want));
							}
							})();
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ) {
								(function () {
									if ( ((p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) == 'Java') && (p5str(v_code) == 'inline')) ) {
									(function () {
										if ( p5bool(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), 'isa', ['Perlito5::AST::Buf'], 0)) ) {
										throw((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('buf'));
									}
									else {
										p5pkg['Perlito5::AST::Apply'].die([].concat(['Java::inline needs a string constant']), null);
									}
									})();
								}
								})();
								v_code = (('PlV.get(' + p5str(p5pkg['Perlito5::Java'].escape_string([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '|' + p5str(v_code))], 0)) + ')'));
							}
							else {
								v_code = (('PlV.get(' + p5str(p5pkg['Perlito5::Java'].escape_string([(p5str(p5make_package('Perlito5')['v_PKG_NAME']) + '|' + p5str(v_code))], 0)) + ')'));
							}
							})();
							var v_sig;
							var v_may_need_autoload;
							p5block(function (v) {}, function () {
									var v_name;
									v_name = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
									var v_namespace;
									v_namespace = (p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5make_package('Perlito5')['v_PKG_NAME']
											}));
									var v_effective_name;
									v_effective_name = ((p5str(v_namespace) + '::' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'))));
									(function () {
										if ( (p5make_package('Perlito5')['v_PROTO'])._hash_.hasOwnProperty(v_effective_name) ) {
										v_sig = ((p5make_package('Perlito5')['v_PROTO'] || (p5make_package('Perlito5')['v_PROTO'] = new p5HashRef({})))._hash_.p5hget(p5str(v_effective_name)));
									}
									else (function () {
										if ( ((!( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace'))) || (p5str(v_namespace) == 'CORE')) && (p5make_package('Perlito5')['v_CORE_PROTO'])._hash_.hasOwnProperty(('CORE::' + p5str(v_name)))) ) {
										v_effective_name = (('CORE::' + p5str(v_name)));
										v_sig = ((p5make_package('Perlito5')['v_CORE_PROTO'] || (p5make_package('Perlito5')['v_CORE_PROTO'] = new p5HashRef({})))._hash_.p5hget(p5str(v_effective_name)));
									}
									else {
										(function () {
											if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('bareword')) ) {
											(function () {
												if ( p5bool(p5make_package('Perlito5')['v_STRICT']) ) {
												p5pkg['Perlito5::AST::Apply'].die([].concat([('Bareword ' + p5str(p5pkg['Perlito5::Java'].escape_string([v_name], 0)) + ' not allowed while "strict subs" in use')]), null);
											}
											})();
											throw(p5pkg['Perlito5::Java'].escape_string([(p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) ? (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '::') : '')) + p5str(v_name))], p5want));
										}
										})();
										v_may_need_autoload = (1);
									}
									})()
									})();
									p5and(p5context([(v_self)._hash_.hasOwnProperty('proto')], 0), function () {
										return v_sig = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('proto'))
									});
								}, [0], false, ''
							);
							(function () {
								if ( p5bool(v_sig) ) {
								(function () {
									var List_out = [];
									List_out = [];
									var List_in = [];
									List_in = p5list_to_a([p5array_deref(p5or((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
												return (new p5ArrayRef([]))
											}), 'Perlito5::AST::Apply')]);
									var v_close;
									v_close = (']');
									var v_optional;
									v_optional = (0);
									(function () {
										p5while(function () {
											var v_c;
											v_c = (p5str(v_sig).substr(0, 1));
											(function () {
												if ( (p5str(v_c) == ';') ) {
												v_optional = (1);
											}
											else (function () {
												if ( ((p5str(v_c) == '$') || (p5str(v_c) == '_')) ) {
												p5and(p5or(List_in.length, function () {
													return !( p5bool(v_optional))
												}), function () {
													return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_java', [(p5num(v_level) + 1), 'scalar'], 1)]))
												});
											}
											else (function () {
												if ( (p5str(v_c) == '@') ) {
												p5and(p5or(List_in.length, function () {
													return !( p5bool(v_optional))
												}), function () {
													return v_close = (('].concat(' + p5str(p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(List_in)), (p5num(v_level) + 1)]), 0)) + ')'))
												});
												List_in = [];
											}
											else (function () {
												if ( (p5str(v_c) == '&') ) {
												List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_java', [(p5num(v_level) + 1), 'scalar'], 1)]));
											}
											else (function () {
												if ( (p5str(v_c) == '*') ) {
												(function () {
													if ( (p5bool(List_in.length) || !( p5bool(v_optional))) ) {
													(function () {
														var v_arg;
														v_arg = (List_in.shift());
														(function () {
															if ( p5bool((v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('bareword')) ) {
															List_out.p5push(p5list_to_a([p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_arg || (v_arg = new p5HashRef({})))._hash_.p5hget('code')]), 1)]));
														}
														else {
															List_out.p5push(p5list_to_a([p5call(v_arg, 'emit_java', [(p5num(v_level) + 1), 'scalar'], 1)]));
														}
														})();
													})();
												}
												})();
											}
											else (function () {
												if ( (p5str(v_c) == String.fromCharCode(92)) ) {
												(function () {
													if ( (p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '$') ) {
													v_sig = (CORE.substr([v_sig, 1], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_java', [(p5num(v_level) + 1), 'scalar'], 1)]))
													});
												}
												else (function () {
													if ( ((p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '@') || (p5str(v_sig).substr(0, 2) == String.fromCharCode(92) + '%')) ) {
													v_sig = (CORE.substr([v_sig, 1], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_java', [(p5num(v_level) + 1), 'list'], 1)]))
													});
												}
												else (function () {
													if ( (p5str(v_sig).substr(0, 5) == String.fromCharCode(92) + '[@%]') ) {
													v_sig = (CORE.substr([v_sig, 4], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_java', [(p5num(v_level) + 1), 'list'], 1)]))
													});
												}
												else (function () {
													if ( (p5str(v_sig).substr(0, 6) == String.fromCharCode(92) + '[$@%]') ) {
													v_sig = (CORE.substr([v_sig, 5], 0));
													p5and(p5or(List_in.length, function () {
														return !( p5bool(v_optional))
													}), function () {
														return List_out.p5push(p5list_to_a([p5call(List_in.shift(), 'emit_java', [(p5num(v_level) + 1), 'list'], 1)]))
													});
												}
												})()
												})()
												})()
												})();
											}
											})()
											})()
											})()
											})()
											})()
											})();
											v_sig = (CORE.substr([v_sig, 1], 0));
										}, function () {
											return p5pkg['Perlito5::AST::Apply'].length([v_sig], 0)
										}, false, '', 0)
									})();
									throw(p5context([(p5str(v_code) + '(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', [' + p5pkg['Perlito5::AST::Apply'].join([', '].concat(p5list_to_a([List_out])), 0) + p5str(v_close) + ')')], p5want));
								})();
							}
							})();
							var v_arg_list;
							v_arg_list = (p5pkg['Perlito5::Java'].to_list_preprocess(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments')]), 0));
							var v_arg_code;
							v_arg_code = (p5pkg['Perlito5::Java'].to_list([v_arg_list], 0));
							return (p5context([(p5str(v_code) + '.apply(' + p5str(p5pkg['Perlito5::Java'].to_context([v_wantarray], 0)) + ', ' + p5str(v_arg_code) + ')')], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4893._prototype_ = null;
					return tmp4893
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_java_set_list', (function () {
					var tmp4895;
					tmp4895 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_list;
							var tmp4896 = p5list_to_a([List__]);
							v_self = tmp4896.shift();
							v_level = tmp4896.shift();
							v_list = tmp4896.shift();
							(function () {
								if ( (p5str(p5call(v_self, 'code', [], 0)) == 'undef') ) {
								throw(p5context([(p5str(v_list) + '.shift()')], p5want));
							}
							})();
							(function () {
								if ( (p5str(p5call(v_self, 'code', [], 0)) == 'prefix:<$>') ) {
								throw(p5context([(p5str(p5pkg['Perlito5::Java'].emit_java_autovivify(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments')._array_.p5aget(0), (p5num(v_level) + 1), 'scalar']), 0)) + '.scalar_deref_set(' + p5str(p5call(v_list, 'emit_java', [(p5num(v_level) + 1), 'scalar'], 0)) + ')')], p5want));
							}
							})();
							return (p5pkg['Perlito5::AST::Apply'].die([].concat(p5list_to_a(['not implemented: assign to ', p5call(v_self, 'code', [], 1)])), p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4895._prototype_ = null;
					return tmp4895
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_java_get_decl', (function () {
					var tmp4897;
					tmp4897 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( ((p5str(v_code) == 'my') || ((p5str(v_code) == 'our') || ((p5str(v_code) == 'state') || (p5str(v_code) == 'local')))) ) {
								throw(p5context([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
										return (( (p5pkg['Perlito5::AST::Apply'].ref([p5make_package('main')['v__']], 0) == 'Perlito5::AST::Var') ? p5call('Perlito5::AST::Decl', 'new', ['decl', v_code, 'type', '', 'var', p5make_package('main')['v__']], p5want) : p5context([], p5want)));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))], p5want));
							}
							})();
							(function () {
								if ( ((p5str(v_code) != 'do') && (p5str(v_code) != 'eval')) ) {
								p5and((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('arguments'), function () {
									throw(p5context([p5map(p5pkg['Perlito5::AST::Apply'], function (p5want) {
										return ((p5context([p5call(p5make_package('main')['v__'], 'emit_java_get_decl', [], p5want)], p5want)));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('arguments'), 'Perlito5::AST::Apply')]))], p5want))
								});
							}
							})();
							return (p5context([], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4897._prototype_ = null;
					return tmp4897
				})());
				p5typeglob_set('Perlito5::AST::Apply', 'emit_java_has_regex', (function () {
					var tmp4898;
					tmp4898 = function (List__, p5want) {
						try {
							var v_self;
							v_self = (List__.shift());
							var v_code;
							v_code = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code'));
							(function () {
								if ( ((p5str(v_code) == 'p5:m') || ((p5str(v_code) == 'p5:s') || ((p5str(v_code) == 'infix:<=~>') || (p5str(v_code) == 'infix:<!~>')))) ) {
								throw(p5context([1], p5want));
							}
							})();
							return (p5context([], p5want));
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4898._prototype_ = null;
					return tmp4898
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::If');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::If', 'emit_java', (function () {
					var tmp4899;
					tmp4899 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4900 = p5list_to_a([List__]);
							v_self = tmp4900.shift();
							v_level = tmp4900.shift();
							v_wantarray = tmp4900.shift();
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						var List_str = [];
						var v_old_level;
						v_old_level = (v_level);
						(function () {
								if ( p5bool(v_cond) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_cond, 'emit_java_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												v_level = ((p5num(v_old_level) + 1));
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_java_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
								})();
							}
							})();
						var v_body;
						v_body = (( (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body') : ( !( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::If')))) ? null : ( (p5str(v_wantarray) != 'void') ? p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'not_a_loop', 1]), 0) : p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'create_context', 1, 'not_a_loop', 1]), 0)))));
						var v_otherwise;
						v_otherwise = (( (p5pkg['Perlito5::AST::If'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise')], 0) != 'Perlito5::AST::Block') ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise') : ( !( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], p5want), 'Perlito5::AST::If')))) ? null : ( (p5str(v_wantarray) != 'void') ? p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], 1), 'not_a_loop', 1]), 0) : p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('otherwise'), 'stmts', [], 1), 'create_context', 1, 'not_a_loop', 1]), 0)))));
						List_str.p5push([('if (' + p5str(p5pkg['Perlito5::Java'].to_bool([v_cond, (p5num(v_level) + 1)], 0)) + ') {')]);
						(function () {
								if ( p5bool(v_body) ) {
								List_str.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a([p5call(v_body, 'emit_java', [(p5num(v_level) + 1), v_wantarray], 1)])))]));
							}
							})();
						List_str.p5push(['}']);
						(function () {
								if ( p5bool(v_otherwise) ) {
								(function () {
									if ( ((p5num(p5num(p5array_deref((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::AST::If'))) == 1) && (p5pkg['Perlito5::AST::If'].ref([(v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('block')._array_.p5aget(0)], 0) == 'Perlito5::AST::If')) ) {
									List_str.p5push(p5list_to_a(['else', (new p5ArrayRef(p5list_to_a([p5call((v_otherwise || (v_otherwise = new p5HashRef({})))._hash_.p5hget_array('block')._array_.p5aget(0), 'emit_java', [v_level, v_wantarray], 1)])))]));
								}
								else {
									List_str.p5push(p5list_to_a(['else {', (new p5ArrayRef(p5list_to_a([p5call(v_otherwise, 'emit_java', [(p5num(v_level) + 1), v_wantarray], 1)]))), '}']));
								}
								})();
							}
							})();
						return (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, List_str]), p5want));
					};
					tmp4899._prototype_ = null;
					return tmp4899
				})());
				p5typeglob_set('Perlito5::AST::If', 'emit_java_get_decl', (function () {
					var tmp4901;
					tmp4901 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4901._prototype_ = null;
					return tmp4901
				})());
				p5typeglob_set('Perlito5::AST::If', 'emit_java_has_regex', (function () {
					var tmp4902;
					tmp4902 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4902._prototype_ = null;
					return tmp4902
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::When');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::When', 'emit_java', (function () {
					var tmp4903;
					tmp4903 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4904 = p5list_to_a([List__]);
							v_self = tmp4904.shift();
							v_level = tmp4904.shift();
							v_wantarray = tmp4904.shift();
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						var List_str = [];
						var v_old_level;
						v_old_level = (v_level);
						(function () {
								if ( p5bool(v_cond) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_cond, 'emit_java_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												v_level = ((p5num(v_old_level) + 1));
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_java_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
								})();
							}
							})();
						v_cond = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::Var', 'new', ['name', '_', 'namespace', 'main', 'sigil', '$'], 1), v_cond]))), 'code', 'infix:<~~>', 'namespace', '']), 0));
						var v_next;
						v_next = (p5call('Perlito5::AST::Apply', 'new', p5list_to_a(['arguments', (new p5ArrayRef([])), 'bareword', 1, 'code', 'next', 'namespace', '']), 0));
						var v_body;
						v_body = (( (p5pkg['Perlito5::AST::When'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]))), 'not_a_loop', 1]), 0) : ( !( p5bool(p5num(p5array_deref(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], p5want), 'Perlito5::AST::When')))) ? null : ( (p5str(v_wantarray) != 'void') ? p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'not_a_loop', 1]), 0) : p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body'), 'stmts', [], 1), 'create_context', 1, 'not_a_loop', 1]), 0)))));
						p5array_deref((v_body || (v_body = new p5HashRef({})))._hash_.p5hget_array('block'), 'Perlito5::AST::When').p5push([v_next]);
						List_str.p5push([('if (' + p5str(p5pkg['Perlito5::Java'].to_bool([v_cond, (p5num(v_level) + 1)], 0)) + ') {')]);
						(function () {
								if ( p5bool(v_body) ) {
								List_str.p5push(p5list_to_a([(new p5ArrayRef(p5list_to_a([p5call(v_body, 'emit_java', [(p5num(v_level) + 1), v_wantarray], 1)])))]));
							}
							})();
						List_str.p5push(['}']);
						return (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, List_str]), p5want));
					};
					tmp4903._prototype_ = null;
					return tmp4903
				})());
				p5typeglob_set('Perlito5::AST::When', 'emit_java_get_decl', (function () {
					var tmp4905;
					tmp4905 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4905._prototype_ = null;
					return tmp4905
				})());
				p5typeglob_set('Perlito5::AST::When', 'emit_java_has_regex', (function () {
					var tmp4906;
					tmp4906 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4906._prototype_ = null;
					return tmp4906
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::While');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::While', 'emit_java', (function () {
					var tmp4907;
					tmp4907 = function (List__, p5want) {
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4908 = p5list_to_a([List__]);
							v_self = tmp4908.shift();
							v_level = tmp4908.shift();
							v_wantarray = tmp4908.shift();
						var v_cond;
						v_cond = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond'));
						var List_str = [];
						var v_old_level;
						v_old_level = (v_level);
						(function () {
								if ( p5bool(v_cond) ) {
								(function () {
									var List_var_decl = [];
									List_var_decl = p5list_to_a([p5call(v_cond, 'emit_java_get_decl', [], 1)]);
									(function () {
										var v_arg;
										(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
												v_level = ((p5num(v_old_level) + 1));
												List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_java_init', [v_level, v_wantarray], 1)]));
											}, p5list_to_a([List_var_decl]), false, '') })()
									})();
								})();
							}
							})();
						var v_expression;
						(function () {
								if ( p5bool(p5pkg['Perlito5::Java'].is_native([v_cond], 0)) ) {
								v_expression = (p5pkg['Perlito5::Java'].to_native_args(p5list_to_a([(new p5ArrayRef([v_cond])), (p5num(v_level) + 1)]), 0));
							}
							else {
								v_expression = (p5pkg['Perlito5::Java'].to_bool([v_cond, (p5num(v_level) + 1)], 0));
							}
							})();
						(function () {
								if ( ((p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) == 'Perlito5::AST::Apply') && (p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('code')) == 'do')) ) {
								List_str.p5push(p5list_to_a(['do {', (new p5ArrayRef(p5list_to_a([p5call(p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget_array('arguments')._array_.p5aget_hash(0)._hash_.p5hget('stmts'), 'not_a_loop', 1]), 0), 'emit_java', [(p5num(v_level) + 2), v_wantarray], 1)]))), '}', ('while (' + p5str(v_expression) + ');')]));
							}
							else {
								(function () {
									var local_idx = p5LOCAL.length;
									(function () {
										var v_tmp4909 = p5make_package('Perlito5')['v_THROW'];
										p5LOCAL.push(function(){ p5make_package('Perlito5')['v_THROW'] = v_tmp4909 });
										return (p5make_package('Perlito5')['v_THROW'] = (null));
									})();
									p5make_package('Perlito5')['v_THROW'] = (0);
									var v_body;
									v_body = (( (p5pkg['Perlito5::AST::While'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]))) : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('stmts')));
									List_str.p5push(p5list_to_a([('while (' + p5str(v_expression) + ') {'), (new p5ArrayRef(p5list_to_a([p5call(p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', v_body, 'block_label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), 'continue', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')]), 0), 'emit_java', [(p5num(v_level) + 2), v_wantarray], 1)]))), '}']));
									(function () {
										if ( p5bool(p5make_package('Perlito5')['v_THROW']) ) {
										List_str = p5list_to_a([p5pkg['Perlito5::Java'].emit_wrap_last_exception_java(p5list_to_a([v_self, (new p5ArrayRef(List_str))]), 1)]);
									}
									})();
									p5cleanup_local(local_idx, null);
								})();
							}
							})();
						return (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, List_str]), p5want));
					};
					tmp4907._prototype_ = null;
					return tmp4907
				})());
				p5typeglob_set('Perlito5::AST::While', 'emit_java_get_decl', (function () {
					var tmp4910;
					tmp4910 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4910._prototype_ = null;
					return tmp4910
				})());
				p5typeglob_set('Perlito5::AST::While', 'emit_java_has_regex', (function () {
					var tmp4911;
					tmp4911 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4911._prototype_ = null;
					return tmp4911
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::For');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::For', 'emit_java', (function () {
					var tmp4912;
					tmp4912 = function (List__, p5want) {
						var local_idx = p5LOCAL.length;
						var v_self;
						var v_level;
						var v_wantarray;
						var tmp4913 = p5list_to_a([List__]);
							v_self = tmp4913.shift();
							v_level = tmp4913.shift();
							v_wantarray = tmp4913.shift();
						(function () {
								var v_tmp4914 = p5make_package('Perlito5')['v_THROW'];
								p5LOCAL.push(function(){ p5make_package('Perlito5')['v_THROW'] = v_tmp4914 });
								return (p5make_package('Perlito5')['v_THROW'] = (null));
							})();
						p5make_package('Perlito5')['v_THROW'] = (0);
						var v_body;
						v_body = (( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')], 0) != 'Perlito5::AST::Block') ? (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('body')]))) : (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('body')._hash_.p5hget('stmts')));
						var List_str = [];
						var v_cond;
						v_cond = (( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ? (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond') : (new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')])))));
						(function () {
								var v_expr;
								(function(){ var v_expr; p5for_lex(function (v) { v_expr = v }, function () {
										(function () {
											if ( p5bool(v_expr) ) {
											(function () {
												var List_var_decl = [];
												List_var_decl = p5list_to_a([p5call(v_expr, 'emit_java_get_decl', [], 1)]);
												(function () {
													var v_arg;
													(function(){ var v_arg; p5for_lex(function (v) { v_arg = v }, function () {
															List_str.p5push(p5list_to_a([p5call(v_arg, 'emit_java_init', [v_level, v_wantarray], 1)]));
														}, p5list_to_a([List_var_decl]), false, '') })()
												})();
											})();
										}
										})();
									}, p5list_to_a([p5array_deref((v_cond || (v_cond = new p5ArrayRef([]))), 'Perlito5::AST::For'), (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic')]), false, '') })()
							})();
						(function () {
								if ( (p5pkg['Perlito5::AST::For'].ref([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')], 0) == 'ARRAY') ) {
								List_str.p5push(p5list_to_a([('for ( ' + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(0), 'emit_java', [(p5num(v_level) + 1)], 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1)) ? (p5str(p5pkg['Perlito5::Java'].to_bool(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(1), (p5num(v_level) + 1)]), 0)) + '; ') : '; ')) + p5str(( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2)) ? (p5str(p5call((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_array('cond')._array_.p5aget(2), 'emit_java', [(p5num(v_level) + 1)], 0)) + ' ') : '')) + ') {'), (new p5ArrayRef(p5list_to_a([p5call(p5context([p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', v_body, 'block_label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label')]), 0)], 0), 'emit_java', [(p5num(v_level) + 2), v_wantarray], 1)]))), '}']));
							}
							else {
								(function () {
									var v_cond;
									v_cond = (p5pkg['Perlito5::Java'].to_list(p5list_to_a([(new p5ArrayRef(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('cond')]))), (p5num(v_level) + 1)]), 0));
									var v_topic;
									v_topic = ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('topic'));
									var v_local_label;
									v_local_label = (p5pkg['Perlito5::Java'].get_label([], 0));
									var v_decl;
									v_decl = ('');
									var v_v;
									v_v = (v_topic);
									(function () {
										if ( p5bool((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('decl')) ) {
										v_decl = ((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('decl'));
										v_v = ((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('var'));
									}
									else {
										v_decl = (p5or((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('_decl'), function () {
													return 'global'
												}));
									}
									})();
									var v_namespace;
									v_namespace = (p5or((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('namespace'), function () {
												return p5or((v_v || (v_v = new p5HashRef({})))._hash_.p5hget('_namespace'), function () {
													return p5make_package('Perlito5')['v_PKG_NAME']
												})
											}));
									var v_s;
									(function () {
										if ( ((p5str(v_decl) == 'my') || (p5str(v_decl) == 'state')) ) {
										List_str.p5push(p5list_to_a([('for (PlObject ' + p5str(v_local_label) + ' : ' + p5str(v_cond) + '.a) {'), (new p5ArrayRef(p5list_to_a([(p5str(p5call(v_v, 'emit_java', [(p5num(v_level) + 1)], 0)) + ('.set(' + p5str(v_local_label) + ');')), p5call(p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', v_body, 'block_label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), 'continue', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')]), 0), 'emit_java', [(p5num(v_level) + 2), v_wantarray], 1)]))), '}']));
									}
									else {
										List_str.p5push(p5list_to_a([('for (PlObject ' + p5str(v_local_label) + ' : ' + p5str(v_cond) + '.a) {'), (new p5ArrayRef(p5list_to_a([(p5str(p5call(v_v, 'emit_java', [(p5num(v_level) + 1)], 0)) + ('.set(' + p5str(v_local_label) + ');')), p5call(p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', v_body, 'block_label', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('label'), 'continue', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget('continue')]), 0), 'emit_java', [(p5num(v_level) + 2), v_wantarray], 1)]))), '}']));
									}
									})();
								})();
							}
							})();
						(function () {
								if ( p5bool(p5make_package('Perlito5')['v_THROW']) ) {
								List_str = p5list_to_a([p5pkg['Perlito5::Java'].emit_wrap_last_exception_java(p5list_to_a([v_self, (new p5ArrayRef(List_str))]), 1)]);
							}
							})();
						return p5cleanup_local(local_idx, (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, List_str]), p5want)));
						p5cleanup_local(local_idx, null);
					};
					tmp4912._prototype_ = null;
					return tmp4912
				})());
				p5typeglob_set('Perlito5::AST::For', 'emit_java_get_decl', (function () {
					var tmp4915;
					tmp4915 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4915._prototype_ = null;
					return tmp4915
				})());
				p5typeglob_set('Perlito5::AST::For', 'emit_java_has_regex', (function () {
					var tmp4916;
					tmp4916 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4916._prototype_ = null;
					return tmp4916
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Sub');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Sub', 'emit_java', (function () {
					var tmp4917;
					tmp4917 = function (List__, p5want) {
						try {
							var local_idx = p5LOCAL.length;
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4918 = p5list_to_a([List__]);
							v_self = tmp4918.shift();
							v_level = tmp4918.shift();
							v_wantarray = tmp4918.shift();
							var v_prototype;
							v_prototype = (( ((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig') != null) ? ('new PlString(' + p5str(p5pkg['Perlito5::Java'].escape_string(p5list_to_a([(v_self || (v_self = new p5HashRef({})))._hash_.p5hget('sig')]), 0)) + ')') : 'PlCx.UNDEF'));
							var v_sub_ref;
							v_sub_ref = (p5pkg['Perlito5::Java'].get_label([], 0));
							(function () {
								var v_tmp4919 = p5make_package('Perlito5::AST::Sub')['v_SUB_REF'];
								p5LOCAL.push(function(){ p5make_package('Perlito5::AST::Sub')['v_SUB_REF'] = v_tmp4919 });
								return (p5make_package('Perlito5::AST::Sub')['v_SUB_REF'] = (null));
							})();
							p5make_package('Perlito5::AST::Sub')['v_SUB_REF'] = (v_sub_ref);
							var v_block;
							v_block = (p5call('Perlito5::Java::LexicalBlock', 'new', p5list_to_a(['block', (v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget('stmts')]), 0));
							var List_captured = [];
							(function () {
								var v_stmt;
								(function(){ var v_stmt; p5for_lex(function (v) { v_stmt = v }, function () {
										List_captured.p5push(p5list_to_a([p5call(v_stmt, 'get_captures', [], 1)]));
									}, p5list_to_a([p5array_deref((v_self || (v_self = new p5HashRef({})))._hash_.p5hget_hash('block')._hash_.p5hget_array('stmts'), 'Perlito5::AST::Sub')]), false, '') })()
							})();
							var Hash_dont_capture = {};
							Hash_dont_capture = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
										return (( p5bool((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('dont')) ? p5context([(p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('dont'), 1], 1) : p5context([], 1)));
									}, p5list_to_a([List_captured]))]));
							var Hash_capture = {};
							Hash_capture = p5a_to_h(p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
										return (( p5bool((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('dont')) ? p5context([], 1) : ( p5bool(Hash_dont_capture.p5hget(p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_id')))) ? p5context([], 1) : ( ((p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_decl')) == 'local') || ((p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_decl')) == 'global') || (p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_decl')) == ''))) ? p5context([], 1) : p5context([(p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_id'), p5make_package('main')['v__']], 1)))));
									}, p5list_to_a([List_captured]))]));
							var List_captures_ast = [];
							List_captures_ast = p5list_to_a([p5pkg['Perlito5::AST::Sub'].values([Hash_capture], 1)]);
							var List_captures_java = [];
							List_captures_java = p5list_to_a([p5map(p5pkg['Perlito5::AST::Sub'], function (p5want) {
										return (p5call(p5make_package('main')['v__'], 'emit_java', [v_level, 'list'], 1));
									}, p5list_to_a([List_captures_ast]))]);
							(function () {
								var v_tmp4920 = p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'];
								p5LOCAL.push(function(){ p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'] = v_tmp4920 });
								return (p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'] = p5a_to_h(p5list_to_a([null])));
							})();
							p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'];
							var v_i;
							v_i = (0);
							p5for(p5make_package('main'), "v__", function () {
									p5pkg[p5make_package('Perlito5::Java')['Hash_Java_var_name'] || (p5make_package('Perlito5::Java')['Hash_Java_var_name'] = {}), 'Perlito5::Java']['Hash_Java_var_name'].p5hset(p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('_id')), (('this.env[' + p5str(v_i) + ']')));
									(function () {
										var tmp4921 = v_i;
										v_i = p5incr_(tmp4921);
										return tmp4921
									})();
								}, p5list_to_a([List_captures_ast]), false, '');
							var List_js_block = [];
							(function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_do_block')) ) {
								List_js_block = p5list_to_a([p5call(v_block, 'emit_java', [(p5num(v_level) + 3), v_wantarray], 1)]);
							}
							else (function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('_eval_block')) ) {
								(function () {
									(v_block || (v_block = new p5HashRef({})))._hash_.p5hset('top_level', (1));
									(v_block || (v_block = new p5HashRef({})))._hash_.p5hset('eval_block', (1));
									var v_outer_throw;
									v_outer_throw = (p5make_package('Perlito5')['v_THROW_RETURN']);
									p5make_package('Perlito5')['v_THROW_RETURN'] = (0);
									p5list_to_a([(List_js_block = p5list_to_a([p5call(v_block, 'emit_java', [(p5num(v_level) + 3), 'runtime'], 1)])), (p5make_package('Perlito5')['v_THROW_RETURN'] = (v_outer_throw))]);
								})();
							}
							else {
								(function () {
									(v_block || (v_block = new p5HashRef({})))._hash_.p5hset('top_level', (1));
									var v_outer_throw;
									v_outer_throw = (p5make_package('Perlito5')['v_THROW_RETURN']);
									p5make_package('Perlito5')['v_THROW_RETURN'] = (0);
									List_js_block = p5list_to_a([p5call(v_block, 'emit_java', [(p5num(v_level) + 3), 'runtime'], 1)]);
									p5make_package('Perlito5')['v_THROW_RETURN'] = (v_outer_throw);
								})();
							}
							})()
							})();
							var v_s;
							v_s = (p5pkg['Perlito5::Java'].emit_wrap_java(p5list_to_a([v_level, ('new PlClosure(' + p5str(v_prototype) + ', new PlObject[]{ ' + p5pkg['Perlito5::AST::Sub'].join([', '].concat(p5list_to_a([List_captures_java])), 0) + ' } ) {'), (new p5ArrayRef(p5list_to_a(['public PlObject apply(int want, PlArray List__) {', (new p5ArrayRef(List_js_block)), '}']))), '}']), 0));
							return (function () {
								if ( p5bool((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')) ) {
								(function () {
									throw(p5context([('PlV.set(' + p5str(p5pkg['Perlito5::Java'].escape_string([(p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('namespace')) + '|' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('name')))], 0)) + ', ' + p5str(v_s) + ')')], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([v_s], p5want))
								})()
							}
							})()
							p5cleanup_local(local_idx, null);
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return p5cleanup_local(local_idx, err);
							}
						}
					};
					tmp4917._prototype_ = null;
					return tmp4917
				})());
				p5typeglob_set('Perlito5::AST::Sub', 'emit_java_get_decl', (function () {
					var tmp4922;
					tmp4922 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4922._prototype_ = null;
					return tmp4922
				})());
				p5typeglob_set('Perlito5::AST::Sub', 'emit_java_has_regex', (function () {
					var tmp4923;
					tmp4923 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4923._prototype_ = null;
					return tmp4923
				})());
			}, [0], false, ''
		);
		p5make_package('Perlito5::AST::Use');
		p5block(function (v) {}, function () {
				p5typeglob_set('Perlito5::AST::Use', 'emit_java', (function () {
					var tmp4924;
					tmp4924 = function (List__, p5want) {
						try {
							var v_self;
							var v_level;
							var v_wantarray;
							var tmp4925 = p5list_to_a([List__]);
							v_self = tmp4925.shift();
							v_level = tmp4925.shift();
							v_wantarray = tmp4925.shift();
							p5call_sub('Perlito5::Grammar::Use', 'emit_time_eval', [v_self], null);
							return (function () {
								if ( (p5str(v_wantarray) != 'void') ) {
								(function () {
									throw(p5context(['PlCx.UNDEF'], p5want))
								})()
							}
							else {
								(function () {
									throw(p5context([('// ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('code')) + ' ' + p5str((v_self || (v_self = new p5HashRef({})))._hash_.p5hget('mod')) + String.fromCharCode(10))], p5want))
								})()
							}
							})()
						}
						catch(err) {
							if ( err instanceof Error ) {
								throw(err);
							}
							else {
								return(err);
							}
						}
					};
					tmp4924._prototype_ = null;
					return tmp4924
				})());
				p5typeglob_set('Perlito5::AST::Use', 'emit_java_get_decl', (function () {
					var tmp4926;
					tmp4926 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4926._prototype_ = null;
					return tmp4926
				})());
				p5typeglob_set('Perlito5::AST::Use', 'emit_java_has_regex', (function () {
					var tmp4927;
					tmp4927 = function (List__, p5want) {
						return (p5context([], p5want));
					};
					tmp4927._prototype_ = null;
					return tmp4927
				})());
			}, [0], false, ''
		);
		1;
	})();
	// use Perlito5::Java::Emitter
;
	(function () {
		null;
		p5make_package('Perlito5::Java::Runtime');
		p5typeglob_set('Perlito5::Java::Runtime', 'emit_java', (function () {
			var tmp4928;
			tmp4928 = function (List__, p5want) {
				var v_self;
				var Hash_args = {};
				var tmp4929 = p5list_to_a([List__]);
					v_self = tmp4929.shift();
					Hash_args = p5a_to_h(tmp4929);
					tmp4929 = [];
				var Hash_java_classes = {};
				Hash_java_classes = p5a_to_h(p5list_to_a([p5hash_deref(p5defined_or(Hash_args.p5hget('java_classes'), function () {
								return (new p5HashRef({}))
							}), 'Perlito5::Java::Runtime')]));
				var Hash_number_binop = {};
				Hash_number_binop = p5a_to_h(p5list_to_a(['add', (new p5HashRef({'op' : '+', 'returns' : 'PlInt', 'num_returns' : 'PlDouble'})), 'sub', (new p5HashRef({'op' : '-', 'returns' : 'PlInt', 'num_returns' : 'PlDouble'})), 'mul', (new p5HashRef({'op' : '*', 'returns' : 'PlInt', 'num_returns' : 'PlDouble'})), 'div', (new p5HashRef({'op' : '/', 'returns' : 'PlDouble', 'num_returns' : 'PlDouble'})), 'num_eq', (new p5HashRef({'op' : '==', 'returns' : 'PlBool', 'num_returns' : 'PlBool'})), 'num_ne', (new p5HashRef({'op' : '!=', 'returns' : 'PlBool', 'num_returns' : 'PlBool'})), 'num_lt', (new p5HashRef({'op' : '<', 'returns' : 'PlBool', 'num_returns' : 'PlBool'})), 'num_le', (new p5HashRef({'op' : '<=', 'returns' : 'PlBool', 'num_returns' : 'PlBool'})), 'num_gt', (new p5HashRef({'op' : '>', 'returns' : 'PlBool', 'num_returns' : 'PlBool'})), 'num_ge', (new p5HashRef({'op' : '>=', 'returns' : 'PlBool', 'num_returns' : 'PlBool'}))]));
				var Hash_string_binop = {};
				Hash_string_binop = p5a_to_h(p5list_to_a(['str_eq', (new p5HashRef({'op' : '== 0', 'returns' : 'PlBool'})), 'str_ne', (new p5HashRef({'op' : '!= 0', 'returns' : 'PlBool'})), 'str_lt', (new p5HashRef({'op' : '< 0', 'returns' : 'PlBool'})), 'str_le', (new p5HashRef({'op' : '<= 0', 'returns' : 'PlBool'})), 'str_gt', (new p5HashRef({'op' : '> 0', 'returns' : 'PlBool'})), 'str_ge', (new p5HashRef({'op' : '>= 0', 'returns' : 'PlBool'}))]));
				var Hash_native_to_perl = {};
				Hash_native_to_perl = {'int' : 'PlInt', 'double' : 'PlDouble', 'boolean' : 'PlBool', 'String' : 'PlString'};
				p5for(p5make_package('main'), "v__", function () {
							Hash_native_to_perl.p5hset(p5str((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('java_type')), ((p5make_package('main')['v__'] || (p5make_package('main')['v__'] = new p5HashRef({})))._hash_.p5hget('java_native_to_perl')));
						}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].values([Hash_java_classes], 1)]), false, '');
				return (p5context([(('// start Perl-Java runtime' + String.fromCharCode(10) + '// this is generated code - see: lib/Perlito5/Java/Runtime.pm' + String.fromCharCode(10) + String.fromCharCode(10) + 'import java.lang.Math;' + String.fromCharCode(10) + 'import java.lang.System;' + String.fromCharCode(10) + 'import java.util.*;' + String.fromCharCode(10) + 'import java.io.*;' + String.fromCharCode(10) + 'import java.util.regex.Pattern;' + String.fromCharCode(10) + 'import java.util.regex.Matcher;' + String.fromCharCode(10) + 'import java.util.concurrent.TimeUnit;' + String.fromCharCode(10)) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_class;
		v_class = (p5make_package('main')['v__']);
		return (( p5bool((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('import')) ? ('import ' + p5str((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('import')) + ';' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].values([Hash_java_classes], 1)]))])), 0) + (('class PlControlException extends RuntimeException {' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlNextException    extends PlControlException {' + String.fromCharCode(10) + '    public int label_id;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlNextException(int i) {' + String.fromCharCode(10) + '        this.label_id = i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlLastException    extends PlControlException {' + String.fromCharCode(10) + '    public int label_id;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlLastException(int i) {' + String.fromCharCode(10) + '        this.label_id = i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlRedoException    extends PlControlException {' + String.fromCharCode(10) + '    public int label_id;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlRedoException(int i) {' + String.fromCharCode(10) + '        this.label_id = i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlReturnException  extends PlControlException {' + String.fromCharCode(10) + '    public PlObject ret;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlReturnException(PlObject ret) {' + String.fromCharCode(10) + '        this.ret = ret;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlDieException  extends PlControlException {' + String.fromCharCode(10) + '    public PlObject ret;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlDieException(PlObject ret) {' + String.fromCharCode(10) + '        this.ret = ret;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String getMessage() {' + String.fromCharCode(10) + '        return this.ret.toString();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlCx {' + String.fromCharCode(10) + '    public static final int     VOID   = 0;' + String.fromCharCode(10) + '    public static final int     SCALAR = 1;' + String.fromCharCode(10) + '    public static final int     LIST   = 2;' + String.fromCharCode(10) + '    public static final PlUndef  UNDEF  = new PlUndef();' + String.fromCharCode(10) + '    public static final PlBool   TRUE   = new PlBool(true);' + String.fromCharCode(10) + '    public static final PlBool   FALSE  = new PlBool(false);' + String.fromCharCode(10) + '    public static final PlString STDOUT = new PlString("STDOUT");' + String.fromCharCode(10) + '    public static final PlString STDERR = new PlString("STDERR");' + String.fromCharCode(10) + '    public static final PlString STDIN  = new PlString("STDIN");' + String.fromCharCode(10) + '    public static final PlString DIED   = new PlString("Died");' + String.fromCharCode(10) + '    public static final PlString EMPTY  = new PlString("");' + String.fromCharCode(10) + '    public static final String  ARGV   = "main|List_ARGV";' + String.fromCharCode(10) + '    public static final String  ENV    = "main|Hash_ENV";' + String.fromCharCode(10) + '    public static final PlNextException NEXT = new PlNextException(0);' + String.fromCharCode(10) + '    public static final PlLastException LAST = new PlLastException(0);' + String.fromCharCode(10) + String.fromCharCode(10))) + '    ' + p5pkg['Perlito5::Java::Runtime'].join([String.fromCharCode(10) + '    '].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		return (('public static final PlInt ' + p5str(( (p5num(p5make_package('main')['v__']) < 0) ? 'MIN' : 'INT')) + p5str(p5pkg['Perlito5::Java::Runtime'].abs([p5make_package('main')['v__']], 0)) + (' = new PlInt(' + p5str(p5make_package('main')['v__']) + ');')));
	}, p5list_to_a([p5range(p5negative( 2), 2, 1, "tmp4930", 0)]))])), 0) + String.fromCharCode(10) + '    ' + p5pkg['Perlito5::Java::Runtime'].join([String.fromCharCode(10) + '    '].concat(p5list_to_a([p5array_deref(p5defined_or(Hash_args.p5hget('java_constants'), function () {
		return (new p5ArrayRef([]))
	}), 'Perlito5::Java::Runtime')])), 0) + String.fromCharCode(10) + (('}' + String.fromCharCode(10) + 'class PlCORE {' + String.fromCharCode(10) + '    public static final PlObject print(int want, PlObject filehandle, PlArray List__) {' + String.fromCharCode(10) + '        // TODO - write to filehandle' + String.fromCharCode(10) + '        for (int i = 0; i < List__.to_int(); i++) {' + String.fromCharCode(10) + '            System.out.print(List__.aget(i).toString());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCx.INT1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject say(int want, PlObject filehandle, PlArray List__) {' + String.fromCharCode(10) + '        // TODO - write to filehandle' + String.fromCharCode(10) + '        for (int i = 0; i < List__.to_int(); i++) {' + String.fromCharCode(10) + '            System.out.print(List__.aget(i).toString());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        System.out.println("");' + String.fromCharCode(10) + '        return PlCx.INT1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject say(String s) {' + String.fromCharCode(10) + '        // say() shortcut' + String.fromCharCode(10) + '        return PlCORE.say(PlCx.VOID, PlCx.STDOUT, new PlArray(new PlString(s)));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject exit(int want, PlArray List__) {' + String.fromCharCode(10) + '        int arg = List__.aget(0).to_int();' + String.fromCharCode(10) + '        System.exit(arg);' + String.fromCharCode(10) + '        return PlCx.UNDEF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject warn(int want, PlArray List__) {' + String.fromCharCode(10) + '        for (int i = 0; i < List__.to_int(); i++) {' + String.fromCharCode(10) + '            System.err.print(List__.aget(i).toString());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        System.err.println("");' + String.fromCharCode(10) + '        return PlCx.INT1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject die(int want, PlArray List__) {' + String.fromCharCode(10) + '        PlObject arg = List__.aget(0);' + String.fromCharCode(10) + '        if (arg.is_undef() || (arg.is_string() && arg.toString() == "")) {' + String.fromCharCode(10) + '            throw new PlDieException(PlCx.DIED);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (List__.to_int() == 1) {' + String.fromCharCode(10) + '            throw new PlDieException(arg);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        StringBuilder sb = new StringBuilder();' + String.fromCharCode(10) + '        for (int i = 0; i < List__.to_int(); i++) {' + String.fromCharCode(10) + '            String item = List__.aget(i).toString();' + String.fromCharCode(10) + '            sb.append(item);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        throw new PlDieException(new PlString(sb.toString()));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject die(String s) {' + String.fromCharCode(10) + '        // die() shortcut' + String.fromCharCode(10) + '        return PlCORE.die(PlCx.VOID, new PlArray(new PlString(s)));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject ref(int want, PlArray List__) {' + String.fromCharCode(10) + '        return List__.aget(0).ref();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject values(int want, PlObject List__) {' + String.fromCharCode(10) + '        return want == PlCx.LIST ? List__.values() : List__.values().scalar();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject keys(int want, PlObject List__) {' + String.fromCharCode(10) + '        return want == PlCx.LIST ? List__.keys() : List__.keys().scalar();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject each(int want, PlObject List__) {' + String.fromCharCode(10) + '        return want == PlCx.LIST ? List__.each() : List__.each().aget(0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject scalar(int want, PlArray List__) {' + String.fromCharCode(10) + '        if (List__.to_int() == 0) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return List__.aget(-1).scalar();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject join(int want, PlArray List__) {' + String.fromCharCode(10) + '        String s = List__.shift().toString();' + String.fromCharCode(10) + '        StringBuilder sb = new StringBuilder();' + String.fromCharCode(10) + '        boolean first = true;' + String.fromCharCode(10) + '        for (int i = 0; i < List__.to_int(); i++) {' + String.fromCharCode(10) + '            String item = List__.aget(i).toString();' + String.fromCharCode(10) + '            if (first)' + String.fromCharCode(10) + '                first = false;' + String.fromCharCode(10) + '            else' + String.fromCharCode(10) + '                sb.append(s);' + String.fromCharCode(10) + '            sb.append(item);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString(sb.toString());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject reverse(int want, PlArray List__) {' + String.fromCharCode(10) + '        if (want == PlCx.LIST) {' + String.fromCharCode(10) + '            PlArray ret = new PlArray(List__);' + String.fromCharCode(10) + '            Collections.reverse(ret.a);' + String.fromCharCode(10) + '            return ret;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        StringBuilder sb = new StringBuilder();' + String.fromCharCode(10) + '        for (int i = 0; i < List__.to_int(); i++) {' + String.fromCharCode(10) + '            sb.append( List__.aget(i).toString() );' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString(sb.reverse().toString());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject time(int want, PlArray List__) {' + String.fromCharCode(10) + '        return new PlDouble( System.currentTimeMillis() * 0.001 );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject sleep(int want, PlArray List__) {' + String.fromCharCode(10) + '        long s = (new Double(List__.shift().to_double() * 1000)).longValue();' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            TimeUnit.MILLISECONDS.sleep(s);' + String.fromCharCode(10) + '        } catch (InterruptedException e) {' + String.fromCharCode(10) + '            //Handle exception' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlDouble(s / 1000.0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject system(int want, PlArray List__) {' + String.fromCharCode(10) + '        // TODO - see perldoc -f system' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            String[] args = new String[List__.to_int()];' + String.fromCharCode(10) + '            int i = 0;' + String.fromCharCode(10) + '            for (PlObject s : List__.a) {' + String.fromCharCode(10) + '                args[i++] = s.toString();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            String s = null;' + String.fromCharCode(10) + '            Process p = Runtime.getRuntime().exec(args);' + String.fromCharCode(10) + '            // BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));' + String.fromCharCode(10) + '            // BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));' + String.fromCharCode(10) + '            // System.out.println("STDOUT' + String.fromCharCode(92) + 'n");' + String.fromCharCode(10) + '            // while ((s = stdInput.readLine()) != null) {' + String.fromCharCode(10) + '            //     System.out.println("  " + s);' + String.fromCharCode(10) + '            // }' + String.fromCharCode(10) + '            // System.out.println("STDERR' + String.fromCharCode(92) + 'n");' + String.fromCharCode(10) + '            // while ((s = stdError.readLine()) != null) {' + String.fromCharCode(10) + '            //     System.out.println("  " + s);' + String.fromCharCode(10) + '            // }' + String.fromCharCode(10) + '            return PlCx.INT0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch (IOException e) {' + String.fromCharCode(10) + '            // System.out.println("IOexception: ");' + String.fromCharCode(10) + '            // e.printStackTrace();' + String.fromCharCode(10) + '            return PlCx.MIN1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject qx(int want, PlArray List__) {' + String.fromCharCode(10) + '        // TODO - see perldoc -f qx' + String.fromCharCode(10) + '        try {' + String.fromCharCode(10) + '            String[] args = new String[List__.to_int()];' + String.fromCharCode(10) + '            int i = 0;' + String.fromCharCode(10) + '            for (PlObject s : List__.a) {' + String.fromCharCode(10) + '                args[i++] = s.toString();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            PlArray res = new PlArray();' + String.fromCharCode(10) + '            String s = null;' + String.fromCharCode(10) + '            Process p = Runtime.getRuntime().exec(args);' + String.fromCharCode(10) + '            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));' + String.fromCharCode(10) + '            System.out.println("STDOUT' + String.fromCharCode(92) + 'n");' + String.fromCharCode(10) + '            while ((s = stdInput.readLine()) != null) {' + String.fromCharCode(10) + '                // System.out.println("  " + s);' + String.fromCharCode(10) + '                res.push(s + "' + String.fromCharCode(92) + 'n");' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            // BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));' + String.fromCharCode(10) + '            // System.out.println("STDERR' + String.fromCharCode(92) + 'n");' + String.fromCharCode(10) + '            // while ((s = stdError.readLine()) != null) {' + String.fromCharCode(10) + '            //     System.out.println("  " + s);' + String.fromCharCode(10) + '            // }' + String.fromCharCode(10) + '            if (want == PlCx.LIST) {' + String.fromCharCode(10) + '                return res;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            res.unshift(PlCx.EMPTY);' + String.fromCharCode(10) + '            return join(want, res);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        catch (IOException e) {' + String.fromCharCode(10) + '            // System.out.println("IOexception: ");' + String.fromCharCode(10) + '            // e.printStackTrace();' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PerlCompare implements Comparator<PlObject> {' + String.fromCharCode(10) + '    public PlClosure sorter;' + String.fromCharCode(10) + '    public PlLvalue v_a;' + String.fromCharCode(10) + '    public PlLvalue v_b;' + String.fromCharCode(10) + '    public PerlCompare (PlClosure sorter, PlLvalue a, PlLvalue b) {' + String.fromCharCode(10) + '        this.sorter = sorter;' + String.fromCharCode(10) + '        this.v_a = a;' + String.fromCharCode(10) + '        this.v_b = b;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int compare (PlObject a, PlObject b) {' + String.fromCharCode(10) + '        v_a.set(a);' + String.fromCharCode(10) + '        v_b.set(b);' + String.fromCharCode(10) + '        return this.sorter.apply( PlCx.SCALAR, new PlArray() ).to_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PerlOp {' + String.fromCharCode(10) + '    // PerlOp implements operators: && || ' + String.fromCharCode(10) + '    //      and auxiliary functions' + String.fromCharCode(10) + '    //' + String.fromCharCode(10) + '    // note: ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' add() and ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' sub() are PlObject methods, not implemented here.' + String.fromCharCode(10) + '    //' + String.fromCharCode(10) + '    // TODO - see Perlito5/Javascript2/Runtime.pm for more operator implementations' + String.fromCharCode(10) + '    // TODO - ' + String.fromCharCode(39) + 'boolean_stack' + String.fromCharCode(39) + ' should be reset when an exception happens' + String.fromCharCode(10) + String.fromCharCode(10) + '    private static ArrayList<PlObject> boolean_stack = new ArrayList<PlObject>();' + String.fromCharCode(10) + '    private static PlArray local_stack = new PlArray();' + String.fromCharCode(10) + '    private static Random random = new Random();' + String.fromCharCode(10) + String.fromCharCode(10) + '    // local()' + String.fromCharCode(10) + '    public static final PlObject push_local(PlHash container, String index) {' + String.fromCharCode(10) + '        local_stack.a.add(container);' + String.fromCharCode(10) + '        local_stack.a.add(new PlString(index));' + String.fromCharCode(10) + '        PlLvalue empty = new PlLvalue();' + String.fromCharCode(10) + '        local_stack.a.add(container.hget_lvalue(index));' + String.fromCharCode(10) + '        container.h.put(index, empty);' + String.fromCharCode(10) + '        return empty;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject push_local(PlArray container, int index) {' + String.fromCharCode(10) + '        local_stack.a.add(container);' + String.fromCharCode(10) + '        local_stack.a.add(new PlInt(index));' + String.fromCharCode(10) + '        PlLvalue empty = new PlLvalue();' + String.fromCharCode(10) + '        local_stack.a.add(container.aget_lvalue(index));' + String.fromCharCode(10) + '        container.aset(index, empty);' + String.fromCharCode(10) + '        return empty;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final int local_length() {' + String.fromCharCode(10) + '        return local_stack.to_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject cleanup_local(int pos, PlObject ret) {' + String.fromCharCode(10) + '        while (local_stack.to_int() > pos) {' + String.fromCharCode(10) + '            PlLvalue lvalue    = (PlLvalue)local_stack.pop();' + String.fromCharCode(10) + '            PlObject index     = local_stack.pop();' + String.fromCharCode(10) + '            PlObject container = local_stack.pop();' + String.fromCharCode(10) + '            if (container.is_array()) {' + String.fromCharCode(10) + '                ((PlArray)container).a.set(index.to_int(), lvalue);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                ((PlHash)container).h.put(index.toString(), lvalue);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return ret;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // context()' + String.fromCharCode(10) + '    //      - handles run-time scalar/list/void context in expression results' + String.fromCharCode(10) + '    public static final PlObject context(int want, PlObject arg) {' + String.fromCharCode(10) + '        if (want == PlCx.LIST) {' + String.fromCharCode(10) + '            return arg;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return arg.scalar();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject context(int want) {' + String.fromCharCode(10) + '        if (want == PlCx.LIST) {' + String.fromCharCode(10) + '            return new PlArray();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCx.UNDEF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // statement()' + String.fromCharCode(10) + '    //      - workaround for "Error: not a statement"' + String.fromCharCode(10) + '    //      - this is the compile-time version of context(null, arg)' + String.fromCharCode(10) + '    public static final void statement(PlObject arg) { }' + String.fromCharCode(10) + '    public static final void statement() { }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // control-flow exceptions' + String.fromCharCode(10) + '    public static final PlObject next() {' + String.fromCharCode(10) + '        throw PlCx.NEXT;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject next(int label_id) {' + String.fromCharCode(10) + '        throw new PlNextException(label_id);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject last() {' + String.fromCharCode(10) + '        throw PlCx.LAST;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject last(int label_id) {' + String.fromCharCode(10) + '        throw new PlLastException(label_id);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject redo(int label_id) {' + String.fromCharCode(10) + '        throw new PlRedoException(label_id);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject ret(PlObject ret) {' + String.fromCharCode(10) + '        throw new PlReturnException(ret);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlObject caller(int ctx, PlObject s) {' + String.fromCharCode(10) + '        int item = s.to_int();' + String.fromCharCode(10) + '        PlCORE.die("caller() not implemented");' + String.fromCharCode(10) + '        return null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlObject srand() {' + String.fromCharCode(10) + '        random = new Random();' + String.fromCharCode(10) + '        return PlCx.UNDEF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject srand(int s) {' + String.fromCharCode(10) + '        random = new Random(s);' + String.fromCharCode(10) + '        return new PlInt(s);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlObject rand(double s) {' + String.fromCharCode(10) + '        if (s == 0.0) {' + String.fromCharCode(10) + '            s = 1.0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlDouble(s * random.nextDouble());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final int[] range(PlObject _start, PlObject _end, int ctx, String var, int ignore) {' + String.fromCharCode(10) + '        if (ctx == PlCx.LIST) {' + String.fromCharCode(10) + '            int start = _start.to_int(),' + String.fromCharCode(10) + '                end   = _end.to_int();' + String.fromCharCode(10) + '            int size = Math.max(0, end - start + 1);' + String.fromCharCode(10) + '            int[] ret = new int[size];' + String.fromCharCode(10) + '            for (int i = 0; i < size; ++i) {' + String.fromCharCode(10) + '                ret[i] = start + i;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return ret;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlCORE.die("Range not implemented for context " + ctx);' + String.fromCharCode(10) + '        return null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlObject smartmatch_scalar(PlObject arg0, PlObject arg1) {' + String.fromCharCode(10) + '        if (arg1.is_undef()) {' + String.fromCharCode(10) + '            return arg0.is_undef() ? PlCx.TRUE : PlCx.FALSE;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (arg1.is_string()) {' + String.fromCharCode(10) + '            return arg0.str_eq(arg1);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (arg1.is_num() || arg1.is_int()) {' + String.fromCharCode(10) + '            return arg0.num_eq(arg1);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die(PlCx.VOID, new PlArray(new PlString("Not implemented: smartmatch operator with argument type ' + String.fromCharCode(39) + '"), PlCORE.ref(PlCx.SCALAR, new PlArray(arg1)), new PlString("' + String.fromCharCode(39) + '")));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // and1(x) ? y : and3()' + String.fromCharCode(10) + '    public static final boolean and1(PlObject arg1) {' + String.fromCharCode(10) + '        if (arg1.to_bool()) {' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            boolean_stack.add(0, arg1);' + String.fromCharCode(10) + '            return false;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject and3() {' + String.fromCharCode(10) + '        return boolean_stack.remove(0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // or1(x) ? or2() : y' + String.fromCharCode(10) + '    public static final boolean or1(PlObject arg1) {' + String.fromCharCode(10) + '        if (arg1.to_bool()) {' + String.fromCharCode(10) + '            boolean_stack.add(0, arg1);' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return false;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject or2() {' + String.fromCharCode(10) + '        return boolean_stack.remove(0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // defined_or1(x) ? defined_or2() : y' + String.fromCharCode(10) + '    public static final boolean defined_or1(PlObject arg1) {' + String.fromCharCode(10) + '        if (!arg1.is_undef()) {' + String.fromCharCode(10) + '            boolean_stack.add(0, arg1);' + String.fromCharCode(10) + '            return true;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return false;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject defined_or2() {' + String.fromCharCode(10) + '        return boolean_stack.remove(0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlInt ord(PlString s) {' + String.fromCharCode(10) + '        String item = s.toString();' + String.fromCharCode(10) + '        return new PlInt(item.length() > 0 ? Character.codePointAt(item, 0) : 0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlString string_replicate(PlObject s, PlObject c) {' + String.fromCharCode(10) + '        int count = c.to_int();' + String.fromCharCode(10) + '        if ( count < 1 ) {' + String.fromCharCode(10) + '            return new PlString("");' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            String raw_s = s.toString();' + String.fromCharCode(10) + '            StringBuilder sb = new StringBuilder();' + String.fromCharCode(10) + '            for (int i = 0; i < count; i++) {' + String.fromCharCode(10) + '                sb.append(raw_s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return new PlString(sb.toString());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject list_replicate(PlArray o, PlObject c, int wantarray) {' + String.fromCharCode(10) + '        int count = c.to_int();' + String.fromCharCode(10) + '        PlArray a = new PlArray();' + String.fromCharCode(10) + '        if (count > 0) {' + String.fromCharCode(10) + '            for (int i = 0; i < count; i++) {' + String.fromCharCode(10) + '                a.push( o );' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return (wantarray == PlCx.LIST ) ? a : a.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject grep(PlClosure c, PlArray a, int wantarray) {' + String.fromCharCode(10) + '        PlArray ret = new PlArray();' + String.fromCharCode(10) + '        int size = a.to_int();' + String.fromCharCode(10) + '        PlLvalue v__ref = (PlLvalue)PlV.get("main|v__");' + String.fromCharCode(10) + '        PlObject v__val = v__ref.get();' + String.fromCharCode(10) + '        for (int i = 0; i < size; i++) {' + String.fromCharCode(10) + '            boolean result;' + String.fromCharCode(10) + '            PlObject temp = a.aget(i);' + String.fromCharCode(10) + '            v__ref.set(temp);' + String.fromCharCode(10) + '            result = c.apply(PlCx.SCALAR, new PlArray()).to_bool();' + String.fromCharCode(10) + '            if (result) {' + String.fromCharCode(10) + '                ret.push(temp);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        v__ref.set(v__val);' + String.fromCharCode(10) + '        return (wantarray == PlCx.LIST ) ? ret : ret.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject map(PlClosure c, PlArray a, int wantarray) {' + String.fromCharCode(10) + '        PlArray ret = new PlArray();' + String.fromCharCode(10) + '        int size = a.to_int();' + String.fromCharCode(10) + '        PlLvalue v__ref = (PlLvalue)PlV.get("main|v__");' + String.fromCharCode(10) + '        PlObject v__val = v__ref.get();' + String.fromCharCode(10) + '        for (int i = 0; i < size; i++) {' + String.fromCharCode(10) + '            v__ref.set(a.aget(i));' + String.fromCharCode(10) + '            ret.push(c.apply(PlCx.LIST, new PlArray()));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        v__ref.set(v__val);' + String.fromCharCode(10) + '        return (wantarray == PlCx.LIST ) ? ret : ret.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject sort(PlClosure c, PlArray a, int wantarray, String pckg) {' + String.fromCharCode(10) + '        PlArray ret = new PlArray(a);' + String.fromCharCode(10) + '        int size = a.to_int();' + String.fromCharCode(10) + '        PlLvalue v_a_ref = (PlLvalue)PlV.get(pckg + "|v_a");' + String.fromCharCode(10) + '        PlLvalue v_b_ref = (PlLvalue)PlV.get(pckg + "|v_b");' + String.fromCharCode(10) + '        PerlCompare comp = new PerlCompare(c, v_a_ref, v_b_ref);' + String.fromCharCode(10) + '        PlObject v_a_val = v_a_ref.get();' + String.fromCharCode(10) + '        PlObject v_b_val = v_b_ref.get();' + String.fromCharCode(10) + '        Collections.sort(ret.a, comp);' + String.fromCharCode(10) + '        v_a_ref.set(v_a_val);' + String.fromCharCode(10) + '        v_b_ref.set(v_b_val);' + String.fromCharCode(10) + '        return (wantarray == PlCx.LIST ) ? ret : ret.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject match(PlObject s, PlRegex pat, int want) {' + String.fromCharCode(10) + '        if (want != PlCx.LIST) {' + String.fromCharCode(10) + '            return pat.p.matcher(s.toString()).find() ? PlCx.TRUE : PlCx.FALSE;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlCORE.die("not implemented string match in list context");' + String.fromCharCode(10) + '        return s;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject match(PlObject s, PlLvalue pat, int want) {' + String.fromCharCode(10) + '        return match(s, pat.get(), want);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject match(PlObject s, PlObject pat, int want) {' + String.fromCharCode(10) + '        // TODO - cache the compiled pattern' + String.fromCharCode(10) + '        return match(s, new PlRegex(pat, 0), want);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlObject replace(PlLvalue s, PlRegex pat, PlObject rep, int want) {' + String.fromCharCode(10) + '        if (want != PlCx.LIST) {' + String.fromCharCode(10) + '            return s.set(new PlString(pat.p.matcher(s.toString()).replaceAll(rep.toString())));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlCORE.die("not implemented string replace in list context");' + String.fromCharCode(10) + '        return s;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject replace(PlObject s, PlObject pat, PlObject rep, int want) {' + String.fromCharCode(10) + '        // TODO - cache the compiled pattern' + String.fromCharCode(10) + '        return replace(s, new PlRegex(pat, 0), rep, want);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlV {' + String.fromCharCode(10) + '    // PlV implements namespaces and global variables' + String.fromCharCode(10) + '    //' + String.fromCharCode(10) + '    // TODO - import CORE subroutines in new namespaces, if needed' + String.fromCharCode(10) + '    // TODO - cache lookups in lexical variables (see PlClosure implementation)' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlHash var = new PlHash();' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlLvalue get(String name) {' + String.fromCharCode(10) + '        return (PlLvalue)var.hget_lvalue(name);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlLvalue get_local(String name) {' + String.fromCharCode(10) + '        return (PlLvalue)var.hget_lvalue_local(name);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject set(String name, PlObject v) {' + String.fromCharCode(10) + '        return var.hset(name, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject set_local(String name, PlObject v) {' + String.fromCharCode(10) + '        return var.hget_lvalue_local(name).set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlHash hash_get(String name) {' + String.fromCharCode(10) + '        return (PlHash)var.hget_hashref(name).get();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlHash hash_get_local(String name) {' + String.fromCharCode(10) + '        return (PlHash)var.hget_lvalue_local(name).get_hashref().get();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject hash_set(String name, PlObject v) {' + String.fromCharCode(10) + '        return var.hget_hashref(name).hash_deref_set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject hash_set_local(String name, PlObject v) {' + String.fromCharCode(10) + '        return var.hget_lvalue_local(name).get_hashref().hash_deref_set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public static final PlArray array_get(String name) {' + String.fromCharCode(10) + '        return (PlArray)var.hget_arrayref(name).get();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlArray array_get_local(String name) {' + String.fromCharCode(10) + '        return (PlArray)var.hget_lvalue_local(name).get_arrayref().get();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject array_set(String name, PlObject v) {' + String.fromCharCode(10) + '        return var.hget_arrayref(name).array_deref_set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public static final PlObject array_set_local(String name, PlObject v) {' + String.fromCharCode(10) + '        return var.hget_lvalue_local(name).get_arrayref().array_deref_set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlEnv {' + String.fromCharCode(10) + '    public static final void init(String[] args) {' + String.fromCharCode(10) + '        PlV.array_set(PlCx.ARGV, new PlArray(args));               // args is String[]' + String.fromCharCode(10) + '        PlV.hash_set(PlCx.ENV,   new PlArray(System.getenv()));    // env  is Map<String, String>' + String.fromCharCode(10) + '        PlV.set("main|v_" + (char)34, new PlString(" "));         // $" = " "' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlObject {' + String.fromCharCode(10) + '    // extends java object ???' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject() {' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_class;
		v_class = (p5make_package('main')['v__']);
		var v_java_class_name;
		v_java_class_name = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('java_type'));
		var v_perl_to_java;
		v_perl_to_java = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('perl_to_java'));
		return (( p5bool((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('import')) ? ('    public ' + p5str(v_java_class_name) + ' ' + p5str(v_perl_to_java) + '() {' + String.fromCharCode(10) + ('        PlCORE.die("error .' + p5str(v_perl_to_java) + '!");' + String.fromCharCode(10)) + '        return null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].values([Hash_java_classes], 1)]))])), 0) + (('    // public String toString() {' + String.fromCharCode(10) + '    //     return this.toString();' + String.fromCharCode(10) + '    // }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        PlCORE.die("error .to_int!");' + String.fromCharCode(10) + '        return 0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject end_of_array_index() {' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        PlCORE.die("error .to_double!");' + String.fromCharCode(10) + '        return 0.0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        PlCORE.die("error .to_bool!");' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_undef() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject apply(int want, PlArray List__) {' + String.fromCharCode(10) + '        // $ perl -e ' + String.fromCharCode(39) + ' $a = 5; $a->() ' + String.fromCharCode(39) + String.fromCharCode(10) + '        // Undefined subroutine &main::5 called' + String.fromCharCode(10) + '        PlCORE.die("subroutine call error");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject length() {' + String.fromCharCode(10) + '        return new PlInt(this.toString().length());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get_arrayref() {' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject shift() {' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject get_hashref() {' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_scalarref(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_scalarref(String i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar_deref_set(PlObject v) {' + String.fromCharCode(10) + '        PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_scalarref(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_scalarref(int i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject array_deref() {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject array_deref_set(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_arrayref(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_arrayref(String i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_hashref(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_hashref(String i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject aget_arrayref(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_arrayref(int i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_hashref(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_hashref(int i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hash_deref() {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hash_deref_set(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget(String i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue(String i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue_local(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue_local(String i) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hset(PlObject s, PlObject v) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(String s, PlObject v) {' + String.fromCharCode(10) + '        PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject aget(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget(int i) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(int i, PlObject v) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(PlObject i, PlObject v) {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject to_array() {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject length_of_array() {' + String.fromCharCode(10) + '        PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject values() {' + String.fromCharCode(10) + '        PlCORE.die("Type of argument to values on reference must be unblessed hashref or arrayref");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject keys() {' + String.fromCharCode(10) + '        PlCORE.die("Type of argument to keys on reference must be unblessed hashref or arrayref");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject each() {' + String.fromCharCode(10) + '        PlCORE.die("Type of argument to each on reference must be unblessed hashref or arrayref");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject exists(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("exists argument is not a HASH or ARRAY element or a subroutine");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject delete(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("delete argument is not a HASH or ARRAY element or slice");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlObject o) {' + String.fromCharCode(10) + '        PlCORE.die("Modification of a read-only value attempted");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get() {' + String.fromCharCode(10) + '        PlCORE.die("error .get!");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_int() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_num() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_string() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_bool() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_hash() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_array() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_lvalue() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_scalarref() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_arrayref() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_hashref() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject _decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        return PlCx.MIN1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        return PlCx.INT1;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject neg() {' + String.fromCharCode(10) + '        return new PlInt(-this.to_int());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject abs() {' + String.fromCharCode(10) + '        int c = this.to_int();' + String.fromCharCode(10) + '        return new PlInt(c < 0 ? -c : c);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject sqrt() { return new PlDouble(Math.sqrt(this.to_double())); }' + String.fromCharCode(10) + '    public PlObject cos()  { return new PlDouble(Math.cos(this.to_double())); }' + String.fromCharCode(10) + '    public PlObject sin()  { return new PlDouble(Math.sin(this.to_double())); }' + String.fromCharCode(10) + '    public PlObject exp()  { return new PlDouble(Math.exp(this.to_double())); }' + String.fromCharCode(10) + '    public PlObject log()  { return new PlDouble(Math.log(this.to_double())); }' + String.fromCharCode(10) + '    public PlObject pow(PlObject arg)    { return new PlDouble(Math.pow(this.to_double(), arg.to_double())); }' + String.fromCharCode(10) + '    public PlObject atan2(PlObject arg)  { return new PlDouble(Math.atan2(this.to_double(), arg.to_double())); }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject pre_decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        PlCORE.die("Can' + String.fromCharCode(39) + 't modify constant item in predecrement (--)");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject post_decr() {' + String.fromCharCode(10) + '        // $x--' + String.fromCharCode(10) + '        PlCORE.die("Can' + String.fromCharCode(39) + 't modify constant item in postdecrement (--)");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject pre_incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        PlCORE.die("Can' + String.fromCharCode(39) + 't modify constant item in preincrement (++)");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject post_incr() {' + String.fromCharCode(10) + '        // $x++' + String.fromCharCode(10) + '        PlCORE.die("Can' + String.fromCharCode(39) + 't modify constant item in postincrement (++)");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject lcfirst() {' + String.fromCharCode(10) + '        String s = this.toString();' + String.fromCharCode(10) + '        int len = s.length();' + String.fromCharCode(10) + '        if (len == 0) {' + String.fromCharCode(10) + '            return new PlString(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (len == 1) {' + String.fromCharCode(10) + '            return new PlString(s.toLowerCase());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString( s.substring(0,1).toLowerCase() + s.substring(1) );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ucfirst() {' + String.fromCharCode(10) + '        String s = this.toString();' + String.fromCharCode(10) + '        int len = s.length();' + String.fromCharCode(10) + '        if (len == 0) {' + String.fromCharCode(10) + '            return new PlString(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (len == 1) {' + String.fromCharCode(10) + '            return new PlString(s.toUpperCase());' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString( s.substring(0,1).toUpperCase() + s.substring(1) );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject quotemeta() {' + String.fromCharCode(10) + '        String s = this.toString();' + String.fromCharCode(10) + '        return new PlString(Matcher.quoteReplacement(s));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject substr(PlObject offset) {' + String.fromCharCode(10) + '        // substr EXPR,OFFSET' + String.fromCharCode(10) + '        String s = this.toString();' + String.fromCharCode(10) + '        int ofs = offset.to_int();' + String.fromCharCode(10) + '        if (ofs < 0) {' + String.fromCharCode(10) + '            ofs = s.length() + ofs;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (ofs < 0) {' + String.fromCharCode(10) + '            ofs = 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (ofs >= s.length()) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString(s.substring(ofs));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject substr(PlObject offset, PlObject length) {' + String.fromCharCode(10) + '        // substr EXPR,OFFSET,LENGTH' + String.fromCharCode(10) + '        String s = this.toString();' + String.fromCharCode(10) + '        int ofs = offset.to_int();' + String.fromCharCode(10) + '        int len = length.to_int();' + String.fromCharCode(10) + '        if (ofs < 0) {' + String.fromCharCode(10) + '            ofs = s.length() + ofs;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (ofs >= s.length()) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (len < 0) {' + String.fromCharCode(10) + '            len = s.length() + len;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            len = ofs + len;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + String.fromCharCode(10) + '        if (len >= s.length()) {' + String.fromCharCode(10) + '            len = s.length();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (len <= 0) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (ofs < 0) {' + String.fromCharCode(10) + '            ofs = 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString(s.substring(ofs, len));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject substr(PlObject offset, PlObject length, PlObject replacement) {' + String.fromCharCode(10) + '        // substr EXPR,OFFSET,LENGTH,REPLACEMENT' + String.fromCharCode(10) + '        PlCORE.die("TODO substr EXPR,OFFSET,LENGTH,REPLACEMENT");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar() {' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject str_cmp(PlObject b) {' + String.fromCharCode(10) + '        int c = this.toString().compareTo(b.toString());' + String.fromCharCode(10) + '        return new PlInt(c == 0 ? c : c < 0 ? -1 : 1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp(PlObject b) {' + String.fromCharCode(10) + '        return b.num_cmp2(this);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp2(PlObject b) {' + String.fromCharCode(10) + '        int c = new Integer(b.to_int()).compareTo(this.to_int());' + String.fromCharCode(10) + '        return new PlInt(c == 0 ? c : c < 0 ? -1 : 1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_perl;
		v_perl = (p5make_package('main')['v__']);
		var v_native;
		v_native = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('op'));
		var v_returns;
		v_returns = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('returns'));
		return (('    public PlObject ' + p5str(v_perl) + '(PlObject s) {' + String.fromCharCode(10) + '        return s.' + p5str(v_perl) + '2(this);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + p5str(( (p5str(v_returns) == 'PlDouble') ? ('    public PlObject ' + p5str(v_perl) + '2(PlObject s) {' + String.fromCharCode(10) + '        return new ' + p5str(v_returns) + '( s.to_double() ' + p5str(v_native) + ' this.to_double() );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : ('    public PlObject ' + p5str(v_perl) + '2(PlObject s) {' + String.fromCharCode(10) + '        return new ' + p5str(v_returns) + '( s.to_int() ' + p5str(v_native) + ' this.to_int() );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))))));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_number_binop], 1)]))])), 0) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_perl;
		v_perl = (p5make_package('main')['v__']);
		var v_native;
		v_native = (Hash_string_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('op'));
		var v_returns;
		v_returns = (Hash_string_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('returns'));
		return (('    public PlObject ' + p5str(v_perl) + '(PlObject b) {' + String.fromCharCode(10) + '        return new ' + p5str(v_returns) + '(this.toString().compareTo(b.toString()) ' + p5str(v_native) + ');' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_string_binop], 1)]))])), 0) + (('}' + String.fromCharCode(10) + 'class PlReference extends PlObject {' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("REF");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        return this.ref().toString() + "(0x" + Integer.toHexString(this.hashCode()) + ")";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlRegex extends PlReference {' + String.fromCharCode(10) + '    public Pattern p;' + String.fromCharCode(10) + '    // public Matcher m;' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("Regexp");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlRegex(String p, int flags) {' + String.fromCharCode(10) + '        this.p = Pattern.compile(p, flags);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlRegex(PlObject p, int flags) {' + String.fromCharCode(10) + '        this.p = Pattern.compile(p.toString(), flags);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        // TODO - show flags' + String.fromCharCode(10) + '        return this.p.toString();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlClosure extends PlReference implements Runnable {' + String.fromCharCode(10) + '    public PlObject[] env;       // new PlObject[]{ v1, v2, v3 }' + String.fromCharCode(10) + '    public PlObject prototype;    // ' + String.fromCharCode(39) + '$$$' + String.fromCharCode(39) + String.fromCharCode(10) + '    public static final PlString REF = new PlString("CODE");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlClosure(PlObject prototype, PlObject[] env) {' + String.fromCharCode(10) + '        this.prototype = prototype;' + String.fromCharCode(10) + '        this.env = env;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    // Note: apply() is inherited from PlObject' + String.fromCharCode(10) + '    public PlObject apply(int want, PlArray List__) {' + String.fromCharCode(10) + '        PlCORE.die("it looks like you have a closure without a block");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public void run() {' + String.fromCharCode(10) + '        // run as a thread' + String.fromCharCode(10) + '        this.apply(PlCx.VOID, new PlArray());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlLvalueRef extends PlReference {' + String.fromCharCode(10) + '    private PlObject o;' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("SCALAR");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        int id = System.identityHashCode(this.o);' + String.fromCharCode(10) + '        return this.ref().toString() + "(0x" + Integer.toHexString(id) + ")";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlLvalueRef(PlLvalue o) {' + String.fromCharCode(10) + '        this.o = o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlLvalueRef(PlObject o) {' + String.fromCharCode(10) + '        this.o = o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar_deref_set(PlObject v) {' + String.fromCharCode(10) + '        return this.o.set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_scalarref() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get() {' + String.fromCharCode(10) + '        return this.o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlArrayRef extends PlArray {' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("ARRAY");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        int id = System.identityHashCode(this.a);' + String.fromCharCode(10) + '        return this.ref().toString() + "(0x" + Integer.toHexString(id) + ")";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArrayRef() {' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        this.a = new ArrayList<PlObject>();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArrayRef(PlArray o) {' + String.fromCharCode(10) + '        this.a = o.a;' + String.fromCharCode(10) + '        this.each_iterator = o.each_iterator;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlArray o) {' + String.fromCharCode(10) + '        this.a = o.a;' + String.fromCharCode(10) + '        this.each_iterator = o.each_iterator;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get() {' + String.fromCharCode(10) + '        PlArray o = new PlArray();' + String.fromCharCode(10) + '        o.a = this.a;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject array_deref() {' + String.fromCharCode(10) + '        PlArray o = new PlArray();' + String.fromCharCode(10) + '        o.a = this.a;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject array_deref_set(PlObject v) {' + String.fromCharCode(10) + '        super.set(v);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_array() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_arrayref() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar() {' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlHashRef extends PlHash {' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("HASH");' + String.fromCharCode(10) + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        int id = System.identityHashCode(this.h);' + String.fromCharCode(10) + '        return this.ref().toString() + "(0x" + Integer.toHexString(id) + ")";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlHashRef() {' + String.fromCharCode(10) + '        this.h = new HashMap<String, PlObject>();' + String.fromCharCode(10) + '        this.each_iterator = null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlHashRef(PlHash o) {' + String.fromCharCode(10) + '        this.h = o.h;' + String.fromCharCode(10) + '        this.each_iterator = o.each_iterator;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlHash o) {' + String.fromCharCode(10) + '        this.h = o.h;' + String.fromCharCode(10) + '        this.each_iterator = o.each_iterator;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get() {' + String.fromCharCode(10) + '        PlHash o = new PlHash();' + String.fromCharCode(10) + '        o.h = this.h;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hash_deref() {' + String.fromCharCode(10) + '        PlHash o = new PlHash();' + String.fromCharCode(10) + '        o.h = this.h;' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hash_deref_set(PlObject v) {' + String.fromCharCode(10) + '        super.set(v);' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_hash() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_hashref() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar() {' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlLvalue extends PlObject {' + String.fromCharCode(10) + '    private PlObject o;' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Note: several versions of PlLvalue()' + String.fromCharCode(10) + '    public PlLvalue() {' + String.fromCharCode(10) + '        this.o = PlCx.UNDEF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlLvalue(PlObject o) {' + String.fromCharCode(10) + '        this.o = o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlLvalue(PlLvalue o) {' + String.fromCharCode(10) + '        this.o = o.get();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlLvalue(PlArray o) {' + String.fromCharCode(10) + '        // $a = @x' + String.fromCharCode(10) + '        this.o = o.scalar();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlLvalue(PlHash o) {' + String.fromCharCode(10) + '        // $a = %x' + String.fromCharCode(10) + '        this.o = o.scalar();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject get() {' + String.fromCharCode(10) + '        return this.o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get_scalarref() {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalueRef ar = new PlLvalueRef(new PlLvalue());' + String.fromCharCode(10) + '            this.o = ar;' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_scalarref()) {' + String.fromCharCode(10) + '            return this.o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        // Modification of a read-only value attempted' + String.fromCharCode(10) + '        return this.o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get_arrayref() {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            PlArrayRef ar = new PlArrayRef();' + String.fromCharCode(10) + '            this.o = ar;' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_arrayref()) {' + String.fromCharCode(10) + '            return this.o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject get_hashref() {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            PlHashRef hr = new PlHashRef();' + String.fromCharCode(10) + '            this.o = hr;' + String.fromCharCode(10) + '            return this.o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_hashref()) {' + String.fromCharCode(10) + '            return this.o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget(PlObject i) {' + String.fromCharCode(10) + '        return this.o.aget(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget(int i) {' + String.fromCharCode(10) + '        return this.o.aget(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject aget_scalarref(PlObject i) {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlArrayRef();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.o.aget_scalarref(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_arrayref(PlObject i) {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlArrayRef();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.o.aget_arrayref(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_hashref(PlObject i) {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlArrayRef();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.o.aget_hashref(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject aset(int i, PlObject v) {' + String.fromCharCode(10) + '        return this.o.aset(i, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(PlObject i, PlObject v) {' + String.fromCharCode(10) + '        return this.o.aset(i, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget(PlObject i) {' + String.fromCharCode(10) + '        return this.o.hget(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget(String i) {' + String.fromCharCode(10) + '        return this.o.hget(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_scalarref(PlObject i) {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlHashRef();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.o.hget_scalarref(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_arrayref(PlObject i) {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlHashRef();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.o.hget_arrayref(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_hashref(PlObject i) {' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlHashRef();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.o.hget_hashref(i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hset(PlObject s, PlObject v) {' + String.fromCharCode(10) + '        return this.o.hset(s, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(String s, PlObject v) {' + String.fromCharCode(10) + '        return this.o.hset(s, v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject scalar_deref() {' + String.fromCharCode(10) + '        return this.get_scalarref().get();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar_deref_set(PlObject v) {' + String.fromCharCode(10) + '        return this.get_scalarref().scalar_deref_set(v);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject array_deref() {' + String.fromCharCode(10) + '        // @$x doesn' + String.fromCharCode(39) + 't autovivify' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            return new PlArray();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_arrayref()) {' + String.fromCharCode(10) + '            return this.o.get();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject array_deref_set(PlObject v) {' + String.fromCharCode(10) + '        // @$x = ...' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlArrayRef();' + String.fromCharCode(10) + '            return this.o.array_deref_set(v);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_arrayref()) {' + String.fromCharCode(10) + '            return this.o.array_deref_set(v);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hash_deref() {' + String.fromCharCode(10) + '        // %$x doesn' + String.fromCharCode(39) + 't autovivify' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            return new PlHash();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_hashref()) {' + String.fromCharCode(10) + '            return this.o.get();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hash_deref_set(PlObject v) {' + String.fromCharCode(10) + '        // %$x = ...' + String.fromCharCode(10) + '        if (this.o.is_undef()) {' + String.fromCharCode(10) + '            this.o = new PlHashRef();' + String.fromCharCode(10) + '            return this.o.hash_deref_set(v);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (this.o.is_hashref()) {' + String.fromCharCode(10) + '            return this.o.hash_deref_set(v);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject apply(int want, PlArray List__) {' + String.fromCharCode(10) + '        return this.o.apply(want, List__);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Note: several versions of set()' + String.fromCharCode(10) + '    public PlObject set(PlObject o) {' + String.fromCharCode(10) + '        this.o = o;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlLvalue o) {' + String.fromCharCode(10) + '        this.o = o.get();' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlArray o) {' + String.fromCharCode(10) + '        // $a = @x' + String.fromCharCode(10) + '        this.o = o.scalar();' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlHash o) {' + String.fromCharCode(10) + '        // $a = %x' + String.fromCharCode(10) + '        this.o = o.scalar();' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_native;
		v_native = (p5make_package('main')['v__']);
		var v_perl;
		v_perl = (Hash_native_to_perl.p5hget(p5str(v_native)));
		return (( (p5bool(v_native) && p5bool(v_perl)) ? ('    public PlObject set(' + p5str(v_native) + ' s) {' + String.fromCharCode(10) + '        this.o = new ' + p5str(v_perl) + '(s);' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_native_to_perl], 1)]))])), 0) + (('    public String toString() {' + String.fromCharCode(10) + '        return this.o.toString();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        return this.o.to_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return this.o.to_double();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return this.o.to_bool();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp(PlObject b) {' + String.fromCharCode(10) + '        return this.o.num_cmp(b);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp2(PlObject b) {' + String.fromCharCode(10) + '        return b.num_cmp(this.o);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_perl;
		v_perl = (p5make_package('main')['v__']);
		var v_native;
		v_native = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('op'));
		return (('    public PlObject ' + p5str(v_perl) + '(PlObject s) {' + String.fromCharCode(10) + '        return this.o.' + p5str(v_perl) + '(s);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ' + p5str(v_perl) + '2(PlObject s) {' + String.fromCharCode(10) + '        return s.' + p5str(v_perl) + '(this.o);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_number_binop], 1)]))])), 0) + (('    public boolean is_int() {' + String.fromCharCode(10) + '        return this.o.is_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_num() {' + String.fromCharCode(10) + '        return this.o.is_num();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_string() {' + String.fromCharCode(10) + '        return this.o.is_string();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_bool() {' + String.fromCharCode(10) + '        return this.o.is_bool();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_undef() {' + String.fromCharCode(10) + '        return this.o.is_undef();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_lvalue() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject pre_decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        this.o = this.o._decr();' + String.fromCharCode(10) + '        return this.o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject post_decr() {' + String.fromCharCode(10) + '        // $x--' + String.fromCharCode(10) + '        PlObject res = this.o;' + String.fromCharCode(10) + '        this.o = this.o._decr();' + String.fromCharCode(10) + '        return res;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject pre_incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        this.o = this.o._incr();' + String.fromCharCode(10) + '        return this.o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject post_incr() {' + String.fromCharCode(10) + '        // $x++' + String.fromCharCode(10) + '        PlObject res = this.o;' + String.fromCharCode(10) + '        this.o = this.o._incr();' + String.fromCharCode(10) + '        return res;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject neg() {' + String.fromCharCode(10) + '        return this.o.neg();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject abs() {' + String.fromCharCode(10) + '        return this.o.abs();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject scalar() {' + String.fromCharCode(10) + '        return this.o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return this.o.ref();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_class;
		v_class = (p5make_package('main')['v__']);
		var v_java_class_name;
		v_java_class_name = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('java_type'));
		var v_perl_to_java;
		v_perl_to_java = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('perl_to_java'));
		return (( p5bool((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('import')) ? ('    public ' + p5str(v_java_class_name) + ' ' + p5str(v_perl_to_java) + '() {' + String.fromCharCode(10) + '        return this.o.' + p5str(v_perl_to_java) + '();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].values([Hash_java_classes], 1)]))])), 0) + (('}' + String.fromCharCode(10) + 'class PlArray extends PlObject {' + String.fromCharCode(10) + '    public ArrayList<PlObject> a;' + String.fromCharCode(10) + '    public int each_iterator;' + String.fromCharCode(10) + '    public PlArray( ArrayList<PlObject> a ) {' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        this.a = a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray() {' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        this.a = new ArrayList<PlObject>();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray(PlObject... args) {' + String.fromCharCode(10) + '        ArrayList<PlObject> aa = new ArrayList<PlObject>();' + String.fromCharCode(10) + '        for (PlObject s : args) {' + String.fromCharCode(10) + '            if (s.is_hash()) {' + String.fromCharCode(10) + '                // @x = %x;' + String.fromCharCode(10) + '                s = s.to_array();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (s.is_array()) {' + String.fromCharCode(10) + '                // @x = ( @x, @y );' + String.fromCharCode(10) + '                for (int i = 0; i < s.to_int(); i++) {' + String.fromCharCode(10) + '                    aa.add(s.aget(i));' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                aa.add(s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        this.a = aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlObject s) {' + String.fromCharCode(10) + '        this.a.clear();' + String.fromCharCode(10) + '        if (s.is_hash()) {' + String.fromCharCode(10) + '            // @x = %x;' + String.fromCharCode(10) + '            s = s.to_array();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s.is_array()) {' + String.fromCharCode(10) + '            // @x = ( @x, @y );' + String.fromCharCode(10) + '            for (int i = 0; i < s.to_int(); i++) {' + String.fromCharCode(10) + '                this.a.add(s.aget(i));' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this.a.add(s);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(byte[] bs) {' + String.fromCharCode(10) + '        this.a.clear();' + String.fromCharCode(10) + '        // @x = byte[] native;' + String.fromCharCode(10) + '        for(byte b : bs){' + String.fromCharCode(10) + '            int i = b;' + String.fromCharCode(10) + '            this.a.add(new PlInt(i));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray(byte[] bs) {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        aa.set(bs);' + String.fromCharCode(10) + '        this.each_iterator = aa.each_iterator;' + String.fromCharCode(10) + '        this.a = aa.a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(int[] ints) {' + String.fromCharCode(10) + '        this.a.clear();' + String.fromCharCode(10) + '        // @x = int[] native;' + String.fromCharCode(10) + '        for(int i : ints){' + String.fromCharCode(10) + '            this.a.add(new PlInt(i));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray(int[] ints) {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        aa.set(ints);' + String.fromCharCode(10) + '        this.each_iterator = aa.each_iterator;' + String.fromCharCode(10) + '        this.a = aa.a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(String[] strings) {' + String.fromCharCode(10) + '        this.a.clear();' + String.fromCharCode(10) + '        for (String s : strings) {' + String.fromCharCode(10) + '            this.a.add(new PlString(s));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray(String[] strings) {' + String.fromCharCode(10) + '        PlArray arr = new PlArray();' + String.fromCharCode(10) + '        arr.set(strings);' + String.fromCharCode(10) + '        this.each_iterator = arr.each_iterator;' + String.fromCharCode(10) + '        this.a = arr.a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject set(Map<String, String> env) {' + String.fromCharCode(10) + '        this.a.clear();' + String.fromCharCode(10) + '        for (String envName : env.keySet()) {' + String.fromCharCode(10) + '            this.a.add(new PlString(envName));' + String.fromCharCode(10) + '            this.a.add(new PlString(env.get(envName)));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray(Map<String, String> strings) {' + String.fromCharCode(10) + '        PlArray arr = new PlArray();' + String.fromCharCode(10) + '        arr.set(strings);' + String.fromCharCode(10) + '        this.each_iterator = arr.each_iterator;' + String.fromCharCode(10) + '        this.a = arr.a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // TODO - Double[]' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_class;
		v_class = (p5make_package('main')['v__']);
		var v_java_class_name;
		v_java_class_name = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('java_type'));
		var v_perl_to_java;
		v_perl_to_java = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('perl_to_java'));
		var v_perl_package;
		v_perl_package = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('perl_package'));
		var v_java_native_to_perl;
		v_java_native_to_perl = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('java_native_to_perl'));
		return (( p5bool((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('import')) ? ('    public PlObject set(' + p5str(v_java_class_name) + '[] stuffs) {' + String.fromCharCode(10) + '        this.a.clear();' + String.fromCharCode(10) + '        // @x = ' + p5str(v_java_class_name) + '[] native;' + String.fromCharCode(10) + '        for(' + p5str(v_java_class_name) + ' i : stuffs){' + String.fromCharCode(10) + '            this.a.add(new ' + p5str(v_java_native_to_perl) + '(i));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = 0;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlArray(' + p5str(v_java_class_name) + '[] stuffs) {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        aa.set(stuffs);' + String.fromCharCode(10) + '        this.each_iterator = aa.each_iterator;' + String.fromCharCode(10) + '        this.a = aa.a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].values([Hash_java_classes], 1)]))])), 0) + (('    public PlObject aget(PlObject i) {' + String.fromCharCode(10) + '        int pos  = i.to_int();' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = this.a.size() + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (pos < 0 || pos >= this.a.size()) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.a.get(pos);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget(int i) {' + String.fromCharCode(10) + '        int pos  = i;' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = this.a.size() + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (pos < 0 || pos >= this.a.size()) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.a.get(pos);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_lvalue(int pos) {' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = size + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (size <= pos) {' + String.fromCharCode(10) + '            while (size < pos) {' + String.fromCharCode(10) + '                this.a.add( PlCx.UNDEF );' + String.fromCharCode(10) + '                size++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            PlLvalue a = new PlLvalue();' + String.fromCharCode(10) + '            this.a.add(a);' + String.fromCharCode(10) + '            return a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlObject o = this.a.get(pos);' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            PlLvalue a = new PlLvalue();' + String.fromCharCode(10) + '            this.a.set(pos, a);' + String.fromCharCode(10) + '            return a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_lvalue()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlLvalue a = new PlLvalue(o);' + String.fromCharCode(10) + '        this.a.set(pos, a);' + String.fromCharCode(10) + '        return a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_lvalue(PlObject i) {' + String.fromCharCode(10) + '        return this.aget_lvalue(i.to_int());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_lvalue_local(PlObject i) {' + String.fromCharCode(10) + '        return this.aget_lvalue_local(i.to_int());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_lvalue_local(int i) {' + String.fromCharCode(10) + '        return PerlOp.push_local(this, i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject get_scalar(PlObject i) {' + String.fromCharCode(10) + '        // $$x' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalue a = new PlLvalue();' + String.fromCharCode(10) + '            this.aset(i, new PlLvalueRef(a));' + String.fromCharCode(10) + '            return a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_scalarref()) {' + String.fromCharCode(10) + '            return o.get();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        // Modification of a read-only value attempted' + String.fromCharCode(10) + '        // return PlCORE.die("Not an SCALAR reference");' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_scalarref(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalueRef ar = new PlLvalueRef(new PlLvalue());' + String.fromCharCode(10) + '            this.aset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_scalarref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_scalarref(int i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalueRef ar = new PlLvalueRef(new PlLvalue());' + String.fromCharCode(10) + '            this.aset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_scalarref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a SCALAR reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject aget_arrayref(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlArrayRef ar = new PlArrayRef();' + String.fromCharCode(10) + '            this.aset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_arrayref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_arrayref(int i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlArrayRef ar = new PlArrayRef();' + String.fromCharCode(10) + '            this.aset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_arrayref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject aget_hashref(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlHashRef hr = new PlHashRef();' + String.fromCharCode(10) + '            this.aset(i, hr);' + String.fromCharCode(10) + '            return hr;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_hashref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aget_hashref(int i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlHashRef hr = new PlHashRef();' + String.fromCharCode(10) + '            this.aset(i, hr);' + String.fromCharCode(10) + '            return hr;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_hashref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject get_hash(int i) {' + String.fromCharCode(10) + '        PlObject o = this.aget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlHashRef hr = new PlHashRef();' + String.fromCharCode(10) + '            this.aset(i, hr);' + String.fromCharCode(10) + '            return hr;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_hashref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Note: multiple versions of set()' + String.fromCharCode(10) + '    public PlObject aset(PlObject i, PlObject v) {' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        int pos  = i.to_int();' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = size + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (size <= pos) {' + String.fromCharCode(10) + '            while (size < pos) {' + String.fromCharCode(10) + '                this.a.add( PlCx.UNDEF );' + String.fromCharCode(10) + '                size++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            this.a.add(v.scalar());' + String.fromCharCode(10) + '            return v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.a.set(pos, v.scalar());' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(int i, PlObject v) {' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        int pos  = i;' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = size + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (size <= pos) {' + String.fromCharCode(10) + '            while (size < pos) {' + String.fromCharCode(10) + '                this.a.add( PlCx.UNDEF );' + String.fromCharCode(10) + '                size++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            this.a.add(v.scalar());' + String.fromCharCode(10) + '            return v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.a.set(pos, v.scalar());' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(PlObject i, PlLvalue v) {' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        int pos  = i.to_int();' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = size + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (size <= pos) {' + String.fromCharCode(10) + '            while (size < pos) {' + String.fromCharCode(10) + '                this.a.add( PlCx.UNDEF );' + String.fromCharCode(10) + '                size++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            this.a.add(v.scalar());' + String.fromCharCode(10) + '            return v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.a.set(pos, v.get());' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(int i, PlLvalue v) {' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        int pos  = i;' + String.fromCharCode(10) + '        if (pos < 0) {' + String.fromCharCode(10) + '            pos = size + pos;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (size <= pos) {' + String.fromCharCode(10) + '            while (size < pos) {' + String.fromCharCode(10) + '                this.a.add( PlCx.UNDEF );' + String.fromCharCode(10) + '                size++;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            this.a.add(v.scalar());' + String.fromCharCode(10) + '            return v;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.a.set(pos, v.get());' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_native;
		v_native = (p5make_package('main')['v__']);
		var v_perl;
		v_perl = (Hash_native_to_perl.p5hget(p5str(v_native)));
		return (( (p5bool(v_native) && p5bool(v_perl)) ? ('    public PlObject aset(PlObject i, ' + p5str(v_native) + ' s) {' + String.fromCharCode(10) + '        return this.aset(i, new ' + p5str(v_perl) + '(s));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject aset(int i, ' + p5str(v_native) + ' s) {' + String.fromCharCode(10) + '        return this.aset(i, new ' + p5str(v_perl) + '(s));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject push(' + p5str(v_native) + ' s) {' + String.fromCharCode(10) + '        this.a.add(new ' + p5str(v_perl) + '(s));' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_native_to_perl], 1)]))])), 0) + ((String.fromCharCode(10) + '    // Note: multiple versions of push()' + String.fromCharCode(10) + '    public PlObject push(PlObject v) {' + String.fromCharCode(10) + '        if (v.is_array()) {' + String.fromCharCode(10) + '            return this.push( (PlArray)v );' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.a.add(v.scalar());' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject push(PlLvalue v) {' + String.fromCharCode(10) + '        this.a.add(v.get());' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject push(PlArray args) {' + String.fromCharCode(10) + '        for (int i = 0; i < args.to_int(); i++) {' + String.fromCharCode(10) + '            PlObject s = args.aget(i);' + String.fromCharCode(10) + '            if (s.is_hash()) {' + String.fromCharCode(10) + '                // @x = %x;' + String.fromCharCode(10) + '                s = s.to_array();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (s.is_array()) {' + String.fromCharCode(10) + '                this.push(s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                this.a.add(s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Note: multiple versions of unshift()' + String.fromCharCode(10) + '    public PlObject unshift(PlObject v) {' + String.fromCharCode(10) + '        if (v.is_array()) {' + String.fromCharCode(10) + '            return this.unshift( (PlArray)v );' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.a.add(0, v.scalar());' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject unshift(PlLvalue v) {' + String.fromCharCode(10) + '        this.a.add(0, v.get());' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject unshift(PlArray args) {' + String.fromCharCode(10) + '        for (int i = args.to_int() - 1; i >= 0; i--) {' + String.fromCharCode(10) + '            PlObject s = args.aget(i);' + String.fromCharCode(10) + '            if (s.is_hash()) {' + String.fromCharCode(10) + '                // @x = %x;' + String.fromCharCode(10) + '                s = s.to_array();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (s.is_array()) {' + String.fromCharCode(10) + '                this.unshift(s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                this.a.add(0, s);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject pop() {' + String.fromCharCode(10) + '        int size = this.a.size() - 1;' + String.fromCharCode(10) + '        if (size >= 0) {' + String.fromCharCode(10) + '            return this.a.remove(size);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject shift() {' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        if (size > 0) {' + String.fromCharCode(10) + '            return this.a.remove(0);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject exists(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("TODO - array exists");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject delete(PlObject i) {' + String.fromCharCode(10) + '        PlCORE.die("TODO - array delete");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject values() {' + String.fromCharCode(10) + '        // return a copy' + String.fromCharCode(10) + '        return new PlArray(this);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject keys() {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        for (int i = 0; i < size; i++) {' + String.fromCharCode(10) + '            aa.push(new PlInt(i));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject each() {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        if (this.each_iterator < size) {' + String.fromCharCode(10) + '            aa.push(new PlInt(this.each_iterator));' + String.fromCharCode(10) + '            aa.push(this.aget(this.each_iterator));' + String.fromCharCode(10) + '            this.each_iterator++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // return empty list' + String.fromCharCode(10) + '            this.each_iterator = 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        StringBuilder sb = new StringBuilder();' + String.fromCharCode(10) + '        int size = this.a.size();' + String.fromCharCode(10) + '        for (int i = 0; i < size; i++) {' + String.fromCharCode(10) + '            String item = this.a.get(i).toString();' + String.fromCharCode(10) + '            sb.append(item);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return sb.toString();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        return this.a.size();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject length_of_array() {' + String.fromCharCode(10) + '        return new PlInt(this.a.size());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject end_of_array_index() {' + String.fromCharCode(10) + '        return new PlInt(this.a.size() - 1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return 0.0 + this.to_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return (this.a.size() > 0);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_int() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_num() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_string() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_bool() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_array() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar() {' + String.fromCharCode(10) + '        return this.length_of_array();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlHash extends PlObject {' + String.fromCharCode(10) + '    public HashMap<String, PlObject> h;' + String.fromCharCode(10) + '    public Iterator<Map.Entry<String, PlObject>> each_iterator;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlHash() {' + String.fromCharCode(10) + '        this.each_iterator = null;' + String.fromCharCode(10) + '        this.h = new HashMap<String, PlObject>();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlHash(PlObject... args) {' + String.fromCharCode(10) + '        PlHash hh = new PlHash();' + String.fromCharCode(10) + '        int args_size = args.length;' + String.fromCharCode(10) + '        for (int i = 0; i < args_size; i++) {' + String.fromCharCode(10) + '            PlObject s = args[i];' + String.fromCharCode(10) + '            if (s.is_hash()) {' + String.fromCharCode(10) + '                // @x = %x;' + String.fromCharCode(10) + '                s = s.to_array();' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (s.is_array()) {' + String.fromCharCode(10) + '                // %x = ( @x, @y );' + String.fromCharCode(10) + '                int array_size = s.to_int();' + String.fromCharCode(10) + '                for (int j = 0; j < array_size; j++) {' + String.fromCharCode(10) + '                    PlObject key = s.aget(j);' + String.fromCharCode(10) + '                    j++;' + String.fromCharCode(10) + '                    PlObject value;' + String.fromCharCode(10) + '                    if ( j >= array_size ) {' + String.fromCharCode(10) + '                        // TODO - emit warning about odd number of arguments' + String.fromCharCode(10) + '                        value = PlCx.UNDEF;' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    else {' + String.fromCharCode(10) + '                        value = s.aget(j);' + String.fromCharCode(10) + '                    }' + String.fromCharCode(10) + '                    hh.hset(key, value);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            else {' + String.fromCharCode(10) + '                i++;' + String.fromCharCode(10) + '                PlObject value;' + String.fromCharCode(10) + '                if ( i >= args_size ) {' + String.fromCharCode(10) + '                    // TODO - emit warning about odd number of arguments' + String.fromCharCode(10) + '                    value = PlCx.UNDEF;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    value = args[i];' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                hh.hset(s, value);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = null;' + String.fromCharCode(10) + '        this.h = hh.to_HashMap();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    private HashMap<String, PlObject> to_HashMap() {' + String.fromCharCode(10) + '        return this.h;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject set(PlObject s) {' + String.fromCharCode(10) + '        this.h.clear();' + String.fromCharCode(10) + '        if (s.is_hash()) {' + String.fromCharCode(10) + '            // @x = %x;' + String.fromCharCode(10) + '            s = s.to_array();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (s.is_array()) {' + String.fromCharCode(10) + '            // %x = ( @x, @y );' + String.fromCharCode(10) + '            int array_size = s.to_int();' + String.fromCharCode(10) + '            for (int j = 0; j < array_size; j++) {' + String.fromCharCode(10) + '                PlObject key = s.aget(j);' + String.fromCharCode(10) + '                j++;' + String.fromCharCode(10) + '                PlObject value;' + String.fromCharCode(10) + '                if ( j >= array_size ) {' + String.fromCharCode(10) + '                    // TODO - emit warning about odd number of arguments' + String.fromCharCode(10) + '                    value = PlCx.UNDEF;' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                else {' + String.fromCharCode(10) + '                    value = s.aget(j);' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                this.hset(key, value);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            // TODO - emit warning about odd number of arguments' + String.fromCharCode(10) + '            this.hset(s, PlCx.UNDEF);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        this.each_iterator = null;' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject to_array() {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        for (Map.Entry<String, PlObject> entry : this.h.entrySet()) {' + String.fromCharCode(10) + '            String key = entry.getKey();' + String.fromCharCode(10) + '            PlObject value = entry.getValue();' + String.fromCharCode(10) + '            aa.push(new PlString(key));' + String.fromCharCode(10) + '            aa.push(value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.h.get(i.toString());' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget(String i) {' + String.fromCharCode(10) + '        PlObject o = this.h.get(i);' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget(int want, PlArray a) {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + String.fromCharCode(10) + '        for (int i = 0; i < a.to_int(); i++) {' + String.fromCharCode(10) + '            PlObject r = this.hget(a.aget(i));' + String.fromCharCode(10) + '            aa.push(r);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (want == PlCx.LIST) {' + String.fromCharCode(10) + '            return aa;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa.pop();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_lvalue(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.h.get(i.toString());' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            PlLvalue a = new PlLvalue();' + String.fromCharCode(10) + '            this.h.put(i.toString(), a);' + String.fromCharCode(10) + '            return a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_lvalue()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlLvalue a = new PlLvalue(o);' + String.fromCharCode(10) + '        this.h.put(i.toString(), a);' + String.fromCharCode(10) + '        return a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue(String i) {' + String.fromCharCode(10) + '        PlObject o = this.h.get(i);' + String.fromCharCode(10) + '        if (o == null) {' + String.fromCharCode(10) + '            PlLvalue a = new PlLvalue();' + String.fromCharCode(10) + '            this.h.put(i, a);' + String.fromCharCode(10) + '            return a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_lvalue()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlLvalue a = new PlLvalue(o);' + String.fromCharCode(10) + '        this.h.put(i, a);' + String.fromCharCode(10) + '        return a;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue_local(PlObject i) {' + String.fromCharCode(10) + '        return this.hget_lvalue_local(i.toString());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_lvalue_local(String i) {' + String.fromCharCode(10) + '        return PerlOp.push_local(this, i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject get_scalar(PlObject i) {' + String.fromCharCode(10) + '        // $$x' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalue a = new PlLvalue();' + String.fromCharCode(10) + '            this.hset(i, new PlLvalueRef(a));' + String.fromCharCode(10) + '            return a;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_scalarref()) {' + String.fromCharCode(10) + '            return o.get();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        // Modification of a read-only value attempted' + String.fromCharCode(10) + '        // return PlCORE.die("Not an SCALAR reference");' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_scalarref(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalueRef ar = new PlLvalueRef(new PlLvalue());' + String.fromCharCode(10) + '            this.hset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_scalarref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        // Modification of a read-only value attempted' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_scalarref(String i) {' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlLvalueRef ar = new PlLvalueRef(new PlLvalue());' + String.fromCharCode(10) + '            this.hset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_scalarref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        // Modification of a read-only value attempted' + String.fromCharCode(10) + '        return o;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_arrayref(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlArrayRef ar = new PlArrayRef();' + String.fromCharCode(10) + '            this.hset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_arrayref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_arrayref(String i) {' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlArrayRef ar = new PlArrayRef();' + String.fromCharCode(10) + '            this.hset(i, ar);' + String.fromCharCode(10) + '            return ar;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_arrayref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not an ARRAY reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject hget_hashref(PlObject i) {' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlHashRef hr = new PlHashRef();' + String.fromCharCode(10) + '            this.hset(i, hr);' + String.fromCharCode(10) + '            return hr;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_hashref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hget_hashref(String i) {' + String.fromCharCode(10) + '        PlObject o = this.hget(i);' + String.fromCharCode(10) + '        if (o.is_undef()) {' + String.fromCharCode(10) + '            PlHashRef hr = new PlHashRef();' + String.fromCharCode(10) + '            this.hset(i, hr);' + String.fromCharCode(10) + '            return hr;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else if (o.is_hashref()) {' + String.fromCharCode(10) + '            return o;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCORE.die("Not a HASH reference");' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // Note: multiple versions of set()' + String.fromCharCode(10) + '    public PlObject hset(PlObject s, PlObject v) {' + String.fromCharCode(10) + '        String key = s.toString();' + String.fromCharCode(10) + '        PlObject value = v.scalar();' + String.fromCharCode(10) + '        PlObject o = this.h.get(key);' + String.fromCharCode(10) + '        if (o != null && o.is_lvalue()) {' + String.fromCharCode(10) + '            o.set(value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this.h.put(key, value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(String key, PlObject v) {' + String.fromCharCode(10) + '        PlObject value = v.scalar();' + String.fromCharCode(10) + '        PlObject o = this.h.get(key);' + String.fromCharCode(10) + '        if (o != null && o.is_lvalue()) {' + String.fromCharCode(10) + '            o.set(value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            this.h.put(key, value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return v;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(PlObject s, PlLvalue v) {' + String.fromCharCode(10) + '        return this.hset(s, v.get());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(String s, PlLvalue v) {' + String.fromCharCode(10) + '        return this.hset(s, v.get());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(int want, PlArray s, PlArray v) {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + String.fromCharCode(10) + '        for (int i = 0; i < v.to_int(); i++){' + String.fromCharCode(10) + '            aa.push(this.hset(v.aget(i), s.aget(i)));' + String.fromCharCode(10) + '        };' + String.fromCharCode(10) + '        if (want == PlCx.LIST) {' + String.fromCharCode(10) + '            return aa;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa.pop();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlObject exists(PlObject i) {' + String.fromCharCode(10) + '        return this.h.containsKey(i) ? PlCx.TRUE : PlCx.FALSE;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject delete(PlObject i) {' + String.fromCharCode(10) + '        PlObject r = this.h.remove(i.toString());' + String.fromCharCode(10) + '        if (r == null) {' + String.fromCharCode(10) + '            return PlCx.UNDEF;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return r;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject delete(int want, PlArray a) {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + String.fromCharCode(10) + '        for (int i = 0; i < a.to_int(); i++) {' + String.fromCharCode(10) + '            PlObject r = this.delete(a.aget(i));' + String.fromCharCode(10) + '            aa.push(r);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if (want == PlCx.LIST) {' + String.fromCharCode(10) + '            return aa;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa.pop();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject values() {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        for (Map.Entry<String, PlObject> entry : this.h.entrySet()) {' + String.fromCharCode(10) + '            PlObject value = entry.getValue();' + String.fromCharCode(10) + '            aa.push(value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject keys() {' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        for (Map.Entry<String, PlObject> entry : this.h.entrySet()) {' + String.fromCharCode(10) + '            String key = entry.getKey();' + String.fromCharCode(10) + '            aa.push(new PlString(key));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject each() {' + String.fromCharCode(10) + '        if (this.each_iterator == null) {' + String.fromCharCode(10) + '            this.each_iterator = this.h.entrySet().iterator();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        PlArray aa = new PlArray();' + String.fromCharCode(10) + '        if (this.each_iterator.hasNext()) {' + String.fromCharCode(10) + '            Map.Entry<String, PlObject> entry = this.each_iterator.next();' + String.fromCharCode(10) + '            String key = entry.getKey();' + String.fromCharCode(10) + '            aa.push(new PlString(key));' + String.fromCharCode(10) + '            PlObject value = entry.getValue();' + String.fromCharCode(10) + '            aa.push(value);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '             // return empty list' + String.fromCharCode(10) + '             this.each_iterator = null;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return aa;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_native;
		v_native = (p5make_package('main')['v__']);
		var v_perl;
		v_perl = (Hash_native_to_perl.p5hget(p5str(v_native)));
		return (( (p5bool(v_native) && p5bool(v_perl)) ? ('    public PlObject hset(PlObject s, ' + p5str(v_native) + ' v) {' + String.fromCharCode(10) + '        return this.hset(s, new ' + p5str(v_perl) + '(v));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject hset(String s, ' + p5str(v_native) + ' v) {' + String.fromCharCode(10) + '        return this.hset(s, new ' + p5str(v_perl) + '(v));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_native_to_perl], 1)]))])), 0) + ((String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        // TODO' + String.fromCharCode(10) + '        return "" + this.hashCode();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        // TODO' + String.fromCharCode(10) + '        return this.hashCode();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return 0.0 + this.to_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_int() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_num() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_string() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_bool() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_hash() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject scalar() {' + String.fromCharCode(10) + '        return new PlString(this.toString());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlUndef extends PlObject {' + String.fromCharCode(10) + '    public PlUndef() {' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject apply(int want, PlArray List__) {' + String.fromCharCode(10) + '        // $a->()' + String.fromCharCode(10) + '        PlCORE.die("Can' + String.fromCharCode(39) + 't use an undefined value as a subroutine reference");' + String.fromCharCode(10) + '        return this;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject length() {' + String.fromCharCode(10) + '        return PlCx.UNDEF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        return 0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return 0.0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        return "";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_bool() {' + String.fromCharCode(10) + '        return false;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_undef() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlBool extends PlObject {' + String.fromCharCode(10) + '    private boolean i;' + String.fromCharCode(10) + '    public PlBool(boolean i) {' + String.fromCharCode(10) + '        this.i = i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        if (this.i) {' + String.fromCharCode(10) + '            return 1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return 0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        if (this.i) {' + String.fromCharCode(10) + '            return 1.0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return 0.0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        if (this.i) {' + String.fromCharCode(10) + '            return "1";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return "";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return this.i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_bool() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        if (i) {' + String.fromCharCode(10) + '            return PlCx.INT0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return PlCx.MIN1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        if (i) {' + String.fromCharCode(10) + '            return new PlInt(2);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return PlCx.INT1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject neg() {' + String.fromCharCode(10) + '        if (i) {' + String.fromCharCode(10) + '            return PlCx.MIN1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        else {' + String.fromCharCode(10) + '            return PlCx.INT0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlInt extends PlObject {' + String.fromCharCode(10) + '    private int i;' + String.fromCharCode(10) + '    public PlInt(int i) {' + String.fromCharCode(10) + '        this.i = i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        return this.i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return (double)(this.i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        return "" + this.i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return this.i != 0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_int() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        return new PlInt(i-1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        return new PlInt(i+1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject neg() {' + String.fromCharCode(10) + '        return new PlInt(-i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlDouble extends PlObject {' + String.fromCharCode(10) + '    private double i;' + String.fromCharCode(10) + '    public PlDouble(double i) {' + String.fromCharCode(10) + '        this.i = i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        return (int)(this.i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return this.i;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        String s = "" + this.i;' + String.fromCharCode(10) + '        final int length = s.length();' + String.fromCharCode(10) + '        final int dot = s.indexOf(' + String.fromCharCode(39) + '.' + String.fromCharCode(39) + ');' + String.fromCharCode(10) + '        if (dot == -1) {' + String.fromCharCode(10) + '            return s;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        for (int i = dot + 1; i < length; ++i) {' + String.fromCharCode(10) + '            if (s.charAt(i) != ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                return s;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return s.substring(0, dot);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return this.i != 0.0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        return new PlDouble(i-1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        return new PlDouble(i+1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject neg() {' + String.fromCharCode(10) + '        return new PlDouble(-i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject abs() {' + String.fromCharCode(10) + '        return new PlDouble(i < 0.0 ? -i : i);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp(PlObject b) {' + String.fromCharCode(10) + '        int c = new Double(this.i).compareTo(b.to_double());' + String.fromCharCode(10) + '        return new PlInt(c == 0 ? c : c < 0 ? -1 : 1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp2(PlObject b) {' + String.fromCharCode(10) + '        int c = new Double(b.to_double()).compareTo(this.i);' + String.fromCharCode(10) + '        return new PlInt(c == 0 ? c : c < 0 ? -1 : 1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_perl;
		v_perl = (p5make_package('main')['v__']);
		var v_native;
		v_native = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('op'));
		var v_returns;
		v_returns = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('num_returns'));
		return (('    public PlObject ' + p5str(v_perl) + '(PlObject s) {' + String.fromCharCode(10) + '        // num - int, num - num' + String.fromCharCode(10) + '        return new ' + p5str(v_returns) + '( this.i ' + p5str(v_native) + ' s.to_double() );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ' + p5str(v_perl) + '2(PlObject s) {' + String.fromCharCode(10) + '        // int - num' + String.fromCharCode(10) + '        return new ' + p5str(v_returns) + '( s.to_double() ' + p5str(v_native) + ' this.i );' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_number_binop], 1)]))])), 0) + (('    public boolean is_num() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10) + 'class PlString extends PlObject {' + String.fromCharCode(10) + '    private java.lang.String s;' + String.fromCharCode(10) + '    private PlObject numericValue;' + String.fromCharCode(10) + '    private boolean hasValue;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public PlString(String s) {' + String.fromCharCode(10) + '        this.s = s;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlString(char s) {' + String.fromCharCode(10) + '        this.s = "" + s;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject parse() {' + String.fromCharCode(10) + '        if (!hasValue) {' + String.fromCharCode(10) + '            hasValue = true;' + String.fromCharCode(10) + '            numericValue = this._parse();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return numericValue;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    private PlObject _parse_exp(int length, int signal, int offset, int next) {' + String.fromCharCode(10) + '        // 123.45E^^^' + String.fromCharCode(10) + '        int offset3 = next;' + String.fromCharCode(10) + '        for ( ; offset3 < length; ) {' + String.fromCharCode(10) + '            final int c3 = s.codePointAt(offset3);' + String.fromCharCode(10) + '            switch (c3) {        ' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                    // TODO' + String.fromCharCode(10) + '                    break;' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '1' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '2' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '3' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '4' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '5' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '6' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '7' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                    break;' + String.fromCharCode(10) + '                default:    // invalid' + String.fromCharCode(10) + '                    return new PlDouble(Double.parseDouble(this.s.substring(0, offset3)));' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            offset3++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlDouble(Double.parseDouble(this.s.substring(0, offset3)));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    private PlObject _parse_dot(int length, int signal, int offset, int next) {' + String.fromCharCode(10) + '        // 123.^^^' + String.fromCharCode(10) + '        int offset3 = next;' + String.fromCharCode(10) + '        for ( ; offset3 < length; ) {' + String.fromCharCode(10) + '            final int c3 = s.codePointAt(offset3);' + String.fromCharCode(10) + '            switch (c3) {        ' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '1' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '2' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '3' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '4' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '5' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '6' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '7' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                    break;' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + 'E' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + 'e' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                    // start exponential part' + String.fromCharCode(10) + '                    return _parse_exp(length, signal, offset, offset3+1);' + String.fromCharCode(10) + '                default:    // invalid' + String.fromCharCode(10) + '                    return new PlDouble(Double.parseDouble(this.s.substring(0, offset3)));' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            offset3++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlDouble(Double.parseDouble(this.s.substring(0, offset3)));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    private PlObject _parse() {' + String.fromCharCode(10) + '        final int length = s.length();' + String.fromCharCode(10) + '        int signal = 0;' + String.fromCharCode(10) + '        for (int offset = 0; offset < length; ) {' + String.fromCharCode(10) + '            final int c = s.codePointAt(offset);' + String.fromCharCode(10) + '            switch (c) {        ' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + 'i' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + 'I' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                            if (this.s.substring(offset, offset+3).equalsIgnoreCase("inf")) {' + String.fromCharCode(10) + '                                if (signal < 0) {' + String.fromCharCode(10) + '                                    return new PlDouble(Double.NEGATIVE_INFINITY);' + String.fromCharCode(10) + '                                }' + String.fromCharCode(10) + '                                else {' + String.fromCharCode(10) + '                                    return new PlDouble(Double.POSITIVE_INFINITY);' + String.fromCharCode(10) + '                                }' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            return PlCx.INT0;' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + 'n' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + 'N' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                            if (this.s.substring(offset, offset+3).equalsIgnoreCase("nan")) {' + String.fromCharCode(10) + '                                return new PlDouble(Double.NaN);' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            return PlCx.INT0;' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '.' + String.fromCharCode(39) + ':   // starts with dot' + String.fromCharCode(10) + '                            if (signal != 0) {' + String.fromCharCode(10) + '                                signal = 1;' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            return _parse_dot(length, signal, offset, offset+1);' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '1' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '2' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '3' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '4' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '5' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '6' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '7' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                            // starts with number' + String.fromCharCode(10) + '                            if (signal == 0) {' + String.fromCharCode(10) + '                                signal = 1;' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            int offset2 = offset+1;' + String.fromCharCode(10) + '                            for ( ; offset2 < length; ) {' + String.fromCharCode(10) + '                                final int c2 = s.codePointAt(offset2);' + String.fromCharCode(10) + '                                switch (c2) {        ' + String.fromCharCode(10) + '                                    case ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '1' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '2' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '3' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '4' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                                    case ' + String.fromCharCode(39) + '5' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '6' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '7' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                                        // more numbers' + String.fromCharCode(10) + '                                        break;' + String.fromCharCode(10) + '                                    case ' + String.fromCharCode(39) + '.' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                                        // start decimal part' + String.fromCharCode(10) + '                                        return _parse_dot(length, signal, offset, offset2+1);' + String.fromCharCode(10) + '                                    case ' + String.fromCharCode(39) + 'E' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + 'e' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                                        // start exponential part' + String.fromCharCode(10) + '                                        return _parse_exp(length, signal, offset, offset2+1);' + String.fromCharCode(10) + '                                    default:' + String.fromCharCode(10) + '                                        // return integer' + String.fromCharCode(10) + '                                        if (signal < 0) {' + String.fromCharCode(10) + '                                            return new PlInt(-Integer.parseInt(this.s.substring(offset, offset2)));' + String.fromCharCode(10) + '                                        }' + String.fromCharCode(10) + '                                        else {' + String.fromCharCode(10) + '                                            return new PlInt(Integer.parseInt(this.s.substring(offset, offset2)));' + String.fromCharCode(10) + '                                        }' + String.fromCharCode(10) + '                                }' + String.fromCharCode(10) + '                                offset2++;' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            // integer' + String.fromCharCode(10) + '                            if (signal < 0) {' + String.fromCharCode(10) + '                                return new PlInt(-Integer.parseInt(this.s.substring(offset, offset2)));' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            else {' + String.fromCharCode(10) + '                                return new PlInt(Integer.parseInt(this.s.substring(offset, offset2)));' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ':   // starts with +' + String.fromCharCode(10) + '                            if (signal != 0) {' + String.fromCharCode(10) + '                                // invalid' + String.fromCharCode(10) + '                                return PlCx.INT0;' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            signal = 1;' + String.fromCharCode(10) + '                            break;' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ':   // starts with -' + String.fromCharCode(10) + '                            if (signal != 0) {' + String.fromCharCode(10) + '                                // invalid' + String.fromCharCode(10) + '                                return PlCx.INT0;' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            signal = -1;' + String.fromCharCode(10) + '                            break;' + String.fromCharCode(10) + '                case ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 't' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 'n' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 'r' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                            // starts with space' + String.fromCharCode(10) + '                            if (signal != 0) {' + String.fromCharCode(10) + '                                // invalid' + String.fromCharCode(10) + '                                return PlCx.INT0;' + String.fromCharCode(10) + '                            }' + String.fromCharCode(10) + '                            break;' + String.fromCharCode(10) + '                default:    // invalid' + String.fromCharCode(10) + '                            return PlCx.INT0;' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            offset++;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCx.INT0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public int to_int() {' + String.fromCharCode(10) + '        return this.parse().to_int();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public double to_double() {' + String.fromCharCode(10) + '        return this.parse().to_double();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public String toString() {' + String.fromCharCode(10) + '        return this.s;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean to_bool() {' + String.fromCharCode(10) + '        return this.s != ""' + String.fromCharCode(10) + '            && this.s != "0";' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_string() {' + String.fromCharCode(10) + '        return true;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _decr() {' + String.fromCharCode(10) + '        // --$x' + String.fromCharCode(10) + '        return this.add(PlCx.MIN1);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + String.fromCharCode(10) + '    // $x++ when $x is PlString' + String.fromCharCode(10) + '    private static final String _string_increment(String s) {' + String.fromCharCode(10) + '        if (s.length() < 2) {' + String.fromCharCode(10) + '            final int c = s.codePointAt(0);' + String.fromCharCode(10) + '            if ((c >= ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ') || (c >= ' + String.fromCharCode(39) + 'A' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + 'Y' + String.fromCharCode(39) + ') || (c >= ' + String.fromCharCode(39) + 'a' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + 'y' + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '                return "" + (char)(c + 1);' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (c == ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                return "10";' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (c == ' + String.fromCharCode(39) + 'Z' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                return "AA";' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            if (c == ' + String.fromCharCode(39) + 'z' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                return "aa";' + String.fromCharCode(10) + '            }' + String.fromCharCode(10) + '            return "1";' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        String c = _string_increment(s.substring(s.length()-1, s.length()));' + String.fromCharCode(10) + '        if (c.length() == 1) {' + String.fromCharCode(10) + '            return s.substring(0, s.length()-1) + c;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return _string_increment(s.substring(0, s.length()-1)) + c.substring(c.length()-1, c.length());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject _incr() {' + String.fromCharCode(10) + '        // ++$x' + String.fromCharCode(10) + '        final int length = s.length();' + String.fromCharCode(10) + '        if (length == 0) {' + String.fromCharCode(10) + '            return PlCx.INT1;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        int c = this.s.codePointAt(0);' + String.fromCharCode(10) + '        switch (c) {        ' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 't' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 'n' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 'r' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '.' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '1' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '2' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '3' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '4' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '5' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '6' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '7' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                return this.add(PlCx.INT1);' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        c = s.codePointAt(length - 1);' + String.fromCharCode(10) + '        if ((c >= ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ') || (c >= ' + String.fromCharCode(39) + 'A' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + 'Y' + String.fromCharCode(39) + ') || (c >= ' + String.fromCharCode(39) + 'a' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + 'y' + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '            return new PlString(s.substring(0, length-1) + (char)(c + 1));' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return new PlString(_string_increment(this.s));' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject neg() {' + String.fromCharCode(10) + '        final int length = s.length();' + String.fromCharCode(10) + '        if (length == 0) {' + String.fromCharCode(10) + '            return PlCx.INT0;' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        final int c = this.s.codePointAt(0);' + String.fromCharCode(10) + '        switch (c) {        ' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                if (c == ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                    return new PlString( ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' + s.substring(1) );' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '                if (c == ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ') {' + String.fromCharCode(10) + '                    return new PlString( ' + String.fromCharCode(39) + '+' + String.fromCharCode(39) + ' + s.substring(1) );' + String.fromCharCode(10) + '                }' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '.' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + ' ' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 't' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 'n' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + String.fromCharCode(92) + 'r' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '0' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '1' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '2' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '3' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '4' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '            case ' + String.fromCharCode(39) + '5' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '6' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '7' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '8' + String.fromCharCode(39) + ': case ' + String.fromCharCode(39) + '9' + String.fromCharCode(39) + ':' + String.fromCharCode(10) + '                return this.parse().neg();' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        if ((c >= ' + String.fromCharCode(39) + 'A' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + 'Z' + String.fromCharCode(39) + ') || (c >= ' + String.fromCharCode(39) + 'a' + String.fromCharCode(39) + ' && c <= ' + String.fromCharCode(39) + 'z' + String.fromCharCode(39) + ')) {' + String.fromCharCode(10) + '            return new PlString( ' + String.fromCharCode(39) + '-' + String.fromCharCode(39) + ' + s );' + String.fromCharCode(10) + '        }' + String.fromCharCode(10) + '        return PlCx.INT0;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject abs() {' + String.fromCharCode(10) + '        return this.parse().abs();' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp(PlObject b) {' + String.fromCharCode(10) + '        return this.parse().num_cmp(b);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject num_cmp2(PlObject b) {' + String.fromCharCode(10) + '        return b.num_cmp2(this.parse());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_perl;
		v_perl = (p5make_package('main')['v__']);
		var v_native;
		v_native = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('op'));
		var v_returns;
		v_returns = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('returns'));
		var v_num_returns;
		v_num_returns = (Hash_number_binop.p5hget_hash(p5str(v_perl))._hash_.p5hget('num_returns'));
		return (function () {
			if ( (p5str(v_returns) == 'PlDouble') ) {
			return (('    public PlObject ' + p5str(v_perl) + '(PlObject b) {' + String.fromCharCode(10) + '        // ' + String.fromCharCode(39) + 'num' + String.fromCharCode(39) + ' - int, ' + String.fromCharCode(39) + 'num' + String.fromCharCode(39) + ' - num' + String.fromCharCode(10) + '        return this.parse().' + p5str(v_perl) + '(b);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ' + p5str(v_perl) + '2(PlObject b) {' + String.fromCharCode(10) + '        // int - ' + String.fromCharCode(39) + 'num' + String.fromCharCode(39) + String.fromCharCode(10) + '        return b.' + p5str(v_perl) + '(this.parse());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)));
		}
		else {
			return (('    public PlObject ' + p5str(v_perl) + '(PlObject b) {' + String.fromCharCode(10) + '        // ' + String.fromCharCode(39) + 'num' + String.fromCharCode(39) + ' - int, ' + String.fromCharCode(39) + 'num' + String.fromCharCode(39) + ' - num' + String.fromCharCode(10) + '        return this.parse().' + p5str(v_perl) + '(b);' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ' + p5str(v_perl) + '2(PlObject b) {' + String.fromCharCode(10) + '        // int - ' + String.fromCharCode(39) + 'num' + String.fromCharCode(39) + String.fromCharCode(10) + '        return b.' + p5str(v_perl) + '(this.parse());' + String.fromCharCode(10) + '    }' + String.fromCharCode(10)));
		}
		})()
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].keys([Hash_number_binop], 1)]))])), 0) + (('}' + String.fromCharCode(10))) + p5pkg['Perlito5::Java::Runtime'].join([''].concat(p5list_to_a([p5map(p5pkg['Perlito5::Java::Runtime'], function (p5want) {
		var v_class;
		v_class = (p5make_package('main')['v__']);
		var v_java_class_name;
		v_java_class_name = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('java_type'));
		var v_perl_to_java;
		v_perl_to_java = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('perl_to_java'));
		var v_perl_package;
		v_perl_package = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('perl_package'));
		var v_java_native_to_perl;
		v_java_native_to_perl = ((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('java_native_to_perl'));
		return (( p5bool((v_class || (v_class = new p5HashRef({})))._hash_.p5hget('import')) ? ('class ' + p5str(v_java_native_to_perl) + ' extends PlReference {' + String.fromCharCode(10) + '    public static final PlString REF = new PlString("' + p5str(v_perl_package) + '");' + String.fromCharCode(10) + '    private ' + p5str(v_java_class_name) + ' stuff;' + String.fromCharCode(10) + String.fromCharCode(10) + '    public ' + p5str(v_java_native_to_perl) + '(' + p5str(v_java_class_name) + ' stuff) {' + String.fromCharCode(10) + '        this.stuff = stuff;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public ' + p5str(v_java_class_name) + ' ' + p5str(v_perl_to_java) + '() {' + String.fromCharCode(10) + '        return this.stuff;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public boolean is_undef() {' + String.fromCharCode(10) + '        return stuff == null;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '    public PlObject ref() {' + String.fromCharCode(10) + '        return REF;' + String.fromCharCode(10) + '    }' + String.fromCharCode(10) + '}' + String.fromCharCode(10)) : p5context([], 1)));
	}, p5list_to_a([p5pkg['Perlito5::Java::Runtime'].values([Hash_java_classes], 1)]))])), 0) + (('// end Perl-Java runtime' + String.fromCharCode(10))))], p5want));
			};
			tmp4928._prototype_ = null;
			return tmp4928
		})());
		1;
	})();
	// use Perlito5::Java::Runtime
;
	// use strict
;
	var v__V5_COMPILER_NAME;
	v__V5_COMPILER_NAME = ('Perlito5');
	var v__V5_COMPILER_VERSION;
	v__V5_COMPILER_VERSION = ('9.0');
	var v_source;
	v_source = ('');
	var v_backend;
	v_backend = (p5scalar_deref(String.fromCharCode(15), 'Perlito5', ""));
	var v_execute;
	v_execute = (1);
	var v_verbose;
	v_verbose = (0);
	var v_expand_use;
	v_expand_use = (1);
	var v_boilerplate;
	v_boilerplate = (1);
	var v_bootstrapping;
	v_bootstrapping = (0);
	var v_wrapper_begin;
	v_wrapper_begin = ('');
	var v_wrapper_end;
	v_wrapper_end = ('');
	var v_wrapper_priority;
	v_wrapper_priority = (0);
	var List_Use = [];
	(function () {
		if ( p5bool(v_verbose) ) {
		p5pkg['Perlito5'].warn([].concat(['// Perlito5 compiler']), null);
		p5pkg['Perlito5'].warn([].concat([('// ARGV: ' + p5pkg['Perlito5'].join([p5make_package('main')['v_"']].concat(p5list_to_a([p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV']])), 0))]), null);
	}
	})();
	var v_help_message;
	v_help_message = (String.fromCharCode(10) + 'perlito5 [switches] [programfile]' + String.fromCharCode(10) + '  switches:' + String.fromCharCode(10) + '    -e program      one line of program (omit programfile)' + String.fromCharCode(10) + '    -h --help' + String.fromCharCode(10) + '    -Idirectory     specify @INC/include directory (several -I' + String.fromCharCode(39) + 's allowed)' + String.fromCharCode(10) + '    -[mM][-]module  execute "use/no module..." before executing program' + String.fromCharCode(10) + '    -n              assume "while (<>) { ... }" loop around program' + String.fromCharCode(10) + '    -p              assume loop like -n but print line also, like sed' + String.fromCharCode(10) + '    -V --version' + String.fromCharCode(10) + '    -v' + String.fromCharCode(10) + '    --verbose' + String.fromCharCode(10) + '    -Ctarget        target backend: js, perl5, perl6, xs, java' + String.fromCharCode(10) + '    -Cast-perl5     emits a dump of the abstract syntax tree as a Perl dump' + String.fromCharCode(10) + '    -Cast-json      emits a dump of the abstract syntax tree in JSON format' + String.fromCharCode(10) + '    --expand_use --noexpand_use' + String.fromCharCode(10) + '                    expand ' + String.fromCharCode(39) + 'use' + String.fromCharCode(39) + ' statements at compile time' + String.fromCharCode(10) + '    --boilerplate --noboilerplate' + String.fromCharCode(10) + '                    emits or not boilerplate code' + String.fromCharCode(10) + '    --bootstrapping set this when compiling the compiler' + String.fromCharCode(10));
	var v_copyright_message;
	v_copyright_message = (((('This is Perlito5 ' + p5str(v__V5_COMPILER_VERSION) + ', an implementation of the Perl language.' + String.fromCharCode(10) + String.fromCharCode(10) + 'The Perl language is Copyright 1987-2012, Larry Wall' + String.fromCharCode(10) + 'The Perlito5 implementation is Copyright 2011, 2012 by Flavio Soibelmann Glock and others.' + String.fromCharCode(10) + String.fromCharCode(10) + 'Perl may be copied only under the terms of either the Artistic License or the' + String.fromCharCode(10) + 'GNU General Public License, which may be found in the Perl 5 source kit.' + String.fromCharCode(10) + String.fromCharCode(10) + 'Complete documentation for Perl, including FAQ lists, should be found on' + String.fromCharCode(10) + 'this system using "man perl" or "perldoc perl".  If you have access to the' + String.fromCharCode(10) + 'Internet, point your browser at http://www.perl.org/, the Perl Home Page.') + String.fromCharCode(10))));
	p5typeglob_set('Perlito5', 'chomp_switch', (function () {
		var tmp4931;
		tmp4931 = function (List__, p5want) {
			var v_s;
			v_s = (CORE.substr(p5list_to_a([p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0), 2]), 0));
			return (function () {
					if ( p5bool(v_s) ) {
					return (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aset(0, (('-' + p5str(v_s)))));
				}
				else {
					return (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift());
				}
				})()
		};
		tmp4931._prototype_ = null;
		return tmp4931
	})());
	List_Use.p5push(['no warnings']);
	List_Use.p5push(['no strict']);
	(function () {
		p5while(function () {
			(function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--verbose') ) {
				v_verbose = (1);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '-I') ) {
				(function () {
					p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
					var v_lib;
					v_lib = (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift());
					p5pkg[p5make_package('main')['List_INC'] || (p5make_package('main')['List_INC'] = []), 'main']['List_INC'].p5unshift([v_lib]);
				})();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-I') ) {
				(function () {
					var v_lib;
					v_lib = (CORE.substr(p5list_to_a([p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0), 2]), 0));
					p5pkg[p5make_package('main')['List_INC'] || (p5make_package('main')['List_INC'] = []), 'main']['List_INC'].p5unshift([v_lib]);
					p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
				})();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-C') ) {
				v_backend = (CORE.substr(p5list_to_a([p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0), 2]), 0));
				v_execute = (0);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '-MO=Deparse') ) {
				v_backend = ('perl5');
				v_execute = (0);
				v_expand_use = (0);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5pkg['Perlito5'].uc([p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2)], 0) == '-M') ) {
				(function () {
					var v_s;
					v_s = (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0));
					var v_import;
					v_import = ('');
					(function () {
						if ( (p5str(v_s).substr(1, 1) == 'm') ) {
						v_import = ('()');
					}
					})();
					v_s = (CORE.substr([v_s, 2], 0));
					var v_use;
					v_use = ('use');
					(function () {
						if ( (p5str(v_s).substr(0, 1) == '-') ) {
						v_use = ('no');
						v_s = (CORE.substr([v_s, 1], 0));
					}
					})();
					(function () {
						if ( (p5pkg['Perlito5'].index([v_s, '='], 0) > p5num(p5negative( 1))) ) {
						var tmp4932 = p5list_to_a([CORE.split(['=', v_s], 1)]);
						v_s = tmp4932.shift();
						v_import = tmp4932.shift();
						v_import = (('split(/,/,q{' + p5str(v_import) + '})'));
					}
					})();
					List_Use.p5push([(p5str(v_use) + ' ' + p5str(v_s) + ' ' + p5str(v_import))]);
					p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
				})();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-w') ) {
				List_Use.p5push(['use warnings']);
				p5pkg['Perlito5'].chomp_switch([], null);
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-W') ) {
				List_Use.p5push(['use warnings']);
				p5pkg['Perlito5'].chomp_switch([], null);
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-X') ) {
				List_Use.p5push(['no warnings']);
				p5pkg['Perlito5'].chomp_switch([], null);
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-n') ) {
				(function () {
					if ( (p5num(v_wrapper_priority) < 1) ) {
					v_wrapper_begin = (' LINE: while (<>) { ');
					v_wrapper_end = (' } ');
					v_wrapper_priority = (1);
				}
				})();
				p5pkg['Perlito5'].chomp_switch([], null);
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) == '-p') ) {
				(function () {
					if ( (p5num(v_wrapper_priority) < 2) ) {
					v_wrapper_begin = (' LINE: while (<>) { ');
					v_wrapper_end = ((' } continue { ' + ' print or die "-p destination: $!' + String.fromCharCode(92) + 'n"; ' + ' } '));
					v_wrapper_priority = (2);
				}
				})();
				p5pkg['Perlito5'].chomp_switch([], null);
			}
			else (function () {
				if ( ((p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '-V') || (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--version')) ) {
				v_backend = ('');
				p5pkg["Perlito5::IO"].say("STDOUT", [v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION]);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '-v') ) {
				v_backend = ('');
				p5pkg["Perlito5::IO"].say("STDOUT", [v_copyright_message]);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( ((p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '-h') || ((p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--help') || !( p5bool(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].length)))) ) {
				v_backend = ('');
				p5pkg["Perlito5::IO"].say("STDOUT", [v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION, v_help_message]);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--expand_use') ) {
				v_expand_use = (1);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--noexpand_use') ) {
				v_expand_use = (0);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--boilerplate') ) {
				v_boilerplate = (1);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--noboilerplate') ) {
				v_boilerplate = (0);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else (function () {
				if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '--bootstrapping') ) {
				v_bootstrapping = (1);
				p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			}
			else {
				p5pkg['Perlito5'].die([].concat([('Unrecognized switch: ' + p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) + '  (-h will show valid options).' + String.fromCharCode(10))]), null);
			}
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})()
			})();
		}, function () {
			return p5and((p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 1) == '-'), function () {
				return (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)).substr(0, 2) != '-e')
			})
		}, false, '', 0)
	})();
	(function () {
		if ( (p5bool(v_backend) && p5bool(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].length)) ) {
		var local_idx = p5LOCAL.length;
		(function () {
			var v_tmp4933 = p5make_package('Perlito5')['v_FILE_NAME'];
			p5LOCAL.push(function(){ p5make_package('Perlito5')['v_FILE_NAME'] = v_tmp4933 });
			return (p5make_package('Perlito5')['v_FILE_NAME'] = (null));
		})();
		p5make_package('Perlito5')['v_FILE_NAME'] = (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0));
		(function () {
			var v_tmp4934 = p5make_package('Perlito5')['v_LINE_NUMBER'];
			p5LOCAL.push(function(){ p5make_package('Perlito5')['v_LINE_NUMBER'] = v_tmp4934 });
			return (p5make_package('Perlito5')['v_LINE_NUMBER'] = (null));
		})();
		p5make_package('Perlito5')['v_LINE_NUMBER'] = (1);
		(function () {
			if ( (p5str(p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)) == '-e') ) {
			p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift();
			(function () {
				if ( p5bool(v_verbose) ) {
				p5pkg['Perlito5'].warn([].concat(p5list_to_a(['// source from command line: ', p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)])), null);
			}
			})();
			v_source = (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift());
		}
		else {
			(function () {
				var local_idx = p5LOCAL.length;
				(function () {
					if ( p5bool(v_verbose) ) {
					p5pkg['Perlito5'].warn([].concat(p5list_to_a(['// source from file: ', p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].p5aget(0)])), null);
				}
				})();
				var v_source_filename;
				v_source_filename = (p5pkg[p5make_package('main')['List_ARGV'] || (p5make_package('main')['List_ARGV'] = []), 'main']['List_ARGV'].shift());
				p5or(CORE.open(p5list_to_a(['FILE', '<:encoding(UTF-8)', v_source_filename])), function () {
					return p5pkg['Perlito5'].die([].concat([('Cannot read ' + p5str(v_source_filename) + ': ' + p5str(p5make_package('main')['v_!']) + String.fromCharCode(10))]), null)
				});
				(function () {
					var v_tmp4935 = p5make_package('main')['v_/'];
					p5LOCAL.push(function(){ p5make_package('main')['v_/'] = v_tmp4935 });
					return (p5make_package('main')['v_/'] = (null));
				})();
				p5make_package('main')['v_/'] = (null);
				v_source = (CORE.readline(['FILE'], 0));
				p5pkg["Perlito5::IO"].close('FILE', []);
				p5cleanup_local(local_idx, null);
			})();
		}
		})();
		(function () {
			if ( p5bool(v_verbose) ) {
			p5pkg['Perlito5'].warn([].concat(['// backend: ', v_backend]), null);
			p5pkg['Perlito5'].warn([].concat(['now parsing']), null);
		}
		})();
		p5make_package('Perlito5')['v_PKG_NAME'] = ('main');
		p5make_package('Perlito5')['v_PROTO'] = ((new p5HashRef({})));
		v_source = ((String.fromCharCode(10) + '# line 1' + String.fromCharCode(10) + p5str(v_source)));
		(function () {
			if ( p5bool(v_wrapper_begin) ) {
			v_source = ((' ' + p5str(v_wrapper_begin) + ';' + String.fromCharCode(10) + '                    ' + p5str(v_source) + ';' + String.fromCharCode(10) + '                    ' + p5str(v_wrapper_end) + String.fromCharCode(10) + '                  '));
		}
		})();
		(function () {
			if ( p5bool(v_execute) ) {
			(function () {
				var local_idx = p5LOCAL.length;
				p5make_package('Perlito5')['v_EXPAND_USE'] = (1);
				(function () {
					var v_tmp4936 = p5make_package('main')['v_@'];
					p5LOCAL.push(function(){ p5make_package('main')['v_@'] = v_tmp4936 });
					return (p5make_package('main')['v_@'] = (null));
				})();
				p5make_package('main')['v_@'];
				var v_init;
				v_init = (p5pkg['Perlito5'].join(['; '].concat(p5list_to_a([List_Use])), 0));
				(function () {
					var p5want = null;
					var r;
					p5pkg["main"]["v_@"] = "";
					var p5strict = p5pkg["Perlito5"]["v_STRICT"];
					p5pkg["Perlito5"]["v_STRICT"] = 0;
					try {
						r = eval(p5pkg["Perlito5::Javascript2::Runtime"].perl5_to_js([('  package main;' + String.fromCharCode(10) + '                ' + p5str(v_init) + ';' + String.fromCharCode(10) + '                ' + p5str(v_source) + ';' + String.fromCharCode(10) + '                $@ = undef' + String.fromCharCode(10) + '            '), 'Perlito5', 'void', (new p5ArrayRef(p5list_to_a([(new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 114, 'name' : 'copyright_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 113, 'name' : 'help_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 111, 'name' : 'wrapper_priority', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 110, 'name' : 'wrapper_end', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 109, 'name' : 'wrapper_begin', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 108, 'name' : 'bootstrapping', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 107, 'name' : 'boilerplate', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 106, 'name' : 'expand_use', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 105, 'name' : 'verbose', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 100, 'name' : '_V5_COMPILER_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : 'ARGV', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'local', '_id' : 122, 'name' : 'LINE_NUMBER', 'namespace' : 'Perlito5', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', '_real_sigil' : '@', 'name' : 'ARGV', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'local', '_id' : 121, 'name' : 'FILE_NAME', 'namespace' : 'Perlito5', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 126, 'name' : 'init', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'local', '_id' : 125, '_namespace' : 'main', 'name' : '@', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1)])))]))))])))]))
					}
					catch(err) {
						if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
							throw(err)
						}
						else if ( err instanceof p5_error || err instanceof Error ) {
							p5pkg["main"]["v_@"] = err;
							if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
								try {
									p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
								}
								catch(err) { }
							}
						}
						else {
							return(err);
						}
					}
					p5pkg["Perlito5"]["v_STRICT"] = p5strict;
					return r;
				})();
				(function () {
					if ( p5bool(p5make_package('main')['v_@']) ) {
					(function () {
						var v_error;
						v_error = (p5make_package('main')['v_@']);
						p5pkg['Perlito5'].warn([].concat([v_error]), null);
						p5pkg['Perlito5'].exit([255], null);
					})();
				}
				})();
				p5cleanup_local(local_idx, null);
			})();
		}
		else {
			(function () {
				var p5want = null;
				var r;
				p5pkg["main"]["v_@"] = "";
				var p5strict = p5pkg["Perlito5"]["v_STRICT"];
				p5pkg["Perlito5"]["v_STRICT"] = 0;
				try {
					r = (function () {
					p5pkg[p5make_package('main')['Hash_INC'] || (p5make_package('main')['Hash_INC'] = {}), 'main']['Hash_INC'] = {};
					p5and(v_bootstrapping, function () {
						return p5make_package('Perlito5')['v_EXPAND_USE'] = (0)
					});
					// no strict
;
					var v_m;
					var v_ok;
					(function () {
						var p5want = null;
						var r;
						p5pkg["main"]["v_@"] = "";
						var p5strict = p5pkg["Perlito5"]["v_STRICT"];
						p5pkg["Perlito5"]["v_STRICT"] = 0;
						try {
							r = (function () {
							v_m = (p5pkg['Perlito5::Grammar'].exp_stmts([v_source, 0], 0));
							v_ok = (1);
						})()
						}
						catch(err) {
							if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
								throw(err)
							}
							else if ( err instanceof p5_error || err instanceof Error ) {
								p5pkg["main"]["v_@"] = err;
								if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
									try {
										p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
									}
									catch(err) { }
								}
							}
							else {
								return(err);
							}
						}
						p5pkg["Perlito5"]["v_STRICT"] = p5strict;
						return r;
					})();
					(function () {
						if ( (!( p5bool(v_ok)) || (p5num((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')) < p5pkg['Perlito5'].length([v_source], 0))) ) {
						(function () {
							var v_error;
							v_error = (p5or(p5make_package('main')['v_@'], function () {
										return p5or(p5context([p5and((p5num((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')) < p5pkg['Perlito5'].length([v_source], 0)), function () {
											return ('Syntax Error near ' + p5str((v_m || (v_m = new p5HashRef({})))._hash_.p5hget('to')))
										})], 0), function () {
											return 'Unknown error'
										})
									}));
							p5pkg['Perlito5'].warn([].concat([v_error]), null);
							p5pkg['Perlito5'].exit([255], null);
						})();
					}
					else {
						(function () {
							var v_comp_units;
							(function () {
								if ( p5bool(v_expand_use) ) {
								(function () {
									var v_ok;
									(function () {
										var p5want = null;
										var r;
										p5pkg["main"]["v_@"] = "";
										var p5strict = p5pkg["Perlito5"]["v_STRICT"];
										p5pkg["Perlito5"]["v_STRICT"] = 0;
										try {
											r = (function () {
											v_comp_units = (p5call_sub('Perlito5::Grammar::Use', 'add_comp_unit', p5list_to_a([p5pkg['Perlito5::Match'].flat([v_m], 1)]), 0));
											v_ok = (1);
										})()
										}
										catch(err) {
											if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
												throw(err)
											}
											else if ( err instanceof p5_error || err instanceof Error ) {
												p5pkg["main"]["v_@"] = err;
												if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
													try {
														p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
													}
													catch(err) { }
												}
											}
											else {
												return(err);
											}
										}
										p5pkg["Perlito5"]["v_STRICT"] = p5strict;
										return r;
									})();
									(function () {
										if ( !( p5bool(v_ok)) ) {
										(function () {
											var v_error;
											v_error = (p5or(p5make_package('main')['v_@'], function () {
														return 'Unknown error loading a module'
													}));
											p5pkg['Perlito5'].warn([].concat([v_error]), null);
											p5pkg['Perlito5'].exit([255], null);
										})();
									}
									})();
								})();
							}
							else {
								v_comp_units = (p5pkg['Perlito5::Match'].flat([v_m], 0));
							}
							})();
							v_comp_units = ((new p5ArrayRef(p5list_to_a([p5call('Perlito5::AST::CompUnit', 'new', ['name', 'main', 'body', v_comp_units], 1)]))));
							(function () {
								if ( (p5str(v_backend) == 'perl5') ) {
								(function () {
									p5pkg["Perlito5::IO"].say("STDOUT", ['# Do not edit this file - Generated by ', v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION]);
									(function () {
										if ( p5bool(v_expand_use) ) {
										p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a([p5call('Perlito5::Perl5::Runtime', 'emit_perl5', [], 1)]));
									}
									else {
										p5make_package('Perlito5')['v_EMIT_USE'] = (1);
									}
									})();
									var List_data = [];
									List_data = p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_perl5_program([v_comp_units], 1)]);
									var v_out;
									v_out = ((new p5ArrayRef([])));
									p5pkg['Perlito5::Perl5::PrettyPrinter'].pretty_print(p5list_to_a([(new p5ArrayRef(List_data)), 0, v_out]), null);
									p5pkg["Perlito5::IO"].print("STDOUT", [p5pkg['Perlito5'].join([''].concat(p5list_to_a([p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5')])), 1), ';1' + String.fromCharCode(10)]);
								})();
							}
							else (function () {
								if ( (p5str(v_backend) == 'perl6') ) {
								(function () {
									(function () {
										if ( p5bool(v_boilerplate) ) {
										p5pkg["Perlito5::IO"].say("STDOUT", ['# Do not edit this file - Generated by ', v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION]);
										p5pkg["Perlito5::IO"].say("STDOUT", ['use v6;']);
									}
									})();
									(function () {
										if ( !( p5bool(v_boilerplate)) ) {
										(function () {
											if ( ((p5pkg['Perlito5'].ref([v_comp_units], 0) == 'ARRAY') && ((p5num(p5num(p5array_deref((v_comp_units || (v_comp_units = new p5ArrayRef([]))), 'Perlito5'))) == 1) && (p5pkg['Perlito5'].ref([(v_comp_units || (v_comp_units = new p5ArrayRef([])))._array_.p5aget(0)], 0) == 'Perlito5::AST::CompUnit'))) ) {
											v_comp_units = ((v_comp_units || (v_comp_units = new p5ArrayRef([])))._array_.p5aget_hash(0)._hash_.p5hget('body'));
										}
										})();
									}
									})();
									var List_data = [];
									List_data = p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_perl6_program([v_comp_units], 1)]);
									var v_out;
									v_out = ((new p5ArrayRef([])));
									p5pkg['Perlito5::Perl6::PrettyPrinter'].pretty_print(p5list_to_a([(new p5ArrayRef(List_data)), 0, v_out]), null);
									p5pkg["Perlito5::IO"].print("STDOUT", [p5pkg['Perlito5'].join([''].concat(p5list_to_a([p5array_deref((v_out || (v_out = new p5ArrayRef([]))), 'Perlito5')])), 1)]);
									p5and(v_boilerplate, function () {
										return p5pkg["Perlito5::IO"].print("STDOUT", [String.fromCharCode(10)])
									});
								})();
							}
							else (function () {
								if ( (p5str(v_backend) == 'js') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", ['// Do not edit this file - Generated by ', v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION]);
								p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_javascript2_program([v_comp_units, 'expand_use', v_expand_use], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == 'js3') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", ['// Do not edit this file - Generated by ', v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION]);
								p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_javascript3_program([v_comp_units, 'expand_use', v_expand_use], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == 'xs') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", ['/* Do not edit this file - Generated by ', v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION, ' */']);
								p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_xs_program([v_comp_units], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == 'java') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", ['// Do not edit this file - Generated by ', v__V5_COMPILER_NAME, ' ', v__V5_COMPILER_VERSION]);
								p5pkg["Perlito5::IO"].print("STDOUT", p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_java_program([v_comp_units, 'expand_use', v_expand_use], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == 'ast-perl5') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", p5list_to_a([p5pkg['Perlito5::Dumper'].ast_dumper([v_comp_units], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == 'ast-json') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", p5list_to_a([p5pkg['Perlito5::JSON'].ast_dumper([v_comp_units], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == 'ast-pretty') ) {
								(function () {
									var p5want = null;
									var r;
									p5pkg["main"]["v_@"] = "";
									var p5strict = p5pkg["Perlito5"]["v_STRICT"];
									p5pkg["Perlito5"]["v_STRICT"] = 0;
									try {
										r = eval(p5pkg["Perlito5::Javascript2::Runtime"].perl5_to_js(['use Data::Printer {colored=>1,class=>{expand=>"all",show_methods=>"none"}};p($comp_units);1', 'Perlito5', 'void', (new p5ArrayRef(p5list_to_a([(new p5HashRef(p5a_to_h(p5list_to_a(['block', (new p5ArrayRef(p5list_to_a([p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 114, 'name' : 'copyright_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 113, 'name' : 'help_message', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 112, 'name' : 'Use', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 111, 'name' : 'wrapper_priority', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 110, 'name' : 'wrapper_end', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 109, 'name' : 'wrapper_begin', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 108, 'name' : 'bootstrapping', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 107, 'name' : 'boilerplate', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 106, 'name' : 'expand_use', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 105, 'name' : 'verbose', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 101, 'name' : '_V5_COMPILER_VERSION', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 100, 'name' : '_V5_COMPILER_NAME', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : 'ARGV', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'local', '_id' : 122, 'name' : 'LINE_NUMBER', 'namespace' : 'Perlito5', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', '_real_sigil' : '@', 'name' : 'ARGV', 'namespace' : '', 'sigil' : '@'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'local', '_id' : 121, 'name' : 'FILE_NAME', 'namespace' : 'Perlito5', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 104, 'name' : 'execute', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 129, 'name' : 'ok', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 128, 'name' : 'm', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 108, 'name' : 'bootstrapping', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'global', '_namespace' : 'main', 'name' : 'INC', 'namespace' : '', 'sigil' : '%'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 102, 'name' : 'source', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 128, 'name' : 'm', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 129, 'name' : 'ok', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 131, 'name' : 'comp_units', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 131, 'name' : 'comp_units', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 131, 'name' : 'comp_units', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1), p5pkg['Perlito5'].bless([(new p5HashRef({'_decl' : 'my', '_id' : 103, 'name' : 'backend', 'namespace' : '', 'sigil' : '$'})), 'Perlito5::AST::Var'], 1)])))]))))])))]))
									}
									catch(err) {
										if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
											throw(err)
										}
										else if ( err instanceof p5_error || err instanceof Error ) {
											p5pkg["main"]["v_@"] = err;
											if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
												try {
													p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
												}
												catch(err) { }
											}
										}
										else {
											return(err);
										}
									}
									p5pkg["Perlito5"]["v_STRICT"] = p5strict;
									return r;
								})();
								p5pkg["Perlito5::IO"].print("STDOUT", [p5make_package('main')['v_@']]);
							}
							else (function () {
								if ( (p5str(v_backend) == '_comp') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", p5list_to_a([p5pkg['Perlito5::Dumper'].ast_dumper([p5make_package('Perlito5')['v_SCOPE']], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == '_globals') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", p5list_to_a([p5pkg['Perlito5::CompileTime::Dumper'].emit_globals([p5make_package('Perlito5')['v_SCOPE']], 1)]));
							}
							else (function () {
								if ( (p5str(v_backend) == '_compile_time') ) {
								p5pkg["Perlito5::IO"].say("STDOUT", p5list_to_a([p5pkg['Perlito5::Dumper'].ast_dumper(p5list_to_a([p5pkg['Perlito5::AST::CompUnit'].emit_compile_time_program([v_comp_units], 1)]), 1)]));
							}
							else {
								p5pkg['Perlito5'].die([].concat([('don' + String.fromCharCode(39) + 't know what to do with backend ' + String.fromCharCode(39) + p5str(v_backend) + String.fromCharCode(39))]), null);
							}
							})()
							})()
							})()
							})()
							})()
							})()
							})()
							})()
							})()
							})()
							})()
							})();
						})();
					}
					})();
					p5make_package('main')['v_@'] = (null);
				})()
				}
				catch(err) {
					if (err instanceof p5_error && (err.type == 'last' || err.type == 'redo' || err.type == 'next')) {
						throw(err)
					}
					else if ( err instanceof p5_error || err instanceof Error ) {
						p5pkg["main"]["v_@"] = err;
						if (p5str(p5pkg["main"]["v_@"]).substr(-1, 1) != "\n") {
							try {
								p5pkg["main"]["v_@"] = p5pkg["main"]["v_@"] + "\n" + err.stack + "\n";
							}
							catch(err) { }
						}
					}
					else {
						return(err);
					}
				}
				p5pkg["Perlito5"]["v_STRICT"] = p5strict;
				return r;
			})();
		}
		})();
		(function () {
			if ( p5bool(p5make_package('main')['v_@']) ) {
			(function () {
				var v_error;
				v_error = (p5make_package('main')['v_@']);
				p5pkg['Perlito5'].warn([].concat([v_error]), null);
				p5pkg['Perlito5'].exit([255], null);
			})();
		}
		})();
		p5cleanup_local(local_idx, null);
	}
	})();
})()
