webpack逆向--例子1

Webpack逆向分析与实例操作

Webpack 打包后的代码,核心入口是一个 “自执行函数”,且这个自执行函数会作为脚本加载后的 “第一个执行单元” 启动。

webpack在js逆向中,它的特征通常有三部分

  • 一个缓存对象(如var t = {}
  • 一个加载函数(如function n(r) { ... },类似require
  • 一个模块数组(所有业务逻辑按索引存放在数组中)

还有这种代码,js文件中看到类似这种代码,一般都是webpack打包的

"014b": function(e, t, n) {。。。}

以下是他的基本结构

// Object形式(字典)
!function (e){
    // 加载器逻辑:构建一个对象,能够轻松调用所有功能函数
    var t = {}; //缓存对象
 
    // 加载器函数
    function n(r) {
        if (t[r]) // 1.如果缓存对象中存在,则直接返回缓存对象中的exports
            return t[r].exports;
        // 2.第一次调用,写入缓存对象
        var o = t[r] = {i: r, l: !1, exports: {}};
        // 3.真正的功能调用
        e[r].call(o.exports, o, o.exports, n);
        return o.exports.exports;
    }
    //如辅助函数、业务逻辑函数
    function t(t) {
        for (var n, i, o = t[0], a = t[1], s = 0, l = []; s < o.length; s++)
            i = o[s],
            Object.prototype.hasOwnProperty.call(r, i) && r[i] && l.push(r[i][0]),
            r[i] = 0;
        for (n in a)
            Object.prototype.hasOwnProperty.call(a, n) && (e[n] = a[n]);
        for (u && u(t); l.length; )
            l.shift()()
    }

    // 调用key为1001的函数,并且拿到函数返回值
    console.log(n('1001'))
 
}({
    '1001': function () {
        console.log("调用了1001");
        this.exports = 100;
        //也可以在模块中调用其他模块
        n('1001')
    },
    '1002': function () {
        console.log("调用了1002");
        this.exports = 200;
    }
})
如何区分是否为加载函数:
  1. 加载函数里一定会用到  exports ,但不能说用到exports就是加载函数
  2. 包含 “缓存检查” 逻辑
  3. webpack必有一个加载模块的方法:call或apply,找到加载器先抠出来

        加载函数会先检查该模块是否已被加载过(是否在缓存中),如果已缓存则直接返回结果,避免重复执行。
        典型代码:

if (n[t]) return n[t].exports; // 若缓存存在,直接返回导出结果

如何操作

Webpack 打包后的单个 JS 文件,整体上是被 Webpack 的 “模块加载框架” 所包裹的

1、先扣函数体这一块

也就是

!function(e) {
    // 函数体(方法体)
    //加载函数、辅助函数、环境初始化等等
}({
        /* 参数 */
        //模块...
});

模块的部分先空着,因为是自执行了,直接运行一遍,把环境初始化的代码注释掉(去掉初始化(通常包含大量环境检测)操作),这时候一个模块都没调用,如果出错了,那一般都是环境检测的,直接删掉对应的代码就行

2、定义一个全局变量,去接收加载函数(使能够在外部调用模块)

3、再加载函数里加上输出日志代码,输出要调用的模块,方便后续补模块

栗子1:

国家医疗保障

响应内容是加密的

正常的响应过程:

           前端参数 → JSON.stringify(转为字符串) → 加密 → 发送请求

           响应密文 → 解密 → JSON.parse(转为对象) → 前端使用

定位参数入口位置:

hook parse这个方法,跟栈向上回溯,发现是在这解密的,向上滑动,发现是webpack打包的,先把这个函数扣出来

也可以搜索encData,因为是解密的,赋值过来的肯定不是

放在类似一个函数里面的才可能是,也同样能找到

开始逆向分析:

断住这里,发现t=“SM4”是固定的,n是响应的加密数据

把    function g(t,n)   这个方法扣下来当作调用的主函数,传入参数试运行一下,报错


跳转函数位置,是一个模块里的函数,使用webpack的做法

向上划,找到加载器的函数体扣下来

找到加载函数,定义一个全局对象接受加载函数o(能在外部调用),增加日志输出

加载器扣出来之后,运行一遍加载器,发现报错,有初始化的环境检测

找到行号,把无关的环境检测代码删掉

webpack的框架就扣好了,然后就是补模块,如果怕麻烦,补模块这部分可以直接全复制js代码的


补上之前跳转的模块“b639”

调用之前跳转的模块,赋值给e_

修改变量,运行一下,是报错的

输出e_,看到是一个buffer的容器对象

只要修正路径,从 e_.from 改为 e_.Buffer.from,就能正常调用 from 方法,,e的问题解决了,到了y报错

y这个函数跳转一下,它是跟主函数g是同一个模块里面的,直接扣下来就行

A这个函数也是,直接扣下来

b也是,直接扣

s不是同一个模块里的函数,跳转函数位置

是这个模块,补模块

调用模块,s_接收

再改写一下变量

这两个值是固定值

运行成功

完整的js

function g(t, n) {
    switch (t.toUpperCase()) {
    case "SM4":
        return function(t) {
            if (!t)
                return null;
            var n = e_.Buffer.from(t.data.data.encData, "hex")
              , i = function(t, n) {
                var i = s_.decrypt(n, t)
                  , r = i[i.length - 1];
                return i = i.slice(0, i.length - r),
                e_.Buffer.from(i).toString("utf-8")
            }(y("T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ", "NMVFVILMKT13GEMD3BKPKCTBOQBPZR2P"), n);
            return JSON.parse(i)
        }(n);
}}
function A(e) {
    var t, n, i = new Array;
    t = e.length;
    for (var r = 0; r < t; r++)
        (n = e.charCodeAt(r)) >= 65536 && n <= 1114111 ? (i.push(n >> 18 & 7 | 240),
        i.push(n >> 12 & 63 | 128),
        i.push(n >> 6 & 63 | 128),
        i.push(63 & n | 128)) : n >= 2048 && n <= 65535 ? (i.push(n >> 12 & 15 | 224),
        i.push(n >> 6 & 63 | 128),
        i.push(63 & n | 128)) : n >= 128 && n <= 2047 ? (i.push(n >> 6 & 31 | 192),
        i.push(63 & n | 128)) : i.push(255 & n);
    return i
}

function y(e, t) {
    return A(b(A(e.substr(0, 16)), A(t)).toUpperCase().substr(0, 16))
}
function b(t, n) {
    var i = 16 - parseInt(n.length % 16);
    n = n.concat(new Array(i).fill(i));
    var r = s_.encrypt(n, t);
    return e_.Buffer.from(r).toString("hex")
}
let yu={};
!function(e) {
    function t(t) {
        for (var n, i, o = t[0], a = t[1], s = 0, l = []; s < o.length; s++)
            i = o[s],
            Object.prototype.hasOwnProperty.call(r, i) && r[i] && l.push(r[i][0]),
            r[i] = 0;
        for (n in a)
            Object.prototype.hasOwnProperty.call(a, n) && (e[n] = a[n]);
        for (u && u(t); l.length; )
            l.shift()()
    }
    var n = {}
      , i = {
        app: 0
    }
      , r = {
        app: 0
    };
    function o(t) {
        if (n[t])
            return n[t].exports;
        var i = n[t] = {
            i: t,
            l: !1,
            exports: {}
        };
        console.log("t:::",t)
        return e[t].call(i.exports, i, i.exports, o),
        i.l = !0,
        i.exports
    }
    yu.o=o
    o.e = function(e) {
        var t = [];
        i[e] ? t.push(i[e]) : 0 !== i[e] && {
            DetailModule: 1,
            ServiceCatalog: 1,
            ServiceSearchModule: 1,
            "announcement-list": 1,
            "download-page": 1,
            home: 1,
            personLogin: 1,
            search: 1
        }[e] && t.push(i[e] = new Promise((function(t, n) {
            for (var r = "static/css/" + ({
                DetailModule: "DetailModule",
                ServiceCatalog: "ServiceCatalog",
                ServiceSearchModule: "ServiceSearchModule",
                "announcement-list": "announcement-list",
                "download-page": "download-page",
                home: "home",
                personLogin: "personLogin",
                redirect: "redirect",
                search: "search",
                pdfjsWorker: "pdfjsWorker"
            }[e] || e) + "." + {
                DetailModule: "5e631d12",
                ServiceCatalog: "1d81de4e",
                ServiceSearchModule: "128f361e",
                "announcement-list": "ee54d713",
                "download-page": "a9c8d3ee",
                home: "677f5749",
                personLogin: "acd0e1ca",
                redirect: "31d6cfe0",
                search: "3013d579",
                pdfjsWorker: "31d6cfe0"
            }[e] + ".css", a = o.p + r, s = document.getElementsByTagName("link"), l = 0; l < s.length; l++) {
                var u = (h = s[l]).getAttribute("data-href") || h.getAttribute("href");
                if ("stylesheet" === h.rel && (u === r || u === a))
                    return t()
            }
            var c = document.getElementsByTagName("style");
            for (l = 0; l < c.length; l++) {
                var h;
                if ((u = (h = c[l]).getAttribute("data-href")) === r || u === 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
                  , o = new Error("Loading CSS chunk " + e + " failed.\n(" + r + ")");
                o.code = "CSS_CHUNK_LOAD_FAILED",
                o.request = r,
                delete i[e],
                d.parentNode.removeChild(d),
                n(o)
            }
            ,
            d.href = a,
            document.getElementsByTagName("head")[0].appendChild(d)
        }
        )).then((function() {
            i[e] = 0
        }
        )));
        var n = r[e];
        if (0 !== n)
            if (n)
                t.push(n[2]);
            else {
                var a = new Promise((function(t, i) {
                    n = r[e] = [t, i]
                }
                ));
                t.push(n[2] = a);
                var s, l = document.createElement("script");
                l.charset = "utf-8",
                l.timeout = 120,
                o.nc && l.setAttribute("nonce", o.nc),
                l.src = function(e) {
                    return o.p + "" + ({
                        DetailModule: "DetailModule",
                        ServiceCatalog: "ServiceCatalog",
                        ServiceSearchModule: "ServiceSearchModule",
                        "announcement-list": "announcement-list",
                        "download-page": "download-page",
                        home: "home",
                        personLogin: "personLogin",
                        redirect: "redirect",
                        search: "search",
                        pdfjsWorker: "pdfjsWorker"
                    }[e] || e) + ".1753261690554.js"
                }(e);
                var u = new Error;
                s = function(t) {
                    l.onerror = l.onload = null,
                    clearTimeout(c);
                    var n = r[e];
                    if (0 !== n) {
                        if (n) {
                            var i = t && ("load" === t.type ? "missing" : t.type)
                              , o = t && t.target && t.target.src;
                            u.message = "Loading chunk " + e + " failed.\n(" + i + ": " + o + ")",
                            u.name = "ChunkLoadError",
                            u.type = i,
                            u.request = o,
                            n[1](u)
                        }
                        r[e] = void 0
                    }
                }
                ;
                var c = setTimeout((function() {
                    s({
                        type: "timeout",
                        target: l
                    })
                }
                ), 12e4);
                l.onerror = l.onload = s,
                document.head.appendChild(l)
            }
        return Promise.all(t)
    }
    ,
    o.m = e,
    o.c = n,
    o.d = function(e, t, n) {
        o.o(e, t) || Object.defineProperty(e, t, {
            enumerable: !0,
            get: n
        })
    }
    ,
    o.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    o.t = function(e, t) {
        if (1 & t && (e = o(e)),
        8 & t)
            return e;
        if (4 & t && "object" == typeof e && e && e.__esModule)
            return e;
        var n = Object.create(null);
        if (o.r(n),
        Object.defineProperty(n, "default", {
            enumerable: !0,
            value: e
        }),
        2 & t && "string" != typeof e)
            for (var i in e)
                o.d(n, i, function(t) {
                    return e[t]
                }
                .bind(null, i));
        return n
    }
    ,
    o.n = function(e) {
        var t = e && e.__esModule ? function() {
            return e.default
        }
        : function() {
            return e
        }
        ;
        return o.d(t, "a", t),
        t
    }
    ,
    o.o = function(e, t) {
        return Object.prototype.hasOwnProperty.call(e, t)
    }
    ,
    o.p = "",
    o.oe = function(e) {
        throw e
    }
    ;

}({
    b639: function(e, t, n) {
        "use strict";
        (function(e) {
            var i = n("1fb5")
              , r = n("9152")
              , o = n("e3db");
            function a() {
                return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823
            }
            function s(e, t) {
                if (a() < t)
                    throw new RangeError("Invalid typed array length");
                return l.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t)).__proto__ = l.prototype : (null === e && (e = new l(t)),
                e.length = t),
                e
            }
            function l(e, t, n) {
                if (!(l.TYPED_ARRAY_SUPPORT || this instanceof l))
                    return new l(e,t,n);
                if ("number" == typeof e) {
                    if ("string" == typeof t)
                        throw new Error("If encoding is specified then the first argument must be a string");
                    return h(this, e)
                }
                return u(this, e, t, n)
            }
            function u(e, t, n, i) {
                if ("number" == typeof t)
                    throw new TypeError('"value" argument must not be a number');
                return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? function(e, t, n, i) {
                    if (t.byteLength,
                    n < 0 || t.byteLength < n)
                        throw new RangeError("'offset' is out of bounds");
                    if (t.byteLength < n + (i || 0))
                        throw new RangeError("'length' is out of bounds");
                    return t = void 0 === n && void 0 === i ? new Uint8Array(t) : void 0 === i ? new Uint8Array(t,n) : new Uint8Array(t,n,i),
                    l.TYPED_ARRAY_SUPPORT ? (e = t).__proto__ = l.prototype : e = d(e, t),
                    e
                }(e, t, n, i) : "string" == typeof t ? function(e, t, n) {
                    if ("string" == typeof n && "" !== n || (n = "utf8"),
                    !l.isEncoding(n))
                        throw new TypeError('"encoding" must be a valid string encoding');
                    var i = 0 | p(t, n)
                      , r = (e = s(e, i)).write(t, n);
                    return r !== i && (e = e.slice(0, r)),
                    e
                }(e, t, n) : function(e, t) {
                    if (l.isBuffer(t)) {
                        var n = 0 | f(t.length);
                        return 0 === (e = s(e, n)).length || t.copy(e, 0, 0, n),
                        e
                    }
                    if (t) {
                        if ("undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length"in t)
                            return "number" != typeof t.length || (i = t.length) != i ? s(e, 0) : d(e, t);
                        if ("Buffer" === t.type && o(t.data))
                            return d(e, t.data)
                    }
                    var i;
                    throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")
                }(e, t)
            }
            function c(e) {
                if ("number" != typeof e)
                    throw new TypeError('"size" argument must be a number');
                if (e < 0)
                    throw new RangeError('"size" argument must not be negative')
            }
            function h(e, t) {
                if (c(t),
                e = s(e, t < 0 ? 0 : 0 | f(t)),
                !l.TYPED_ARRAY_SUPPORT)
                    for (var n = 0; n < t; ++n)
                        e[n] = 0;
                return e
            }
            function d(e, t) {
                var n = t.length < 0 ? 0 : 0 | f(t.length);
                e = s(e, n);
                for (var i = 0; i < n; i += 1)
                    e[i] = 255 & t[i];
                return e
            }
            function f(e) {
                if (e >= a())
                    throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + a().toString(16) + " bytes");
                return 0 | e
            }
            function p(e, t) {
                if (l.isBuffer(e))
                    return e.length;
                if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer))
                    return e.byteLength;
                "string" != typeof e && (e = "" + e);
                var n = e.length;
                if (0 === n)
                    return 0;
                for (var i = !1; ; )
                    switch (t) {
                    case "ascii":
                    case "latin1":
                    case "binary":
                        return n;
                    case "utf8":
                    case "utf-8":
                    case void 0:
                        return V(e).length;
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                        return 2 * n;
                    case "hex":
                        return n >>> 1;
                    case "base64":
                        return H(e).length;
                    default:
                        if (i)
                            return V(e).length;
                        t = ("" + t).toLowerCase(),
                        i = !0
                    }
            }
            function m(e, t, n) {
                var i = e[t];
                e[t] = e[n],
                e[n] = i
            }
            function v(e, t, n, i, r) {
                if (0 === e.length)
                    return -1;
                if ("string" == typeof n ? (i = n,
                n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648),
                n = +n,
                isNaN(n) && (n = r ? 0 : e.length - 1),
                n < 0 && (n = e.length + n),
                n >= e.length) {
                    if (r)
                        return -1;
                    n = e.length - 1
                } else if (n < 0) {
                    if (!r)
                        return -1;
                    n = 0
                }
                if ("string" == typeof t && (t = l.from(t, i)),
                l.isBuffer(t))
                    return 0 === t.length ? -1 : g(e, t, n, i, r);
                if ("number" == typeof t)
                    return t &= 255,
                    l.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(e, t, n) : Uint8Array.prototype.lastIndexOf.call(e, t, n) : g(e, [t], n, i, r);
                throw new TypeError("val must be string, number or Buffer")
            }
            function g(e, t, n, i, r) {
                var o, a = 1, s = e.length, l = t.length;
                if (void 0 !== i && ("ucs2" === (i = String(i).toLowerCase()) || "ucs-2" === i || "utf16le" === i || "utf-16le" === i)) {
                    if (e.length < 2 || t.length < 2)
                        return -1;
                    a = 2,
                    s /= 2,
                    l /= 2,
                    n /= 2
                }
                function u(e, t) {
                    return 1 === a ? e[t] : e.readUInt16BE(t * a)
                }
                if (r) {
                    var c = -1;
                    for (o = n; o < s; o++)
                        if (u(e, o) === u(t, -1 === c ? 0 : o - c)) {
                            if (-1 === c && (c = o),
                            o - c + 1 === l)
                                return c * a
                        } else
                            -1 !== c && (o -= o - c),
                            c = -1
                } else
                    for (n + l > s && (n = s - l),
                    o = n; o >= 0; o--) {
                        for (var h = !0, d = 0; d < l; d++)
                            if (u(e, o + d) !== u(t, d)) {
                                h = !1;
                                break
                            }
                        if (h)
                            return o
                    }
                return -1
            }
            function y(e, t, n, i) {
                n = Number(n) || 0;
                var r = e.length - n;
                i ? (i = Number(i)) > r && (i = r) : i = r;
                var o = t.length;
                if (o % 2 != 0)
                    throw new TypeError("Invalid hex string");
                i > o / 2 && (i = o / 2);
                for (var a = 0; a < i; ++a) {
                    var s = parseInt(t.substr(2 * a, 2), 16);
                    if (isNaN(s))
                        return a;
                    e[n + a] = s
                }
                return a
            }
            function b(e, t, n, i) {
                return z(V(t, e.length - n), e, n, i)
            }
            function A(e, t, n, i) {
                return z(function(e) {
                    for (var t = [], n = 0; n < e.length; ++n)
                        t.push(255 & e.charCodeAt(n));
                    return t
                }(t), e, n, i)
            }
            function w(e, t, n, i) {
                return A(e, t, n, i)
            }
            function x(e, t, n, i) {
                return z(H(t), e, n, i)
            }
            function C(e, t, n, i) {
                return z(function(e, t) {
                    for (var n, i, r, o = [], a = 0; a < e.length && !((t -= 2) < 0); ++a)
                        n = e.charCodeAt(a),
                        i = n >> 8,
                        r = n % 256,
                        o.push(r),
                        o.push(i);
                    return o
                }(t, e.length - n), e, n, i)
            }
            function _(e, t, n) {
                return 0 === t && n === e.length ? i.fromByteArray(e) : i.fromByteArray(e.slice(t, n))
            }
            function S(e, t, n) {
                n = Math.min(e.length, n);
                for (var i = [], r = t; r < n; ) {
                    var o, a, s, l, u = e[r], c = null, h = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1;
                    if (r + h <= n)
                        switch (h) {
                        case 1:
                            u < 128 && (c = u);
                            break;
                        case 2:
                            128 == (192 & (o = e[r + 1])) && (l = (31 & u) << 6 | 63 & o) > 127 && (c = l);
                            break;
                        case 3:
                            o = e[r + 1],
                            a = e[r + 2],
                            128 == (192 & o) && 128 == (192 & a) && (l = (15 & u) << 12 | (63 & o) << 6 | 63 & a) > 2047 && (l < 55296 || l > 57343) && (c = l);
                            break;
                        case 4:
                            o = e[r + 1],
                            a = e[r + 2],
                            s = e[r + 3],
                            128 == (192 & o) && 128 == (192 & a) && 128 == (192 & s) && (l = (15 & u) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s) > 65535 && l < 1114112 && (c = l)
                        }
                    null === c ? (c = 65533,
                    h = 1) : c > 65535 && (c -= 65536,
                    i.push(c >>> 10 & 1023 | 55296),
                    c = 56320 | 1023 & c),
                    i.push(c),
                    r += h
                }
                return function(e) {
                    var t = e.length;
                    if (t <= k)
                        return String.fromCharCode.apply(String, e);
                    for (var n = "", i = 0; i < t; )
                        n += String.fromCharCode.apply(String, e.slice(i, i += k));
                    return n
                }(i)
            }
            t.Buffer = l,
            t.SlowBuffer = function(e) {
                return +e != e && (e = 0),
                l.alloc(+e)
            }
            ,
            t.INSPECT_MAX_BYTES = 50,
            l.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : function() {
                try {
                    var e = new Uint8Array(1);
                    return e.__proto__ = {
                        __proto__: Uint8Array.prototype,
                        foo: function() {
                            return 42
                        }
                    },
                    42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1).byteLength
                } catch (e) {
                    return !1
                }
            }(),
            t.kMaxLength = a(),
            l.poolSize = 8192,
            l._augment = function(e) {
                return e.__proto__ = l.prototype,
                e
            }
            ,
            l.from = function(e, t, n) {
                return u(null, e, t, n)
            }
            ,
            l.TYPED_ARRAY_SUPPORT && (l.prototype.__proto__ = Uint8Array.prototype,
            l.__proto__ = Uint8Array,
            "undefined" != typeof Symbol && Symbol.species && l[Symbol.species] === l && Object.defineProperty(l, Symbol.species, {
                value: null,
                configurable: !0
            })),
            l.alloc = function(e, t, n) {
                return function(e, t, n, i) {
                    return c(t),
                    t <= 0 ? s(e, t) : void 0 !== n ? "string" == typeof i ? s(e, t).fill(n, i) : s(e, t).fill(n) : s(e, t)
                }(null, e, t, n)
            }
            ,
            l.allocUnsafe = function(e) {
                return h(null, e)
            }
            ,
            l.allocUnsafeSlow = function(e) {
                return h(null, e)
            }
            ,
            l.isBuffer = function(e) {
                return !(null == e || !e._isBuffer)
            }
            ,
            l.compare = function(e, t) {
                if (!l.isBuffer(e) || !l.isBuffer(t))
                    throw new TypeError("Arguments must be Buffers");
                if (e === t)
                    return 0;
                for (var n = e.length, i = t.length, r = 0, o = Math.min(n, i); r < o; ++r)
                    if (e[r] !== t[r]) {
                        n = e[r],
                        i = t[r];
                        break
                    }
                return n < i ? -1 : i < n ? 1 : 0
            }
            ,
            l.isEncoding = function(e) {
                switch (String(e).toLowerCase()) {
                case "hex":
                case "utf8":
                case "utf-8":
                case "ascii":
                case "latin1":
                case "binary":
                case "base64":
                case "ucs2":
                case "ucs-2":
                case "utf16le":
                case "utf-16le":
                    return !0;
                default:
                    return !1
                }
            }
            ,
            l.concat = function(e, t) {
                if (!o(e))
                    throw new TypeError('"list" argument must be an Array of Buffers');
                if (0 === e.length)
                    return l.alloc(0);
                var n;
                if (void 0 === t)
                    for (t = 0,
                    n = 0; n < e.length; ++n)
                        t += e[n].length;
                var i = l.allocUnsafe(t)
                  , r = 0;
                for (n = 0; n < e.length; ++n) {
                    var a = e[n];
                    if (!l.isBuffer(a))
                        throw new TypeError('"list" argument must be an Array of Buffers');
                    a.copy(i, r),
                    r += a.length
                }
                return i
            }
            ,
            l.byteLength = p,
            l.prototype._isBuffer = !0,
            l.prototype.swap16 = function() {
                var e = this.length;
                if (e % 2 != 0)
                    throw new RangeError("Buffer size must be a multiple of 16-bits");
                for (var t = 0; t < e; t += 2)
                    m(this, t, t + 1);
                return this
            }
            ,
            l.prototype.swap32 = function() {
                var e = this.length;
                if (e % 4 != 0)
                    throw new RangeError("Buffer size must be a multiple of 32-bits");
                for (var t = 0; t < e; t += 4)
                    m(this, t, t + 3),
                    m(this, t + 1, t + 2);
                return this
            }
            ,
            l.prototype.swap64 = function() {
                var e = this.length;
                if (e % 8 != 0)
                    throw new RangeError("Buffer size must be a multiple of 64-bits");
                for (var t = 0; t < e; t += 8)
                    m(this, t, t + 7),
                    m(this, t + 1, t + 6),
                    m(this, t + 2, t + 5),
                    m(this, t + 3, t + 4);
                return this
            }
            ,
            l.prototype.toString = function() {
                var e = 0 | this.length;
                return 0 === e ? "" : 0 === arguments.length ? S(this, 0, e) : function(e, t, n) {
                    var i = !1;
                    if ((void 0 === t || t < 0) && (t = 0),
                    t > this.length)
                        return "";
                    if ((void 0 === n || n > this.length) && (n = this.length),
                    n <= 0)
                        return "";
                    if ((n >>>= 0) <= (t >>>= 0))
                        return "";
                    for (e || (e = "utf8"); ; )
                        switch (e) {
                        case "hex":
                            return D(this, t, n);
                        case "utf8":
                        case "utf-8":
                            return S(this, t, n);
                        case "ascii":
                            return O(this, t, n);
                        case "latin1":
                        case "binary":
                            return E(this, t, n);
                        case "base64":
                            return _(this, t, n);
                        case "ucs2":
                        case "ucs-2":
                        case "utf16le":
                        case "utf-16le":
                            return T(this, t, n);
                        default:
                            if (i)
                                throw new TypeError("Unknown encoding: " + e);
                            e = (e + "").toLowerCase(),
                            i = !0
                        }
                }
                .apply(this, arguments)
            }
            ,
            l.prototype.equals = function(e) {
                if (!l.isBuffer(e))
                    throw new TypeError("Argument must be a Buffer");
                return this === e || 0 === l.compare(this, e)
            }
            ,
            l.prototype.inspect = function() {
                var e = ""
                  , n = t.INSPECT_MAX_BYTES;
                return this.length > 0 && (e = this.toString("hex", 0, n).match(/.{2}/g).join(" "),
                this.length > n && (e += " ... ")),
                "<Buffer " + e + ">"
            }
            ,
            l.prototype.compare = function(e, t, n, i, r) {
                if (!l.isBuffer(e))
                    throw new TypeError("Argument must be a Buffer");
                if (void 0 === t && (t = 0),
                void 0 === n && (n = e ? e.length : 0),
                void 0 === i && (i = 0),
                void 0 === r && (r = this.length),
                t < 0 || n > e.length || i < 0 || r > this.length)
                    throw new RangeError("out of range index");
                if (i >= r && t >= n)
                    return 0;
                if (i >= r)
                    return -1;
                if (t >= n)
                    return 1;
                if (t >>>= 0,
                n >>>= 0,
                i >>>= 0,
                r >>>= 0,
                this === e)
                    return 0;
                for (var o = r - i, a = n - t, s = Math.min(o, a), u = this.slice(i, r), c = e.slice(t, n), h = 0; h < s; ++h)
                    if (u[h] !== c[h]) {
                        o = u[h],
                        a = c[h];
                        break
                    }
                return o < a ? -1 : a < o ? 1 : 0
            }
            ,
            l.prototype.includes = function(e, t, n) {
                return -1 !== this.indexOf(e, t, n)
            }
            ,
            l.prototype.indexOf = function(e, t, n) {
                return v(this, e, t, n, !0)
            }
            ,
            l.prototype.lastIndexOf = function(e, t, n) {
                return v(this, e, t, n, !1)
            }
            ,
            l.prototype.write = function(e, t, n, i) {
                if (void 0 === t)
                    i = "utf8",
                    n = this.length,
                    t = 0;
                else if (void 0 === n && "string" == typeof t)
                    i = t,
                    n = this.length,
                    t = 0;
                else {
                    if (!isFinite(t))
                        throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");
                    t |= 0,
                    isFinite(n) ? (n |= 0,
                    void 0 === i && (i = "utf8")) : (i = n,
                    n = void 0)
                }
                var r = this.length - t;
                if ((void 0 === n || n > r) && (n = r),
                e.length > 0 && (n < 0 || t < 0) || t > this.length)
                    throw new RangeError("Attempt to write outside buffer bounds");
                i || (i = "utf8");
                for (var o = !1; ; )
                    switch (i) {
                    case "hex":
                        return y(this, e, t, n);
                    case "utf8":
                    case "utf-8":
                        return b(this, e, t, n);
                    case "ascii":
                        return A(this, e, t, n);
                    case "latin1":
                    case "binary":
                        return w(this, e, t, n);
                    case "base64":
                        return x(this, e, t, n);
                    case "ucs2":
                    case "ucs-2":
                    case "utf16le":
                    case "utf-16le":
                        return C(this, e, t, n);
                    default:
                        if (o)
                            throw new TypeError("Unknown encoding: " + i);
                        i = ("" + i).toLowerCase(),
                        o = !0
                    }
            }
            ,
            l.prototype.toJSON = function() {
                return {
                    type: "Buffer",
                    data: Array.prototype.slice.call(this._arr || this, 0)
                }
            }
            ;
            var k = 4096;
            function O(e, t, n) {
                var i = "";
                n = Math.min(e.length, n);
                for (var r = t; r < n; ++r)
                    i += String.fromCharCode(127 & e[r]);
                return i
            }
            function E(e, t, n) {
                var i = "";
                n = Math.min(e.length, n);
                for (var r = t; r < n; ++r)
                    i += String.fromCharCode(e[r]);
                return i
            }
            function D(e, t, n) {
                var i = e.length;
                (!t || t < 0) && (t = 0),
                (!n || n < 0 || n > i) && (n = i);
                for (var r = "", o = t; o < n; ++o)
                    r += B(e[o]);
                return r
            }
            function T(e, t, n) {
                for (var i = e.slice(t, n), r = "", o = 0; o < i.length; o += 2)
                    r += String.fromCharCode(i[o] + 256 * i[o + 1]);
                return r
            }
            function P(e, t, n) {
                if (e % 1 != 0 || e < 0)
                    throw new RangeError("offset is not uint");
                if (e + t > n)
                    throw new RangeError("Trying to access beyond buffer length")
            }
            function I(e, t, n, i, r, o) {
                if (!l.isBuffer(e))
                    throw new TypeError('"buffer" argument must be a Buffer instance');
                if (t > r || t < o)
                    throw new RangeError('"value" argument is out of bounds');
                if (n + i > e.length)
                    throw new RangeError("Index out of range")
            }
            function M(e, t, n, i) {
                t < 0 && (t = 65535 + t + 1);
                for (var r = 0, o = Math.min(e.length - n, 2); r < o; ++r)
                    e[n + r] = (t & 255 << 8 * (i ? r : 1 - r)) >>> 8 * (i ? r : 1 - r)
            }
            function j(e, t, n, i) {
                t < 0 && (t = 4294967295 + t + 1);
                for (var r = 0, o = Math.min(e.length - n, 4); r < o; ++r)
                    e[n + r] = t >>> 8 * (i ? r : 3 - r) & 255
            }
            function N(e, t, n, i, r, o) {
                if (n + i > e.length)
                    throw new RangeError("Index out of range");
                if (n < 0)
                    throw new RangeError("Index out of range")
            }
            function F(e, t, n, i, o) {
                return o || N(e, 0, n, 4),
                r.write(e, t, n, i, 23, 4),
                n + 4
            }
            function L(e, t, n, i, o) {
                return o || N(e, 0, n, 8),
                r.write(e, t, n, i, 52, 8),
                n + 8
            }
            l.prototype.slice = function(e, t) {
                var n, i = this.length;
                if (e = ~~e,
                t = void 0 === t ? i : ~~t,
                e < 0 ? (e += i) < 0 && (e = 0) : e > i && (e = i),
                t < 0 ? (t += i) < 0 && (t = 0) : t > i && (t = i),
                t < e && (t = e),
                l.TYPED_ARRAY_SUPPORT)
                    (n = this.subarray(e, t)).__proto__ = l.prototype;
                else {
                    var r = t - e;
                    n = new l(r,void 0);
                    for (var o = 0; o < r; ++o)
                        n[o] = this[o + e]
                }
                return n
            }
            ,
            l.prototype.readUIntLE = function(e, t, n) {
                e |= 0,
                t |= 0,
                n || P(e, t, this.length);
                for (var i = this[e], r = 1, o = 0; ++o < t && (r *= 256); )
                    i += this[e + o] * r;
                return i
            }
            ,
            l.prototype.readUIntBE = function(e, t, n) {
                e |= 0,
                t |= 0,
                n || P(e, t, this.length);
                for (var i = this[e + --t], r = 1; t > 0 && (r *= 256); )
                    i += this[e + --t] * r;
                return i
            }
            ,
            l.prototype.readUInt8 = function(e, t) {
                return t || P(e, 1, this.length),
                this[e]
            }
            ,
            l.prototype.readUInt16LE = function(e, t) {
                return t || P(e, 2, this.length),
                this[e] | this[e + 1] << 8
            }
            ,
            l.prototype.readUInt16BE = function(e, t) {
                return t || P(e, 2, this.length),
                this[e] << 8 | this[e + 1]
            }
            ,
            l.prototype.readUInt32LE = function(e, t) {
                return t || P(e, 4, this.length),
                (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3]
            }
            ,
            l.prototype.readUInt32BE = function(e, t) {
                return t || P(e, 4, this.length),
                16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3])
            }
            ,
            l.prototype.readIntLE = function(e, t, n) {
                e |= 0,
                t |= 0,
                n || P(e, t, this.length);
                for (var i = this[e], r = 1, o = 0; ++o < t && (r *= 256); )
                    i += this[e + o] * r;
                return i >= (r *= 128) && (i -= Math.pow(2, 8 * t)),
                i
            }
            ,
            l.prototype.readIntBE = function(e, t, n) {
                e |= 0,
                t |= 0,
                n || P(e, t, this.length);
                for (var i = t, r = 1, o = this[e + --i]; i > 0 && (r *= 256); )
                    o += this[e + --i] * r;
                return o >= (r *= 128) && (o -= Math.pow(2, 8 * t)),
                o
            }
            ,
            l.prototype.readInt8 = function(e, t) {
                return t || P(e, 1, this.length),
                128 & this[e] ? -1 * (255 - this[e] + 1) : this[e]
            }
            ,
            l.prototype.readInt16LE = function(e, t) {
                t || P(e, 2, this.length);
                var n = this[e] | this[e + 1] << 8;
                return 32768 & n ? 4294901760 | n : n
            }
            ,
            l.prototype.readInt16BE = function(e, t) {
                t || P(e, 2, this.length);
                var n = this[e + 1] | this[e] << 8;
                return 32768 & n ? 4294901760 | n : n
            }
            ,
            l.prototype.readInt32LE = function(e, t) {
                return t || P(e, 4, this.length),
                this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24
            }
            ,
            l.prototype.readInt32BE = function(e, t) {
                return t || P(e, 4, this.length),
                this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]
            }
            ,
            l.prototype.readFloatLE = function(e, t) {
                return t || P(e, 4, this.length),
                r.read(this, e, !0, 23, 4)
            }
            ,
            l.prototype.readFloatBE = function(e, t) {
                return t || P(e, 4, this.length),
                r.read(this, e, !1, 23, 4)
            }
            ,
            l.prototype.readDoubleLE = function(e, t) {
                return t || P(e, 8, this.length),
                r.read(this, e, !0, 52, 8)
            }
            ,
            l.prototype.readDoubleBE = function(e, t) {
                return t || P(e, 8, this.length),
                r.read(this, e, !1, 52, 8)
            }
            ,
            l.prototype.writeUIntLE = function(e, t, n, i) {
                e = +e,
                t |= 0,
                n |= 0,
                i || I(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
                var r = 1
                  , o = 0;
                for (this[t] = 255 & e; ++o < n && (r *= 256); )
                    this[t + o] = e / r & 255;
                return t + n
            }
            ,
            l.prototype.writeUIntBE = function(e, t, n, i) {
                e = +e,
                t |= 0,
                n |= 0,
                i || I(this, e, t, n, Math.pow(2, 8 * n) - 1, 0);
                var r = n - 1
                  , o = 1;
                for (this[t + r] = 255 & e; --r >= 0 && (o *= 256); )
                    this[t + r] = e / o & 255;
                return t + n
            }
            ,
            l.prototype.writeUInt8 = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 1, 255, 0),
                l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)),
                this[t] = 255 & e,
                t + 1
            }
            ,
            l.prototype.writeUInt16LE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 2, 65535, 0),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
                this[t + 1] = e >>> 8) : M(this, e, t, !0),
                t + 2
            }
            ,
            l.prototype.writeUInt16BE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 2, 65535, 0),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8,
                this[t + 1] = 255 & e) : M(this, e, t, !1),
                t + 2
            }
            ,
            l.prototype.writeUInt32LE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 4, 4294967295, 0),
                l.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24,
                this[t + 2] = e >>> 16,
                this[t + 1] = e >>> 8,
                this[t] = 255 & e) : j(this, e, t, !0),
                t + 4
            }
            ,
            l.prototype.writeUInt32BE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 4, 4294967295, 0),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24,
                this[t + 1] = e >>> 16,
                this[t + 2] = e >>> 8,
                this[t + 3] = 255 & e) : j(this, e, t, !1),
                t + 4
            }
            ,
            l.prototype.writeIntLE = function(e, t, n, i) {
                if (e = +e,
                t |= 0,
                !i) {
                    var r = Math.pow(2, 8 * n - 1);
                    I(this, e, t, n, r - 1, -r)
                }
                var o = 0
                  , a = 1
                  , s = 0;
                for (this[t] = 255 & e; ++o < n && (a *= 256); )
                    e < 0 && 0 === s && 0 !== this[t + o - 1] && (s = 1),
                    this[t + o] = (e / a >> 0) - s & 255;
                return t + n
            }
            ,
            l.prototype.writeIntBE = function(e, t, n, i) {
                if (e = +e,
                t |= 0,
                !i) {
                    var r = Math.pow(2, 8 * n - 1);
                    I(this, e, t, n, r - 1, -r)
                }
                var o = n - 1
                  , a = 1
                  , s = 0;
                for (this[t + o] = 255 & e; --o >= 0 && (a *= 256); )
                    e < 0 && 0 === s && 0 !== this[t + o + 1] && (s = 1),
                    this[t + o] = (e / a >> 0) - s & 255;
                return t + n
            }
            ,
            l.prototype.writeInt8 = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 1, 127, -128),
                l.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)),
                e < 0 && (e = 255 + e + 1),
                this[t] = 255 & e,
                t + 1
            }
            ,
            l.prototype.writeInt16LE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 2, 32767, -32768),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
                this[t + 1] = e >>> 8) : M(this, e, t, !0),
                t + 2
            }
            ,
            l.prototype.writeInt16BE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 2, 32767, -32768),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8,
                this[t + 1] = 255 & e) : M(this, e, t, !1),
                t + 2
            }
            ,
            l.prototype.writeInt32LE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 4, 2147483647, -2147483648),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e,
                this[t + 1] = e >>> 8,
                this[t + 2] = e >>> 16,
                this[t + 3] = e >>> 24) : j(this, e, t, !0),
                t + 4
            }
            ,
            l.prototype.writeInt32BE = function(e, t, n) {
                return e = +e,
                t |= 0,
                n || I(this, e, t, 4, 2147483647, -2147483648),
                e < 0 && (e = 4294967295 + e + 1),
                l.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24,
                this[t + 1] = e >>> 16,
                this[t + 2] = e >>> 8,
                this[t + 3] = 255 & e) : j(this, e, t, !1),
                t + 4
            }
            ,
            l.prototype.writeFloatLE = function(e, t, n) {
                return F(this, e, t, !0, n)
            }
            ,
            l.prototype.writeFloatBE = function(e, t, n) {
                return F(this, e, t, !1, n)
            }
            ,
            l.prototype.writeDoubleLE = function(e, t, n) {
                return L(this, e, t, !0, n)
            }
            ,
            l.prototype.writeDoubleBE = function(e, t, n) {
                return L(this, e, t, !1, n)
            }
            ,
            l.prototype.copy = function(e, t, n, i) {
                if (n || (n = 0),
                i || 0 === i || (i = this.length),
                t >= e.length && (t = e.length),
                t || (t = 0),
                i > 0 && i < n && (i = n),
                i === n)
                    return 0;
                if (0 === e.length || 0 === this.length)
                    return 0;
                if (t < 0)
                    throw new RangeError("targetStart out of bounds");
                if (n < 0 || n >= this.length)
                    throw new RangeError("sourceStart out of bounds");
                if (i < 0)
                    throw new RangeError("sourceEnd out of bounds");
                i > this.length && (i = this.length),
                e.length - t < i - n && (i = e.length - t + n);
                var r, o = i - n;
                if (this === e && n < t && t < i)
                    for (r = o - 1; r >= 0; --r)
                        e[r + t] = this[r + n];
                else if (o < 1e3 || !l.TYPED_ARRAY_SUPPORT)
                    for (r = 0; r < o; ++r)
                        e[r + t] = this[r + n];
                else
                    Uint8Array.prototype.set.call(e, this.subarray(n, n + o), t);
                return o
            }
            ,
            l.prototype.fill = function(e, t, n, i) {
                if ("string" == typeof e) {
                    if ("string" == typeof t ? (i = t,
                    t = 0,
                    n = this.length) : "string" == typeof n && (i = n,
                    n = this.length),
                    1 === e.length) {
                        var r = e.charCodeAt(0);
                        r < 256 && (e = r)
                    }
                    if (void 0 !== i && "string" != typeof i)
                        throw new TypeError("encoding must be a string");
                    if ("string" == typeof i && !l.isEncoding(i))
                        throw new TypeError("Unknown encoding: " + i)
                } else
                    "number" == typeof e && (e &= 255);
                if (t < 0 || this.length < t || this.length < n)
                    throw new RangeError("Out of range index");
                if (n <= t)
                    return this;
                var o;
                if (t >>>= 0,
                n = void 0 === n ? this.length : n >>> 0,
                e || (e = 0),
                "number" == typeof e)
                    for (o = t; o < n; ++o)
                        this[o] = e;
                else {
                    var a = l.isBuffer(e) ? e : V(new l(e,i).toString())
                      , s = a.length;
                    for (o = 0; o < n - t; ++o)
                        this[o + t] = a[o % s]
                }
                return this
            }
            ;
            var R = /[^+\/0-9A-Za-z-_]/g;
            function B(e) {
                return e < 16 ? "0" + e.toString(16) : e.toString(16)
            }
            function V(e, t) {
                var n;
                t = t || 1 / 0;
                for (var i = e.length, r = null, o = [], a = 0; a < i; ++a) {
                    if ((n = e.charCodeAt(a)) > 55295 && n < 57344) {
                        if (!r) {
                            if (n > 56319) {
                                (t -= 3) > -1 && o.push(239, 191, 189);
                                continue
                            }
                            if (a + 1 === i) {
                                (t -= 3) > -1 && o.push(239, 191, 189);
                                continue
                            }
                            r = n;
                            continue
                        }
                        if (n < 56320) {
                            (t -= 3) > -1 && o.push(239, 191, 189),
                            r = n;
                            continue
                        }
                        n = 65536 + (r - 55296 << 10 | n - 56320)
                    } else
                        r && (t -= 3) > -1 && o.push(239, 191, 189);
                    if (r = null,
                    n < 128) {
                        if ((t -= 1) < 0)
                            break;
                        o.push(n)
                    } else if (n < 2048) {
                        if ((t -= 2) < 0)
                            break;
                        o.push(n >> 6 | 192, 63 & n | 128)
                    } else if (n < 65536) {
                        if ((t -= 3) < 0)
                            break;
                        o.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128)
                    } else {
                        if (!(n < 1114112))
                            throw new Error("Invalid code point");
                        if ((t -= 4) < 0)
                            break;
                        o.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128)
                    }
                }
                return o
            }
            function H(e) {
                return i.toByteArray(function(e) {
                    if ((e = function(e) {
                        return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "")
                    }(e).replace(R, "")).length < 2)
                        return "";
                    for (; e.length % 4 != 0; )
                        e += "=";
                    return e
                }(e))
            }
            function z(e, t, n, i) {
                for (var r = 0; r < i && !(r + n >= t.length || r >= e.length); ++r)
                    t[r + n] = e[r];
                return r
            }
        }
        ).call(this, n("c8ba"))
    },
    c8ba: function(e, t) {
        var n;
        n = function() {
            return this
        }();
        try {
            n = n || new Function("return this")()
        } catch (e) {
            "object" == typeof window && (n = window)
        }
        e.exports = n
    },
    "1fb5": function(e, t, n) {
        "use strict";
        t.byteLength = function(e) {
            var t = u(e)
              , n = t[0]
              , i = t[1];
            return 3 * (n + i) / 4 - i
        }
        ,
        t.toByteArray = function(e) {
            var t, n, i = u(e), a = i[0], s = i[1], l = new o(function(e, t, n) {
                return 3 * (t + n) / 4 - n
            }(0, a, s)), c = 0, h = s > 0 ? a - 4 : a;
            for (n = 0; n < h; n += 4)
                t = r[e.charCodeAt(n)] << 18 | r[e.charCodeAt(n + 1)] << 12 | r[e.charCodeAt(n + 2)] << 6 | r[e.charCodeAt(n + 3)],
                l[c++] = t >> 16 & 255,
                l[c++] = t >> 8 & 255,
                l[c++] = 255 & t;
            return 2 === s && (t = r[e.charCodeAt(n)] << 2 | r[e.charCodeAt(n + 1)] >> 4,
            l[c++] = 255 & t),
            1 === s && (t = r[e.charCodeAt(n)] << 10 | r[e.charCodeAt(n + 1)] << 4 | r[e.charCodeAt(n + 2)] >> 2,
            l[c++] = t >> 8 & 255,
            l[c++] = 255 & t),
            l
        }
        ,
        t.fromByteArray = function(e) {
            for (var t, n = e.length, r = n % 3, o = [], a = 0, s = n - r; a < s; a += 16383)
                o.push(c(e, a, a + 16383 > s ? s : a + 16383));
            return 1 === r ? (t = e[n - 1],
            o.push(i[t >> 2] + i[t << 4 & 63] + "==")) : 2 === r && (t = (e[n - 2] << 8) + e[n - 1],
            o.push(i[t >> 10] + i[t >> 4 & 63] + i[t << 2 & 63] + "=")),
            o.join("")
        }
        ;
        for (var i = [], r = [], o = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, l = a.length; s < l; ++s)
            i[s] = a[s],
            r[a.charCodeAt(s)] = s;
        function u(e) {
            var t = e.length;
            if (t % 4 > 0)
                throw new Error("Invalid string. Length must be a multiple of 4");
            var n = e.indexOf("=");
            return -1 === n && (n = t),
            [n, n === t ? 0 : 4 - n % 4]
        }
        function c(e, t, n) {
            for (var r, o, a = [], s = t; s < n; s += 3)
                r = (e[s] << 16 & 16711680) + (e[s + 1] << 8 & 65280) + (255 & e[s + 2]),
                a.push(i[(o = r) >> 18 & 63] + i[o >> 12 & 63] + i[o >> 6 & 63] + i[63 & o]);
            return a.join("")
        }
        r["-".charCodeAt(0)] = 62,
        r["_".charCodeAt(0)] = 63
    },
    9152: function(e, t) {
        t.read = function(e, t, n, i, r) {
            var o, a, s = 8 * r - i - 1, l = (1 << s) - 1, u = l >> 1, c = -7, h = n ? r - 1 : 0, d = n ? -1 : 1, f = e[t + h];
            for (h += d,
            o = f & (1 << -c) - 1,
            f >>= -c,
            c += s; c > 0; o = 256 * o + e[t + h],
            h += d,
            c -= 8)
                ;
            for (a = o & (1 << -c) - 1,
            o >>= -c,
            c += i; c > 0; a = 256 * a + e[t + h],
            h += d,
            c -= 8)
                ;
            if (0 === o)
                o = 1 - u;
            else {
                if (o === l)
                    return a ? NaN : 1 / 0 * (f ? -1 : 1);
                a += Math.pow(2, i),
                o -= u
            }
            return (f ? -1 : 1) * a * Math.pow(2, o - i)
        }
        ,
        t.write = function(e, t, n, i, r, o) {
            var a, s, l, u = 8 * o - r - 1, c = (1 << u) - 1, h = c >> 1, d = 23 === r ? Math.pow(2, -24) - Math.pow(2, -77) : 0, f = i ? 0 : o - 1, p = i ? 1 : -1, m = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
            for (t = Math.abs(t),
            isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0,
            a = c) : (a = Math.floor(Math.log(t) / Math.LN2),
            t * (l = Math.pow(2, -a)) < 1 && (a--,
            l *= 2),
            (t += a + h >= 1 ? d / l : d * Math.pow(2, 1 - h)) * l >= 2 && (a++,
            l /= 2),
            a + h >= c ? (s = 0,
            a = c) : a + h >= 1 ? (s = (t * l - 1) * Math.pow(2, r),
            a += h) : (s = t * Math.pow(2, h - 1) * Math.pow(2, r),
            a = 0)); r >= 8; e[n + f] = 255 & s,
            f += p,
            s /= 256,
            r -= 8)
                ;
            for (a = a << r | s,
            u += r; u > 0; e[n + f] = 255 & a,
            f += p,
            a /= 256,
            u -= 8)
                ;
            e[n + f - p] |= 128 * m
        }
    },
    e3db: function(e, t) {
        var n = {}.toString;
        e.exports = Array.isArray || function(e) {
            return "[object Array]" == n.call(e)
        }
    },
    e04e: function(e, t, n) {
        "use strict";
        n.r(t),
        n.d(t, "encrypt", (function() {
            return p
        }
        )),
        n.d(t, "decrypt", (function() {
            return m
        }
        ));
        var i = 0
          , r = 32
          , o = 16
          , a = [214, 144, 233, 254, 204, 225, 61, 183, 22, 182, 20, 194, 40, 251, 44, 5, 43, 103, 154, 118, 42, 190, 4, 195, 170, 68, 19, 38, 73, 134, 6, 153, 156, 66, 80, 244, 145, 239, 152, 122, 51, 84, 11, 67, 237, 207, 172, 98, 228, 179, 28, 169, 201, 8, 232, 149, 128, 223, 148, 250, 117, 143, 63, 166, 71, 7, 167, 252, 243, 115, 23, 186, 131, 89, 60, 25, 230, 133, 79, 168, 104, 107, 129, 178, 113, 100, 218, 139, 248, 235, 15, 75, 112, 86, 157, 53, 30, 36, 14, 94, 99, 88, 209, 162, 37, 34, 124, 59, 1, 33, 120, 135, 212, 0, 70, 87, 159, 211, 39, 82, 76, 54, 2, 231, 160, 196, 200, 158, 234, 191, 138, 210, 64, 199, 56, 181, 163, 247, 242, 206, 249, 97, 21, 161, 224, 174, 93, 164, 155, 52, 26, 85, 173, 147, 50, 48, 245, 140, 177, 227, 29, 246, 226, 46, 130, 102, 202, 96, 192, 41, 35, 171, 13, 83, 78, 111, 213, 219, 55, 69, 222, 253, 142, 47, 3, 255, 106, 114, 109, 108, 91, 81, 141, 27, 175, 146, 187, 221, 188, 127, 17, 217, 92, 65, 31, 16, 90, 216, 10, 193, 49, 136, 165, 205, 123, 189, 45, 116, 208, 18, 184, 229, 180, 176, 137, 105, 151, 74, 12, 150, 119, 126, 101, 185, 241, 9, 197, 110, 198, 132, 24, 240, 125, 236, 58, 220, 77, 32, 121, 238, 95, 62, 215, 203, 57, 72]
          , s = [462357, 472066609, 943670861, 1415275113, 1886879365, 2358483617, 2830087869, 3301692121, 3773296373, 4228057617, 404694573, 876298825, 1347903077, 1819507329, 2291111581, 2762715833, 3234320085, 3705924337, 4177462797, 337322537, 808926789, 1280531041, 1752135293, 2223739545, 2695343797, 3166948049, 3638552301, 4110090761, 269950501, 741554753, 1213159005, 1684763257];
        function l(e, t) {
            return e << t | e >>> 32 - t
        }
        function u(e) {
            return (255 & a[e >>> 24 & 255]) << 24 | (255 & a[e >>> 16 & 255]) << 16 | (255 & a[e >>> 8 & 255]) << 8 | 255 & a[255 & e]
        }
        function c(e) {
            return e ^ l(e, 2) ^ l(e, 10) ^ l(e, 18) ^ l(e, 24)
        }
        function h(e) {
            return e ^ l(e, 13) ^ l(e, 23)
        }
        function d(e, t, n) {
            for (var i, r, o = new Array(4), a = new Array(4), s = 0; s < 4; s++)
                a[0] = 255 & e[0 + 4 * s],
                a[1] = 255 & e[1 + 4 * s],
                a[2] = 255 & e[2 + 4 * s],
                a[3] = 255 & e[3 + 4 * s],
                o[s] = a[0] << 24 | a[1] << 16 | a[2] << 8 | a[3];
            for (i = 0; i < 32; i += 4)
                r = u(r = o[1] ^ o[2] ^ o[3] ^ n[i + 0]),
                o[0] ^= c(r),
                r = u(r = o[2] ^ o[3] ^ o[0] ^ n[i + 1]),
                o[1] ^= c(r),
                r = u(r = o[3] ^ o[0] ^ o[1] ^ n[i + 2]),
                o[2] ^= c(r),
                r = u(r = o[0] ^ o[1] ^ o[2] ^ n[i + 3]),
                o[3] ^= c(r);
            for (var l = 0; l < 16; l += 4)
                t[l] = o[3 - l / 4] >>> 24 & 255,
                t[l + 1] = o[3 - l / 4] >>> 16 & 255,
                t[l + 2] = o[3 - l / 4] >>> 8 & 255,
                t[l + 3] = 255 & o[3 - l / 4]
        }
        function f(e, t, n) {
            var a = []
              , l = 0
              , c = new Array(r);
            !function(e, t, n) {
                for (var r, o, a = new Array(4), l = new Array(4), c = 0; c < 4; c++)
                    l[0] = 255 & e[0 + 4 * c],
                    l[1] = 255 & e[1 + 4 * c],
                    l[2] = 255 & e[2 + 4 * c],
                    l[3] = 255 & e[3 + 4 * c],
                    a[c] = l[0] << 24 | l[1] << 16 | l[2] << 8 | l[3];
                for (a[0] ^= 2746333894,
                a[1] ^= 1453994832,
                a[2] ^= 1736282519,
                a[3] ^= 2993693404,
                r = 0; r < 32; r += 4)
                    o = u(o = a[1] ^ a[2] ^ a[3] ^ s[r + 0]),
                    t[r + 0] = a[0] ^= h(o),
                    o = u(o = a[2] ^ a[3] ^ a[0] ^ s[r + 1]),
                    t[r + 1] = a[1] ^= h(o),
                    o = u(o = a[3] ^ a[0] ^ a[1] ^ s[r + 2]),
                    t[r + 2] = a[2] ^= h(o),
                    o = u(o = a[0] ^ a[1] ^ a[2] ^ s[r + 3]),
                    t[r + 3] = a[3] ^= h(o);
                if (n === i)
                    for (r = 0; r < 16; r++)
                        o = t[r],
                        t[r] = t[31 - r],
                        t[31 - r] = o
            }(t, c, n),
            new Array(16);
            for (var f = new Array(16), p = e.length; p >= o; ) {
                d(e.slice(l, l + 16), f, c);
                for (var m = 0; m < o; m++)
                    a[l + m] = f[m];
                p -= o,
                l += o
            }
            return a
        }
        function p(e, t) {
            return f(e, t, 1)
        }
        function m(e, t) {
            return f(e, t, 0)
        }
        t.default = {
            encrypt: p,
            decrypt: m
        }
    },
  });

