Scrape Webpack练习

目标练习网站:Scrape | Movie

首先定位加密参数

左侧:网络面板里的搜索框(查找)

位置:网络面板左上角搜索框

  • 搜索范围:所有网络请求的请求参数、请求头、响应体、响应头
  • 作用:找某个字符串出现在哪一次接口请求里。
  • 例子:搜token,会找出哪个接口的参数 / 响应里面带有 token。
  • ⚠️不会去搜索 JS 源代码文件内部,只看网络请求收发的数据。

右侧:独立「搜索」面板(全局文件搜索)

位置:DevTools 单独的搜索(Search)标签页

  • 搜索范围:页面加载的全部静态资源文件(所有 js、css 等源码文件)
  • 作用:全局搜源码,找字符串写在哪个 JS 文件的哪一行。
  • 例子:搜token,就扫描全部 js 源码,找到所有写了 token 的代码行,图中找到了 14 处匹配。

这里搜出来的是JS 源代码文本 ,可以看到代码里写了token:XSRF‑TOKEN这些源码片段。

简单一句话区分

  1. 网络面板搜索:查「接口收发的数据」(请求、响应),看接口报文里有没有这个内容;
  2. Search 全局搜索:查「前端源代码文件」,看 JS 代码在哪里写的这个字符串。

复制到curl中得到基础代码

python 复制代码
import requests

headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'Connection': 'keep-alive',
    'DNT': '1',
    'Referer': 'https://spa2.scrape.center/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0',
    'sec-ch-ua': '"Not=A?Brand";v="99", "Microsoft Edge";v="151", "Chromium";v="151"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

params = {
    'limit': '10',
    'offset': '0',
    'token': 'N2EyYTJlNWM5N2MzODdhYTc2ODcwODQ4Yjg3ZjE5NDYzZWY2MDI4OCwxNzg2MDYxNjY4',
}

response = requests.get('https://spa2.scrape.center/api/movie/', params=params, headers=headers)

定位到token的获取位置

断点调试获取token的方法

找到token的获取方法

其中i的值在附近没有,既不是局部参数也不是形参,向上找

methods方法中也没有,继续向上找

继续向上找e是什么,e是一个形参

豆包之后发现这是个webpack,看不懂

  • i = e("7d92")e()是 webpack 的模块加载函数,加载 id 为7d92的 js 模块
  • i["a"]:代表模块 7d92 导出的default函数
  • Object(i["a"])(url, a):调用这个加密函数,传入 2 个参数:
    1. 参数 1:this.$store.state.url.index 接口地址字符串
    2. 参数 2:a = offset = (page‑1)*limit,分页偏移量 返回结果 = token 值

断点进入到7d92模块

找到加载器

javascript 复制代码
window=global
!(function(e) {
    function t(t) {
        for (var r, o, i = t[0], c = t[1], s = t[2], l = 0, f = []; l < i.length; l++)
            o = i[l],
            Object.prototype.hasOwnProperty.call(a, o) && a[o] && f.push(a[o][0]),
            a[o] = 0;
        for (r in c)
            Object.prototype.hasOwnProperty.call(c, r) && (e[r] = c[r]);
        d && d(t);
        while (f.length)
            f.shift()();
        return u.push.apply(u, s || []),
        n()
    }
    function n() {
        for (var e, t = 0; t < u.length; t++) {
            for (var n = u[t], r = !0, o = 1; o < n.length; o++) {
                var i = n[o];
                0 !== a[i] && (r = !1)
            }
            r && (u.splice(t--, 1),
            e = c(c.s = n[0]))
        }
        return e
    }
    var r = {}
      , o = {
        app: 0
    }
      , a = {
        app: 0
    }
      , u = [];
    function i(e) {
        return c.p + "js/" + ({}[e] || e) + "." + {
            "chunk-4136500c": "f3e9bb54",
            "chunk-10192a00": "243cb8b7",
            "chunk-7502f973": "428355cb"
        }[e] + ".js"
    }
    function c(t) {
        if (r[t])
            return r[t].exports;
        var n = r[t] = {
            i: t,
            l: !1,
            exports: {}
        };
        return e[t].call(n.exports, n, n.exports, c),
        n.l = !0,
        n.exports
    }
    window.e = c
    c.e = function(e) {
        var t = []
          , n = {
            "chunk-10192a00": 1,
            "chunk-7502f973": 1
        };
        o[e] ? t.push(o[e]) : 0 !== o[e] && n[e] && t.push(o[e] = new Promise((function(t, n) {
            for (var r = "css/" + ({}[e] || e) + "." + {
                "chunk-4136500c": "31d6cfe0",
                "chunk-10192a00": "65a5913c",
                "chunk-7502f973": "17571dd5"
            }[e] + ".css", a = c.p + r, u = document.getElementsByTagName("link"), i = 0; i < u.length; i++) {
                var s = u[i]
                  , l = s.getAttribute("data-href") || s.getAttribute("href");
                if ("stylesheet" === s.rel && (l === r || l === a))
                    return t()
            }
            var f = document.getElementsByTagName("style");
            for (i = 0; i < f.length; i++) {
                s = f[i],
                l = s.getAttribute("data-href");
                if (l === r || l === a)
                    return t()
            }
            var d = document.createElement("link");
            d.rel = "stylesheet",
            d.type = "text/css",
            d.onload = t,
            d.onerror = function(t) {
                var r = t && t.target && t.target.src || a
                  , u = new Error("Loading CSS chunk " + e + " failed.\n(" + r + ")");
                u.code = "CSS_CHUNK_LOAD_FAILED",
                u.request = r,
                delete o[e],
                d.parentNode.removeChild(d),
                n(u)
            }
            ,
            d.href = a;
            var p = document.getElementsByTagName("head")[0];
            p.appendChild(d)
        }
        )).then((function() {
            o[e] = 0
        }
        )));
        var r = a[e];
        if (0 !== r)
            if (r)
                t.push(r[2]);
            else {
                var u = new Promise((function(t, n) {
                    r = a[e] = [t, n]
                }
                ));
                t.push(r[2] = u);
                var s, l = document.createElement("script");
                l.charset = "utf-8",
                l.timeout = 120,
                c.nc && l.setAttribute("nonce", c.nc),
                l.src = i(e);
                var f = new Error;
                s = function(t) {
                    l.onerror = l.onload = null,
                    clearTimeout(d);
                    var n = a[e];
                    if (0 !== n) {
                        if (n) {
                            var r = t && ("load" === t.type ? "missing" : t.type)
                              , o = t && t.target && t.target.src;
                            f.message = "Loading chunk " + e + " failed.\n(" + r + ": " + o + ")",
                            f.name = "ChunkLoadError",
                            f.type = r,
                            f.request = o,
                            n[1](f)
                        }
                        a[e] = void 0
                    }
                }
                ;
                var d = setTimeout((function() {
                    s({
                        type: "timeout",
                        target: l
                    })
                }
                ), 12e4);
                l.onerror = l.onload = s,
                document.head.appendChild(l)
            }
        return Promise.all(t)
    }
    ,
    c.m = e,
    c.c = r,
    c.d = function(e, t, n) {
        c.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: n
        })
    }
    ,
    c.r = function(e) {
        "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    c.t = function(e, t) {
        if (1 & t && (e = c(e)),
        8 & t)
            return e;
        if (4 & t && "object" === typeof e && e && e.__esModule)
            return e;
        var n = Object.create(null);
        if (c.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: e
        }),
        2 & t && "string" != typeof e)
            for (var r in e)
                c.d(n, r, function(t) {
                    return e[t]
                }
                .bind(null, r));
        return n
    }
    ,
    c.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e["default"]
        }
        : function() {
            return e
        }
        ;
        return c.d(t, "a", t),
        t
    }
    ,
    c.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    c.p = "/",
    c.oe = function(e) {
        throw console.error(e),
        e
    }
    ;
    var s = window["webpackJsonp"] = window["webpackJsonp"] || []
      , l = s.push.bind(s);
    s.push = t,
    s = s.slice();
    for (var f = 0; f < s.length; f++)
        t(s[f]);
    var d = l;
    u.push([0, "chunk-vendors"]),
    n()
}
)(


);

console.log(window.e);

// i = window.e("7d92")

// var a = (this.page - 1) * this.limi  ,

// e = Object(i["a"])(this.$store.state.url.index, a);

找到加载器之后,继续找需要的模块,进入模块中打印r发现有273个模块

那么怎么知道总共引用了多少个模块呢,

运行时断点抓(对付动态 require)

复制代码
function c(t) {
    console.log("被require加载模块id:", t) //加这行
    if(r[t]) return r[t].exports;
    // ...剩下原有代码
}

然后执行一次 c("7d92"),控制台会打印运行过程中所有加载过的模块 id (直接 + 间接全部打印出来)

function c(t) 函数内部打断点,断住。

