逆向 qq 音乐 sign,data, 解密 response 返回的 arraybuffer

解密 arraybuffer
python requests 请求得到 arraybuffer,转为 hex 传递给 js

res_data = sign = ctx.call("decrypt", response.content.hex())
function decrypt(hex) {const bytes = new Uint8Array(hex.length / 2);for (let i = 0; i < hex.length; i += 2) {bytes[i/2] = parseInt(hex.substr(i, 2), 16);}// console.log(N(data))return  N(bytes.buffer);
}

pyexecjs 不能直接调用 js 异步函数,需要转为普通函数再用 python 调用

async function getRealValue(data) {try {const result = await L(data);console.log('真实值:', result);return result;} catch (error) {console.error('获取值出错:', error);}
}function getRealValueSync(data) {let done = false;let result;let error;// 调用原始异步函数getRealValue(data).then(res => {result = res;done = true;}).catch(err => {error = err;done = true;});// 使用deasync进行同步等待deasync.loopWhile(() => !done);if (error) throw error;return result;
}

完整 js 代码

const deasync = require('deasync');window = global;
global.crypto = {getRandomValues: require('crypto').randomFillSync,subtle: require('crypto').webcrypto.subtle
};function watch(obj, name) {return new Proxy(obj, {get: function (target, property, receiver) {try {if (typeof target[property] === "function") {// 这里原代码有个未闭合的注释或逻辑,保持原样} else {console.table(['>get => ' +"对象 => " + name +", 读取属性: " + property +", 值为:" + target[property] +", 类型为:" + (typeof target[property])]);}} catch (e) {// 捕获到异常时,这里可补充处理逻辑,当前仅空 catch}return target[property];},set: (target, property, newValue, receiver) => {try {console.table(['+set => ' +"对象 => " + name +", 设置属性: " + property +", 值为:" + newValue +", 类型为:" + (typeof newValue)]);} catch (e) {// 捕获到异常时,这里可补充处理逻辑,当前仅空 catch}return Reflect.set(target, property, newValue, receiver);}});
}location = {"host": "y.qq.com",
}
//
//
navigator = {"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
}// navigator = watch(navigator, 'navigator')
// location = watch(location, 'location')
window = watch(window, 'window')
// crypto = watch(crypto, 'crypto')
var G = "undefined" !== typeof e ? e : "undefined" !== typeof window ? window : "undefined" !== typeof self ? self : void 0, Y = function(e) {return e && "undefined" != typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e
};
(function() {
var e = function(e, t, n) {for (var r = [], i = 0; i++ < t; )r.push(e += n);return r
}, t = function(e) {for (var t, n, r = String(e).replace(/[=]+$/, ""), o = r.length, a = 0, u = 0, c = []; u < o; u++)~(n = i[r.charCodeAt(u)]) && (t = a % 4 ? 64 * t + n : n,a++ % 4) && c.push(255 & t >> (-2 * a & 6));return c
}, n = function(e) {return e >> 1 ^ -(1 & e)
}, r = [], i = e(0, 43, 0).concat([62, 0, 62, 0, 63]).concat(e(51, 10, 1)).concat(e(0, 8, 0)).concat(e(0, 25, 1)).concat([0, 0, 0, 0, 63, 0]).concat(e(25, 26, 1)), o = function(e) {for (var r = [], i = new Int8Array(t(e)), o = i.length, a = 0; o > a; ) {var u = i[a++], c = 127 & u;u >= 0 ? r.push(n(c)) : (c |= (127 & (u = i[a++])) << 7,u >= 0 || (c |= (127 & (u = i[a++])) << 14,u >= 0 || (c |= (127 & (u = i[a++])) << 21,u >= 0 || (c |= (u = i[a++]) << 28))),r.push(n(c)))}return r
};
return function(e, t) {var n = o(e), i = function(e, t, o, u, c) {return function s() {for (var l, f, p = [o, u, t, this, arguments, s, n, 0], d = void 0, h = e, g = []; ; )try {for (; ; )switch (n[++h]) {case 0:p[n[++h]] = new p[n[++h]](p[n[++h]]);break;case 1:return p[n[++h]];case 2:for (l = [],f = n[++h]; f > 0; f--)l.push(p[n[++h]]);p[n[++h]] = a(h + n[++h], l, o, u, c);try {Object.defineProperty(p[n[h - 1]], "length", {value: n[++h],configurable: !0,writable: !1,enumerable: !1})} catch (m) {}break;case 3:p[n[++h]] = p[n[++h]] < p[n[++h]];break;case 4:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 5:p[n[++h]] = p[n[++h]] >= n[++h];break;case 6:p[n[++h]] = p[n[++h]] >> n[++h],p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 7:p[n[++h]] = p[n[++h]] < n[++h];break;case 8:p[n[++h]] = p[n[++h]].call(d);break;case 9:p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = n[++h];break;case 10:p[n[++h]] = p[n[++h]] | n[++h];break;case 11:p[n[++h]] = p[n[++h]] & n[++h],p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 12:p[n[++h]] = {};break;case 13:p[n[++h]] = p[n[++h]] | p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]],h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 14:p[n[++h]] = d;break;case 15:p[n[++h]] = n[++h],p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = n[++h];break;case 16:p[n[++h]] = !0;break;case 17:p[n[++h]] = p[n[++h]] === p[n[++h]];break;case 18:p[n[++h]] = p[n[++h]] / p[n[++h]];break;case 19:p[n[++h]][p[n[++h]]] = p[n[++h]],p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]);break;case 20:p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]][n[++h]] = p[n[++h]];break;case 21:p[n[++h]] = p[n[++h]] * p[n[++h]];break;case 22:p[n[++h]] = ++p[n[++h]],p[n[++h]] = p[n[++h]];break;case 23:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]][p[n[++h]]],p[n[++h]] = p[n[++h]];break;case 24:p[n[++h]] = p[n[++h]] << n[++h];break;case 25:p[n[++h]] = Y(p[n[++h]]);break;case 26:p[n[++h]] = p[n[++h]] | p[n[++h]];break;case 27:p[n[++h]] = n[++h];break;case 28:p[n[++h]] = p[n[++h]][n[++h]];break;case 29:p[n[++h]] = n[++h],p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]] = n[++h];break;case 30:p[n[++h]] = p[n[++h]].call(d, p[n[++h]], p[n[++h]]);break;case 31:p[n[++h]] = n[++h],p[n[++h]] = n[++h],p[n[++h]] = n[++h];break;case 32:p[n[++h]] = n[++h],p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 33:p[n[++h]] = p[n[++h]] === n[++h];break;case 34:p[n[++h]] = p[n[++h]] + n[++h];break;case 35:p[n[++h]] += String.fromCharCode(n[++h]);break;case 36:p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]);break;case 37:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]][n[++h]];break;case 38:p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]);break;case 39:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]] === p[n[++h]],h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 40:p[n[++h]] = p[n[++h]] > p[n[++h]];break;case 41:p[n[++h]] = p[n[++h]] - p[n[++h]];break;case 42:p[n[++h]] = p[n[++h]] << p[n[++h]];break;case 43:p[n[++h]] = p[n[++h]] & p[n[++h]];break;case 44:p[n[++h]] = p[n[++h]] & n[++h];break;case 45:p[n[++h]] = -p[n[++h]];break;case 46:for (l = [],f = n[++h]; f > 0; f--)l.push(p[n[++h]]);p[n[++h]] = i(h + n[++h], l, o, u, c);try {Object.defineProperty(p[n[h - 1]], "length", {value: n[++h],configurable: !0,writable: !1,enumerable: !1})} catch (v) {}break;case 47:h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 48:p[n[++h]][n[++h]] = p[n[++h]];break;case 49:p[n[++h]] = ~p[n[++h]];break;case 50:p[n[++h]] = p[n[++h]].call(p[n[++h]]);break;case 51:p[n[++h]] = p[n[++h]] ^ p[n[++h]];break;case 52:p[n[++h]] = ++p[n[++h]];break;case 53:p[n[++h]] = !1;break;case 54:p[n[++h]] = p[n[++h]] >>> n[++h];break;case 55:p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]] = n[++h],p[n[++h]][n[++h]] = p[n[++h]];break;case 56:p[n[++h]] = Array(n[++h]);break;case 57:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]][n[++h]] = p[n[++h]];break;case 58:p[n[++h]] = p[n[++h]] % p[n[++h]];break;case 59:p[n[++h]] = p[n[++h]][p[n[++h]]],p[n[++h]] = p[n[++h]][n[++h]];break;case 60:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = n[++h];break;case 61:p[n[++h]] = p[n[++h]] - n[++h];break;case 62:p[n[++h]] = p[n[++h]] + p[n[++h]];break;case 63:p[n[++h]] = !p[n[++h]];break;case 64:p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 65:for (p[n[++h]] += String.fromCharCode(n[++h]),l = [],f = n[++h]; f > 0; f--)l.push(p[n[++h]]);p[n[++h]] = i(h + n[++h], l, o, u, c);try {Object.defineProperty(p[n[h - 1]], "length", {value: n[++h],configurable: !0,writable: !1,enumerable: !1})} catch (A) {}p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 66:p[n[++h]] = p[n[++h]] - 0;break;case 67:p[n[++h]] = p[n[++h]].call(p[n[++h]], p[n[++h]]);break;case 68:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]],p[n[++h]] = p[n[++h]] - 0;break;case 69:p[n[++h]] = p[n[++h]][p[n[++h]]],p[n[++h]] = p[n[++h]] + p[n[++h]];break;case 70:p[n[++h]] = n[++h] + p[n[++h]];break;case 71:p[n[++h]] = p[n[++h]] << p[n[++h]],p[n[++h]] = p[n[++h]] | p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 72:p[n[++h]] = p[n[++h]].call(p[n[++h]], p[n[++h]], p[n[++h]]);break;case 73:p[n[++h]] = p[n[++h]] >> n[++h];break;case 74:p[n[++h]][p[n[++h]]] = p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 75:p[n[++h]] = n[++h],p[n[++h]][n[++h]] = p[n[++h]],h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 76:p[n[++h]] = p[n[++h]].call(d, p[n[++h]]);break;case 77:p[n[++h]] = p[n[++h]];break;case 78:p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 79:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]] >> n[++h],p[n[++h]] = p[n[++h]] & n[++h];break;case 80:p[n[++h]] = "";break;case 81:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]);break;case 82:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]][p[n[++h]]],h += p[n[++h]] ? n[++h] : n[(++h,++h)]}} catch (y) {if (g.length > 0 && (r = []),r.push(h),0 === g.length)throw c ? c(y, p, r) : y;h = g.pop(),r.pop()}}}, a = function(e, t, o, u, c) {return function s() {for (var l, f, p = [o, u, t, this, arguments, s, n, 0], d = void 0, h = e, g = []; ; )try {for (; ; )switch (n[++h]) {case 0:p[n[++h]] = new p[n[++h]](p[n[++h]]);break;case 1:return p[n[++h]];case 2:for (l = [],f = n[++h]; f > 0; f--)l.push(p[n[++h]]);p[n[++h]] = a(h + n[++h], l, o, u, c);try {Object.defineProperty(p[n[h - 1]], "length", {value: n[++h],configurable: !0,writable: !1,enumerable: !1})} catch (m) {}break;case 3:p[n[++h]] = p[n[++h]] < p[n[++h]];break;case 4:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 5:p[n[++h]] = p[n[++h]] >= n[++h];break;case 6:p[n[++h]] = p[n[++h]] >> n[++h],p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 7:p[n[++h]] = p[n[++h]] < n[++h];break;case 8:p[n[++h]] = p[n[++h]].call(d);break;case 9:p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = n[++h];break;case 10:p[n[++h]] = p[n[++h]] | n[++h];break;case 11:p[n[++h]] = p[n[++h]] & n[++h],p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 12:p[n[++h]] = {};break;case 13:p[n[++h]] = p[n[++h]] | p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]],h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 14:p[n[++h]] = d;break;case 15:p[n[++h]] = n[++h],p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = n[++h];break;case 16:p[n[++h]] = !0;break;case 17:p[n[++h]] = p[n[++h]] === p[n[++h]];break;case 18:p[n[++h]] = p[n[++h]] / p[n[++h]];break;case 19:p[n[++h]][p[n[++h]]] = p[n[++h]],p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]);break;case 20:p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]][n[++h]] = p[n[++h]];break;case 21:p[n[++h]] = p[n[++h]] * p[n[++h]];break;case 22:p[n[++h]] = ++p[n[++h]],p[n[++h]] = p[n[++h]];break;case 23:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]][p[n[++h]]],p[n[++h]] = p[n[++h]];break;case 24:p[n[++h]] = p[n[++h]] << n[++h];break;case 25:p[n[++h]] = Y(p[n[++h]]);break;case 26:p[n[++h]] = p[n[++h]] | p[n[++h]];break;case 27:p[n[++h]] = n[++h];break;case 28:p[n[++h]] = p[n[++h]][n[++h]];break;case 29:p[n[++h]] = n[++h],p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]] = n[++h];break;case 30:p[n[++h]] = p[n[++h]].call(d, p[n[++h]], p[n[++h]]);break;case 31:p[n[++h]] = n[++h],p[n[++h]] = n[++h],p[n[++h]] = n[++h];break;case 32:p[n[++h]] = n[++h],p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 33:p[n[++h]] = p[n[++h]] === n[++h];break;case 34:p[n[++h]] = p[n[++h]] + n[++h];break;case 35:p[n[++h]] += String.fromCharCode(n[++h]);break;case 36:p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]);break;case 37:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]][n[++h]];break;case 38:p[n[++h]] = "",p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]);break;case 39:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]] === p[n[++h]],h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 40:p[n[++h]] = p[n[++h]] > p[n[++h]];break;case 41:p[n[++h]] = p[n[++h]] - p[n[++h]];break;case 42:p[n[++h]] = p[n[++h]] << p[n[++h]];break;case 43:p[n[++h]] = p[n[++h]] & p[n[++h]];break;case 44:p[n[++h]] = p[n[++h]] & n[++h];break;case 45:p[n[++h]] = -p[n[++h]];break;case 46:for (l = [],f = n[++h]; f > 0; f--)l.push(p[n[++h]]);p[n[++h]] = i(h + n[++h], l, o, u, c);try {Object.defineProperty(p[n[h - 1]], "length", {value: n[++h],configurable: !0,writable: !1,enumerable: !1})} catch (v) {}break;case 47:h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 48:p[n[++h]][n[++h]] = p[n[++h]];break;case 49:p[n[++h]] = ~p[n[++h]];break;case 50:p[n[++h]] = p[n[++h]].call(p[n[++h]]);break;case 51:p[n[++h]] = p[n[++h]] ^ p[n[++h]];break;case 52:p[n[++h]] = ++p[n[++h]];break;case 53:p[n[++h]] = !1;break;case 54:p[n[++h]] = p[n[++h]] >>> n[++h];break;case 55:p[n[++h]][n[++h]] = p[n[++h]],p[n[++h]] = n[++h],p[n[++h]][n[++h]] = p[n[++h]];break;case 56:p[n[++h]] = Array(n[++h]);break;case 57:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]][n[++h]] = p[n[++h]];break;case 58:p[n[++h]] = p[n[++h]] % p[n[++h]];break;case 59:p[n[++h]] = p[n[++h]][p[n[++h]]],p[n[++h]] = p[n[++h]][n[++h]];break;case 60:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = n[++h];break;case 61:p[n[++h]] = p[n[++h]] - n[++h];break;case 62:p[n[++h]] = p[n[++h]] + p[n[++h]];break;case 63:p[n[++h]] = !p[n[++h]];break;case 64:p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 65:for (p[n[++h]] += String.fromCharCode(n[++h]),l = [],f = n[++h]; f > 0; f--)l.push(p[n[++h]]);p[n[++h]] = i(h + n[++h], l, o, u, c);try {Object.defineProperty(p[n[h - 1]], "length", {value: n[++h],configurable: !0,writable: !1,enumerable: !1})} catch (A) {}p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 66:p[n[++h]] = p[n[++h]] - 0;break;case 67:p[n[++h]] = p[n[++h]].call(p[n[++h]], p[n[++h]]);break;case 68:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]],p[n[++h]] = p[n[++h]] - 0;break;case 69:p[n[++h]] = p[n[++h]][p[n[++h]]],p[n[++h]] = p[n[++h]] + p[n[++h]];break;case 70:p[n[++h]] = n[++h] + p[n[++h]];break;case 71:p[n[++h]] = p[n[++h]] << p[n[++h]],p[n[++h]] = p[n[++h]] | p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 72:p[n[++h]] = p[n[++h]].call(p[n[++h]], p[n[++h]], p[n[++h]]);break;case 73:p[n[++h]] = p[n[++h]] >> n[++h];break;case 74:p[n[++h]][p[n[++h]]] = p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]],p[n[++h]][p[n[++h]]] = p[n[++h]];break;case 75:p[n[++h]] = n[++h],p[n[++h]][n[++h]] = p[n[++h]],h += p[n[++h]] ? n[++h] : n[(++h,++h)];break;case 76:p[n[++h]] = p[n[++h]].call(d, p[n[++h]]);break;case 77:p[n[++h]] = p[n[++h]];break;case 78:p[n[++h]] = p[n[++h]][p[n[++h]]];break;case 79:p[n[++h]] = p[n[++h]][n[++h]],p[n[++h]] = p[n[++h]] >> n[++h],p[n[++h]] = p[n[++h]] & n[++h];break;case 80:p[n[++h]] = "";break;case 81:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] += String.fromCharCode(n[++h]);break;case 82:p[n[++h]] += String.fromCharCode(n[++h]),p[n[++h]] = p[n[++h]][p[n[++h]]],h += p[n[++h]] ? n[++h] : n[(++h,++h)]}} catch (y) {if (g.length > 0 && (r = []),r.push(h),0 === g.length)throw c ? c(y, p, r) : y;h = g.pop(),r.pop()}}};return t ? i : a
}
}
)()("Xh7YHJgHOBoIAEwUFMgBFMoBogEUzAEU0gEU3AFGFMoBnAEUABQyGBSgARQ2IqIBogEUzAEU6gEU3AFGFMYBYAxkInYU6AEU0gEU3gFOFNwBHhgUHoJOfTjeASYAHjIAiAImABYgOIQCJgAepgECsgEmAHoEOIICJgAeFAb0ASYA1AEIOIoBJgAejAIK4gEmANgBDDiUASYAHrQBDoYCJgDgARA4gAImAB50EhgmACQUOLgBJgAeLhbwASYAEBg4mAEmAB7IARrkASYAVBx4WiYA/AEelAFa/AEy5AFUMpgByAEylAHwARAyuAEuMhgkMpQBgAJ0MoYC4AEylAG0ATKUAeIB2AEyigGMAjL0AdQBMpQBggIUMrIBejKEAqYBMoABiAIWMoAB3gEyMkwyMsQBMtgBogEy3gEyxgEy1gFGMuYBON4BJgCAAQYy3gFejAL2E/wBmgEQIpwBJCAQAiRMKirmASroAaIBKsIBKuQBKugBnAHuAQYqmgG4A+4BBo4EJroCXo4EsEqQO17EAa45skU2+gIGKvQCevoCnAGMAmD0ApoBIowCKowCevoCRPQCjAICnAGMAmD0ApoBhAKMAiqMAnr6AkT0AowCBJwBjAJg9AKaAaYBjAKSAYwCIgSaAfQBjAJYjAIiBjD0AowCCJIBjAKEAgg0TPQCjAKaAbwCTFhMhAIeMIwCTASSAUymAQw09AKMAkyaAdIB9AJY9AKmAX6aAdAC9AKKAfQC6AH0AUygAfQCigH0AugBvAKMAkz0AooB9ALoAdIBTIwC9AKcAfQC6AHQAjaMApoBfL4BTPQCYAzWBowCCKABvgFe+gLYWXRwJAA2TF6aAWAkNqACAJoB6gKgAg7gAeoCKGAMkgdMduABjErsXxASGhwWNhgCYAyyBxg2FpoBbnyEATZuLG5ufG4OwAF8oAGWAW7mRwzkB27AAeAWMjZMHEzUAdQB0AHUAYQBogHUAfIB1AHoAdQBygFG1AHmAZwBLgbUATDUAS4GTC4uxAEu8gGiAS7oAS7KAS7mAZwBEgYubOwBEjo0EtQB7AGAATJMEjYSHpwBTAYuMC5MBoABMhIuTC4u0AEuwgEILuYBLtABEgYuZCoSBhwSAhKaAdABjgKaAY4B0AFejgGaCOxROBIIAEwaGtgBGt4BogEaxgEawgEa6AGiARrSARreARrcAZwBGgAaTBAQ0AEQ3gEIEOYBEOgBHBoQTBAQ0gEQ3AGiARDIARDKARDwAQgQngEQzAEaHBCGARAaHBI2GgJaHBpQGhAcAhpMEhLuARLSAaIBEtwBEsgBEt4BOE4CEqQBEu4BEgASTsoUkgF6btIBBpwBFqYBbnpu0gEQnAEipgFuZm4WInoi0gEcnAEWpgEiZiJuFnoW0gEgnAFupgEWZhYibpoBEBYwFhACOG4CBmwiED4aRBYipgHSAURu9lNGDkywA4DgBl5M2l72EF6OAv4QgwNEGBwCnAEeFhg2JAJgDMgMJGoeNvQBAJoBJvQBTPQB9AHYAfQBygGiAfQB3AH0Ac4B9AHoAaQB9AHQAdgCiAT0AdgCvi+2BDb6AiScAb4BYPoCmgEivgE2vgEmnAH6AmC+AZoBhAL6ApIB+gIiBJoB9AH6Alj6AiIGML4B+gIIkgH6AoQCCDSMAr4B+gKaAbwCjAJYjAKEAh4w+gKMAgSaAdIB+gKKAfoC6AH0AYwCoAH6AooB+gLoAbwCvgGMAvoCigH6AugB0gGMAr4B+gKaAaABjAJqjAKaAWCMAkz6AvoC5AH6AsoBogH6AuAB+gLYAfoCwgEI+gLGAfoCygG+AaAB+gJM+gL6ArYB+gK4AaIB+gJe+gJW+gK6AUj0AvQCzgFMTEykAUzKAaIBTM4BTIoBTPABRkzgAZwBTABMPExM+gL0AqAB9AKQAfoCvgGgAUz0ApoBlAH6Akz6AvoC9AH6AvQBRvoCxgF89AL6AhB8+gL0ApQBfPQC+gLEApoBXPQCam6aAegBjAKaAaABjAKaAZQBjAKaAcQCjAKaARCMAkyMAowC6AGMAt4BogGMApgBjALeAYwC7gGiAYwCygGMAuQBjAKGAaIBjALCAYwC5gGMAsoBnAH0AlyMAmSMAvQCXAKMApoBbhBWIh6GAmJEHlYWRFw0RCIWOBYCFHwiRBZ8bm4imgEQbpYBbgAMshFuFvQJEnj0AQIG2AIAXvQB+ir0Akz0AvQCkAH0AsoBRvQCwgEgvgGiAfQCyAH0AtgB9ALKATZMogFG9ALmAUb0AuYBSP4B/gHSAUz6AvoCpAH6AsoBogH6As4B+gKKAfoC8AFG+gLgAZwB+gIA+gI8+gL6AvQC/gFM/gH+AegB/gHKAQj+AeYB/gHoAfQC+gL+AWAM9hJMTExM3AFMwgGiAUzsAUzSAUzOAYIBTMIBTOgBTN4BRkzkAZwBTABMTP4B/gHqAf4B5gGiAf4BygH+AeQB/gGCAaIB/gHOAf4BygH+AdwBRv4B6AGcAYwCTP4BhgGOAfQC+gKMAl6+AcZHxgFwTCg2+gKqAm5MAPoC+gLkAUwC+gI2+gKsAm5MBPoC+gLmAkwG+gI2+gJ0bkwI+gL6AkpMCvoCNvoC1AJuTAz6AvoC/gNMDvoCNvoCygFuTBD6AvoCLEwS+gI2+gLWAm5MFPoC+gK4AkwW+gI2+gKeAm5MGPoC+gISTBr6Ajb6AvQCbkwc+gL6AkRMHvoCNvoCvgFuTCD6AvoCmANMIvoCNvoCsgNuTCT6AvoCJkwm+gKaAa4BTHAkAJoBYCQ2oAIAmgHqAqACDuAB6gIoXuABqDuIUUwQEOYBEMoBCBDYARDMARAAEDIUEEwQEOoBENwBogEQyAEQygEQzAGiARDSARDcARDKAUYQyAEiFhQQfhYWXhakPOw7TBQUzgEU2AGiARTeARTEARTCAUYU2AGcARQAFAIUDCq4AwTuAVwqiAGCAvQCAN4DuAPGA94DaN4D3gM49AECEpoBuAPeAxbeA8YDBsYDggLeA44B3gOwA8YD7gHuAd4DXCruAV70AaRSmgFMMjLQATJgON4BAgKAAQYy3gFM3gHeAdAB3gFiODICBIABBt4BMkwyMtABMmQ43gECBoABBjLeAUzeAd4B0AHeAWZAMuzRkoMCBt4BMkwyMtABMmg43gECCIABBjLeAUzeAd4BxAHeAdgBogHeAd4B3gHGAd4B1gFMMjLmATLoAaIBMsIBMuQBMugBTIwCjALEAYwC8gGiAYwC6AGMAsoBjALmAUwWFtABFoQBogEW8gEW6AEWygFGFuYBNogCAJQBBhaIAgaMAogCBjKIAoABBt4BiAKgAYgCNt4BAqIBiALMAYgC0gGIAtwBogGIAsIBiALYAYgC0gGiAYgC9AGIAsoBiALIAUwyMtABMsIBogEy5gEy0AEyygFGMsgBaowCgAEGMowCgAEGiAKMAkyMAowCzAGMAtIBogGMAuQBjALmAYwC6AFgDJ4b3gEg3gGAAQaMAt4BHN4BGt4BmgHCAVyaAVyGAjhEAhAwFh48bCIeBDRuFiKaAYYCbpoBHmiaAWgQXkSrFABMFBTuARTSAaIBFNwBFMgBFN4BRhTuAZwBFAAUMhYUTBQU6gEU3AGiARTIARTKARTMAaIBFNIBFNwBFMoBRhTIASIQFhR+EBBeEIQj1QZMGBjIARjKAaIBGMwBGNIBGNwBRhjKAZwBGAAYmAESGBocFgIWCkywA4CAB15M+lC2JUz0AvQC2AH0At4BogH0AsYB9ALCAfQC6AGiAfQC0gH0At4B9ALcAZwB9AIA9AIyvgH0Akz0AvQC3gH0AsQBogH0AtQB9ALKAfQCxgFG9ALoASKOAr4B9AKaAdABjgKaAY4B0AFejgHFDIw9ShwIABQEACAEAjgWIAA4JBQAXiSAUo8SMG5oCmxEaDY0Im5EfEQiwgGKASKmAXxuRCKaARBuDm58KF5unQ6kFzKCAogETPQB9AHmAfQB6AGiAfQB5AH0AdIB9AHcAUb0Ac4BImyCAvQBfmxsmgEabJoBogIaXqICphesM2BEABJMTk5gTmKiAU5kTmZOaKIBTmpObE5uogFOcE5yTsIBogFOxAFOxgFOyAFGTsoBRk7MAUw8POYBPOABogE82AE80gE86AGcASJOPKABPIYBGCJOPGAyABhwGAg4PAIOWiI8bhgAIiKAgIAIGAIiNiKAgARuGAQiIoACGAYiYCgAGHAYCDYiMG4YACIiIBgCIjYiEG4YBCIiABgGImA2ABhwGABgNAAYOBgwAEwiIuABIuQBogEi3gEi6AEi3gGiASLoASLyASLgAUYiygGcATwYIkwYGOoBGOABogEYyAEYwgEY6AGCARjKAQRENk6oGgI8GE44TjAAnAEYTiJMTk7MAU7SAaIBTtwBTsIBTtgBogFO0gFO9AFOygFcAig8+kcAgAEYTjw4PDAAnAFOPCJMPDzQATzCAUY85gGCATzQAQAY3CQATjwYOBgwAJwBPBgiTBgY0AEYygGCARjwAQIyTu4DADwYTjhOMACcATxOIkxOTugBTt4BogFOpgFO6AFO5AGiAU7SAU7cAU7OATgUMACcAUgUIpwBFEgYgAE8ThRcBFZCFK4uApoBEBQ4FEIATE5OvgFOzgGiAU7KAU7oAU6mAaIBTsoBTsYBTuoBogFO5AFO0gFO6AGiAU7yAU6mAU7SAUZOzgFGTtwBgAEUThAcTgJOTIICggLQAYIChAGiAYIC8gGCAugBggLKAUaCAuYBnAHuAQaCAkxsbMQBbPIBogFs6AFsygFs5gE29AF2dt4DBmzGAwISJCreA8YDMN4DKgBgDOQm9AF87gHuAd4DgAEGggLuAQTuAQZswgECEnSCAu4BxgOAAQZsggICBhJsbMQBggJMogFs2AFs3gFsxgFGbNYBYAzEJ4ICDIICuAME7gFcggKAAQZs7gGCAe4B7gHmAe4B6AGiAe4BwgHuAeQB7gHoAYABBu4BuAMG+AEmugJe+AGqQNIYONIBBABMOjrMATrSAaIBOtwBOsIBOtgBogE60gE69AE6ygGcAe4BBjpkyAHuAQZM7gHuAdAB7gFgnAE6Bu4BmgE8Okw6OtABOmKcAe4BBjqaAegB7gFM7gHuAdAB7gFknAE6Bu4BmgGEATpMOjrQATpmnAHuAQY6mgF87gFM7gHuAdAB7gFonAE6Bu4BmgEWOp4BOtIBAO4BPDhE7gEenAHuATpEngFE0gEAOjwwugE6HooBOkS6AboB7gE6ngE60gEA7gE8KETuAR6KAe4BOkREugHuAZ4B7gHSAQC6ATwgOroBHooBugHuATo6RLoBngG6AdIBAEQ8GO4BRB6KAUS6Ae4B7gE6RJ4BRNIBADo8ELoBOh6KATpEugG6Ae4BOp4BOtIBAO4BPAhE7gEeigHuATpERLoB7gE47gHSAQAWugE8HjruAboBfLoBRDqeATrSAQBE6AE47gFEHooBRDruAe4BugFEngFE0gEAugHoATA6ugEeigG6AUQ6Ou4BugGeAboB0gEA7gHoAShE7gEeigHuAboBREQ67gGeAe4B0gEAOugBILoBOh6KATruAboBugFEOp4BOtIBAEToARjuAUQeigFEOu4B7gG6AUSeAUTSAQC6AegBEDq6AR6KAboBRDo67gG6AZ4BugHSAQDuAegBCETuAR6KAe4BugFERDruATjuAdIBABY66AEeugHuATp8OkS6AZ4BugHSAQBEhAE47gFEHooBRLoB7gHuATpEngFE0gEAOoQBMLoBOh6KATpEugG6Ae4BOp4BOtIBAO4BhAEoRO4BHooB7gE6RES6Ae4BngHuAdIBALoBhAEgOroBHooBugHuATo6RLoBngG6AdIBAESEARjuAUQeigFEugHuAe4BOkSeAUTSAQA6hAEQugE6HooBOkS6AboB7gE6ngE60gEA7gGEAQhE7gEeigHuATpERLoB7gE47gHSAQAWugGEAR467gG6AXy6AUQ6ngE60gEARHw47gFEHooBRDruAe4BugFEngFE0gEAugF8MDq6AR6KAboBRDo67gG6AZ4BugHSAQDuAXwoRO4BHooB7gG6AUREOu4BngHuAdIBADp8ILoBOh6KATruAboBugFEOp4BOtIBAER8GO4BRB6KAUQ67gHuAboBRJ4BRNIBALoBfBA6ugEeigG6AUQ6Ou4BugGeAboB0gEA7gF8CETuAR6KAe4BugFERDruATjuAdIBABY6fB66Ae4BOnw6RLoBngG6AdIBAEQWOO4BRB6KAUS6Ae4B7gE6RJ4BRNIBADoWMLoBOh6KATpEugG6Ae4BOp4BOtIBAO4BFihE7gEeigHuATpERLoB7gGeAe4B0gEAugEWIDq6AR6KAboB7gE6OkS6AZ4BugHSAQBEFhjuAUQeigFEugHuAe4BOkSeAUTSAQA6FhC6AToeigE6RLoBugHuATqeATrSAQDuARYIRO4BHooB7gE6RES6Ae4BOO4B0gEAFroBFh467gG6AXy6AUQ6AroBTIwCjALEAYwC2AGiAYwC3gGMAsYBjALWAUaMAuYBcN4BIjYyACjeAQAy3gECMt4BBDIo3gEGMt4BCDLeAQoyKN4BDDLeAQ4y3gEQMijeARIy3gEUMt4BFjIo3gEYMt4BGjLeARwyYN4BHjJg3gEgMoABBowC3gFeMv4Brx1MFBTOARTYAaIBFN4BFMQBFMIBRhTYAZwBFAAUMhAUNhR+TBYW6gEW3AGiARbIARbKARbMAUYW0gFgDJQ2FKIBFtwBFsoBFsgBIhQQFkoUFF4Utx+zGjYWDmAMsDYWggEWfFBeFvwywjFKIggAGAQAHAQCOCAcADgSGABeEukyuglMbGzGAWzeAaIBbNwBbOYBbOgBogFs5AFs6gFsxgGiAWzoAWzeAWzkAXb0AYgEbGzcAgBMggKCAoIBggLkAaIBggLkAYICwgGCAvIBogGCAoQBggLqAYICzAGiAYICzAGCAsoBggLkAZwB7gFsggIiogL0Ae4BXqICbqsrTPQC9ALcAfQCwgGiAfQC7AH0AtIB9ALOAaIB9ALCAfQC6AH0At4BRvQC5AGcAfQCAPQCMr4B9AJM9AL0At4B9ALEAaIB9ALUAfQCygH0AsYBTvQC6AGOAr4B9AKOAr0bvy9M7gHuAaoB7gHSAaIB7gHcAe4B6AHuAXCiAe4BggHuAeQB7gHkAQjuAcIB7gHyAe4BAO4BOPQBAhYAggLuAYgEmgGIBIICXvQB6SxEDPQBuAME7gFc9AGSASqwAwwU3gMqgAOIASr0AgDGA7gDggLGAyzGA8YDuAPGAxbGA4ICBoICKsYDjgHGA94DggLuAe4BxgNc9AHuAZIB7gG4AwQ49AECApwBxgNc7gFYggKwA34U3gOCAoACiAGCAvQCACq4A2wqLCoquAMqFipsBmyCAiqOASreA2zGA8YDKlzuAcYDXvQBji+eAUxsbMQBbNgBogFs3gFsxgFs1gE27gEgnAGCAlzuAYABBmyCAkyCAoIC5gGCAugBogGCAsIBggLkAYIC6AF6bLgDgAGAAQaCAmxMbGzQAWzCAQhs5gFs0AGCAgZsZESCAgZMggKCAtABggLCAaIBggLmAYIC0AGCAsoBRoICyAEgbIABBoICbAb4ASa6Al74AeQrjASaAboC2AJM9AH0AcQB9AHYAaIB9AHeAfQBxgH0AdYBLvQB5gGCAgb0AVyCAgb4ASa6Al74AaQrzANKiAQIANwCBAD0AgQCTPQB9AHMAfQB0gGiAfQB3AH0AcIB9AHYAaIB9AHSAfQB9AH0AcoBpAH0AcgBggIG9AGCAga/HhyCAgKCAgQAEs89AlwAEJgDAJgBFBIQHBACEBL0AvQC5gGMApwBOL4BAgaiAfQC3gH0AtoB9ALKAWAMoD6MAhyMApwB9AJcAPQC+TQChgHEAYwCnAH0Al6+AbwLugI2bgCaAXxuDsABfKABXsABmSDsEJoBRBBmFh6GAmYiFlw2FjhgDJo/FnoWItT46dkGfEREFpoBEESIAUQCFF5EgSSMApoBTOoChAGQAUwsTEzqAkwO4AHqAihe4AHWEbYnXo4EiAjqJUwQEO4BENIBogEQ3AEQyAEQ3gFGEO4BnAEQABACEDb0Al6aAcQB0AFgDJhA9AJuxAHaH9M7RBAiApwBJCAQNhICYAy+QBKCASRM7gHuAcQB7gHyAaIB7gHoAe4BygHuAeYBdmwG7gHuAQIQUIICbO4BXoICjRviBnAwADYiMnBWAHBCAHBEAHAyAHAoAHA2AHA0AFwCNDy6KAJgMAA8XAIwPMgYAmBWADxgDKBCIlwAIsMMABA8ImBCADxMPDzuATzSAaIBPNwBPMgBPN4BRjzuAZwBPAA8RiI8TDw83gE8xAGiATzUATzKATzGAU486AFOIjxO9zfyJFiCArAD/g8wxgOCAhRMggKCAsYBggLQAaIBggLCAYIC5AGCAoYBogGCAt4BggLIAYICygFGggKCAS6CAugB9AGIBIICggImLGyCAoICbJoBJoIChgGCAvQBiARsWGyCAv4PNIICxgNsjAFsgIAIggKaAbADbAxsuAMEggJcbJIBxgOwAyQU9AHGA+ADiAHGA/QCAN4DuAPuAd4DLN4D3gO4A94DFt4D7gEG7gHGA94DjgHeA/QB7gGCAoIC3gNcbIICDIICuAMEbFyCApIB3gOwAxhY7gHeA34U3gPuAYACiAHuAfQCAPQBuAPGA/QBLPQB9AG4A/QBFvQBxgMGxgPuAfQBjgH0Ad4DxgNsbPQBXIICbAxsuAMEggJcbJIB9AGwAwxYxgP0AX4U9AHGA4ACNsYDNIgB3gP0AgDuAbgDKu4BLO4B7gG4A+4BFu4BKgYq3gPuAVTuAfQBKmAM+EXGAy6CAoIC7gGAAVxsggIMggK4AwRsXIICWO4BsAN+FMYD7gGAAjjuAQIOiAEq9AIA9AG4A94D9AEs9AH0AbgD9AEW9AHeAwbeAyr0AY4B9AHGA94DbGz0AVyCAmxe7gGeIzIMggK4AwTuAVyCApwB9AGIBCaIAWz0AgDeA7gDKt4DLN4D3gO4A94DWN4DKgY4KgISnAHGA2zeA44B3gP0AcYD7gHuAd4DXIIC7gFeKsAhKAIGTCoqxgEq0AGiASrCASrkASqGAaIBKt4BKsgBKsoBCCqCASroAe4BiAQqhgEq7gGIBCaaAbADKg4qsAOAAl4qmzHcIkxubtABbmCcARYGbpoBaBZMFhbQARZinAFuBhaaAR5uTG5u0AFuZJwBFgZumgGGAhZMFhbQARZmnAFuBhaaAVxuTG5u0AFuaJwBFgZumgHCARZMFhbEARbYAaIBFt4BFsYBFtYBLhbmAW4GFqYBbjZuIJoB0gFuDpYC0gGgAV6WAus+rwtghgEAxAFqvgGaAZwBvgFwvgEQNvQCLm6+AQD0AvQCHL4BAvQCNvQCDG6+AQT0AvQCSL4BBvQCNvQCIG6+AQj0AowCUL4BCowCNowCDm6+AQyMAowCJr4BDowCTPoC+gLaAfoCwgFG+gLgAZwB/gG+AfoCXASGAVZM1RQChgGWAv4BvgFMTExM1AFM3gEITNIBTNwB/gGWAkygAb4BhgGyAv4BlgK+AZoBELICcLICEG6yAgD0AvQCArICAvQCNvQCQG6yAgT0AvQCGLICBvQCbrICCIwCjAI2sgIKjAI2jAIQbrICDIwCjAIKsgIOjAKcAYwCsgL6AlwEhgFW+gKrLgKGAfQCjAKyAvoCnAH6AvQCTIYBTPoC9AK+AZoBxAJMcEwoNvoCsgFuTAD6AvoCTkwC+gI2+gLmAm5MBPoC9AKsAkwG9AI29AK0A25MCPQC9AKkAUwK9AI29AJ0bkwM9AL0AvgDTA70Ajb0AuICbkwQ9AL0AmhMEvQCNvQC9AJuTBT0AvQC9gFMFvQCNvQC8AFuTBj0AvQCgAFMGvQCNvQC5ANuTBz0AvQCigJMHvQCNvQCngJuTCD0AvQCwgJMIvQCNvQC8gFgTCT0AmBMJvoCmgGuAUw4TIYBAF5MhUiPOw6OBLgDgAFejgSfB8IWTBQUyAEUygGiARTMARTSARTcAUYUygGcARQAFEwYGMIBGNoBpAEYyAEeFBge5TKlSExERNABRGCKAW4GRCJuaDBuIgCAAQZEbkxubtABbmKKAUQGbiJEHjBEIgCAAQZuRExERNABRGSKAW4GRCJuhgIwbiIAgAEGRG5Mbm7QAW5migFEBm4iRFwwRCIAgAEGbkRMRETQAURoigFuBkQibsIBMG4iAIABBkRuHG4CbnhMVgD6AgQq9ALqAvoCnAG+AUz0ApwB9AKqAb4BNr4BICpM9AK+ATi+AVYAKvQC6gL6AkSMAvQCApwB9AK+AYwCigGMAqoB9AL0AkyMApoBSvQCnAH0Aq4B6gKaAZgC9AJM9AL0AuAB9ALqAQj0AuYB9ALQAYwCYPQCZvQCSpgChgE4jAJg9AJe+gKZEzw2FgIcEGAM3FIWTBCWAe4B3U4M8FLuARqMEJYBXqICjRqnRhwSAhJMFhbmARbKAQgW2AEWzAEWABYCFjiwAQgAcFYAcIYBADiAAgQAOMACBAKaAbwBChhMEv4B/gFg9AIAJkz+AfQC9AL0AmI2/gECJkz0Av4B/gH+AWQ29AIEJkz+AfQC9AL0AmZA/gEGTPQC/gGgAf4BNvQCogFG/gFoNr4BCCZM/gG+Ab4BvgFqNv4BCiZMvgH+Af4B/gFsNr4BDCZM/gG+Ab4BvgFuNv4BDiZMvgH+Af4B/gFwNr4BECZM/gG+Ab4BvgFyNv4BEiZMvgH+Af4B/gGCATa+ARQmTP4BvgG+Ab4BhAE2/gEWJky+Af4B/gH+AYYBNr4BGCZM/gG+Ab4BvgGIATb+ARomTL4B/gH+Af4BigE2vgEcJkz+Ab4BvgG+AYwBQP4BHky+Af4BmgGqAUxMTEyCAUyEAaIBTIYBTIgBTIoBogFMjAFMjgFMkAGiAUySAUyUAUyWAaIBTJgBTJoBTJwBogFMngFMoAFMogGiAUykAUymAUyoAaIBTKoBTKwBTK4BogFMsAFMsgFMtAGiAUzCAUzEAUzGAaIBTMgBTMoBTMwBogFMzgFM0AFM0gGiAUzUAUzWAUzYAaIBTNoBTNwBTN4BogFM4AFM4gFM5AGiAUzmAUzoAUzqAaIBTOwBTO4BTPABogFM8gFM9AFMYKIBTGJMZExmogFMaExqTGyiAUxuTHBMcqIBTFZMXkx6mgHoAUw4TIACAJgB/gFMsAFMTEzoAUzeAaIBTKoBTOABTOABogFMygFM5AFMhgGiAUzCAUzmAUzKAZwBvgH+AUxkTL4B/gFgVgBMTExM7gFM0gGiAUzcAUzIAUzeAUZM7gGcAUwATDK+AUxgDPRZ9AJM9AL0At4B9ALEAST0AtQB9ALKAfQCxgFO9ALoAY4CvgH0Ao4CjyLrTUoeCAAaBAAYGgAgEgAWGBJMEhLqARLgAaIBEsgBEsIBEugBRhLKAZwBGBYShgESGBYeTBgY0AEYygE2FgJGGPABYAyWWxacARYSGGQYFhJeGJoBtAKOAXC+AQxMjAKMAuIBjALiAaIBjAJcjALGAYwC3gFGjALaATb0AkxgvgEAjAJMjAKMAtQBjALeAaIBjALeAYwC8AGMAlyiAYwCxgGMAt4BjALaAWC+AQKMAkyMAowC6AGMAsoBogGMAtwBjALGAYwCygGiAYwC3AGMAugBjALaAaIBjALqAYwC5gGMAtIBogGMAsYBjAJcjALGAXKMAt4BjALaAb4BBIwCTIwCjALuAYwCwgGiAYwC7AGMAsoBjALGAUaMAt4BYAzwXfQCogGMAtoBjALaAYwC0gGiAYwC6AGMAugBjALKAaIBjALKAYwCXIwCxgFyjALeAYwC2gG+AQaMAkyMAowC1gGMAuoBogGMAs4BjALeAYwC6gGiAYwCXIwCxgGMAt4BRowC2gFgvgEIjAIIjAKMAtYBjALqAaIBjALuAYwC3gGMAlxyjALGAYwC3AG+AQqMApoBnAG+ATi+AcACAEyMAowCvgGMAr4BogGMAuIBjALaAYwCzAGiAYwCygGMAr4BjALmAaIBjALSAYwCzgGMAtwBogGMAr4BjALGAYwC0AGiAYwCygGMAsYBjALWAZwB9AK+AYwCQsQB9AICXsQBkRWHH5oBFhBWbh6GAlZEHlw0Im5EVkSGAlw2bl5gDOxfbjRuIkQ4RAIYUiJuRHwWFiKaARAWXETLRDJ+xAG0Al7EAYUigRaaAW7SASwWbm4WmgHSAW42bl5gDK5gbg6WAtIBoAEmlgKnVeshmgH6AnqEAUj6Aiz6AvoCevoCDhZ6DF4Wh1zRU0z0AfQB0AH0AcIBogH0AeYB9AHQAfQBygFG9AHIAWqCAoABBvQBggI2ggIATPQB9AHEAfQB2AGiAfQB3gH0AcYB9AHWAZwB7gEG9AGAAVyCAu4BPu4BIPQBAmwEPt4DBioIxgMKPugCDJYDDsQDED7SARL2ARSWBBY+pAIY2AMargIcNsADHpQBXMADggJcrgKCAlzYA4IClAFcpAKCAlyWBIICXPYBggKUAVzSAYICXMQDggJclgOCApQBXOgCggJcxgOCAlwqggKUAVzeA4ICXGyCAlz0AYICgAFc7gGCAl4aBuNeTO4B7gHmAe4B6AGiAe4BwgHuAeQB7gHoAZwBggIG7gGaAbgDggIGzgEmugJezgEGygQOzgG4A4ABXs4BxxyCAkzsAewB0AHsAcIBogHsAeYB7AHQAewBygGkAewByAESBuwBEtgG8gQ+LiASAuwBBD6gAQb6AQiEAQo+Sgz0AQ60ARA+ehJoFBSUATYWFjrQARgM8GQUFBo+TByqAR7UAQCUATKqAdQBMkzUATIU1AGUATLQAdQBMhbUATJo1AEcMnrUATK0AdQBMvQB1AGUATJK1AEyhAHUATL6AdQBlAEyoAHUATLsAdQBMhLUAYABMi7UAV5Mz11sTO4B7gHYAe4BwgGiAe4B5gHuAegB7gGEAaIB7gHyAe4B6AHuAcoBogHuAZIB7gHcAe4ByAFG7gHKAUbuAfABgAEG7gG4A0zuAe4BxAHuAfIBogHuAegB7gHKAe4B5gGcAWwG7gFMggKCAuYBggLoATb0AQpyggLCAYIC5AEM8Gb0AUaCAugBnAH0AQaCAlKCArgD9AF8bGyCAoABBu4BbJYBbLgDgAFebPcr8z9q+gKaAaoB+gJgVgD6ApoBrgH6AqAB+gKaAaAB+gI2+gIAmgF6+gIOFnoMXhbpYrNaTBISzgES2AGiARLeARLEARLCAUYS2AF2EgASTgIGXk6hSO4BXs4BgyG5AjZuXg4WfHhgDJJobpwBFoEJsylMggKCAtABggLCAaIBggLmAYIC0AGCAsoBRoICyAE29AFeYAzQaPQBnAH0AQaCAhD0AfUH8RVMEhLQARLCAQgS5gES0AEuBhJkygEuBkAuADIuLl4uigGdBZoBggImLO4BggKCAu4BmgEmggIGzgEmugJezgH/BbsBmgEWEGZuHoYCZiJuXDhuAhZ8RCJufBYWRJoBEBZebslOygE4TggAOCYEAF5O/2iRNpoB7gEmLCruAe4BKjYqXpoBJu4BBo4EJroCYAy2aiqYAY4ExxvnKjYSAEzsAewBxAHsAdgBogHsAd4B7AHGAewB1gGcAS4G7AGAATISLl4S5gGDB5YB9AFMDIJr9AFKlAOvKA70AbADgCBe9AHVMf9eOIIBBABMLi7MAS7SAaIBLtwBLsIBLtgBogEu0gEu9AEuygGkAS7IARIGLhLZGAZMEhLMARLSAaIBEtwBEsIBEtgBogES0gES9AESygFGEsgBIC6AAQYSLkwuLsQBLtgBogEu3gEuxgEu1gEuLuYBEgYuMhJMEhLYARLCAaIBEuYBEugBEoQBogES8gES6AESygGiARKSARLcARLIAUYSygEuEvABLgYSUC6SAS5QBEwSEsQBEtgBogES3gESxgES1gGcAewBBhKAATIu7AEM7AFQBC4y7AE4hAGCAQAW+gFQBqABhAH6ATQuLqABgAEy7AEuDC5QBOwBMi6AAQYS7AEK7AFQcF7sAc8KqWYM9AG4AwTGA1z0AZIB7gGwAxgUKu4BwAOIAe4B9AIAbLgD3gNsLGxsuANsFmzeAwbeA+4BbI4BbCreA8YDxgNsXPQBxgMMxgO4AwT0AVzGA5IBbLADDFjeA2x+FGzeA4ACiAHeA/QCACq4A+4BKiwqKrgDKhYq7gEG7gHeAyqOASps7gH0AfQBKlzGA/QBDPQBuAMExgNc9AFYKrADfhTuASqAAogBKvQCAGy4A94DbGhsbCCCApoBuANsFmzeAwbeAypsjgFs7gHeA8YDxgNsXPQBxgNeggKpBk6aARgcnAEeFhgCHg==", !1)(3944, [], G, [void 0, 1732584193, 4023233417, 2562383102, 3285377520, !1, !0, 2147483648, 4294967295, 4294967296, 1518500249, 1859775393, 1894007588], void 0)();
var P = G._getSecuritySign;
data = '{"comm":{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":0,"g_tk_new_20200303":5381,"g_tk":5381},"req_1":{"module":"music.musicsearch.HotkeyService","method":"GetHotkeyForQQMusicMobile","param":{"searchid":"28451061698907495","remoteplace":"txt.yqq.top","from":"yqqweb"}},"req_2":{"module":"music.musicHall.MusicHallPlatformSvr","method":"GetFocus","param":{"ForceBig":1}},"req_3":{"module":"newalbum.NewAlbumServer","method":"get_new_album_area","param":{}},"req_4":{"module":"newalbum.NewAlbumServer","method":"get_new_album_info","param":{"area":1,"sin":0,"num":20}},"req_5":{"module":"musicToplist.ToplistInfoServer","method":"GetAll","param":{}},"req_6":{"module":"MvService.MvInfoProServer","method":"GetNewMv","param":{"style":0,"tag":0,"start":0,"size":40}},"req_7":{"module":"music.paycenterapi.LoginStateVerificationApi","method":"GetChargeAccount","param":{"appid":"mlive"}}}'
data = '{"comm":{"cv":4747474,"ct":24,"format":"json","inCharset":"utf-8","outCharset":"utf-8","notice":0,"platform":"yqq.json","needNewCode":1,"uin":0,"g_tk_new_20200303":5381,"g_tk":5381},"req_1":{"module":"music.musicsearch.HotkeyService","method":"GetHotkeyForQQMusicMobile","param":{"searchid":"18510664853635428","remoteplace":"txt.yqq.top","from":"yqqweb"}},"req_2":{"module":"yqq.WhiteListServer","method":"Pass","param":{}},"req_3":{"module":"yqq.WhiteListServer","method":"Pass","param":{}},"req_4":{"module":"music.paycenterapi.LoginStateVerificationApi","method":"GetChargeAccount","param":{"appid":"mlive"}}}'
data = '{"comm": {"ct": 24, "cv": 4747474, "format": "json", "g_tk": 5381, "g_tk_new_20200303": 5381, "inCharset": "utf-8", "needNewCode": 1, "notice": 0, "outCharset": "utf-8", "platform": "yqq.json", "uin": 0}, "req_1": {"method": "GetHotkeyForQQMusicMobile", "module": "music.musicsearch.HotkeyService", "param": {"from": "yqqweb", "remoteplace": "txt.yqq.top", "searchid": "34905267987877818"}}, "req_2": {"method": "Pass", "module": "yqq.WhiteListServer", "param": {}}, "req_3": {"method": "Pass", "module": "yqq.WhiteListServer", "param": {}}, "req_4": {"method": "GetChargeAccount", "module": "music.paycenterapi.LoginStateVerificationApi", "param": {"appid": "mlive"}}}'console.log("sign", P(data))
function getSign2(str){return  P(str)
}var j = "undefined" !== typeof e ? e : "undefined" !== typeof window ? window : "undefined" !== typeof self ? self : void 0;(function() {var e = [];function t(e, t, n) {for (var r = [], i = 0; i++ < t; )r.push(e += n);return r}var n = t(0, 43, 0).concat([62, 0, 62, 0, 63]).concat(t(51, 10, 1)).concat(t(0, 8, 0)).concat(t(0, 25, 1)).concat([0, 0, 0, 0, 63, 0]).concat(t(25, 26, 1));function r(e) {for (var t, r, i = String(e).replace(/[=]+$/, ""), o = i.length, a = 0, u = 0, c = []; u < o; u++)~(r = n[i.charCodeAt(u)]) && (t = a % 4 ? 64 * t + r : r,a++ % 4) && c.push(255 & t >> (-2 * a & 6));return c}function i(e) {return e >> 1 ^ -(1 & e)}var o = function(e) {for (var t = [], n = "undefined" != typeof Int8Array ? new Int8Array(r(e)) : r(e), o = n.length, a = 0; o > a; ) {var u = n[a++], c = 127 & u;u >= 0 ? t.push(i(c)) : (c |= (127 & (u = n[a++])) << 7,u >= 0 || (c |= (127 & (u = n[a++])) << 14,u >= 0 || (c |= (127 & (u = n[a++])) << 21,u >= 0 || (c |= (u = n[a++]) << 28))),t.push(i(c)))}return t};return function(t, n) {var r = o(t), i = function(t, n, o, u, c) {return function s() {for (var l, f, p = [o, u, n, this, arguments, s, r, 0], d = void 0, h = t, g = []; ; )try {for (; ; )switch (r[++h]) {case 0:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]] + p[r[++h]];break;case 1:p[r[++h]] = !1;break;case 2:p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]], p[r[++h]]);break;case 3:p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]]);break;case 4:p[r[++h]] = p[r[++h]] & r[++h];break;case 5:p[r[++h]] = p[r[++h]] | p[r[++h]];break;case 6:for (l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = i(h + r[++h], l, o, u, c);try {Object.defineProperty(p[r[h - 1]], "length", {value: r[++h],configurable: !0,writable: !1,enumerable: !1})} catch (e) {}break;case 7:p[r[++h]] = p[r[++h]][p[r[++h]]];break;case 8:p[r[++h]] = p[r[++h]] - 0;break;case 9:p[r[++h]] = p[r[++h]] ^ p[r[++h]];break;case 10:p[r[++h]][r[++h]] = p[r[++h]],p[r[++h]] = r[++h],p[r[++h]][r[++h]] = p[r[++h]];break;case 11:p[r[++h]] = new p[r[++h]];break;case 12:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] += String.fromCharCode(r[++h]);break;case 13:for (l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = a(h + r[++h], l, o, u, c);try {Object.defineProperty(p[r[h - 1]], "length", {value: r[++h],configurable: !0,writable: !1,enumerable: !1})} catch (e) {}break;case 14:p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = Array(r[++h]),p[r[++h]][r[++h]] = p[r[++h]];break;case 15:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]];break;case 16:p[r[++h]] = p[r[++h]].call(p[r[++h]]);break;case 17:return p[r[++h]];case 18:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]][r[++h]] = p[r[++h]];break;case 19:p[r[++h]] = p[r[++h]] + p[r[++h]],p[r[++h]] = p[r[++h]];break;case 20:p[r[++h]][r[++h]] = p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 21:p[r[++h]] = p[r[++h]] + r[++h];break;case 22:p[r[++h]] = new p[r[++h]](p[r[++h]]);break;case 23:h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 24:p[r[++h]][p[r[++h]]] = p[r[++h]];break;case 25:p[r[++h]] = "",p[r[++h]] += String.fromCharCode(r[++h]);break;case 26:p[r[++h]] = ++p[r[++h]];break;case 27:p[r[++h]] += String.fromCharCode(r[++h]);break;case 28:p[r[++h]] = "";break;case 29:for (l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = p[r[++h]].apply(p[r[++h]], l);break;case 30:p[r[++h]] = p[r[++h]].call(d);break;case 31:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]] >> r[++h],p[r[++h]] = p[r[++h]] & r[++h];break;case 32:p[r[++h]] = typeof p[r[++h]],p[r[++h]] = "";break;case 33:p[r[++h]] = p[r[++h]];break;case 34:p[r[++h]] = null;break;case 35:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = "";break;case 36:p[r[++h]] = d;break;case 37:for (p[r[++h]] = p[r[++h]][p[r[++h]]],l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = i(h + r[++h], l, o, u, c);try {Object.defineProperty(p[r[h - 1]], "length", {value: r[++h],configurable: !0,writable: !1,enumerable: !1})} catch (e) {}p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]]);break;case 38:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]][r[++h]];break;case 39:p[r[++h]] = r[++h],p[r[++h]][r[++h]] = p[r[++h]];break;case 40:p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]], p[r[++h]], p[r[++h]]);break;case 41:p[r[++h]] = p[r[++h]].call(d, p[r[++h]], p[r[++h]]);break;case 42:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = typeof p[r[++h]],p[r[++h]] = "";break;case 43:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = r[++h],p[r[++h]] += String.fromCharCode(r[++h]);break;case 44:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = p[r[++h]][p[r[++h]]];break;case 45:p[r[++h]] = p[r[++h]] << r[++h];break;case 46:return p[r[++h]] = d,p[r[++h]];case 47:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]] < p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 48:p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = p[r[++h]][r[++h]];break;case 49:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]] + p[r[++h]];break;case 50:p[r[++h]][r[++h]] = p[r[++h]];break;case 51:p[r[++h]] = !0;break;case 52:p[r[++h]] = p[r[++h]] === r[++h];break;case 53:p[r[++h]] = {};break;case 54:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = p[r[++h]] === p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 55:p[r[++h]] = p[r[++h]].call(d, p[r[++h]]);break;case 56:p[r[++h]] = r[++h];break;case 57:p[r[++h]][r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = "";break;case 58:p[r[++h]] = Array(r[++h]);break;case 59:p[r[++h]] = p[r[++h]][r[++h]];break;case 60:p[r[++h]] = p[r[++h]] % p[r[++h]];break;case 61:p[r[++h]] = p[r[++h]] < p[r[++h]];break;case 62:p[r[++h]] = -p[r[++h]];break;case 63:p[r[++h]] = p[r[++h]] === p[r[++h]];break;case 64:p[r[++h]] = r[++h],p[r[++h]] = p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 65:p[r[++h]] = p[r[++h]] > p[r[++h]];break;case 66:p[r[++h]] = p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 67:p[r[++h]] = !p[r[++h]];break;case 68:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]] + r[++h],p[r[++h]] = ""}} catch (t) {if (g.length > 0 && (e = []),e.push(h),0 === g.length)throw c ? c(t, p, e) : t;h = g.pop(),e.pop()}}}, a = function(t, n, o, u, c) {return function s() {for (var l, f, p = [o, u, n, this, arguments, s, r, 0], d = void 0, h = t, g = []; ; )try {for (; ; )switch (r[++h]) {case 0:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]] + p[r[++h]];break;case 1:p[r[++h]] = !1;break;case 2:p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]], p[r[++h]]);break;case 3:p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]]);break;case 4:p[r[++h]] = p[r[++h]] & r[++h];break;case 5:p[r[++h]] = p[r[++h]] | p[r[++h]];break;case 6:for (l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = i(h + r[++h], l, o, u, c);try {Object.defineProperty(p[r[h - 1]], "length", {value: r[++h],configurable: !0,writable: !1,enumerable: !1})} catch (e) {}break;case 7:p[r[++h]] = p[r[++h]][p[r[++h]]];break;case 8:p[r[++h]] = p[r[++h]] - 0;break;case 9:p[r[++h]] = p[r[++h]] ^ p[r[++h]];break;case 10:p[r[++h]][r[++h]] = p[r[++h]],p[r[++h]] = r[++h],p[r[++h]][r[++h]] = p[r[++h]];break;case 11:p[r[++h]] = new p[r[++h]];break;case 12:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] += String.fromCharCode(r[++h]);break;case 13:for (l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = a(h + r[++h], l, o, u, c);try {Object.defineProperty(p[r[h - 1]], "length", {value: r[++h],configurable: !0,writable: !1,enumerable: !1})} catch (e) {}break;case 14:p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = Array(r[++h]),p[r[++h]][r[++h]] = p[r[++h]];break;case 15:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]];break;case 16:p[r[++h]] = p[r[++h]].call(p[r[++h]]);break;case 17:return p[r[++h]];case 18:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]][r[++h]] = p[r[++h]];break;case 19:p[r[++h]] = p[r[++h]] + p[r[++h]],p[r[++h]] = p[r[++h]];break;case 20:p[r[++h]][r[++h]] = p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 21:p[r[++h]] = p[r[++h]] + r[++h];break;case 22:p[r[++h]] = new p[r[++h]](p[r[++h]]);break;case 23:h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 24:p[r[++h]][p[r[++h]]] = p[r[++h]];break;case 25:p[r[++h]] = "",p[r[++h]] += String.fromCharCode(r[++h]);break;case 26:p[r[++h]] = ++p[r[++h]];break;case 27:p[r[++h]] += String.fromCharCode(r[++h]);break;case 28:p[r[++h]] = "";break;case 29:for (l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = p[r[++h]].apply(p[r[++h]], l);break;case 30:p[r[++h]] = p[r[++h]].call(d);break;case 31:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]] >> r[++h],p[r[++h]] = p[r[++h]] & r[++h];break;case 32:p[r[++h]] = typeof p[r[++h]],p[r[++h]] = "";break;case 33:p[r[++h]] = p[r[++h]];break;case 34:p[r[++h]] = null;break;case 35:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = "";break;case 36:p[r[++h]] = d;break;case 37:for (p[r[++h]] = p[r[++h]][p[r[++h]]],l = [],f = r[++h]; f > 0; f--)l.push(p[r[++h]]);p[r[++h]] = i(h + r[++h], l, o, u, c);try {Object.defineProperty(p[r[h - 1]], "length", {value: r[++h],configurable: !0,writable: !1,enumerable: !1})} catch (e) {}p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]]);break;case 38:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]][r[++h]];break;case 39:p[r[++h]] = r[++h],p[r[++h]][r[++h]] = p[r[++h]];break;case 40:p[r[++h]] = p[r[++h]].call(p[r[++h]], p[r[++h]], p[r[++h]], p[r[++h]]);break;case 41:p[r[++h]] = p[r[++h]].call(d, p[r[++h]], p[r[++h]]);break;case 42:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = typeof p[r[++h]],p[r[++h]] = "";break;case 43:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = r[++h],p[r[++h]] += String.fromCharCode(r[++h]);break;case 44:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = p[r[++h]][p[r[++h]]];break;case 45:p[r[++h]] = p[r[++h]] << r[++h];break;case 46:return p[r[++h]] = d,p[r[++h]];case 47:p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]] < p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 48:p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = p[r[++h]][r[++h]];break;case 49:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]][p[r[++h]]],p[r[++h]] = p[r[++h]] + p[r[++h]];break;case 50:p[r[++h]][r[++h]] = p[r[++h]];break;case 51:p[r[++h]] = !0;break;case 52:p[r[++h]] = p[r[++h]] === r[++h];break;case 53:p[r[++h]] = {};break;case 54:p[r[++h]] += String.fromCharCode(r[++h]),p[r[++h]] = p[r[++h]] === p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 55:p[r[++h]] = p[r[++h]].call(d, p[r[++h]]);break;case 56:p[r[++h]] = r[++h];break;case 57:p[r[++h]][r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]][r[++h]],p[r[++h]] = "";break;case 58:p[r[++h]] = Array(r[++h]);break;case 59:p[r[++h]] = p[r[++h]][r[++h]];break;case 60:p[r[++h]] = p[r[++h]] % p[r[++h]];break;case 61:p[r[++h]] = p[r[++h]] < p[r[++h]];break;case 62:p[r[++h]] = -p[r[++h]];break;case 63:p[r[++h]] = p[r[++h]] === p[r[++h]];break;case 64:p[r[++h]] = r[++h],p[r[++h]] = p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 65:p[r[++h]] = p[r[++h]] > p[r[++h]];break;case 66:p[r[++h]] = p[r[++h]],h += p[r[++h]] ? r[++h] : r[(++h,++h)];break;case 67:p[r[++h]] = !p[r[++h]];break;case 68:p[r[++h]] = p[r[++h]],p[r[++h]] = p[r[++h]] + r[++h],p[r[++h]] = ""}} catch (t) {if (g.length > 0 && (e = []),e.push(h),0 === g.length)throw c ? c(t, p, e) : t;h = g.pop(),e.pop()}}};return n ? i : a}})()("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", !1)(6151, [], j, [void 0, null, !0, !1], void 0)();
var L = j.__cgiEncrypt, N = j.__cgiDecrypt;async function getRealValue(data) {try {const result = await L(data);console.log('真实值:', result);return result;} catch (error) {console.error('获取值出错:', error);}
}function getRealValueSync(data) {let done = false;let result;let error;// 调用原始异步函数getRealValue(data).then(res => {result = res;done = true;}).catch(err => {error = err;done = true;});// 使用deasync进行同步等待deasync.loopWhile(() => !done);if (error) throw error;return result;
}// getRealValueSync()// getRealValue()
a = getRealValueSync(data)
console.log('a-->', a.length)
// 解码返回的 response arraybuffer 数据
function decryptArrayBuffer(hex) {const bytes = new Uint8Array(hex.length / 2);for (let i = 0; i < hex.length; i += 2) {bytes[i/2] = parseInt(hex.substr(i, 2), 16);}// console.log(N(data))return  N(bytes.buffer);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/diannao/90428.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PPT处理控件Aspose.Slides教程:在 C# 中将 ODP 转换为 PPTX

您是否正在寻找可靠的 PowerPoint SDK 来以编程方式开发ODP到PPTX转换器&#xff1f;本篇博文演示了如何使用 C# 将 ODP 转换为 PPTX。ODP是一种基于 XML 的演示文稿文件&#xff0c;可能包含图像、视频、文本等。但是&#xff0c;将打开的文档演示文稿转换为 PowerPoint 格式可…

[746] 使用最小花费爬楼梯

可以从下标0或者1作为起始位置————dp[0] dp[1] 0。一次性可以选择移动1次或者2次&#xff0c;故当下标>2的时候&#xff0c;到达2有可能是从下标0开始或者下标1开始&#xff0c;cost[0] or cost[1]&#xff1b;到达n&#xff0c;有可能是花费cost[n-1]到达&#xff0c…

树莓派vsftpd文件传输服务器的配置方法

在树莓派上安装和配置 vsftpd&#xff08;Very Secure FTP Daemon&#xff09;服务器的步骤如下&#xff1a; 1. 安装 vsftpd 打开终端&#xff0c;执行以下命令安装 vsftpd&#xff1a; sudo apt update sudo apt install vsftpd安装完成后&#xff0c;vsftpd 会自动启动。可以…

4.服务注册发现:微服务的神经系统

在微服务架构中,服务之间不再是固定连接,而是高度动态、短暂存在的。如何让每个服务准确找到彼此,是分布式系统治理的核心问题之一。服务注册发现机制,正如神经系统之于人体,承担着连接、协调、感知变化的关键角色。 本文将围绕 Netflix 开源的服务注册发现组件 Eureka 展…

基于Docker Compose部署Traccar容器与主机MySQL的完整指南

Traccar Docker镜像内嵌了H2数据库&#xff0c;该数据库容量有限&#xff0c;当达到一定容量时&#xff0c;定位数据无法写入会导致无法定位显示。为此有必要为Traccar 配置外部数据库。根据官网文档和自身经验我选择了MySQL。 参考的官方文档 软件环境为ubuntu server 24.04版…

paddlehub环境搭建和测试

目录1.环境搭建1.1 创建conda环境1.2 安装paddlepaddle和paddlehub1.3 安装依赖2. 移动端模型部署2.1 安装移动端模型2.2 测试3. 服务部署3.1 启动PaddleHub Serving3.2 发送预测请求1.环境搭建 1.1 创建conda环境 conda create --name paddlehub python3.8 conda activate p…

408第三季part2 - 计算机网络 - ip地址II

理解路由聚合就是从第一个不一样的往后全置为0题目这里一般来说会到达2个目的地址&#xff0c;但中间有个路由&#xff0c;所以路由聚合一下就行了聚合出来这个然后下一跳就是跳到下一个路由器d前面一样的不动&#xff0c;不一样的开始全置为0c再次理解题目这个先匹配169.96.40…

【Unity】MiniGame编辑器小游戏(十一)消消乐【Crush】

更新日期:2025年7月9日。 项目源码:获取项目源码 索引 消消乐【Crush】一、游戏最终效果二、玩法简介三、正式开始1.定义游戏窗口类2.规划游戏窗口、视口区域3.方块 Block①.定义方块类②.生成方块所有类型③.生成消消乐棋盘④.绘制收集栏⑤.绘制方块阵列4.查看方块挡住的其他…

RK3588 Android SDK 实战全解析 —— 架构、原理与开发关键点

&#x1f4d6; 推荐阅读&#xff1a;《Yocto项目实战教程:高效定制嵌入式Linux系统》 &#x1f3a5; 更多学习视频请关注 B 站&#xff1a;嵌入式Jerry RK3588 Android SDK 实战全解析 —— 架构、原理与开发关键点 作者&#xff1a;嵌入式 Jerry 一、前言 随着 AIoT、工业智…

从救火到赋能:运维的职责演进与云原生时代的未来图景

引言:刻板印象的瓦解 提起"运维工程师",许多人脑海中可能仍会浮现这样的画面:深夜里守着闪烁的监控屏幕、手忙脚乱地重启服务器、在布满网线的机房里穿梭…这曾是运维工作的真实片段,但绝非全貌,更非未来。 在云计算、DevOps、SRE理念和云原生技术栈的冲击下,…

UDP的socket编程

socket接口int socket(int domain, int type, int protocol);参数说明​​参数说明domain协议族&#xff08;地址族&#xff09;&#xff0c;如 AF_INET&#xff08;IPv4&#xff09;、AF_INET6&#xff08;IPv6&#xff09;type套接字类型&#xff0c;UDP 使用 SOCK_DGRAM&…

基于SD-WAN的管件制造数字化产线系统集成方案

1. 背景与目标随着制造业向智能化、数字化方向转型&#xff0c;传统产线面临着数据割裂、协同效率低下等问题。管件制造作为典型场景&#xff0c;涉及多环节的设计、制造与质检流程&#xff0c;亟需一套高效的系统集成方案&#xff0c;保障全流程数据贯通与实时协同。本方案基于…

学习open62541 --- [79] 在docker中运行open62541工程

docker是非常流行的容器技术&#xff0c;解决了部署环境不一致的问题&#xff0c;open62541的工程也可以在docker容器中运行&#xff0c;本文讲述如何把open62541工程放到docker容器中运行。 本文使用WSL ubuntu 22.04作为宿主环境&#xff0c;其它linux也是一样。一 拉取debia…

Spring Boot微服务中集成gRPC实践经验分享

Spring Boot微服务中集成gRPC实践经验分享 一、业务场景描述 在某电商系统中&#xff0c;推荐服务、库存服务、订单服务等微服务需要高效、双向流式通信&#xff0c;RESTHTTP已无法满足低延迟、高并发和严格类型安全的需求。为此&#xff0c;我们选择在Spring Boot微服务中集成…

springboot项目编写测试类,乱码问题解决

​MockMvc 的默认行为​ MockMvc ​默认使用 ISO-8859-1 解码响应&#xff0c;而服务端实际返回 UTF-8 编码数据 。 Postman 无乱码是因浏览器自动识别编码&#xff0c;但 MockMvc 需显式配置。 ​过滤器失效场景​ Spring 的 CharacterEncodingFilter ​默认只对 POST 请求生效…

打破传统,开启 AR 智慧课堂​

在教育领域&#xff0c;AR 智慧课堂宛如一场及时雨&#xff0c;为传统教育模式带来了革命性的变革&#xff0c;让学习变得更加生动有趣、高效互动。通过 AR 技术&#xff0c;抽象的知识瞬间变得鲜活起来&#xff0c;学生们可以在虚拟与现实交织的世界中&#xff0c;探索历史的长…

热烈祝贺 Flink 2.0 存算分离入选 VLDB 2025

VLDB 2025 论文热烈祝贺 Apache Flink 2.0 的重磅研究成果《Disaggregated State Management in Apache Flink 2.0 》被数据库领域顶级会议 VLDB 2025 正式接收&#xff01;这项工作由 Apache Flink 社区 联合 阿里巴巴实时计算 Flink 团队 以及多位学术界研究人员共同完成&…

蓄电池能量管理matlab的simulink仿真

蓄电池能量管理matlab的simulink仿真模型 AlternatorTableData.mat , 7395 Battery_Management_Lib.mdl , 577258 Readme.txt , 1293 license.txt , 1551 ssc_battery_management.mdl , 221248 ssc_lead_acid_battery_50Ah_ini.m , 1760 ssc_lead_acid_battery_80Ah_ini.m , 1…

MyBatisPlus-03-扩展功能

文章目录【README】【1】基于MyBatisPlus的代码生成器【2】MyBatisPlus-DB静态工具【2.1】使用MyBatisPlus的DB静态工具查询单个及多个用户地址【查询单个用户的访问效果】【查询多个用户的访问效果】【3】逻辑删除【3.1】代码实现【4】枚举处理器【4.1】代码实现【5】JSON处理…

初识Neo4j之Cypher(三)

目录 一、介绍 二、语法 1、节点 2、关系 3、属性 4、模式 一、介绍 Cypher 是 Neo4j 的声明式查询语言&#xff0c;兼容 GQL 标准。通过 openCypher 项目&#xff0c;Cypher 以开源方式提供。它类似于 SQL&#xff0c;但专为图数据优化。 Cypher 直观且接近自然语言&…