e_=yu.o("b639")
s_=yu.o("e04e")
// console.log(e_)
pa=g("SM4",{
    "code": 0,
    "data": {
        "signData": "+ehYfyH7UUbFxdQIGd3JYKzoxOTMwyl9kSyB+JUV3TwVbJ3K/VOrSMvfgeNXUSND+TM52ATChcEoCPiJhQ5Cew==",
        "encType": "SM4",
        "data": {
            "encData": "943195DDA5E5337E08E0A527071CC637E0074CBD73D293A3643B2199C79561872E19ABE7BB2600D23E9CDB14C1A75194C1D3C735D2DCC50E297311A423B72BF0AE4781F770874C1AC923AD26618311F1E72934E0FFBB639208EEADCEC171768624E540918807252F0FF6D4D741C14BF4F5CAB8FCF62C8A6675B125BC9EA6FD5BC91AC1A85DDB6CF1E859ED27C0247D0BA2C814483CC7254F297E62FDF3F2C1642D31F09BD561856220190D04FF70342DD6CBF1E9998A474B8ECAC71B0DA3B7BA09551C6EE4F2369503B8F4A55862404E307207E61DA99394F8FB946D3E1F6DCA1D39ADC8C9833E3DD81B979F2FCD049914F2B985967B7C67179BD83799A3BCC420ABC651BFE64082576E38011E62F83D444900A7F1DC60803B5D392B0054FC756CBB45BD7D6F3EA0C0D8D58FDAB3FD5F523C856783C6E7089E51EA8C1499142E0CF1C41763C7002846EE2A459894F9A3E22EB1A862C8B1FB066492C9413448D1444900A7F1DC60803B5D392B0054FC7530F80D58E333D81443B95A6D104C184E77A6D187D3384A8BCBF6D22E42895EF7E971E31DEAAE71A4911B58CD02CDE2D76328EAD0B597A91D1D407485C817212735ABD8D058E8CA945D7F84C4E50A414E2B455347EB2267F7FD55B954F6B97D73331EE5B181D6AFDE994E9FD8E6A2AA1DCB95F37E9BC03ED83B21193671408EB99990AFF573786B7C1AEA7EA4D2D6AD183265CBF9BB2C9670D78B80DA4A310BCD894898C1B5A981492ED8D7482B41ECEDC5985746F20552902911B4C33ABFC61A21782FCBC635CC278A88058D33F41182AEDEE7F9C3A36C8642571F18C1ABD2BCAB01663B2E9C35650E74AD893EF04D2D8DF426A1A90422D40FE350AA784246D22BFBD78065EF1F19CD6FC8E02E056B3530D4F1229ED3A1B9A54758C46F1654A6A70B4E74F6C7E01AB5C769C8DC3F540B97D9663D775BA1483515B9D36E8AF8598BC5CC1309E79CD4D9A6401DA15F5F82454197E5A8A17EF1234D97078EFE357CDF43F8A9080AF89F07C1806FFAF4EC98D3BED91CBA9238C33E835CA8A2FCD3469027473065419DD7AD3B182A745585CABCEB7EC5BBEF82FDA359B32603520D52AA023379A52E01A8B760F5C41B12B0A186356456F710FD0D6826E52DE07688D0CE6A959517313B3D1D929988C759218850182FEA36036B5B0FEE63175041C340A365329D16250848B59ADC726462CCF2D2DB0E21ED9D7E5F6F7A912D92E11653D685D712A60E3D740F3C69101FCFD1E43271AFEE8AD830FF6AB972A5A2C8BB4275EE3BD4C478AA03C13E954CF0D86ABCE8D80AB780667234F1AB28DF10272B44987C9F48ED0ED2F84D721D60709D659937272663A9DDB2CD89FA5D174D52F65EDABF2D33EBCBD8B268CC1DEFA5EFC341962625E2EDEF651766FCAFD7CCD294C53815FCABFABE9509A2DA3C61A20078B4088732279976FA02E9EA6E548673C37E97D9663D775BA1483515B9D36E8AF85957132FB64084BC5E0B785F2191B86B493815FCABFABE9509A2DA3C61A20078B4F8CB9BABBDCD7364DF9D3DB5FAA52D0ACE1EE612EB5DE8D219DB07E307F521C2D03D1D4E2FB7DF972493679EF395559B181C46666049DE9E13AD1D2B2E085E61FCDEBFBF5268244D08663D4FE17D7F3E878F859940DE7A27A835494EF11EC9D75612416D0E2DC30810864C72F26F5EF2EAFF8B361C01D88C567D31F6F59D061F8585631DFD81A1A44909DBC4F3F27E71FBD7E1C9D611B694714310062DEDB5FE350A235700583937EB5886C6822EC35AD2EA3D2847CF77588F3C26858622FA75D5B56D85337535250B4990125EAACDECD06BA77835C50AB9E7BACBCA8C268FCFBB251CF5960D8958761BDF28A13A8C50720E6812453B72DCA4AE6443703CDCF7659EBE2FAA292599D9887584A83066D7AFDACFF31C9D70553F6E30AAC835C9F6778B8091EED9308E28D7C31571DF912E808543C233AE14612F3807C72CB550316629FFDAB4DBF0574AC298027CEDD55E92AF2E7D01D7D11F8186D46266C2885921D57D8782DFB3EAAD3170EE20045CAC75D6F24E3D0925FD1B0FBDF905FBB164999E02021CEE14EFDD9EF68CB76537FA200CB7B53D1F5C1B82E16A3D6797BE298F6184AF5050E48C732F91598EF066764AC0FD61AD5503F744E927D6D9483E5131BF21ABDA809A4FADCA13EFB0ACF049344E02CE346BE7BC3E1EF1A1FE0F535B4DA078085D58CBCA25424DDC98249BE95E791542DB573138540D78256492643B45CF1400440FF32D30D16FE08182C56B7841004B6FEE50D2B9FE2494A3A1DFAF4CDE67023404A2E9EF57A1677F3CEBE0DB1950DD19D52A8160A498323CAB902F17C393221334EC7F4C9978AA352FE40A6EC562005E80697D2644F7204BBCF86FF6DF5D72B0F033611C8122A7CD97217F676E3B342F43D94AFA92153E3955442629FAC03CA372F7A6D0765D6D68BE0816865DA182FE860D4717792C725C48BD090F899C42EB990616BE2EEB4EEAA1DC4042B1E36871B2AE2FDF14F135CE72FB5BD84F6987D9F23D9FDE76D1CD4EB1B484F150662E47E77EE2E92E2ABE5116D09F7DABBDB59EA2F8549823D373342CCFBC488E321985A3B9E69390EEC03DF2D799CA37CD8D9BD895566C8462E43F8407CE7A98507411C56142481A78ECE2ACE40F99A6A93A947845803634A2E3B060BF92200162303EC72ABC55B1B0A9F40A4ECB97D9663D775BA1483515B9D36E8AF859EDAA5A4E8E9995C6AF6EA0BD56A49D9707A7BA5418EFA266D2DFFF0EBE2B8A4117B8F04489B3F4B9DCBECA674EF2B1DE5E4A4EB152907743EE47A7D669003FC1615F52561FE20FB7FCC55514434938FC04143CA0DACE8C7D0EDFBBCEB16DD29CD2EA3D2847CF77588F3C26858622FA75AD1776BD70DA903A80315B9B02880D62E9617ED2E8E9B05670AC759FE43387D87E58B18E9EB91D60EBDBB160047B981E97475D9540702A48B117A50F323D0DA51EAEDAF3F40967B11B9C099ABF194060156D903ADB5FA39E28CAC25D9DAE38B6D9C747A02B84EC605B6E7FC38F17A08BA2DB48F3FA6E14D5D5F2401E65433BC23D957CB9D784454D3967EA1F579BA6114B19F01672256066F29B06EF7F7FF1B76629FFDAB4DBF0574AC298027CEDD55EF5A6008408AD264E09112A7317809EF313398FFB689CA58AC611301DD1B37AD3E9E30A15744BD02FD004475BAF8772F96A93FB1F98E4B0A12DDDE7A3494616BE181C46666049DE9E13AD1D2B2E085E61C768AD29CFA2B6B32CA347D9F206DD17BD26C8D6D6E256296B49A72F204A4BFBC7E0C400973CCC3266F9CB4B677E4B223815FCABFABE9509A2DA3C61A20078B408CB2AE684B8CA9503A5A89B5015BA2BF2F836EA57FAF8AB6ED7A386C306A5319831B39FB13A3CF37C2F33B9C70524733815FCABFABE9509A2DA3C61A20078B45D36D0C6944AA33A17AEF48789F3D52886E285FE5C0A8624A05FA4BEFA045DAA9BD3524FEC1BC2CF236F3166093FE10BD335C0DC45D7CFBC9161A8502B99C4222445F6B3FBE14A0B6F6BDD6F1785A88D1031130B40028048FD3E54DD35ADA79480F620CEF65F3F1744412C847004246FB82A114FE1CDDEDC448DEA022F201AB1B23FB881FFD214E7F33D9FE6BBE31F698CEDE8CC1D4F846D5C71E737D6F516B9BE91920096155623F1DE0560C0262A7521D57D8782DFB3EAAD3170EE20045CACF5391C0BA6348350F6A71AB28BF26EDA4AC0FD61AD5503F744E927D6D9483E5105EA8E085579280DF3487A09FF4DBEB07C12BE197383C9E8B8530879EE8854CAC81058A6786D0422B05C18C0CC1D60E9559A34841B3ACFC5A5F9FACF907619026A2AA922AA6AD0E9F9E23B7B09A98992DEEFEF38F38D04808568917814FCEE9F316DF391FBBC8E034DA973E3DA899F911521D179D1C04398E1F093197055BB265520450572506E1444702F0A89B6F61CAF3A13121E2781D35DB16C45F19B2F406C1153D9E913DC3DA9B047299A8B46B223F3B712B23416A26EA1AE2F8B3F820987041725AC6BA43514EF3AE79E4C90768CA9D3188580ABD7E8887B52289BBC190C6A7E7604539A49EDBB043E8314609504F26A8DD964DDDE61BBBE7D5D79290181691F04B9CEBB01DD611855057D5BE573B9ADF00CC576CAC9EF4DF7F355ED7318EC8B31EB047C322A6E8FF34D04C16D16ADF865EF0135ECF7785574B585CB494AC0FD61AD5503F744E927D6D9483E5157B037044DEC77CBEDAD8F5FB30B93933D957CB9D784454D3967EA1F579BA6115E36E310455C118CD0F2D7B9E3E09D4C268A07C92E9FF0161ECE813A8E9A592B41300846416E52C6393989F91133C29CD0BAEDAD2DA24DED41419F9A97E578EF3815FCABFABE9509A2DA3C61A20078B46FE1CEBD1C89CA513EE6D63A8B0CB2893BAA69C61F4FCAABB32A0A968DDE4DA0A9A25D7325CA7F87D3622364506E03AF97D9663D775BA1483515B9D36E8AF85919EBED1C126432E9C732231DAEBD3A356F912E9D519C71BF4C3947D52473A8197B7167F4344883DA8012425D80BFD2B897D9663D775BA1483515B9D36E8AF859E1A8CBD76EE31A2E3A3C53480982FEFE70FA018EA272208B7C176EAD07D5E0BC99DEAB9C71675BC26F69A8295A4C5974BCD73F6D702F48DF0DD46DEFEFF35D1403D486FF180DFEA994B3E889A460A1D0AD353394C791185EF55D354ACD3A0F1FAD0D3D99C54A971331C1310095F1798A4E91E4E0BA6CCE35A00456870905520DCAD7D137E67597F13A7C3457A93D8118F6A6F1A91AF455AFB9700B350A9F44A8D24A63F7FFC09EC48504CB539108BAD26629FFDAB4DBF0574AC298027CEDD55E4BC29B0D269BDB48F4E69A153ECDF8E3C647C263FBCCC12678B305C8E968319FBAC26DE7F881DE29149A21B29281385C143BB8EC7E8B8DDBDEB0899D86A61A59A79ABFA617C0035E966570FAC3ABDF319A230E7AA083FAF5A98E6A8793F5D09CA6857200B5FD24C93A841F6A343420EB441DC0FBA6953D0EF058369B2D929C23F8B8C5D4059DF4E2C197966BA3A20E811088A72A5DE70AD873A4648C85A0CB87EED6A0FECA0C64E0F8C3121757CFCEF0848F355576C478A988A7F72B55CEB6DE00509748365A8FC13F7F0D05737DF754F1C515E21BAFFFF7243D8937663982FFF43AE351E0AF9E49D04F155DEC7261F546B58E5A5CD79586A0116E99E6C4E583A87AF8E47818732E2C234638D759B62D3F3332FCED158A4D1583894B509D273A987C9F48ED0ED2F84D721D60709D65998445F52CAAEA8A93FB4FD203C7EACB50181C46666049DE9E13AD1D2B2E085E615CD081B1BA63346C6354C8497CB0862A4AC0FD61AD5503F744E927D6D9483E51B0A49036B1E8947ED3A6BE0C8083A54B007D758DBE404BBCE666CDDFD56719E50E1C8892138ACB7779CACA65C5D3912315BF94C575D25BE66DD75BFDD7E075D697D9663D775BA1483515B9D36E8AF859E0225BF1FB9E7004DD40097742F940298343573EB5CC99C8C6614D123130042CE33DF98232236788425929197FFF0FE6CA37CD8D9BD895566C8462E43F8407CE300DA95888613A0D243CE8B7AF9A5D258BD57B66B08C9517688C11CB77E0FFDA57C138ECE755AD85E8AD84A02E968713C81058A6786D0422B05C18C0CC1D60E9D2EFC0CF978C6169310734B7F8DE9C9DE3FC30AB3F4C040BEC38986D652652AE617DAD942487C27131F2E4EDF3FD728205F1E3AC62E5953DA8AE599FBD68690E12547A651EC2F1F754187475C3E806AFC9CE5CE7827EC0415841F749D45B7AC2417B8840242DF9095293D8240B3736D157246C9C9E24BF8151DE0737E76497F195B88CFE3489F0CC825C24908F0F356D4AC0FD61AD5503F744E927D6D9483E510C6B938FB449B3366909044B240D47453D957CB9D784454D3967EA1F579BA6119ED902105262BF13EB94749F3DF870A1D8808027665DC09B81DD86C4FBAF26D44AC0FD61AD5503F744E927D6D9483E516D5127735CD1B6D22CD0C8C09CDA1E6F972FECBC7DD09970E3A28577413984D53C244A128BF389B9EBD3AAEEE4592D1DBCFDCF8622ABD4CD5CC8BE9BBF5F5AA30A0A0F9D54A0B9AF7CDE2719B43D519A767E73C9B8D23643BE15BDE785CEF01CDD4DD2E1BDA94E7448A3429BF7D2B27D0DD203404D1BABE175503B4301461CE571ACDAB6D19110148AE22DC34ECEC72C5E21169755E51E2030FCA07BBA10DF76818AB769D2329FBB0E99E637B5FD589CE99926085FB6285B340DB2AE972F30C1F350D99321382E8273C8DDA9FE1F9DE7E2808BB1551B2FBE568957156E7FF4248CA9D3188580ABD7E8887B52289BBC19F8AF333B9CB2ADCE679B4BF06A33B9F704F26A8DD964DDDE61BBBE7D5D79290181691F04B9CEBB01DD611855057D5BE573B9ADF00CC576CAC9EF4DF7F355ED7374F8829E639FC58E3E3FC5545B06B61816ADF865EF0135ECF7785574B585CB494AC0FD61AD5503F744E927D6D9483E5157B037044DEC77CBEDAD8F5FB30B93933D957CB9D784454D3967EA1F579BA6115E36E310455C118CD0F2D7B9E3E09D4C268A07C92E9FF0161ECE813A8E9A592BE6C9D27D5329EEFEA6F540E05CEE1AF5D0BAEDAD2DA24DED41419F9A97E578EF3815FCABFABE9509A2DA3C61A20078B46FE1CEBD1C89CA513EE6D63A8B0CB2893BAA69C61F4FCAABB32A0A968DDE4DA0426E716C14D3777628089F4701F6E76A97D9663D775BA1483515B9D36E8AF85919EBED1C126432E9C732231DAEBD3A356F912E9D519C71BF4C3947D52473A8197F7D51F95FD6A26203992808070815361ADA6721031FD1186184031BDC491F92E0DA3C05D811A1B2CE4740A448AE63DB7D4B954B6F80553AECAF023F877B1398040E4EC8C1B753B7FE07773ABFD380D2CBA606DC10A75FD2318E141791800E8D527956BD6F064C3C82B9B9D8E6E7AACA75BB09A7BB12991657B9E8DFB5ABA5D87EEEEA142DC8C8E63D724C49629237805E91A3A2D09491FC4806EFE8B6C518390DDEAB7A89CC8E722A89B6B84B2E25395A52E8E78AAE402117B92507A4DE04B13D3765C46B89D9CEDB6BC24CDC84E1A6F7EA47F2F6095F3052AE8F8C1E3243DF00484E9FC4FA99C364015E1B1C71DE4AFE1F4AF7548ADDF7D4E83339FB8BEBD784380F13E674EE9F25293C126A29363B7EDEC44FB4A70191CA56B581D23254D5BBBD5DB53EA5E7154071E74EF0BE481EF630B1572C7F669F2A5788E9B57C95B4EC529D0E0FEB988B0683CDDFD3344F1D87056E641E4FC48A95148E2FF83DD8ED175918CCBA3EEBE058C994E75E2C1915D567DC8A284478D773282FDDCFCB794961AC1C1923EC86FC3B857C2FAE6DE8FC14899055828B0732B7742BDDEFD2F816BA2118C9CCFD4E896D4CB1231AC80A8630464FFC30F70208CEB23FD0DA1C0C27C63D9DAE49D19AB24EAFC999FABB7D47C16BB600045B2AE427E376C6B4EA6B529CA75822603ED32A66D243C04655D80192198ABEB05F4CA631A70EA7111BB2694B816CD9143371E4663DB47F5A5772F6CE29A39FDFA72AE7D0861756244E217AE29BF4139D9E0F89095FC98CE1A8DFBBE74492A65EA3BCF285E6573C14EF1C2F680970247C9A2499D96BFE952D63CE61987C9F48ED0ED2F84D721D60709D6599F4961FFD22A3208CD49DD84B8CFAEFE87C9863497333FCF64E2B7AEDE1B85EC52F1274B247E0629F951B7C148B264FFDDDD9E3DA1508C7C7C7B3A177A038E924E792D458BE994A836AA25A890A8422225D0AA02749823F1B93B16ECF30AF6308218550D8DFF01F48E02BD424E92512C5C5B1A27867767F7BEEF279DFCFE4E681DDFA34A4CC3DE6AC7CDAE8A7F39A4CAC91FBD547B87C75B1A2EDB990A78A550132F763EDD3197C938C322D46B3231B20F2FE92A0819C51036EAF4465FD5857820C9A01E20B6404E02C5DAE578FE1D9634E17EC5119B0D98D14E00D172243AD23C81058A6786D0422B05C18C0CC1D60E9D2EFC0CF978C6169310734B7F8DE9C9DE3FC30AB3F4C040BEC38986D652652AED8FF6CDEF194E6448135781C07D2777C664215B3BB780B5EB50ACFC97C18181812547A651EC2F1F754187475C3E806AFC9CE5CE7827EC0415841F749D45B7AC2417B8840242DF9095293D8240B3736D157246C9C9E24BF8151DE0737E76497F195B88CFE3489F0CC825C24908F0F356D4AC0FD61AD5503F744E927D6D9483E510C6B938FB449B3366909044B240D47453D957CB9D784454D3967EA1F579BA6119ED902105262BF13EB94749F3DF870A1D8808027665DC09B81DD86C4FBAF26D44AC0FD61AD5503F744E927D6D9483E516D5127735CD1B6D22CD0C8C09CDA1E6F972FECBC7DD09970E3A28577413984D53C244A128BF389B9EBD3AAEEE4592D1DBCFDCF8622ABD4CD5CC8BE9BBF5F5AA30A0A0F9D54A0B9AF7CDE2719B43D519A767E73C9B8D23643BE15BDE785CEF01CDC27D0A0CFDD6F242283496F2EDB1A7391AB99FF59AB9D8001D4F7A716579B5772808BA0AB60080FBBFAC9329B356F7A0AA772DE15BD6CCF646934B6F817D366349E515343976BE49DD06AA21DE9001C975F7B6A6C1B31A9E632F26CD87AC50C218D5D5EF8A440BBFAF8780BD1B8436346B58E5A5CD79586A0116E99E6C4E583A87AF8E47818732E2C234638D759B62DE5454F10EBBAB7F36143FA1BAD24B092987C9F48ED0ED2F84D721D60709D65998445F52CAAEA8A93FB4FD203C7EACB50181C46666049DE9E13AD1D2B2E085E615CD081B1BA63346C6354C8497CB0862A4AC0FD61AD5503F744E927D6D9483E51B0A49036B1E8947ED3A6BE0C8083A54B007D758DBE404BBCE666CDDFD56719E5B5A8F6F60702EE88F3A4D0A41029AB0E15BF94C575D25BE66DD75BFDD7E075D697D9663D775BA1483515B9D36E8AF859E0225BF1FB9E7004DD40097742F940298343573EB5CC99C8C6614D123130042CD01D58D4887B3566FB04DDA956699510CA37CD8D9BD895566C8462E43F8407CE300DA95888613A0D243CE8B7AF9A5D258BD57B66B08C9517688C11CB77E0FFDA121C0A662D9CECC93D09C414EFD2C028987C9F48ED0ED2F84D721D60709D6599BF1A4239E351B46953D8FD8C2A9CD155EAC3A57E67A1A92B9D5D0F5B6376C30E64C150567752934E50EDF7FDCA2F25C89458D9A1B5F27866DA6F029D4E9A47BDC08285E0BF5E5852448A15060CE14BC88E478F7D3521A057C91723557B1ACC2F92DA07444DA1526331109FAA4B5190B53BF53F786F8C7E12124F7C6D689A648B9F1142B244FF669F76CD2085344C73F557750802D1CCF8C803B3E881ABDC119FBDAD417EB5EDC97C94E7B340CFBE464E3D49E10769ADF903F53E58FBB514FC23C84AF2A50887752A72B01584E9C0004E444900A7F1DC60803B5D392B0054FC75B7A00E4011E692BB95F2C02CD49FF2EE2C4B51E46CC029AE6E4ECA8EFC4F5100BDFEE756603654E9264669C2E90E56B576273EACF919BB74423654B57607BD925397AC08489FD76B7354E81B3920D61BB539CE43CE13DB232D25B569C10BA0ABDD60E06AF1C5AC8029945DABBD7A3F0DC5E2CDAC1CA275C89B35738096139C1187ECEBEBD05F6DED2B66CE17AB2A2CA3D2EA3D2847CF77588F3C26858622FA7574A3870DF72821F699E1E3FBB89C5924BFB294ECA598029517ABC710E18301F0B102222B211FAC090B355B950468B93F12443C863B074E1220736183EA94A74E3711E4A8C975A0853F26B96331DCD5D705CFC920F016B4FF48D7571F8FABC0365C368E359D812FBA13110F27594D2EDEA9B667D2C977D303935D87B84B94124C46B58E5A5CD79586A0116E99E6C4E583A87AF8E47818732E2C234638D759B62DB29F118666DDC4B6815139D9B9B500C6987C9F48ED0ED2F84D721D60709D65998445F52CAAEA8A93FB4FD203C7EACB50181C46666049DE9E13AD1D2B2E085E615CD081B1BA63346C6354C8497CB0862A4AC0FD61AD5503F744E927D6D9483E51B0A49036B1E8947ED3A6BE0C8083A54B007D758DBE404BBCE666CDDFD56719E5F365AAA973F400A445741CCCAC763EA815BF94C575D25BE66DD75BFDD7E075D697D9663D775BA1483515B9D36E8AF859E0225BF1FB9E7004DD40097742F940298343573EB5CC99C8C6614D123130042C92998166846877DFB26EAA2C3BF890B9CA37CD8D9BD895566C8462E43F8407CE300DA95888613A0D243CE8B7AF9A5D258BD57B66B08C9517688C11CB77E0FFDA9FA2D6B8FF994AE9E5BE70A056001137C81058A6786D0422B05C18C0CC1D60E9D2EFC0CF978C6169310734B7F8DE9C9DE3FC30AB3F4C040BEC38986D652652AE241C771736887DD004EA2F707E94816C6A2DF268FF0D032B4FCCCF17A05AA4C312547A651EC2F1F754187475C3E806AFC9CE5CE7827EC0415841F749D45B7AC2417B8840242DF9095293D8240B3736D157246C9C9E24BF8151DE0737E76497F195B88CFE3489F0CC825C24908F0F356D4AC0FD61AD5503F744E927D6D9483E510C6B938FB449B3366909044B240D47453D957CB9D784454D3967EA1F579BA6119ED902105262BF13EB94749F3DF870A1D8808027665DC09B81DD86C4FBAF26D44AC0FD61AD5503F744E927D6D9483E516D5127735CD1B6D22CD0C8C09CDA1E6F972FECBC7DD09970E3A28577413984D53C244A128BF389B9EBD3AAEEE4592D1DBCFDCF8622ABD4CD5CC8BE9BBF5F5AA30A0A0F9D54A0B9AF7CDE2719B43D519AD1953437FF8EE7947F0AD921A38DB6837348C80C257E8ABDC336F85DC5F3FD7D01349F818DCAA116A85A3D0B8D0A942C3E9D32C8549C658DDC7D2B76CBE2E1B1FDBE392D151C93382BC6B8A0498DC1BB708C347E46B0618D3E42710327BED937D7991BF2248650DED544D3D6D4479354618D4EFE8CA3B69835EC876FB64E6710DBBD11E68DF57F06B718034196CC96DBA453F096EAA4CA76C99F93DB8585924A2F512A50FEF595D569AA6FB631EAC04D19005DDF8700839CF063366051758D4EBBBD5DB53EA5E7154071E74EF0BE481EB76DA6D8EAB683E829023005D103A246987C9F48ED0ED2F84D721D60709D65992710F996D1E31CD59B0DA2948536E1ED265A54B7BF736E95CBEA567075822DF1184B5157C15CFF752BFA123ED6954CAD1A2A4FFAD3221479093EFB3207D13498F9E5D6121EEA43BFF204A958A7A896B859CAECADA3CCF551E1510AB13122B1EB88B15F9145888676DF2F98FE648A57E709EB7A14425D9B5E4E25953E734745DFCA0355AE07EF0ACC0F2D6788F3F7118E7FC4004052542704F3A59C042E7B1E4B330AA249ECE1D60F3610A512391B9B4892FC4ACAEF21916CD62A0EFBE645E3D8E28F6717A3D358C4A5C3E219BDA841778597DED8BE050938A49D777E6F1CC57D618D48816C0B3665B1F0C376E492F657B42F7F5FE538EB5A5BACF994048F2C999C1ABFA8DBBA216B4A74C2E9DED06CD4825E9F21E2FD816481527F08698204F6CB49F5D8D0CA0807DCDCCC051BB9C777E4E171B6486547C2E9DB06B68A81A61409372E7E00A0D1691A2F222D7698DCAC"
        },
        "signType": "SM2",
        "appCode": "T98HPCGN5ZVVQBS8LZQNOAEXVI9GYHKQ",
        "version": "1.0.0",
        "timestamp": "1755410870443"
    },
    "message": "成功",
    "timestamp": "1755410870",
    "type": "success"
})
console.log(pa)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值