此时你处在 webpack IIFE 闭包作用域,可以访问原始 c

  1. 控制台粘贴下面劫持代码(闭包内执行,完全不碰 window.e
复制代码
// 在闭包内部,c是原始加载器
const origC = c;
const loadedIds = new Set();

// 直接重写闭包内的c,window.e会自动跟着变,因为window.e = c
c = function(moduleId){
    if(!loadedIds.has(moduleId)){
        console.log("[加载模块ID]", moduleId);
        loadedIds.add(moduleId);
    }
    return origC(moduleId);
};

// 触发入口模块
const mod = c("7d92");
console.log("模块导出",mod);

//拿到字符串id数组
const needIds = Array.from(loadedIds);
console.log("依赖列表", needIds);
copy(JSON.stringify(needIds,null,2));

那么如何在运行的过程中直接导出所有需要的模块呢

webpack逆向之自动收集webpack调用模块自动收集webpack调用模块 之前的文章介绍过JS逆向中处理webp - 掘金

其中e为所有模块 ,c为模块加载器,r为模块缓存变量,t为模块id

浏览器控制台输出源码字符串(拿到模块函数源码文本)

在这里打两个断点,进入模块加载器,将代码复制到控制台

利用 Function.toString(),把每个模块函数转成源码字符串,保存下来。

复制代码
// 闭包内执行
const origC = c;
const loadedIds = new Set();
c = function(moduleId) {
    if (!loadedIds.has(moduleId)) {
        console.log("[加载模块]", moduleId);
        loadedIds.add(moduleId);
    }
    return origC(moduleId);
};
c("7d92");

const minSource = {};
for(const mid of loadedIds){
    // e[mid] 就是原始模块函数,toString拿到源码字符串
    minSource[mid] = e[mid].toString();
}
console.log(minSource);
copy(JSON.stringify(minSource,null,2));

复制出来得到格式:

复制代码
{
  "7d92":"function(t,e,r){\"use strict\";r(\"6b54\");...}",
  "6b54":"function(t,e,r){ ... }"
}

到本地 node,再把字符串还原成函数:

复制代码
const fs = require("fs");
const raw = JSON.parse(fs.readFileSync("./min.json","utf8"));

const minModules = {};
for(let id in raw){
    // 把字符串还原为真实函数
    minModules[id] = new Function("return "+raw[id])();
}
// minModules 就是裁剪后的模块对象,可以直接丢给webpack runtime使用

最后

javascript 复制代码
window=global

const fs = require("fs");
const raw = JSON.parse(fs.readFileSync("./hh.json","utf8"));

const minModules = {
    "86cc": function(e, t, n) {
        var i = n("cb7c")
          , r = n("c69a")
          , o = n("6a99")
          , a = Object.defineProperty;
        t.f = n("9e1e") ? Object.defineProperty : function(e, t, n) {
            if (i(e),
            t = o(t, !0),
            i(n),
            r)
                try {
                    return a(e, t, n)
                } catch (s) {}
            if ("get"in n || "set"in n)
                throw TypeError("Accessors not supported!");
            return "value"in n && (e[t] = n.value),
            e
        }
    },
    "2aba": function(e, t, n) {
        var i = n("7726")
          , r = n("32e9")
          , o = n("69a8")
          , a = n("ca5a")("src")
          , s = n("fa5b")
          , l = "toString"
          , c = ("" + s).split(l);
        n("8378").inspectSource = function(e) {
            return s.call(e)
        }
        ,
        (e.exports = function(e, t, n, s) {
            var l = "function" == typeof n;
            l && (o(n, "name") || r(n, "name", t)),
            e[t] !== n && (l && (o(n, a) || r(n, a, e[t] ? "" + e[t] : c.join(String(t)))),
            e === i ? e[t] = n : s ? e[t] ? e[t] = n : r(e, t, n) : (delete e[t],
            r(e, t, n)))
        }
        )(Function.prototype, l, (function() {
            return "function" == typeof this && this[a] || s.call(this)
        }
        ))
    },
        d3f4: function(e, t) {
        e.exports = function(e) {
            return "object" === typeof e ? null !== e : "function" === typeof e
        }
    },


};
for(let id in raw){
    // 把字符串还原为真实函数
    minModules[id] = new Function("return "+raw[id])();
}
// minModules 就是裁剪后的模块对象,可以直接丢给webpack runtime使用

// console.log(minModules);

!(function(e) {
    function t(t) {
        for (var r, o, i = t[0], c = t[1], s = t[2], l = 0, f = []; l < i.length; l++)
            o = i[l],
            Object.prototype.hasOwnProperty.call(a, o) && a[o] && f.push(a[o][0]),
            a[o] = 0;
        for (r in c)
            Object.prototype.hasOwnProperty.call(c, r) && (e[r] = c[r]);
        d && d(t);
        while (f.length)
            f.shift()();
        return u.push.apply(u, s || []),
        n()
    }
    function n() {
        for (var e, t = 0; t < u.length; t++) {
            for (var n = u[t], r = !0, o = 1; o < n.length; o++) {
                var i = n[o];
                0 !== a[i] && (r = !1)
            }
            r && (u.splice(t--, 1),
            e = c(c.s = n[0]))
        }
        return e
    }
    var r = {}
      , o = {
        app: 0
    }
      , a = {
        app: 0
    }
      , u = [];
    function i(e) {
        return c.p + "js/" + ({}[e] || e) + "." + {
            "chunk-4136500c": "f3e9bb54",
            "chunk-10192a00": "243cb8b7",
            "chunk-7502f973": "428355cb"
        }[e] + ".js"
    }
    function c(t) {
        if (r[t])
            return r[t].exports;
        var n = r[t] = {
            i: t,
            l: !1,
            exports: {}
        };
        return e[t].call(n.exports, n, n.exports, c),
        n.l = !0,
        n.exports
    }
    window.e = c
    c.e = function(e) {
        var t = []
          , n = {
            "chunk-10192a00": 1,
            "chunk-7502f973": 1
        };
        o[e] ? t.push(o[e]) : 0 !== o[e] && n[e] && t.push(o[e] = new Promise((function(t, n) {
            for (var r = "css/" + ({}[e] || e) + "." + {
                "chunk-4136500c": "31d6cfe0",
                "chunk-10192a00": "65a5913c",
                "chunk-7502f973": "17571dd5"
            }[e] + ".css", a = c.p + r, u = document.getElementsByTagName("link"), i = 0; i < u.length; i++) {
                var s = u[i]
                  , l = s.getAttribute("data-href") || s.getAttribute("href");
                if ("stylesheet" === s.rel && (l === r || l === a))
                    return t()
            }
            var f = document.getElementsByTagName("style");
            for (i = 0; i < f.length; i++) {
                s = f[i],
                l = s.getAttribute("data-href");
                if (l === r || l === a)
                    return t()
            }
            var d = document.createElement("link");
            d.rel = "stylesheet",
            d.type = "text/css",
            d.onload = t,
            d.onerror = function(t) {
                var r = t && t.target && t.target.src || a
                  , u = new Error("Loading CSS chunk " + e + " failed.\n(" + r + ")");
                u.code = "CSS_CHUNK_LOAD_FAILED",
                u.request = r,
                delete o[e],
                d.parentNode.removeChild(d),
                n(u)
            }
            ,
            d.href = a;
            var p = document.getElementsByTagName("head")[0];
            p.appendChild(d)
        }
        )).then((function() {
            o[e] = 0
        }
        )));
        var r = a[e];
        if (0 !== r)
            if (r)
                t.push(r[2]);
            else {
                var u = new Promise((function(t, n) {
                    r = a[e] = [t, n]
                }
                ));
                t.push(r[2] = u);
                var s, l = document.createElement("script");
                l.charset = "utf-8",
                l.timeout = 120,
                c.nc && l.setAttribute("nonce", c.nc),
                l.src = i(e);
                var f = new Error;
                s = function(t) {
                    l.onerror = l.onload = null,
                    clearTimeout(d);
                    var n = a[e];
                    if (0 !== n) {
                        if (n) {
                            var r = t && ("load" === t.type ? "missing" : t.type)
                              , o = t && t.target && t.target.src;
                            f.message = "Loading chunk " + e + " failed.\n(" + r + ": " + o + ")",
                            f.name = "ChunkLoadError",
                            f.type = r,
                            f.request = o,
                            n[1](f)
                        }
                        a[e] = void 0
                    }
                }
                ;
                var d = setTimeout((function() {
                    s({
                        type: "timeout",
                        target: l
                    })
                }
                ), 12e4);
                l.onerror = l.onload = s,
                document.head.appendChild(l)
            }
        return Promise.all(t)
    }
    ,
    c.m = e,
    c.c = r,
    c.d = function(e, t, n) {
        c.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: n
        })
    }
    ,
    c.r = function(e) {
        "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    c.t = function(e, t) {
        if (1 & t && (e = c(e)),
        8 & t)
            return e;
        if (4 & t && "object" === typeof e && e && e.__esModule)
            return e;
        var n = Object.create(null);
        if (c.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: e
        }),
        2 & t && "string" != typeof e)
            for (var r in e)
                c.d(n, r, function(t) {
                    return e[t]
                }
                .bind(null, r));
        return n
    }
    ,
    c.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e["default"]
        }
        : function() {
            return e
        }
        ;
        return c.d(t, "a", t),
        t
    }
    ,
    c.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    c.p = "/",
    c.oe = function(e) {
        throw console.error(e),
        e
    }
    ;
    var s = window["webpackJsonp"] = window["webpackJsonp"] || []
      , l = s.push.bind(s);
    s.push = t,
    s = s.slice();
    for (var f = 0; f < s.length; f++)
        t(s[f]);
    var d = l;
    u.push([0, "chunk-vendors"]),
    n()
}
)(
minModules
);


