VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/tech_preview/hr/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/tech_preview/hr/jsthread.js
const Thread = Object.freeze({
    generateBlob : function (params) {
        var xurl = window.URL || window.webkitURL;
        var st;
        if (typeof(Worker) === "undefined") return null;
        if (!window.Worker) return null;
        if (params.func === undefined) return null;
        if (params.extcode !== undefined) {
            st = params.extcode + "\n";
        }
        else {
            st = "";
        }
        st += "var ThreadFunction = " + params.func.toString() + ";";
        st += "var main = {};";
        st += "onmessage = function(e) {var r = ThreadFunction(e.data); postMessage(r)};";
        return xurl.createObjectURL(new Blob([ st ], { type: "text/javascript" }));
    },

    createFromBlob : function (params) {
        var rv = [], n;
        var r, i;
        if (params.n !== undefined) {
            n = params.n;
        }
        else {
            n = 1;
        }
        if (n < 1) n = 1;
        for (i = 0; i < n; i++) {
            r = {};
            r.w = new Worker (params.blobURL);
            if (r.w == null) return null;
            r.call = function (r) {
                return function (params) {
                    r.w.postMessage(params);
                };
            }(r);
            r.terminate = function (r) {
                return function () {
                    Thread.close(r);
                };
            }(r);
            if (params.callbackfunc !== undefined) {
                r.w.onmessage = function(r) {
                    return function (e) {
                        params.callbackfunc(e.data);
                    }
                } (r);
            }
            rv.push(r);
        }
        return rv;
    },

    create : function (params) {
        var blobURL = Thread.generateBlob(params);
        if (blobURL == null) return null;
        var x = Thread.createFromBlob({
            blobURL: blobURL,
            callbackfunc: params.callbackfunc
        });
        if (EncodingClass.type.isArray(x)) return x[0];
        return null;
    },

    close : function (r) {
        if (r["system.close"] !== undefined) {
            r["system.close"]();
        }
        else {
            r.w.terminate();
            r.w = undefined;
            r.call = undefined;
            r.terminate = undefined;
        }
    },

    serializeThread : function (host) {
        var t;
        if (host.terminateRequest) {
            host.status = "terminated";
            return;
        }
        if (EncodingClass.type.isFunction(host.content[host.step].condition)) {
            t = host.content[host.step].condition(host.lastRetval, host);
        }
        else if (EncodingClass.type.isNumber) {
            t = host.content[host.step].condition != 0;
        }
        else {
            t = host.content[host.step].condition;
        }
        if ((t === true) && (!host.terminateRequest)) {
            host.status = "running";
            host.lastRetval = host.content[host.step].task(host.lastRetval, host);
            host.status = "idle";
            host.step++;
        }
        if (host.step < host.content.length) {
            setTimeout(function (host) {
                ThreadClass.serializeThread(host);
            } (host), 5);
        }
        else {
            host.status = "finished";
        }
    },

    serialize : function (params) {
        var retval = {params: params.params};
        var temp = {
            step: 0,
            terminateRequest: false,
            status: "idle",
            lastRetval: null,
            content: []
        };
        var i, t;
        if (!EncodingClass.type.isArray(params)) return ThreadClass.wait([params]);
        for (i = 0; i < params.length; i++) {
            t = {};
            if (params[i].condition === undefined) {
                t.condition = true;
            }
            else {
                t.condition = params[i].condition;
            }
            if (params[i].task === undefined) break;
            if (!EncodingClass.type.isFunction(params[i].task)) break;
            temp.content.push(t);
        }
        if (temp.content.length == 0) {
            Object.defineProperty(retval, 'step', {get: function () { return 0; }});
            Object.defineProperty(retval, 'length', {get: function () { return 0; }});
            Object.defineProperty(retval, 'status', {get: function () { return "finished"; }});
            retval.terminate = function () {};
        }
        else {
            Object.defineProperty(retval, 'step', {
                get: function (host) {
                    return function () {
                        return host.step;
                    }
                } (temp)
            });
            Object.defineProperty(retval, 'length', {
                get: function (host) {
                    return function () {
                        return host.content.length;
                    }
                } (temp)
            });
            Object.defineProperty(retval, 'status', {
                get: function (host) {
                    return function () {
                        return host.status;
                    }
                } (temp)
            });
            retval.terminate = function (host) {
                return function () {
                    host.terminateRequest = true;
                }
            } (temp);
            setTimeout(function (host) {
                ThreadClass.serializeThread(host);
            } (temp), 5);
        }
        return retval;
    },

    exportVariable : function (obj, level) {
        var i, k, n, x, z, st, sx, keys;
        if (obj === undefined) return "undefined";
        if (obj == null) return "null";
        if (level === undefined) level = 0;
        if (obj instanceof Date) return "new Date(" + obj.getTime() + ")";
        if (typeof obj === "function") return obj.toString();
        if (typeof obj === "boolean") {
            if (obj) return "true";
            return "false";
        }
        if (typeof obj === "number") {
            return obj;
        }
        if ((typeof obj === "string") || (obj instanceof String)) {
            st = "";
            n = obj.length;
            for (i = 0; i < n; i++) {
                k = obj.substr(i, 1);
                switch (k) {
                    case "\\":
                        st += "\\\\";
                        break;
                    case "\"":
                        st += "\\\"";
                        break;
                    case "\r":
                        st += "\\r";
                        break;
                    case "\n":
                        st += "\\n";
                        break;
                    case "\t":
                        st += "\\t";
                        break;
                    default:
                        st += k;
                }
            }
            return "\"" + st + "\"";
        }
        keys = Object.keys(obj);
        n = keys.length;
        if (n == 0) return "{}";
        x = true;
        for (i = 0; i < n; i++) {
            if (obj[i] === undefined) {
                x = false;
                break;
            }
        }
        if (x) {
            if (n == 0) return "[]";
            st = "[\r\n";
            for (i = 0; i < n; i++) {
                for (k = 0; k < level+4; k++) st += " ";
                st += Thread.exportVariable(obj[i], level + 4);
                if (i+1 < n) st += ",";
                st += "\r\n";
            }
            for (k = 0; k < level; k++) st += " ";
            return st + "]";
        }
        else {
            st = "{\r\n";
            for (i = 0; i < n; i++) {
                for (k = 0; k < level+4; k++) st += " ";
                st += keys[i] + ": " + Thread.exportVariable(obj[keys[i]], level + 4);
                if (i+1 < n) st += ",";
                st += "\r\n";
            }
            for (k = 0; k < level; k++) st += " ";
            return st + "}";
        }
    },

    createModule: function (params) {
        var xurl = window.URL || window.webkitURL;
        var keys = Object.keys(params);
        var blob;
        var st, type;
        var i, n;
        if (typeof(Worker) === "undefined") return null;
        if (!window.Worker) return null;
        n = keys.length;
        if (n == 0) return null;
        st = "";
        for (i = 0; i < n; i++) {
            if (typeof params[keys[i]] === "function") {
                type = "func";
            }
            else {
                type = "var";
            }
            st += "var " + keys[i] + " = " + Thread.exportVariable(params[keys[i]]) + ";\r\n";
            keys[i] = {
                name: keys[i],
                type: type
            }
        }
        st += "var main = {};";
        st += "onmessage = function(e) {\r\n";
        st += "    var r;\r\n";
        st += "    switch(e.data.index) {\r\n";
        for (i = 0; i < n; i++) {
            st += "        case " + i + ":\r\n";
            switch (keys[i].type) {
                case "func":
                    st += "            try {\r\n";
                    st += "                r = " + keys[i].name + "(e.data.data);\r\n";
                    st += "                postMessage({success: true, value: r});\r\n";
                    st += "            }\r\n";
                    st += "            catch (e) {\r\n";
                    st += "                postMessage({success: false, value: e});\r\n";
                    st += "            }\r\n";
                    st += "            break;\r\n";
                    break;
                case "var":
                    st += "            postMessage({success: true, value: " + keys[i].name + "});\r\n";
                    st += "            break;\r\n";
                    break;
            }
        }
        st += "    }\r\n";
        st += "}";
        blob = xurl.createObjectURL(new Blob([ st ], { type: "text/javascript" }));
        var core = {
            queue: [],
            processing: null,
            worker: new Worker (blob)
        };
        core.call = function (core) {
            return function (index, params, callbackfunc) {
                if (!(typeof callbackfunc === "function")) {
                    callbackfunc = function () {};
                }
                if (core.processing == null) {
                    core.processing = callbackfunc;
                    core.worker.postMessage({
                        index: index,
                        data: params
                    });
                }
                else {
                    core.queue.push({
                        index: index,
                        data: params,
                        callbackfunc: callbackfunc
                    });
                }
            }
        } (core);
        core.worker.onmessage = function (core) {
            return function (e) {
                var data = e.data;
                var callbackfunc = core.processing;
                var t;
                if (core.queue.length > 0) {
                    t = core.queue.shift();
                    core.processing = t.callbackfunc;
                    core.worker.postMessage({
                        index: t.index,
                        data: t.data
                    });
                }
                else {
                    core.processing = null;
                }
                try {
                    callbackfunc(data.success, data.value);
                }
                catch (err) {
                    console.error(err);
                }
            }
        } (core);
        var retval = {};
        for (i = 0; i < n; i++) {
            switch (keys[i].type) {
                case "func":
                    retval[keys[i].name] = function (core, index) {
                        return function (params, callbackfunc) {
                            core.call(index, params, callbackfunc);
                        }
                    } (core, i);
                    break;
                case "var":
                    retval[keys[i].name] = function (core, index) {
                        return function (callbackfunc) {
                            core.call(index, null, callbackfunc);
                        }
                    } (core, i);
                    break;
            }
        }
        retval["system.close"] = function (core) {
            return function () {
                core.worker.terminate();
            }
        } (core);
        return Object.freeze(retval);
    }
});

VaKeR 2022