// 诊断:列出所有被引用但未定义的模块 id
var defined = Object.keys(window.e.m);
var referenced = new Set();
defined.forEach(function(id){
    var fn = window.e.m[id];
    if (typeof fn !== "function") return;
    var src = fn.toString();
    var re = /\b[a-zA-Z_$][\w$]*\s*\(\s*["']([0-9a-fA-F]{3,8}|\d{1,4})["']\s*\)/g, m;
    while ((m = re.exec(src))) referenced.add(m[1]);
});
var missing = [...referenced].filter(function(id){ return defined.indexOf(id) === -1 });
console.log("已定义的模块 id:", defined);
console.log("被引用的模块 id:", [...referenced]);
console.log("缺失的模块 id(需要补到 minModules 里):", missing);

i = window.e("7d92")

page=1
limit=10
var a = (page - 1) * limit 

e = Object(i["a"])('/api/movie', a);

console.log(e);
javascript 复制代码
{
    "1132": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.WordArray,i=e.enc;i.Base64={stringify:function(t){var e=t.words,r=t.sigBytes,n=this._map;t.clamp();for(var i=[],o=0;o<r;o+=3)for(var c=e[o>>>2]>>>24-o%4*8&255,s=e[o+1>>>2]>>>24-(o+1)%4*8&255,a=e[o+2>>>2]>>>24-(o+2)%4*8&255,f=c<<16|s<<8|a,h=0;h<4&&o+.75*h<r;h++)i.push(n.charAt(f>>>6*(3-h)&63));var u=n.charAt(64);if(u)while(i.length%4)i.push(u);return i.join(\"\")},parse:function(t){var e=t.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var i=0;i<r.length;i++)n[r.charCodeAt(i)]=i}var c=r.charAt(64);if(c){var s=t.indexOf(c);-1!==s&&(e=s)}return o(t,e,n)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"};function o(t,e,r){for(var i=[],o=0,c=0;c<e;c++)if(c%4){var s=r[t.charCodeAt(c-1)]<<c%4*2,a=r[t.charCodeAt(c)]>>>6-c%4*2;i[o>>>2]|=(s|a)<<24-o%4*8,o++}return n.create(i,o)}}(),t.enc.Base64}))}",
    "1382": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"1132\"),r(\"72fe\"),r(\"2b79\"),r(\"38ba\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.StreamCipher,i=e.algo,o=[],c=[],s=[],a=i.Rabbit=n.extend({_doReset:function(){for(var t=this._key.words,e=this.cfg.iv,r=0;r<4;r++)t[r]=16711935&(t[r]<<8|t[r]>>>24)|4278255360&(t[r]<<24|t[r]>>>8);var n=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],i=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(r=0;r<4;r++)f.call(this);for(r=0;r<8;r++)i[r]^=n[r+4&7];if(e){var o=e.words,c=o[0],s=o[1],a=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),h=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=a>>>16|4294901760&h,l=h<<16|65535&a;i[0]^=a,i[1]^=u,i[2]^=h,i[3]^=l,i[4]^=a,i[5]^=u,i[6]^=h,i[7]^=l;for(r=0;r<4;r++)f.call(this)}},_doProcessBlock:function(t,e){var r=this._X;f.call(this),o[0]=r[0]^r[5]>>>16^r[3]<<16,o[1]=r[2]^r[7]>>>16^r[5]<<16,o[2]=r[4]^r[1]>>>16^r[7]<<16,o[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)o[n]=16711935&(o[n]<<8|o[n]>>>24)|4278255360&(o[n]<<24|o[n]>>>8),t[e+n]^=o[n]},blockSize:4,ivSize:2});function f(){for(var t=this._X,e=this._C,r=0;r<8;r++)c[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<c[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<c[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<c[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<c[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<c[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<c[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<c[6]>>>0?1:0)|0,this._b=e[7]>>>0<c[7]>>>0?1:0;for(r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,o=n>>>16,a=((i*i>>>17)+i*o>>>15)+o*o,f=((4294901760&n)*n|0)+((65535&n)*n|0);s[r]=a^f}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.Rabbit=n._createHelper(a)}(),t.Rabbit}))}",
    "3252": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(e){var r=t,n=r.lib,i=n.Base,o=n.WordArray,c=r.x64={};c.Word=i.extend({init:function(t,e){this.high=t,this.low=e}}),c.WordArray=i.extend({init:function(t,r){t=this.words=t||[],this.sigBytes=r!=e?r:8*t.length},toX32:function(){for(var t=this.words,e=t.length,r=[],n=0;n<e;n++){var i=t[n];r.push(i.high),r.push(i.low)}return o.create(r,this.sigBytes)},clone:function(){for(var t=i.clone.call(this),e=t.words=this.words.slice(0),r=e.length,n=0;n<r;n++)e[n]=e[n].clone();return t}})}(),t}))}",
    "3452": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"3252\"),r(\"17e1\"),r(\"a8ce\"),r(\"1132\"),r(\"72fe\"),r(\"df2f\"),r(\"94f8\"),r(\"191b\"),r(\"d6e6\"),r(\"b86b\"),r(\"e61b\"),r(\"10b7\"),r(\"5980\"),r(\"7bbc\"),r(\"2b79\"),r(\"38ba\"),r(\"00bb\"),r(\"f4ea\"),r(\"aaef\"),r(\"4ba9\"),r(\"81bf\"),r(\"a817\"),r(\"a11b\"),r(\"8cef\"),r(\"2a66\"),r(\"b86c\"),r(\"6d08\"),r(\"c198\"),r(\"a40e\"),r(\"c3b6\"),r(\"1382\"),r(\"3d5a\"))})(0,(function(t){return t}))}",
    "3846": "function(t,e,r){r(\"9e1e\")&&\"g\"!=/./g.flags&&r(\"86cc\").f(RegExp.prototype,\"flags\",{configurable:!0,get:r(\"0bfb\")})}",
    "5980": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){(function(){var e=t,r=e.lib,n=r.Base,i=e.enc,o=i.Utf8,c=e.algo;c.HMAC=n.extend({init:function(t,e){t=this._hasher=new t.init,\"string\"==typeof e&&(e=o.parse(e));var r=t.blockSize,n=4*r;e.sigBytes>n&&(e=t.finalize(e)),e.clamp();for(var i=this._oKey=e.clone(),c=this._iKey=e.clone(),s=i.words,a=c.words,f=0;f<r;f++)s[f]^=1549556828,a[f]^=909522486;i.sigBytes=c.sigBytes=n,this.reset()},reset:function(){var t=this._hasher;t.reset(),t.update(this._iKey)},update:function(t){return this._hasher.update(t),this},finalize:function(t){var e=this._hasher,r=e.finalize(t);e.reset();var n=e.finalize(this._oKey.clone().concat(r));return n}})})()}))}",
    "7d92": "function(t,e,r){\"use strict\";r(\"6b54\");var n=r(\"3452\");function i(){for(var t=Math.round((new Date).getTime()/1e3).toString(),e=arguments.length,r=new Array(e),i=0;i<e;i++)r[i]=arguments[i];r.push(t);var o=n.SHA1(r.join(\",\")).toString(n.enc.Hex),c=n.enc.Base64.stringify(n.enc.Utf8.parse([o,t].join(\",\")));return c}e[\"a\"]=i}",
    "6b54": "function(t,e,r){\"use strict\";r(\"3846\");var n=r(\"cb7c\"),i=r(\"0bfb\"),o=r(\"9e1e\"),c=\"toString\",s=/./[c],a=function(t){r(\"2aba\")(RegExp.prototype,c,t,!0)};r(\"79e5\")((function(){return\"/a/b\"!=s.call({source:\"a\",flags:\"b\"})}))?a((function(){var t=n(this);return\"/\".concat(t.source,\"/\",\"flags\"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):s.name!=c&&a((function(){return s.call(this)}))}",
    "9e1e": "function(e,t,n){e.exports=!n(\"79e5\")((function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}))}",
    "cb7c": "function(e,t,n){var i=n(\"d3f4\");e.exports=function(e){if(!i(e))throw TypeError(e+\" is not an object!\");return e}}",
    "0bfb": "function(t,e,r){\"use strict\";var n=r(\"cb7c\");t.exports=function(){var t=n(this),e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.unicode&&(e+=\"u\"),t.sticky&&(e+=\"y\"),e}}",
    "79e5": "function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}}",
    "21bf": "function(t,e,r){(function(e,r){t.exports=r()})(0,(function(){var t=t||function(t,e){var r=Object.create||function(){function t(){}return function(e){var r;return t.prototype=e,r=new t,t.prototype=null,r}}(),n={},i=n.lib={},o=i.Base=function(){return{extend:function(t){var e=r(this);return t&&e.mixIn(t),e.hasOwnProperty(\"init\")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty(\"toString\")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),c=i.WordArray=o.extend({init:function(t,r){t=this.words=t||[],this.sigBytes=r!=e?r:4*t.length},toString:function(t){return(t||a).stringify(this)},concat:function(t){var e=this.words,r=t.words,n=this.sigBytes,i=t.sigBytes;if(this.clamp(),n%4)for(var o=0;o<i;o++){var c=r[o>>>2]>>>24-o%4*8&255;e[n+o>>>2]|=c<<24-(n+o)%4*8}else for(o=0;o<i;o+=4)e[n+o>>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,r=this.sigBytes;e[r>>>2]&=4294967295<<32-r%4*8,e.length=t.ceil(r/4)},clone:function(){var t=o.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var r,n=[],i=function(e){e=e;var r=987654321,n=4294967295;return function(){r=36969*(65535&r)+(r>>16)&n,e=18e3*(65535&e)+(e>>16)&n;var i=(r<<16)+e&n;return i/=4294967296,i+=.5,i*(t.random()>.5?1:-1)}},o=0;o<e;o+=4){var s=i(4294967296*(r||t.random()));r=987654071*s(),n.push(4294967296*s()|0)}return new c.init(n,e)}}),s=n.enc={},a=s.Hex={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i++){var o=e[i>>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join(\"\")},parse:function(t){for(var e=t.length,r=[],n=0;n<e;n+=2)r[n>>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new c.init(r,e/2)}},f=s.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i++){var o=e[i>>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join(\"\")},parse:function(t){for(var e=t.length,r=[],n=0;n<e;n++)r[n>>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new c.init(r,e)}},h=s.Utf8={stringify:function(t){try{return decodeURIComponent(escape(f.stringify(t)))}catch(e){throw new Error(\"Malformed UTF-8 data\")}},parse:function(t){return f.parse(unescape(encodeURIComponent(t)))}},u=i.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new c.init,this._nDataBytes=0},_append:function(t){\"string\"==typeof t&&(t=h.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var r=this._data,n=r.words,i=r.sigBytes,o=this.blockSize,s=4*o,a=i/s;a=e?t.ceil(a):t.max((0|a)-this._minBufferSize,0);var f=a*o,h=t.min(4*f,i);if(f){for(var u=0;u<f;u+=o)this._doProcessBlock(n,u);var l=n.splice(0,f);r.sigBytes-=h}return new c.init(l,h)},clone:function(){var t=o.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),l=(i.Hasher=u.extend({cfg:o.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){u.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){t&&this._append(t);var e=this._doFinalize();return e},blockSize:16,_createHelper:function(t){return function(e,r){return new t.init(r).finalize(e)}},_createHmacHelper:function(t){return function(e,r){return new l.HMAC.init(t,r).finalize(e)}}}),n.algo={});return n}(Math);return t}))}",
    "17e1": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(){if(\"function\"==typeof ArrayBuffer){var e=t,r=e.lib,n=r.WordArray,i=n.init,o=n.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||\"undefined\"!==typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var e=t.byteLength,r=[],n=0;n<e;n++)r[n>>>2]|=t[n]<<24-n%4*8;i.call(this,r,e)}else i.apply(this,arguments)};o.prototype=n}}(),t.lib.WordArray}))}",
    "a8ce": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.WordArray,i=e.enc;i.Utf16=i.Utf16BE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i+=2){var o=e[i>>>2]>>>16-i%4*8&65535;n.push(String.fromCharCode(o))}return n.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i<e;i++)r[i>>>1]|=t.charCodeAt(i)<<16-i%2*16;return n.create(r,2*e)}};function o(t){return t<<8&4278255360|t>>>8&16711935}i.Utf16LE={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i<r;i+=2){var c=o(e[i>>>2]>>>16-i%4*8&65535);n.push(String.fromCharCode(c))}return n.join(\"\")},parse:function(t){for(var e=t.length,r=[],i=0;i<e;i++)r[i>>>1]|=o(t.charCodeAt(i)<<16-i%2*16);return n.create(r,2*e)}}}(),t.enc.Utf16}))}",
    "72fe": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(e){var r=t,n=r.lib,i=n.WordArray,o=n.Hasher,c=r.algo,s=[];(function(){for(var t=0;t<64;t++)s[t]=4294967296*e.abs(e.sin(t+1))|0})();var a=c.MD5=o.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o=this._hash.words,c=t[e+0],a=t[e+1],d=t[e+2],p=t[e+3],v=t[e+4],_=t[e+5],y=t[e+6],g=t[e+7],b=t[e+8],B=t[e+9],w=t[e+10],k=t[e+11],x=t[e+12],S=t[e+13],m=t[e+14],H=t[e+15],A=o[0],z=o[1],C=o[2],R=o[3];A=f(A,z,C,R,c,7,s[0]),R=f(R,A,z,C,a,12,s[1]),C=f(C,R,A,z,d,17,s[2]),z=f(z,C,R,A,p,22,s[3]),A=f(A,z,C,R,v,7,s[4]),R=f(R,A,z,C,_,12,s[5]),C=f(C,R,A,z,y,17,s[6]),z=f(z,C,R,A,g,22,s[7]),A=f(A,z,C,R,b,7,s[8]),R=f(R,A,z,C,B,12,s[9]),C=f(C,R,A,z,w,17,s[10]),z=f(z,C,R,A,k,22,s[11]),A=f(A,z,C,R,x,7,s[12]),R=f(R,A,z,C,S,12,s[13]),C=f(C,R,A,z,m,17,s[14]),z=f(z,C,R,A,H,22,s[15]),A=h(A,z,C,R,a,5,s[16]),R=h(R,A,z,C,y,9,s[17]),C=h(C,R,A,z,k,14,s[18]),z=h(z,C,R,A,c,20,s[19]),A=h(A,z,C,R,_,5,s[20]),R=h(R,A,z,C,w,9,s[21]),C=h(C,R,A,z,H,14,s[22]),z=h(z,C,R,A,v,20,s[23]),A=h(A,z,C,R,B,5,s[24]),R=h(R,A,z,C,m,9,s[25]),C=h(C,R,A,z,p,14,s[26]),z=h(z,C,R,A,b,20,s[27]),A=h(A,z,C,R,S,5,s[28]),R=h(R,A,z,C,d,9,s[29]),C=h(C,R,A,z,g,14,s[30]),z=h(z,C,R,A,x,20,s[31]),A=u(A,z,C,R,_,4,s[32]),R=u(R,A,z,C,b,11,s[33]),C=u(C,R,A,z,k,16,s[34]),z=u(z,C,R,A,m,23,s[35]),A=u(A,z,C,R,a,4,s[36]),R=u(R,A,z,C,v,11,s[37]),C=u(C,R,A,z,g,16,s[38]),z=u(z,C,R,A,w,23,s[39]),A=u(A,z,C,R,S,4,s[40]),R=u(R,A,z,C,c,11,s[41]),C=u(C,R,A,z,p,16,s[42]),z=u(z,C,R,A,y,23,s[43]),A=u(A,z,C,R,B,4,s[44]),R=u(R,A,z,C,x,11,s[45]),C=u(C,R,A,z,H,16,s[46]),z=u(z,C,R,A,d,23,s[47]),A=l(A,z,C,R,c,6,s[48]),R=l(R,A,z,C,g,10,s[49]),C=l(C,R,A,z,m,15,s[50]),z=l(z,C,R,A,_,21,s[51]),A=l(A,z,C,R,x,6,s[52]),R=l(R,A,z,C,p,10,s[53]),C=l(C,R,A,z,w,15,s[54]),z=l(z,C,R,A,a,21,s[55]),A=l(A,z,C,R,b,6,s[56]),R=l(R,A,z,C,H,10,s[57]),C=l(C,R,A,z,y,15,s[58]),z=l(z,C,R,A,S,21,s[59]),A=l(A,z,C,R,v,6,s[60]),R=l(R,A,z,C,k,10,s[61]),C=l(C,R,A,z,d,15,s[62]),z=l(z,C,R,A,B,21,s[63]),o[0]=o[0]+A|0,o[1]=o[1]+z|0,o[2]=o[2]+C|0,o[3]=o[3]+R|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;r[i>>>5]|=128<<24-i%32;var o=e.floor(n/4294967296),c=n;r[15+(i+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(i+64>>>9<<4)]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),t.sigBytes=4*(r.length+1),this._process();for(var s=this._hash,a=s.words,f=0;f<4;f++){var h=a[f];a[f]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return s},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function f(t,e,r,n,i,o,c){var s=t+(e&r|~e&n)+i+c;return(s<<o|s>>>32-o)+e}function h(t,e,r,n,i,o,c){var s=t+(e&n|r&~n)+i+c;return(s<<o|s>>>32-o)+e}function u(t,e,r,n,i,o,c){var s=t+(e^r^n)+i+c;return(s<<o|s>>>32-o)+e}function l(t,e,r,n,i,o,c){var s=t+(r^(e|~n))+i+c;return(s<<o|s>>>32-o)+e}r.MD5=o._createHelper(a),r.HmacMD5=o._createHmacHelper(a)}(Math),t.MD5}))}",
    "df2f": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.WordArray,i=r.Hasher,o=e.algo,c=[],s=o.SHA1=i.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],s=r[3],a=r[4],f=0;f<80;f++){if(f<16)c[f]=0|t[e+f];else{var h=c[f-3]^c[f-8]^c[f-14]^c[f-16];c[f]=h<<1|h>>>31}var u=(n<<5|n>>>27)+a+c[f];u+=f<20?1518500249+(i&o|~i&s):f<40?1859775393+(i^o^s):f<60?(i&o|i&s|o&s)-1894007588:(i^o^s)-899497514,a=s,s=o,o=i<<30|i>>>2,i=n,n=u}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=Math.floor(r/4294967296),e[15+(n+64>>>9<<4)]=r,t.sigBytes=4*e.length,this._process(),this._hash},clone:function(){var t=i.clone.call(this);return t._hash=this._hash.clone(),t}});e.SHA1=i._createHelper(s),e.HmacSHA1=i._createHmacHelper(s)}(),t.SHA1}))}",
    "94f8": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){return function(e){var r=t,n=r.lib,i=n.WordArray,o=n.Hasher,c=r.algo,s=[],a=[];(function(){function t(t){for(var r=e.sqrt(t),n=2;n<=r;n++)if(!(t%n))return!1;return!0}function r(t){return 4294967296*(t-(0|t))|0}var n=2,i=0;while(i<64)t(n)&&(i<8&&(s[i]=r(e.pow(n,.5))),a[i]=r(e.pow(n,1/3)),i++),n++})();var f=[],h=c.SHA256=o.extend({_doReset:function(){this._hash=new i.init(s.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],c=r[3],s=r[4],h=r[5],u=r[6],l=r[7],d=0;d<64;d++){if(d<16)f[d]=0|t[e+d];else{var p=f[d-15],v=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=f[d-2],y=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;f[d]=v+f[d-7]+y+f[d-16]}var g=s&h^~s&u,b=n&i^n&o^i&o,B=(n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22),w=(s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25),k=l+w+g+a[d]+f[d],x=B+b;l=u,u=h,h=s,s=c+k|0,c=o,o=i,i=n,n=k+x|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+c|0,r[4]=r[4]+s|0,r[5]=r[5]+h|0,r[6]=r[6]+u|0,r[7]=r[7]+l|0},_doFinalize:function(){var t=this._data,r=t.words,n=8*this._nDataBytes,i=8*t.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=e.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});r.SHA256=o._createHelper(h),r.HmacSHA256=o._createHmacHelper(h)}(Math),t.SHA256}))}",
    "191b": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"94f8\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.WordArray,i=e.algo,o=i.SHA256,c=i.SHA224=o.extend({_doReset:function(){this._hash=new n.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var t=o._doFinalize.call(this);return t.sigBytes-=4,t}});e.SHA224=o._createHelper(c),e.HmacSHA224=o._createHmacHelper(c)}(),t.SHA224}))}",
    "d6e6": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"3252\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.Hasher,i=e.x64,o=i.Word,c=i.WordArray,s=e.algo;function a(){return o.create.apply(o,arguments)}var f=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],h=[];(function(){for(var t=0;t<80;t++)h[t]=a()})();var u=s.SHA512=n.extend({_doReset:function(){this._hash=new c.init([new o.init(1779033703,4089235720),new o.init(3144134277,2227873595),new o.init(1013904242,4271175723),new o.init(2773480762,1595750129),new o.init(1359893119,2917565137),new o.init(2600822924,725511199),new o.init(528734635,4215389547),new o.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],c=r[3],s=r[4],a=r[5],u=r[6],l=r[7],d=n.high,p=n.low,v=i.high,_=i.low,y=o.high,g=o.low,b=c.high,B=c.low,w=s.high,k=s.low,x=a.high,S=a.low,m=u.high,H=u.low,A=l.high,z=l.low,C=d,R=p,D=v,E=_,M=y,F=g,P=b,W=B,O=w,U=k,I=x,K=S,X=m,j=H,L=A,T=z,N=0;N<80;N++){var Z=h[N];if(N<16)var q=Z.high=0|t[e+2*N],G=Z.low=0|t[e+2*N+1];else{var J=h[N-15],$=J.high,Q=J.low,V=($>>>1|Q<<31)^($>>>8|Q<<24)^$>>>7,Y=(Q>>>1|$<<31)^(Q>>>8|$<<24)^(Q>>>7|$<<25),tt=h[N-2],et=tt.high,rt=tt.low,nt=(et>>>19|rt<<13)^(et<<3|rt>>>29)^et>>>6,it=(rt>>>19|et<<13)^(rt<<3|et>>>29)^(rt>>>6|et<<26),ot=h[N-7],ct=ot.high,st=ot.low,at=h[N-16],ft=at.high,ht=at.low;G=Y+st,q=V+ct+(G>>>0<Y>>>0?1:0),G=G+it,q=q+nt+(G>>>0<it>>>0?1:0),G=G+ht,q=q+ft+(G>>>0<ht>>>0?1:0);Z.high=q,Z.low=G}var ut=O&I^~O&X,lt=U&K^~U&j,dt=C&D^C&M^D&M,pt=R&E^R&F^E&F,vt=(C>>>28|R<<4)^(C<<30|R>>>2)^(C<<25|R>>>7),_t=(R>>>28|C<<4)^(R<<30|C>>>2)^(R<<25|C>>>7),yt=(O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9),gt=(U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9),bt=f[N],Bt=bt.high,wt=bt.low,kt=T+gt,xt=L+yt+(kt>>>0<T>>>0?1:0),St=(kt=kt+lt,xt=xt+ut+(kt>>>0<lt>>>0?1:0),kt=kt+wt,xt=xt+Bt+(kt>>>0<wt>>>0?1:0),kt=kt+G,xt=xt+q+(kt>>>0<G>>>0?1:0),_t+pt),mt=vt+dt+(St>>>0<_t>>>0?1:0);L=X,T=j,X=I,j=K,I=O,K=U,U=W+kt|0,O=P+xt+(U>>>0<W>>>0?1:0)|0,P=M,W=F,M=D,F=E,D=C,E=R,R=kt+St|0,C=xt+mt+(R>>>0<kt>>>0?1:0)|0}p=n.low=p+R,n.high=d+C+(p>>>0<R>>>0?1:0),_=i.low=_+E,i.high=v+D+(_>>>0<E>>>0?1:0),g=o.low=g+F,o.high=y+M+(g>>>0<F>>>0?1:0),B=c.low=B+W,c.high=b+P+(B>>>0<W>>>0?1:0),k=s.low=k+U,s.high=w+O+(k>>>0<U>>>0?1:0),S=a.low=S+K,a.high=x+I+(S>>>0<K>>>0?1:0),H=u.low=H+j,u.high=m+X+(H>>>0<j>>>0?1:0),z=l.low=z+T,l.high=A+L+(z>>>0<T>>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(n+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process();var i=this._hash.toX32();return i},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32});e.SHA512=n._createHelper(u),e.HmacSHA512=n._createHmacHelper(u)}(),t.SHA512}))}",
    "b86b": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"3252\"),r(\"d6e6\"))})(0,(function(t){return function(){var e=t,r=e.x64,n=r.Word,i=r.WordArray,o=e.algo,c=o.SHA512,s=o.SHA384=c.extend({_doReset:function(){this._hash=new i.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var t=c._doFinalize.call(this);return t.sigBytes-=16,t}});e.SHA384=c._createHelper(s),e.HmacSHA384=c._createHmacHelper(s)}(),t.SHA384}))}",
    "e61b": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"3252\"))})(0,(function(t){return function(e){var r=t,n=r.lib,i=n.WordArray,o=n.Hasher,c=r.x64,s=c.Word,a=r.algo,f=[],h=[],u=[];(function(){for(var t=1,e=0,r=0;r<24;r++){f[t+5*e]=(r+1)*(r+2)/2%64;var n=e%5,i=(2*t+3*e)%5;t=n,e=i}for(t=0;t<5;t++)for(e=0;e<5;e++)h[t+5*e]=e+(2*t+3*e)%5*5;for(var o=1,c=0;c<24;c++){for(var a=0,l=0,d=0;d<7;d++){if(1&o){var p=(1<<d)-1;p<32?l^=1<<p:a^=1<<p-32}128&o?o=o<<1^113:o<<=1}u[c]=s.create(a,l)}})();var l=[];(function(){for(var t=0;t<25;t++)l[t]=s.create()})();var d=a.SHA3=o.extend({cfg:o.cfg.extend({outputLength:512}),_doReset:function(){for(var t=this._state=[],e=0;e<25;e++)t[e]=new s.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(t,e){for(var r=this._state,n=this.blockSize/2,i=0;i<n;i++){var o=t[e+2*i],c=t[e+2*i+1];o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),c=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8);var s=r[i];s.high^=c,s.low^=o}for(var a=0;a<24;a++){for(var d=0;d<5;d++){for(var p=0,v=0,_=0;_<5;_++){s=r[d+5*_];p^=s.high,v^=s.low}var y=l[d];y.high=p,y.low=v}for(d=0;d<5;d++){var g=l[(d+4)%5],b=l[(d+1)%5],B=b.high,w=b.low;for(p=g.high^(B<<1|w>>>31),v=g.low^(w<<1|B>>>31),_=0;_<5;_++){s=r[d+5*_];s.high^=p,s.low^=v}}for(var k=1;k<25;k++){s=r[k];var x=s.high,S=s.low,m=f[k];if(m<32)p=x<<m|S>>>32-m,v=S<<m|x>>>32-m;else p=S<<m-32|x>>>64-m,v=x<<m-32|S>>>64-m;var H=l[h[k]];H.high=p,H.low=v}var A=l[0],z=r[0];A.high=z.high,A.low=z.low;for(d=0;d<5;d++)for(_=0;_<5;_++){k=d+5*_,s=r[k];var C=l[k],R=l[(d+1)%5+5*_],D=l[(d+2)%5+5*_];s.high=C.high^~R.high&D.high,s.low=C.low^~R.low&D.low}s=r[0];var E=u[a];s.high^=E.high,s.low^=E.low}},_doFinalize:function(){var t=this._data,r=t.words,n=(this._nDataBytes,8*t.sigBytes),o=32*this.blockSize;r[n>>>5]|=1<<24-n%32,r[(e.ceil((n+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var c=this._state,s=this.cfg.outputLength/8,a=s/8,f=[],h=0;h<a;h++){var u=c[h],l=u.high,d=u.low;l=16711935&(l<<8|l>>>24)|4278255360&(l<<24|l>>>8),d=16711935&(d<<8|d>>>24)|4278255360&(d<<24|d>>>8),f.push(d),f.push(l)}return new i.init(f,s)},clone:function(){for(var t=o.clone.call(this),e=t._state=this._state.slice(0),r=0;r<25;r++)e[r]=e[r].clone();return t}});r.SHA3=o._createHelper(d),r.HmacSHA3=o._createHmacHelper(d)}(Math),t.SHA3}))}",
    "10b7": "function(t,e,r){(function(e,n){t.exports=n(r(\"21bf\"))})(0,(function(t){\n/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\nreturn function(e){var r=t,n=r.lib,i=n.WordArray,o=n.Hasher,c=r.algo,s=i.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),a=i.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),f=i.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=i.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=i.create([0,1518500249,1859775393,2400959708,2840853838]),l=i.create([1352829926,1548603684,1836072691,2053994217,0]),d=c.RIPEMD160=o.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(t,e){for(var r=0;r<16;r++){var n=e+r,i=t[n];t[n]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8)}var o,c,d,B,w,k,x,S,m,H,A,z=this._hash.words,C=u.words,R=l.words,D=s.words,E=a.words,M=f.words,F=h.words;k=o=z[0],x=c=z[1],S=d=z[2],m=B=z[3],H=w=z[4];for(r=0;r<80;r+=1)A=o+t[e+D[r]]|0,A+=r<16?p(c,d,B)+C[0]:r<32?v(c,d,B)+C[1]:r<48?_(c,d,B)+C[2]:r<64?y(c,d,B)+C[3]:g(c,d,B)+C[4],A|=0,A=b(A,M[r]),A=A+w|0,o=w,w=B,B=b(d,10),d=c,c=A,A=k+t[e+E[r]]|0,A+=r<16?g(x,S,m)+R[0]:r<32?y(x,S,m)+R[1]:r<48?_(x,S,m)+R[2]:r<64?v(x,S,m)+R[3]:p(x,S,m)+R[4],A|=0,A=b(A,F[r]),A=A+H|0,k=H,H=m,m=b(S,10),S=x,x=A;A=z[1]+d+m|0,z[1]=z[2]+B+H|0,z[2]=z[3]+w+k|0,z[3]=z[4]+o+x|0,z[4]=z[0]+c+S|0,z[0]=A},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;e[n>>>5]|=128<<24-n%32,e[14+(n+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(e.length+1),this._process();for(var i=this._hash,o=i.words,c=0;c<5;c++){var s=o[c];o[c]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return i},clone:function(){var t=o.clone.call(this);return t._hash=this._hash.clone(),t}});function p(t,e,r){return t^e^r}function v(t,e,r){return t&e|~t&r}function _(t,e,r){return(t|~e)^r}function y(t,e,r){return t&r|e&~r}function g(t,e,r){return t^(e|~r)}function b(t,e){return t<<e|t>>>32-e}r.RIPEMD160=o._createHelper(d),r.HmacRIPEMD160=o._createHmacHelper(d)}(Math),t.RIPEMD160}))}",
    "7bbc": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"df2f\"),r(\"5980\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.Base,i=r.WordArray,o=e.algo,c=o.SHA1,s=o.HMAC,a=o.PBKDF2=n.extend({cfg:n.extend({keySize:4,hasher:c,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var r=this.cfg,n=s.create(r.hasher,t),o=i.create(),c=i.create([1]),a=o.words,f=c.words,h=r.keySize,u=r.iterations;while(a.length<h){var l=n.update(e).finalize(c);n.reset();for(var d=l.words,p=d.length,v=l,_=1;_<u;_++){v=n.finalize(v),n.reset();for(var y=v.words,g=0;g<p;g++)d[g]^=y[g]}o.concat(l),f[0]++}return o.sigBytes=4*h,o}});e.PBKDF2=function(t,e,r){return a.create(r).compute(t,e)}}(),t.PBKDF2}))}",
    "2b79": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"df2f\"),r(\"5980\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.Base,i=r.WordArray,o=e.algo,c=o.MD5,s=o.EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:c,iterations:1}),init:function(t){this.cfg=this.cfg.extend(t)},compute:function(t,e){var r=this.cfg,n=r.hasher.create(),o=i.create(),c=o.words,s=r.keySize,a=r.iterations;while(c.length<s){f&&n.update(f);var f=n.update(t).finalize(e);n.reset();for(var h=1;h<a;h++)f=n.finalize(f),n.reset();o.concat(f)}return o.sigBytes=4*s,o}});e.EvpKDF=function(t,e,r){return s.create(r).compute(t,e)}}(),t.EvpKDF}))}",
    "38ba": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"2b79\"))})(0,(function(t){t.lib.Cipher||function(e){var r=t,n=r.lib,i=n.Base,o=n.WordArray,c=n.BufferedBlockAlgorithm,s=r.enc,a=(s.Utf8,s.Base64),f=r.algo,h=f.EvpKDF,u=n.Cipher=c.extend({cfg:i.extend(),createEncryptor:function(t,e){return this.create(this._ENC_XFORM_MODE,t,e)},createDecryptor:function(t,e){return this.create(this._DEC_XFORM_MODE,t,e)},init:function(t,e,r){this.cfg=this.cfg.extend(r),this._xformMode=t,this._key=e,this.reset()},reset:function(){c.reset.call(this),this._doReset()},process:function(t){return this._append(t),this._process()},finalize:function(t){t&&this._append(t);var e=this._doFinalize();return e},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(){function t(t){return\"string\"==typeof t?x:B}return function(e){return{encrypt:function(r,n,i){return t(n).encrypt(e,r,n,i)},decrypt:function(r,n,i){return t(n).decrypt(e,r,n,i)}}}}()}),l=(n.StreamCipher=u.extend({_doFinalize:function(){var t=this._process(!0);return t},blockSize:1}),r.mode={}),d=n.BlockCipherMode=i.extend({createEncryptor:function(t,e){return this.Encryptor.create(t,e)},createDecryptor:function(t,e){return this.Decryptor.create(t,e)},init:function(t,e){this._cipher=t,this._iv=e}}),p=l.CBC=function(){var t=d.extend();function r(t,r,n){var i=this._iv;if(i){var o=i;this._iv=e}else o=this._prevBlock;for(var c=0;c<n;c++)t[r+c]^=o[c]}return t.Encryptor=t.extend({processBlock:function(t,e){var n=this._cipher,i=n.blockSize;r.call(this,t,e,i),n.encryptBlock(t,e),this._prevBlock=t.slice(e,e+i)}}),t.Decryptor=t.extend({processBlock:function(t,e){var n=this._cipher,i=n.blockSize,o=t.slice(e,e+i);n.decryptBlock(t,e),r.call(this,t,e,i),this._prevBlock=o}}),t}(),v=r.pad={},_=v.Pkcs7={pad:function(t,e){for(var r=4*e,n=r-t.sigBytes%r,i=n<<24|n<<16|n<<8|n,c=[],s=0;s<n;s+=4)c.push(i);var a=o.create(c,n);t.concat(a)},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},y=(n.BlockCipher=u.extend({cfg:u.cfg.extend({mode:p,padding:_}),reset:function(){u.reset.call(this);var t=this.cfg,e=t.iv,r=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=r.createEncryptor;else{n=r.createDecryptor;this._minBufferSize=1}this._mode&&this._mode.__creator==n?this._mode.init(this,e&&e.words):(this._mode=n.call(r,this,e&&e.words),this._mode.__creator=n)},_doProcessBlock:function(t,e){this._mode.processBlock(t,e)},_doFinalize:function(){var t=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){t.pad(this._data,this.blockSize);var e=this._process(!0)}else{e=this._process(!0);t.unpad(e)}return e},blockSize:4}),n.CipherParams=i.extend({init:function(t){this.mixIn(t)},toString:function(t){return(t||this.formatter).stringify(this)}})),g=r.format={},b=g.OpenSSL={stringify:function(t){var e=t.ciphertext,r=t.salt;if(r)var n=o.create([1398893684,1701076831]).concat(r).concat(e);else n=e;return n.toString(a)},parse:function(t){var e=a.parse(t),r=e.words;if(1398893684==r[0]&&1701076831==r[1]){var n=o.create(r.slice(2,4));r.splice(0,4),e.sigBytes-=16}return y.create({ciphertext:e,salt:n})}},B=n.SerializableCipher=i.extend({cfg:i.extend({format:b}),encrypt:function(t,e,r,n){n=this.cfg.extend(n);var i=t.createEncryptor(r,n),o=i.finalize(e),c=i.cfg;return y.create({ciphertext:o,key:r,iv:c.iv,algorithm:t,mode:c.mode,padding:c.padding,blockSize:t.blockSize,formatter:n.format})},decrypt:function(t,e,r,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var i=t.createDecryptor(r,n).finalize(e.ciphertext);return i},_parse:function(t,e){return\"string\"==typeof t?e.parse(t,this):t}}),w=r.kdf={},k=w.OpenSSL={execute:function(t,e,r,n){n||(n=o.random(8));var i=h.create({keySize:e+r}).compute(t,n),c=o.create(i.words.slice(e),4*r);return i.sigBytes=4*e,y.create({key:i,iv:c,salt:n})}},x=n.PasswordBasedCipher=B.extend({cfg:B.cfg.extend({kdf:k}),encrypt:function(t,e,r,n){n=this.cfg.extend(n);var i=n.kdf.execute(r,t.keySize,t.ivSize);n.iv=i.iv;var o=B.encrypt.call(this,t,e,i.key,n);return o.mixIn(i),o},decrypt:function(t,e,r,n){n=this.cfg.extend(n),e=this._parse(e,n.format);var i=n.kdf.execute(r,t.keySize,t.ivSize,e.salt);n.iv=i.iv;var o=B.decrypt.call(this,t,e,i.key,n);return o}})}()}))}",
    "00bb": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.mode.CFB=function(){var e=t.lib.BlockCipherMode.extend();function r(t,e,r,n){var i=this._iv;if(i){var o=i.slice(0);this._iv=void 0}else o=this._prevBlock;n.encryptBlock(o,0);for(var c=0;c<r;c++)t[e+c]^=o[c]}return e.Encryptor=e.extend({processBlock:function(t,e){var n=this._cipher,i=n.blockSize;r.call(this,t,e,i,n),this._prevBlock=t.slice(e,e+i)}}),e.Decryptor=e.extend({processBlock:function(t,e){var n=this._cipher,i=n.blockSize,o=t.slice(e,e+i);r.call(this,t,e,i,n),this._prevBlock=o}}),e}(),t.mode.CFB}))}",
    "f4ea": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.mode.CTR=function(){var e=t.lib.BlockCipherMode.extend(),r=e.Encryptor=e.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,i=this._iv,o=this._counter;i&&(o=this._counter=i.slice(0),this._iv=void 0);var c=o.slice(0);r.encryptBlock(c,0),o[n-1]=o[n-1]+1|0;for(var s=0;s<n;s++)t[e+s]^=c[s]}});return e.Decryptor=r,e}(),t.mode.CTR}))}",
    "aaef": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){\n/** @preserve\n\t * Counter block mode compatible with  Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\nreturn t.mode.CTRGladman=function(){var e=t.lib.BlockCipherMode.extend();function r(t){if(255===(t>>24&255)){var e=t>>16&255,r=t>>8&255,n=255&t;255===e?(e=0,255===r?(r=0,255===n?n=0:++n):++r):++e,t=0,t+=e<<16,t+=r<<8,t+=n}else t+=1<<24;return t}function n(t){return 0===(t[0]=r(t[0]))&&(t[1]=r(t[1])),t}var i=e.Encryptor=e.extend({processBlock:function(t,e){var r=this._cipher,i=r.blockSize,o=this._iv,c=this._counter;o&&(c=this._counter=o.slice(0),this._iv=void 0),n(c);var s=c.slice(0);r.encryptBlock(s,0);for(var a=0;a<i;a++)t[e+a]^=s[a]}});return e.Decryptor=i,e}(),t.mode.CTRGladman}))}",
    "4ba9": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.mode.OFB=function(){var e=t.lib.BlockCipherMode.extend(),r=e.Encryptor=e.extend({processBlock:function(t,e){var r=this._cipher,n=r.blockSize,i=this._iv,o=this._keystream;i&&(o=this._keystream=i.slice(0),this._iv=void 0),r.encryptBlock(o,0);for(var c=0;c<n;c++)t[e+c]^=o[c]}});return e.Decryptor=r,e}(),t.mode.OFB}))}",
    "81bf": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.mode.ECB=function(){var e=t.lib.BlockCipherMode.extend();return e.Encryptor=e.extend({processBlock:function(t,e){this._cipher.encryptBlock(t,e)}}),e.Decryptor=e.extend({processBlock:function(t,e){this._cipher.decryptBlock(t,e)}}),e}(),t.mode.ECB}))}",
    "a817": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.pad.AnsiX923={pad:function(t,e){var r=t.sigBytes,n=4*e,i=n-r%n,o=r+i-1;t.clamp(),t.words[o>>>2]|=i<<24-o%4*8,t.sigBytes+=i},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Ansix923}))}",
    "a11b": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.pad.Iso10126={pad:function(e,r){var n=4*r,i=n-e.sigBytes%n;e.concat(t.lib.WordArray.random(i-1)).concat(t.lib.WordArray.create([i<<24],1))},unpad:function(t){var e=255&t.words[t.sigBytes-1>>>2];t.sigBytes-=e}},t.pad.Iso10126}))}",
    "8cef": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.pad.Iso97971={pad:function(e,r){e.concat(t.lib.WordArray.create([2147483648],1)),t.pad.ZeroPadding.pad(e,r)},unpad:function(e){t.pad.ZeroPadding.unpad(e),e.sigBytes--}},t.pad.Iso97971}))}",
    "2a66": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.pad.ZeroPadding={pad:function(t,e){var r=4*e;t.clamp(),t.sigBytes+=r-(t.sigBytes%r||r)},unpad:function(t){var e=t.words,r=t.sigBytes-1;while(!(e[r>>>2]>>>24-r%4*8&255))r--;t.sigBytes=r+1}},t.pad.ZeroPadding}))}",
    "b86c": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return t.pad.NoPadding={pad:function(){},unpad:function(){}},t.pad.NoPadding}))}",
    "6d08": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"38ba\"))})(0,(function(t){return function(e){var r=t,n=r.lib,i=n.CipherParams,o=r.enc,c=o.Hex,s=r.format;s.Hex={stringify:function(t){return t.ciphertext.toString(c)},parse:function(t){var e=c.parse(t);return i.create({ciphertext:e})}}}(),t.format.Hex}))}",
    "c198": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"1132\"),r(\"72fe\"),r(\"2b79\"),r(\"38ba\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.BlockCipher,i=e.algo,o=[],c=[],s=[],a=[],f=[],h=[],u=[],l=[],d=[],p=[];(function(){for(var t=[],e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;var r=0,n=0;for(e=0;e<256;e++){var i=n^n<<1^n<<2^n<<3^n<<4;i=i>>>8^255&i^99,o[r]=i,c[i]=r;var v=t[r],_=t[v],y=t[_],g=257*t[i]^16843008*i;s[r]=g<<24|g>>>8,a[r]=g<<16|g>>>16,f[r]=g<<8|g>>>24,h[r]=g;g=16843009*y^65537*_^257*v^16843008*r;u[i]=g<<24|g>>>8,l[i]=g<<16|g>>>16,d[i]=g<<8|g>>>24,p[i]=g,r?(r=v^t[t[t[y^v]]],n^=t[t[n]]):r=n=1}})();var v=[0,1,2,4,8,16,32,64,128,27,54],_=i.AES=n.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var t=this._keyPriorReset=this._key,e=t.words,r=t.sigBytes/4,n=this._nRounds=r+6,i=4*(n+1),c=this._keySchedule=[],s=0;s<i;s++)if(s<r)c[s]=e[s];else{var a=c[s-1];s%r?r>6&&s%r==4&&(a=o[a>>>24]<<24|o[a>>>16&255]<<16|o[a>>>8&255]<<8|o[255&a]):(a=a<<8|a>>>24,a=o[a>>>24]<<24|o[a>>>16&255]<<16|o[a>>>8&255]<<8|o[255&a],a^=v[s/r|0]<<24),c[s]=c[s-r]^a}for(var f=this._invKeySchedule=[],h=0;h<i;h++){s=i-h;if(h%4)a=c[s];else a=c[s-4];f[h]=h<4||s<=4?a:u[o[a>>>24]]^l[o[a>>>16&255]]^d[o[a>>>8&255]]^p[o[255&a]]}}},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._keySchedule,s,a,f,h,o)},decryptBlock:function(t,e){var r=t[e+1];t[e+1]=t[e+3],t[e+3]=r,this._doCryptBlock(t,e,this._invKeySchedule,u,l,d,p,c);r=t[e+1];t[e+1]=t[e+3],t[e+3]=r},_doCryptBlock:function(t,e,r,n,i,o,c,s){for(var a=this._nRounds,f=t[e]^r[0],h=t[e+1]^r[1],u=t[e+2]^r[2],l=t[e+3]^r[3],d=4,p=1;p<a;p++){var v=n[f>>>24]^i[h>>>16&255]^o[u>>>8&255]^c[255&l]^r[d++],_=n[h>>>24]^i[u>>>16&255]^o[l>>>8&255]^c[255&f]^r[d++],y=n[u>>>24]^i[l>>>16&255]^o[f>>>8&255]^c[255&h]^r[d++],g=n[l>>>24]^i[f>>>16&255]^o[h>>>8&255]^c[255&u]^r[d++];f=v,h=_,u=y,l=g}v=(s[f>>>24]<<24|s[h>>>16&255]<<16|s[u>>>8&255]<<8|s[255&l])^r[d++],_=(s[h>>>24]<<24|s[u>>>16&255]<<16|s[l>>>8&255]<<8|s[255&f])^r[d++],y=(s[u>>>24]<<24|s[l>>>16&255]<<16|s[f>>>8&255]<<8|s[255&h])^r[d++],g=(s[l>>>24]<<24|s[f>>>16&255]<<16|s[h>>>8&255]<<8|s[255&u])^r[d++];t[e]=v,t[e+1]=_,t[e+2]=y,t[e+3]=g},keySize:8});e.AES=n._createHelper(_)}(),t.AES}))}",
    "a40e": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"1132\"),r(\"72fe\"),r(\"2b79\"),r(\"38ba\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.WordArray,i=r.BlockCipher,o=e.algo,c=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],s=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],a=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],f=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=o.DES=i.extend({_doReset:function(){for(var t=this._key,e=t.words,r=[],n=0;n<56;n++){var i=c[n]-1;r[n]=e[i>>>5]>>>31-i%32&1}for(var o=this._subKeys=[],f=0;f<16;f++){var h=o[f]=[],u=a[f];for(n=0;n<24;n++)h[n/6|0]|=r[(s[n]-1+u)%28]<<31-n%6,h[4+(n/6|0)]|=r[28+(s[n+24]-1+u)%28]<<31-n%6;h[0]=h[0]<<1|h[0]>>>31;for(n=1;n<7;n++)h[n]=h[n]>>>4*(n-1)+3;h[7]=h[7]<<5|h[7]>>>27}var l=this._invSubKeys=[];for(n=0;n<16;n++)l[n]=o[15-n]},encryptBlock:function(t,e){this._doCryptBlock(t,e,this._subKeys)},decryptBlock:function(t,e){this._doCryptBlock(t,e,this._invSubKeys)},_doCryptBlock:function(t,e,r){this._lBlock=t[e],this._rBlock=t[e+1],l.call(this,4,252645135),l.call(this,16,65535),d.call(this,2,858993459),d.call(this,8,16711935),l.call(this,1,1431655765);for(var n=0;n<16;n++){for(var i=r[n],o=this._lBlock,c=this._rBlock,s=0,a=0;a<8;a++)s|=f[a][((c^i[a])&h[a])>>>0];this._lBlock=c,this._rBlock=o^s}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,l.call(this,1,1431655765),d.call(this,8,16711935),d.call(this,2,858993459),l.call(this,16,65535),l.call(this,4,252645135),t[e]=this._lBlock,t[e+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function l(t,e){var r=(this._lBlock>>>t^this._rBlock)&e;this._rBlock^=r,this._lBlock^=r<<t}function d(t,e){var r=(this._rBlock>>>t^this._lBlock)&e;this._lBlock^=r,this._rBlock^=r<<t}e.DES=i._createHelper(u);var p=o.TripleDES=i.extend({_doReset:function(){var t=this._key,e=t.words;this._des1=u.createEncryptor(n.create(e.slice(0,2))),this._des2=u.createEncryptor(n.create(e.slice(2,4))),this._des3=u.createEncryptor(n.create(e.slice(4,6)))},encryptBlock:function(t,e){this._des1.encryptBlock(t,e),this._des2.decryptBlock(t,e),this._des3.encryptBlock(t,e)},decryptBlock:function(t,e){this._des3.decryptBlock(t,e),this._des2.encryptBlock(t,e),this._des1.decryptBlock(t,e)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=i._createHelper(p)}(),t.TripleDES}))}",
    "c3b6": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"1132\"),r(\"72fe\"),r(\"2b79\"),r(\"38ba\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.StreamCipher,i=e.algo,o=i.RC4=n.extend({_doReset:function(){for(var t=this._key,e=t.words,r=t.sigBytes,n=this._S=[],i=0;i<256;i++)n[i]=i;i=0;for(var o=0;i<256;i++){var c=i%r,s=e[c>>>2]>>>24-c%4*8&255;o=(o+n[i]+s)%256;var a=n[i];n[i]=n[o],n[o]=a}this._i=this._j=0},_doProcessBlock:function(t,e){t[e]^=c.call(this)},keySize:8,ivSize:0});function c(){for(var t=this._S,e=this._i,r=this._j,n=0,i=0;i<4;i++){e=(e+1)%256,r=(r+t[e])%256;var o=t[e];t[e]=t[r],t[r]=o,n|=t[(t[e]+t[r])%256]<<24-8*i}return this._i=e,this._j=r,n}e.RC4=n._createHelper(o);var s=i.RC4Drop=o.extend({cfg:o.cfg.extend({drop:192}),_doReset:function(){o._doReset.call(this);for(var t=this.cfg.drop;t>0;t--)c.call(this)}});e.RC4Drop=n._createHelper(s)}(),t.RC4}))}",
    "3d5a": "function(t,e,r){(function(e,n,i){t.exports=n(r(\"21bf\"),r(\"1132\"),r(\"72fe\"),r(\"2b79\"),r(\"38ba\"))})(0,(function(t){return function(){var e=t,r=e.lib,n=r.StreamCipher,i=e.algo,o=[],c=[],s=[],a=i.RabbitLegacy=n.extend({_doReset:function(){var t=this._key.words,e=this.cfg.iv,r=this._X=[t[0],t[3]<<16|t[2]>>>16,t[1],t[0]<<16|t[3]>>>16,t[2],t[1]<<16|t[0]>>>16,t[3],t[2]<<16|t[1]>>>16],n=this._C=[t[2]<<16|t[2]>>>16,4294901760&t[0]|65535&t[1],t[3]<<16|t[3]>>>16,4294901760&t[1]|65535&t[2],t[0]<<16|t[0]>>>16,4294901760&t[2]|65535&t[3],t[1]<<16|t[1]>>>16,4294901760&t[3]|65535&t[0]];this._b=0;for(var i=0;i<4;i++)f.call(this);for(i=0;i<8;i++)n[i]^=r[i+4&7];if(e){var o=e.words,c=o[0],s=o[1],a=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),h=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=a>>>16|4294901760&h,l=h<<16|65535&a;n[0]^=a,n[1]^=u,n[2]^=h,n[3]^=l,n[4]^=a,n[5]^=u,n[6]^=h,n[7]^=l;for(i=0;i<4;i++)f.call(this)}},_doProcessBlock:function(t,e){var r=this._X;f.call(this),o[0]=r[0]^r[5]>>>16^r[3]<<16,o[1]=r[2]^r[7]>>>16^r[5]<<16,o[2]=r[4]^r[1]>>>16^r[7]<<16,o[3]=r[6]^r[3]>>>16^r[1]<<16;for(var n=0;n<4;n++)o[n]=16711935&(o[n]<<8|o[n]>>>24)|4278255360&(o[n]<<24|o[n]>>>8),t[e+n]^=o[n]},blockSize:4,ivSize:2});function f(){for(var t=this._X,e=this._C,r=0;r<8;r++)c[r]=e[r];e[0]=e[0]+1295307597+this._b|0,e[1]=e[1]+3545052371+(e[0]>>>0<c[0]>>>0?1:0)|0,e[2]=e[2]+886263092+(e[1]>>>0<c[1]>>>0?1:0)|0,e[3]=e[3]+1295307597+(e[2]>>>0<c[2]>>>0?1:0)|0,e[4]=e[4]+3545052371+(e[3]>>>0<c[3]>>>0?1:0)|0,e[5]=e[5]+886263092+(e[4]>>>0<c[4]>>>0?1:0)|0,e[6]=e[6]+1295307597+(e[5]>>>0<c[5]>>>0?1:0)|0,e[7]=e[7]+3545052371+(e[6]>>>0<c[6]>>>0?1:0)|0,this._b=e[7]>>>0<c[7]>>>0?1:0;for(r=0;r<8;r++){var n=t[r]+e[r],i=65535&n,o=n>>>16,a=((i*i>>>17)+i*o>>>15)+o*o,f=((4294901760&n)*n|0)+((65535&n)*n|0);s[r]=a^f}t[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,t[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,t[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,t[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,t[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,t[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,t[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,t[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.RabbitLegacy=n._createHelper(a)}(),t.RabbitLegacy}))}"
}

最后的结果

python 复制代码
import subprocess
import os
import json
import urllib.request
import urllib.parse
import email.utils
import time


JS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'hh.js')
BASE_URL = 'https://spa2.scrape.center'

headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'DNT': '1',
    'Pragma': 'no-cache',
    'Referer': 'https://spa2.scrape.center/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36 Edg/151.0.0.0',
    'sec-ch-ua': '"Not=A?Brand";v="99", "Microsoft Edge";v="151", "Chromium";v="151"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}


def get_server_ts():
    """请求首页,从响应头 Date 拿服务器时间戳(秒)"""
    req = urllib.request.Request(BASE_URL + '/', headers={'User-Agent': headers['User-Agent']})
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            date_str = resp.headers.get('Date')
            if date_str:
                return int(email.utils.parsedate_to_datetime(date_str).timestamp())
    except Exception as e:
        print('获取服务器时间失败:', e)
    return 0


def get_token(page, limit=10, ts=0):
    """调用 Node 执行 hh.js,返回 token 字符串"""
    args = ['node', JS_FILE, str(page), str(limit)]
    if ts:
        args.append(str(ts))
    result = subprocess.run(
        args,
        capture_output=True,
        text=True,
        encoding='utf-8',
    )
    if result.returncode != 0:
        print('JS 执行出错:', result.stderr)
        return None
    return result.stdout.strip()


# 先拿一次服务器时间,后面每页都重新拿(避免时间窗口过期)
for page in range(1, 11):
    ts = get_server_ts()
    token = get_token(page, 10, ts)
    if not token:
        continue
    params = urllib.parse.urlencode({
        'limit': '10',
        'offset': str((page - 1) * 10),
        'token': token,
    })
    url = BASE_URL + '/api/movie/?' + params
    req = urllib.request.Request(url, headers=headers)
    try:
        with urllib.request.urlopen(req, timeout=10) as resp:
            data = json.loads(resp.read().decode('utf-8'))
        print(f'第 {page} 页: 共 {data.get("count")} 条,本页 {len(data.get("results", []))} 条')
        print(data)
    except urllib.error.HTTPError as e:
        print(f'第 {page} 页 请求失败: {e.code} {e.reason}')
    except Exception as e:
        print(f'第 {page} 页 异常: {e}')
javascript 复制代码
window=global

const fs = require("fs");
const raw = JSON.parse(fs.readFileSync("./hh.json","utf8"));

const minModules = {
    "86cc": function(e, t, n) {
        var i = n("cb7c")
          , r = n("c69a")
          , o = n("6a99")
          , a = Object.defineProperty;
        t.f = n("9e1e") ? Object.defineProperty : function(e, t, n) {
            if (i(e),
            t = o(t, !0),
            i(n),
            r)
                try {
                    return a(e, t, n)
                } catch (s) {}
            if ("get"in n || "set"in n)
                throw TypeError("Accessors not supported!");
            return "value"in n && (e[t] = n.value),
            e
        }
    },
    "2aba": function(e, t, n) {
        var i = n("7726")
          , r = n("32e9")
          , o = n("69a8")
          , a = n("ca5a")("src")
          , s = n("fa5b")
          , l = "toString"
          , c = ("" + s).split(l);
        n("8378").inspectSource = function(e) {
            return s.call(e)
        }
        ,
        (e.exports = function(e, t, n, s) {
            var l = "function" == typeof n;
            l && (o(n, "name") || r(n, "name", t)),
            e[t] !== n && (l && (o(n, a) || r(n, a, e[t] ? "" + e[t] : c.join(String(t)))),
            e === i ? e[t] = n : s ? e[t] ? e[t] = n : r(e, t, n) : (delete e[t],
            r(e, t, n)))
        }
        )(Function.prototype, l, (function() {
            return "function" == typeof this && this[a] || s.call(this)
        }
        ))
    },
        d3f4: function(e, t) {
        e.exports = function(e) {
            return "object" === typeof e ? null !== e : "function" === typeof e
        }
    },


};
for(let id in raw){
    // 把字符串还原为真实函数
    minModules[id] = new Function("return "+raw[id])();
}
// minModules 就是裁剪后的模块对象,可以直接丢给webpack runtime使用

// console.log(minModules);

!(function(e) {
    function t(t) {
        for (var r, o, i = t[0], c = t[1], s = t[2], l = 0, f = []; l < i.length; l++)
            o = i[l],
            Object.prototype.hasOwnProperty.call(a, o) && a[o] && f.push(a[o][0]),
            a[o] = 0;
        for (r in c)
            Object.prototype.hasOwnProperty.call(c, r) && (e[r] = c[r]);
        d && d(t);
        while (f.length)
            f.shift()();
        return u.push.apply(u, s || []),
        n()
    }
    function n() {
        for (var e, t = 0; t < u.length; t++) {
            for (var n = u[t], r = !0, o = 1; o < n.length; o++) {
                var i = n[o];
                0 !== a[i] && (r = !1)
            }
            r && (u.splice(t--, 1),
            e = c(c.s = n[0]))
        }
        return e
    }
    var r = {}
      , o = {
        app: 0
    }
      , a = {
        app: 0
    }
      , u = [];
    function i(e) {
        return c.p + "js/" + ({}[e] || e) + "." + {
            "chunk-4136500c": "f3e9bb54",
            "chunk-10192a00": "243cb8b7",
            "chunk-7502f973": "428355cb"
        }[e] + ".js"
    }
    function c(t) {
        if (r[t])
            return r[t].exports;
        var n = r[t] = {
            i: t,
            l: !1,
            exports: {}
        };
        return e[t].call(n.exports, n, n.exports, c),
        n.l = !0,
        n.exports
    }
    window.e = c
    c.e = function(e) {
        var t = []
          , n = {
            "chunk-10192a00": 1,
            "chunk-7502f973": 1
        };
        o[e] ? t.push(o[e]) : 0 !== o[e] && n[e] && t.push(o[e] = new Promise((function(t, n) {
            for (var r = "css/" + ({}[e] || e) + "." + {
                "chunk-4136500c": "31d6cfe0",
                "chunk-10192a00": "65a5913c",
                "chunk-7502f973": "17571dd5"
            }[e] + ".css", a = c.p + r, u = document.getElementsByTagName("link"), i = 0; i < u.length; i++) {
                var s = u[i]
                  , l = s.getAttribute("data-href") || s.getAttribute("href");
                if ("stylesheet" === s.rel && (l === r || l === a))
                    return t()
            }
            var f = document.getElementsByTagName("style");
            for (i = 0; i < f.length; i++) {
                s = f[i],
                l = s.getAttribute("data-href");
                if (l === r || l === a)
                    return t()
            }
            var d = document.createElement("link");
            d.rel = "stylesheet",
            d.type = "text/css",
            d.onload = t,
            d.onerror = function(t) {
                var r = t && t.target && t.target.src || a
                  , u = new Error("Loading CSS chunk " + e + " failed.\n(" + r + ")");
                u.code = "CSS_CHUNK_LOAD_FAILED",
                u.request = r,
                delete o[e],
                d.parentNode.removeChild(d),
                n(u)
            }
            ,
            d.href = a;
            var p = document.getElementsByTagName("head")[0];
            p.appendChild(d)
        }
        )).then((function() {
            o[e] = 0
        }
        )));
        var r = a[e];
        if (0 !== r)
            if (r)
                t.push(r[2]);
            else {
                var u = new Promise((function(t, n) {
                    r = a[e] = [t, n]
                }
                ));
                t.push(r[2] = u);
                var s, l = document.createElement("script");
                l.charset = "utf-8",
                l.timeout = 120,
                c.nc && l.setAttribute("nonce", c.nc),
                l.src = i(e);
                var f = new Error;
                s = function(t) {
                    l.onerror = l.onload = null,
                    clearTimeout(d);
                    var n = a[e];
                    if (0 !== n) {
                        if (n) {
                            var r = t && ("load" === t.type ? "missing" : t.type)
                              , o = t && t.target && t.target.src;
                            f.message = "Loading chunk " + e + " failed.\n(" + r + ": " + o + ")",
                            f.name = "ChunkLoadError",
                            f.type = r,
                            f.request = o,
                            n[1](f)
                        }
                        a[e] = void 0
                    }
                }
                ;
                var d = setTimeout((function() {
                    s({
                        type: "timeout",
                        target: l
                    })
                }
                ), 12e4);
                l.onerror = l.onload = s,
                document.head.appendChild(l)
            }
        return Promise.all(t)
    }
    ,
    c.m = e,
    c.c = r,
    c.d = function(e, t, n) {
        c.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: n
        })
    }
    ,
    c.r = function(e) {
        "undefined" !== typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    c.t = function(e, t) {
        if (1 & t && (e = c(e)),
        8 & t)
            return e;
        if (4 & t && "object" === typeof e && e && e.__esModule)
            return e;
        var n = Object.create(null);
        if (c.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: e
        }),
        2 & t && "string" != typeof e)
            for (var r in e)
                c.d(n, r, function(t) {
                    return e[t]
                }
                .bind(null, r));
        return n
    }
    ,
    c.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e["default"]
        }
        : function() {
            return e
        }
        ;
        return c.d(t, "a", t),
        t
    }
    ,
    c.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    c.p = "/",
    c.oe = function(e) {
        throw console.error(e),
        e
    }
    ;
    var s = window["webpackJsonp"] = window["webpackJsonp"] || []
      , l = s.push.bind(s);
    s.push = t,
    s = s.slice();
    for (var f = 0; f < s.length; f++)
        t(s[f]);
    var d = l;
    u.push([0, "chunk-vendors"]),
    n()
}
)(
minModules
);


// 诊断:列出所有被引用但未定义的模块 id
var defined = Object.keys(window.e.m);
var referenced = new Set();
defined.forEach(function(id){
    var fn = window.e.m[id];
    if (typeof fn !== "function") return;
    var src = fn.toString();
    var re = /\b[a-zA-Z_$][\w$]*\s*\(\s*["']([0-9a-fA-F]{3,8}|\d{1,4})["']\s*\)/g, m;
    while ((m = re.exec(src))) referenced.add(m[1]);
});
var missing = [...referenced].filter(function(id){ return defined.indexOf(id) === -1 });
// console.log("已定义的模块 id:", defined);
// console.log("被引用的模块 id:", [...referenced]);
// console.log("缺失的模块 id(需要补到 minModules 里):", missing);

i = window.e("7d92")

var RealDate = Date;
function get_token(page, limit, ts) {
    page = page || 1;
    limit = limit || 10;
    var a = (page - 1) * limit;
    // 如果传入时间戳(秒),临时替换 Date,避免本机时间不准导致 token 失效
    if (ts) {
        var fixedMs = ts * 1000;
        var FakeDate = function() { return new RealDate(fixedMs); };
        FakeDate.now = function() { return fixedMs; };
        FakeDate.prototype = RealDate.prototype;
        global.Date = FakeDate;
    }
    try {
        return Object(i["a"])('/api/movie', a);
    } finally {
        if (ts) global.Date = RealDate;
    }
}

// 命令行调用:node hh.js <page> <limit> [timestamp]
if (process.argv[2]) {
    var page = parseInt(process.argv[2]);
    var limit = parseInt(process.argv[3]) || 10;
    var ts = process.argv[4] ? parseInt(process.argv[4]) : 0;
    console.log(get_token(page, limit, ts));
}

什么是webpack

javascript 复制代码
(function(modules) {
  // webpack自己实现的require
  function __webpack_require__(moduleId) {
    var module = { exports: {} };
    modules[moduleId](module, module.exports, __webpack_require__);
    return module.exports;
  }
  // 入口,执行模块0
  __webpack_require__(0);
  m=__webpack_require__(1);
  console.log(m);
  console.log(m.add(10, 20));
  console.log(m.sub(100, 30));
})({
  // 模块 id:0 → 入口 index.js
  0: function(module, exports, __webpack_require__) {
    const { add, sub } = __webpack_require__(1);
    console.log("add结果:", add(10, 20));
    console.log("sub结果:", sub(100, 30));
  },

  // 模块 id:1 → calc.js
  1: function(module, exports) {
    exports.add = function(a, b) {
      return a + b;
    };
    exports.sub = function(a, b) {
      return a - b;
    };
  }
});

JS 规则

  1. 调用时传入参数 > 函数定义的形参数量:多余的实参会被直接忽略,不会报错
  2. 调用时传入参数 < 函数定义的形参:没拿到值的形参变成 undefined

上面例子:

  • 函数只声明了 2 个形参 moduleexports
  • 调用塞进去 3 个实参
  • 第 1 个实参 → module
  • 第 2 个实参 → exports
  • 第 3 个实参 __webpack_require__,没有变量接收,直接丢弃,函数内部拿不到它

在 webpack 自执行内部挂载到全局(浏览器 window)

javascript 复制代码
(function(modules) {
  function __webpack_require__(moduleId) {
    var module = { exports: {} };
    modules[moduleId](module, module.exports, __webpack_require__);
    return module.exports;
  }

  __webpack_require__(0);

  const m2 = __webpack_require__(2);
  // ✅挂载到window,变成全局,控制台直接调用 multiply()
  window.multiply = m2.multiply;

})({
  0: function(module, exports, __webpack_require__) {
    const { add, sub } = __webpack_require__(1);
    console.log("add结果:", add(10, 20));
    console.log("sub结果:", sub(100, 30));
  },
  1: function(module, exports) {
    exports.add = function(a, b) {
      return a + b;
    };
    exports.sub = function(a, b) {
      return a - b;
    };
  },
  2: function(module, exports) {
    exports.multiply = function(a, b) {
      return a * b;
    };
  }
});

// 浏览器控制台:直接执行 multiply(4,5) →20

浏览器:window.xxx 就是全局变量。


Node.js 环境,导出到外部(逆向扣代码最常用)

Node 没有window不能直接在自执行里面把变量跑到外面 。 所以逆向的标准做法:把 modules 拿出来,脱离原自执行函数

javascript 复制代码
// 1. 把模块集合剥离出来
const modules = {
  0: function(module, exports, __webpack_require__) {
    const { add, sub } = __webpack_require__(1);
    console.log("add结果:", add(10, 20));
    console.log("sub结果:", sub(100, 30));
  },
  1: function(module, exports) {
    exports.add = function(a, b) {
      return a + b;
    };
    exports.sub = function(a, b) {
      return a - b;
    };
  },
  2: function(module, exports) {
    exports.multiply = function(a, b) {
      return a * b;
    };
  }
};

// 2.手写迷你__webpack_require__
function __webpack_require__(moduleId) {
  var module = { exports: {} };
  modules[moduleId](module, module.exports, __webpack_require__);
  return module.exports;
}

// 加载模块2
const m2 = __webpack_require__(2);

// ✅ Node全局:挂载到globalThis
globalThis.multiply = m2.multiply;

// 就可以直接调用
console.log(multiply(6,7)); //42

// 也可以 module.exports 导出给别的js文件调用
// module.exports = { multiply: m2.multiply }

promise跟栈

JS 是单线程 ,调用栈(call stack)就是正在执行函数的栈,先进后出。 Promise 不属于调用栈,它进入微任务队列(microtask)

Promise 不会立刻进调用栈!

new Promise(fn) 里面的回调函数是同步执行,直接上调用栈 ; 但是 .then() / .catch() 的回调不会马上跑,丢进【微任务队列】

规则(浏览器 / Node 都遵守): 当调用栈全部清空之后,才会把微任务队列里面的任务拿出来,压入调用栈执行。

示例看执行顺序

javascript 复制代码
console.log("1 同步开始");

new Promise((resolve)=>{
    console.log("2 promise内部,同步立刻执行");
    resolve(100); // 修改状态
}).then(val=>{
    console.log("3 then微任务", val)
})

console.log("4 同步结束");

输出顺序:

复制代码
1 同步开始
2 promise内部,同步立刻执行
4 同步结束
3 then微任务 100

执行拆解:

  1. console.log(1) 调用栈执行
  2. new Promise,里面的函数直接进调用栈,打印 2,执行resolve(100),promise 变成成功;
  3. .then 的回调不会马上跑,放到微任务队列排队
  4. console.log(4) 调用栈执行
  5. 此时调用栈空了! 引擎去看微任务队列,把 then 回调拿出来压入调用栈,打印 3。ge
相关推荐
命运之光2 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光2 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人2 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
在世修行4 小时前
从零打造 C# 工业视觉检测系统(七):串口通信 SerialPort 封装与开发
开发语言·c#·modbus rtu·rs232/rs485
Hammer_Hans4 小时前
DFT笔记98
java·开发语言·数据库
默_笙4 小时前
⛵ 我用 React + TS 做了个"调色盘",顺便学会了企业级项目的目录架构
前端·javascript
渣波5 小时前
拒绝 Redux 样板代码:Zustand 核心原理与实战进阶指南(基础、异步与切片模式)
前端·javascript
C++、Java和Python的菜鸟5 小时前
第12章 前端Web进阶(Vue工程化+ElementPlus)
前端·javascript·vue.js
qq_448011165 小时前
C语言中的野指针和空指针
c语言·开发语言·单片机