/********************************************************************/
/* */
/* Copyright (c) 2014 Genesis Mobile */
/* */
/* This obfuscated code was created by Jasob 4.1 Trial Version. */
/* The code may be used for evaluation purposes only. */
/* To obtain full rights to the obfuscated code you have to */
/* purchase the license key (http://www.jasob.com/Purchase.html). */
/* */
/********************************************************************/
var AM = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var iI = new Array(- 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
var aE, eW, kM;
var justic3, Tim = 0,
M = [],
MM = [],
T = [],
miss = null,
M3,
Hid,
Show = 0,
Show2;
var BL = {
"SV": "",
"ad": "",
"KK": "",
"lol": "0",
"olo": "0",
"sh": "0",
"T": "",
"passGuard": "",
"kb": "",
"FD": "",
"WH": "",
"double": "0",
"key2": "",
"once": "0",
"Mov": "0",
"fixed": ""
};
var PH = {
"Id": "",
"s_n": "",
"pm": "",
"cs": "0",
"add": "1",
"arrPlace": new Array(),
"L": [],
"arrId": [],
"arrPGD": []
};
function aB(bS) {
var jj, hF, fG, eR;
var i, aG, out;
aG = bS.length;
i = 0;
out = "";
while (i < aG) {
do {
jj = iI[bS.charCodeAt(i++) & 0xff];
} while (i < aG && jj == - 1);
if (jj == -1) break;
do {
hF = iI[bS.charCodeAt(i++) & 0xff];
} while (i < aG && hF == - 1);
if (hF == -1) break;
out += String.fromCharCode((jj << 2) | ((hF & 0x30) >> 4));
do {
fG = bS.charCodeAt(i++) & 0xff;
if (fG == 61) return out;
fG = iI[fG];
} while (i < aG && fG == - 1);
if (fG == -1) break;
out += String.fromCharCode(((hF & 0XF) << 4) | ((fG & 0x3C) >> 2));
do {
eR = bS.charCodeAt(i++) & 0xff;
if (eR == 61) return out;
eR = iI[eR];
} while (i < aG && eR == - 1);
if (eR == -1) break;
out += String.fromCharCode(((fG & 0x03) << 6) | eR);
}
return out;
};
var u = navigator.userAgent;
var lA = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
var nD = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
var hM = function () {
var r = true;
if (/MediaPad/i.test(u)) return false;
r = (/Mobile/i.test(u) && !/ipad/i.test(u));
return r;
};
function keyBoard(options) {
this.settings = {
"id": "",
"chaosMode": 0,
"pressStatus": 1,
"kbType": 0,
"aQ": {},
"odd": 1,
"reset": 0,
"svg": ""
};
this.gg = undefined;
if (options != undefined) {
this.settings = options;
};
this.caps = false;
this.shift = false;
this.dt = false;
this.aV = false;
BL.SV = this.settings.svg;
var bA = this;
this.cf = function () {
var aY = "#" + bA.settings.id;
$(aY).hide();
document.querySelector(aY).removeEventListener("webkitAnimationEnd", bA.cf, false);
document.querySelector(aY).removeEventListener("animationEnd", bA.cf, false);
};
this.orientation = function () {
var b = u.indexOf('SM-T800') > -1;
if (!b) {
return window.orientation;
}
var bk = 0;
switch (window.orientation) {
case 0:
bk = 90;
break;
case 90:
bk = 180;
break;
case 180:
bk = -90;
break;
case - 90: bk = 180;
break;
}
return bk;
};
this.ma = function () {
var r = 0;
if ((this.orientation() == 90) || (this.orientation() == -90)) {
if (nD) {
if (hM()) r = 0.50;
else r = 0.40;
} else if (lA) {
if (hM()) r = 0.50;
else r = 0.40;
} else {
r = 0.50;
}
} else {
if (nD) {
if (hM()) r = 0.40;
else r = 0.35;
} else if (lA) {
if (hM()) r = 0.40;
else r = 0.35;
} else {
r = 0.40;
}
}
return r;
};
this.ht = function () {
var aY = "#" + bA.settings.id;
if ((bA.orientation() == 90) || (bA.orientation() == -90)) {
if (bA.caps) {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_DS_H.svg) ",
backgroundSize: "100% 100%"
});
} else if (bA.shift) {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_D_H.svg) ",
backgroundSize: "100% 100%"
});
} else {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_H.svg) ",
backgroundSize: "100% 100%"
});
}
} else {
if (bA.caps) {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_DS.svg) ",
backgroundSize: "100% 100%"
});
} else if (bA.shift) {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_D.svg) ",
backgroundSize: "100% 100%"
});
} else {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift.svg) ",
backgroundSize: "100% 100%"
});
}
}
$(".row1pwd,.row2pwd,.row3pwdb").css({
background: "url(" + BL.SV + "/anjian.svg)",
backgroundSize: "100% 100%"
});
$(".row123").css({
background: "url(" + BL.SV + "/123.svg) ",
backgroundSize: "100% 100%"
});
$(".rowdelet,#kb_s_N,#kb_n_S").css({
background: "url(" + BL.SV + "/quanDEL.svg) ",
backgroundSize: "100% 100%"
});
$(".row3pwdd").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$(".rowspace").css({
background: "url(" + BL.SV + "/space.svg) ",
backgroundSize: "100% 100%"
});
$(".rowclose").css({
background: "url(" + BL.SV + "/123.svg) ",
backgroundSize: "100% 100%"
});
$(".pwd").css({
background: "url(" + BL.SV + "/shuzi_1.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_p_D,#kb_p_CLOSE").css({
background: "url(" + BL.SV + "/shuzi_2.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_p_D>div").css({
background: "url(" + BL.SV + "/shuzi_delete1.svg) ",
backgroundSize: "100% 100%"
});
$(".rowdelet>div").css({
background: "url(" + BL.SV + "/DEL.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_p_CLOSE>div,.rowclose>div").css({
background: "url(" + BL.SV + "/done_1.svg) ",
backgroundSize: "100% 100%"
});
document.querySelector(aY).removeEventListener("webkitAnimationEnd", bA.ht, false);
document.querySelector(aY).removeEventListener("animationEnd", bA.ht, false);
}
};
keyBoard.prototype.generate = function () {
if(document.getElementById('testkbid')) {
$('#testkbid').remove()
}
this.settings.id = "testkbid";
var wO = '<div id=' + this.settings.id,
wb = 'IGNsYXNzPSJwd2RrZXlib2FyZG91dCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyIgPjxkaXYgaWQ9ImNoYXJfa2V5Ym9hcmQiIHN0eWxlPSJ3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJSA7IGRpc3BsYXk6bm9uZTsiPjxkaXYgY2xhc3M9InJvdzEiPg==',
wo = "PGRpdiBpZD0ia2JfY18wIiBjbGFzcz0icm93MXB3ZCByb3dsZWZ0IiBkYXRhLW5hbWU9ImNfMCI+cTwvZGl2Pg==",
vL = "PGRpdiBpZD0ia2JfY18xIiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzEiPnc8L2Rpdj4=",
wk = "PGRpdiBpZD0ia2JfY18yIiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzIiPmU8L2Rpdj4=",
vU = "PGRpdiBpZD0ia2JfY18zIiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzMiPnI8L2Rpdj4=",
vl = "PGRpdiBpZD0ia2JfY180IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzQiPnQ8L2Rpdj4=",
vI = "PGRpdiBpZD0ia2JfY181IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzUiPnk8L2Rpdj4=",
xc = "PGRpdiBpZD0ia2JfY182IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzYiPnU8L2Rpdj4=",
wI = "PGRpdiBpZD0ia2JfY183IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzciPmk8L2Rpdj4=",
wj = "PGRpdiBpZD0ia2JfY184IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJjXzgiPm88L2Rpdj4=",
vZ = "PGRpdiBpZD0ia2JfY185IiBjbGFzcz0icm93MXB3ZCByb3dyaWdodCIgZGF0YS1uYW1lPSJjXzkiPnA8L2Rpdj4=",
vT = "PC9kaXY+PGRpdiBjbGFzcz0icm93MiI+PGRpdiBpZD0ia2JfY18xMCIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xMCI+YTwvZGl2Pg==",
wE = "PGRpdiBpZD0ia2JfY18xMSIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xMSI+czwvZGl2Pg==",
uj = "PGRpdiBpZD0ia2JfY18xMiIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xMiI+ZDwvZGl2Pg==",
tY = "PGRpdiBpZD0ia2JfY18xMyIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xMyI+ZjwvZGl2Pg==",
ut = "PGRpdiBpZD0ia2JfY18xNCIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xNCI+ZzwvZGl2Pg==",
tq = "PGRpdiBpZD0ia2JfY18xNSIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xNSI+aDwvZGl2Pg==",
tF = "PGRpdiBpZD0ia2JfY18xNiIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xNiI+ajwvZGl2Pg==",
uw = "PGRpdiBpZD0ia2JfY18xNyIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xNyI+azwvZGl2Pg==",
tQ = "PGRpdiBpZD0ia2JfY18xOCIgY2xhc3M9InJvdzJwd2QiIGRhdGEtbmFtZT0iY18xOCI+bDwvZGl2Pg==",
tu = "PC9kaXY+PGRpdiBjbGFzcz0icm93MyI+PGRpdiBpZD0ia2JfY19DQVAiIGNsYXNzPSJyb3czcHdkYSIgZGF0YS1uYW1lPSJjX0NBUCI+PC9kaXY+",
uB = "PGRpdiBpZD0ia2JfY18yMCIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjAiPno8L2Rpdj4=",
vd = "PGRpdiBpZD0ia2JfY18yMSIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjEiPng8L2Rpdj4=",
vh = "PGRpdiBpZD0ia2JfY18yMiIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjIiPmM8L2Rpdj4=",
tU = "PGRpdiBpZD0ia2JfY18yMyIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjMiPnY8L2Rpdj4=",
tP = "PGRpdiBpZD0ia2JfY18yNCIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjQiPmI8L2Rpdj4=",
ud = "PGRpdiBpZD0ia2JfY18yNSIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjUiPm48L2Rpdj4=",
tN = "PGRpdiBpZD0ia2JfY18yNiIgY2xhc3M9InJvdzNwd2RiIiBkYXRhLW5hbWU9ImNfMjYiPm08L2Rpdj4=",
uW = "PGRpdiBpZD0ia2JfY19EIiBjbGFzcz0icm93M3B3ZGMgcm93ZGVsZXQiIGRhdGEtbmFtZT0iY19EIj48ZGl2PjwvZGl2PjwvZGl2Pg==",
tJ = "PC9kaXY+PGRpdiBjbGFzcz0icm93NCI+PGRpdiBpZD0ia2JfY19OIiBjbGFzcz0icm93NHB3ZGEgcm93MTIzIiBkYXRhLW5hbWU9ImNfTiI+Lj8xMjM8L2Rpdj4=",
ub = "PGRpdiBpZD0ia2JfY19TUEFDRSIgY2xhc3M9InJvdzRwd2RiIHJvd3NwYWNlIiBkYXRhLW5hbWU9ImNfU1BBQ0UiPnNwYWNlPC9kaXY+",
uh = "PGRpdiBpZD0ia2JfY19DTE9TRSIgY2xhc3M9InJvdzRwd2RhIHJvd2Nsb3NlIiBkYXRhLW5hbWU9ImNfQ0xPU0UiPjxkaXY+PC9kaXY+PC9kaXY+",
ur = "PC9kaXY+PC9kaXY+PGRpdiBpZD0ibnVtYmVyX2tleWJvYXJkIj4=",
tn = "PGRpdiBjbGFzcz0icm93MSI+PGRpdiBpZD0ia2Jfbl8wIiBjbGFzcz0icm93MXB3ZCByb3dsZWZ0IGNoZyIgZGF0YS1uYW1lPSJuXzAiPjE8L2Rpdj4=",
uH = "PGRpdiBpZD0ia2Jfbl8xIiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl8xIj4yPC9kaXY+",
vf = "PGRpdiBpZD0ia2Jfbl8yIiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl8yIj4zPC9kaXY+",
tL = "PGRpdiBpZD0ia2Jfbl8zIiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl8zIj40PC9kaXY+",
uN = "PGRpdiBpZD0ia2Jfbl80IiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl80Ij41PC9kaXY+",
uF = "PGRpdiBpZD0ia2Jfbl81IiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl81Ij42PC9kaXY+",
uG = "PGRpdiBpZD0ia2Jfbl82IiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl82Ij43PC9kaXY+",
tx = "PGRpdiBpZD0ia2Jfbl83IiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl83Ij44PC9kaXY+",
tZ = "PGRpdiBpZD0ia2Jfbl84IiBjbGFzcz0icm93MXB3ZCBjaGciIGRhdGEtbmFtZT0ibl84Ij45PC9kaXY+",
uC = "PGRpdiBpZD0ia2Jfbl85IiBjbGFzcz0icm93MXB3ZCByb3dyaWdodCBjaGciIGRhdGEtbmFtZT0ibl85Ij4wPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0icm93MyI+",
uY = "PGRpdiBpZD0ia2Jfbl8xMCIgY2xhc3M9InJvdzFwd2Qgcm93bGVmdCIgZGF0YS1uYW1lPSJuXzEwIj4tPC9kaXY+",
tK = "PGRpdiBpZD0ia2Jfbl8xMSIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xMSI+LzwvZGl2Pg==",
ug = "PGRpdiBpZD0ia2Jfbl8xMiIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xMiI+OjwvZGl2Pg==",
uD = "PGRpdiBpZD0ia2Jfbl8xMyIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xMyI+OzwvZGl2Pg==",
vg = "PGRpdiBpZD0ia2Jfbl8xNCIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xNCI+KDwvZGl2Pg==",
vc = "PGRpdiBpZD0ia2Jfbl8xNSIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xNSI+KTwvZGl2Pg==",
uU = "PGRpdiBpZD0ia2Jfbl8xNiIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xNiI+JDwvZGl2Pg==",
tm = "PGRpdiBpZD0ia2Jfbl8xNyIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xNyI+JjwvZGl2Pg==",
tw = "PGRpdiBpZD0ia2Jfbl8xOCIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ibl8xOCI+QDwvZGl2Pg==",
ty = "PGRpdiBpZD0ia2Jfbl8xOSIgY2xhc3M9InJvdzFwd2Qgcm93cmlnaHQgcm93YWxvbmUiIGRhdGEtbmFtZT0ibl8xOSI+IjwvZGl2Pg==",
uR = "PC9kaXY+PGRpdiBjbGFzcz0icm93MyI+PGRpdiBpZD0ia2Jfbl9TIiBjbGFzcz0icm93M3B3ZGEiIGRhdGEtbmFtZT0ibl9TIj4jKz08L2Rpdj4=",
tM = "PGRpdiBpZD0ia2Jfbl8yMSIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9Im5fMjEiPi48L2Rpdj4=",
uV = "PGRpdiBpZD0ia2Jfbl8yMiIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9Im5fMjIiPiw8L2Rpdj4=",
tC = "PGRpdiBpZD0ia2Jfbl8yMyIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9Im5fMjMiPj88L2Rpdj4=",
tE = "PGRpdiBpZD0ia2Jfbl8yNCIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9Im5fMjQiPiE8L2Rpdj4=",
uQ = "PGRpdiBpZD0na2Jfbl8yNScgY2xhc3M9J3JvdzNwd2RkJyBkYXRhLW5hbWU9J25fMjUnPic8L2Rpdj4=",
uk = "PGRpdiBpZD0ia2Jfbl9EIiBjbGFzcz0icm93M3B3ZGMgcm93ZGVsZXQiIGRhdGEtbmFtZT0ibl9EIj48ZGl2PjwvZGl2PjwvZGl2Pg==",
uz = "PC9kaXY+PGRpdiBjbGFzcz0icm93NCI+PGRpdiBpZD0ia2Jfbl9DIiBjbGFzcz0icm93NHB3ZGEgcm93MTIzIiBkYXRhLW5hbWU9Im5fQyI+QUJDPC9kaXY+",
uE = "PGRpdiBpZD0ia2Jfbl9TUEFDRSIgY2xhc3M9InJvdzRwd2RiIHJvd3NwYWNlIiBkYXRhLW5hbWU9Im5fU1BBQ0UiPnNwYWNlPC9kaXY+",
uc = "PGRpdiBpZD0ia2Jfbl9DTE9TRSIgY2xhc3M9InJvdzRwd2RhIHJvd2Nsb3NlIiBkYXRhLW5hbWU9Im5fQ0xPU0UiPjxkaXY+PC9kaXY+PC9kaXY+",
uf = "PC9kaXY+PC9kaXY+PGRpdiBpZD0ic3ltYmxlX2tleWJvYXJkIiAgc3R5bGU9IndpZHRoOjEwMCU7IGhlaWdodDoxMDAlIDsgZGlzcGxheTpub25lOyI+PGRpdiBjbGFzcz0icm93MSI+",
vb = "PGRpdiBpZD0ia2Jfc18wIiBjbGFzcz0icm93MXB3ZCByb3dsZWZ0IiBkYXRhLW5hbWU9InNfMCI+WzwvZGl2Pg==",
tW = "PGRpdiBpZD0ia2Jfc18xIiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzEiPl08L2Rpdj4=",
us = "PGRpdiBpZD0ia2Jfc18yIiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzIiPns8L2Rpdj4=",
tG = "PGRpdiBpZD0ia2Jfc18zIiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzMiPn08L2Rpdj4=",
uo = "PGRpdiBpZD0ia2Jfc180IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzQiPiM8L2Rpdj4=",
tz = "PGRpdiBpZD0ia2Jfc181IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzUiPiU8L2Rpdj4=",
tp = "PGRpdiBpZD0ia2Jfc182IiBjbGFzcz0icm93MXB3ZCByb3dhbG9uZSIgZGF0YS1uYW1lPSJzXzYiPl48L2Rpdj4=",
va = "PGRpdiBpZD0ia2Jfc183IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzciPio8L2Rpdj4=",
tO = "PGRpdiBpZD0ia2Jfc184IiBjbGFzcz0icm93MXB3ZCIgZGF0YS1uYW1lPSJzXzgiPis8L2Rpdj4=",
tX = "PGRpdiBpZD0ia2Jfc185IiBjbGFzcz0icm93MXB3ZCByb3dyaWdodCIgZGF0YS1uYW1lPSJzXzkiPj08L2Rpdj4=",
uK = "PC9kaXY+PGRpdiBjbGFzcz0icm93MyI+PGRpdiBpZD0ia2Jfc18xMCIgY2xhc3M9InJvdzFwd2Qgcm93bGVmdCByb3dsb25lbHkiIGRhdGEtbmFtZT0ic18xMCI+XzwvZGl2Pg==",
uS = "PGRpdiBpZD0ia2Jfc18xMSIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xMSI+XDwvZGl2Pg==",
uM = "PGRpdiBpZD0ia2Jfc18xMiIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xMiI+fDwvZGl2Pg==",
uv = "PGRpdiBpZD0ia2Jfc18xMyIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xMyI+fjwvZGl2Pg==",
vF = "PGRpdiBpZD0ia2Jfc18xNCIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xNCI+PDwvZGl2Pg==",
yZ = "PGRpdiBpZD0ia2Jfc18xNSIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xNSI+PjwvZGl2Pg==",
xj = "PGRpdiBpZD0ia2Jfc18xNiIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xNiI+JDwvZGl2Pg==",
xM = "PGRpdiBpZD0ia2Jfc18xNyIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xNyI+JjwvZGl2Pg==",
xV = "PGRpdiBpZD0ia2Jfc18xOCIgY2xhc3M9InJvdzFwd2QiIGRhdGEtbmFtZT0ic18xOCI+QDwvZGl2Pg==",
xH = "PGRpdiBpZD0ia2Jfc18xOSIgY2xhc3M9InJvdzFwd2Qgcm93cmlnaHQgcm93YWxvbmUiIGRhdGEtbmFtZT0ic18xOSI+YDwvZGl2Pg==",
xN = "PC9kaXY+PGRpdiBjbGFzcz0icm93MyI+PGRpdiBpZD0ia2Jfc19OIiBjbGFzcz0icm93M3B3ZGEiIGRhdGEtbmFtZT0ic19OIj4xMjM8L2Rpdj4=",
xK = "PGRpdiBpZD0ia2Jfc18yMSIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9InNfMjEiPi48L2Rpdj4=",
xE = "PGRpdiBpZD0ia2Jfc18yMiIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9InNfMjIiPiw8L2Rpdj4=",
xo = "PGRpdiBpZD0ia2Jfc18yMyIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9InNfMjMiPj88L2Rpdj4=",
yz = "PGRpdiBpZD0ia2Jfc18yNCIgY2xhc3M9InJvdzNwd2RkIiBkYXRhLW5hbWU9InNfMjQiPiE8L2Rpdj4=",
xw = "PGRpdiBpZD0na2Jfc18yNScgY2xhc3M9J3JvdzNwd2RkJyBkYXRhLW5hbWU9J3NfMjUnPic8L2Rpdj4=",
yu = "PGRpdiBpZD0ia2Jfc19EIiBjbGFzcz0icm93M3B3ZGMgcm93ZGVsZXQiIGRhdGEtbmFtZT0ic19EIj48ZGl2PjwvZGl2PjwvZGl2Pg==",
yq = "PC9kaXY+PGRpdiBjbGFzcz0icm93NCI+PGRpdiBpZD0ia2Jfc19DIiBjbGFzcz0icm93NHB3ZGEgcm93MTIzIiBkYXRhLW5hbWU9InNfQyI+QUJDPC9kaXY+",
xk = "PGRpdiBpZD0ia2Jfc19TUEFDRSIgY2xhc3M9InJvdzRwd2RiIHJvd3NwYWNlIiBkYXRhLW5hbWU9InNfU1BBQ0UiPnNwYWNlPC9kaXY+",
ym = "PGRpdiBpZD0ia2Jfc19DTE9TRSIgY2xhc3M9InJvdzRwd2RhIHJvd2Nsb3NlIiBkYXRhLW5hbWU9InNfQ0xPU0UiPjxkaXY+PC9kaXY+PC9kaXY+",
xJ = "PC9kaXY+PC9kaXY+PGRpdiBpZD0icHVyZW51bWJlcl9rZXlib2FyZCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxkaXYgY2xhc3M9InJvdzYiPg==",
yQ = "PGRpdiBpZD0ia2JfcF8wIiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfMCI+MTwvZGl2Pg==",
yi = "PGRpdiBpZD0ia2JfcF8xIiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfMSI+MjwvZGl2Pg==",
xf = "PGRpdiBpZD0ia2JfcF8yIiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfMiI+MzwvZGl2Pg==",
yG = "PC9kaXY+PGRpdiBjbGFzcz0icm93NSI+PGRpdiBpZD0ia2JfcF8zIiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfMyI+NDwvZGl2Pg==",
yH = "PGRpdiBpZD0ia2JfcF80IiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfNCI+NTwvZGl2Pg==",
ya = "PGRpdiBpZD0ia2JfcF81IiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfNSI+NjwvZGl2Pg==",
xr = "PC9kaXY+PGRpdiBjbGFzcz0icm93NSI+PGRpdiBpZD0ia2JfcF82IiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfNiI+NzwvZGl2Pg==",
yx = "PGRpdiBpZD0ia2JfcF83IiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfNyI+ODwvZGl2Pg==",
xC = "PGRpdiBpZD0ia2JfcF84IiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfOCI+OTwvZGl2Pg==",
xY = "PC9kaXY+PGRpdiBjbGFzcz0icm93NSI+PGRpdiBpZD0ia2JfcF9EIiBjbGFzcz0icHdkIiBkYXRhLW5hbWU9InBfRCI+PGRpdj48L2Rpdj48L2Rpdj4=",
yf = "PGRpdiBpZD0ia2JfcF8xMCIgY2xhc3M9InB3ZCIgZGF0YS1uYW1lPSJwXzEwIj4wPC9kaXY+",
kj = "PGRpdiBpZD0ia2JfcF9DTE9TRSIgY2xhc3M9InB3ZCIgZGF0YS1uYW1lPSJwX0NMT1NFIj48ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg==",
yb = "",
yS = "",
xn = "";
var ce = wO + aB(wb) + aB(wo) + aB(vL) + aB(wk) + aB(vU) + aB(vl) + aB(vI) + aB(xc) + aB(wI) + aB(wj);
ce += aB(vZ) + aB(vT) + aB(wE) + aB(uj) + aB(tY) + aB(ut) + aB(tq) + aB(tF) + aB(uw) + aB(tQ);
ce += aB(tu) + aB(uB) + aB(vd) + aB(vh) + aB(tU) + aB(tP) + aB(ud) + aB(tN) + aB(uW) + aB(tJ);
ce += aB(ub) + aB(uh) + aB(ur) + aB(tn) + aB(uH) + aB(vf) + aB(tL) + aB(uN) + aB(uF) + aB(uG);
ce += aB(tx) + aB(tZ) + aB(uC) + aB(uY) + aB(tK) + aB(ug) + aB(uD) + aB(vg) + aB(vc) + aB(uU);
ce += aB(tm) + aB(tw) + aB(ty) + aB(uR) + aB(tM) + aB(uV) + aB(tC) + aB(tE) + aB(uQ) + aB(uk);
ce += aB(uz) + aB(uE) + aB(uc) + aB(uf) + aB(vb) + aB(tW) + aB(us) + aB(tG) + aB(uo) + aB(tz);
ce += aB(tp) + aB(va) + aB(tO) + aB(tX) + aB(uK) + aB(uS) + aB(uM) + aB(uv) + aB(vF) + aB(yZ);
ce += aB(xj) + aB(xM) + aB(xV) + aB(xH) + aB(xN) + aB(xK) + aB(xE) + aB(xo) + aB(yz) + aB(xw);
ce += aB(yu) + aB(yq) + aB(xk) + aB(ym) + aB(xJ) + aB(yQ) + aB(yi) + aB(xf) + aB(yG) + aB(yH);
ce += aB(ya) + aB(xr) + aB(yx) + aB(xC) + aB(xY) + aB(yf) + aB(kj) + aB(yb) + aB(yS) + aB(xn);
$(document.body).append(ce);
verifyLicense(this.settings.license);
eW = $(window).height();
$(".row1pwd,.row2pwd,.row3pwdb").css({
background: "url(" + BL.SV + "/anjian.svg)",
backgroundSize: "100% 100%"
});
$(".row123").css({
background: "url(" + BL.SV + "/123.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift.svg) ",
backgroundSize: "100% 100%"
});
$(".rowdelet,#kb_s_N,#kb_n_S").css({
background: "url(" + BL.SV + "/quanDEL.svg) ",
backgroundSize: "100% 100%"
});
$(".row3pwdd").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$(".rowspace").css({
background: "url(" + BL.SV + "/space.svg) ",
backgroundSize: "100% 100%"
});
$(".rowclose").css({
background: "url(" + BL.SV + "/123.svg) ",
backgroundSize: "100% 100%"
});
$(".pwd").css({
background: "url(" + BL.SV + "/shuzi_1.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_p_D,#kb_p_CLOSE").css({
background: "url(" + BL.SV + "/shuzi_2.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_p_D>div").css({
background: "url(" + BL.SV + "/shuzi_delete1.svg) ",
backgroundSize: "100% 100%"
});
$(".rowdelet>div").css({
background: "url(" + BL.SV + "/DEL.svg) ",
backgroundSize: "100% 100%"
});
$("#kb_p_CLOSE>div,.rowclose>div").css({
background: "url(" + BL.SV + "/done_1.svg) ",
backgroundSize: "100% 100%"
});
if ($("body").height() < eW) {
$("body").css({
height: "100%"
});
$("html").css({
height: "100%"
});
}
if (this.settings.kbType != 0) {
$("#purenumber_keyboard").css("display", "block");
$("#char_keyboard").css("display", "none");
$("#number_keyboard").css("display", "none");
$("#symble_keyboard").css("display", "none");
} else {
$("#purenumber_keyboard").css("display", "none");
$("#char_keyboard").css("display", "block");
$("#number_keyboard").css("display", "none");
$("#symble_keyboard").css("display", "none");
}
var R = this;
var aY = "#" + this.settings.id;
aE = 0;
var ii = parseInt($(aY).css("height"));
kM = function () {
if ((R.orientation() == 90) || (R.orientation() == -90)) {
var jB = Math.max(window.innerHeight, document.documentElement.clientHeight);
aE = jB * R.ma();
} else {
var jB = Math.max(document.documentElement.clientHeight);
aE = jB * R.ma();
if (aE < ii) {
aE = ii;
};
}
$(aY).css("height", aE);
$("#purenumber_keyboard").css("height", aE);
$("#char_keyboard").css("height", aE);
$("#number_keyboard").css("height", aE);
$("#symble_keyboard").css("height", aE);
$(".row1,.row6").css({
marginTop: aE * 0.02 + "px"
});
var r1 = new RegExp("row\\d");
var r2 = new RegExp("_keyboard");
$(aY).contents("div").filter(function () {
if (this.id != "purenumber_keyboard") {
$("#" + this.id).contents("div").filter(function () {
if (r1.test(this.className)) {
$(this).contents("div").filter(function () {
var h = 0.21 * aE;
$("#" + this.id).css({
height: h + "px",
lineHeight: h + "px"
});
$(".rowdelet>div").css({
width: h * 0.51154 + "px"
});
$(".rowclose>div").css({
width: h * 0.76521 + "px"
});
});
}
});
} else {
$("#" + this.id).contents("div").filter(function () {
if (r1.test(this.className)) {
$(this).contents("div").filter(function () {
var h = 0.225 * aE;
$("#" + this.id).css({
height: h + "px",
lineHeight: h + "px"
});
$("#kb_p_D>div").css({
width: h * 0.65263 + "px"
});
$("#kb_p_CLOSE>div").css({
width: h * 0.5625 + "px"
});
});
}
});
}
});
};
kM();
justic3 = function () {
$(aY).css("height", aE);
$("#purenumber_keyboard").css("height", aE);
$("#char_keyboard").css("height", aE);
$("#number_keyboard").css("height", aE);
$("#symble_keyboard").css("height", aE);
$(".row1").css({
marginTop: aE * 0.02 + "px"
});
var r1 = new RegExp("row\\d");
var r2 = new RegExp("_keyboard");
$(aY).contents("div").filter(function () {
if (this.id != "purenumber_keyboard") {
$("#" + this.id).contents("div").filter(function () {
if (r1.test(this.className)) {
$(this).contents("div").filter(function () {
var h = 0.21 * aE;
$("#" + this.id).css({
height: h + "px",
lineHeight: h + "px"
});
$(".rowdelet>div").css({
width: h * 0.51154 + "px"
});
$(".rowclose>div").css({
width: h * 0.76521 + "px"
});
});
}
});
} else {
$("#" + this.id).contents("div").filter(function () {
if (r1.test(this.className)) {
$(this).contents("div").filter(function () {
var h = 0.225 * aE;
$("#" + this.id).css({
height: h + "px",
lineHeight: h + "px"
});
$("#kb_p_D>div").css({
width: h * 0.65263 + "px"
});
$("#kb_p_CLOSE>div").css({
width: h * 0.5625 + "px"
});
});
}
});
}
});
};
if (!this.aV) {
var pe = new RegExp("_keyboard");
var sJ = new RegExp("kb_");
var nQ = new RegExp("row\\d");
var images = new Array();
function preload() {
for (i = 0; i < preload.arguments.length; i++) {
images[i] = new Image();
images[i].src = preload.arguments[i];
}
};
preload(BL.SV + "/123.svg", BL.SV + "/123_2.svg", BL.SV + "/anjian.svg", BL.SV + "/anjian_2.svg", BL.SV + "/DEL.svg", BL.SV + "/DEL_2.svg", BL.SV + "/shuzi_delete2.svg", BL.SV + "/shuzi_delete1.svg", BL.SV + "/done_1.svg", BL.SV + "/shuzi_1.svg", BL.SV + "/shuzi_2.svg", BL.SV + "/space.svg", BL.SV + "/space_2.svg", BL.SV + "/dianji_left.svg", BL.SV + "/dianji_right.svg", BL.SV + "/dianji.svg", BL.SV + "/quanDEL.svg", BL.SV + "/quanDEL_2.svg", BL.SV + "/shift.svg", BL.SV + "/shift_D.svg", BL.SV + "/shift_DS.svg");
var kZ = function (aK) {
function call(url, color) {
var img = new Image;
img.onload = function () {
if (!color) {
$("#" + aK).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%"
});
} else {
$("#" + aK).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%",
color: color
});
}
};
img.src = url;
};
function call2(url) {
var img = new Image;
img.onload = function () {
$("#" + aK + ">div").css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%"
});
};
img.src = url;
};
var event = 0;
if (sJ.test(aK)) {
var nR = /_p_/;
var oq = /_n_/;
var pU = /_c_/;
var nV = /_s_/;
if (nR.test(aK)) {
function del() {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
setTimeout(function () {
var url = BL.SV + "/shuzi_2.svg";
var url2 = BL.SV + "/shuzi_delete1.svg";
var img = new Image;
img.onload = function () {
$("#kb_p_D").css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%"
});
$("#kb_p_D>div").css({
backgroundImage: 'url(' + img.src2 + ')',
backgroundSize: "100% 100%"
});
};
img.src = url;
img.src2 = url2;
},
100);
}
clearInterval(dv);
for (var bG = 0; bG < av.length; bG++) {
clearInterval(av[bG]);
}
av = [];
var input = document.getElementById(R.settings.aQ.settings.id);
var dO = "";
if (R.settings.hasMap == 1) {
for (var i = 0; i < R.settings.aQ.bu.length; i++) {
dO += "*";
};
} else {
for (var i = 0; i < R.settings.aQ.bg; i++) {
dO += "*";
};
}
if (R.settings.aQ.settings.displayMode == 1) {
var fq = R.settings.aQ;
if (R.settings.aQ.bg == 0) {
input.value = "";
} else {
input.value = (fq.asm + fq.bsm + fq.csm + fq.dsm + fq.esm + fq.fsm + fq.gsm + fq.hsm + fq.ism + fq.jsm + fq.ksm + fq.lsm + fq.msm + fq.nsm + fq.osm + fq.psm + fq.qsm + fq.rsm + fq.ssm + fq.tsm + fq.usm + fq.vsm + fq.wsm + fq.xsm + fq.ysm + fq.zsm + fq.aasm + fq.bbsm + fq.ccsm + fq.ddsm).substring(0, fq.bg)
}
} else {
input.value = dO;
};
BL.double = 0;
};
if ((aK != "kb_p_D") && (aK != "kb_p_CLOSE")) {
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
BL.once = 0;
BL.Mov = 0;
var key = this.innerText;
BL.key2 = $(this).attr("data-name");
BL.double = 1;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
var url = BL.SV + "/shuzi_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia2").css({
background: 'url(' + BL.SV + '/shuzi_1.svg' + ')',
backgroundSize: "100% 100%"
});
$("#purenumber_keyboard div").removeClass("anxia2");
$("#" + aK).addClass("anxia2");
$("#" + aK).css({
backgroundImage: 'url(' + BL.SV + '/shuzi_2.svg' + ')',
backgroundSize: "100% 100%",
color: "#000"
});
}
};
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
}
e.preventDefault();
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH + 1) {
setTimeout(function () {
call(BL.SV + "/shuzi_1.svg");
},
100);
BL.double = 0;
e.preventDefault();
if (R.settings.chaosMode == 2 && event == 0 && BL.once == 0) {
var aN = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
aN = R.gC(aN);
var au = $("#purenumber_keyboard")[0].querySelectorAll(".pwd");
var bY = [];
for (var j = 0,
i = 0; j < au.length; j++) {
if (au[j].id == "kb_p_CLOSE" || au[j].id == "kb_p_D") continue;
i++;
bY.push(au[j]);
}
for (var j = 0; j < bY.length; j++) {
bY[j].innerHTML = aN[j];
}
};
BL.once = 1;
BL.Mov = 1;
};
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
BL.double = 0;
setTimeout(function () {
call(BL.SV + "/shuzi_1.svg");
},
100);
e.preventDefault();
if (R.settings.chaosMode == 2 && event == 0) {
var aN = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
aN = R.gC(aN);
var au = $("#purenumber_keyboard")[0].querySelectorAll(".pwd");
var bY = [];
for (var j = 0,
i = 0; j < au.length; j++) {
if (au[j].id == "kb_p_CLOSE" || au[j].id == "kb_p_D") continue;
i++;
bY.push(au[j]);
}
for (var j = 0; j < bY.length; j++) {
bY[j].innerHTML = aN[j];
}
}
}
});
} else if (aK == "kb_p_D") {
var event = 2;
var dv;
av = [];
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
BL.double = 1;
BL.once = 0;
BL.Mov = 0;
var key = this.innerText;
BL.key2 = $(this).attr("data-name");
$(".anxia2").css({
background: 'url(' + BL.SV + '/shuzi_1.svg' + ')',
backgroundSize: "100% 100%"
});
$(".pwd").removeClass("anxia2");
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
var url = BL.SV + "/shuzi_1.svg";
var url2 = BL.SV + "/shuzi_delete2.svg";
var img = new Image;
img.onload = function () {
$("#kb_p_D").css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%"
});
$("#kb_p_D>div").css({
backgroundImage: 'url(' + img.src2 + ')',
backgroundSize: "100% 100%"
});
};
img.src = url;
img.src2 = url2;
}
fr = new Date().getTime();
dv = window.setInterval(function () {
eO = new Date().getTime();
var x = eO - fr;
if (x > 500) {
var input = document.getElementById(R.settings.aQ.settings.id);
var fK = setInterval(function () {
if (R.settings.hasMap == 1) {
R.settings.aQ.bu = R.settings.aQ.bu.substr(0, R.settings.aQ.bu.length - 1);
}
R.settings.aQ.bg -= 1;
if (R.settings.aQ.bg < 0) R.settings.aQ.bg = 0;
if (R.settings.aQ.bg == 0) R.settings.aQ.asm = [""];
if (R.settings.aQ.bg == 1) R.settings.aQ.bsm = [""];
if (R.settings.aQ.bg == 2) R.settings.aQ.csm = [""];
if (R.settings.aQ.bg == 3) R.settings.aQ.dsm = [""];
if (R.settings.aQ.bg == 4) R.settings.aQ.esm = [""];
if (R.settings.aQ.bg == 5) R.settings.aQ.fsm = [""];
if (R.settings.aQ.bg == 6) R.settings.aQ.gsm = [""];
if (R.settings.aQ.bg == 7) R.settings.aQ.hsm = [""];
if (R.settings.aQ.bg == 8) R.settings.aQ.ism = [""];
if (R.settings.aQ.bg == 9) R.settings.aQ.jsm = [""];
if (R.settings.aQ.bg == 10) R.settings.aQ.ksm = [""];
if (R.settings.aQ.bg == 11) R.settings.aQ.lsm = [""];
if (R.settings.aQ.bg == 12) R.settings.aQ.msm = [""];
if (R.settings.aQ.bg == 13) R.settings.aQ.nsm = [""];
if (R.settings.aQ.bg == 14) R.settings.aQ.osm = [""];
if (R.settings.aQ.bg == 15) R.settings.aQ.psm = [""];
if (R.settings.aQ.bg == 16) R.settings.aQ.qsm = [""];
if (R.settings.aQ.bg == 17) R.settings.aQ.rsm = [""];
if (R.settings.aQ.bg == 18) R.settings.aQ.ssm = [""];
if (R.settings.aQ.bg == 19) R.settings.aQ.tsm = [""];
if (R.settings.aQ.bg == 20) R.settings.aQ.usm = [""];
if (R.settings.aQ.bg == 21) R.settings.aQ.vsm = [""];
if (R.settings.aQ.bg == 22) R.settings.aQ.wsm = [""];
if (R.settings.aQ.bg == 23) R.settings.aQ.xsm = [""];
if (R.settings.aQ.bg == 24) R.settings.aQ.ysm = [""];
if (R.settings.aQ.bg == 25) R.settings.aQ.zsm = [""];
if (R.settings.aQ.bg == 26) R.settings.aQ.aasm = [""];
if (R.settings.aQ.bg == 27) R.settings.aQ.bbsm = [""];
if (R.settings.aQ.bg == 28) R.settings.aQ.ccsm = [""];
if (R.settings.aQ.bg == 29) R.settings.aQ.ddsm = [""];
input.value = input.value.substr(0, input.value.length - 1);
if (R.settings.aQ.settings.jump == 1) {
R.settings.aQ.settings.del(R.settings.aQ.bg);
}
},
50);
av.push(fK);
clearInterval(dv);
}
},
1);
e.preventDefault();
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
return false;
}
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name")) {
del();
e.preventDefault();
return false;
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH + 1) {
del();
e.preventDefault();
return false;
}
});
};
$("#" + aK).on("touchend",
function (e) {
if (aK == "kb_p_CLOSE" && (R.settings.pressStatus == 1 || R.settings.pressStatus == 2)) {
setTimeout(function () {
call(BL.SV + "/shuzi_2.svg");
},
100);
};
});
$("#" + aK).on("touchstart",
function (e) {
var key = this.innerText;
BL.WH = $(window).height();
if (aK != "kb_p_D") {
if (aK == "kb_p_CLOSE" && BL.double == 0) {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/shuzi_1.svg");
};
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
setTimeout(function () {
PH.s_n();
PH.add++;
PH.cs = 1;
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
},
50);
$(aY).removeClass("pwdkeyboard").addClass("pwdkeyboardout");
document.querySelector(aY).addEventListener("webkitAnimationEnd", R.cf, false);
document.querySelector(aY).addEventListener("animationEnd", R.cf, false);
event = 1;
e.preventDefault();
};
};
});
}
if (pU.test(aK)) {
function del2() {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
setTimeout(function () {
var url = BL.SV + "/quanDEL.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$("#kb_c_D").css({
backgroundImage: 'url(' + BL.SV + '/quanDEL.svg' + ')',
backgroundSize: "100% 100%"
});
$("#kb_c_D>div").css({
backgroundImage: 'url(' + BL.SV + '/DEL.svg' + ')',
backgroundSize: "100% 100%"
});
}
},
100);
}
clearInterval(dv);
for (var bG = 0; bG < av.length; bG++) {
clearInterval(av[bG]);
}
av = [];
var input = document.getElementById(R.settings.aQ.settings.id);
var dO = "";
if (R.settings.hasMap == 1) {
for (var i = 0; i < R.settings.aQ.bu.length; i++) {
dO += "*";
};
} else {
for (var i = 0; i < R.settings.aQ.bg; i++) {
dO += "*";
};
}
if (R.settings.aQ.settings.displayMode == 1) {
var fq = R.settings.aQ;
if (R.settings.aQ.bg == 0) {
input.value = "";
} else {
input.value = (fq.asm + fq.bsm + fq.csm + fq.dsm + fq.esm + fq.fsm + fq.gsm + fq.hsm + fq.ism + fq.jsm + fq.ksm + fq.lsm + fq.msm + fq.nsm + fq.osm + fq.psm + fq.qsm + fq.rsm + fq.ssm + fq.tsm + fq.usm + fq.vsm + fq.wsm + fq.xsm + fq.ysm + fq.zsm + fq.aasm + fq.bbsm + fq.ccsm + fq.ddsm).substring(0, fq.bg)
}
} else {
input.value = dO;
};
BL.double = 0;
};
if ((aK != "kb_c_D") && (aK != "kb_c_CLOSE") && (aK != "kb_c_CAP")) {
var zJ = 1;
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
var key = this.innerText;
clearTimeout(BL.FD);
BL.once = 0;
BL.Mov = 0;
BL.key2 = $(this).attr("data-name");
BL.double = 1;
$(".fd").eq(0).remove();
if (/_SPACE/i.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
var url = BL.SV + "/space_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$("#char_keyboard div").removeClass("anxia");
$("#kb_c_SPACE").css({
backgroundImage: 'url(' + BL.SV + '/space_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
} else if (/_N/.test(aK) || /_C/.test(aK) || /_S/.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/123_2.svg");
}
} else {
if (R.settings.pressStatus == 1) {
var cc = $(this);
var Html = $(this).html();
cc.append($("<div class='fd'></div>"));
cc.css({
position: "relative"
});
if (cc.hasClass("rowleft")) {
var img = new Image;
img.src = BL.SV + '/dianji_left.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%",
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
left: 0,
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.23 + "px"
});
}
} else if (cc.hasClass("rowright")) {
var img = new Image;
img.src = BL.SV + '/dianji_right.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%",
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
right: 0,
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.23 + "px"
});
}
} else {
var img = new Image;
img.src = BL.SV + '/dianji.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%",
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
left: "-20%",
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.23 + "px"
});
}
}
} else if (R.settings.pressStatus == 2) {
var url = BL.SV + "/anjian_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$("#char_keyboard div").removeClass("anxia");
$("#" + aK).addClass("anxia");
$("#" + aK).css({
backgroundImage: 'url(' + BL.SV + '/anjian_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
}
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
e.preventDefault();
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH + 1 && BL.Mov == 0) {
if (/_SPACE/i.test(aK)) {
setTimeout(function () {
call(BL.SV + "/space.svg");
},
100);
} else if (/_N/.test(aK) || /_C/.test(aK) || /_S/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
100);
} else {
setTimeout(function () {
$(".fd").eq(0).remove();
},
100);
call(BL.SV + "/anjian.svg");
if (!R.caps && R.shift) {
setTimeout(function () {
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = $(this).text();
if (c.length == 1) {
this.innerText = c.toLowerCase();
} else if (2 <= c.length && c.length <= 3) {
this.innerText = c.substring(0, 1).toLowerCase();
}
});
});
},
100);
if ((R.orientation() == 90) || (R.orientation() == -90)) {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_H.svg) ",
backgroundSize: "100% 100%"
});
} else {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift.svg) ",
backgroundSize: "100% 100%"
});
}
};
R.shift = false;
if (R.settings.chaosMode == 2 && event == 0 && BL.Mov == 0) {
var aN = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm'];
aN = R.gC(aN, R.caps);
var au = $("#char_keyboard")[0].querySelectorAll(".row1pwd,.row2pwd,.row3pwdb");
setTimeout(function () {
for (var j = 0; j < au.length; j++) {
au[j].innerHTML = aN[j];
}
},
100)
}
};
BL.once = 1;
BL.Mov = 1;
BL.double = 0;
e.preventDefault();
}
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
BL.double = 0;
if (/_SPACE/i.test(aK)) {
setTimeout(function () {
call(BL.SV + "/space.svg");
},
100);
} else if (/_N/.test(aK) || /_C/.test(aK) || /_S/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
100);
} else {
BL.FD = setTimeout(function () {
$(".fd").eq(0).remove();
},
100);
setTimeout(function () {
call(BL.SV + "/anjian.svg");
},
100);
};
}
e.preventDefault();
});
} else if (aK == "kb_c_D") {
var key = this.innerText;
var dv;
var av = [];
var event = 2;
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
BL.double = 1;
BL.once = 0;
BL.Mov = 0;
BL.key2 = $(this).attr("data-name");
var key = this.innerText;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$("#char_keyboard div").removeClass("anxia");
var url = BL.SV + "/quanDEL_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$("#kb_c_D").css({
backgroundImage: 'url(' + BL.SV + '/quanDEL_2.svg' + ')',
backgroundSize: "100% 100%"
});
$("#kb_c_D>div").css({
backgroundImage: 'url(' + BL.SV + '/DEL_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
fr = new Date().getTime();
dv = window.setInterval(function () {
eO = new Date().getTime();
var x = eO - fr;
if (x > 500) {
var input = document.getElementById(R.settings.aQ.settings.id);
var fK = setInterval(function () {
if (R.settings.hasMap == 1) {
R.settings.aQ.bu = R.settings.aQ.bu.substr(0, R.settings.aQ.bu.length - 1);
};
R.settings.aQ.bg -= 1;
if (R.settings.aQ.bg < 0) R.settings.aQ.bg = 0;
if (R.settings.aQ.bg == 0) R.settings.aQ.asm = [""];
if (R.settings.aQ.bg == 1) R.settings.aQ.bsm = [""];
if (R.settings.aQ.bg == 2) R.settings.aQ.csm = [""];
if (R.settings.aQ.bg == 3) R.settings.aQ.dsm = [""];
if (R.settings.aQ.bg == 4) R.settings.aQ.esm = [""];
if (R.settings.aQ.bg == 5) R.settings.aQ.fsm = [""];
if (R.settings.aQ.bg == 6) R.settings.aQ.gsm = [""];
if (R.settings.aQ.bg == 7) R.settings.aQ.hsm = [""];
if (R.settings.aQ.bg == 8) R.settings.aQ.ism = [""];
if (R.settings.aQ.bg == 9) R.settings.aQ.jsm = [""];
if (R.settings.aQ.bg == 10) R.settings.aQ.ksm = [""];
if (R.settings.aQ.bg == 11) R.settings.aQ.lsm = [""];
if (R.settings.aQ.bg == 12) R.settings.aQ.msm = [""];
if (R.settings.aQ.bg == 13) R.settings.aQ.nsm = [""];
if (R.settings.aQ.bg == 14) R.settings.aQ.osm = [""];
if (R.settings.aQ.bg == 15) R.settings.aQ.psm = [""];
if (R.settings.aQ.bg == 16) R.settings.aQ.qsm = [""];
if (R.settings.aQ.bg == 17) R.settings.aQ.rsm = [""];
if (R.settings.aQ.bg == 18) R.settings.aQ.ssm = [""];
if (R.settings.aQ.bg == 19) R.settings.aQ.tsm = [""];
if (R.settings.aQ.bg == 20) R.settings.aQ.usm = [""];
if (R.settings.aQ.bg == 21) R.settings.aQ.vsm = [""];
if (R.settings.aQ.bg == 22) R.settings.aQ.wsm = [""];
if (R.settings.aQ.bg == 23) R.settings.aQ.xsm = [""];
if (R.settings.aQ.bg == 24) R.settings.aQ.ysm = [""];
if (R.settings.aQ.bg == 25) R.settings.aQ.zsm = [""];
if (R.settings.aQ.bg == 26) R.settings.aQ.aasm = [""];
if (R.settings.aQ.bg == 27) R.settings.aQ.bbsm = [""];
if (R.settings.aQ.bg == 28) R.settings.aQ.ccsm = [""];
if (R.settings.aQ.bg == 29) R.settings.aQ.ddsm = [""];
input.value = input.value.substr(0, input.value.length - 1);
if (R.settings.aQ.settings.jump == 1) {
R.settings.aQ.settings.del(R.settings.aQ.bg);
}
},
50);
av.push(fK);
clearInterval(dv);
}
},
1);
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
e.preventDefault();
return false;
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH) {
del2();
}
e.preventDefault();
return false;
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
del2();
BL.Mov = 1;
e.preventDefault();
return false;
}
});
}
if (aK == "kb_c_CAP") {
function CAPtap() {
if (!R.dt) {
if (R.caps) {
R.caps = false;
R.shift = false;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_H.svg");
} else {
call(BL.SV + "/shift.svg");
}
} else {
if (R.shift) {
R.shift = false;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_H.svg");
} else {
call(BL.SV + "/shift.svg");
}
} else {
R.shift = true;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_D_H.svg");
} else {
call(BL.SV + "/shift_D.svg");
}
}
if (R.caps) {
R.caps = false;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_H.svg");
} else {
call(BL.SV + "/shift.svg");
}
}
}
} else {
R.dt = false;
}
if (R.caps || R.shift) {
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = this.innerText;
if (c.length == 1) {
this.innerText = c.toUpperCase();
} else if (2 <= c.length && c.length <= 3) {
this.innerText = c.substring(0, 1).toUpperCase();
}
});
});
} else {
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = this.innerText;
if (c.length == 1) {
this.innerText = c.toLowerCase();
} else if (2 <= c.length && c.length <= 3) {
this.innerText = c.substring(0, 1).toLowerCase();
}
});
});
}
$(".fd").remove();
var now = new Date().getTime();
var lv = $(this).data('lastTouch') || now + 1;
var nr = now - lv;
if (nr < 600 && nr > 0) {
R.caps = true;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_DS_H.svg");
} else {
call(BL.SV + "/shift_DS.svg");
}
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = this.innerText;
if (c.length == 1) {
this.innerText = c.toUpperCase();
}
});
});
} else {
$(this).data('lastTouch', now);
}
BL.double = 0;
};
$("#" + aK).on('touchstart',
function (event) {
if (BL.double == 0) {
BL.double = 1;
BL.once = 0;
BL.Mov = 0;
var key = this.innerText;
BL.key2 = $(this).attr("data-name");
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH && BL.Mov == 0) {
if (!R.dt) {
if (R.caps) {
R.caps = false;
R.shift = false;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_H.svg");
} else {
call(BL.SV + "/shift.svg");
}
} else {
if (R.shift) {
R.shift = false;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_H.svg");
} else {
call(BL.SV + "/shift.svg");
}
} else {
R.shift = true;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_D_H.svg");
} else {
call(BL.SV + "/shift_D.svg");
}
}
if (R.caps) {
R.caps = false;
if ((R.orientation() == 90) || (R.orientation() == -90)) {
call(BL.SV + "/shift_H.svg");
} else {
call(BL.SV + "/shift.svg");
}
}
}
} else {
R.dt = false;
}
if (R.caps || R.shift) {
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = this.innerText;
if (c.length == 1) {
this.innerText = c.toUpperCase();
} else if (2 <= c.length && c.length <= 3) {
this.innerText = c.substring(0, 1).toUpperCase();
}
});
});
} else {
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = this.innerText;
if (c.length == 1) {
this.innerText = c.toLowerCase();
} else if (2 <= c.length && c.length <= 3) {
this.innerText = c.substring(0, 1).toLowerCase();
}
});
});
}
BL.double = 0;
BL.once = 1;
BL.Mov = 1;
}
e.preventDefault();
return false;
});
$("#" + aK).on('touchend',
function (event) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
CAPtap();
BL.Mov = 1;
}
});
event = 7;
}
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
if (aK != "kb_c_D" && aK != "kb_c_SPACE" && aK != "kb_c_CLOSE" && aK != "kb_c_CAP" && aK != "kb_c_N") {
if (!R.caps && R.shift) {
setTimeout(function () {
$("#char_keyboard").contents("div").filter(function () {
$(this).contents("div").filter(function () {
var c = $(this).text();
if (c.length == 1) {
this.innerText = c.toLowerCase();
} else if (2 <= c.length && c.length <= 3) {
this.innerText = c.substring(0, 1).toLowerCase();
}
});
});
},
100);
if ((R.orientation() == 90) || (R.orientation() == -90)) {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift_H.svg) ",
backgroundSize: "100% 100%"
});
} else {
$("#kb_c_CAP").css({
background: "url(" + BL.SV + "/shift.svg) ",
backgroundSize: "100% 100%"
});
}
};
R.shift = false;
}
if (aK == "kb_c_N") {
setTimeout(function () {
$("#char_keyboard").css("display", "none");
$("#number_keyboard").css("display", "block");
$("#symble_keyboard").css("display", "none");
$("#purenumber_keyboard").css("display", "none");
justic3();
},
80)
}
if (aK == "kb_c_CLOSE" && (R.settings.pressStatus == 1 || R.settings.pressStatus == 2)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
100);
}
if (R.settings.chaosMode == 2 && event == 0 && BL.Mov == 0) {
var aN = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm'];
aN = R.gC(aN, R.caps);
var au = $("#char_keyboard")[0].querySelectorAll(".row1pwd,.row2pwd,.row3pwdb");
setTimeout(function () {
for (var j = 0; j < au.length; j++) {
au[j].innerHTML = aN[j];
}
},
100)
}
BL.Mov = 1;
}
});
$("#" + aK).on("touchstart",
function (e) {
BL.WH = $(window).height();
var key = this.innerText;
if (aK != "kb_c_D") {
if (aK == "kb_c_SPACE") {
return;
} else if (aK == "kb_c_CLOSE" && BL.double == 0) {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/123_2.svg");
};
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
$(aY).removeClass("pwdkeyboard").addClass("pwdkeyboardout");
document.querySelector(aY).addEventListener("webkitAnimationEnd", R.cf, false);
document.querySelector(aY).addEventListener("animationEnd", R.cf, false);
event = 1;
setTimeout(function () {
PH.s_n();
PH.add++;
PH.cs = 1;
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
},
80)
}
e.preventDefault();
}
});
}
if (oq.test(aK)) {
function del3() {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
setTimeout(function () {
var url = BL.SV + "/quanDEL.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$("#kb_n_D").css({
backgroundImage: 'url(' + BL.SV + '/quanDEL.svg' + ')',
backgroundSize: "100% 100%"
});
$("#kb_n_D>div").css({
backgroundImage: 'url(' + BL.SV + '/DEL.svg' + ')',
backgroundSize: "100% 100%"
});
}
},
80);
}
clearInterval(dv);
for (var bG = 0; bG < av.length; bG++) {
clearInterval(av[bG]);
}
av = [];
var input = document.getElementById(R.settings.aQ.settings.id);
var dO = "";
if (R.settings.hasMap == 1) {
for (var i = 0; i < R.settings.aQ.bu.length; i++) {
dO += "*";
};
} else {
for (var i = 0; i < R.settings.aQ.bg; i++) {
dO += "*";
};
}
if (R.settings.aQ.settings.displayMode == 1) {
var fq = R.settings.aQ;
if (R.settings.aQ.bg == 0) {
input.value = "";
} else {
input.value = (fq.asm + fq.bsm + fq.csm + fq.dsm + fq.esm + fq.fsm + fq.gsm + fq.hsm + fq.ism + fq.jsm + fq.ksm + fq.lsm + fq.msm + fq.nsm + fq.osm + fq.psm + fq.qsm + fq.rsm + fq.ssm + fq.tsm + fq.usm + fq.vsm + fq.wsm + fq.xsm + fq.ysm + fq.zsm + fq.aasm + fq.bbsm + fq.ccsm + fq.ddsm).substring(0, fq.bg)
}
} else {
input.value = dO;
};
BL.double = 0;
};
if ((aK != "kb_n_D") && (aK != "kb_n_CLOSE")) {
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
var key = this.innerText;
clearTimeout(BL.FD);
BL.once = 0;
BL.Mov = 0;
BL.key2 = $(this).attr("data-name");
BL.double = 1;
$(".fd").eq(0).remove();
if (/_SPACE/i.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
var url = BL.SV + "/space_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#number_keyboard div").removeClass("anxia");
$("#kb_n_SPACE").css({
backgroundImage: 'url(' + BL.SV + '/space_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
} else if (/_C/.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/123_2.svg");
}
} else if (/_S/.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/quanDEL_2.svg");
}
} else {
if (R.settings.pressStatus == 1) {
var cc = $(this);
var Html = $(this).html();
cc.append($("<div class='fd'></div>"));
cc.css({
position: "relative"
});
if (cc.hasClass("rowleft")) {
var img = new Image;
img.src = BL.SV + '/dianji_left.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%",
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
left: 0,
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px"
});
}
} else if (cc.hasClass("rowright")) {
var img = new Image;
img.src = BL.SV + '/dianji_right.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
backgroundSize: "100% 100%",
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
right: 0,
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px"
});
}
} else {
if ($("#" + aK).hasClass("row3pwdd")) {
var img = new Image;
img.src = BL.SV + '/dianji.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
position: "absolute",
width: "150%",
height: aE * 0.4 + "px",
left: "-25%",
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px",
backgroundSize: "100% 100%"
});
}
} else {
var img = new Image;
img.src = BL.SV + '/dianji.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
left: "-20%",
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px",
backgroundSize: "100% 100%"
});
}
}
}
} else if (R.settings.pressStatus == 2) {
if ($("#" + aK).hasClass("row3pwdd")) {
var url = BL.SV + "/quanDEL.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#number_keyboard div").removeClass("anxia");
$("#number_keyboard div").removeClass("anxia5");
$("#" + aK).addClass("anxia5");
$("#" + aK).css({
backgroundImage: 'url(' + BL.SV + '/quanDEL.svg' + ')',
backgroundSize: "100% 100%"
});
}
} else {
var url = BL.SV + "/anjian_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#number_keyboard div").removeClass("anxia");
$("#number_keyboard div").removeClass("anxia5");
$("#" + aK).addClass("anxia");
$("#" + aK).css({
backgroundImage: 'url(' + BL.SV + '/anjian_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
}
}
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
e.preventDefault();
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH + 1 && BL.Mov == 0) {
if (/_SPACE/i.test(aK)) {
setTimeout(function () {
call(BL.SV + "/space.svg");
},
100);
} else if (/_C/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
80);
} else if (/_S/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/quanDEL.svg");
},
80);
} else {
if ($("#" + aK).hasClass("row3pwdd")) {
call(BL.SV + "/quanDEL_2.svg");
} else {
call(BL.SV + "/anjian.svg");
}
BL.FD = setTimeout(function () {
$(".fd").remove();
},
100);
};
if (e.target.className.indexOf("chg") > -1) {
if (R.settings.chaosMode == 2 && event == 0) {
var aN = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
aN = R.gC(aN);
var bY = [];
var au = $("#number_keyboard > .row1")[0].querySelectorAll(".row1pwd");
setTimeout(function () {
for (var j = 0,
i = 0; j < au.length; j++) {
if (au[j].id == "kb_n_CLOSE" || au[j].id == "kb_n_D") continue;
i++;
bY.push(au[j]);
}
for (var j = 0; j < bY.length; j++) {
bY[j].innerHTML = aN[j];
}
},
100)
}
};
BL.once = 1;
BL.Mov = 1;
BL.double = 0;
e.preventDefault();
}
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
BL.double = 0;
if (/_SPACE/i.test(aK)) {
setTimeout(function () {
call(BL.SV + "/space.svg");
},
100);
} else if (/_C/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
80);
} else if (/_S/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/quanDEL.svg");
},
80);
} else {
setTimeout(function () {
if ($("#" + aK).hasClass("row3pwdd")) {
call(BL.SV + "/quanDEL_2.svg");
} else {
call(BL.SV + "/anjian.svg");
}
},
100);
BL.FD = setTimeout(function () {
$(".fd").remove();
},
100);
};
e.preventDefault();
}
});
} else if (aK == "kb_n_D") {
var key = this.innerText;
var event = 2;
var dv;
var av = [];
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
BL.double = 1;
BL.once = 0;
BL.Mov = 0;
BL.key2 = $(this).attr("data-name");
var key = this.innerText;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#number_keyboard div").removeClass("anxia");
var url = BL.SV + "/quanDEL_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$("#kb_n_D").css({
backgroundImage: 'url(' + BL.SV + '/quanDEL_2.svg' + ')',
backgroundSize: "100% 100%"
});
$("#kb_n_D>div").css({
backgroundImage: 'url(' + BL.SV + '/DEL_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
fr = new Date().getTime();
dv = window.setInterval(function () {
eO = new Date().getTime();
var x = eO - fr;
if (x > 500) {
var input = document.getElementById(R.settings.aQ.settings.id);
var fK = setInterval(function () {
if (R.settings.hasMap == 1) {
R.settings.aQ.bu = R.settings.aQ.bu.substr(0, R.settings.aQ.bu.length - 1);
}
R.settings.aQ.bg -= 1;
if (R.settings.aQ.bg < 0) R.settings.aQ.bg = 0;
if (R.settings.aQ.bg == 0) R.settings.aQ.asm = [""];
if (R.settings.aQ.bg == 1) R.settings.aQ.bsm = [""];
if (R.settings.aQ.bg == 2) R.settings.aQ.csm = [""];
if (R.settings.aQ.bg == 3) R.settings.aQ.dsm = [""];
if (R.settings.aQ.bg == 4) R.settings.aQ.esm = [""];
if (R.settings.aQ.bg == 5) R.settings.aQ.fsm = [""];
if (R.settings.aQ.bg == 6) R.settings.aQ.gsm = [""];
if (R.settings.aQ.bg == 7) R.settings.aQ.hsm = [""];
if (R.settings.aQ.bg == 8) R.settings.aQ.ism = [""];
if (R.settings.aQ.bg == 9) R.settings.aQ.jsm = [""];
if (R.settings.aQ.bg == 10) R.settings.aQ.ksm = [""];
if (R.settings.aQ.bg == 11) R.settings.aQ.lsm = [""];
if (R.settings.aQ.bg == 12) R.settings.aQ.msm = [""];
if (R.settings.aQ.bg == 13) R.settings.aQ.nsm = [""];
if (R.settings.aQ.bg == 14) R.settings.aQ.osm = [""];
if (R.settings.aQ.bg == 15) R.settings.aQ.psm = [""];
if (R.settings.aQ.bg == 16) R.settings.aQ.qsm = [""];
if (R.settings.aQ.bg == 17) R.settings.aQ.rsm = [""];
if (R.settings.aQ.bg == 18) R.settings.aQ.ssm = [""];
if (R.settings.aQ.bg == 19) R.settings.aQ.tsm = [""];
if (R.settings.aQ.bg == 20) R.settings.aQ.usm = [""];
if (R.settings.aQ.bg == 21) R.settings.aQ.vsm = [""];
if (R.settings.aQ.bg == 22) R.settings.aQ.wsm = [""];
if (R.settings.aQ.bg == 23) R.settings.aQ.xsm = [""];
if (R.settings.aQ.bg == 24) R.settings.aQ.ysm = [""];
if (R.settings.aQ.bg == 25) R.settings.aQ.zsm = [""];
if (R.settings.aQ.bg == 26) R.settings.aQ.aasm = [""];
if (R.settings.aQ.bg == 27) R.settings.aQ.bbsm = [""];
if (R.settings.aQ.bg == 28) R.settings.aQ.ccsm = [""];
if (R.settings.aQ.bg == 29) R.settings.aQ.ddsm = [""];
input.value = input.value.substr(0, input.value.length - 1);
if (R.settings.aQ.settings.jump == 1) {
R.settings.aQ.settings.del(R.settings.aQ.bg);
}
},
50);
av.push(fK);
clearInterval(dv);
}
},
1);
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
e.preventDefault();
return false;
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH) {
del3();
}
e.preventDefault();
return false;
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
del3();
BL.Mov = 1;
e.preventDefault();
return false;
}
});
};
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
if (aK == "kb_n_CLOSE" && (R.settings.pressStatus == 1 || R.settings.pressStatus == 2)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
80);
};
if (aK == "kb_n_S") {
setTimeout(function () {
$("#char_keyboard").css("display", "none");
$("#number_keyboard").css("display", "none");
$("#symble_keyboard").css("display", "block");
$("#purenumber_keyboard").css("display", "none");
justic3();
},
80);
};
if (aK == "kb_n_C") {
setTimeout(function () {
$("#char_keyboard").css("display", "block");
$("#number_keyboard").css("display", "none");
$("#symble_keyboard").css("display", "none");
$("#purenumber_keyboard").css("display", "none");
justic3();
},
80);
};
if (e.target.className.indexOf("chg") > -1) {
if (R.settings.chaosMode == 2 && event == 0) {
var aN = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
aN = R.gC(aN);
var bY = [];
var au = $("#number_keyboard > .row1")[0].querySelectorAll(".row1pwd");
setTimeout(function () {
for (var j = 0,
i = 0; j < au.length; j++) {
if (au[j].id == "kb_n_CLOSE" || au[j].id == "kb_n_D") continue;
i++;
bY.push(au[j]);
}
for (var j = 0; j < bY.length; j++) {
bY[j].innerHTML = aN[j];
}
},
100)
}
};
BL.Mov = 1;
}
});
$("#" + aK).on("touchstart",
function (e) {
BL.WH = $(window).height();
var key = this.innerText;
if (aK == "kb_n_SPACE") {
return;
} else if (aK == "kb_n_D") {
event = 2;
} else if (aK == "kb_n_CLOSE" && BL.double == 0) {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/123_2.svg");
};
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
$(aY).removeClass("pwdkeyboard").addClass("pwdkeyboardout");
document.querySelector(aY).addEventListener("webkitAnimationEnd", R.cf, false);
document.querySelector(aY).addEventListener("animationEnd", R.cf, false);
event = 1;
setTimeout(function () {
PH.s_n();
PH.add++;
PH.cs = 1;
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
},
80)
} else if (aK == "kb_n_S") {
event = 6;
} else if (aK == "kb_n_C") {
event = 5;
} else { }
e.preventDefault();
});
}
if (nV.test(aK)) {
function del4() {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
setTimeout(function () {
var url = BL.SV + "/quanDEL.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$("#kb_s_D").css({
backgroundImage: 'url(' + BL.SV + '/quanDEL.svg' + ')',
backgroundSize: "100% 100%"
});
$("#kb_s_D>div").css({
backgroundImage: 'url(' + BL.SV + '/DEL.svg' + ')',
backgroundSize: "100% 100%"
});
}
},
80);
}
clearInterval(dv);
for (var bG = 0; bG < av.length; bG++) {
clearInterval(av[bG]);
}
av = [];
var input = document.getElementById(R.settings.aQ.settings.id);
var dO = "";
if (R.settings.hasMap == 1) {
for (var i = 0; i < R.settings.aQ.bu.length; i++) {
dO += "*";
};
} else {
for (var i = 0; i < R.settings.aQ.bg; i++) {
dO += "*";
};
}
if (R.settings.aQ.settings.displayMode == 1) {
var fq = R.settings.aQ;
if (R.settings.aQ.bg == 0) {
input.value = "";
} else {
input.value = (fq.asm + fq.bsm + fq.csm + fq.dsm + fq.esm + fq.fsm + fq.gsm + fq.hsm + fq.ism + fq.jsm + fq.ksm + fq.lsm + fq.msm + fq.nsm + fq.osm + fq.psm + fq.qsm + fq.rsm + fq.ssm + fq.tsm + fq.usm + fq.vsm + fq.wsm + fq.xsm + fq.ysm + fq.zsm + fq.aasm + fq.bbsm + fq.ccsm + fq.ddsm).substring(0, fq.bg)
}
} else {
input.value = dO;
};
BL.double = 0;
};
if ((aK != "kb_s_D") && (aK != "kb_s_CLOSE")) {
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
var key = this.innerText;
clearTimeout(BL.FD);
BL.once = 0;
BL.Mov = 0;
BL.key2 = $(this).attr("data-name");
BL.double = 1;
$(".fd").remove();
if (/_SPACE/i.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
var url = BL.SV + "/space_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#symble_keyboard div").removeClass("anxia");
$("#symble_keyboard div").removeClass("anxia5");
$("#kb_s_SPACE").css({
backgroundImage: 'url(' + BL.SV + '/space_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
} else if (/_C/.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/123_2.svg");
}
} else if (/_N/.test(aK)) {
event = 7;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/quanDEL_2.svg");
}
} else {
if (R.settings.pressStatus == 1) {
var cc = $(this);
var Html = $(this).html();
cc.append($("<div class='fd'></div>"));
cc.css({
position: "relative"
});
if (cc.hasClass("rowleft")) {
var img = new Image;
img.src = BL.SV + '/dianji_left.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
left: 0,
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px",
backgroundSize: "100% 100%"
});
}
} else if (cc.hasClass("rowright")) {
var img = new Image;
img.src = BL.SV + '/dianji_right.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
right: 0,
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px",
backgroundSize: "100% 100%"
});
}
} else {
if ($("#" + aK).hasClass("row3pwdd")) {
var img = new Image;
img.src = BL.SV + '/dianji.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
position: "absolute",
width: "150%",
height: aE * 0.4 + "px",
left: "-25%",
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px",
backgroundSize: "100% 100%"
});
}
} else {
var img = new Image;
img.src = BL.SV + '/dianji.svg';
img.onload = function () {
$(".fd").eq(0).html(Html);
$(".fd").eq(0).css({
backgroundImage: 'url(' + img.src + ')',
position: "absolute",
width: "140%",
height: aE * 0.4 + "px",
left: "-20%",
bottom: "0px",
textAlign: "center",
fontSize: "1.5em",
zIndex: "999",
lineHeight: aE * 0.19 + "px",
backgroundSize: "100% 100%"
});
}
}
}
} else if (R.settings.pressStatus == 2) {
if ($("#" + aK).hasClass("row3pwdd")) {
var url = BL.SV + "/quanDEL.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#symble_keyboard div").removeClass("anxia");
$("#symble_keyboard div").removeClass("anxia5");
$("#" + aK).addClass("anxia5");
$("#" + aK).css({
backgroundImage: 'url(' + BL.SV + '/quanDEL.svg' + ')',
backgroundSize: "100% 100%"
});
}
} else {
var url = BL.SV + "/anjian_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#symble_keyboard div").removeClass("anxia");
$("#symble_keyboard div").removeClass("anxia5");
$("#" + aK).addClass("anxia");
$("#" + aK).css({
backgroundImage: 'url(' + BL.SV + '/anjian_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
}
}
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
e.preventDefault();
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH + 1 && BL.Mov == 0) {
if (/_SPACE/i.test(aK)) {
setTimeout(function () {
call(BL.SV + "/space.svg");
},
100);
} else if (/_C/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
100);
} else if (/_N/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/quanDEL.svg");
},
100);
} else {
if ($("#" + aK).hasClass("row3pwdd")) {
call(BL.SV + "/quanDEL_2.svg");
} else {
call(BL.SV + "/anjian.svg");
}
BL.FD = setTimeout(function () {
$(".fd").remove();
},
100);
};
BL.once = 1;
BL.Mov = 1;
BL.double = 0;
e.preventDefault();
}
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
BL.double = 0;
if (/_SPACE/i.test(aK)) {
setTimeout(function () {
call(BL.SV + "/space.svg");
},
100);
} else if (/_C/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
100);
} else if (/_N/.test(aK)) {
setTimeout(function () {
call(BL.SV + "/quanDEL.svg");
},
100);
} else {
setTimeout(function () {
if ($("#" + aK).hasClass("row3pwdd")) {
call(BL.SV + "/quanDEL_2.svg");
} else {
call(BL.SV + "/anjian.svg");
}
},
100);
BL.FD = setTimeout(function () {
$(".fd").remove();
},
100);
};
e.preventDefault();
}
});
} else if (aK == "kb_s_D") {
var event = 2;
var dv;
var av = [];
$("#" + aK).on("touchstart",
function (e) {
if (BL.double == 0) {
BL.double = 1;
BL.once = 0;
BL.Mov = 0;
BL.key2 = $(this).attr("data-name");
var key = this.innerText;
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
$(".anxia").css({
background: "url(" + BL.SV + "/anjian.svg) ",
backgroundSize: "100% 100%"
});
$(".anxia5").css({
background: "url(" + BL.SV + "/quanDEL_2.svg) ",
backgroundSize: "100% 100%"
});
$("#symble_keyboard div").removeClass("anxia");
$("#symble_keyboard div").removeClass("anxia5");
var url = BL.SV + "/quanDEL_2.svg";
var img = new Image;
img.src = url;
img.onload = function () {
$("#kb_s_D").css({
backgroundImage: 'url(' + BL.SV + '/quanDEL_2.svg' + ')',
backgroundSize: "100% 100%"
});
$("#kb_s_D>div").css({
backgroundImage: 'url(' + BL.SV + '/DEL_2.svg' + ')',
backgroundSize: "100% 100%"
});
}
}
fr = new Date().getTime();
dv = window.setInterval(function () {
eO = new Date().getTime();
var x = eO - fr;
if (x > 500) {
var input = document.getElementById(R.settings.aQ.settings.id);
var fK = setInterval(function () {
if (R.settings.hasMap == 1) {
R.settings.aQ.bu = R.settings.aQ.bu.substr(0, R.settings.aQ.bu.length - 1);
}
R.settings.aQ.bg -= 1;
if (R.settings.aQ.bg < 0) R.settings.aQ.bg = 0;
if (R.settings.aQ.bg == 0) R.settings.aQ.asm = [""];
if (R.settings.aQ.bg == 1) R.settings.aQ.bsm = [""];
if (R.settings.aQ.bg == 2) R.settings.aQ.csm = [""];
if (R.settings.aQ.bg == 3) R.settings.aQ.dsm = [""];
if (R.settings.aQ.bg == 4) R.settings.aQ.esm = [""];
if (R.settings.aQ.bg == 5) R.settings.aQ.fsm = [""];
if (R.settings.aQ.bg == 6) R.settings.aQ.gsm = [""];
if (R.settings.aQ.bg == 7) R.settings.aQ.hsm = [""];
if (R.settings.aQ.bg == 8) R.settings.aQ.ism = [""];
if (R.settings.aQ.bg == 9) R.settings.aQ.jsm = [""];
if (R.settings.aQ.bg == 10) R.settings.aQ.ksm = [""];
if (R.settings.aQ.bg == 11) R.settings.aQ.lsm = [""];
if (R.settings.aQ.bg == 12) R.settings.aQ.msm = [""];
if (R.settings.aQ.bg == 13) R.settings.aQ.nsm = [""];
if (R.settings.aQ.bg == 14) R.settings.aQ.osm = [""];
if (R.settings.aQ.bg == 15) R.settings.aQ.psm = [""];
if (R.settings.aQ.bg == 16) R.settings.aQ.qsm = [""];
if (R.settings.aQ.bg == 17) R.settings.aQ.rsm = [""];
if (R.settings.aQ.bg == 18) R.settings.aQ.ssm = [""];
if (R.settings.aQ.bg == 19) R.settings.aQ.tsm = [""];
if (R.settings.aQ.bg == 20) R.settings.aQ.usm = [""];
if (R.settings.aQ.bg == 21) R.settings.aQ.vsm = [""];
if (R.settings.aQ.bg == 22) R.settings.aQ.wsm = [""];
if (R.settings.aQ.bg == 23) R.settings.aQ.xsm = [""];
if (R.settings.aQ.bg == 24) R.settings.aQ.ysm = [""];
if (R.settings.aQ.bg == 25) R.settings.aQ.zsm = [""];
if (R.settings.aQ.bg == 26) R.settings.aQ.aasm = [""];
if (R.settings.aQ.bg == 27) R.settings.aQ.bbsm = [""];
if (R.settings.aQ.bg == 28) R.settings.aQ.ccsm = [""];
if (R.settings.aQ.bg == 29) R.settings.aQ.ddsm = [""];
input.value = input.value.substr(0, input.value.length - 1);
if (R.settings.aQ.settings.jump == 1) {
R.settings.aQ.settings.del(R.settings.aQ.bg);
}
},
50);
av.push(fK);
clearInterval(dv);
}
},
1);
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
e.preventDefault();
return false;
}
});
$("#" + aK).on("touchmove",
function (e) {
var MH = e.originalEvent.changedTouches[0].clientY;
if (BL.WH <= MH + 1) {
del4();
e.preventDefault();
return false;
}
});
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
del4();
BL.Mov = 1;
e.preventDefault();
return false;
}
});
};
$("#" + aK).on("touchend",
function (e) {
if (BL.key2 == $(this).attr("data-name") && BL.Mov == 0) {
if (aK == "kb_s_CLOSE" && (R.settings.pressStatus == 1 || R.settings.pressStatus == 2)) {
setTimeout(function () {
call(BL.SV + "/123.svg");
},
100);
};
if (aK == "kb_s_N") {
setTimeout(function () {
$("#char_keyboard").css("display", "none");
$("#number_keyboard").css("display", "block");
$("#symble_keyboard").css("display", "none");
$("#purenumber_keyboard").css("display", "none");
justic3();
},
80);
};
if (aK == "kb_s_C") {
setTimeout(function () {
$("#char_keyboard").css("display", "block");
$("#number_keyboard").css("display", "none");
$("#symble_keyboard").css("display", "none");
$("#purenumber_keyboard").css("display", "none");
justic3();
},
80);
}
BL.Mov = 1;
}
});
$("#" + aK).on("touchstart",
function (e) {
BL.WH = $(window).height();
var key = this.innerText;
if (aK == "kb_s_SPACE") {
return;
} else if (aK == "kb_s_D") {
event = 2;
} else if (aK == "kb_s_CLOSE" && BL.double == 0) {
if (R.settings.pressStatus == 1 || R.settings.pressStatus == 2) {
call(BL.SV + "/123_2.svg");
};
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
$(aY).removeClass("pwdkeyboard").addClass("pwdkeyboardout");
document.querySelector(aY).addEventListener("webkitAnimationEnd", R.cf, false);
document.querySelector(aY).addEventListener("animationEnd", R.cf, false);
event = 1;
setTimeout(function () {
PH.s_n();
PH.add++;
PH.cs = 1;
R.settings.aQ.cY(event, key.charCodeAt() ^ R.settings.odd);
},
80)
} else if (aK == "kb_s_N") {
event = 4;
} else if (aK == "kb_s_C") {
event = 5;
} else { }
e.preventDefault();
});
}
}
};
$(aY).contents("div").filter(function () {
if (pe.test(this.id)) {
$("#" + this.id).contents("div").filter(function () {
if (nQ.test(this.className)) {
$(this).contents("div").filter(function () {
kZ(this.id);
});
} else {
kZ(this.id);
}
});
}
});
$("div").on("touchstart", ".fd",
function (e) {
e.stopPropagation();
});
$(".de2").focus(function () {
for (var bG = 0; bG < M.length; bG++) {
window.clearInterval(M[bG]);
};
for (var bG = 0; bG < MM.length; bG++) {
window.clearInterval(MM[bG]);
};
for (var bG = 0; bG < PH.L.length; bG++) {
window.clearInterval(PH.L[bG]);
};
kJ = mI = undefined;
miss = "";
BL.sh = 1;
clearTimeout(M3);
clearTimeout(BL.ad);
BL.ad = setTimeout(function () {
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0,
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
BL.sh = 0;
},
400);
$("#testkbid").removeClass("pwdkeyboard").addClass("pwdkeyboardout2").hide();
if (miss == "") {
miss = setInterval(function () {
$("#testkbid").removeClass("pwdkeyboard").addClass("pwdkeyboardout2").hide();
},
20);
PH.L.push(miss);
};
if (BL.olo == 1) {
event = 1;
R.settings.aQ.cY(event, '0'.charCodeAt() ^ R.settings.odd);
if (PH.Id != "" && ($("#testkbid").hasClass("pwdkeyboardout") || $("#testkbid").hasClass("pwdkeyboardout2"))) {
if (PH.add == 1) {
PH.s_n();
PH.add++;
}
PH.cs = 1;
};
}
});
$(document).on("touchstart",
function (e) {
var hO = $(aY);
var input = $("#" + R.settings.id);
if (hO.has(e.target).length === 0) {
if (e.target.className.indexOf("default") > -1 || e.target.className == "fd" || e.target.className.indexOf("de2") > -1) {
$(".fd").remove();
return;
} else {
for (var bG = 0; bG < PH.L.length; bG++) {
window.clearInterval(PH.L[bG]);
};
miss = "";
Show = 1;
clearTimeout(Show2);
Show2 = setTimeout(function () {
Show = 0;
},
350);
clearTimeout(Hid);
Hid = setTimeout(function () {
for (var bG = 0; bG < M.length; bG++) {
window.clearInterval(M[bG]);
};
for (var bG = 0; bG < MM.length; bG++) {
window.clearInterval(MM[bG]);
};
setTimeout(function () {
if (PH.Id != "" && ($("#testkbid").hasClass("pwdkeyboardout") || $("#testkbid").hasClass("pwdkeyboardout2"))) {
if (PH.add == 1) {
PH.s_n();
PH.add++;
} else if (PH.add == 2) {
var fq;
PH.pm = PH.arrId.indexOf(PH.Id);
fq = eval("(" + PH.arrPGD[PH.pm] + ")");
if (fq.settings.blur != "") {
fq.settings.blur()
};
}
PH.cs = 1;
};
BL.kb = setInterval(function () {
var kb = document.getElementById("testkbid");
if (kb.className == "pwdkeyboard" && $("#testkbid").css("display") == 'none') {
$("#testkbid").css({
display: "block"
});
}
},
20);
T.push(BL.kb);
setTimeout(function () {
for (var i = 0; i < T.length; i++) {
window.clearInterval(T[i]);
};
},
2000);
},
100);
var vN;
clearTimeout(vN);
var b = hO.css("display") == "block" ? 1 : 0;
if (BL.lol == 0 && Tim == 0 && b && e.target.className.indexOf("de2") == -1) {
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0 + "px",
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0 + "px",
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
hO.removeClass("pwdkeyboard").addClass("pwdkeyboardout");
document.querySelector(aY).addEventListener("webkitAnimationEnd", R.cf, false);
document.querySelector(aY).addEventListener("animationEnd", R.cf, false);
event = 1;
R.settings.aQ.cY(event, '0'.charCodeAt() ^ R.settings.odd);
var fq;
PH.pm = PH.arrId.indexOf(PH.Id);
$("#" + PH.Id).attr('placeholder', PH.arrPlace[PH.pm]);
Tim = 1;
vN = setTimeout(function () {
Tim = 0
},
300);
};
},
400)
}
};
});
window.addEventListener("orientationchange",
function () {
$(".fd").hide();
var Ah = lA ? 300 : 0;
if (/ OPR/i.test(u) || / OPiOS/i.test(u) || /MicroMessenger/i.test(u)) {
R.gg = document.activeElement;
if (R.gg != undefined) {
R.gg.blur();
setTimeout(function () {
if (R.gg != undefined) {
R.gg = undefined;
}
},
300);
}
};
var ct;
if ($(aY).is(':visible')) {
if ($("#char_keyboard").is(":hidden")) {
ct = 1;
} else {
ct = 0;
}
} else {
ct = 2;
};
$(aY).addClass("pwdkeyboardout2").hide();
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0 + "px",
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0 + "px",
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
$(window).one("resize",
function () {
setTimeout(function () {
kM();
eW = $(window).height();
if ($("body").height() < $(window).height()) {
$("body").css({
height: "100%"
});
$("html").css({
height: "100%"
});
} else {
$("body").css({
height: "auto"
});
$("html").css({
height: "auto"
});
}
},
200);
if (ct != 2) {
setTimeout(function () {
if (ct == 1) {
BL.KK = aE;
} else {
BL.KK = aE;
};
R.show(ct);
},
300);
}
});
});
this.aV = true;
}
};
keyBoard.prototype.gC = function (data, hu) {
;;
var lm = data.length;;;
var try1 = new Array();;
for (var i = 0; i < lm; i++) {
;
try1[i] = i;
};;
var try2 = new Array();;
for (var i = 0; i < lm; i++) {
;
try2[i] = try1.splice(Math.floor(Math.random() * try1.length), 1);
};;
var try3 = new Array();;
for (var i = 0; i < lm; i++) {
if (hu) {
;
try3[i] = data[try2[i]].toUpperCase();
} else {
try3[i] = data[try2[i]].toLowerCase();
}
};
return try3;
};
keyBoard.prototype.yp = function () {
var h1 = (document.documentElement.clientHeight);
var h2 = (window.innerHeight);
alert(document.documentElement.clientHeight);
alert(window.innerHeight);
alert(h1);
alert(h2);
if (document.documentElement.clientHeight > window.innerHeight) return document.documentElement.clientHeight;
else return window.innerHeight;
};
var kJ = mI = null;
keyBoard.prototype.show = function (ct) {
var R = this;
var aY = "#" + this.settings.id;
if ((R.settings.chaosMode == 1 || R.settings.chaosMode == 2) && ct == 0) {
var aN = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm'];
aN = R.gC(aN);
var au = $("#char_keyboard")[0].querySelectorAll(".row1pwd,.row2pwd,.row3pwdb");
if (R.caps || R.shift) {
for (var j = 0; j < au.length; j++) {
au[j].innerHTML = aN[j].toUpperCase();
}
} else {
for (var j = 0; j < au.length; j++) {
au[j].innerHTML = aN[j];
}
}
}
if ((R.settings.chaosMode == 1 || R.settings.chaosMode == 2) && ct == 1) {
var aN = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
aN = R.gC(aN);
var au = $("#purenumber_keyboard")[0].querySelectorAll(".pwd");
var bY = [];
for (var j = 0,
i = 0; j < au.length; j++) {
if (au[j].id == "kb_p_CLOSE" || au[j].id == "kb_p_D") continue;
i++;
bY.push(au[j]);
}
for (var j = 0; j < bY.length; j++) {
bY[j].innerHTML = aN[j];
}
};
$(aY).css("height", "213px");
var ii = parseInt($(aY).css("height"));
$("#purenumber_keyboard").css("height", aE);
$("#char_keyboard").css("height", aE);
$("#number_keyboard").css("height", aE);
$("#symble_keyboard").css("height", aE);
$(aY).css("height", aE);
if (BL.lol == 0) {
if (BL.sh == 0) {
kJ = setInterval(function () {
if ($(window).height() >= eW * 0.8) {
BL.T = 0;
setTimeout(function () {
var H3 = $(window).height() - $("#" + PH.Id).outerHeight() - $("#" + PH.Id).offset().top + $(document).scrollTop();
var H = BL.KK;
if (H3 < H) {
rD = H3 - H - 2;
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: (H3 - H - 2) + "px",
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: -H + "px",
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: H + "px",
dQ: "all 0.3s"
});
}
};
$(aY).show();
if ($(aY).hasClass("pwdkeyboardout") || $(aY).hasClass("pwdkeyboardout2")) {
$(aY).removeClass("pwdkeyboardout").removeClass("pwdkeyboardout2").addClass("pwdkeyboard");
};
R.ht();
},
100);
BL.lol = 1;
setTimeout(function () {
BL.lol = 0;
},
300);
clearInterval(kJ);
kJ == undefined;
}
},
20);
M.push(kJ);
} else {
clearTimeout(M3);
M3 = setTimeout(function () {
mI = setInterval(function () {
if ($(window).height() >= eW * 0.8) {
BL.T = 0;
setTimeout(function () {
var H3 = $(window).height() - $("#" + PH.Id).outerHeight() - $("#" + PH.Id).offset().top + $(document).scrollTop();
var H = BL.KK;
if (H3 < H) {
rD = H3 - H - 2;
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: (H3 - H - 2) + "px",
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: -H + "px",
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: H + "px",
dQ: "all 0.3s"
});
};
};
$(aY).show();
if ($(aY).hasClass("pwdkeyboardout") || $(aY).hasClass("pwdkeyboardout2")) {
$(aY).removeClass("pwdkeyboardout").removeClass("pwdkeyboardout2").addClass("pwdkeyboard");
};
R.ht();
},
100);
BL.lol = 1;
setTimeout(function () {
BL.lol = 0;
},
300);
clearInterval(mI);
mI == undefined;
}
},
20);
MM.push(mI);
},
300);
}
}
};
keyBoard.prototype.hide = function (e) {
BL.double = 0;
var R = this;
var aY = "#" + this.settings.id;
for (var bG = 0; bG < M.length; bG++) {
window.clearInterval(M[bG]);
};
for (var bG = 0; bG < MM.length; bG++) {
window.clearInterval(MM[bG]);
};
for (var bG = 0; bG < PH.L.length; bG++) {
window.clearInterval(PH.L[bG]);
};
$(aY).removeClass("pwdkeyboard").addClass("pwdkeyboardout2").hide();
if (BL.fixed == "") {
$("body").css({
position: "relative",
left: 0,
top: 0 + "px",
dQ: "all 0.3s"
});
} else {
$("body").css({
position: "relative",
left: 0,
top: 0 + "px",
dQ: "all 0.3s"
});
$("#" + BL.fixed).css({
bottom: 0 + "px",
dQ: "all 0.3s"
});
};
if (BL.olo == 1) {
event = 1;
R.settings.aQ.cY(event, '0'.charCodeAt() ^ R.settings.odd);
if (PH.Id != "" && ($("#testkbid").hasClass("pwdkeyboardout") || $("#testkbid").hasClass("pwdkeyboardout2"))) {
if (PH.add == 1) {
PH.s_n();
PH.add++;
}
PH.cs = 1;
};
}
return false;
};
function passGuard(options) {
this.settings = {
"id": "",
"maxLength": 12,
"regExp1": "[0-9]",
"displayMode": 0,
"rsaPublicKey": "",
"mappurl": "",
"mC": "",
"enterEvent": "",
"keyBoard": {},
"mappingArray": []
};
this.bg = 0;
this.bu = "";
this.asm = [""];
this.bsm = [""];
this.csm = [""];
this.dsm = [""];
this.esm = [""];
this.fsm = [""];
this.gsm = [""];
this.hsm = [""];
this.ism = [""];
this.jsm = [""];
this.ksm = [""];
this.lsm = [""];
this.msm = [""];
this.nsm = [""];
this.osm = [""];
this.psm = [""];
this.qsm = [""];
this.rsm = [""];
this.ssm = [""];
this.tsm = [""];
this.usm = [""];
this.vsm = [""];
this.wsm = [""];
this.xsm = [""];
this.ysm = [""];
this.zsm = [""];
this.aasm = [""];
this.bbsm = [""];
this.ccsm = [""];
this.ddsm = [""];
if (options != undefined) {
this.settings = options;
}
};
passGuard.ep = [];
passGuard.gA = [];
passGuard.ib = undefined;
passGuard.prototype.generate = function (id, keyBoard, pgd, ct) {
PH.arrPlace.push($("#" + id).attr("placeholder"));
this.settings.keyBoard = keyBoard;
this.settings.id = id;
PH.arrId.push(id);
PH.arrPGD.push(pgd);
var bA = document.getElementById(id);
passGuard.gA.push(bA);
var aQ = this;
var oJ = null;
var hu = false;
var flag2 = false;
PH.s_n = function () {
var fq;
PH.pm = PH.arrId.indexOf(PH.Id);
fq = eval("(" + PH.arrPGD[PH.pm] + ")");
if (fq.bg == 0) {
$("#" + PH.Id).attr('placeholder', PH.arrPlace[PH.pm]);
}
if (PH.cs == 0) {
if (fq.settings.blur != undefined) {
fq.settings.blur()
};
if (fq.settings.callBack == "") { } else {
var pz = new RegExp(fq.settings.regExp2);
if (fq.asm == undefined) {
fq.settings.errorCallBack();
} else if (pz.test((fq.asm + fq.bsm + fq.csm + fq.dsm + fq.esm + fq.fsm + fq.gsm + fq.hsm + fq.ism + fq.jsm + fq.ksm + fq.lsm + fq.msm + fq.nsm + fq.osm + fq.psm + fq.qsm + fq.rsm + fq.ssm + fq.tsm + fq.usm + fq.vsm + fq.wsm + fq.xsm + fq.ysm + fq.zsm + fq.aasm + fq.bbsm + fq.ccsm + fq.ddsm).substring(0, fq.bg))) {
fq.settings.callBack()
} else {
fq.settings.errorCallBack()
}
}
}
};
bA.onfocus = function (e) {
var fq;
PH.pm = PH.arrId.indexOf(id);
fq = eval("(" + PH.arrPGD[PH.pm] + ")");
if (fq.settings.focus != undefined) {
fq.settings.focus()
};
this.blur();
if (Show == 0 || id != PH.Id) {
for (var bG = 0; bG < PH.L.length; bG++) {
window.clearInterval(PH.L[bG]);
};
for (var i = 0; i < T.length; i++) {
window.clearInterval(T[i]);
};
$(this).attr('placeholder', '');
PH.add = 1;
BL.olo = 1;
press2 = 1;
BL.T = 1;
clearTimeout(Hid);
if (ct == 1) {
$("#char_keyboard").hide();
$("#number_keyboard").hide();
$("#symble_keyboard").hide();
$("#purenumber_keyboard").show();
BL.KK = aE;
} else {
$("#char_keyboard").show();
$("#number_keyboard").hide();
$("#symble_keyboard").hide();
$("#purenumber_keyboard").hide();
BL.KK = aE;
};
var input = this;
for (var bG = 0; bG < passGuard.ep.length; bG++) {
window.clearInterval(passGuard.ep[bG]);
}
for (var fT = 0; fT < passGuard.gA.length; fT++) {
passGuard.gA[fT].value = passGuard.gA[fT].value.replace("|", "");
}
passGuard.ep = [];
if (keyBoard.settings.hasMap == 1) {
if (passGuard.ib == undefined) {
if (aQ.settings.mappurl == undefined || aQ.settings.mappurl == "") {
alert("无效的映射申请地址。");
return;
}
$.ajax({
url: aQ.settings.mappurl + "?" + get_time(),
type: "GET",
async: false,
success: function (bu) {
aQ.tI(bu);
}
});
}
};
oJ = setInterval(function () {
if (!document.getElementById(id)) {
return;
}
document.getElementById(id).setAttribute("placeholder", "");
if (hu) {
input.value = input.value.replace("|", "");
hu = false;
} else {
input.value = input.value + "|";
hu = true;
}
},
500);
passGuard.ep.push(oJ);
setTimeout(function () {
keyBoard.cY = aQ.cY;
if (aQ.settings.fixed == undefined) {
BL.fixed = "";
} else {
BL.fixed = aQ.settings.fixed;
}
keyBoard.settings.aQ = aQ;
keyBoard.settings.odd = 51;
keyBoard.show(ct);
if (PH.Id != "" && PH.Id != id) {
PH.s_n();
PH.cs = 0;
}
PH.cs = 0;
PH.Id = id;
e.preventDefault();
return false;
},
20)
}
}
};
var SH;
passGuard.prototype.cY = function (event, key) {
var pB = key ^ 51;
var aQ = this;
var input = document.getElementById(aQ.settings.id);
input.value = input.value.replace("|", "");
if (event == 1) {
BL.T = 0;
for (var bG = 0; bG < passGuard.ep.length; bG++) {
window.clearInterval(passGuard.ep[bG]);
}
} else if (event == 2) {
input.value = input.value.substr(0, input.value.length - 1);
if (aQ.settings.keyBoard.settings.hasMap == 1) {
aQ.bu = aQ.bu.substr(0, aQ.bu.length - 1);
}
aQ.bg -= 1;
if (aQ.bg < 0) aQ.bg = 0;
if (aQ.bg == 0) aQ.asm = [""];
if (aQ.bg == 1) aQ.bsm = [""];
if (aQ.bg == 2) aQ.csm = [""];
if (aQ.bg == 3) aQ.dsm = [""];
if (aQ.bg == 4) aQ.esm = [""];
if (aQ.bg == 5) aQ.fsm = [""];
if (aQ.bg == 6) aQ.gsm = [""];
if (aQ.bg == 7) aQ.hsm = [""];
if (aQ.bg == 8) aQ.ism = [""];
if (aQ.bg == 9) aQ.jsm = [""];
if (aQ.bg == 10) aQ.ksm = [""];
if (aQ.bg == 11) aQ.lsm = [""];
if (aQ.bg == 12) aQ.msm = [""];
if (aQ.bg == 13) aQ.nsm = [""];
if (aQ.bg == 14) aQ.osm = [""];
if (aQ.bg == 15) aQ.psm = [""];
if (aQ.bg == 16) aQ.qsm = [""];
if (aQ.bg == 17) aQ.rsm = [""];
if (aQ.bg == 18) aQ.ssm = [""];
if (aQ.bg == 19) aQ.tsm = [""];
if (aQ.bg == 20) aQ.usm = [""];
if (aQ.bg == 21) aQ.vsm = [""];
if (aQ.bg == 22) aQ.wsm = [""];
if (aQ.bg == 23) aQ.xsm = [""];
if (aQ.bg == 24) aQ.ysm = [""];
if (aQ.bg == 25) aQ.zsm = [""];
if (aQ.bg == 26) aQ.aasm = [""];
if (aQ.bg == 27) aQ.bbsm = [""];
if (aQ.bg == 28) aQ.ccsm = [""];
if (aQ.bg == 29) aQ.ddsm = [""];
if (aQ.settings.jump == 1) {
aQ.settings.del(aQ.bg);
}
} else if (event == 0) {
var ld = new RegExp(aQ.settings.regExp1);
var iC = String.fromCharCode(pB);
var wD = aQ.settings.maxLength;
var aG = input.value.length;
if (aG < wD) {
aQ.bg += 1;
if (aQ.bg == 1) aQ.asm = [iC];
if (aQ.bg == 2) aQ.bsm = [iC];
if (aQ.bg == 3) aQ.csm = [iC];
if (aQ.bg == 4) aQ.dsm = [iC];
if (aQ.bg == 5) aQ.esm = [iC];
if (aQ.bg == 6) aQ.fsm = [iC];
if (aQ.bg == 7) aQ.gsm = [iC];
if (aQ.bg == 8) aQ.hsm = [iC];
if (aQ.bg == 9) aQ.ism = [iC];
if (aQ.bg == 10) aQ.jsm = [iC];
if (aQ.bg == 11) aQ.ksm = [iC];
if (aQ.bg == 12) aQ.lsm = [iC];
if (aQ.bg == 13) aQ.msm = [iC];
if (aQ.bg == 14) aQ.nsm = [iC];
if (aQ.bg == 15) aQ.osm = [iC];
if (aQ.bg == 16) aQ.psm = [iC];
if (aQ.bg == 17) aQ.qsm = [iC];
if (aQ.bg == 18) aQ.rsm = [iC];
if (aQ.bg == 19) aQ.ssm = [iC];
if (aQ.bg == 20) aQ.tsm = [iC];
if (aQ.bg == 21) aQ.usm = [iC];
if (aQ.bg == 22) aQ.vsm = [iC];
if (aQ.bg == 23) aQ.wsm = [iC];
if (aQ.bg == 24) aQ.xsm = [iC];
if (aQ.bg == 25) aQ.ysm = [iC];
if (aQ.bg == 26) aQ.zsm = [iC];
if (aQ.bg == 27) aQ.aasm = [iC];
if (aQ.bg == 28) aQ.bbsm = [iC];
if (aQ.bg == 29) aQ.ccsm = [iC];
if (aQ.bg == 30) aQ.ddsm = [iC];
if (aQ.settings.keyBoard.settings.hasMap == 1) {
aQ.bu += aQ.wQ(iC);
}
if (aQ.settings.displayMode == 1) {
input.value = (aQ.asm + aQ.bsm + aQ.csm + aQ.dsm + aQ.esm + aQ.fsm + aQ.gsm + aQ.hsm + aQ.ism + aQ.jsm + aQ.ksm + aQ.lsm + aQ.msm + aQ.nsm + aQ.osm + aQ.psm + aQ.qsm + aQ.rsm + aQ.ssm + aQ.tsm + aQ.usm + aQ.vsm + aQ.wsm + aQ.xsm + aQ.ysm + aQ.zsm + aQ.aasm + aQ.bbsm + aQ.ccsm + aQ.ddsm).substring(0, aQ.bg);
} else {
input.value += "*";
}
if (aQ.settings.jump == 1) {
aQ.settings.add(aQ.bg);
}
}
}
};
passGuard.prototype.tI = function (mO) {
if (mO) {
passGuard.ib = mO;
}
};
passGuard.prototype.clearpwd = function () {
var input = document.getElementById(this.settings.id);
input.value = "";
this.bg = 0;
this.bu = "";
this.asm = "";
this.bsm = "";
this.csm = "";
this.dsm = "";
this.esm = "";
this.fsm = "";
this.gsm = "";
this.hsm = "";
this.ism = "";
this.jsm = "";
this.ksm = "";
this.lsm = "";
this.msm = "";
this.nsm = "";
this.osm = "";
this.psm = "";
this.qsm = "";
this.rsm = "";
this.ssm = "";
this.tsm = "";
this.usm = "";
this.vsm = "";
this.wsm = "";
this.xsm = "";
this.ysm = "";
this.zsm = "";
this.aasm = "";
this.bbsm = "";
this.ccsm = "";
this.ddsm = "";
};
passGuard.prototype.getValid = function () {
// if (!verifyFlag) {
// alert("license verify error!");
// return 1;
// }
var aQ = this;
if (aQ.bg < 0) aQ.bg = 0;
if (aQ.bg == 0) aQ.asm = [""];
if (aQ.bg == 1) aQ.bsm = [""];
if (aQ.bg <= 2) aQ.csm = [""];
if (aQ.bg <= 3) aQ.dsm = [""];
if (aQ.bg <= 4) aQ.esm = [""];
if (aQ.bg <= 5) aQ.fsm = [""];
if (aQ.bg <= 6) aQ.gsm = [""];
if (aQ.bg <= 7) aQ.hsm = [""];
if (aQ.bg <= 8) aQ.ism = [""];
if (aQ.bg <= 9) aQ.jsm = [""];
if (aQ.bg <= 10) aQ.ksm = [""];
if (aQ.bg <= 11) aQ.lsm = [""];
if (aQ.bg <= 12) aQ.msm = [""];
if (aQ.bg <= 13) aQ.nsm = [""];
if (aQ.bg <= 14) aQ.osm = [""];
if (aQ.bg <= 15) aQ.psm = [""];
if (aQ.bg <= 16) aQ.qsm = [""];
if (aQ.bg <= 17) aQ.rsm = [""];
if (aQ.bg <= 18) aQ.ssm = [""];
if (aQ.bg <= 19) aQ.tsm = [""];
if (aQ.bg <= 20) aQ.usm = [""];
if (aQ.bg <= 21) aQ.vsm = [""];
if (aQ.bg <= 22) aQ.wsm = [""];
if (aQ.bg <= 23) aQ.xsm = [""];
if (aQ.bg <= 24) aQ.ysm = [""];
if (aQ.bg <= 25) aQ.zsm = [""];
if (aQ.bg <= 26) aQ.aasm = [""];
if (aQ.bg <= 27) aQ.bbsm = [""];
if (aQ.bg <= 28) aQ.ccsm = [""];
if (aQ.bg <= 29) aQ.ddsm = [""];
var ld = new RegExp(aQ.settings.regExp2);
if (aQ.asm == undefined) {
var pare = 1;
} else {
var pare = ld.test((aQ.asm + aQ.bsm + aQ.csm + aQ.dsm + aQ.esm + aQ.fsm + aQ.gsm + aQ.hsm + aQ.ism + aQ.jsm + aQ.ksm + aQ.lsm + aQ.msm + aQ.nsm + aQ.osm + aQ.psm + aQ.qsm + aQ.rsm + aQ.ssm + aQ.tsm + aQ.usm + aQ.vsm + aQ.wsm + aQ.xsm + aQ.ysm + aQ.zsm + aQ.aasm + aQ.bbsm + aQ.ccsm + aQ.ddsm).substring(0, aQ.bg)) ? 0 : 1;
}
return pare;
};
passGuard.prototype.getOutput = function () {
// if (!verifyFlag) {
// alert("license verify error!");
// return false;
// }
var kW = new db();
kW.uO(this.settings.rsaPublicKey);
if (this.settings.keyBoard.settings.hasMap == 1) {
var sn = kW.bZ(this.bu);
} else {
var sn = kW.bZ(this.asm + this.bsm + this.csm + this.dsm + this.esm + this.fsm + this.gsm + this.hsm + this.ism + this.jsm + this.ksm + this.lsm + this.msm + this.nsm + this.osm + this.psm + this.qsm + this.rsm + this.ssm + this.tsm + this.usm + this.vsm + this.wsm + this.xsm + this.ysm + this.zsm + this.aasm + this.bbsm + this.ccsm + this.ddsm);
}
var xS = qh($.trim(this.settings.mC), $.trim(sn));
passGuard.ib = undefined;
this.bg = 0;
this.asm = [""];
this.bsm = [""];
this.csm = [""];
this.dsm = [""];
this.esm = [""];
this.fsm = [""];
this.gsm = [""];
this.hsm = [""];
this.ism = [""];
this.jsm = [""];
this.ksm = [""];
this.lsm = [""];
this.msm = [""];
this.nsm = [""];
this.osm = [""];
this.psm = [""];
this.qsm = [""];
this.rsm = [""];
this.ssm = [""];
this.tsm = [""];
this.usm = [""];
this.vsm = [""];
this.wsm = [""];
this.xsm = [""];
this.ysm = [""];
this.zsm = [""];
this.aasm = [""];
this.bbsm = [""];
this.ccsm = [""];
this.ddsm = [""];
this.bu = "";
return xS;
};
passGuard.prototype.getLength = function () {
if (!verifyFlag) {
alert("license verify error!");
return 0;
}
if (this.settings.keyBoard.settings.hasMap == 1) {
return this.bu.length;
} else {
return this.bg;
}
};
passGuard.prototype.getHash = function () {
if (!verifyFlag) {
alert("license verify error!");
return false;
}
var aQ = this;
if (this.settings.keyBoard.settings.hasMap == 1) {
return hash(this.bu).toString();
} else {
return hash(aQ.asm + aQ.bsm + aQ.csm + aQ.dsm + aQ.esm + aQ.fsm + aQ.gsm + aQ.hsm + aQ.ism + aQ.jsm + aQ.ksm + aQ.lsm + aQ.msm + aQ.nsm + aQ.osm + aQ.psm + aQ.qsm + aQ.rsm + aQ.ssm + aQ.tsm + aQ.usm + aQ.vsm + aQ.wsm + aQ.xsm + aQ.ysm + aQ.zsm + aQ.aasm + aQ.bbsm + aQ.ccsm + aQ.ddsm).toString();
}
};
passGuard.prototype.wQ = function (key) {
var keyCode = key.charCodeAt(0);
var bS = aB(passGuard.ib);
var wl = eval(bS);
return String.fromCharCode(wl[keyCode - 33]);
};
passGuard.prototype.setRandKey = function (lP) {
try {
if (lP) this.settings.mC = lP;
} catch (e) {
alert(e);
}
};
var cert = "-----BEGIN CERTIFICATE-----\n";
cert += "MIICHjCCAYegAwIBAgIFBO2Kp0UwDQYJKoZIhvcNAQELBQAwVDEOMAwGA1UEAxMFU0lDQ0ExCzAJ\n";
cert += "BgNVBAsTAlNDMQ4wDAYDVQQKEwVTSUNDQTELMAkGA1UEBxMCQkoxCzAJBgNVBAgTAkJKMQswCQYD\n";
cert += "VQQGEwJDTjAeFw0xNzAxMTYwODM3MzlaFw0xNzAxMTYwODM3MzlaMFIxDDAKBgNVBAMTA0xlZTEL\n";
cert += "MAkGA1UECxMCU0MxDjAMBgNVBAoTBVNJQ0NBMQswCQYDVQQHEwJCSjELMAkGA1UECBMCQkoxCzAJ\n";
cert += "BgNVBAYTAkNOMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDm0MpZBsaKYQSGj1lytQ+ubUm/\n";
cert += "4pvmIKTWtqtrGo75cF4N7Hajlm29wjOf7I7fTe4+JlxYmMhqxoXeoiLFwPUgVm6oMGU5T80R9Iw6\n";
cert += "cg36dX8l7bYwiETs/rI09Kzs+r7GZAEI1XueCNQygN9wfUcBDuXIsjjmzcUkpC5GNFGzxQIDAQAB\n";
cert += "MA0GCSqGSIb3DQEBCwUAA4GBADq6BvU5ILNZ9OanxqrTZ86o6qNgYMkopZrw0h0skNDRQ4GX1deQ\n";
cert += "AKSamow9ZW6g93/KkatMmF2vc2P43zeJ+vwunt+Tu57IUb4VJ+eKafGSo9ySilzVcWTUW8dR0zoN\n";
cert += "N3cAL5v1zWqhe/9z09xtsLwShtvv/PF0xgs3qmTKe8tG\n";
cert += "-----END CERTIFICATE-----";
function getYMD() {
var myDate = new Date();
var yy = myDate.getFullYear();
var mm = myDate.getMonth() + 1;
if (mm < 10) {
mm = "0" + mm;
}
var dd = myDate.getDate();
if (dd < 10) {
dd = "0" + dd;
}
return "" + yy + mm + dd;
};
var verifyFlag = true;
function verifyLicense(bS) {
var b64oneStr = aB(bS);
var indexs = b64oneStr.indexOf("{");
var sMsg = b64oneStr.substring(indexs);
b64oneStr = b64oneStr.substring(0, indexs);
hexoneStr = new Base642().ei(b64oneStr);
var qx = new X509();
qx.readCertPEM(cert);
var isValid = qx.subjectPublicKeyRSA.verifyString(sMsg, hexoneStr);
var bA = JSON.parse(sMsg);
var today = getYMD();
if (isValid) {
if (bA.type == "test") {
console.log("this is a test license!");
if (today > bA.notafter) {
verifyFlag = false;
console.log("this license is out date!");
}
} else if (bA.type == "product") {
console.log("this is a product license!");
var hostname = location.hostname;
var apps = bA.applyname;
if (apps.length == 1) {
var regobj = new RegExp(apps[0].replace(/\./g, "[.]*").replace(/\*/, "[.]*"));
if (regobj.test(hostname)) { } else {
verifyFlag = false;
console.log("hostname verify error!");
}
} else if (apps.length > 1) {
var hu = false;
for (var i = 0; i < apps.length; i++) {
var regobj = new RegExp(apps[i].replace(/\./g, "\\.").replace("*", "."));
if (regobj.test(hostname)) {
hu = true;
break;
}
}
if (!hu) {
verifyFlag = false;
console.log("hostname verify error!");
}
}
}
} else {
verifyFlag = false;
console.log("license verify error!");
}
}; (function (root, lo) {
if (typeof fg === "object") {
la.fg = fg = lo();
} else if (typeof define === "function" && define.xg) {
define([], lo);
} else {
root.aX = lo();
}
}(this,
function () {
var aX = aX || (function (Math, undefined) {
var C = {};
var bC = C.bf = {};
var Base = bC.Base = (function () {
function F() { };
return {
extend: function (fj) {
F.prototype = this;
var fl = new F();
if (fj) {
fl.jT(fj);
}
if (!fl.hasOwnProperty('aV')) {
fl.aV = function () {
fl.ro.aV.apply(this, arguments);
};
}
fl.aV.prototype = fl;
fl.ro = this;
return fl;
},
create: function () {
var kf = this.extend();
kf.aV.apply(kf, arguments);
return kf;
},
aV: function () { },
jT: function (gY) {
for (var propertyName in gY) {
if (gY.hasOwnProperty(propertyName)) {
this[propertyName] = gY[propertyName];
}
}
if (gY.hasOwnProperty('toString')) {
this.toString = gY.toString;
}
},
clone: function () {
return this.aV.prototype.extend(this);
}
};
}());
var bd = bC.bd = Base.extend({
aV: function (bq, aI) {
bq = this.bq = bq || [];
if (aI != undefined) {
this.aI = aI;
} else {
this.aI = bq.length * 4;
}
},
toString: function (vX) {
return (vX || cJ).stringify(this);
},
concat: function (aH) {
var mg = this.bq;
var ng = aH.bq;
var jo = this.aI;
var jJ = aH.aI;
this.ag();
if (jo % 4) {
for (var i = 0; i < jJ; i++) {
var so = (ng[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
mg[(jo + i) >>> 2] |= so << (24 - ((jo + i) % 4) * 8);
}
} else {
for (var i = 0; i < jJ; i += 4) {
mg[(jo + i) >>> 2] = ng[i >>> 2];
}
}
this.aI += jJ;
return this;
},
ag: function () {
var bq = this.bq;
var aI = this.aI;
bq[aI >>> 2] &= 0xffffffff << (32 - (aI % 4) * 8);
bq.length = Math.ceil(aI / 4);
},
clone: function () {
var clone = Base.clone.call(this);
clone.bq = this.bq.slice(0);
return clone;
},
random: function (eE) {
var bq = [];
var r = (function (eH) {
var eH = eH;
var iH = 0x3ade68b1;
var mask = 0xffffffff;
return function () {
iH = (0x9069 * (iH & 0xFFFF) + (iH >> 0x10)) & mask;
eH = (0x4650 * (eH & 0xFFFF) + (eH >> 0x10)) & mask;
var result = ((iH << 0x10) + eH) & mask;
result /= 0x100000000;
result += 0.5;
return result * (Math.random() > .5 ? 1 : -1);
}
});
for (var i = 0,
mt; i < eE; i += 4) {
var mz = r((mt || Math.random()) * 0x100000000);
mt = mz() * 0x3ade67b7;
bq.push((mz() * 0x100000000) | 0);
}
return new bd.aV(bq, eE);
}
});
var ck = C.bJ = {};
var cJ = ck.cJ = {
stringify: function (aH) {
var bq = aH.bq;
var aI = aH.aI;
var jm = [];
for (var i = 0; i < aI; i++) {
var iY = (bq[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
jm.push((iY >>> 4).toString(16));
jm.push((iY & 0x0f).toString(16));
}
return jm.join('');
},
parse: function (oX) {
var nU = oX.length;
var bq = [];
for (var i = 0; i < nU; i += 2) {
bq[i >>> 3] |= parseInt(oX.substr(i, 2), 16) << (24 - (i % 8) * 4);
}
return new bd.aV(bq, nU / 2);
}
};
var lq = ck.lq = {
stringify: function (aH) {
var bq = aH.bq;
var aI = aH.aI;
var mw = [];
for (var i = 0; i < aI; i++) {
var iY = (bq[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
mw.push(String.fromCharCode(iY));
}
return mw.join('');
},
parse: function (mK) {
var mn = mK.length;
var bq = [];
for (var i = 0; i < mn; i++) {
bq[i >>> 2] |= (mK.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
}
return new bd.aV(bq, mn);
}
};
var hh = ck.hh = {
stringify: function (aH) {
try {
return decodeURIComponent(escape(lq.stringify(aH)));
} catch (e) {
throw new Error('Malformed UTF-8 data');
}
},
parse: function (ox) {
return lq.parse(unescape(encodeURIComponent(ox)));
}
};
var fk = bC.fk = Base.extend({
reset: function () {
this.hs = new bd.aV();
this.qY = 0;
},
ji: function (data) {
if (typeof data == 'string') {
data = hh.parse(data);
}
this.hs.concat(data);
this.qY += data.aI;
},
gq: function (wx) {
var data = this.hs;
var jk = data.bq;
var gF = data.aI;
var bB = this.bB;
var cq = bB * 4;
var gD = gF / cq;
if (wx) {
gD = Math.ceil(gD);
} else {
gD = Math.max((gD | 0) - this.lN, 0);
}
var iO = gD * bB;
var nu = Math.min(iO * 4, gF);
if (iO) {
for (var offset = 0; offset < iO; offset += bB) {
this.kq(jk, offset);
}
var rj = jk.splice(0, iO);
data.aI -= nu;
}
return new bd.aV(rj, nu);
},
clone: function () {
var clone = Base.clone.call(this);
clone.hs = this.hs.clone();
return clone;
},
lN: 0
});
var wh = bC.wh = fk.extend({
aL: Base.extend(),
aV: function (aL) {
this.aL = this.aL.extend(aL);
this.reset();
},
reset: function () {
fk.reset.call(this);
this.jf();
},
update: function (jw) {
this.ji(jw);
this.gq();
return this;
},
fU: function (jw) {
if (jw) {
this.ji(jw);
}
var hash = this.kG();
return hash;
},
bB: 512 / 32,
jx: function (jM) {
return function (message, aL) {
return new jM.aV(aL).fU(message);
};
},
zS: function (jM) {
return function (message, key) {
return new cw.AP.aV(jM, key).fU(message);
};
}
});
var cw = C.jg = {};
return C;
}(Math)); (function () {
var C = aX;
var bC = C.bf;
var bd = bC.bd;
var ck = C.bJ;
var aM = ck.aM = {
stringify: function (aH) {
var bq = aH.bq;
var aI = aH.aI;
var map = this.mo;
aH.ag();
var hQ = [];
for (var i = 0; i < aI; i += 3) {
var wT = (bq[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
var vx = (bq[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
var wB = (bq[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
var ue = (wT << 16) | (vx << 8) | wB;
for (var j = 0; (j < 4) && (i + j * 0.75 < aI); j++) {
hQ.push(map.charAt((ue >>> (6 * (3 - j))) & 0x3f));
}
}
var ge = map.charAt(64);
if (ge) {
while (hQ.length % 4) {
hQ.push(ge);
}
}
return hQ.join('');
},
parse: function (jD) {
var mc = jD.length;
var map = this.mo;
var ge = map.charAt(64);
if (ge) {
var lU = jD.indexOf(ge);
if (lU != -1) {
mc = lU;
}
}
var bq = [];
var eE = 0;
for (var i = 0; i < mc; i++) {
if (i % 4) {
var wi = map.indexOf(jD.charAt(i - 1)) << ((i % 4) * 2);
var wu = map.indexOf(jD.charAt(i)) >>> (6 - (i % 4) * 2);
bq[eE >>> 2] |= (wi | wu) << (24 - (eE % 4) * 8);
eE++;
}
}
return bd.create(bq, eE);
},
mo: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
};
}()); (function () {
if (typeof xF != 'function') {
return;
}
var C = aX;
var bC = C.bf;
var bd = bC.bd;
var lH = bd.aV;
var qo = bd.aV = function (ao) {
if (ao instanceof xF) {
ao = new ny(ao);
}
if (ao instanceof AH || (typeof rX !== "undefined" && ao instanceof rX) || ao instanceof zp || ao instanceof AK || ao instanceof zn || ao instanceof sI || ao instanceof za || ao instanceof AG) {
ao = new ny(ao.AQ, ao.Az, ao.vu);
}
if (ao instanceof ny) {
var pk = ao.vu;
var bq = [];
for (var i = 0; i < pk; i++) {
bq[i >>> 2] |= ao[i] << (24 - (i % 4) * 8);
}
lH.call(this, bq, pk);
} else {
lH.apply(this, arguments);
}
};
qo.prototype = bd;
}());
aX.bf.eU || (function (undefined) {
var C = aX;
var bC = C.bf;
var Base = bC.Base;
var bd = bC.bd;
var fk = bC.fk;
var ck = C.bJ;
var hh = ck.hh;
var aM = ck.aM;
var cw = C.jg;
var nZ = cw.nZ;
var eU = bC.eU = fk.extend({
aL: Base.extend(),
kR: function (key, aL) {
return this.create(this.jU, key, aL);
},
kg: function (key, aL) {
return this.create(this.qp, key, aL);
},
aV: function (qN, key, aL) {
this.aL = this.aL.extend(aL);
this.nt = qN;
this.hJ = key;
this.reset();
},
reset: function () {
fk.reset.call(this);
this.jf();
},
zW: function (jy) {
this.ji(jy);
return this.gq();
},
fU: function (jy) {
if (jy) {
this.ji(jy);
}
var xb = this.kG();
return xb;
},
ah: 128 / 32,
fN: 128 / 32,
jU: 1,
qp: 2,
jx: (function () {
function ou(key) {
if (typeof key == 'string') {
return ni;
} else {
return hw;
}
};
return function (aT) {
return {
bZ: function (message, key, aL) {
return ou(key).bZ(aT, message, key, aL);
},
eV: function (bD, key, aL) {
return ou(key).eV(aT, bD, key, aL);
}
};
};
}())
});
var dC = bC.dC = eU.extend({
kG: function () {
var gH = this.gq(!!'flush');
return gH;
},
bB: 1
});
var wJ = C.mode = {};
var eL = bC.eL = Base.extend({
kR: function (aT, bP) {
return this.cB.create(aT, bP);
},
kg: function (aT, bP) {
return this.eZ.create(aT, bP);
},
aV: function (aT, bP) {
this.cd = aT;
this.cQ = bP;
}
});
var fi = wJ.fi = (function () {
var fi = eL.extend();
fi.cB = fi.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
ph.call(this, bq, offset, bB);
aT.fL(bq, offset);
this.fO = bq.slice(offset, offset + bB);
}
});
fi.eZ = fi.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
var iM = bq.slice(offset, offset + bB);
aT.kQ(bq, offset);
ph.call(this, bq, offset, bB);
this.fO = iM;
}
});
function ph(bq, offset, bB) {
var bP = this.cQ;
if (bP) {
var block = bP;
this.cQ = undefined;
} else {
var block = this.fO;
}
for (var i = 0; i < bB; i++) {
bq[offset + i] ^= block[i];
}
};
return fi;
}());
var vt = C.bH = {};
var kB = vt.kB = {
bH: function (data, bB) {
var cq = bB * 4;
var aZ = cq - data.aI % cq;
var xu = (aZ << 24) | (aZ << 16) | (aZ << 8) | aZ;
var mB = [];
for (var i = 0; i < aZ; i += 4) {
mB.push(xu);
}
var padding = bd.create(mB, aZ);
data.concat(padding);
},
es: function (data) {
var aZ = data.bq[(data.aI - 1) >>> 2] & 0xff;
data.aI -= aZ;
}
};
var gi = bC.gi = eU.extend({
aL: eU.aL.extend({
mode: fi,
padding: kB
}),
reset: function () {
eU.reset.call(this);
var aL = this.aL;
var bP = aL.bP;
var mode = aL.mode;
if (this.nt == this.jU) {
var nd = mode.kR;
} else {
var nd = mode.kg;
this.lN = 1;
}
this.pu = nd.call(mode, this, bP && bP.bq);
},
kq: function (bq, offset) {
this.pu.co(bq, offset);
},
kG: function () {
var padding = this.aL.padding;
if (this.nt == this.jU) {
padding.bH(this.hs, this.bB);
var gH = this.gq(!!'flush');
} else {
var gH = this.gq(!!'flush');
padding.es(gH);
}
return gH;
},
bB: 128 / 32
});
var fw = bC.fw = Base.extend({
aV: function (eI) {
this.jT(eI);
},
toString: function (kU) {
return (kU || this.kU).stringify(this);
}
});
var lf = C.format = {};
var yV = lf.vj = {
stringify: function (eI) {
var bD = eI.bD;
var dG = eI.dG;
if (dG) {
var aH = bd.create([0x53616c74, 0x65645f5f]).concat(dG).concat(bD);
} else {
var aH = bD;
}
return aH.toString(aM);
},
parse: function (xW) {
var bD = aM.parse(xW);
var iR = bD.bq;
if (iR[0] == 0x53616c74 && iR[1] == 0x65645f5f) {
var dG = bd.create(iR.slice(2, 4));
iR.splice(0, 4);
bD.aI -= 16;
}
return fw.create({
bD: bD,
dG: dG
});
}
};
var hw = bC.hw = Base.extend({
aL: Base.extend({
format: yV
}),
bZ: function (aT, message, key, aL) {
aL = this.aL.extend(aL);
var nX = aT.kR(key, aL);
var bD = nX.fU(message);
var kd = nX.aL;
return fw.create({
bD: bD,
key: key,
bP: kd.bP,
yC: aT,
mode: kd.mode,
padding: kd.padding,
bB: aT.bB,
kU: aL.format
});
},
eV: function (aT, bD, key, aL) {
aL = this.aL.extend(aL);
bD = this.lX(bD, aL.format);
var plaintext = aT.kg(key, aL).fU(bD.bD);
return plaintext;
},
lX: function (bD, format) {
if (typeof bD == 'string') {
return format.parse(bD, this);
} else {
return bD;
}
}
});
var wV = C.ly = {};
var yd = wV.vj = {
oB: function (password, ah, fN, dG) {
if (!dG) {
dG = bd.random(64 / 8);
}
var key = nZ.create({
ah: ah + fN
}).Aj(password, dG);
var bP = bd.create(key.bq.slice(ah), fN * 4);
key.aI = ah * 4;
return fw.create({
key: key,
bP: bP,
dG: dG
});
}
};
var ni = bC.ni = hw.extend({
aL: hw.aL.extend({
ly: yd
}),
bZ: function (aT, message, password, aL) {
aL = this.aL.extend(aL);
var er = aL.ly.oB(password, aT.ah, aT.fN);
aL.bP = er.bP;
var bD = hw.bZ.call(this, aT, message, er.key, aL);
bD.jT(er);
return bD;
},
eV: function (aT, bD, password, aL) {
aL = this.aL.extend(aL);
bD = this.lX(bD, aL.format);
var er = aL.ly.oB(password, aT.ah, aT.fN, bD.dG);
aL.bP = er.bP;
var plaintext = hw.eV.call(this, aT, bD, er.key, aL);
return plaintext;
}
});
}());
aX.mode.gn = (function () {
var gn = aX.bf.eL.extend();
gn.cB = gn.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
nI.call(this, bq, offset, bB, aT);
this.fO = bq.slice(offset, offset + bB);
}
});
gn.eZ = gn.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
var iM = bq.slice(offset, offset + bB);
nI.call(this, bq, offset, bB, aT);
this.fO = iM;
}
});
function nI(bq, offset, bB, aT) {
var bP = this.cQ;
if (bP) {
var cP = bP.slice(0);
this.cQ = undefined;
} else {
var cP = this.fO;
}
aT.fL(cP, 0);
for (var i = 0; i < bB; i++) {
bq[offset + i] ^= cP[i];
}
};
return gn;
}());
aX.mode.ed = (function () {
var ed = aX.bf.eL.extend();
ed.cB = ed.extend({
co: function (bq, offset) {
this.cd.fL(bq, offset);
}
});
ed.eZ = ed.extend({
co: function (bq, offset) {
this.cd.kQ(bq, offset);
}
});
return ed;
}());
aX.bH.yr = {
bH: function (data, bB) {
var gF = data.aI;
var cq = bB * 4;
var aZ = cq - gF % cq;
var jK = gF + aZ - 1;
data.ag();
data.bq[jK >>> 2] |= aZ << (24 - (jK % 4) * 8);
data.aI += aZ;
},
es: function (data) {
var aZ = data.bq[(data.aI - 1) >>> 2] & 0xff;
data.aI -= aZ;
}
};
aX.bH.Ak = {
bH: function (data, bB) {
var cq = bB * 4;
var aZ = cq - data.aI % cq;
data.concat(aX.bf.bd.random(aZ - 1)).concat(aX.bf.bd.create([aZ << 24], 1));
},
es: function (data) {
var aZ = data.bq[(data.aI - 1) >>> 2] & 0xff;
data.aI -= aZ;
}
};
aX.bH.Ai = {
bH: function (data, bB) {
data.concat(aX.bf.bd.create([0x80000000], 1));
aX.bH.oQ.bH(data, bB);
},
es: function (data) {
aX.bH.oQ.es(data);
data.aI--;
}
};
aX.mode.gK = (function () {
var gK = aX.bf.eL.extend();
var cB = gK.cB = gK.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
var bP = this.cQ;
var cP = this.qF;
if (bP) {
cP = this.qF = bP.slice(0);
this.cQ = undefined;
}
aT.fL(cP, 0);
for (var i = 0; i < bB; i++) {
bq[offset + i] ^= cP[i];
}
}
});
gK.eZ = cB;
return gK;
}());
aX.bH.yh = {
bH: function () { },
es: function () { }
}; (function (undefined) {
var C = aX;
var bC = C.bf;
var fw = bC.fw;
var ck = C.bJ;
var cJ = ck.cJ;
var lf = C.format;
var xm = lf.cJ = {
stringify: function (eI) {
return eI.bD.toString(cJ);
},
parse: function (input) {
var bD = cJ.parse(input);
return fw.create({
bD: bD
});
}
};
}()); (function () {
var C = aX;
var bC = C.bf;
var gi = bC.gi;
var cw = C.jg;
var bj = [];
var oP = [];
var eF = [];
var eG = [];
var fD = [];
var ek = [];
var kr = [];
var lj = [];
var ka = [];
var lk = []; (function () {
var d = [];
for (var i = 0; i < 256; i++) {
if (i < 128) {
d[i] = i << 1;
} else {
d[i] = (i << 1) ^ 0x11b;
}
}
var x = 0;
var fm = 0;
for (var i = 0; i < 256; i++) {
var cr = fm ^ (fm << 1) ^ (fm << 2) ^ (fm << 3) ^ (fm << 4);
cr = (cr >>> 8) ^ (cr & 0xff) ^ 0x63;
bj[x] = cr;
oP[cr] = x;
var x2 = d[x];
var pa = d[x2];
var nm = d[pa];
var t = (d[cr] * 0x101) ^ (cr * 0x1010100);
eF[x] = (t << 24) | (t >>> 8);
eG[x] = (t << 16) | (t >>> 16);
fD[x] = (t << 8) | (t >>> 24);
ek[x] = t;
var t = (nm * 0x1010101) ^ (pa * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);
kr[cr] = (t << 24) | (t >>> 8);
lj[cr] = (t << 16) | (t >>> 16);
ka[cr] = (t << 8) | (t >>> 24);
lk[cr] = t;
if (!x) {
x = fm = 1;
} else {
x = x2 ^ d[d[d[nm ^ x2]]];
fm ^= d[d[fm]];
}
}
}());
var pS = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];
var iG = cw.iG = gi.extend({
jf: function () {
var key = this.hJ;
var keyWords = key.bq;
var ah = key.aI / 4;
var jO = this.qv = ah + 6;
var kF = (jO + 1) * 4;
var bV = this.qg = [];
for (var aq = 0; aq < kF; aq++) {
if (aq < ah) {
bV[aq] = keyWords[aq];
} else {
var t = bV[aq - 1];
if (!(aq % ah)) {
t = (t << 8) | (t >>> 24);
t = (bj[t >>> 24] << 24) | (bj[(t >>> 16) & 0xff] << 16) | (bj[(t >>> 8) & 0xff] << 8) | bj[t & 0xff];
t ^= pS[(aq / ah) | 0] << 24;
} else if (ah > 6 && aq % ah == 4) {
t = (bj[t >>> 24] << 24) | (bj[(t >>> 16) & 0xff] << 16) | (bj[(t >>> 8) & 0xff] << 8) | bj[t & 0xff];
}
bV[aq] = bV[aq - ah] ^ t;
}
}
var oA = this.qM = [];
for (var fp = 0; fp < kF; fp++) {
var aq = kF - fp;
if (fp % 4) {
var t = bV[aq];
} else {
var t = bV[aq - 4];
}
if (fp < 4 || aq <= 4) {
oA[fp] = t;
} else {
oA[fp] = kr[bj[t >>> 24]] ^ lj[bj[(t >>> 16) & 0xff]] ^ ka[bj[(t >>> 8) & 0xff]] ^ lk[bj[t & 0xff]];
}
}
},
fL: function (M, offset) {
this.lG(M, offset, this.qg, eF, eG, fD, ek, bj);
},
kQ: function (M, offset) {
var t = M[offset + 1];
M[offset + 1] = M[offset + 3];
M[offset + 3] = t;
this.lG(M, offset, this.qM, kr, lj, ka, lk, oP);
var t = M[offset + 1];
M[offset + 1] = M[offset + 3];
M[offset + 3] = t;
},
lG: function (M, offset, bV, eF, eG, fD, ek, bj) {
var jO = this.qv;
var du = M[offset] ^ bV[0];
var cC = M[offset + 1] ^ bV[1];
var ci = M[offset + 2] ^ bV[2];
var cG = M[offset + 3] ^ bV[3];
var aq = 4;
for (var round = 1; round < jO; round++) {
var hW = eF[du >>> 24] ^ eG[(cC >>> 16) & 0xff] ^ fD[(ci >>> 8) & 0xff] ^ ek[cG & 0xff] ^ bV[aq++];
var jr = eF[cC >>> 24] ^ eG[(ci >>> 16) & 0xff] ^ fD[(cG >>> 8) & 0xff] ^ ek[du & 0xff] ^ bV[aq++];
var iA = eF[ci >>> 24] ^ eG[(cG >>> 16) & 0xff] ^ fD[(du >>> 8) & 0xff] ^ ek[cC & 0xff] ^ bV[aq++];
var jz = eF[cG >>> 24] ^ eG[(du >>> 16) & 0xff] ^ fD[(cC >>> 8) & 0xff] ^ ek[ci & 0xff] ^ bV[aq++];
du = hW;
cC = jr;
ci = iA;
cG = jz;
}
var hW = ((bj[du >>> 24] << 24) | (bj[(cC >>> 16) & 0xff] << 16) | (bj[(ci >>> 8) & 0xff] << 8) | bj[cG & 0xff]) ^ bV[aq++];
var jr = ((bj[cC >>> 24] << 24) | (bj[(ci >>> 16) & 0xff] << 16) | (bj[(cG >>> 8) & 0xff] << 8) | bj[du & 0xff]) ^ bV[aq++];
var iA = ((bj[ci >>> 24] << 24) | (bj[(cG >>> 16) & 0xff] << 16) | (bj[(du >>> 8) & 0xff] << 8) | bj[cC & 0xff]) ^ bV[aq++];
var jz = ((bj[cG >>> 24] << 24) | (bj[(du >>> 16) & 0xff] << 16) | (bj[(cC >>> 8) & 0xff] << 8) | bj[ci & 0xff]) ^ bV[aq++];
M[offset] = hW;
M[offset + 1] = jr;
M[offset + 2] = iA;
M[offset + 3] = jz;
},
ah: 256 / 32
});
C.iG = gi.jx(iG);
}()); (function (Math) {
var C = aX;
var bC = C.bf;
var bd = bC.bd;
var wh = bC.wh;
var cw = C.jg;
var T = []; (function () {
for (var i = 0; i < 64; i++) {
T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;
}
}());
var AF = cw.AF = wh.extend({
jf: function () {
this._hash = new bd.aV([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);
},
kq: function (M, offset) {
for (var i = 0; i < 16; i++) {
var offset_i = offset + i;
var M_offset_i = M[offset_i];
M[offset_i] = ((((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00));
}
var H = this._hash.bq;
var M_offset_0 = M[offset + 0];
var M_offset_1 = M[offset + 1];
var M_offset_2 = M[offset + 2];
var M_offset_3 = M[offset + 3];
var M_offset_4 = M[offset + 4];
var M_offset_5 = M[offset + 5];
var M_offset_6 = M[offset + 6];
var M_offset_7 = M[offset + 7];
var M_offset_8 = M[offset + 8];
var M_offset_9 = M[offset + 9];
var M_offset_10 = M[offset + 10];
var M_offset_11 = M[offset + 11];
var M_offset_12 = M[offset + 12];
var M_offset_13 = M[offset + 13];
var M_offset_14 = M[offset + 14];
var M_offset_15 = M[offset + 15];
var a = H[0];
var b = H[1];
var c = H[2];
var d = H[3];
a = FF(a, b, c, d, M_offset_0, 7, T[0]);
d = FF(d, a, b, c, M_offset_1, 12, T[1]);
c = FF(c, d, a, b, M_offset_2, 17, T[2]);
b = FF(b, c, d, a, M_offset_3, 22, T[3]);
a = FF(a, b, c, d, M_offset_4, 7, T[4]);
d = FF(d, a, b, c, M_offset_5, 12, T[5]);
c = FF(c, d, a, b, M_offset_6, 17, T[6]);
b = FF(b, c, d, a, M_offset_7, 22, T[7]);
a = FF(a, b, c, d, M_offset_8, 7, T[8]);
d = FF(d, a, b, c, M_offset_9, 12, T[9]);
c = FF(c, d, a, b, M_offset_10, 17, T[10]);
b = FF(b, c, d, a, M_offset_11, 22, T[11]);
a = FF(a, b, c, d, M_offset_12, 7, T[12]);
d = FF(d, a, b, c, M_offset_13, 12, T[13]);
c = FF(c, d, a, b, M_offset_14, 17, T[14]);
b = FF(b, c, d, a, M_offset_15, 22, T[15]);
a = GG(a, b, c, d, M_offset_1, 5, T[16]);
d = GG(d, a, b, c, M_offset_6, 9, T[17]);
c = GG(c, d, a, b, M_offset_11, 14, T[18]);
b = GG(b, c, d, a, M_offset_0, 20, T[19]);
a = GG(a, b, c, d, M_offset_5, 5, T[20]);
d = GG(d, a, b, c, M_offset_10, 9, T[21]);
c = GG(c, d, a, b, M_offset_15, 14, T[22]);
b = GG(b, c, d, a, M_offset_4, 20, T[23]);
a = GG(a, b, c, d, M_offset_9, 5, T[24]);
d = GG(d, a, b, c, M_offset_14, 9, T[25]);
c = GG(c, d, a, b, M_offset_3, 14, T[26]);
b = GG(b, c, d, a, M_offset_8, 20, T[27]);
a = GG(a, b, c, d, M_offset_13, 5, T[28]);
d = GG(d, a, b, c, M_offset_2, 9, T[29]);
c = GG(c, d, a, b, M_offset_7, 14, T[30]);
b = GG(b, c, d, a, M_offset_12, 20, T[31]);
a = HH(a, b, c, d, M_offset_5, 4, T[32]);
d = HH(d, a, b, c, M_offset_8, 11, T[33]);
c = HH(c, d, a, b, M_offset_11, 16, T[34]);
b = HH(b, c, d, a, M_offset_14, 23, T[35]);
a = HH(a, b, c, d, M_offset_1, 4, T[36]);
d = HH(d, a, b, c, M_offset_4, 11, T[37]);
c = HH(c, d, a, b, M_offset_7, 16, T[38]);
b = HH(b, c, d, a, M_offset_10, 23, T[39]);
a = HH(a, b, c, d, M_offset_13, 4, T[40]);
d = HH(d, a, b, c, M_offset_0, 11, T[41]);
c = HH(c, d, a, b, M_offset_3, 16, T[42]);
b = HH(b, c, d, a, M_offset_6, 23, T[43]);
a = HH(a, b, c, d, M_offset_9, 4, T[44]);
d = HH(d, a, b, c, M_offset_12, 11, T[45]);
c = HH(c, d, a, b, M_offset_15, 16, T[46]);
b = HH(b, c, d, a, M_offset_2, 23, T[47]);
a = II(a, b, c, d, M_offset_0, 6, T[48]);
d = II(d, a, b, c, M_offset_7, 10, T[49]);
c = II(c, d, a, b, M_offset_14, 15, T[50]);
b = II(b, c, d, a, M_offset_5, 21, T[51]);
a = II(a, b, c, d, M_offset_12, 6, T[52]);
d = II(d, a, b, c, M_offset_3, 10, T[53]);
c = II(c, d, a, b, M_offset_10, 15, T[54]);
b = II(b, c, d, a, M_offset_1, 21, T[55]);
a = II(a, b, c, d, M_offset_8, 6, T[56]);
d = II(d, a, b, c, M_offset_15, 10, T[57]);
c = II(c, d, a, b, M_offset_6, 15, T[58]);
b = II(b, c, d, a, M_offset_13, 21, T[59]);
a = II(a, b, c, d, M_offset_4, 6, T[60]);
d = II(d, a, b, c, M_offset_11, 10, T[61]);
c = II(c, d, a, b, M_offset_2, 15, T[62]);
b = II(b, c, d, a, M_offset_9, 21, T[63]);
H[0] = (H[0] + a) | 0;
H[1] = (H[1] + b) | 0;
H[2] = (H[2] + c) | 0;
H[3] = (H[3] + d) | 0;
},
kG: function () {
var data = this.hs;
var jk = data.bq;
var nBitsTotal = this.qY * 8;
var nBitsLeft = data.aI * 8;
jk[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);
var nBitsTotalL = nBitsTotal;
jk[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ((((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00));
jk[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ((((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00));
data.aI = (jk.length + 1) * 4;
this.gq();
var hash = this._hash;
var H = hash.bq;
for (var i = 0; i < 4; i++) {
var H_i = H[i];
H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);
}
return hash;
},
clone: function () {
var clone = wh.clone.call(this);
clone._hash = this._hash.clone();
return clone;
}
});
function FF(a, b, c, d, x, s, t) {
var n = a + ((b & c) | (~b & d)) + x + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
function GG(a, b, c, d, x, s, t) {
var n = a + ((b & d) | (c & ~d)) + x + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
function HH(a, b, c, d, x, s, t) {
var n = a + (b ^ c ^ d) + x + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
function II(a, b, c, d, x, s, t) {
var n = a + (c ^ (b | ~d)) + x + t;
return ((n << s) | (n >>> (32 - s))) + b;
};
C.AF = wh.jx(AF);
C.HmacMD5 = wh.zS(AF);
}(Math));
aX.mode.hn = (function () {
var hn = aX.bf.eL.extend();
function oT(word) {
if (((word >> 24) & 0xff) === 0xff) {
var il = (word >> 16) & 0xff;
var iL = (word >> 8) & 0xff;
var jq = word & 0xff;
if (il === 0xff) {
il = 0;
if (iL === 0xff) {
iL = 0;
if (jq === 0xff) {
jq = 0;
} else {
++jq;
}
} else {
++iL;
}
} else {
++il;
}
word = 0;
word += (il << 16);
word += (iL << 8);
word += jq;
} else {
word += (0x01 << 24);
}
return word;
};
function pp(counter) {
if ((counter[0] = oT(counter[0])) === 0) {
counter[1] = oT(counter[1]);
}
return counter;
};
var cB = hn.cB = hn.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
var bP = this.cQ;
var counter = this.jY;
if (bP) {
counter = this.jY = bP.slice(0);
this.cQ = undefined;
}
pp(counter);
var cP = counter.slice(0);
aT.fL(cP, 0);
for (var i = 0; i < bB; i++) {
bq[offset + i] ^= cP[i];
}
}
});
hn.eZ = cB;
return hn;
}()); (function () {
var C = aX;
var bC = C.bf;
var dC = bC.dC;
var cw = C.jg;
var S = [];
var aJ = [];
var G = [];
var jG = cw.jG = dC.extend({
jf: function () {
var K = this.hJ.bq;
var bP = this.aL.bP;
for (var i = 0; i < 4; i++) {
K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);
}
var X = this.hC = [K[0], (K[3] << 16) | (K[2] >>> 16), K[1], (K[0] << 16) | (K[3] >>> 16), K[2], (K[1] << 16) | (K[0] >>> 16), K[3], (K[2] << 16) | (K[1] >>> 16)];
var C = this.kt = [(K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)];
this.fP = 0;
for (var i = 0; i < 4; i++) {
eQ.call(this);
}
for (var i = 0; i < 8; i++) {
C[i] ^= X[(i + 4) & 7];
}
if (bP) {
var hD = bP.bq;
var cz = hD[0];
var dz = hD[1];
var dc = (((cz << 8) | (cz >>> 24)) & 0x00ff00ff) | (((cz << 24) | (cz >>> 8)) & 0xff00ff00);
var cN = (((dz << 8) | (dz >>> 24)) & 0x00ff00ff) | (((dz << 24) | (dz >>> 8)) & 0xff00ff00);
var fQ = (dc >>> 16) | (cN & 0xffff0000);
var hH = (cN << 16) | (dc & 0x0000ffff);
C[0] ^= dc;
C[1] ^= fQ;
C[2] ^= cN;
C[3] ^= hH;
C[4] ^= dc;
C[5] ^= fQ;
C[6] ^= cN;
C[7] ^= hH;
for (var i = 0; i < 4; i++) {
eQ.call(this);
}
}
},
kq: function (M, offset) {
var X = this.hC;
eQ.call(this);
S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
for (var i = 0; i < 4; i++) {
S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
M[offset + i] ^= S[i];
}
},
bB: 128 / 32,
fN: 64 / 32
});
function eQ() {
var X = this.hC;
var C = this.kt;
for (var i = 0; i < 8; i++) {
aJ[i] = C[i];
}
C[0] = (C[0] + 0x4d34d34d + this.fP) | 0;
C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (aJ[0] >>> 0) ? 1 : 0)) | 0;
C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (aJ[1] >>> 0) ? 1 : 0)) | 0;
C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (aJ[2] >>> 0) ? 1 : 0)) | 0;
C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (aJ[3] >>> 0) ? 1 : 0)) | 0;
C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (aJ[4] >>> 0) ? 1 : 0)) | 0;
C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (aJ[5] >>> 0) ? 1 : 0)) | 0;
C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (aJ[6] >>> 0) ? 1 : 0)) | 0;
this.fP = (C[7] >>> 0) < (aJ[7] >>> 0) ? 1 : 0;
for (var i = 0; i < 8; i++) {
var da = X[i] + C[i];
var eS = da & 0xffff;
var dX = da >>> 16;
var jE = ((((eS * eS) >>> 17) + eS * dX) >>> 15) + dX * dX;
var jc = (((da & 0xffff0000) * da) | 0) + (((da & 0x0000ffff) * da) | 0);
G[i] = jE ^ jc;
}
X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
};
C.jG = dC.jx(jG);
}());
aX.mode.gM = (function () {
var gM = aX.bf.eL.extend();
var cB = gM.cB = gM.extend({
co: function (bq, offset) {
var aT = this.cd;
var bB = aT.bB;
var bP = this.cQ;
var counter = this.jY;
if (bP) {
counter = this.jY = bP.slice(0);
this.cQ = undefined;
}
var cP = counter.slice(0);
aT.fL(cP, 0);
counter[bB - 1] = (counter[bB - 1] + 1) | 0;
for (var i = 0; i < bB; i++) {
bq[offset + i] ^= cP[i];
}
}
});
gM.eZ = cB;
return gM;
}()); (function () {
var C = aX;
var bC = C.bf;
var dC = bC.dC;
var cw = C.jg;
var S = [];
var aJ = [];
var G = [];
var kS = cw.kS = dC.extend({
jf: function () {
var K = this.hJ.bq;
var bP = this.aL.bP;
var X = this.hC = [K[0], (K[3] << 16) | (K[2] >>> 16), K[1], (K[0] << 16) | (K[3] >>> 16), K[2], (K[1] << 16) | (K[0] >>> 16), K[3], (K[2] << 16) | (K[1] >>> 16)];
var C = this.kt = [(K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)];
this.fP = 0;
for (var i = 0; i < 4; i++) {
eQ.call(this);
}
for (var i = 0; i < 8; i++) {
C[i] ^= X[(i + 4) & 7];
}
if (bP) {
var hD = bP.bq;
var cz = hD[0];
var dz = hD[1];
var dc = (((cz << 8) | (cz >>> 24)) & 0x00ff00ff) | (((cz << 24) | (cz >>> 8)) & 0xff00ff00);
var cN = (((dz << 8) | (dz >>> 24)) & 0x00ff00ff) | (((dz << 24) | (dz >>> 8)) & 0xff00ff00);
var fQ = (dc >>> 16) | (cN & 0xffff0000);
var hH = (cN << 16) | (dc & 0x0000ffff);
C[0] ^= dc;
C[1] ^= fQ;
C[2] ^= cN;
C[3] ^= hH;
C[4] ^= dc;
C[5] ^= fQ;
C[6] ^= cN;
C[7] ^= hH;
for (var i = 0; i < 4; i++) {
eQ.call(this);
}
}
},
kq: function (M, offset) {
var X = this.hC;
eQ.call(this);
S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);
S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);
S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);
S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);
for (var i = 0; i < 4; i++) {
S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);
M[offset + i] ^= S[i];
}
},
bB: 128 / 32,
fN: 64 / 32
});
function eQ() {
var X = this.hC;
var C = this.kt;
for (var i = 0; i < 8; i++) {
aJ[i] = C[i];
}
C[0] = (C[0] + 0x4d34d34d + this.fP) | 0;
C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (aJ[0] >>> 0) ? 1 : 0)) | 0;
C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (aJ[1] >>> 0) ? 1 : 0)) | 0;
C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (aJ[2] >>> 0) ? 1 : 0)) | 0;
C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (aJ[3] >>> 0) ? 1 : 0)) | 0;
C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (aJ[4] >>> 0) ? 1 : 0)) | 0;
C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (aJ[5] >>> 0) ? 1 : 0)) | 0;
C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (aJ[6] >>> 0) ? 1 : 0)) | 0;
this.fP = (C[7] >>> 0) < (aJ[7] >>> 0) ? 1 : 0;
for (var i = 0; i < 8; i++) {
var da = X[i] + C[i];
var eS = da & 0xffff;
var dX = da >>> 16;
var jE = ((((eS * eS) >>> 17) + eS * dX) >>> 15) + dX * dX;
var jc = (((da & 0xffff0000) * da) | 0) + (((da & 0x0000ffff) * da) | 0);
G[i] = jE ^ jc;
}
X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;
X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;
X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;
X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;
X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;
X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;
X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;
X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;
};
C.kS = dC.jx(kS);
}());
aX.bH.oQ = {
bH: function (data, bB) {
var cq = bB * 4;
data.ag();
data.aI += cq - ((data.aI % cq) || cq);
},
es: function (data) {
var jk = data.bq;
var i = data.aI - 1;
while (!((jk[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
i--;
}
data.aI = i + 1;
}
};
return aX;
}));
function qh(ns, rd) {
var yg = [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x1A, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x1A, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B];
var gf = "";
var mj = "";
for (var i = 0; i < ns.length; i++) {
mj = String.fromCharCode(ns[i].charCodeAt(0) ^ yg[i]);
gf += mj;
}
gf = gf.substr(0, gf.length - 16);
var wv = aX.bJ.hh.parse(gf);
var wy = aX.iG.bZ(rd, wv, {
mode: aX.mode.ed,
padding: aX.bH.kB
});
return wy.toString();
};
function hash(bS) {
return aX.AF(bS);
};;
var lT = {}; (function (fg) {
var fC;
var wr = 0xdeadbeefcafe;
var mT = ((wr & 0xffffff) == 0xefcafe);
function O(a, b, c) {
if (a != null) if ("number" == typeof a) this.ki(a, b, c);
else if (b == null && "string" != typeof a) this.gw(a, 256);
else this.gw(a, b);
};
function aO() {
return new O(null);
};
function pD(i, x, w, j, c, n) {
while (--n >= 0) {
var v = x * this[i++] + w[j] + c;
c = Math.floor(v / 0x4000000);
w[j++] = v & 0x3ffffff;
}
return c;
};
function sc(i, x, w, j, c, n) {
var gE = x & 0x7fff,
fR = x >> 15;
while (--n >= 0) {
var l = this[i] & 0x7fff;
var h = this[i++] >> 15;
var m = fR * l + h * gE;
l = gE * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);
c = (l >>> 30) + (m >>> 15) + fR * h + (c >>> 30);
w[j++] = l & 0x3fffffff;
}
return c;
};
function rN(i, x, w, j, c, n) {
var gE = x & 0x3fff,
fR = x >> 14;
while (--n >= 0) {
var l = this[i] & 0x3fff;
var h = this[i++] >> 14;
var m = fR * l + h * gE;
l = gE * l + ((m & 0x3fff) << 14) + w[j] + c;
c = (l >> 28) + (m >> 14) + fR * h;
w[j++] = l & 0xfffffff;
}
return c;
};
if (mT && (navigator.appName == "Microsoft Internet Explorer")) {
O.prototype.dN = sc;
fC = 30;
} else if (mT && (navigator.appName != "Netscape")) {
O.prototype.dN = pD;
fC = 26;
} else {
O.prototype.dN = rN;
fC = 28;
}
O.prototype.bb = fC;
O.prototype.aW = ((1 << fC) - 1);
O.prototype.dq = (1 << fC);
var lu = 52;
O.prototype.wY = Math.pow(2, lu);
O.prototype.oK = lu - fC;
O.prototype.oM = 2 * fC - lu;
var vW = "0123456789abcdefghijklmnopqrstuvwxyz";
var ix = new Array();
var eA, cu;
eA = "0".charCodeAt(0);
for (cu = 0; cu <= 9; ++cu) ix[eA++] = cu;
eA = "a".charCodeAt(0);
for (cu = 10; cu < 36; ++cu) ix[eA++] = cu;
eA = "A".charCodeAt(0);
for (cu = 10; cu < 36; ++cu) ix[eA++] = cu;
function dE(n) {
return vW.charAt(n);
};
function mE(s, i) {
var c = ix[s.charCodeAt(i)];
return (c == null) ? -1 : c;
};
function sN(r) {
for (var i = this.t - 1; i >= 0; --i) r[i] = this[i];
r.t = this.t;
r.s = this.s;
};
function qf(x) {
this.t = 1;
this.s = (x < 0) ? -1 : 0;
if (x > 0) this[0] = x;
else if (x < -1) this[0] = x + this.dq;
else this.t = 0;
};
function dV(i) {
var r = aO();
r.gr(i);
return r;
};
function pR(s, b) {
var k;
if (b == 16) k = 4;
else if (b == 8) k = 3;
else if (b == 256) k = 8;
else if (b == 2) k = 1;
else if (b == 32) k = 5;
else if (b == 4) k = 2;
else {
this.wq(s, b);
return;
}
this.t = 0;
this.s = 0;
var i = s.length,
eP = false,
sh = 0;
while (--i >= 0) {
var x = (k == 8) ? s[i] & 0xff : mE(s, i);
if (x < 0) {
if (s.charAt(i) == "-") eP = true;
continue;
}
eP = false;
if (sh == 0) this[this.t++] = x;
else if (sh + k > this.bb) {
this[this.t - 1] |= (x & ((1 << (this.bb - sh)) - 1)) << sh;
this[this.t++] = (x >> (this.bb - sh));
} else this[this.t - 1] |= x << sh;
sh += k;
if (sh >= this.bb) sh -= this.bb;
}
if (k == 8 && (s[0] & 0x80) != 0) {
this.s = -1;
if (sh > 0) this[this.t - 1] |= ((1 << (this.bb - sh)) - 1) << sh;
}
this.ag();
if (eP) O.ZERO.aj(this, this);
};
function sr() {
var c = this.s & this.aW;
while (this.t > 0 && this[this.t - 1] == c)--this.t;
};
function sg(b) {
if (this.s < 0) return "-" + this.fF().toString(b);
var k;
if (b == 16) k = 4;
else if (b == 8) k = 3;
else if (b == 2) k = 1;
else if (b == 32) k = 5;
else if (b == 4) k = 2;
else return this.tj(b);
var jt = (1 << k) - 1,
d,
m = false,
r = "",
i = this.t;
var p = this.bb - (i * this.bb) % k;
if (i-- > 0) {
if (p < this.bb && (d = this[i] >> p) > 0) {
m = true;
r = dE(d);
}
while (i >= 0) {
if (p < k) {
d = (this[i] & ((1 << p) - 1)) << (k - p);
d |= this[--i] >> (p += this.bb - k);
} else {
d = (this[i] >> (p -= k)) & jt;
if (p <= 0) {
p += this.bb; --i;
}
}
if (d > 0) m = true;
if (m) r += dE(d);
}
}
return m ? r : "0";
};
function pF() {
var r = aO();
O.ZERO.aj(this, r);
return r;
};
function rG() {
return (this.s < 0) ? this.fF() : this;
};
function uq(a) {
var r = this.s - a.s;
if (r != 0) return r;
var i = this.t;
r = i - a.t;
if (r != 0) return (this.s < 0) ? -r : r;
while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r;
return 0;
};
function ij(x) {
var r = 1,
t;
if ((t = x >>> 16) != 0) {
x = t;
r += 16;
}
if ((t = x >> 8) != 0) {
x = t;
r += 8;
}
if ((t = x >> 4) != 0) {
x = t;
r += 4;
}
if ((t = x >> 2) != 0) {
x = t;
r += 2;
}
if ((t = x >> 1) != 0) {
x = t;
r += 1;
}
return r;
};
function rK() {
if (this.t <= 0) return 0;
return this.bb * (this.t - 1) + ij(this[this.t - 1] ^ (this.s & this.aW));
};
function qD(n, r) {
var i;
for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i];
for (i = n - 1; i >= 0; --i) r[i] = 0;
r.t = this.t + n;
r.s = this.s;
};
function rg(n, r) {
for (var i = n; i < this.t; ++i) r[i - n] = this[i];
r.t = Math.max(this.t - n, 0);
r.s = this.s;
};
function qZ(n, r) {
var cO = n % this.bb;
var gc = this.bb - cO;
var iJ = (1 << gc) - 1;
var cX = Math.floor(n / this.bb),
c = (this.s << cO) & this.aW,
i;
for (i = this.t - 1; i >= 0; --i) {
r[i + cX + 1] = (this[i] >> gc) | c;
c = (this[i] & iJ) << cO;
}
for (i = cX - 1; i >= 0; --i) r[i] = 0;
r[cX] = c;
r.t = this.t + cX + 1;
r.s = this.s;
r.ag();
};
function sm(n, r) {
r.s = this.s;
var cX = Math.floor(n / this.bb);
if (cX >= this.t) {
r.t = 0;
return;
}
var cO = n % this.bb;
var gc = this.bb - cO;
var iJ = (1 << cO) - 1;
r[0] = this[cX] >> cO;
for (var i = cX + 1; i < this.t; ++i) {
r[i - cX - 1] |= (this[i] & iJ) << gc;
r[i - cX] = this[i] >> cO;
}
if (cO > 0) r[this.t - cX - 1] |= (this.s & iJ) << gc;
r.t = this.t - cX;
r.ag();
};
function sk(a, r) {
var i = 0,
c = 0,
m = Math.min(a.t, this.t);
while (i < m) {
c += this[i] - a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
if (a.t < this.t) {
c -= a.s;
while (i < this.t) {
c += this[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c += this.s;
} else {
c += this.s;
while (i < a.t) {
c -= a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c -= a.s;
}
r.s = (c < 0) ? -1 : 0;
if (c < -1) r[i++] = this.dq + c;
else if (c > 0) r[i++] = c;
r.t = i;
r.ag();
};
function sT(a, r) {
var x = this.abs(),
y = a.abs();
var i = x.t;
r.t = i + y.t;
while (--i >= 0) r[i] = 0;
for (i = 0; i < y.t; ++i) r[i + x.t] = x.dN(0, y[i], r, i, 0, x.t);
r.s = 0;
r.ag();
if (this.s != a.s) O.ZERO.aj(r, r);
};
function st(r) {
var x = this.abs();
var i = r.t = 2 * x.t;
while (--i >= 0) r[i] = 0;
for (i = 0; i < x.t - 1; ++i) {
var c = x.dN(i, x[i], r, 2 * i, 0, 1);
if ((r[i + x.t] += x.dN(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.dq) {
r[i + x.t] -= x.dq;
r[i + x.t + 1] = 1;
}
}
if (r.t > 0) r[r.t - 1] += x.dN(i, x[i], r, 2 * i, 0, 1);
r.s = 0;
r.ag();
};
function qk(m, q, r) {
var pm = m.abs();
if (pm.t <= 0) return;
var pt = this.abs();
if (pt.t < pm.t) {
if (q != null) q.gr(0);
if (r != null) this.eB(r);
return;
}
if (r == null) r = aO();
var y = aO(),
pq = this.s,
ms = m.s;
var hj = this.bb - ij(pm[pm.t - 1]);
if (hj > 0) {
pm.fB(hj, y);
pt.fB(hj, r);
} else {
pm.eB(y);
pt.eB(r);
}
var cE = y.t;
var ik = y[cE - 1];
if (ik == 0) return;
var nN = ik * (1 << this.oK) + ((cE > 1) ? y[cE - 2] >> this.oM : 0);
var xG = this.wY / nN,
yn = (1 << this.oK) / nN,
e = 1 << this.oM;
var i = r.t,
j = i - cE,
t = (q == null) ? aO() : q;
y.gG(j, t);
if (r.az(t) >= 0) {
r[r.t++] = 1;
r.aj(t, r);
}
O.ONE.gG(cE, t);
t.aj(y, y);
while (y.t < cE) y[y.t++] = 0;
while (--j >= 0) {
var jL = (r[--i] == ik) ? this.aW : Math.floor(r[i] * xG + (r[i - 1] + e) * yn);
if ((r[i] += y.dN(0, jL, r, j, 0, cE)) < jL) {
y.gG(j, t);
r.aj(t, r);
while (r[i] < --jL) r.aj(t, r);
}
}
if (q != null) {
r.gk(cE, q);
if (pq != ms) O.ZERO.aj(q, q);
}
r.t = cE;
r.ag();
if (hj > 0) r.aD(hj, r);
if (pq < 0) O.ZERO.aj(r, r);
};
function sD(a) {
var r = aO();
this.abs().ey(a, null, r);
if (this.s < 0 && r.az(O.ZERO) > 0) a.aj(r, r);
return r;
};
function ew(m) {
this.m = m;
};
function rS(x) {
if (x.s < 0 || x.az(this.m) >= 0) return x.dn(this.m);
else return x;
};
function sS(x) {
return x;
};
function sj(x) {
x.ey(this.m, null, x);
};
function rZ(x, y, r) {
x.fW(y, r);
this.reduce(r);
};
function rF(x, r) {
x.gL(r);
this.reduce(r);
};
ew.prototype.convert = rS;
ew.prototype.revert = sS;
ew.prototype.reduce = sj;
ew.prototype.eb = rZ;
ew.prototype.cL = rF;
function rm() {
if (this.t < 1) return 0;
var x = this[0];
if ((x & 1) == 0) return 0;
var y = x & 3;
y = (y * (2 - (x & 0xf) * y)) & 0xf;
y = (y * (2 - (x & 0xff) * y)) & 0xff;
y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff;
y = (y * (2 - x * y % this.dq)) % this.dq;
return (y > 0) ? this.dq - y : -y;
};
function dY(m) {
this.m = m;
this.mQ = m.wc();
this.mF = this.mQ & 0x7fff;
this.wf = this.mQ >> 15;
this.sL = (1 << (m.bb - 15)) - 1;
this.yF = 2 * m.t;
};
function pf(x) {
var r = aO();
x.abs().gG(this.m.t, r);
r.ey(this.m, null, r);
if (x.s < 0 && r.az(O.ZERO) > 0) this.m.aj(r, r);
return r;
};
function qz(x) {
var r = aO();
x.eB(r);
this.reduce(r);
return r;
};
function pN(x) {
while (x.t <= this.yF) x[x.t++] = 0;
for (var i = 0; i < this.m.t; ++i) {
var j = x[i] & 0x7fff;
var tc = (j * this.mF + (((j * this.wf + (x[i] >> 15) * this.mF) & this.sL) << 15)) & x.aW;
j = i + this.m.t;
x[j] += this.m.dN(0, tc, x, i, 0, this.m.t);
while (x[j] >= x.dq) {
x[j] -= x.dq;
x[++j]++;
}
}
x.ag();
x.gk(this.m.t, x);
if (x.az(this.m) >= 0) x.aj(this.m, x);
};
function qy(x, r) {
x.gL(r);
this.reduce(r);
};
function ov(x, y, r) {
x.fW(y, r);
this.reduce(r);
};
dY.prototype.convert = pf;
dY.prototype.revert = qz;
dY.prototype.reduce = pN;
dY.prototype.eb = ov;
dY.prototype.cL = qy;
function qB() {
return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;
};
function qK(e, z) {
if (e > 0xffffffff || e < 1) return O.ONE;
var r = aO(),
r2 = aO(),
g = z.convert(this),
i = ij(e) - 1;
g.eB(r);
while (--i >= 0) {
z.cL(r, r2);
if ((e & (1 << i)) > 0) z.eb(r2, g, r);
else {
var t = r;
r = r2;
r2 = t;
}
}
return z.revert(r);
};
function rO(e, m) {
var z;
if (e < 256 || m.cU()) z = new ew(m);
else z = new dY(m);
return this.exp(e, z);
};
O.prototype.eB = sN;
O.prototype.gr = qf;
O.prototype.gw = pR;
O.prototype.ag = sr;
O.prototype.gG = qD;
O.prototype.gk = rg;
O.prototype.fB = qZ;
O.prototype.aD = sm;
O.prototype.aj = sk;
O.prototype.fW = sT;
O.prototype.gL = st;
O.prototype.ey = qk;
O.prototype.wc = rm;
O.prototype.cU = qB;
O.prototype.exp = qK;
O.prototype.toString = sg;
O.prototype.fF = pF;
O.prototype.abs = rG;
O.prototype.az = uq;
O.prototype.ho = rK;
O.prototype.dn = sD;
O.prototype.mk = rO;
O.ZERO = dV(0);
O.ONE = dV(1);
function uy() {
var r = aO();
this.eB(r);
return r;
};
function sO() {
if (this.s < 0) {
if (this.t == 1) return this[0] - this.dq;
else if (this.t == 0) return - 1;
} else if (this.t == 1) return this[0];
else if (this.t == 0) return 0;
return ((this[1] & ((1 << (32 - this.bb)) - 1)) << this.bb) | this[0];
};
function ss() {
return (this.t == 0) ? this.s : (this[0] << 24) >> 24;
};
function sY() {
return (this.t == 0) ? this.s : (this[0] << 16) >> 16;
};
function sb(r) {
return Math.floor(Math.LN2 * this.bb / Math.log(r));
};
function si() {
if (this.s < 0) return - 1;
else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
else return 1;
};
function rI(b) {
if (b == null) b = 10;
if (this.dh() == 0 || b < 2 || b > 36) return "0";
var cs = this.lL(b);
var a = Math.pow(b, cs);
var d = dV(a),
y = aO(),
z = aO(),
r = "";
this.ey(d, y, z);
while (y.dh() > 0) {
r = (a + z.hy()).toString(b).substr(1) + r;
y.ey(d, y, z);
}
return z.hy().toString(b) + r;
};
function qP(s, b) {
this.gr(0);
if (b == null) b = 10;
var cs = this.lL(b);
var d = Math.pow(b, cs),
eP = false,
j = 0,
w = 0;
for (var i = 0; i < s.length; ++i) {
var x = mE(s, i);
if (x < 0) {
if (s.charAt(i) == "-" && this.dh() == 0) eP = true;
continue;
}
w = b * w + x;
if (++j >= cs) {
this.oa(d);
this.eD(w, 0);
j = 0;
w = 0;
}
}
if (j > 0) {
this.oa(Math.pow(b, j));
this.eD(w, 0);
}
if (eP) O.ZERO.aj(this, this);
};
function qW(a, b, c) {
if ("number" == typeof b) {
if (a < 2) this.gr(1);
else {
this.ki(a, c);
if (!this.lZ(a - 1)) this.J(O.ONE.shiftLeft(a - 1), jC, this);
if (this.cU()) this.eD(1, 0);
while (!this.gJ(b)) {
this.eD(2, 0);
if (this.ho() > a) this.aj(O.ONE.shiftLeft(a - 1), this);
}
}
} else {
var x = new Array(),
t = a & 7;
x.length = (a >> 3) + 1;
b.lp(x);
if (t > 0) x[0] &= ((1 << t) - 1);
else x[0] = 0;
this.gw(x, 256);
}
};
function rJ() {
var i = this.t,
r = new Array();
r[0] = this.s;
var p = this.bb - (i * this.bb) % 8,
d,
k = 0;
if (i-- > 0) {
if (p < this.bb && (d = this[i] >> p) != (this.s & this.aW) >> p) r[k++] = d | (this.s << (this.bb - p));
while (i >= 0) {
if (p < 8) {
d = (this[i] & ((1 << p) - 1)) << (8 - p);
d |= this[--i] >> (p += this.bb - 8);
} else {
d = (this[i] >> (p -= 8)) & 0xff;
if (p <= 0) {
p += this.bb; --i;
}
}
if ((d & 0x80) != 0) d |= -256;
if (k == 0 && (this.s & 0x80) != (d & 0x80))++k;
if (k > 0 || d != this.s) r[k++] = d;
}
}
return r;
};
function tA(a) {
return (this.az(a) == 0);
};
function bQ(a) {
return (this.az(a) < 0) ? this : a;
};
function rz(a) {
return (this.az(a) > 0) ? this : a;
};
function pZ(a, ej, r) {
var i, f, m = Math.min(a.t, this.t);
for (i = 0; i < m; ++i) r[i] = ej(this[i], a[i]);
if (a.t < this.t) {
f = a.s & this.aW;
for (i = m; i < this.t; ++i) r[i] = ej(this[i], f);
r.t = this.t;
} else {
f = this.s & this.aW;
for (i = m; i < a.t; ++i) r[i] = ej(f, a[i]);
r.t = a.t;
}
r.s = ej(this.s, a.s);
r.ag();
};
function ri(x, y) {
return x & y;
};
function sM(a) {
var r = aO();
this.J(a, ri, r);
return r;
};
function jC(x, y) {
return x | y;
};
function qI(a) {
var r = aO();
this.J(a, jC, r);
return r;
};
function oz(x, y) {
return x ^ y;
};
function sC(a) {
var r = aO();
this.J(a, oz, r);
return r;
};
function oS(x, y) {
return x & ~y;
};
function sU(a) {
var r = aO();
this.J(a, oS, r);
return r;
};
function qc() {
var r = aO();
for (var i = 0; i < this.t; ++i) r[i] = this.aW & ~this[i];
r.t = this.t;
r.s = ~this.s;
return r;
};
function rv(n) {
var r = aO();
if (n < 0) this.aD(- n, r);
else this.fB(n, r);
return r;
};
function sQ(n) {
var r = aO();
if (n < 0) this.fB(- n, r);
else this.aD(n, r);
return r;
};
function nB(x) {
if (x == 0) return - 1;
var r = 0;
if ((x & 0xffff) == 0) {
x >>= 16;
r += 16;
}
if ((x & 0xff) == 0) {
x >>= 8;
r += 8;
}
if ((x & 0xf) == 0) {
x >>= 4;
r += 4;
}
if ((x & 3) == 0) {
x >>= 2;
r += 2;
}
if ((x & 1) == 0)++r;
return r;
};
function sy() {
for (var i = 0; i < this.t; ++i) if (this[i] != 0) return i * this.bb + nB(this[i]);
if (this.s < 0) return this.t * this.bb;
return - 1;
};
function ta(x) {
var r = 0;
while (x != 0) {
x &= x - 1; ++r;
}
return r;
};
function rM() {
var r = 0,
x = this.s & this.aW;
for (var i = 0; i < this.t; ++i) r += ta(this[i] ^ x);
return r;
};
function sH(n) {
var j = Math.floor(n / this.bb);
if (j >= this.t) return (this.s != 0);
return ((this[j] & (1 << (n % this.bb))) != 0);
};
function tk(n, ej) {
var r = O.ONE.shiftLeft(n);
this.J(r, ej, r);
return r;
};
function rq(n) {
return this.jP(n, jC);
};
function uT(n) {
return this.jP(n, oS);
};
function tS(n) {
return this.jP(n, oz);
};
function pO(a, r) {
var i = 0,
c = 0,
m = Math.min(a.t, this.t);
while (i < m) {
c += this[i] + a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
if (a.t < this.t) {
c += a.s;
while (i < this.t) {
c += this[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c += this.s;
} else {
c += this.s;
while (i < a.t) {
c += a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c += a.s;
}
r.s = (c < 0) ? -1 : 0;
if (c > 0) r[i++] = c;
else if (c < -1) r[i++] = this.dq + c;
r.t = i;
r.ag();
};
function sX(a) {
var r = aO();
this.jh(a, r);
return r;
};
function sl(a) {
var r = aO();
this.aj(a, r);
return r;
};
function sV(a) {
var r = aO();
this.fW(a, r);
return r;
};
function sR() {
var r = aO();
this.gL(r);
return r;
};
function su(a) {
var r = aO();
this.ey(a, r, null);
return r;
};
function rH(a) {
var r = aO();
this.ey(a, null, r);
return r;
};
function uI(a) {
var q = aO(),
r = aO();
this.ey(a, q, r);
return new Array(q, r);
};
function qt(n) {
this[this.t] = this.dN(0, n - 1, this, 0, 0, this.t); ++this.t;
this.ag();
};
function qH(n, w) {
if (n == 0) return;
while (this.t <= w) this[this.t++] = 0;
this[w] += n;
while (this[w] >= this.dq) {
this[w] -= this.dq;
if (++w >= this.t) this[this.t++] = 0; ++this[w];
}
};
function gR() { };
function oW(x) {
return x;
};
function pL(x, y, r) {
x.fW(y, r);
};
function qr(x, r) {
x.gL(r);
};
gR.prototype.convert = oW;
gR.prototype.revert = oW;
gR.prototype.eb = pL;
gR.prototype.cL = qr;
function tg(e) {
return this.exp(e, new gR());
};
function rs(a, n, r) {
var i = Math.min(this.t + a.t, n);
r.s = 0;
r.t = i;
while (i > 0) r[--i] = 0;
var j;
for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.dN(0, a[i], r, i, 0, this.t);
for (j = Math.min(a.t, n); i < j; ++i) this.dN(0, a[i], r, i, 0, n - i);
r.ag();
};
function rU(a, n, r) {
--n;
var i = r.t = this.t + a.t - n;
r.s = 0;
while (--i >= 0) r[i] = 0;
for (i = Math.max(n - this.t, 0); i < a.t; ++i) r[this.t + i - n] = this.dN(n - i, a[i], r, 0, 0, this.t + i - n);
r.ag();
r.gk(1, r);
};
function dW(m) {
this.r2 = aO();
this.nj = aO();
O.ONE.gG(2 * m.t, this.r2);
this.xB = this.r2.divide(m);
this.m = m;
};
function rC(x) {
if (x.s < 0 || x.t > 2 * this.m.t) return x.dn(this.m);
else if (x.az(this.m) < 0) return x;
else {
var r = aO();
x.eB(r);
this.reduce(r);
return r;
}
};
function sf(x) {
return x;
};
function ru(x) {
x.gk(this.m.t - 1, this.r2);
if (x.t > this.m.t + 1) {
x.t = this.m.t + 1;
x.ag();
}
this.xB.yA(this.r2, this.m.t + 1, this.nj);
this.m.yk(this.nj, this.m.t + 1, this.r2);
while (x.az(this.r2) < 0) x.eD(1, this.m.t + 1);
x.aj(this.r2, x);
while (x.az(this.m) >= 0) x.aj(this.m, x);
};
function tf(x, r) {
x.gL(r);
this.reduce(r);
};
function sB(x, y, r) {
x.fW(y, r);
this.reduce(r);
};
dW.prototype.convert = rC;
dW.prototype.revert = sf;
dW.prototype.reduce = ru;
dW.prototype.eb = sB;
dW.prototype.cL = tf;
function sd(e, m) {
var i = e.ho(),
k,
r = dV(1),
z;
if (i <= 0) return r;
else if (i < 18) k = 1;
else if (i < 48) k = 3;
else if (i < 144) k = 4;
else if (i < 768) k = 5;
else k = 6;
if (i < 8) z = new ew(m);
else if (m.cU()) z = new dW(m);
else z = new dY(m);
var g = new Array(),
n = 3,
fY = k - 1,
jt = (1 << k) - 1;
g[1] = z.convert(this);
if (k > 1) {
var oi = aO();
z.cL(g[1], oi);
while (n <= jt) {
g[n] = aO();
z.eb(oi, g[n - 2], g[n]);
n += 2;
}
}
var j = e.t - 1,
w, nC = true,
r2 = aO(),
t;
i = ij(e[j]) - 1;
while (j >= 0) {
if (i >= fY) w = (e[j] >> (i - fY)) & jt;
else {
w = (e[j] & ((1 << (i + 1)) - 1)) << (fY - i);
if (j > 0) w |= e[j - 1] >> (this.bb + i - fY);
}
n = k;
while ((w & 1) == 0) {
w >>= 1; --n;
}
if ((i -= n) < 0) {
i += this.bb; --j;
}
if (nC) {
g[w].eB(r);
nC = false;
} else {
while (n > 1) {
z.cL(r, r2);
z.cL(r2, r);
n -= 2;
}
if (n > 0) z.cL(r, r2);
else {
t = r;
r = r2;
r2 = t;
}
z.eb(r2, g[w], r);
}
while (j >= 0 && (e[j] & (1 << i)) == 0) {
z.cL(r, r2);
t = r;
r = r2;
r2 = t;
if (--i < 0) {
i = this.bb - 1; --j;
}
}
}
return z.revert(r);
};
function rV(a) {
var x = (this.s < 0) ? this.fF() : this.clone();
var y = (a.s < 0) ? a.fF() : a.clone();
if (x.az(y) < 0) {
var t = x;
x = y;
y = t;
}
var i = x.cg(),
g = y.cg();
if (g < 0) return x;
if (i < g) g = i;
if (g > 0) {
x.aD(g, x);
y.aD(g, y);
}
while (x.dh() > 0) {
if ((i = x.cg()) > 0) x.aD(i, x);
if ((i = y.cg()) > 0) y.aD(i, y);
if (x.az(y) >= 0) {
x.aj(y, x);
x.aD(1, x);
} else {
y.aj(x, y);
y.aD(1, y);
}
}
if (g > 0) y.fB(g, y);
return y;
};
function pW(n) {
if (n <= 0) return 0;
var d = this.dq % n,
r = (this.s < 0) ? n - 1 : 0;
if (this.t > 0) if (d == 0) r = this[0] % n;
else for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n;
return r;
};
function sG(m) {
var he = m.cU();
if ((this.cU() && he) || m.dh() == 0) return O.ZERO;
var u = m.clone(),
v = this.clone();
var a = dV(1),
b = dV(0),
c = dV(0),
d = dV(1);
while (u.dh() != 0) {
while (u.cU()) {
u.aD(1, u);
if (he) {
if (!a.cU() || !b.cU()) {
a.jh(this, a);
b.aj(m, b);
}
a.aD(1, a);
} else if (!b.cU()) b.aj(m, b);
b.aD(1, b);
}
while (v.cU()) {
v.aD(1, v);
if (he) {
if (!c.cU() || !d.cU()) {
c.jh(this, c);
d.aj(m, d);
}
c.aD(1, c);
} else if (!d.cU()) d.aj(m, d);
d.aD(1, d);
}
if (u.az(v) >= 0) {
u.aj(v, u);
if (he) a.aj(c, a);
b.aj(d, b);
} else {
v.aj(u, v);
if (he) c.aj(a, c);
d.aj(b, d);
}
}
if (v.az(O.ONE) != 0) return O.ZERO;
if (d.az(m) >= 0) return d.cK(m);
if (d.dh() < 0) d.jh(m, d);
else return d;
if (d.dh() < 0) return d.add(m);
else return d;
};
var dR = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];
var wN = (1 << 26) / dR[dR.length - 1];
function rY(t) {
var i, x = this.abs();
if (x.t == 1 && x[0] <= dR[dR.length - 1]) {
for (i = 0; i < dR.length; ++i) if (x[0] == dR[i]) return true;
return false;
}
if (x.cU()) return false;
i = 1;
while (i < dR.length) {
var m = dR[i],
j = i + 1;
while (j < dR.length && m < wN) m *= dR[j++];
m = x.wt(m);
while (i < j) if (m % dR[i++] == 0) return false;
}
return x.vn(t);
};
function pM(t) {
var gd = this.cK(O.ONE);
var k = gd.cg();
if (k <= 0) return false;
var r = gd.sq(k);
t = (t + 1) >> 1;
if (t > dR.length) t = dR.length;
var a = aO();
for (var i = 0; i < t; ++i) {
a.gr(dR[Math.floor(Math.random() * dR.length)]);
var y = a.hZ(r, this);
if (y.az(O.ONE) != 0 && y.az(gd) != 0) {
var j = 1;
while (j++ < k && y.az(gd) != 0) {
y = y.mk(2, this);
if (y.az(O.ONE) == 0) return false;
}
if (y.az(gd) != 0) return false;
}
}
return true;
};
O.prototype.lL = sb;
O.prototype.tj = rI;
O.prototype.wq = qP;
O.prototype.ki = qW;
O.prototype.J = pZ;
O.prototype.jP = tk;
O.prototype.jh = pO;
O.prototype.oa = qt;
O.prototype.eD = qH;
O.prototype.yk = rs;
O.prototype.yA = rU;
O.prototype.wt = pW;
O.prototype.vn = pM;
O.prototype.clone = uy;
O.prototype.hy = sO;
O.prototype.AI = ss;
O.prototype.yL = sY;
O.prototype.dh = si;
O.prototype.ti = rJ;
O.prototype.zD = tA;
O.prototype.min = bQ;
O.prototype.max = rz;
O.prototype.and = sM;
O.prototype.ct = qI;
O.prototype.xor = sC;
O.prototype.xR = sU;
O.prototype.not = qc;
O.prototype.shiftLeft = rv;
O.prototype.sq = sQ;
O.prototype.cg = sy;
O.prototype.zj = rM;
O.prototype.lZ = sH;
O.prototype.Ae = rq;
O.prototype.AA = uT;
O.prototype.xs = tS;
O.prototype.add = sX;
O.prototype.cK = sl;
O.prototype.multiply = sV;
O.prototype.divide = su;
O.prototype.Af = rH;
O.prototype.zA = uI;
O.prototype.hZ = sd;
O.prototype.ja = sG;
O.prototype.pow = tg;
O.prototype.hG = rV;
O.prototype.gJ = rY;
O.prototype.square = sR;
function lh() {
this.i = 0;
this.j = 0;
this.S = new Array();
};
function rW(key) {
var i, j, t;
for (i = 0; i < 256; ++i) this.S[i] = i;
j = 0;
for (i = 0; i < 256; ++i) {
j = (j + this.S[i] + key[i % key.length]) & 255;
t = this.S[i];
this.S[i] = this.S[j];
this.S[j] = t;
}
this.i = 0;
this.j = 0;
};
function sF() {
var t;
this.i = (this.i + 1) & 255;
this.j = (this.j + this.S[this.i]) & 255;
t = this.S[this.i];
this.S[this.i] = this.S[this.j];
this.S[this.j] = t;
return this.S[(t + this.S[this.i]) & 255];
};
lh.prototype.aV = rW;
lh.prototype.next = sF;
function rc() {
return new lh();
};
var kT = 256;
var iB;
var eK;
var cS;
if (eK == null) {
eK = new Array();
cS = 0;
var t;
if (window.crypto && window.crypto.ww) {
var z = new sI(256);
window.crypto.ww(z);
for (t = 0; t < z.length; ++t) eK[cS++] = z[t] & 255;
}
var jl = function (cv) {
this.count = this.count || 0;
if (this.count >= 256 || cS >= kT) {
if (window.removeEventListener) window.removeEventListener("mousemove", jl);
else if (window.detachEvent) window.detachEvent("onmousemove", jl);
return;
}
this.count += 1;
var vq = cv.x + cv.y;
eK[cS++] = vq & 255;
};
if (window.addEventListener) window.addEventListener("mousemove", jl);
else if (window.attachEvent) window.attachEvent("onmousemove", jl);
}
function pH() {
if (iB == null) {
iB = rc();
while (cS < kT) {
var random = Math.floor(65536 * Math.random());
eK[cS++] = random & 255;
}
iB.aV(eK);
for (cS = 0; cS < eK.length; ++cS) eK[cS] = 0;
cS = 0;
}
return iB.next();
};
function pQ(dj) {
var i;
for (i = 0; i < dj.length; ++i) dj[i] = pH();
};
function js() { };
js.prototype.lp = pQ;
function bw(bS, r) {
return new O(bS, r);
};
function yW(s, n) {
var bk = "";
var i = 0;
while (i + n < s.length) {
bk += s.substring(i, i + n) + "\n";
i += n;
}
return bk + s.substring(i, s.length);
};
function zi(b) {
if (b < 0x10) return "0" + b.toString(16);
else return b.toString(16);
};
function pE(s, n) {
if (n < s.length + 11) {
console.error("Message too long for RSA");
return null;
}
var dj = new Array();
var i = s.length - 1;
while (i >= 0 && n > 0) {
var c = s.charCodeAt(i--);
if (c < 128) {
dj[--n] = c;
} else if ((c > 127) && (c < 2048)) {
dj[--n] = (c & 63) | 128;
dj[--n] = (c >> 6) | 192;
} else {
dj[--n] = (c & 63) | 128;
dj[--n] = ((c >> 6) & 63) | 128;
dj[--n] = (c >> 12) | 224;
}
}
dj[--n] = 0;
var fs = new js();
var x = new Array();
while (n > 2) {
x[0] = 0;
while (x[0] == 0) fs.lp(x);
dj[--n] = x[0];
}
dj[--n] = 2;
dj[--n] = 0;
return new O(dj);
};
function ae() {
this.n = null;
this.e = 0;
this.d = null;
this.p = null;
this.q = null;
this.ca = null;
this.dK = null;
this.dr = null;
};
function qu(N, E) {
if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = bw(N, 16);
this.e = parseInt(E, 16);
} else console.error("Invalid RSA public key");
};
function ql(x) {
return x.mk(this.e, this.n);
};
function pv(text) {
var m = pE(text, (this.n.ho() + 7) >> 3);
if (m == null) return null;
var c = this.xa(m);
if (c == null) return null;
var h = c.toString(16);
if ((h.length & 1) == 0){ h = h;}
else {h = "0" + h;}
if (h.length == 510){
h = "00" + h;
}
return h;
};
ae.prototype.xa = ql;
ae.prototype.AU = qu;
ae.prototype.bZ = pv;
function ra(d, n) {
var b = d.ti();
var i = 0;
while (i < b.length && b[i] == 0)++i;
if (b.length - i != n - 1 || b[i] != 2) return null; ++i;
while (b[i] != 0) if (++i >= b.length) return null;
var bk = "";
while (++i < b.length) {
var c = b[i] & 255;
if (c < 128) {
bk += String.fromCharCode(c);
} else if ((c > 191) && (c < 224)) {
bk += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63)); ++i;
} else {
bk += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));
i += 2;
}
}
return bk;
};
function qX(N, E, D) {
if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = bw(N, 16);
this.e = parseInt(E, 16);
this.d = bw(D, 16);
} else console.error("Invalid RSA private key");
};
function qm(N, E, D, P, Q, wK, wU, C) {
if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = bw(N, 16);
this.e = parseInt(E, 16);
this.d = bw(D, 16);
this.p = bw(P, 16);
this.q = bw(Q, 16);
this.ca = bw(wK, 16);
this.dK = bw(wU, 16);
this.dr = bw(C, 16);
} else console.error("Invalid RSA private key");
};
function pw(B, E) {
var fs = new js();
var hl = B >> 1;
this.e = parseInt(E, 16);
var bx = new O(E, 16);
for (; ;) {
for (; ;) {
this.p = new O(B - hl, 1, fs);
if (this.p.cK(O.ONE).hG(bx).az(O.ONE) == 0 && this.p.gJ(10)) break;
}
for (; ;) {
this.q = new O(hl, 1, fs);
if (this.q.cK(O.ONE).hG(bx).az(O.ONE) == 0 && this.q.gJ(10)) break;
}
if (this.p.az(this.q) <= 0) {
var t = this.p;
this.p = this.q;
this.q = t;
}
var gm = this.p.cK(O.ONE);
var hf = this.q.cK(O.ONE);
var hz = gm.multiply(hf);
if (hz.hG(bx).az(O.ONE) == 0) {
this.n = this.p.multiply(this.q);
this.d = bx.ja(hz);
this.ca = this.d.dn(gm);
this.dK = this.d.dn(hf);
this.dr = this.q.ja(this.p);
break;
}
}
};
function qR(x) {
if (this.p == null || this.q == null) return x.hZ(this.d, this.n);
var iX = x.dn(this.p).hZ(this.ca, this.p);
var iU = x.dn(this.q).hZ(this.dK, this.q);
while (iX.az(iU) < 0) iX = iX.add(this.p);
return iX.cK(iU).multiply(this.dr).dn(this.p).multiply(this.q).add(iU);
};
function pJ(yM) {
var c = bw(yM, 16);
var m = this.vi(c);
if (m == null) return null;
return ra(m, (this.n.ho() + 7) >> 3);
};
ae.prototype.vi = qR;
ae.prototype.yU = qX;
ae.prototype.ye = qm;
ae.prototype.generate = pw;
ae.prototype.eV = pJ; (function () {
var sA = function (B, E, callback) {
var fs = new js();
var hl = B >> 1;
this.e = parseInt(E, 16);
var bx = new O(E, 16);
var aa = this;
var lM = function () {
var vB = function () {
if (aa.p.az(aa.q) <= 0) {
var t = aa.p;
aa.p = aa.q;
aa.q = t;
}
var gm = aa.p.cK(O.ONE);
var hf = aa.q.cK(O.ONE);
var hz = gm.multiply(hf);
if (hz.hG(bx).az(O.ONE) == 0) {
aa.n = aa.p.multiply(aa.q);
aa.d = bx.ja(hz);
aa.ca = aa.d.dn(gm);
aa.dK = aa.d.dn(hf);
aa.dr = aa.q.ja(aa.p);
setTimeout(function () {
callback()
},
0);
} else {
setTimeout(lM, 0);
}
};
var nb = function () {
aa.q = aO();
aa.q.oV(hl, 1, fs,
function () {
aa.q.cK(O.ONE).oZ(bx,
function (r) {
if (r.az(O.ONE) == 0 && aa.q.gJ(10)) {
setTimeout(vB, 0);
} else {
setTimeout(nb, 0);
}
});
});
};
var mD = function () {
aa.p = aO();
aa.p.oV(B - hl, 1, fs,
function () {
aa.p.cK(O.ONE).oZ(bx,
function (r) {
if (r.az(O.ONE) == 0 && aa.p.gJ(10)) {
setTimeout(nb, 0);
} else {
setTimeout(mD, 0);
}
});
});
};
setTimeout(mD, 0);
};
setTimeout(lM, 0);
};
ae.prototype.vS = sA;
var vA = function (a, callback) {
var x = (this.s < 0) ? this.fF() : this.clone();
var y = (a.s < 0) ? a.fF() : a.clone();
if (x.az(y) < 0) {
var t = x;
x = y;
y = t;
}
var i = x.cg(),
g = y.cg();
if (g < 0) {
callback(x);
return;
}
if (i < g) g = i;
if (g > 0) {
x.aD(g, x);
y.aD(g, y);
}
var oO = function () {
if ((i = x.cg()) > 0) {
x.aD(i, x);
}
if ((i = y.cg()) > 0) {
y.aD(i, y);
}
if (x.az(y) >= 0) {
x.aj(y, x);
x.aD(1, x);
} else {
y.aj(x, y);
y.aD(1, y);
}
if (!(x.dh() > 0)) {
if (g > 0) y.fB(g, y);
setTimeout(function () {
callback(y)
},
0);
} else {
setTimeout(oO, 0);
}
};
setTimeout(oO, 10);
};
O.prototype.oZ = vA;
var wZ = function (a, b, c, callback) {
if ("number" == typeof b) {
if (a < 2) {
this.gr(1);
} else {
this.ki(a, c);
if (!this.lZ(a - 1)) {
this.J(O.ONE.shiftLeft(a - 1), jC, this);
}
if (this.cU()) {
this.eD(1, 0);
}
var gy = this;
var lO = function () {
gy.eD(2, 0);
if (gy.ho() > a) gy.aj(O.ONE.shiftLeft(a - 1), gy);
if (gy.gJ(b)) {
setTimeout(function () {
callback()
},
0);
} else {
setTimeout(lO, 0);
}
};
setTimeout(lO, 0);
}
} else {
var x = new Array(),
t = a & 7;
x.length = (a >> 3) + 1;
b.lp(x);
if (t > 0) x[0] &= ((1 << t) - 1);
else x[0] = 0;
this.gw(x, 256);
}
};
O.prototype.oV = wZ;
})();
var fZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var mR = "=";
function nM(h) {
var i;
var c;
var bk = "";
for (i = 0; i + 3 <= h.length; i += 3) {
c = parseInt(h.substring(i, i + 3), 16);
bk += fZ.charAt(c >> 6) + fZ.charAt(c & 63);
}
if (i + 1 == h.length) {
c = parseInt(h.substring(i, i + 1), 16);
bk += fZ.charAt(c << 2);
} else if (i + 2 == h.length) {
c = parseInt(h.substring(i, i + 2), 16);
bk += fZ.charAt(c >> 2) + fZ.charAt((c & 3) << 4);
}
while ((bk.length & 3) > 0) bk += mR;
return bk;
};
function kI(s) {
var bk = "";
var i;
var k = 0;
var eY;
for (i = 0; i < s.length; ++i) {
if (s.charAt(i) == mR) break;
v = fZ.indexOf(s.charAt(i));
if (v < 0) continue;
if (k == 0) {
bk += dE(v >> 2);
eY = v & 3;
k = 1;
} else if (k == 1) {
bk += dE((eY << 2) | (v >> 4));
eY = v & 0xf;
k = 2;
} else if (k == 2) {
bk += dE(eY);
bk += dE(v >> 2);
eY = v & 3;
k = 3;
} else {
bk += dE((eY << 2) | (v >> 4));
bk += dE(v & 0xf);
k = 0;
}
}
if (k == 1) bk += dE(eY << 2);
return bk;
};
function Ag(s) {
var h = kI(s);
var i;
var a = new Array();
for (i = 0; 2 * i < h.length; ++i) {
a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);
}
return a;
};
var as = as || {};
as.gU = as.gU || {};
var L = as,
kC = Object.prototype,
vC = '[object Function]',
mG = ["toString", "valueOf"];
as.gU.rn = function (xA) {
var bW = function (s) {
var c = 0;
return parseFloat(s.replace(/\./g,
function () {
return (c++ == 1) ? '' : '.';
}));
},
nav = navigator,
o = {
pb: 0,
opera: 0,
oG: 0,
webkit: 0,
chrome: 0,
hB: null,
yR: 0,
ipad: 0,
iphone: 0,
ipod: 0,
ios: null,
yI: 0,
pY: 0,
AD: nav && nav.AL,
secure: false,
lB: null
},
ua = xA || (navigator && navigator.userAgent),
mJ = window && window.location,
href = mJ && mJ.href,
m;
o.secure = href && (href.toLowerCase().indexOf("https") === 0);
if (ua) {
if ((/windows|win32/i).test(ua)) {
o.lB = 'windows';
} else if ((/macintosh/i).test(ua)) {
o.lB = 'macintosh';
} else if ((/rhino/i).test(ua)) {
o.lB = 'rhino';
}
if ((/KHTML/).test(ua)) {
o.webkit = 1;
}
m = ua.match(/AppleWebKit\/([^\s]*)/);
if (m && m[1]) {
o.webkit = bW(m[1]);
if (/ Mobile\//.test(ua)) {
o.hB = 'Apple';
m = ua.match(/OS ([^\s]*)/);
if (m && m[1]) {
m = bW(m[1].replace('_', '.'));
}
o.ios = m;
o.ipad = o.ipod = o.iphone = 0;
m = ua.match(/iPad|iPod|iPhone/);
if (m && m[0]) {
o[m[0].toLowerCase()] = o.ios;
}
} else {
m = ua.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/);
if (m) {
o.hB = m[0];
}
if (/webOS/.test(ua)) {
o.hB = 'WebOS';
m = ua.match(/webOS\/([^\s]*);/);
if (m && m[1]) {
o.pY = bW(m[1]);
}
}
if (/ Android/.test(ua)) {
o.hB = 'Android';
m = ua.match(/Android ([^\s]*);/);
if (m && m[1]) {
o.yI = bW(m[1]);
}
}
}
m = ua.match(/Chrome\/([^\s]*)/);
if (m && m[1]) {
o.chrome = bW(m[1]);
} else {
m = ua.match(/AdobeAIR\/([^\s]*)/);
if (m) {
o.yR = m[0];
}
}
}
if (!o.webkit) {
m = ua.match(/Opera[\s\/]([^\s]*)/);
if (m && m[1]) {
o.opera = bW(m[1]);
m = ua.match(/Version\/([^\s]*)/);
if (m && m[1]) {
o.opera = bW(m[1]);
}
m = ua.match(/Opera Mini[^;]*/);
if (m) {
o.hB = m[0];
}
} else {
m = ua.match(/MSIE\s([^;]*)/);
if (m && m[1]) {
o.pb = bW(m[1]);
} else {
m = ua.match(/Gecko\/([^\s]*)/);
if (m) {
o.oG = 1;
m = ua.match(/rv:([^\s\)]*)/);
if (m && m[1]) {
o.oG = bW(m[1]);
}
}
}
}
}
}
return o;
};
as.gU.ua = as.gU.rn();
as.isFunction = function (o) {
return (typeof o === 'function') || kC.toString.apply(o) === vC;
};
as.qU = (as.gU.ua.pb) ?
function (r, s) {
var i, gB, f;
for (i = 0; i < mG.length; i = i + 1) {
gB = mG[i];
f = s[gB];
if (L.isFunction(f) && f != kC[gB]) {
r[gB] = f;
}
}
} : function () { };
as.extend = function (en, fA, fj) {
if (!fA || !en) {
throw new Error("extend failed, please check that " + "all dependencies are included.");
}
var F = function () { },
i;
F.prototype = fA.prototype;
en.prototype = new F();
en.prototype.constructor = en;
en.bO = fA.prototype;
if (fA.prototype.constructor == kC.constructor) {
fA.prototype.constructor = fA;
}
if (fj) {
for (i in fj) {
if (L.hasOwnProperty(fj, i)) {
en.prototype[i] = fj[i];
}
}
L.qU(en.prototype, fj);
}
};
if (typeof aF == "undefined" || !aF) aF = {};
if (typeof aF.V == "undefined" || !aF.V) aF.V = {};
aF.V.xU = new
function () {
this.AJ = function (i) {
var h = i.toString(16);
if ((h.length % 2) == 1) h = '0' + h;
return h;
};
this.wG = function (iS) {
var h = iS.toString(16);
if (h.substr(0, 1) != '-') {
if (h.length % 2 == 1) {
h = '0' + h;
} else {
if (!h.match(/^[0-7]/)) {
h = '00' + h;
}
}
} else {
var vm = h.substr(1);
var iw = vm.length;
if (iw % 2 == 1) {
iw += 1;
} else {
if (!h.match(/^[0-7]/)) {
iw += 2;
}
}
var mN = '';
for (var i = 0; i < iw; i++) {
mN += 'f';
}
var vV = new O(mN, 16);
var wS = vV.xor(iS).add(O.ONE);
h = wS.toString(16).replace(/^-/, '');
}
return h;
};
this.xQ = function (xz, bz) {
var xL = aX.bJ.cJ.parse(xz);
var yj = aX.bJ.aM.stringify(xL);
var kp = yj.replace(/(.{64})/g, "$1\r\n");
kp = kp.replace(/\r\n$/, '');
return "-----BEGIN " + bz + "-----\r\n" + kp + "\r\n-----END " + bz + "-----\r\n";
};
};
aF.V.cD = function () {
var bL = true;
var ay = null;
var aA = '00';
var nl = '00';
var bE = '';
this.vG = function () {
if (typeof this.bE == "undefined" || this.bE == null) {
throw "this.bE is null ct undefined.";
}
if (this.bE.length % 2 == 1) {
throw "value al must be even length: n=" + bE.length + ",v=" + this.bE;
}
var n = this.bE.length / 2;
var fv = n.toString(16);
if (fv.length % 2 == 1) {
fv = "0" + fv;
}
if (n < 128) {
return fv;
} else {
var pd = fv.length / 2;
if (pd > 15) {
throw "ASN.1 length too long to represent by 8x: n = " + n.toString(16);
}
var head = 128 + pd;
return head.toString(16) + fv;
}
};
this.fh = function () {
if (this.ay == null || this.bL) {
this.bE = this.cV();
this.nl = this.vG();
this.ay = this.aA + this.nl + this.bE;
this.bL = false;
}
return this.ay;
};
this.zH = function () {
this.fh();
return this.bE;
};
this.cV = function () {
return '';
};
};
aF.V.dm = function (aC) {
aF.V.dm.bO.constructor.call(this);
var s = null;
var bE = null;
this.wg = function () {
return this.s;
};
this.iF = function (jQ) {
this.ay = null;
this.bL = true;
this.s = jQ;
this.bE = ju(this.s);
};
this.ih = function (hx) {
this.ay = null;
this.bL = true;
this.s = null;
this.bE = hx;
};
this.cV = function () {
return this.bE;
};
if (typeof aC != "undefined") {
if (typeof aC['bS'] != "undefined") {
this.iF(aC['bS']);
} else if (typeof aC['al'] != "undefined") {
this.ih(aC['al']);
}
}
};
as.extend(aF.V.dm, aF.V.cD);
aF.V.fX = function (aC) {
aF.V.fX.bO.constructor.call(this);
var s = null;
var date = null;
this.we = function (d) {
iZ = d.getTime() + (d.getTimezoneOffset() * 60000);
var ot = new Date(iZ);
return ot;
};
this.formatDate = function (ef, type) {
var bH = this.pA;
var d = this.we(ef);
var year = String(d.getFullYear());
if (type == 'iZ') year = year.substr(2, 2);
var month = bH(String(d.getMonth() + 1), 2);
var kc = bH(String(d.getDate()), 2);
var je = bH(String(d.getHours()), 2);
var min = bH(String(d.getMinutes()), 2);
var jH = bH(String(d.getSeconds()), 2);
return year + month + kc + je + min + jH + 'Z';
};
this.pA = function (s, aG) {
if (s.length >= aG) return s;
return new Array(aG - s.length + 1).join('0') + s;
};
this.wg = function () {
return this.s;
};
this.iF = function (jQ) {
this.ay = null;
this.bL = true;
this.s = jQ;
this.bE = ju(this.s);
};
this.yN = function (year, month, kc, je, min, jH) {
var ef = new Date(Date.UTC(year, month - 1, kc, je, min, jH, 0));
this.hY(ef);
};
this.cV = function () {
return this.bE;
};
};
as.extend(aF.V.fX, aF.V.cD);
aF.V.kn = function (aC) {
aF.V.dm.bO.constructor.call(this);
var ez = null;
this.yc = function (xO) {
this.ay = null;
this.bL = true;
this.ez = xO;
};
this.yY = function (cn) {
this.ay = null;
this.bL = true;
this.ez.push(cn);
};
this.ez = new Array();
if (typeof aC != "undefined") {
if (typeof aC['array'] != "undefined") {
this.ez = aC['array'];
}
}
};
as.extend(aF.V.kn, aF.V.cD);
aF.V.lQ = function () {
aF.V.lQ.bO.constructor.call(this);
this.aA = "01";
this.ay = "0101ff";
};
as.extend(aF.V.lQ, aF.V.cD);
aF.V.dA = function (aC) {
aF.V.dA.bO.constructor.call(this);
this.aA = "02";
this.lE = function (iS) {
this.ay = null;
this.bL = true;
this.bE = aF.V.xU.wG(iS);
};
this.un = function (hy) {
var kV = new O(String(hy), 10);
this.lE(kV);
};
this.ip = function (hx) {
this.bE = hx;
};
this.cV = function () {
return this.bE;
};
if (typeof aC != "undefined") {
if (typeof aC['bigint'] != "undefined") {
this.lE(aC['bigint']);
} else if (typeof aC['bG'] != "undefined") {
this.un(aC['bG']);
} else if (typeof aC['al'] != "undefined") {
this.ip(aC['al']);
}
}
};
as.extend(aF.V.dA, aF.V.cD);
aF.V.lw = function (aC) {
aF.V.lw.bO.constructor.call(this);
this.aA = "03";
this.uJ = function (xe) {
this.ay = null;
this.bL = true;
this.bE = xe;
};
this.zY = function (cW, wX) {
if (cW < 0 || 7 < cW) {
throw "unused aR shall be from 0 to 7: u = " + cW;
}
var wn = "0" + cW;
this.ay = null;
this.bL = true;
this.bE = wn + wX;
};
this.nq = function (fV) {
fV = fV.replace(/0+$/, '');
var cW = 8 - fV.length % 8;
if (cW == 8) cW = 0;
for (var i = 0; i <= cW; i++) {
fV += '0';
}
var h = '';
for (var i = 0; i < fV.length - 1; i += 8) {
var b = fV.substr(i, 8);
var x = parseInt(b, 2).toString(16);
if (x.length == 1) x = '0' + x;
h += x;
}
this.ay = null;
this.bL = true;
this.bE = '0' + cW + h;
};
this.uZ = function (lY) {
var s = '';
for (var i = 0; i < lY.length; i++) {
if (lY[i] == true) {
s += '1';
} else {
s += '0';
}
}
this.nq(s);
};
this.Aa = function (ml) {
var a = new Array(ml);
for (var i = 0; i < ml; i++) {
a[i] = false;
}
return a;
};
this.cV = function () {
return this.bE;
};
if (typeof aC != "undefined") {
if (typeof aC['al'] != "undefined") {
this.uJ(aC['al']);
} else if (typeof aC['bin'] != "undefined") {
this.nq(aC['bin']);
} else if (typeof aC['array'] != "undefined") {
this.uZ(aC['array']);
}
}
};
as.extend(aF.V.lw, aF.V.cD);
aF.V.mf = function (aC) {
aF.V.mf.bO.constructor.call(this, aC);
this.aA = "04";
};
as.extend(aF.V.mf, aF.V.dm);
aF.V.jV = function () {
aF.V.jV.bO.constructor.call(this);
this.aA = "05";
this.ay = "0500";
};
as.extend(aF.V.jV, aF.V.cD);
aF.V.gT = function (aC) {
var lK = function (i) {
var h = i.toString(16);
if (h.length == 1) h = '0' + h;
return h;
};
var rR = function (rE) {
var h = '';
var kV = new O(rE, 10);
var b = kV.toString(2);
var kY = 7 - b.length % 7;
if (kY == 7) kY = 0;
var nk = '';
for (var i = 0; i < kY; i++) nk += '0';
b = nk + b;
for (var i = 0; i < b.length - 1; i += 7) {
var jZ = b.substr(i, 7);
if (i != b.length - 7) jZ = '1' + jZ;
h += lK(parseInt(jZ, 2));
}
return h;
};
aF.V.gT.bO.constructor.call(this);
this.aA = "06";
this.ip = function (hx) {
this.ay = null;
this.bL = true;
this.s = null;
this.bE = hx;
};
this.lC = function (le) {
if (!le.match(/^[0-9.]+$/)) {
throw "malformed dI string: " + le;
}
var h = '';
var a = le.split('.');
var dc = parseInt(a[0]) * 40 + parseInt(a[1]);
h += lK(dc);
a.splice(0, 2);
for (var i = 0; i < a.length; i++) {
h += rR(a[i]);
}
this.ay = null;
this.bL = true;
this.s = null;
this.bE = h;
};
this.sa = function (iK) {
if (typeof aF.V.qx.yJ.yE[iK] != "undefined") {
var dI = aF.V.qx.yJ.yE[iK];
this.lC(dI);
} else {
throw "gT iK undefined: " + iK;
}
};
this.cV = function () {
return this.bE;
};
if (typeof aC != "undefined") {
if (typeof aC['dI'] != "undefined") {
this.lC(aC['dI']);
} else if (typeof aC['al'] != "undefined") {
this.ip(aC['al']);
} else if (typeof aC['name'] != "undefined") {
this.sa(aC['name']);
}
}
};
as.extend(aF.V.gT, aF.V.cD);
aF.V.nK = function (aC) {
aF.V.nK.bO.constructor.call(this, aC);
this.aA = "0c";
};
as.extend(aF.V.nK, aF.V.dm);
aF.V.mA = function (aC) {
aF.V.mA.bO.constructor.call(this, aC);
this.aA = "12";
};
as.extend(aF.V.mA, aF.V.dm);
aF.V.mP = function (aC) {
aF.V.mP.bO.constructor.call(this, aC);
this.aA = "13";
};
as.extend(aF.V.mP, aF.V.dm);
aF.V.pl = function (aC) {
aF.V.pl.bO.constructor.call(this, aC);
this.aA = "14";
};
as.extend(aF.V.pl, aF.V.dm);
aF.V.mb = function (aC) {
aF.V.mb.bO.constructor.call(this, aC);
this.aA = "16";
};
as.extend(aF.V.mb, aF.V.dm);
aF.V.pj = function (aC) {
aF.V.pj.bO.constructor.call(this, aC);
this.aA = "17";
this.hY = function (ef) {
this.ay = null;
this.bL = true;
this.date = ef;
this.s = this.formatDate(this.date, 'iZ');
this.bE = ju(this.s);
};
if (typeof aC != "undefined") {
if (typeof aC['bS'] != "undefined") {
this.iF(aC['bS']);
} else if (typeof aC['al'] != "undefined") {
this.ih(aC['al']);
} else if (typeof aC['date'] != "undefined") {
this.hY(aC['date']);
}
}
};
as.extend(aF.V.pj, aF.V.fX);
aF.V.mv = function (aC) {
aF.V.mv.bO.constructor.call(this, aC);
this.aA = "18";
this.hY = function (ef) {
this.ay = null;
this.bL = true;
this.date = ef;
this.s = this.formatDate(this.date, 'gen');
this.bE = ju(this.s);
};
if (typeof aC != "undefined") {
if (typeof aC['bS'] != "undefined") {
this.iF(aC['bS']);
} else if (typeof aC['al'] != "undefined") {
this.ih(aC['al']);
} else if (typeof aC['date'] != "undefined") {
this.hY(aC['date']);
}
}
};
as.extend(aF.V.mv, aF.V.fX);
aF.V.gZ = function (aC) {
aF.V.gZ.bO.constructor.call(this, aC);
this.aA = "30";
this.cV = function () {
var h = '';
for (var i = 0; i < this.ez.length; i++) {
var ll = this.ez[i];
h += ll.fh();
}
this.bE = h;
return this.bE;
};
};
as.extend(aF.V.gZ, aF.V.kn);
aF.V.mH = function (aC) {
aF.V.mH.bO.constructor.call(this, aC);
this.aA = "31";
this.cV = function () {
var a = new Array();
for (var i = 0; i < this.ez.length; i++) {
var ll = this.ez[i];
a.push(ll.fh());
}
a.sort();
this.bE = a.join('');
return this.bE;
};
};
as.extend(aF.V.mH, aF.V.kn);
aF.V.lF = function (aC) {
aF.V.lF.bO.constructor.call(this);
this.aA = "a0";
this.bE = '';
this.hv = true;
this.cn = null;
this.ve = function (vJ, lJ, cn) {
this.aA = lJ;
this.hv = vJ;
this.cn = cn;
if (this.hv) {
this.bE = this.cn.fh();
this.ay = null;
this.bL = true;
} else {
this.bE = null;
this.ay = cn.fh();
this.ay = this.ay.replace(/^../, lJ);
this.bL = false;
}
};
this.cV = function () {
return this.bE;
};
if (typeof aC != "undefined") {
if (typeof aC['bv'] != "undefined") {
this.aA = aC['bv'];
}
if (typeof aC['explicit'] != "undefined") {
this.hv = aC['explicit'];
}
if (typeof aC['bA'] != "undefined") {
this.cn = aC['bA'];
this.ve(this.hv, this.aA, this.cn);
}
}
};
as.extend(aF.V.lF, aF.V.cD); (function (undefined) {
"use strict";
var cJ = {},
cR;
cJ.ei = function (a) {
var i;
if (cR === undefined) {
var al = "0123456789ABCDEF",
ha = " \f\n\r\t\u00A0\u2028\u2029";
cR = [];
for (i = 0; i < 16; ++i) cR[al.charAt(i)] = i;
al = al.toLowerCase();
for (i = 10; i < 16; ++i) cR[al.charAt(i)] = i;
for (i = 0; i < ha.length; ++i) cR[ha.charAt(i)] = -1;
}
var out = [],
aR = 0,
fc = 0;
for (i = 0; i < a.length; ++i) {
var c = a.charAt(i);
if (c == '=') break;
c = cR[c];
if (c == -1) continue;
if (c === undefined) throw 'Illegal character at offset ' + i;
aR |= c;
if (++fc >= 2) {
out[out.length] = aR;
aR = 0;
fc = 0;
} else {
aR <<= 4;
}
}
if (fc) throw "cJ encoding incomplete: 4 aR missing";
return out;
};
window.cJ = cJ;
})(); (function (undefined) {
"use strict";
var aM = {},
cR;
aM.ei = function (a) {
var i;
if (cR === undefined) {
var xt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
ha = "= \f\n\r\t\u00A0\u2028\u2029";
cR = [];
for (i = 0; i < 64; ++i) cR[xt.charAt(i)] = i;
for (i = 0; i < ha.length; ++i) cR[ha.charAt(i)] = -1;
}
var out = [];
var aR = 0,
fc = 0;
for (i = 0; i < a.length; ++i) {
var c = a.charAt(i);
if (c == '=') break;
c = cR[c];
if (c == -1) continue;
if (c === undefined) throw 'Illegal character at offset ' + i;
aR |= c;
if (++fc >= 4) {
out[out.length] = (aR >> 16);
out[out.length] = (aR >> 8) & 0xFF;
out[out.length] = aR & 0xFF;
aR = 0;
fc = 0;
} else {
aR <<= 6;
}
}
switch (fc) {
case 1:
throw "aM encoding incomplete: at least 2 aR missing";
case 2:
out[out.length] = (aR >> 10);
break;
case 3:
out[out.length] = (aR >> 16);
out[out.length] = (aR >> 8) & 0xFF;
break;
}
return out;
};
aM.eT = /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/;
aM.rA = function (a) {
var m = aM.eT.exec(a);
if (m) {
if (m[1]) a = m[1];
else if (m[2]) a = m[2];
else throw "RegExp out of sync";
}
return aM.ei(a);
};
window.aM = aM;
})(); (function (undefined) {
"use strict";
var eh = 100,
ellipsis = "\u2026",
dM = {
bv: function (tagName, className) {
var t = document.createElement(tagName);
t.className = className;
return t;
},
text: function (bS) {
return document.createTextNode(bS);
}
};
function aU(bJ, pos) {
if (bJ instanceof aU) {
this.bJ = bJ.bJ;
this.pos = bJ.pos;
} else {
this.bJ = bJ;
this.pos = pos;
}
};
aU.prototype.get = function (pos) {
if (pos === undefined) pos = this.pos++;
if (pos >= this.bJ.length) throw 'Requesting byte offset ' + pos + ' on a bn of length ' + this.bJ.length;
return this.bJ[pos];
};
aU.prototype.oR = "0123456789ABCDEF";
aU.prototype.pr = function (b) {
return this.oR.charAt((b >> 4) & 0xF) + this.oR.charAt(b & 0xF);
};
aU.prototype.jn = function (start, end, ow) {
var s = "";
for (var i = start; i < end; ++i) {
s += this.pr(this.get(i));
if (ow !== true) switch (i & 0xF) {
case 0x7:
s += " ";
break;
case 0xF:
s += "\n";
break;
default:
s += " ";
}
}
return s;
};
aU.prototype.ke = function (start, end) {
var s = "";
for (var i = start; i < end; ++i) s += String.fromCharCode(this.get(i));
return s;
};
aU.prototype.qi = function (start, end) {
var s = "";
for (var i = start; i < end;) {
var c = this.get(i++);
if (c < 128) s += String.fromCharCode(c);
else if ((c > 191) && (c < 224)) s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));
else s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));
}
return s;
};
aU.prototype.qC = function (start, end) {
var bS = "";
for (var i = start; i < end; i += 2) {
var vE = this.get(i);
var wF = this.get(i + 1);
bS += String.fromCharCode((vE << 8) + wF);
}
return bS;
};
aU.prototype.sz = /^((?:1[89]|2\d)?\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
aU.prototype.qq = function (start, end) {
var s = this.ke(start, end),
m = this.sz.exec(s);
if (!m) return "Unrecognized time: " + s;
s = m[1] + "-" + m[2] + "-" + m[3] + " " + m[4];
if (m[5]) {
s += ":" + m[5];
if (m[6]) {
s += ":" + m[6];
if (m[7]) s += "." + m[7];
}
}
if (m[8]) {
s += " UTC";
if (m[8] != 'Z') {
s += m[8];
if (m[9]) s += ":" + m[9];
}
}
return s;
};
aU.prototype.qn = function (start, end) {
var aG = end - start;
if (aG > 4) {
aG <<= 3;
var s = this.get(start);
if (s === 0) aG -= 8;
else while (s < 128) {
s <<= 1; --aG;
}
return "(" + aG + " bit)";
}
var n = 0;
for (var i = start; i < end; ++i) n = (n << 8) | this.get(i);
return n;
};
aU.prototype.pI = function (start, end) {
var ok = this.get(start),
nf = ((end - start - 1) << 3) - ok,
s = "(" + nf + " bit)";
if (nf <= 20) {
var mL = ok;
s += " ";
for (var i = end - 1; i > start; --i) {
var b = this.get(i);
for (var j = mL; j < 8; ++j) s += (b >> j) & 1 ? "1" : "0";
mL = 0;
}
}
return s;
};
aU.prototype.mU = function (start, end) {
var aG = end - start,
s = "(" + aG + " byte) ";
if (aG > eh) end = start + eh;
for (var i = start; i < end; ++i) s += this.pr(this.get(i));
if (aG > eh) s += ellipsis;
return s;
};
aU.prototype.qj = function (start, end) {
var s = '',
n = 0,
aR = 0;
for (var i = start; i < end; ++i) {
var v = this.get(i);
n = (n << 7) | (v & 0x7F);
aR += 7;
if (!(v & 0x80)) {
if (s === '') {
var m = n < 80 ? n < 40 ? 0 : 1 : 2;
s = m + "." + (n - m * 40);
} else s += "." + ((aR >= 31) ? "bigint" : n);
n = aR = 0;
}
}
return s;
};
function bh(bn, header, length, bv, sub) {
this.bn = bn;
this.header = header;
this.length = length;
this.bv = bv;
this.sub = sub;
};
bh.prototype.iW = function () {
if (this.bv === undefined) return "unknown";
var jW = this.bv >> 6,
zd = (this.bv >> 5) & 1,
eN = this.bv & 0x1F;
switch (jW) {
case 0:
switch (eN) {
case 0x00:
return "EOC";
case 0x01:
return "BOOLEAN";
case 0x02:
return "INTEGER";
case 0x03:
return "BIT_STRING";
case 0x04:
return "OCTET_STRING";
case 0x05:
return "NULL";
case 0x06:
return "OBJECT_IDENTIFIER";
case 0x07:
return "ObjectDescriptor";
case 0x08:
return "EXTERNAL";
case 0x09:
return "REAL";
case 0x0A:
return "ENUMERATED";
case 0x0B:
return "EMBEDDED_PDV";
case 0x0C:
return "UTF8String";
case 0x10:
return "SEQUENCE";
case 0x11:
return "SET";
case 0x12:
return "NumericString";
case 0x13:
return "PrintableString";
case 0x14:
return "TeletexString";
case 0x15:
return "VideotexString";
case 0x16:
return "IA5String";
case 0x17:
return "UTCTime";
case 0x18:
return "GeneralizedTime";
case 0x19:
return "GraphicString";
case 0x1A:
return "VisibleString";
case 0x1B:
return "GeneralString";
case 0x1C:
return "UniversalString";
case 0x1E:
return "BMPString";
default:
return "Universal_" + eN.toString(16);
}
case 1:
return "Application_" + eN.toString(16);
case 2:
return "[" + eN + "]";
case 3:
return "Private_" + eN.toString(16);
}
};
bh.prototype.sp = /^[ -~]+$/;
bh.prototype.content = function () {
if (this.bv === undefined) return null;
var jW = this.bv >> 6,
eN = this.bv & 0x1F,
content = this.jb(),
aG = Math.abs(this.length);
if (jW !== 0) {
if (this.sub !== null) return "(" + this.sub.length + " elem)";
var s = this.bn.ke(content, content + Math.min(aG, eh));
if (this.sp.test(s)) return s.substring(0, 2 * eh) + ((s.length > 2 * eh) ? ellipsis : "");
else return this.bn.mU(content, content + aG);
}
switch (eN) {
case 0x01:
return (this.bn.get(content) === 0) ? "false" : "true";
case 0x02:
return this.bn.qn(content, content + aG);
case 0x03:
return this.sub ? "(" + this.sub.length + " elem)" : this.bn.pI(content, content + aG);
case 0x04:
return this.sub ? "(" + this.sub.length + " elem)" : this.bn.mU(content, content + aG);
case 0x06:
return this.bn.qj(content, content + aG);
case 0x10:
case 0x11:
return "(" + this.sub.length + " elem)";
case 0x0C:
return this.bn.qi(content, content + aG);
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x1A:
return this.bn.ke(content, content + aG);
case 0x1E:
return this.bn.qC(content, content + aG);
case 0x17:
case 0x18:
return this.bn.qq(content, content + aG);
}
return null;
};
bh.prototype.toString = function () {
return this.iW() + "@" + this.bn.pos + "[header:" + this.header + ",length:" + this.length + ",sub:" + ((this.sub === null) ? 'null' : this.sub.length) + "]";
};
bh.prototype.print = function (indent) {
if (indent === undefined) indent = '';
document.writeln(indent + this);
if (this.sub !== null) {
indent += ' ';
for (var i = 0,
max = this.sub.length; i < max; ++i) this.sub[i].print(indent);
}
};
bh.prototype.sZ = function (indent) {
if (indent === undefined) indent = '';
var s = indent + this.iW() + " @" + this.bn.pos;
if (this.length >= 0) s += "+";
s += this.length;
if (this.bv & 0x20) s += " (constructed)";
else if (((this.bv == 0x03) || (this.bv == 0x04)) && (this.sub !== null)) s += " (encapsulates)";
s += "\n";
if (this.sub !== null) {
indent += ' ';
for (var i = 0,
max = this.sub.length; i < max; ++i) s += this.sub[i].sZ(indent);
}
return s;
};
bh.prototype.rQ = function () {
var ai = dM.bv("div", "ai");
ai.V = this;
var head = dM.bv("div", "head");
var s = this.iW().replace(/_/g, " ");
head.innerHTML = s;
var content = this.content();
if (content !== null) {
content = String(content).replace(/</g, "<");
var kx = dM.bv("span", "kx");
kx.appendChild(dM.text(content));
head.appendChild(kx);
}
ai.appendChild(head);
this.ai = ai;
this.head = head;
var value = dM.bv("div", "value");
s = "Offset: " + this.bn.pos + "<br/>";
s += "Length: " + this.header + "+";
if (this.length >= 0) s += this.length;
else s += (- this.length) + " (undefined)";
if (this.bv & 0x20) s += "<br/>(constructed)";
else if (((this.bv == 0x03) || (this.bv == 0x04)) && (this.sub !== null)) s += "<br/>(encapsulates)";
if (content !== null) {
s += "<br/>Value:<br/><b>" + content + "</b>";
if ((typeof xv === 'object') && (this.bv == 0x06)) {
var dI = xv[content];
if (dI) {
if (dI.d) s += "<br/>" + dI.d;
if (dI.c) s += "<br/>" + dI.c;
if (dI.w) s += "<br/>(warning!)";
}
}
}
value.innerHTML = s;
ai.appendChild(value);
var sub = dM.bv("div", "sub");
if (this.sub !== null) {
for (var i = 0,
max = this.sub.length; i < max; ++i) sub.appendChild(this.sub[i].rQ());
}
ai.appendChild(sub);
head.onclick = function () {
ai.className = (ai.className == "ai collapsed") ? "ai" : "ai collapsed";
};
return ai;
};
bh.prototype.hg = function () {
return this.bn.pos;
};
bh.prototype.jb = function () {
return this.bn.pos + this.header;
};
bh.prototype.hU = function () {
return this.bn.pos + this.header + Math.abs(this.length);
};
bh.prototype.vp = function (current) {
this.ai.className += " hover";
if (current) this.head.className += " hover";
};
bh.prototype.vQ = function (current) {
var eT = / ?hover/;
this.ai.className = this.ai.className.replace(eT, "");
if (current) this.head.className = this.head.className.replace(eT, "");
};
bh.prototype.hX = function (ai, className, bn, start, end) {
if (start >= end) return;
var sub = dM.bv("span", className);
sub.appendChild(dM.text(bn.jn(start, end)));
ai.appendChild(sub);
};
bh.prototype.sP = function (root) {
var ai = dM.bv("span", "al");
if (root === undefined) root = ai;
this.head.od = ai;
this.head.onmouseover = function () {
this.od.className = "hexCurrent";
};
this.head.onmouseout = function () {
this.od.className = "al";
};
ai.V = this;
ai.onmouseover = function () {
var current = !root.selected;
if (current) {
root.selected = this.V;
this.className = "hexCurrent";
}
this.V.vp(current);
};
ai.onmouseout = function () {
var current = (root.selected == this.V);
this.V.vQ(current);
if (current) {
root.selected = null;
this.className = "al";
}
};
this.hX(ai, "bv", this.bn, this.hg(), this.hg() + 1);
this.hX(ai, (this.length >= 0) ? "dlen" : "ulen", this.bn, this.hg() + 1, this.jb());
if (this.sub === null) ai.appendChild(dM.text(this.bn.jn(this.jb(), this.hU())));
else if (this.sub.length > 0) {
var first = this.sub[0];
var last = this.sub[this.sub.length - 1];
this.hX(ai, "intro", this.bn, this.jb(), first.hg());
for (var i = 0,
max = this.sub.length; i < max; ++i) ai.appendChild(this.sub[i].sP(root));
this.hX(ai, "outro", this.bn, last.hU(), this.hU());
}
return ai;
};
bh.prototype.sK = function (root) {
return this.bn.jn(this.hg(), this.hU(), true);
};
bh.kl = function (bn) {
var ea = bn.get(),
aG = ea & 0x7F;
if (aG == ea) return aG;
if (aG > 3) throw "Length over 24 aR not supported at position " + (bn.pos - 1);
if (aG === 0) return - 1;
ea = 0;
for (var i = 0; i < aG; ++i) ea = (ea << 8) | bn.get();
return ea;
};
bh.wH = function (bv, aG, bn) {
if (bv & 0x20) return true;
if ((bv < 0x03) || (bv > 0x04)) return false;
var p = new aU(bn);
if (bv == 0x03) p.get();
var qT = p.get();
if ((qT >> 6) & 0x01) return false;
try {
var py = bh.kl(p);
return ((p.pos - bn.pos) + py == aG);
} catch (Ay) {
return false;
}
};
bh.ei = function (bn) {
if (!(bn instanceof aU)) bn = new aU(bn, 0);
var nc = new aU(bn),
bv = bn.get(),
aG = bh.kl(bn),
header = bn.pos - nc.pos,
sub = null;
if (bh.wH(bv, aG, bn)) {
var start = bn.pos;
if (bv == 0x03) bn.get();
sub = [];
if (aG >= 0) {
var end = start + aG;
while (bn.pos < end) sub[sub.length] = bh.ei(bn);
if (bn.pos != end) throw "Content size is not correct for hO starting at offset " + start;
} else {
try {
for (; ;) {
var s = bh.ei(bn);
if (s.bv === 0) break;
sub[sub.length] = s;
}
aG = start - bn.pos;
} catch (e) {
throw "Exception while decoding undefined length content: " + e;
}
}
} else bn.pos += aG;
return new bh(nc, header, aG, bv, sub);
};
bh.test = function () {
var test = [{
value: [0x27],
gI: 0x27
},
{
value: [0x81, 0xC9],
gI: 0xC9
},
{
value: [0x83, 0xFE, 0xDC, 0xBA],
gI: 0xFEDCBA
}];
for (var i = 0,
max = test.length; i < max; ++i) {
var pos = 0,
bn = new aU(test[i].value, 0),
kw = bh.kl(bn);
if (kw != test[i].gI) document.write("In test[" + i + "] gI " + test[i].gI + " got " + kw + "\n");
}
};
window.bh = bh;
})();
bh.prototype.et = function () {
var vR = this.sK();
var offset = this.header * 2;
var length = this.length * 2;
return vR.substr(offset, length);
};
ae.prototype.qA = function (gV) {
try {
var hS = 0;
var jp = 0;
var nP = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/;
var wz = nP.test(gV) ? cJ.ei(gV) : aM.rA(gV);
var V = bh.ei(wz);
if (V.sub.length === 3) {
V = V.sub[2].sub[0];
}
if (V.sub.length === 9) {
hS = V.sub[1].et();
this.n = bw(hS, 16);
jp = V.sub[2].et();
this.e = parseInt(jp, 16);
var qE = V.sub[3].et();
this.d = bw(qE, 16);
var pV = V.sub[4].et();
this.p = bw(pV, 16);
var qG = V.sub[5].et();
this.q = bw(qG, 16);
var wA = V.sub[6].et();
this.ca = bw(wA, 16);
var vy = V.sub[7].et();
this.dK = bw(vy, 16);
var yv = V.sub[8].et();
this.dr = bw(yv, 16);
} else if (V.sub.length === 2) {
var start = (V.header + V.sub[0].header) * 2;
var length = V.sub[0].length * 2;
hS = gV.substr(start, length);
this.n = bw(hS, 16);
start = length + start + V.sub[1].header * 2;
length = V.sub[1].length * 2;
jp = gV.substr(start, length);
this.e = parseInt(jp, 16);
} else {
return false;
}
return true;
} catch (ex) {
return false;
}
};
ae.prototype.vo = function () {
var options = {
'array': [new aF.V.dA({
'bG': 0
}), new aF.V.dA({
'bigint': this.n
}), new aF.V.dA({
'bG': this.e
}), new aF.V.dA({
'bigint': this.d
}), new aF.V.dA({
'bigint': this.p
}), new aF.V.dA({
'bigint': this.q
}), new aF.V.dA({
'bigint': this.ca
}), new aF.V.dA({
'bigint': this.dK
}), new aF.V.dA({
'bigint': this.dr
})]
};
var kL = new aF.V.gZ(options);
return kL.fh();
};
ae.prototype.nS = function () {
return nM(this.vo());
};
ae.prototype.wW = function () {
var options = {
'array': [new aF.V.gT({
'dI': '1.2.840.113549.1.1.1'
}), new aF.V.jV()]
};
var wL = new aF.V.gZ(options);
options = {
'array': [new aF.V.dA({
'bigint': this.n
}), new aF.V.dA({
'bG': this.e
})]
};
var uu = new aF.V.gZ(options);
options = {
'al': '00' + uu.fh()
};
var vz = new aF.V.lw(options);
options = {
'array': [wL, vz]
};
var kL = new aF.V.gZ(options);
return kL.fh();
};
ae.prototype.nx = function () {
return nM(this.wW());
};
ae.prototype.nG = function (bS, width) {
width = width || 64;
if (!bS) {
return bS;
}
var qO = '(.{1,' + width + '})( +|$\n?)|(.{1,' + width + '})';
return bS.match(RegExp(qO, 'g')).join('\n');
};
ae.prototype.nL = function () {
var key = "-----BEGIN RSA PRIVATE KEY-----\n";
key += this.nG(this.nS()) + "\n";
key += "-----END RSA PRIVATE KEY-----";
return key;
};
ae.prototype.mr = function () {
var key = "-----BEGIN PUBLIC KEY-----\n";
key += this.nG(this.nx()) + "\n";
key += "-----END PUBLIC KEY-----";
return key;
};
ae.prototype.wC = function (bA) {
bA = bA || {};
return (bA.hasOwnProperty('n') && bA.hasOwnProperty('e'));
};
ae.prototype.ws = function (bA) {
bA = bA || {};
return (bA.hasOwnProperty('n') && bA.hasOwnProperty('e') && bA.hasOwnProperty('d') && bA.hasOwnProperty('p') && bA.hasOwnProperty('q') && bA.hasOwnProperty('ca') && bA.hasOwnProperty('dK') && bA.hasOwnProperty('dr'));
};
ae.prototype.qb = function (bA) {
this.n = bA.n;
this.e = bA.e;
if (bA.hasOwnProperty('d')) {
this.d = bA.d;
this.p = bA.p;
this.q = bA.q;
this.ca = bA.ca;
this.dK = bA.dK;
this.dr = bA.dr;
}
};
var gO = function (key) {
ae.call(this);
if (key) {
if (typeof key === 'string') {
this.qA(key);
} else if (this.ws(key) || this.wC(key)) {
this.qb(key);
}
}
};
gO.prototype = new ae();
gO.prototype.constructor = gO;
var db = function (options) {
options = options || {};
this.ks = parseInt(options.ks) || 1024;
this.kX = options.kX || '010001';
this.log = options.log || false;
this.key = null;
};
db.prototype.na = function (key) {
if (this.log && this.key) {
console.xZ('A key was already set, overriding existing.');
}
this.key = new gO(key);
};
db.prototype.yK = function (rh) {
this.na(rh);
};
db.prototype.uO = function (pG) {
this.na(pG);
};
db.prototype.eV = function (string) {
try {
return this.an().eV(kI(string));
} catch (ex) {
return false;
}
};
db.prototype.bZ = function (string) {
try {
return (this.an().bZ(string));
} catch (ex) {
return false;
}
};
db.prototype.an = function (jS) {
if (!this.key) {
this.key = new gO();
if (jS && {}.toString.call(jS) === '[object Function]') {
this.key.vS(this.ks, this.kX, jS);
return;
}
this.key.generate(this.ks, this.kX);
}
return this.key;
};
db.prototype.nL = function () {
return this.an().nL();
};
db.prototype.yO = function () {
return this.an().nS();
};
db.prototype.mr = function () {
return this.an().mr();
};
db.prototype.zF = function () {
return this.an().nx();
};
fg.db = db;
})(lT);
var db = lT.db;
var fC;
var wr = 0xdeadbeefcafe;
var mT = ((wr & 0xffffff) == 0xefcafe);
function O(a, b, c) {
if (a != null) if ("number" == typeof a) this.ki(a, b, c);
else if (b == null && "string" != typeof a) this.gw(a, 256);
else this.gw(a, b);
};
function aO() {
return new O(null);
};
function pD(i, x, w, j, c, n) {
while (--n >= 0) {
var v = x * this[i++] + w[j] + c;
c = Math.floor(v / 0x4000000);
w[j++] = v & 0x3ffffff;
}
return c;
};
function sc(i, x, w, j, c, n) {
var gE = x & 0x7fff,
fR = x >> 15;
while (--n >= 0) {
var l = this[i] & 0x7fff;
var h = this[i++] >> 15;
var m = fR * l + h * gE;
l = gE * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);
c = (l >>> 30) + (m >>> 15) + fR * h + (c >>> 30);
w[j++] = l & 0x3fffffff;
}
return c;
};
function rN(i, x, w, j, c, n) {
var gE = x & 0x3fff,
fR = x >> 14;
while (--n >= 0) {
var l = this[i] & 0x3fff;
var h = this[i++] >> 14;
var m = fR * l + h * gE;
l = gE * l + ((m & 0x3fff) << 14) + w[j] + c;
c = (l >> 28) + (m >> 14) + fR * h;
w[j++] = l & 0xfffffff;
}
return c;
};
if (mT && (navigator.appName == "Microsoft Internet Explorer")) {
O.prototype.dN = sc;
fC = 30;
} else if (mT && (navigator.appName != "Netscape")) {
O.prototype.dN = pD;
fC = 26;
} else {
O.prototype.dN = rN;
fC = 28;
}
O.prototype.bb = fC;
O.prototype.aW = ((1 << fC) - 1);
O.prototype.dq = (1 << fC);
var lu = 52;
O.prototype.wY = Math.pow(2, lu);
O.prototype.oK = lu - fC;
O.prototype.oM = 2 * fC - lu;
var vW = "0123456789abcdefghijklmnopqrstuvwxyz";
var ix = new Array();
var eA, cu;
eA = "0".charCodeAt(0);
for (cu = 0; cu <= 9; ++cu) ix[eA++] = cu;
eA = "a".charCodeAt(0);
for (cu = 10; cu < 36; ++cu) ix[eA++] = cu;
eA = "A".charCodeAt(0);
for (cu = 10; cu < 36; ++cu) ix[eA++] = cu;
function dE(n) {
return vW.charAt(n);
};
function mE(s, i) {
var c = ix[s.charCodeAt(i)];
return (c == null) ? -1 : c;
};
function sN(r) {
for (var i = this.t - 1; i >= 0; --i) r[i] = this[i];
r.t = this.t;
r.s = this.s;
};
function qf(x) {
this.t = 1;
this.s = (x < 0) ? -1 : 0;
if (x > 0) this[0] = x;
else if (x < -1) this[0] = x + this.dq;
else this.t = 0;
};
function dV(i) {
var r = aO();
r.gr(i);
return r;
};
function pR(s, b) {
var k;
if (b == 16) k = 4;
else if (b == 8) k = 3;
else if (b == 256) k = 8;
else if (b == 2) k = 1;
else if (b == 32) k = 5;
else if (b == 4) k = 2;
else {
this.wq(s, b);
return;
}
this.t = 0;
this.s = 0;
var i = s.length,
eP = false,
sh = 0;
while (--i >= 0) {
var x = (k == 8) ? s[i] & 0xff : mE(s, i);
if (x < 0) {
if (s.charAt(i) == "-") eP = true;
continue;
}
eP = false;
if (sh == 0) this[this.t++] = x;
else if (sh + k > this.bb) {
this[this.t - 1] |= (x & ((1 << (this.bb - sh)) - 1)) << sh;
this[this.t++] = (x >> (this.bb - sh));
} else this[this.t - 1] |= x << sh;
sh += k;
if (sh >= this.bb) sh -= this.bb;
}
if (k == 8 && (s[0] & 0x80) != 0) {
this.s = -1;
if (sh > 0) this[this.t - 1] |= ((1 << (this.bb - sh)) - 1) << sh;
}
this.ag();
if (eP) O.ZERO.aj(this, this);
};
function sr() {
var c = this.s & this.aW;
while (this.t > 0 && this[this.t - 1] == c)--this.t;
};
function sg(b) {
if (this.s < 0) return "-" + this.fF().toString(b);
var k;
if (b == 16) k = 4;
else if (b == 8) k = 3;
else if (b == 2) k = 1;
else if (b == 32) k = 5;
else if (b == 4) k = 2;
else return this.tj(b);
var jt = (1 << k) - 1,
d,
m = false,
r = "",
i = this.t;
var p = this.bb - (i * this.bb) % k;
if (i-- > 0) {
if (p < this.bb && (d = this[i] >> p) > 0) {
m = true;
r = dE(d);
}
while (i >= 0) {
if (p < k) {
d = (this[i] & ((1 << p) - 1)) << (k - p);
d |= this[--i] >> (p += this.bb - k);
} else {
d = (this[i] >> (p -= k)) & jt;
if (p <= 0) {
p += this.bb; --i;
}
}
if (d > 0) m = true;
if (m) r += dE(d);
}
}
return m ? r : "0";
};
function pF() {
var r = aO();
O.ZERO.aj(this, r);
return r;
};
function rG() {
return (this.s < 0) ? this.fF() : this;
};
function uq(a) {
var r = this.s - a.s;
if (r != 0) return r;
var i = this.t;
r = i - a.t;
if (r != 0) return (this.s < 0) ? -r : r;
while (--i >= 0) if ((r = this[i] - a[i]) != 0) return r;
return 0;
};
function ij(x) {
var r = 1,
t;
if ((t = x >>> 16) != 0) {
x = t;
r += 16;
}
if ((t = x >> 8) != 0) {
x = t;
r += 8;
}
if ((t = x >> 4) != 0) {
x = t;
r += 4;
}
if ((t = x >> 2) != 0) {
x = t;
r += 2;
}
if ((t = x >> 1) != 0) {
x = t;
r += 1;
}
return r;
};
function rK() {
if (this.t <= 0) return 0;
return this.bb * (this.t - 1) + ij(this[this.t - 1] ^ (this.s & this.aW));
};
function qD(n, r) {
var i;
for (i = this.t - 1; i >= 0; --i) r[i + n] = this[i];
for (i = n - 1; i >= 0; --i) r[i] = 0;
r.t = this.t + n;
r.s = this.s;
};
function rg(n, r) {
for (var i = n; i < this.t; ++i) r[i - n] = this[i];
r.t = Math.max(this.t - n, 0);
r.s = this.s;
};
function qZ(n, r) {
var cO = n % this.bb;
var gc = this.bb - cO;
var iJ = (1 << gc) - 1;
var cX = Math.floor(n / this.bb),
c = (this.s << cO) & this.aW,
i;
for (i = this.t - 1; i >= 0; --i) {
r[i + cX + 1] = (this[i] >> gc) | c;
c = (this[i] & iJ) << cO;
}
for (i = cX - 1; i >= 0; --i) r[i] = 0;
r[cX] = c;
r.t = this.t + cX + 1;
r.s = this.s;
r.ag();
};
function sm(n, r) {
r.s = this.s;
var cX = Math.floor(n / this.bb);
if (cX >= this.t) {
r.t = 0;
return;
}
var cO = n % this.bb;
var gc = this.bb - cO;
var iJ = (1 << cO) - 1;
r[0] = this[cX] >> cO;
for (var i = cX + 1; i < this.t; ++i) {
r[i - cX - 1] |= (this[i] & iJ) << gc;
r[i - cX] = this[i] >> cO;
}
if (cO > 0) r[this.t - cX - 1] |= (this.s & iJ) << gc;
r.t = this.t - cX;
r.ag();
};
function sk(a, r) {
var i = 0,
c = 0,
m = Math.min(a.t, this.t);
while (i < m) {
c += this[i] - a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
if (a.t < this.t) {
c -= a.s;
while (i < this.t) {
c += this[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c += this.s;
} else {
c += this.s;
while (i < a.t) {
c -= a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c -= a.s;
}
r.s = (c < 0) ? -1 : 0;
if (c < -1) r[i++] = this.dq + c;
else if (c > 0) r[i++] = c;
r.t = i;
r.ag();
};
function sT(a, r) {
var x = this.abs(),
y = a.abs();
var i = x.t;
r.t = i + y.t;
while (--i >= 0) r[i] = 0;
for (i = 0; i < y.t; ++i) r[i + x.t] = x.dN(0, y[i], r, i, 0, x.t);
r.s = 0;
r.ag();
if (this.s != a.s) O.ZERO.aj(r, r);
};
function st(r) {
var x = this.abs();
var i = r.t = 2 * x.t;
while (--i >= 0) r[i] = 0;
for (i = 0; i < x.t - 1; ++i) {
var c = x.dN(i, x[i], r, 2 * i, 0, 1);
if ((r[i + x.t] += x.dN(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.dq) {
r[i + x.t] -= x.dq;
r[i + x.t + 1] = 1;
}
}
if (r.t > 0) r[r.t - 1] += x.dN(i, x[i], r, 2 * i, 0, 1);
r.s = 0;
r.ag();
};
function qk(m, q, r) {
var pm = m.abs();
if (pm.t <= 0) return;
var pt = this.abs();
if (pt.t < pm.t) {
if (q != null) q.gr(0);
if (r != null) this.eB(r);
return;
}
if (r == null) r = aO();
var y = aO(),
pq = this.s,
ms = m.s;
var hj = this.bb - ij(pm[pm.t - 1]);
if (hj > 0) {
pm.fB(hj, y);
pt.fB(hj, r);
} else {
pm.eB(y);
pt.eB(r);
}
var cE = y.t;
var ik = y[cE - 1];
if (ik == 0) return;
var nN = ik * (1 << this.oK) + ((cE > 1) ? y[cE - 2] >> this.oM : 0);
var xG = this.wY / nN,
yn = (1 << this.oK) / nN,
e = 1 << this.oM;
var i = r.t,
j = i - cE,
t = (q == null) ? aO() : q;
y.gG(j, t);
if (r.az(t) >= 0) {
r[r.t++] = 1;
r.aj(t, r);
}
O.ONE.gG(cE, t);
t.aj(y, y);
while (y.t < cE) y[y.t++] = 0;
while (--j >= 0) {
var jL = (r[--i] == ik) ? this.aW : Math.floor(r[i] * xG + (r[i - 1] + e) * yn);
if ((r[i] += y.dN(0, jL, r, j, 0, cE)) < jL) {
y.gG(j, t);
r.aj(t, r);
while (r[i] < --jL) r.aj(t, r);
}
}
if (q != null) {
r.gk(cE, q);
if (pq != ms) O.ZERO.aj(q, q);
}
r.t = cE;
r.ag();
if (hj > 0) r.aD(hj, r);
if (pq < 0) O.ZERO.aj(r, r);
};
function sD(a) {
var r = aO();
this.abs().ey(a, null, r);
if (this.s < 0 && r.az(O.ZERO) > 0) a.aj(r, r);
return r;
};
function ew(m) {
this.m = m;
};
function rS(x) {
if (x.s < 0 || x.az(this.m) >= 0) return x.dn(this.m);
else return x;
};
function sS(x) {
return x;
};
function sj(x) {
x.ey(this.m, null, x);
};
function rZ(x, y, r) {
x.fW(y, r);
this.reduce(r);
};
function rF(x, r) {
x.gL(r);
this.reduce(r);
};
ew.prototype.convert = rS;
ew.prototype.revert = sS;
ew.prototype.reduce = sj;
ew.prototype.eb = rZ;
ew.prototype.cL = rF;
function rm() {
if (this.t < 1) return 0;
var x = this[0];
if ((x & 1) == 0) return 0;
var y = x & 3;
y = (y * (2 - (x & 0xf) * y)) & 0xf;
y = (y * (2 - (x & 0xff) * y)) & 0xff;
y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff;
y = (y * (2 - x * y % this.dq)) % this.dq;
return (y > 0) ? this.dq - y : -y;
};
function dY(m) {
this.m = m;
this.mQ = m.wc();
this.mF = this.mQ & 0x7fff;
this.wf = this.mQ >> 15;
this.sL = (1 << (m.bb - 15)) - 1;
this.yF = 2 * m.t;
};
function pf(x) {
var r = aO();
x.abs().gG(this.m.t, r);
r.ey(this.m, null, r);
if (x.s < 0 && r.az(O.ZERO) > 0) this.m.aj(r, r);
return r;
};
function qz(x) {
var r = aO();
x.eB(r);
this.reduce(r);
return r;
};
function pN(x) {
while (x.t <= this.yF) x[x.t++] = 0;
for (var i = 0; i < this.m.t; ++i) {
var j = x[i] & 0x7fff;
var tc = (j * this.mF + (((j * this.wf + (x[i] >> 15) * this.mF) & this.sL) << 15)) & x.aW;
j = i + this.m.t;
x[j] += this.m.dN(0, tc, x, i, 0, this.m.t);
while (x[j] >= x.dq) {
x[j] -= x.dq;
x[++j]++;
}
}
x.ag();
x.gk(this.m.t, x);
if (x.az(this.m) >= 0) x.aj(this.m, x);
};
function qy(x, r) {
x.gL(r);
this.reduce(r);
};
function ov(x, y, r) {
x.fW(y, r);
this.reduce(r);
};
dY.prototype.convert = pf;
dY.prototype.revert = qz;
dY.prototype.reduce = pN;
dY.prototype.eb = ov;
dY.prototype.cL = qy;
function qB() {
return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;
};
function qK(e, z) {
if (e > 0xffffffff || e < 1) return O.ONE;
var r = aO(),
r2 = aO(),
g = z.convert(this),
i = ij(e) - 1;
g.eB(r);
while (--i >= 0) {
z.cL(r, r2);
if ((e & (1 << i)) > 0) z.eb(r2, g, r);
else {
var t = r;
r = r2;
r2 = t;
}
}
return z.revert(r);
};
function rO(e, m) {
var z;
if (e < 256 || m.cU()) z = new ew(m);
else z = new dY(m);
return this.exp(e, z);
};
O.prototype.eB = sN;
O.prototype.gr = qf;
O.prototype.gw = pR;
O.prototype.ag = sr;
O.prototype.gG = qD;
O.prototype.gk = rg;
O.prototype.fB = qZ;
O.prototype.aD = sm;
O.prototype.aj = sk;
O.prototype.fW = sT;
O.prototype.gL = st;
O.prototype.ey = qk;
O.prototype.wc = rm;
O.prototype.cU = qB;
O.prototype.exp = qK;
O.prototype.toString = sg;
O.prototype.fF = pF;
O.prototype.abs = rG;
O.prototype.az = uq;
O.prototype.ho = rK;
O.prototype.dn = sD;
O.prototype.mk = rO;
O.ZERO = dV(0);
O.ONE = dV(1);
function uy() {
var r = aO();
this.eB(r);
return r;
};
function sO() {
if (this.s < 0) {
if (this.t == 1) return this[0] - this.dq;
else if (this.t == 0) return - 1;
} else if (this.t == 1) return this[0];
else if (this.t == 0) return 0;
return ((this[1] & ((1 << (32 - this.bb)) - 1)) << this.bb) | this[0];
};
function ss() {
return (this.t == 0) ? this.s : (this[0] << 24) >> 24;
};
function sY() {
return (this.t == 0) ? this.s : (this[0] << 16) >> 16;
};
function sb(r) {
return Math.floor(Math.LN2 * this.bb / Math.log(r));
};
function si() {
if (this.s < 0) return - 1;
else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
else return 1;
};
function rI(b) {
if (b == null) b = 10;
if (this.dh() == 0 || b < 2 || b > 36) return "0";
var cs = this.lL(b);
var a = Math.pow(b, cs);
var d = dV(a),
y = aO(),
z = aO(),
r = "";
this.ey(d, y, z);
while (y.dh() > 0) {
r = (a + z.hy()).toString(b).substr(1) + r;
y.ey(d, y, z);
}
return z.hy().toString(b) + r;
};
function qP(s, b) {
this.gr(0);
if (b == null) b = 10;
var cs = this.lL(b);
var d = Math.pow(b, cs),
eP = false,
j = 0,
w = 0;
for (var i = 0; i < s.length; ++i) {
var x = mE(s, i);
if (x < 0) {
if (s.charAt(i) == "-" && this.dh() == 0) eP = true;
continue;
}
w = b * w + x;
if (++j >= cs) {
this.oa(d);
this.eD(w, 0);
j = 0;
w = 0;
}
}
if (j > 0) {
this.oa(Math.pow(b, j));
this.eD(w, 0);
}
if (eP) O.ZERO.aj(this, this);
};
function qW(a, b, c) {
if ("number" == typeof b) {
if (a < 2) this.gr(1);
else {
this.ki(a, c);
if (!this.lZ(a - 1)) this.J(O.ONE.shiftLeft(a - 1), jC, this);
if (this.cU()) this.eD(1, 0);
while (!this.gJ(b)) {
this.eD(2, 0);
if (this.ho() > a) this.aj(O.ONE.shiftLeft(a - 1), this);
}
}
} else {
var x = new Array(),
t = a & 7;
x.length = (a >> 3) + 1;
b.lp(x);
if (t > 0) x[0] &= ((1 << t) - 1);
else x[0] = 0;
this.gw(x, 256);
}
};
function rJ() {
var i = this.t,
r = new Array();
r[0] = this.s;
var p = this.bb - (i * this.bb) % 8,
d,
k = 0;
if (i-- > 0) {
if (p < this.bb && (d = this[i] >> p) != (this.s & this.aW) >> p) r[k++] = d | (this.s << (this.bb - p));
while (i >= 0) {
if (p < 8) {
d = (this[i] & ((1 << p) - 1)) << (8 - p);
d |= this[--i] >> (p += this.bb - 8);
} else {
d = (this[i] >> (p -= 8)) & 0xff;
if (p <= 0) {
p += this.bb; --i;
}
}
if ((d & 0x80) != 0) d |= -256;
if (k == 0 && (this.s & 0x80) != (d & 0x80))++k;
if (k > 0 || d != this.s) r[k++] = d;
}
}
return r;
};
function tA(a) {
return (this.az(a) == 0);
};
function bQ(a) {
return (this.az(a) < 0) ? this : a;
};
function rz(a) {
return (this.az(a) > 0) ? this : a;
};
function pZ(a, ej, r) {
var i, f, m = Math.min(a.t, this.t);
for (i = 0; i < m; ++i) r[i] = ej(this[i], a[i]);
if (a.t < this.t) {
f = a.s & this.aW;
for (i = m; i < this.t; ++i) r[i] = ej(this[i], f);
r.t = this.t;
} else {
f = this.s & this.aW;
for (i = m; i < a.t; ++i) r[i] = ej(f, a[i]);
r.t = a.t;
}
r.s = ej(this.s, a.s);
r.ag();
};
function ri(x, y) {
return x & y;
};
function sM(a) {
var r = aO();
this.J(a, ri, r);
return r;
};
function jC(x, y) {
return x | y;
};
function qI(a) {
var r = aO();
this.J(a, jC, r);
return r;
};
function oz(x, y) {
return x ^ y;
};
function sC(a) {
var r = aO();
this.J(a, oz, r);
return r;
};
function oS(x, y) {
return x & ~y;
};
function sU(a) {
var r = aO();
this.J(a, oS, r);
return r;
};
function qc() {
var r = aO();
for (var i = 0; i < this.t; ++i) r[i] = this.aW & ~this[i];
r.t = this.t;
r.s = ~this.s;
return r;
};
function rv(n) {
var r = aO();
if (n < 0) this.aD(- n, r);
else this.fB(n, r);
return r;
};
function sQ(n) {
var r = aO();
if (n < 0) this.fB(- n, r);
else this.aD(n, r);
return r;
};
function nB(x) {
if (x == 0) return - 1;
var r = 0;
if ((x & 0xffff) == 0) {
x >>= 16;
r += 16;
}
if ((x & 0xff) == 0) {
x >>= 8;
r += 8;
}
if ((x & 0xf) == 0) {
x >>= 4;
r += 4;
}
if ((x & 3) == 0) {
x >>= 2;
r += 2;
}
if ((x & 1) == 0)++r;
return r;
};
function sy() {
for (var i = 0; i < this.t; ++i) if (this[i] != 0) return i * this.bb + nB(this[i]);
if (this.s < 0) return this.t * this.bb;
return - 1;
};
function ta(x) {
var r = 0;
while (x != 0) {
x &= x - 1; ++r;
}
return r;
};
function rM() {
var r = 0,
x = this.s & this.aW;
for (var i = 0; i < this.t; ++i) r += ta(this[i] ^ x);
return r;
};
function sH(n) {
var j = Math.floor(n / this.bb);
if (j >= this.t) return (this.s != 0);
return ((this[j] & (1 << (n % this.bb))) != 0);
};
function tk(n, ej) {
var r = O.ONE.shiftLeft(n);
this.J(r, ej, r);
return r;
};
function rq(n) {
return this.jP(n, jC);
};
function uT(n) {
return this.jP(n, oS);
};
function tS(n) {
return this.jP(n, oz);
};
function pO(a, r) {
var i = 0,
c = 0,
m = Math.min(a.t, this.t);
while (i < m) {
c += this[i] + a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
if (a.t < this.t) {
c += a.s;
while (i < this.t) {
c += this[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c += this.s;
} else {
c += this.s;
while (i < a.t) {
c += a[i];
r[i++] = c & this.aW;
c >>= this.bb;
}
c += a.s;
}
r.s = (c < 0) ? -1 : 0;
if (c > 0) r[i++] = c;
else if (c < -1) r[i++] = this.dq + c;
r.t = i;
r.ag();
};
function sX(a) {
var r = aO();
this.jh(a, r);
return r;
};
function sl(a) {
var r = aO();
this.aj(a, r);
return r;
};
function sV(a) {
var r = aO();
this.fW(a, r);
return r;
};
function sR() {
var r = aO();
this.gL(r);
return r;
};
function su(a) {
var r = aO();
this.ey(a, r, null);
return r;
};
function rH(a) {
var r = aO();
this.ey(a, null, r);
return r;
};
function uI(a) {
var q = aO(),
r = aO();
this.ey(a, q, r);
return new Array(q, r);
};
function qt(n) {
this[this.t] = this.dN(0, n - 1, this, 0, 0, this.t); ++this.t;
this.ag();
};
function qH(n, w) {
if (n == 0) return;
while (this.t <= w) this[this.t++] = 0;
this[w] += n;
while (this[w] >= this.dq) {
this[w] -= this.dq;
if (++w >= this.t) this[this.t++] = 0; ++this[w];
}
};
function gR() { };
function oW(x) {
return x;
};
function pL(x, y, r) {
x.fW(y, r);
};
function qr(x, r) {
x.gL(r);
};
gR.prototype.convert = oW;
gR.prototype.revert = oW;
gR.prototype.eb = pL;
gR.prototype.cL = qr;
function tg(e) {
return this.exp(e, new gR());
};
function rs(a, n, r) {
var i = Math.min(this.t + a.t, n);
r.s = 0;
r.t = i;
while (i > 0) r[--i] = 0;
var j;
for (j = r.t - this.t; i < j; ++i) r[i + this.t] = this.dN(0, a[i], r, i, 0, this.t);
for (j = Math.min(a.t, n); i < j; ++i) this.dN(0, a[i], r, i, 0, n - i);
r.ag();
};
function rU(a, n, r) {
--n;
var i = r.t = this.t + a.t - n;
r.s = 0;
while (--i >= 0) r[i] = 0;
for (i = Math.max(n - this.t, 0); i < a.t; ++i) r[this.t + i - n] = this.dN(n - i, a[i], r, 0, 0, this.t + i - n);
r.ag();
r.gk(1, r);
};
function dW(m) {
this.r2 = aO();
this.nj = aO();
O.ONE.gG(2 * m.t, this.r2);
this.xB = this.r2.divide(m);
this.m = m;
};
function rC(x) {
if (x.s < 0 || x.t > 2 * this.m.t) return x.dn(this.m);
else if (x.az(this.m) < 0) return x;
else {
var r = aO();
x.eB(r);
this.reduce(r);
return r;
}
};
function sf(x) {
return x;
};
function ru(x) {
x.gk(this.m.t - 1, this.r2);
if (x.t > this.m.t + 1) {
x.t = this.m.t + 1;
x.ag();
}
this.xB.yA(this.r2, this.m.t + 1, this.nj);
this.m.yk(this.nj, this.m.t + 1, this.r2);
while (x.az(this.r2) < 0) x.eD(1, this.m.t + 1);
x.aj(this.r2, x);
while (x.az(this.m) >= 0) x.aj(this.m, x);
};
function tf(x, r) {
x.gL(r);
this.reduce(r);
};
function sB(x, y, r) {
x.fW(y, r);
this.reduce(r);
};
dW.prototype.convert = rC;
dW.prototype.revert = sf;
dW.prototype.reduce = ru;
dW.prototype.eb = sB;
dW.prototype.cL = tf;
function sd(e, m) {
var i = e.ho(),
k,
r = dV(1),
z;
if (i <= 0) return r;
else if (i < 18) k = 1;
else if (i < 48) k = 3;
else if (i < 144) k = 4;
else if (i < 768) k = 5;
else k = 6;
if (i < 8) z = new ew(m);
else if (m.cU()) z = new dW(m);
else z = new dY(m);
var g = new Array(),
n = 3,
fY = k - 1,
jt = (1 << k) - 1;
g[1] = z.convert(this);
if (k > 1) {
var oi = aO();
z.cL(g[1], oi);
while (n <= jt) {
g[n] = aO();
z.eb(oi, g[n - 2], g[n]);
n += 2;
}
}
var j = e.t - 1,
w, nC = true,
r2 = aO(),
t;
i = ij(e[j]) - 1;
while (j >= 0) {
if (i >= fY) w = (e[j] >> (i - fY)) & jt;
else {
w = (e[j] & ((1 << (i + 1)) - 1)) << (fY - i);
if (j > 0) w |= e[j - 1] >> (this.bb + i - fY);
}
n = k;
while ((w & 1) == 0) {
w >>= 1; --n;
}
if ((i -= n) < 0) {
i += this.bb; --j;
}
if (nC) {
g[w].eB(r);
nC = false;
} else {
while (n > 1) {
z.cL(r, r2);
z.cL(r2, r);
n -= 2;
}
if (n > 0) z.cL(r, r2);
else {
t = r;
r = r2;
r2 = t;
}
z.eb(r2, g[w], r);
}
while (j >= 0 && (e[j] & (1 << i)) == 0) {
z.cL(r, r2);
t = r;
r = r2;
r2 = t;
if (--i < 0) {
i = this.bb - 1; --j;
}
}
}
return z.revert(r);
};
function rV(a) {
var x = (this.s < 0) ? this.fF() : this.clone();
var y = (a.s < 0) ? a.fF() : a.clone();
if (x.az(y) < 0) {
var t = x;
x = y;
y = t;
}
var i = x.cg(),
g = y.cg();
if (g < 0) return x;
if (i < g) g = i;
if (g > 0) {
x.aD(g, x);
y.aD(g, y);
}
while (x.dh() > 0) {
if ((i = x.cg()) > 0) x.aD(i, x);
if ((i = y.cg()) > 0) y.aD(i, y);
if (x.az(y) >= 0) {
x.aj(y, x);
x.aD(1, x);
} else {
y.aj(x, y);
y.aD(1, y);
}
}
if (g > 0) y.fB(g, y);
return y;
};
function pW(n) {
if (n <= 0) return 0;
var d = this.dq % n,
r = (this.s < 0) ? n - 1 : 0;
if (this.t > 0) if (d == 0) r = this[0] % n;
else for (var i = this.t - 1; i >= 0; --i) r = (d * r + this[i]) % n;
return r;
};
function sG(m) {
var he = m.cU();
if ((this.cU() && he) || m.dh() == 0) return O.ZERO;
var u = m.clone(),
v = this.clone();
var a = dV(1),
b = dV(0),
c = dV(0),
d = dV(1);
while (u.dh() != 0) {
while (u.cU()) {
u.aD(1, u);
if (he) {
if (!a.cU() || !b.cU()) {
a.jh(this, a);
b.aj(m, b);
}
a.aD(1, a);
} else if (!b.cU()) b.aj(m, b);
b.aD(1, b);
}
while (v.cU()) {
v.aD(1, v);
if (he) {
if (!c.cU() || !d.cU()) {
c.jh(this, c);
d.aj(m, d);
}
c.aD(1, c);
} else if (!d.cU()) d.aj(m, d);
d.aD(1, d);
}
if (u.az(v) >= 0) {
u.aj(v, u);
if (he) a.aj(c, a);
b.aj(d, b);
} else {
v.aj(u, v);
if (he) c.aj(a, c);
d.aj(b, d);
}
}
if (v.az(O.ONE) != 0) return O.ZERO;
if (d.az(m) >= 0) return d.cK(m);
if (d.dh() < 0) d.jh(m, d);
else return d;
if (d.dh() < 0) return d.add(m);
else return d;
};
var dR = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];
var wN = (1 << 26) / dR[dR.length - 1];
function rY(t) {
var i, x = this.abs();
if (x.t == 1 && x[0] <= dR[dR.length - 1]) {
for (i = 0; i < dR.length; ++i) if (x[0] == dR[i]) return true;
return false;
}
if (x.cU()) return false;
i = 1;
while (i < dR.length) {
var m = dR[i],
j = i + 1;
while (j < dR.length && m < wN) m *= dR[j++];
m = x.wt(m);
while (i < j) if (m % dR[i++] == 0) return false;
}
return x.vn(t);
};
function pM(t) {
var gd = this.cK(O.ONE);
var k = gd.cg();
if (k <= 0) return false;
var r = gd.sq(k);
t = (t + 1) >> 1;
if (t > dR.length) t = dR.length;
var a = aO();
for (var i = 0; i < t; ++i) {
a.gr(dR[Math.floor(Math.random() * dR.length)]);
var y = a.hZ(r, this);
if (y.az(O.ONE) != 0 && y.az(gd) != 0) {
var j = 1;
while (j++ < k && y.az(gd) != 0) {
y = y.mk(2, this);
if (y.az(O.ONE) == 0) return false;
}
if (y.az(gd) != 0) return false;
}
}
return true;
};
O.prototype.lL = sb;
O.prototype.tj = rI;
O.prototype.wq = qP;
O.prototype.ki = qW;
O.prototype.J = pZ;
O.prototype.jP = tk;
O.prototype.jh = pO;
O.prototype.oa = qt;
O.prototype.eD = qH;
O.prototype.yk = rs;
O.prototype.yA = rU;
O.prototype.wt = pW;
O.prototype.vn = pM;
O.prototype.clone = uy;
O.prototype.hy = sO;
O.prototype.AI = ss;
O.prototype.yL = sY;
O.prototype.dh = si;
O.prototype.ti = rJ;
O.prototype.zD = tA;
O.prototype.min = bQ;
O.prototype.max = rz;
O.prototype.and = sM;
O.prototype.ct = qI;
O.prototype.xor = sC;
O.prototype.xR = sU;
O.prototype.not = qc;
O.prototype.shiftLeft = rv;
O.prototype.sq = sQ;
O.prototype.cg = sy;
O.prototype.zj = rM;
O.prototype.lZ = sH;
O.prototype.Ae = rq;
O.prototype.AA = uT;
O.prototype.xs = tS;
O.prototype.add = sX;
O.prototype.cK = sl;
O.prototype.multiply = sV;
O.prototype.divide = su;
O.prototype.Af = rH;
O.prototype.zA = uI;
O.prototype.hZ = sd;
O.prototype.ja = sG;
O.prototype.pow = tg;
O.prototype.hG = rV;
O.prototype.gJ = rY;
O.prototype.square = sR;
function bw(bS, r) {
return new O(bS, r);
};
function yW(s, n) {
var bk = "";
var i = 0;
while (i + n < s.length) {
bk += s.substring(i, i + n) + "\n";
i += n;
}
return bk + s.substring(i, s.length);
};
function zi(b) {
if (b < 0x10) return "0" + b.toString(16);
else return b.toString(16);
};
function pE(s, n) {
if (n < s.length + 11) {
alert("Message too long for RSA");
return null;
}
var dj = new Array();
var i = s.length - 1;
while (i >= 0 && n > 0) {
var c = s.charCodeAt(i--);
if (c < 128) {
dj[--n] = c;
} else if ((c > 127) && (c < 2048)) {
dj[--n] = (c & 63) | 128;
dj[--n] = (c >> 6) | 192;
} else {
dj[--n] = (c & 63) | 128;
dj[--n] = ((c >> 6) & 63) | 128;
dj[--n] = (c >> 12) | 224;
}
}
dj[--n] = 0;
var fs = new js();
var x = new Array();
while (n > 2) {
x[0] = 0;
while (x[0] == 0) fs.lp(x);
dj[--n] = x[0];
}
dj[--n] = 2;
dj[--n] = 0;
return new O(dj);
};
function oaep_mgf1_arr(seed, aG, hash) {
var mask = '',
i = 0;
while (mask.length < aG) {
mask += hash(String.fromCharCode.apply(String, seed.concat([(i & 0xff000000) >> 24, (i & 0x00ff0000) >> 16, (i & 0x0000ff00) >> 8, i & 0x000000ff])));
i += 1;
}
return mask;
};
function oaep_pad(s, n, hash, hashLen) {
var MD = aF.crypto.MessageDigest;
var Util = aF.crypto.Util;
var algName = null;
if (!hash) hash = "sha1";
if (typeof hash === "string") {
algName = MD.getCanonicalAlgName(hash);
hashLen = MD.getHashLength(algName);
hash = function (s) {
return hextorstr(Util.hashString(s, algName));
};
}
if (s.length + 2 * hashLen + 2 > n) {
throw "Message too long for RSA";
}
var PS = '',
i;
for (i = 0; i < n - s.length - 2 * hashLen - 2; i += 1) {
PS += '\x00';
}
var bb = hash('') + PS + '\x01' + s;
var seed = new Array(hashLen);
new js().lp(seed);
var dbMask = oaep_mgf1_arr(seed, bb.length, hash);
var maskedDB = [];
for (i = 0; i < bb.length; i += 1) {
maskedDB[i] = bb.charCodeAt(i) ^ dbMask.charCodeAt(i);
}
var seedMask = oaep_mgf1_arr(maskedDB, seed.length, hash);
var maskedSeed = [0];
for (i = 0; i < seed.length; i += 1) {
maskedSeed[i + 1] = seed[i] ^ seedMask.charCodeAt(i);
}
return new O(maskedSeed.concat(maskedDB));
};
function ae() {
this.n = null;
this.e = 0;
this.d = null;
this.p = null;
this.q = null;
this.ca = null;
this.dK = null;
this.dr = null;
};
function qu(N, E) {
this.isPublic = true;
if (typeof N !== "string") {
this.n = N;
this.e = E;
} else if (N != null && E != null && N.length > 0 && E.length > 0) {
this.n = bw(N, 16);
this.e = parseInt(E, 16);
} else alert("Invalid RSA public key");
};
function ql(x) {
return x.mk(this.e, this.n);
};
function pv(text) {
var m = pE(text, (this.n.ho() + 7) >> 3);
if (m == null) return null;
var c = this.xa(m);
if (c == null) return null;
var h = c.toString(16);
if ((h.length & 1) == 0) return h;
else return "0" + h;
};
function RSAEncryptOAEP(text, hash, hashLen) {
var m = oaep_pad(text, (this.n.ho() + 7) >> 3, hash, hashLen);
if (m == null) return null;
var c = this.xa(m);
if (c == null) return null;
var h = c.toString(16);
if ((h.length & 1) == 0) return h;
else return "0" + h;
};
ae.prototype.xa = ql;
ae.prototype.AU = qu;
ae.prototype.bZ = pv;
ae.prototype.encryptOAEP = RSAEncryptOAEP;
ae.prototype.type = "RSA";
var fZ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var mR = "=";
function nM(h) {
var i;
var c;
var bk = "";
for (i = 0; i + 3 <= h.length; i += 3) {
c = parseInt(h.substring(i, i + 3), 16);
bk += fZ.charAt(c >> 6) + fZ.charAt(c & 63);
}
if (i + 1 == h.length) {
c = parseInt(h.substring(i, i + 1), 16);
bk += fZ.charAt(c << 2);
} else if (i + 2 == h.length) {
c = parseInt(h.substring(i, i + 2), 16);
bk += fZ.charAt(c >> 2) + fZ.charAt((c & 3) << 4);
}
if (mR) while ((bk.length & 3) > 0) bk += mR;
return bk;
};
function kI(s) {
var bk = "";
var i;
var k = 0;
var eY;
var v;
for (i = 0; i < s.length; ++i) {
if (s.charAt(i) == mR) break;
v = fZ.indexOf(s.charAt(i));
if (v < 0) continue;
if (k == 0) {
bk += dE(v >> 2);
eY = v & 3;
k = 1;
} else if (k == 1) {
bk += dE((eY << 2) | (v >> 4));
eY = v & 0xf;
k = 2;
} else if (k == 2) {
bk += dE(eY);
bk += dE(v >> 2);
eY = v & 3;
k = 3;
} else {
bk += dE((eY << 2) | (v >> 4));
bk += dE(v & 0xf);
k = 0;
}
}
if (k == 1) bk += dE(eY << 2);
return bk;
};
function Ag(s) {
var h = kI(s);
var i;
var a = new Array();
for (i = 0; 2 * i < h.length; ++i) {
a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);
}
return a;
};
var AM = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var iI = new Array(- 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
function aB(bS) {
var jj, hF, fG, eR;
var i, aG, out;
aG = bS.length;
i = 0;
out = "";
while (i < aG) {
do {
jj = iI[bS.charCodeAt(i++) & 0xff];
} while (i < aG && jj == - 1);
if (jj == -1) break;
do {
hF = iI[bS.charCodeAt(i++) & 0xff];
} while (i < aG && hF == - 1);
if (hF == -1) break;
out += String.fromCharCode((jj << 2) | ((hF & 0x30) >> 4));
do {
fG = bS.charCodeAt(i++) & 0xff;
if (fG == 61) return out;
fG = iI[fG];
} while (i < aG && fG == - 1);
if (fG == -1) break;
out += String.fromCharCode(((hF & 0XF) << 4) | ((fG & 0x3C) >> 2));
do {
eR = bS.charCodeAt(i++) & 0xff;
if (eR == 61) return out;
eR = iI[eR];
} while (i < aG && eR == - 1);
if (eR == -1) break;
out += String.fromCharCode(((fG & 0x03) << 6) | eR);
}
return out;
};
function encodeArr(aN) {
var bS = "";
for (var i = 0; i < aN.length; i++) {
var tmp = aN[i].toString(16);
if (tmp.length == 1) {
tmp = "0" + tmp;
}
bS += tmp;
}
return bS.toUpperCase();
};
function _string2Bin2(bS) {
var result = [];
for (var i = 0; i < bS.length; i++) {
var x = bS.charCodeAt(i);
result.push(x);
}
return result;
};
function Base642() {
_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
this.ei = function (input, te) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
if (te) {
output = [];
while (i < input.length) {
enc1 = _keyStr.indexOf(input.charAt(i++));
enc2 = _keyStr.indexOf(input.charAt(i++));
enc3 = _keyStr.indexOf(input.charAt(i++));
enc4 = _keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output.push(chr1);
if (enc3 != 64) {
output.push(chr2);
}
if (enc4 != 64) {
output.push(chr3);
}
}
return output;
} else {
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = _keyStr.indexOf(input.charAt(i++));
enc2 = _keyStr.indexOf(input.charAt(i++));
enc3 = _keyStr.indexOf(input.charAt(i++));
enc4 = _keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
}
return encodeArr(_string2Bin2(output));
}
};
var aX = aX || (function (Math, undefined) {
var create = Object.create || (function () {
function F() { };
return function (bA) {
var fl;
F.prototype = bA;
fl = new F();
F.prototype = null;
return fl;
};
}());
var C = {};
var bC = C.bf = {};
var Base = bC.Base = (function () {
return {
extend: function (fj) {
var fl = create(this);
if (fj) {
fl.jT(fj);
}
if (!fl.hasOwnProperty('aV') || this.aV === fl.aV) {
fl.aV = function () {
fl.ro.aV.apply(this, arguments);
};
}
fl.aV.prototype = fl;
fl.ro = this;
return fl;
},
create: function () {
var kf = this.extend();
kf.aV.apply(kf, arguments);
return kf;
},
aV: function () { },
jT: function (gY) {
for (var propertyName in gY) {
if (gY.hasOwnProperty(propertyName)) {
this[propertyName] = gY[propertyName];
}
}
if (gY.hasOwnProperty('toString')) {
this.toString = gY.toString;
}
},
clone: function () {
return this.aV.prototype.extend(this);
}
};
}());
var bd = bC.bd = Base.extend({
aV: function (bq, aI) {
bq = this.bq = bq || [];
if (aI != undefined) {
this.aI = aI;
} else {
this.aI = bq.length * 4;
}
},
toString: function (vX) {
return (vX || cJ).stringify(this);
},
concat: function (aH) {
var mg = this.bq;
var ng = aH.bq;
var jo = this.aI;
var jJ = aH.aI;
this.ag();
if (jo % 4) {
for (var i = 0; i < jJ; i++) {
var so = (ng[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
mg[(jo + i) >>> 2] |= so << (24 - ((jo + i) % 4) * 8);
}
} else {
for (var i = 0; i < jJ; i += 4) {
mg[(jo + i) >>> 2] = ng[i >>> 2];
}
}
this.aI += jJ;
return this;
},
ag: function () {
var bq = this.bq;
var aI = this.aI;
bq[aI >>> 2] &= 0xffffffff << (32 - (aI % 4) * 8);
bq.length = Math.ceil(aI / 4);
},
clone: function () {
var clone = Base.clone.call(this);
clone.bq = this.bq.slice(0);
return clone;
},
random: function (eE) {
var bq = [];
var r = (function (eH) {
var eH = eH;
var iH = 0x3ade68b1;
var mask = 0xffffffff;
return function () {
iH = (0x9069 * (iH & 0xFFFF) + (iH >> 0x10)) & mask;
eH = (0x4650 * (eH & 0xFFFF) + (eH >> 0x10)) & mask;
var result = ((iH << 0x10) + eH) & mask;
result /= 0x100000000;
result += 0.5;
return result * (Math.random() > .5 ? 1 : -1);
}
});
for (var i = 0,
mt; i < eE; i += 4) {
var mz = r((mt || Math.random()) * 0x100000000);
mt = mz() * 0x3ade67b7;
bq.push((mz() * 0x100000000) | 0);
}
return new bd.aV(bq, eE);
}
});
var ck = C.bJ = {};
var cJ = ck.cJ = {
stringify: function (aH) {
var bq = aH.bq;
var aI = aH.aI;
var jm = [];
for (var i = 0; i < aI; i++) {
var iY = (bq[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
jm.push((iY >>> 4).toString(16));
jm.push((iY & 0x0f).toString(16));
}
return jm.join('');
},
parse: function (oX) {
var nU = oX.length;
var bq = [];
for (var i = 0; i < nU; i += 2) {
bq[i >>> 3] |= parseInt(oX.substr(i, 2), 16) << (24 - (i % 8) * 4);
}
return new bd.aV(bq, nU / 2);
}
};
var lq = ck.lq = {
stringify: function (aH) {
var bq = aH.bq;
var aI = aH.aI;
var mw = [];
for (var i = 0; i < aI; i++) {
var iY = (bq[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;
mw.push(String.fromCharCode(iY));
}
return mw.join('');
},
parse: function (mK) {
var mn = mK.length;
var bq = [];
for (var i = 0; i < mn; i++) {
bq[i >>> 2] |= (mK.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);
}
return new bd.aV(bq, mn);
}
};
var hh = ck.hh = {
stringify: function (aH) {
try {
return decodeURIComponent(escape(lq.stringify(aH)));
} catch (e) {
throw new Error('Malformed UTF-8 data');
}
},
parse: function (ox) {
return lq.parse(unescape(encodeURIComponent(ox)));
}
};
var fk = bC.fk = Base.extend({
reset: function () {
this.hs = new bd.aV();
this.qY = 0;
},
ji: function (data) {
if (typeof data == 'string') {
data = hh.parse(data);
}
this.hs.concat(data);
this.qY += data.aI;
},
gq: function (wx) {
var data = this.hs;
var jk = data.bq;
var gF = data.aI;
var bB = this.bB;
var cq = bB * 4;
var gD = gF / cq;
if (wx) {
gD = Math.ceil(gD);
} else {
gD = Math.max((gD | 0) - this.lN, 0);
}
var iO = gD * bB;
var nu = Math.min(iO * 4, gF);
if (iO) {
for (var offset = 0; offset < iO; offset += bB) {
this.kq(jk, offset);
}
var rj = jk.splice(0, iO);
data.aI -= nu;
}
return new bd.aV(rj, nu);
},
clone: function () {
var clone = Base.clone.call(this);
clone.hs = this.hs.clone();
return clone;
},
lN: 0
});
var wh = bC.wh = fk.extend({
aL: Base.extend(),
aV: function (aL) {
this.aL = this.aL.extend(aL);
this.reset();
},
reset: function () {
fk.reset.call(this);
this.jf();
},
update: function (jw) {
this.ji(jw);
this.gq();
return this;
},
fU: function (jw) {
if (jw) {
this.ji(jw);
}
var hash = this.kG();
return hash;
},
bB: 512 / 32,
jx: function (jM) {
return function (message, aL) {
return new jM.aV(aL).fU(message);
};
},
zS: function (jM) {
return function (message, key) {
return new cw.AP.aV(jM, key).fU(message);
};
}
});
var cw = C.jg = {};
return C;
}(Math)); (function () {
var C = aX;
var bC = C.bf;
var bd = bC.bd;
var wh = bC.wh;
var cw = C.jg;
var W = [];
var SHA1 = cw.SHA1 = wh.extend({
jf: function () {
this._hash = new bd.aV([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]);
},
kq: function (M, offset) {
var H = this._hash.bq;
var a = H[0];
var b = H[1];
var c = H[2];
var d = H[3];
var e = H[4];
for (var i = 0; i < 80; i++) {
if (i < 16) {
W[i] = M[offset + i] | 0;
} else {
var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
W[i] = (n << 1) | (n >>> 31);
}
var t = ((a << 5) | (a >>> 27)) + e + W[i];
if (i < 20) {
t += ((b & c) | (~b & d)) + 0x5a827999;
} else if (i < 40) {
t += (b ^ c ^ d) + 0x6ed9eba1;
} else if (i < 60) {
t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;
} else {
t += (b ^ c ^ d) - 0x359d3e2a;
}
e = d;
d = c;
c = (b << 30) | (b >>> 2);
b = a;
a = t;
}
H[0] = (H[0] + a) | 0;
H[1] = (H[1] + b) | 0;
H[2] = (H[2] + c) | 0;
H[3] = (H[3] + d) | 0;
H[4] = (H[4] + e) | 0;
},
kG: function () {
var data = this.hs;
var jk = data.bq;
var nBitsTotal = this.qY * 8;
var nBitsLeft = data.aI * 8;
jk[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);
jk[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);
jk[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;
data.aI = jk.length * 4;
this.gq();
return this._hash;
},
clone: function () {
var clone = wh.clone.call(this);
clone._hash = this._hash.clone();
return clone;
}
});
C.SHA1 = wh.jx(SHA1);
C.HmacSHA1 = wh.zS(SHA1);
}());
function lh() {
this.i = 0;
this.j = 0;
this.S = new Array();
};
function rW(key) {
var i, j, t;
for (i = 0; i < 256; ++i) this.S[i] = i;
j = 0;
for (i = 0; i < 256; ++i) {
j = (j + this.S[i] + key[i % key.length]) & 255;
t = this.S[i];
this.S[i] = this.S[j];
this.S[j] = t;
}
this.i = 0;
this.j = 0;
};
function sF() {
var t;
this.i = (this.i + 1) & 255;
this.j = (this.j + this.S[this.i]) & 255;
t = this.S[this.i];
this.S[this.i] = this.S[this.j];
this.S[this.j] = t;
return this.S[(t + this.S[this.i]) & 255];
};
lh.prototype.aV = rW;
lh.prototype.next = sF;
function rc() {
return new lh();
};
var kT = 256;
var iB;
var eK;
var cS;
function rng_seed_int(x) {
eK[cS++] ^= x & 255;
eK[cS++] ^= (x >> 8) & 255;
eK[cS++] ^= (x >> 16) & 255;
eK[cS++] ^= (x >> 24) & 255;
if (cS >= kT) cS -= kT;
};
function rng_seed_time() {
rng_seed_int(new Date().getTime());
};
if (eK == null) {
eK = new Array();
cS = 0;
var t;
if (navigator.appName == "Netscape" && navigator.appVersion < "5" && window.crypto) {
var z = window.crypto.random(32);
for (t = 0; t < z.length; ++t) eK[cS++] = z.charCodeAt(t) & 255;
}
while (cS < kT) {
t = Math.floor(65536 * Math.random());
eK[cS++] = t >>> 8;
eK[cS++] = t & 255;
}
cS = 0;
rng_seed_time();
}
function pH() {
if (iB == null) {
rng_seed_time();
iB = rc();
iB.aV(eK);
for (cS = 0; cS < eK.length; ++cS) eK[cS] = 0;
cS = 0;
}
return iB.next();
};
function pQ(dj) {
var i;
for (i = 0; i < dj.length; ++i) dj[i] = pH();
};
function js() { };
js.prototype.lp = pQ;
var _RE_HEXDECONLY = new RegExp("");
_RE_HEXDECONLY.compile("[^0-9a-f]", "gi");
function _rsasign_getHexPaddedDigestInfoForString(s, ah, hashAlg) {
var hashFunc = function (s) {
return aF.crypto.Util.hashString(s, hashAlg);
};
var sHashHex = hashFunc(s);
return aF.crypto.Util.getPaddedDigestInfoHex(sHashHex, hashAlg, ah);
};
function _zeroPaddingOfSignature(al, ho) {
var s = "";
var nZero = ho / 4 - al.length;
for (var i = 0; i < nZero; i++) {
s = s + "0";
}
return s + al;
};
function _rsasign_signString(s, hashAlg) {
var hashFunc = function (s) {
return aF.crypto.Util.hashString(s, hashAlg);
};
var sHashHex = hashFunc(s);
return this.signWithMessageHash(sHashHex, hashAlg);
};
function _rsasign_signWithMessageHash(sHashHex, hashAlg) {
var hPM = aF.crypto.Util.getPaddedDigestInfoHex(sHashHex, hashAlg, this.n.ho());
var biPaddedMessage = bw(hPM, 16);
var biSign = this.vi(biPaddedMessage);
var hexSign = biSign.toString(16);
return _zeroPaddingOfSignature(hexSign, this.n.ho());
};
function _rsasign_signStringWithSHA1(s) {
return _rsasign_signString.call(this, s, 'sha1');
};
function _rsasign_signStringWithSHA256(s) {
return _rsasign_signString.call(this, s, 'sha256');
};
function pss_mgf1_str(seed, aG, hash) {
var mask = '',
i = 0;
while (mask.length < aG) {
mask += hextorstr(hash(rstrtohex(seed + String.fromCharCode.apply(String, [(i & 0xff000000) >> 24, (i & 0x00ff0000) >> 16, (i & 0x0000ff00) >> 8, i & 0x000000ff]))));
i += 1;
}
return mask;
};
function _rsasign_signStringPSS(s, hashAlg, sLen) {
var hashFunc = function (sHex) {
return aF.crypto.Util.hashHex(sHex, hashAlg);
};
var hHash = hashFunc(rstrtohex(s));
if (sLen === undefined) sLen = -1;
return this.signWithMessageHashPSS(hHash, hashAlg, sLen);
};
function _rsasign_signWithMessageHashPSS(hHash, hashAlg, sLen) {
var mHash = hextorstr(hHash);
var hLen = mHash.length;
var emBits = this.n.ho() - 1;
var emLen = Math.ceil(emBits / 8);
var i;
var hashFunc = function (sHex) {
return aF.crypto.Util.hashHex(sHex, hashAlg);
};
if (sLen === -1 || sLen === undefined) {
sLen = hLen;
} else if (sLen === -2) {
sLen = emLen - hLen - 2;
} else if (sLen < -2) {
throw "invalid salt length";
}
if (emLen < (hLen + sLen + 2)) {
throw "data too long";
}
var dG = '';
if (sLen > 0) {
dG = new Array(sLen);
new js().lp(dG);
dG = String.fromCharCode.apply(String, dG);
}
var H = hextorstr(hashFunc(rstrtohex('\x00\x00\x00\x00\x00\x00\x00\x00' + mHash + dG)));
var PS = [];
for (i = 0; i < emLen - sLen - hLen - 2; i += 1) {
PS[i] = 0x00;
}
var bb = String.fromCharCode.apply(String, PS) + '\x01' + dG;
var dbMask = pss_mgf1_str(H, bb.length, hashFunc);
var maskedDB = [];
for (i = 0; i < bb.length; i += 1) {
maskedDB[i] = bb.charCodeAt(i) ^ dbMask.charCodeAt(i);
}
var mask = (0xff00 >> (8 * emLen - emBits)) & 0xff;
maskedDB[0] &= ~mask;
for (i = 0; i < hLen; i++) {
maskedDB.push(H.charCodeAt(i));
}
maskedDB.push(0xbc);
return _zeroPaddingOfSignature(this.vi(new O(maskedDB)).toString(16), this.n.ho());
};
function _rsasign_getDecryptSignatureBI(biSig, fv, hE) {
var aa = new ae();
aa.AU(fv, hE);
var biDecryptedSig = aa.xa(biSig);
return biDecryptedSig;
};
function _rsasign_getHexDigestInfoFromSig(biSig, fv, hE) {
var biDecryptedSig = _rsasign_getDecryptSignatureBI(biSig, fv, hE);
var hDigestInfo = biDecryptedSig.toString(16).replace(/^1f+00/, '');
return hDigestInfo;
};
function _rsasign_getAlgNameAndHashFromHexDisgestInfo(hDigestInfo) {
for (var algName in aF.crypto.Util.DIGESTINFOHEAD) {
var head = aF.crypto.Util.DIGESTINFOHEAD[algName];
var aG = head.length;
if (hDigestInfo.substring(0, aG) == head) {
var a = [algName, hDigestInfo.substring(aG)];
return a;
}
}
return [];
};
function _rsasign_verifySignatureWithArgs(sMsg, biSig, fv, hE) {
var hDigestInfo = _rsasign_getHexDigestInfoFromSig(biSig, fv, hE);
var digestInfoAry = _rsasign_getAlgNameAndHashFromHexDisgestInfo(hDigestInfo);
if (digestInfoAry.length == 0) return false;
var algName = digestInfoAry[0];
var diHashValue = digestInfoAry[1];
var ff = function (s) {
return aF.crypto.Util.hashString(s, algName);
};
var msgHashValue = ff(sMsg);
return (diHashValue == msgHashValue);
};
function _rsasign_verifyHexSignatureForMessage(hSig, sMsg) {
var biSig = bw(hSig, 16);
var result = _rsasign_verifySignatureWithArgs(sMsg, biSig, this.n.toString(16), this.e.toString(16));
return result;
};
function _rsasign_verifyString(sMsg, hSig) {
hSig = hSig.replace(_RE_HEXDECONLY, '');
hSig = hSig.replace(/[ \n]+/g, "");
var biSig = bw(hSig, 16);
if (biSig.ho() > this.n.ho()) return 0;
var biDecryptedSig = this.xa(biSig);
var hDigestInfo = biDecryptedSig.toString(16).replace(/^1f+00/, '');
var digestInfoAry = _rsasign_getAlgNameAndHashFromHexDisgestInfo(hDigestInfo);
if (digestInfoAry.length == 0) return false;
var algName = digestInfoAry[0];
var diHashValue = digestInfoAry[1];
var ff = function (s) {
return aF.crypto.Util.hashString(s, algName);
};
var msgHashValue = ff(sMsg);
return (diHashValue == msgHashValue);
};
function _rsasign_verifyWithMessageHash(sHashHex, hSig) {
hSig = hSig.replace(_RE_HEXDECONLY, '');
hSig = hSig.replace(/[ \n]+/g, "");
var biSig = bw(hSig, 16);
if (biSig.ho() > this.n.ho()) return 0;
var biDecryptedSig = this.xa(biSig);
var hDigestInfo = biDecryptedSig.toString(16).replace(/^1f+00/, '');
var digestInfoAry = _rsasign_getAlgNameAndHashFromHexDisgestInfo(hDigestInfo);
if (digestInfoAry.length == 0) return false;
var algName = digestInfoAry[0];
var diHashValue = digestInfoAry[1];
return (diHashValue == sHashHex);
};
function _rsasign_verifyStringPSS(sMsg, hSig, hashAlg, sLen) {
var hashFunc = function (sHex) {
return aF.crypto.Util.hashHex(sHex, hashAlg);
};
var hHash = hashFunc(rstrtohex(sMsg));
if (sLen === undefined) sLen = -1;
return this.verifyWithMessageHashPSS(hHash, hSig, hashAlg, sLen);
};
function _rsasign_verifyWithMessageHashPSS(hHash, hSig, hashAlg, sLen) {
var biSig = new O(hSig, 16);
if (biSig.ho() > this.n.ho()) {
return false;
}
var hashFunc = function (sHex) {
return aF.crypto.Util.hashHex(sHex, hashAlg);
};
var mHash = hextorstr(hHash);
var hLen = mHash.length;
var emBits = this.n.ho() - 1;
var emLen = Math.ceil(emBits / 8);
var i;
if (sLen === -1 || sLen === undefined) {
sLen = hLen;
} else if (sLen === -2) {
sLen = emLen - hLen - 2;
} else if (sLen < -2) {
throw "invalid salt length";
}
if (emLen < (hLen + sLen + 2)) {
throw "data too long";
}
var em = this.xa(biSig).ti();
for (i = 0; i < em.length; i += 1) {
em[i] &= 0xff;
}
while (em.length < emLen) {
em.unshift(0);
}
if (em[emLen - 1] !== 0xbc) {
throw "encoded message does not end in 0xbc";
}
em = String.fromCharCode.apply(String, em);
var maskedDB = em.substr(0, emLen - hLen - 1);
var H = em.substr(maskedDB.length, hLen);
var mask = (0xff00 >> (8 * emLen - emBits)) & 0xff;
if ((maskedDB.charCodeAt(0) & mask) !== 0) {
throw "bits beyond keysize not zero";
}
var dbMask = pss_mgf1_str(H, maskedDB.length, hashFunc);
var bb = [];
for (i = 0; i < maskedDB.length; i += 1) {
bb[i] = maskedDB.charCodeAt(i) ^ dbMask.charCodeAt(i);
}
bb[0] &= ~mask;
var checkLen = emLen - hLen - sLen - 2;
for (i = 0; i < checkLen; i += 1) {
if (bb[i] !== 0x00) {
throw "leftmost octets not zero";
}
}
if (bb[checkLen] !== 0x01) {
throw "0x01 marker not found";
}
return H === hextorstr(hashFunc(rstrtohex('\x00\x00\x00\x00\x00\x00\x00\x00' + mHash + String.fromCharCode.apply(String, bb.slice(- sLen)))));
};
ae.prototype.signWithMessageHash = _rsasign_signWithMessageHash;
ae.prototype.signString = _rsasign_signString;
ae.prototype.signStringWithSHA1 = _rsasign_signStringWithSHA1;
ae.prototype.signStringWithSHA256 = _rsasign_signStringWithSHA256;
ae.prototype.sign = _rsasign_signString;
ae.prototype.signWithSHA1 = _rsasign_signStringWithSHA1;
ae.prototype.signWithSHA256 = _rsasign_signStringWithSHA256;
ae.prototype.signWithMessageHashPSS = _rsasign_signWithMessageHashPSS;
ae.prototype.signStringPSS = _rsasign_signStringPSS;
ae.prototype.signPSS = _rsasign_signStringPSS;
ae.SALT_LEN_HLEN = -1;
ae.SALT_LEN_MAX = -2;
ae.prototype.verifyWithMessageHash = _rsasign_verifyWithMessageHash;
ae.prototype.verifyString = _rsasign_verifyString;
ae.prototype.verifyHexSignatureForMessage = _rsasign_verifyHexSignatureForMessage;
ae.prototype.verify = _rsasign_verifyString;
ae.prototype.verifyHexSignatureForByteArrayMessage = _rsasign_verifyHexSignatureForMessage;
ae.prototype.verifyWithMessageHashPSS = _rsasign_verifyWithMessageHashPSS;
ae.prototype.verifyStringPSS = _rsasign_verifyStringPSS;
ae.prototype.verifyPSS = _rsasign_verifyStringPSS;
ae.SALT_LEN_RECOVER = -2;
var ASN1HEX = new
function () { };
ASN1HEX.getByteLengthOfL_AtObj = function (s, pos) {
if (s.substring(pos + 2, pos + 3) != '8') return 1;
var i = parseInt(s.substring(pos + 3, pos + 4));
if (i == 0) return - 1;
if (0 < i && i < 10) return i + 1;
return - 2;
};
ASN1HEX.getHexOfL_AtObj = function (s, pos) {
var aG = ASN1HEX.getByteLengthOfL_AtObj(s, pos);
if (aG < 1) return '';
return s.substring(pos + 2, pos + 2 + aG * 2);
};
ASN1HEX.getIntOfL_AtObj = function (s, pos) {
var hLength = ASN1HEX.getHexOfL_AtObj(s, pos);
if (hLength == '') return - 1;
var kV;
if (parseInt(hLength.substring(0, 1)) < 8) {
kV = new O(hLength, 16);
} else {
kV = new O(hLength.substring(2), 16);
}
return kV.hy();
};
ASN1HEX.getStartPosOfV_AtObj = function (s, pos) {
var l_len = ASN1HEX.getByteLengthOfL_AtObj(s, pos);
if (l_len < 0) return l_len;
return pos + (l_len + 1) * 2;
};
ASN1HEX.getHexOfV_AtObj = function (s, pos) {
var pos1 = ASN1HEX.getStartPosOfV_AtObj(s, pos);
var aG = ASN1HEX.getIntOfL_AtObj(s, pos);
return s.substring(pos1, pos1 + aG * 2);
};
ASN1HEX.getHexOfTLV_AtObj = function (s, pos) {
var aA = s.substr(pos, 2);
var nl = ASN1HEX.getHexOfL_AtObj(s, pos);
var bE = ASN1HEX.getHexOfV_AtObj(s, pos);
return aA + nl + bE;
};
ASN1HEX.getPosOfNextSibling_AtObj = function (s, pos) {
var pos1 = ASN1HEX.getStartPosOfV_AtObj(s, pos);
var aG = ASN1HEX.getIntOfL_AtObj(s, pos);
return pos1 + aG * 2;
};
ASN1HEX.getPosArrayOfChildren_AtObj = function (h, pos) {
var a = new Array();
var p0 = ASN1HEX.getStartPosOfV_AtObj(h, pos);
if (h.substr(pos, 2) == "03") {
a.push(p0 + 2);
} else {
a.push(p0);
}
var aG = ASN1HEX.getIntOfL_AtObj(h, pos);
var p = p0;
var k = 0;
while (1) {
var pNext = ASN1HEX.getPosOfNextSibling_AtObj(h, p);
if (pNext == null || (pNext - p0 >= (aG * 2))) break;
if (k >= 200) break;
a.push(pNext);
p = pNext;
k++;
}
return a;
};
ASN1HEX.getNthChildIndex_AtObj = function (h, idx, nth) {
var a = ASN1HEX.getPosArrayOfChildren_AtObj(h, idx);
return a[nth];
};
ASN1HEX.getDecendantIndexByNthList = function (h, currentIndex, nthList) {
if (nthList.length == 0) {
return currentIndex;
}
var firstNth = nthList.shift();
var a = ASN1HEX.getPosArrayOfChildren_AtObj(h, currentIndex);
return ASN1HEX.getDecendantIndexByNthList(h, a[firstNth], nthList);
};
ASN1HEX.getDecendantHexTLVByNthList = function (h, currentIndex, nthList) {
var idx = ASN1HEX.getDecendantIndexByNthList(h, currentIndex, nthList);
return ASN1HEX.getHexOfTLV_AtObj(h, idx);
};
ASN1HEX.getDecendantHexVByNthList = function (h, currentIndex, nthList) {
var idx = ASN1HEX.getDecendantIndexByNthList(h, currentIndex, nthList);
return ASN1HEX.getHexOfV_AtObj(h, idx);
};
ASN1HEX.getVbyList = function (h, currentIndex, nthList, checkingTag) {
var idx = ASN1HEX.getDecendantIndexByNthList(h, currentIndex, nthList);
if (idx === undefined) {
throw "can't find nthList object";
}
if (checkingTag !== undefined) {
if (h.substr(idx, 2) != checkingTag) {
throw "checking tag doesn't match: " + h.substr(idx, 2) + "!=" + checkingTag;
}
}
return ASN1HEX.getHexOfV_AtObj(h, idx);
};
ASN1HEX.hextooidstr = function (al) {
var pA = function (s, aG) {
if (s.length >= aG) return s;
return new Array(aG - s.length + 1).join('0') + s;
};
var a = [];
var hex0 = al.substr(0, 2);
var dc = parseInt(hex0, 16);
a[0] = new String(Math.floor(dc / 40));
a[1] = new String(dc % 40);
var hex1 = al.substr(2);
var b = [];
for (var i = 0; i < hex1.length / 2; i++) {
b.push(parseInt(hex1.substr(i * 2, 2), 16));
}
var c = [];
var cbin = "";
for (var i = 0; i < b.length; i++) {
if (b[i] & 0x80) {
cbin = cbin + pA((b[i] & 0x7f).toString(2), 7);
} else {
cbin = cbin + pA((b[i] & 0x7f).toString(2), 7);
c.push(new String(parseInt(cbin, 2)));
cbin = "";
}
}
var s = a.join(".");
if (c.length > 0) s = s + "." + c.join(".");
return s;
};
ASN1HEX.dump = function (hexOrObj, flags, idx, indent) {
var al = hexOrObj;
if (hexOrObj instanceof aF.V.cD) al = hexOrObj.fh();
var _skipLongHex = function (al, limitNumOctet) {
if (al.length <= limitNumOctet * 2) {
return al;
} else {
var s = al.substr(0, limitNumOctet) + "..(total " + al.length / 2 + "bytes).." + al.substr(al.length - limitNumOctet, limitNumOctet);
return s;
};
};
if (flags === undefined) flags = {
"ommit_long_octet": 32
};
if (idx === undefined) idx = 0;
if (indent === undefined) indent = "";
var skipLongHex = flags.ommit_long_octet;
if (al.substr(idx, 2) == "01") {
var v = ASN1HEX.getHexOfV_AtObj(al, idx);
if (v == "00") {
return indent + "BOOLEAN FALSE\n";
} else {
return indent + "BOOLEAN TRUE\n";
}
}
if (al.substr(idx, 2) == "02") {
var v = ASN1HEX.getHexOfV_AtObj(al, idx);
return indent + "INTEGER " + _skipLongHex(v, skipLongHex) + "\n";
}
if (al.substr(idx, 2) == "03") {
var v = ASN1HEX.getHexOfV_AtObj(al, idx);
return indent + "BITSTRING " + _skipLongHex(v, skipLongHex) + "\n";
}
if (al.substr(idx, 2) == "04") {
var v = ASN1HEX.getHexOfV_AtObj(al, idx);
if (ASN1HEX.isASN1HEX(v)) {
var s = indent + "OCTETSTRING, encapsulates\n";
s = s + ASN1HEX.dump(v, flags, 0, indent + " ");
return s;
} else {
return indent + "OCTETSTRING " + _skipLongHex(v, skipLongHex) + "\n";
}
}
if (al.substr(idx, 2) == "05") {
return indent + "NULL\n";
}
if (al.substr(idx, 2) == "06") {
var bE = ASN1HEX.getHexOfV_AtObj(al, idx);
var oidDot = aF.V.xU.oidHexToInt(bE);
var iK = aF.V.qx.yJ.oid2name(oidDot);
var oidSpc = oidDot.replace(/\./g, ' ');
if (iK != '') {
return indent + "ObjectIdentifier " + iK + " (" + oidSpc + ")\n";
} else {
return indent + "ObjectIdentifier (" + oidSpc + ")\n";
}
}
if (al.substr(idx, 2) == "0c") {
return indent + "UTF8String '" + hextoutf8(ASN1HEX.getHexOfV_AtObj(al, idx)) + "'\n";
}
if (al.substr(idx, 2) == "13") {
return indent + "PrintableString '" + hextoutf8(ASN1HEX.getHexOfV_AtObj(al, idx)) + "'\n";
}
if (al.substr(idx, 2) == "14") {
return indent + "TeletexString '" + hextoutf8(ASN1HEX.getHexOfV_AtObj(al, idx)) + "'\n";
}
if (al.substr(idx, 2) == "16") {
return indent + "IA5String '" + hextoutf8(ASN1HEX.getHexOfV_AtObj(al, idx)) + "'\n";
}
if (al.substr(idx, 2) == "17") {
return indent + "UTCTime " + hextoutf8(ASN1HEX.getHexOfV_AtObj(al, idx)) + "\n";
}
if (al.substr(idx, 2) == "18") {
return indent + "GeneralizedTime " + hextoutf8(ASN1HEX.getHexOfV_AtObj(al, idx)) + "\n";
}
if (al.substr(idx, 2) == "30") {
if (al.substr(idx, 4) == "3000") {
return indent + "SEQUENCE {}\n";
}
var s = indent + "SEQUENCE\n";
var aIdx = ASN1HEX.getPosArrayOfChildren_AtObj(al, idx);
var flagsTemp = flags;
if ((aIdx.length == 2 || aIdx.length == 3) && al.substr(aIdx[0], 2) == "06" && al.substr(aIdx[aIdx.length - 1], 2) == "04") {
var oidHex = ASN1HEX.getHexOfV_AtObj(al, aIdx[0]);
var oidDot = aF.V.xU.oidHexToInt(oidHex);
var iK = aF.V.qx.yJ.oid2name(oidDot);
var flagsClone = JSON.parse(JSON.stringify(flags));
flagsClone.x509ExtName = iK;
flagsTemp = flagsClone;
}
for (var i = 0; i < aIdx.length; i++) {
s = s + ASN1HEX.dump(al, flagsTemp, aIdx[i], indent + " ");
}
return s;
}
if (al.substr(idx, 2) == "31") {
var s = indent + "SET\n";
var aIdx = ASN1HEX.getPosArrayOfChildren_AtObj(al, idx);
for (var i = 0; i < aIdx.length; i++) {
s = s + ASN1HEX.dump(al, flags, aIdx[i], indent + " ");
}
return s;
}
var bv = parseInt(al.substr(idx, 2), 16);
if ((bv & 128) != 0) {
var eN = bv & 31;
if ((bv & 32) != 0) {
var s = indent + "[" + eN + "]\n";
var aIdx = ASN1HEX.getPosArrayOfChildren_AtObj(al, idx);
for (var i = 0; i < aIdx.length; i++) {
s = s + ASN1HEX.dump(al, flags, aIdx[i], indent + " ");
}
return s;
} else {
var v = ASN1HEX.getHexOfV_AtObj(al, idx);
if (v.substr(0, 8) == "68747470") {
v = hextoutf8(v);
}
if (flags.x509ExtName === "subjectAltName" && eN == 2) {
v = hextoutf8(v);
}
var s = indent + "[" + eN + "] " + v + "\n";
return s;
}
}
return indent + "UNKNOWN(" + al.substr(idx, 2) + ") " + ASN1HEX.getHexOfV_AtObj(al, idx) + "\n";
};
ASN1HEX.isASN1HEX = function (al) {
if (al.length % 2 == 1) return false;
var intL = ASN1HEX.getIntOfL_AtObj(al, 0);
var tV = al.substr(0, 2);
var lV = ASN1HEX.getHexOfL_AtObj(al, 0);
var hVLength = al.length - tV.length - lV.length;
if (hVLength == intL * 2) return true;
return false;
};
function X509() {
this.subjectPublicKeyRSA = null;
this.subjectPublicKeyRSA_hN = null;
this.subjectPublicKeyRSA_hE = null;
this.al = null;
this.getSerialNumberHex = function () {
return ASN1HEX.getDecendantHexVByNthList(this.al, 0, [0, 1]);
};
this.getSignatureAlgorithmField = function () {
var sigAlgOidHex = ASN1HEX.getDecendantHexVByNthList(this.al, 0, [0, 2, 0]);
var sigAlgOidInt = aF.V.xU.oidHexToInt(sigAlgOidHex);
var sigAlgName = aF.V.qx.yJ.oid2name(sigAlgOidInt);
return sigAlgName;
};
this.getIssuerHex = function () {
return ASN1HEX.getDecendantHexTLVByNthList(this.al, 0, [0, 3]);
};
this.getIssuerString = function () {
return X509.hex2dn(ASN1HEX.getDecendantHexTLVByNthList(this.al, 0, [0, 3]));
};
this.getSubjectHex = function () {
return ASN1HEX.getDecendantHexTLVByNthList(this.al, 0, [0, 5]);
};
this.getSubjectString = function () {
return X509.hex2dn(ASN1HEX.getDecendantHexTLVByNthList(this.al, 0, [0, 5]));
};
this.getNotBefore = function () {
var s = ASN1HEX.getDecendantHexVByNthList(this.al, 0, [0, 4, 0]);
s = s.replace(/(..)/g, "%$1");
s = decodeURIComponent(s);
return s;
};
this.getNotAfter = function () {
var s = ASN1HEX.getDecendantHexVByNthList(this.al, 0, [0, 4, 1]);
s = s.replace(/(..)/g, "%$1");
s = decodeURIComponent(s);
return s;
};
this.readCertPEM = function (sCertPEM) {
var hCert = X509.pemToHex(sCertPEM);
var a = X509.getPublicKeyHexArrayFromCertHex(hCert);
var aa = new ae();
aa.AU(a[0], a[1]);
this.subjectPublicKeyRSA = aa;
this.subjectPublicKeyRSA_hN = a[0];
this.subjectPublicKeyRSA_hE = a[1];
this.al = hCert;
};
this.readCertPEMWithoutRSAInit = function (sCertPEM) {
var hCert = X509.pemToHex(sCertPEM);
var a = X509.getPublicKeyHexArrayFromCertHex(hCert);
if (typeof this.subjectPublicKeyRSA.AU === "function") {
this.subjectPublicKeyRSA.AU(a[0], a[1]);
}
this.subjectPublicKeyRSA_hN = a[0];
this.subjectPublicKeyRSA_hE = a[1];
this.al = hCert;
};
this.getInfo = function () {
var s = "Basic Fields\n";
s += " serial number: " + this.getSerialNumberHex() + "\n";
s += " signature algorithm: " + this.getSignatureAlgorithmField() + "\n";
s += " issuer: " + this.getIssuerString() + "\n";
s += " notBefore: " + this.getNotBefore() + "\n";
s += " notAfter: " + this.getNotAfter() + "\n";
s += " subject: " + this.getSubjectString() + "\n";
s += " subject public key info: " + "\n";
var pSPKI = X509.getSubjectPublicKeyInfoPosFromCertHex(this.al);
var hSPKI = ASN1HEX.getHexOfTLV_AtObj(this.al, pSPKI);
var keyObj = KEYUTIL.an(hSPKI, null, "pkcs8pub");
if (keyObj instanceof ae) {
s += " key algorithm: RSA\n";
s += " n=" + keyObj.n.toString(16).substr(0, 16) + "...\n";
s += " e=" + keyObj.e.toString(16) + "\n";
}
s += "X509v3 Extensions:\n";
var aExt = X509.getV3ExtInfoListOfCertHex(this.al);
for (var i = 0; i < aExt.length; i++) {
var info = aExt[i];
var extName = aF.V.qx.yJ.oid2name(info["oid"]);
if (extName === '') extName = info["oid"];
var critical = '';
if (info["critical"] === true) critical = "CRITICAL";
s += " " + extName + " " + critical + ":\n";
if (extName === "basicConstraints") {
var bc = X509.getExtBasicConstraints(this.al);
if (bc.cA === undefined) {
s += " {}\n";
} else {
s += " cA=true";
if (bc.pathLen !== undefined) s += ", pathLen=" + bc.pathLen;
s += "\n";
}
} else if (extName === "keyUsage") {
s += " " + X509.getExtKeyUsageString(this.al) + "\n";
} else if (extName === "subjectKeyIdentifier") {
s += " " + X509.getExtSubjectKeyIdentifier(this.al) + "\n";
} else if (extName === "authorityKeyIdentifier") {
var akid = X509.getExtAuthorityKeyIdentifier(this.al);
if (akid.kid !== undefined) s += " kid=" + akid.kid + "\n";
} else if (extName === "extKeyUsage") {
var eku = X509.getExtExtKeyUsageName(this.al);
s += " " + eku.join(", ") + "\n";
} else if (extName === "subjectAltName") {
var san = X509.getExtSubjectAltName(this.al);
s += " " + san.join(", ") + "\n";
} else if (extName === "cRLDistributionPoints") {
var cdp = X509.getExtCRLDistributionPointsURI(this.al);
s += " " + cdp + "\n";
} else if (extName === "authorityInfoAccess") {
var aia = X509.getExtAIAInfo(this.al);
if (aia.ocsp !== undefined) s += " ocsp: " + aia.ocsp.join(",") + "\n";
if (aia.caissuer !== undefined) s += " caissuer: " + aia.caissuer.join(",") + "\n";
}
}
s += "signature algorithm: " + X509.getSignatureAlgorithmName(this.al) + "\n";
s += "signature: " + X509.getSignatureValueHex(this.al).substr(0, 16) + "...\n";
return s;
};
};
X509.pemToBase64 = function (sCertPEM) {
var s = sCertPEM;
s = s.replace("-----BEGIN CERTIFICATE-----", "");
s = s.replace("-----END CERTIFICATE-----", "");
s = s.replace(/[ \n]+/g, "");
return s;
};
X509.pemToHex = function (sCertPEM) {
var b64Cert = X509.pemToBase64(sCertPEM);
var hCert = kI(b64Cert);
return hCert;
};
X509.getSubjectPublicKeyPosFromCertHex = function (hCert) {
var pInfo = X509.getSubjectPublicKeyInfoPosFromCertHex(hCert);
if (pInfo == -1) return - 1;
var a = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, pInfo);
if (a.length != 2) return - 1;
var pBitString = a[1];
if (hCert.substring(pBitString, pBitString + 2) != '03') return - 1;
var pBitStringV = ASN1HEX.getStartPosOfV_AtObj(hCert, pBitString);
if (hCert.substring(pBitStringV, pBitStringV + 2) != '00') return - 1;
return pBitStringV + 2;
};
X509.getSubjectPublicKeyInfoPosFromCertHex = function (hCert) {
var pTbsCert = ASN1HEX.getStartPosOfV_AtObj(hCert, 0);
var a = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, pTbsCert);
if (a.length < 1) return - 1;
if (hCert.substring(a[0], a[0] + 10) == "a003020102") {
if (a.length < 6) return - 1;
return a[6];
} else {
if (a.length < 5) return - 1;
return a[5];
}
};
X509.getPublicKeyHexArrayFromCertHex = function (hCert) {
var p = X509.getSubjectPublicKeyPosFromCertHex(hCert);
var a = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, p);
if (a.length != 2) return [];
var fv = ASN1HEX.getHexOfV_AtObj(hCert, a[0]);
var hE = ASN1HEX.getHexOfV_AtObj(hCert, a[1]);
if (fv != null && hE != null) {
return [fv, hE];
} else {
return [];
}
};
X509.getHexTbsCertificateFromCert = function (hCert) {
var pTbsCert = ASN1HEX.getStartPosOfV_AtObj(hCert, 0);
return pTbsCert;
};
X509.getPublicKeyHexArrayFromCertPEM = function (sCertPEM) {
var hCert = X509.pemToHex(sCertPEM);
var a = X509.getPublicKeyHexArrayFromCertHex(hCert);
return a;
};
X509.hex2dn = function (al, idx) {
if (idx === undefined) idx = 0;
if (al.substr(idx, 2) !== "30") throw "malformed DN";
var a = new Array();
var aIdx = ASN1HEX.getPosArrayOfChildren_AtObj(al, idx);
for (var i = 0; i < aIdx.length; i++) {
a.push(X509.hex2rdn(al, aIdx[i]));
}
a = a.map(function (s) {
return s.replace("/", "\\/");
});
return "/" + a.join("/");
};
X509.hex2rdn = function (al, idx) {
if (idx === undefined) idx = 0;
if (al.substr(idx, 2) !== "31") throw "malformed RDN";
var a = new Array();
var aIdx = ASN1HEX.getPosArrayOfChildren_AtObj(al, idx);
for (var i = 0; i < aIdx.length; i++) {
a.push(X509.hex2attrTypeValue(al, aIdx[i]));
}
a = a.map(function (s) {
return s.replace("+", "\\+");
});
return a.join("+");
};
X509.hex2attrTypeValue = function (al, idx) {
if (idx === undefined) idx = 0;
if (al.substr(idx, 2) !== "30") throw "malformed attribute type and value";
var aIdx = ASN1HEX.getPosArrayOfChildren_AtObj(al, idx);
if (aIdx.length !== 2 || al.substr(aIdx[0], 2) !== "06") "malformed attribute type and value";
var oidHex = ASN1HEX.getHexOfV_AtObj(al, aIdx[0]);
var oidInt = aF.V.xU.oidHexToInt(oidHex);
var atype = aF.V.qx.yJ.oid2atype(oidInt);
var bE = ASN1HEX.getHexOfV_AtObj(al, aIdx[1]);
var rawV = hextorstr(bE);
return atype + "=" + rawV;
};
X509.getPublicKeyFromCertPEM = function (sCertPEM) {
var info = X509.getPublicKeyInfoPropOfCertPEM(sCertPEM);
if (info.algoid == "2a864886f70d010101") {
var aRSA = KEYUTIL.parsePublicRawRSAKeyHex(info.keyhex);
var key = new ae();
key.AU(aRSA.n, aRSA.e);
return key;
} else if (info.algoid == "2a8648ce3d0201") {
var curveName = aF.crypto.yJ.oidhex2name[info.algparam];
var key = new aF.crypto.ECDSA({
'curve': curveName,
'info': info.keyhex
});
key.setPublicKeyHex(info.keyhex);
return key;
} else if (info.algoid == "2a8648ce380401") {
var p = ASN1HEX.getVbyList(info.algparam, 0, [0], "02");
var q = ASN1HEX.getVbyList(info.algparam, 0, [1], "02");
var g = ASN1HEX.getVbyList(info.algparam, 0, [2], "02");
var y = ASN1HEX.getHexOfV_AtObj(info.keyhex, 0);
y = y.substr(2);
var key = new aF.crypto.DSA();
key.AU(new O(p, 16), new O(q, 16), new O(g, 16), new O(y, 16));
return key;
} else {
throw "unsupported key";
}
};
X509.getPublicKeyInfoPropOfCertPEM = function (sCertPEM) {
var result = {};
result.algparam = null;
var hCert = X509.pemToHex(sCertPEM);
var a1 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, 0);
if (a1.length != 3) throw "malformed X.509 certificate PEM (code:001)";
if (hCert.substr(a1[0], 2) != "30") throw "malformed X.509 certificate PEM (code:002)";
var a2 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a1[0]);
var idx_spi = 6;
if (hCert.substr(a2[0], 2) !== "a0") idx_spi = 5;
if (a2.length < idx_spi + 1) throw "malformed X.509 certificate PEM (code:003)";
var a3 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a2[idx_spi]);
if (a3.length != 2) throw "malformed X.509 certificate PEM (code:004)";
var a4 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a3[0]);
if (a4.length != 2) throw "malformed X.509 certificate PEM (code:005)";
result.algoid = ASN1HEX.getHexOfV_AtObj(hCert, a4[0]);
if (hCert.substr(a4[1], 2) == "06") {
result.algparam = ASN1HEX.getHexOfV_AtObj(hCert, a4[1]);
} else if (hCert.substr(a4[1], 2) == "30") {
result.algparam = ASN1HEX.getHexOfTLV_AtObj(hCert, a4[1]);
}
if (hCert.substr(a3[1], 2) != "03") throw "malformed X.509 certificate PEM (code:006)";
var unusedBitAndKeyHex = ASN1HEX.getHexOfV_AtObj(hCert, a3[1]);
result.keyhex = unusedBitAndKeyHex.substr(2);
return result;
};
X509.getPublicKeyInfoPosOfCertHEX = function (hCert) {
var a1 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, 0);
if (a1.length != 3) throw "malformed X.509 certificate PEM (code:001)";
if (hCert.substr(a1[0], 2) != "30") throw "malformed X.509 certificate PEM (code:002)";
var a2 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a1[0]);
if (a2.length < 7) throw "malformed X.509 certificate PEM (code:003)";
return a2[6];
};
X509.getV3ExtInfoListOfCertHex = function (hCert) {
var a1 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, 0);
if (a1.length != 3) throw "malformed X.509 certificate PEM (code:001)";
if (hCert.substr(a1[0], 2) != "30") throw "malformed X.509 certificate PEM (code:002)";
var a2 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a1[0]);
if (a2.length < 8) throw "malformed X.509 certificate PEM (code:003)";
if (hCert.substr(a2[7], 2) != "a3") throw "malformed X.509 certificate PEM (code:004)";
var a3 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a2[7]);
if (a3.length != 1) throw "malformed X.509 certificate PEM (code:005)";
if (hCert.substr(a3[0], 2) != "30") throw "malformed X.509 certificate PEM (code:006)";
var a4 = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, a3[0]);
var numExt = a4.length;
var aInfo = new Array(numExt);
for (var i = 0; i < numExt; i++) {
aInfo[i] = X509.getV3ExtItemInfo_AtObj(hCert, a4[i]);
}
return aInfo;
};
X509.getV3ExtItemInfo_AtObj = function (hCert, pos) {
var info = {};
info.posTLV = pos;
var a = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, pos);
if (a.length != 2 && a.length != 3) throw "malformed X.509v3 Ext (code:001)";
if (hCert.substr(a[0], 2) != "06") throw "malformed X.509v3 Ext (code:002)";
var valueHex = ASN1HEX.getHexOfV_AtObj(hCert, a[0]);
info.dI = ASN1HEX.hextooidstr(valueHex);
info.critical = false;
if (a.length == 3) info.critical = true;
var posExtV = a[a.length - 1];
if (hCert.substr(posExtV, 2) != "04") throw "malformed X.509v3 Ext (code:003)";
info.posV = ASN1HEX.getStartPosOfV_AtObj(hCert, posExtV);
return info;
};
X509.getHexOfTLV_V3ExtValue = function (hCert, oidOrName) {
var pos = X509.getPosOfTLV_V3ExtValue(hCert, oidOrName);
if (pos == -1) return null;
return ASN1HEX.getHexOfTLV_AtObj(hCert, pos);
};
X509.getHexOfV_V3ExtValue = function (hCert, oidOrName) {
var pos = X509.getPosOfTLV_V3ExtValue(hCert, oidOrName);
if (pos == -1) return null;
return ASN1HEX.getHexOfV_AtObj(hCert, pos);
};
X509.getPosOfTLV_V3ExtValue = function (hCert, oidOrName) {
var dI = oidOrName;
if (!oidOrName.match(/^[0-9.]+$/)) dI = aF.V.qx.yJ.name2oid(oidOrName);
if (dI == '') return - 1;
var infoList = X509.getV3ExtInfoListOfCertHex(hCert);
for (var i = 0; i < infoList.length; i++) {
var info = infoList[i];
if (info.dI == dI) return info.posV;
}
return - 1;
};
X509.getExtBasicConstraints = function (hCert) {
var hBC = X509.getHexOfV_V3ExtValue(hCert, "basicConstraints");
if (hBC === null) return null;
if (hBC === '') return {};
if (hBC === '0101ff') return {
"cA": true
};
if (hBC.substr(0, 8) === '0101ff02') {
var pathLexHex = ASN1HEX.getHexOfV_AtObj(hBC, 6);
var pathLen = parseInt(pathLexHex, 16);
return {
"cA": true,
"pathLen": pathLen
};
}
throw "unknown error";
};
X509.KEYUSAGE_NAME = ["digitalSignature", "nonRepudiation", "keyEncipherment", "dataEncipherment", "keyAgreement", "keyCertSign", "cRLSign", "encipherOnly", "decipherOnly"];
X509.getExtKeyUsageBin = function (hCert) {
var hKeyUsage = X509.getHexOfV_V3ExtValue(hCert, "keyUsage");
if (hKeyUsage == '') return '';
if (hKeyUsage.length % 2 != 0 || hKeyUsage.length <= 2) throw "malformed key usage value";
var cW = parseInt(hKeyUsage.substr(0, 2));
var bKeyUsage = parseInt(hKeyUsage.substr(2), 16).toString(2);
return bKeyUsage.substr(0, bKeyUsage.length - cW);
};
X509.getExtKeyUsageString = function (hCert) {
var bKeyUsage = X509.getExtKeyUsageBin(hCert);
var a = new Array();
for (var i = 0; i < bKeyUsage.length; i++) {
if (bKeyUsage.substr(i, 1) == "1") a.push(X509.KEYUSAGE_NAME[i]);
}
return a.join(",");
};
X509.getExtSubjectKeyIdentifier = function (hCert) {
var hSKID = X509.getHexOfV_V3ExtValue(hCert, "subjectKeyIdentifier");
return hSKID;
};
X509.getExtAuthorityKeyIdentifier = function (hCert) {
var result = {};
var hAKID = X509.getHexOfTLV_V3ExtValue(hCert, "authorityKeyIdentifier");
if (hAKID === null) return null;
var a = ASN1HEX.getPosArrayOfChildren_AtObj(hAKID, 0);
for (var i = 0; i < a.length; i++) {
if (hAKID.substr(a[i], 2) === "80") result.kid = ASN1HEX.getHexOfV_AtObj(hAKID, a[i]);
}
return result;
};
X509.getExtExtKeyUsageName = function (hCert) {
var result = new Array();
var h = X509.getHexOfTLV_V3ExtValue(hCert, "extKeyUsage");
if (h === null) return null;
var a = ASN1HEX.getPosArrayOfChildren_AtObj(h, 0);
for (var i = 0; i < a.length; i++) {
var al = ASN1HEX.getHexOfV_AtObj(h, a[i]);
var dI = aF.V.xU.oidHexToInt(al);
var name = aF.V.qx.yJ.oid2name(dI);
result.push(name);
}
return result;
};
X509.getExtSubjectAltName = function (hCert) {
var result = new Array();
var h = X509.getHexOfTLV_V3ExtValue(hCert, "subjectAltName");
var a = ASN1HEX.getPosArrayOfChildren_AtObj(h, 0);
for (var i = 0; i < a.length; i++) {
if (h.substr(a[i], 2) === "82") {
var fqdn = hextoutf8(ASN1HEX.getHexOfV_AtObj(h, a[i]));
result.push(fqdn);
}
}
return result;
};
X509.getExtCRLDistributionPointsURI = function (hCert) {
var result = new Array();
var h = X509.getHexOfTLV_V3ExtValue(hCert, "cRLDistributionPoints");
var a = ASN1HEX.getPosArrayOfChildren_AtObj(h, 0);
for (var i = 0; i < a.length; i++) {
var hDP = ASN1HEX.getHexOfTLV_AtObj(h, a[i]);
var a1 = ASN1HEX.getPosArrayOfChildren_AtObj(hDP, 0);
for (var j = 0; j < a1.length; j++) {
if (hDP.substr(a1[j], 2) === "a0") {
var hDPN = ASN1HEX.getHexOfV_AtObj(hDP, a1[j]);
if (hDPN.substr(0, 2) === "a0") {
var hFullName = ASN1HEX.getHexOfV_AtObj(hDPN, 0);
if (hFullName.substr(0, 2) === "86") {
var hURI = ASN1HEX.getHexOfV_AtObj(hFullName, 0);
var uri = hextoutf8(hURI);
result.push(uri);
}
}
}
}
}
return result;
};
X509.getExtAIAInfo = function (hCert) {
var result = {};
result.ocsp = [];
result.caissuer = [];
var pos1 = X509.getPosOfTLV_V3ExtValue(hCert, "authorityInfoAccess");
if (pos1 == -1) return null;
if (hCert.substr(pos1, 2) != "30") throw "malformed AIA Extn Value";
var posAccDescList = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, pos1);
for (var i = 0; i < posAccDescList.length; i++) {
var p = posAccDescList[i];
var posAccDescChild = ASN1HEX.getPosArrayOfChildren_AtObj(hCert, p);
if (posAccDescChild.length != 2) throw "malformed AccessDescription of AIA Extn";
var pOID = posAccDescChild[0];
var pName = posAccDescChild[1];
if (ASN1HEX.getHexOfV_AtObj(hCert, pOID) == "2b06010505073001") {
if (hCert.substr(pName, 2) == "86") {
result.ocsp.push(hextoutf8(ASN1HEX.getHexOfV_AtObj(hCert, pName)));
}
}
if (ASN1HEX.getHexOfV_AtObj(hCert, pOID) == "2b06010505073002") {
if (hCert.substr(pName, 2) == "86") {
result.caissuer.push(hextoutf8(ASN1HEX.getHexOfV_AtObj(hCert, pName)));
}
}
}
return result;
};
X509.getSignatureAlgorithmName = function (hCert) {
var sigAlgOidHex = ASN1HEX.getDecendantHexVByNthList(hCert, 0, [1, 0]);
var sigAlgOidInt = aF.V.xU.oidHexToInt(sigAlgOidHex);
var sigAlgName = aF.V.qx.yJ.oid2name(sigAlgOidInt);
return sigAlgName;
};
X509.getSignatureValueHex = function (hCert) {
var h = ASN1HEX.getDecendantHexVByNthList(hCert, 0, [2]);
if (h.substr(0, 2) !== "00") throw "can't get signature value";
return h.substr(2);
};
X509.getSerialNumberHex = function (hCert) {
return ASN1HEX.getDecendantHexVByNthList(hCert, 0, [0, 1]);
};
if (typeof aF == "undefined" || !aF) aF = {};
if (typeof aF.crypto == "undefined" || !aF.crypto) aF.crypto = {};
aF.crypto.Util = new
function () {
this.DIGESTINFOHEAD = {
'sha1': "3021300906052b0e03021a05000414",
'sha224': "302d300d06096086480165030402040500041c",
'sha256': "3031300d060960864801650304020105000420",
'sha384': "3041300d060960864801650304020205000430",
'sha512': "3051300d060960864801650304020305000440",
'md2': "3020300c06082a864886f70d020205000410",
'md5': "3020300c06082a864886f70d020505000410",
'ripemd160': "3021300906052b2403020105000414",
};
this.DEFAULTPROVIDER = {
'md5': 'cryptojs',
'sha1': 'cryptojs',
'sha224': 'cryptojs',
'sha256': 'cryptojs',
'sha384': 'cryptojs',
'sha512': 'cryptojs',
'ripemd160': 'cryptojs',
'hmacmd5': 'cryptojs',
'hmacsha1': 'cryptojs',
'hmacsha224': 'cryptojs',
'hmacsha256': 'cryptojs',
'hmacsha384': 'cryptojs',
'hmacsha512': 'cryptojs',
'hmacripemd160': 'cryptojs',
'MD5withRSA': 'cryptojs/jsrsa',
'SHA1withRSA': 'cryptojs/jsrsa',
'SHA224withRSA': 'cryptojs/jsrsa',
'SHA256withRSA': 'cryptojs/jsrsa',
'SHA384withRSA': 'cryptojs/jsrsa',
'SHA512withRSA': 'cryptojs/jsrsa',
'RIPEMD160withRSA': 'cryptojs/jsrsa',
'MD5withECDSA': 'cryptojs/jsrsa',
'SHA1withECDSA': 'cryptojs/jsrsa',
'SHA224withECDSA': 'cryptojs/jsrsa',
'SHA256withECDSA': 'cryptojs/jsrsa',
'SHA384withECDSA': 'cryptojs/jsrsa',
'SHA512withECDSA': 'cryptojs/jsrsa',
'RIPEMD160withECDSA': 'cryptojs/jsrsa',
'SHA1withDSA': 'cryptojs/jsrsa',
'SHA224withDSA': 'cryptojs/jsrsa',
'SHA256withDSA': 'cryptojs/jsrsa',
'MD5withRSAandMGF1': 'cryptojs/jsrsa',
'SHA1withRSAandMGF1': 'cryptojs/jsrsa',
'SHA224withRSAandMGF1': 'cryptojs/jsrsa',
'SHA256withRSAandMGF1': 'cryptojs/jsrsa',
'SHA384withRSAandMGF1': 'cryptojs/jsrsa',
'SHA512withRSAandMGF1': 'cryptojs/jsrsa',
'RIPEMD160withRSAandMGF1': 'cryptojs/jsrsa',
};
this.CRYPTOJSMESSAGEDIGESTNAME = {
'md5': aX.jg.AF,
'sha1': aX.jg.SHA1,
'sha224': aX.jg.SHA224,
'sha256': aX.jg.SHA256,
'sha384': aX.jg.SHA384,
'sha512': aX.jg.SHA512,
'ripemd160': aX.jg.RIPEMD160
};
this.getDigestInfoHex = function (hHash, alg) {
if (typeof this.DIGESTINFOHEAD[alg] == "undefined") throw "alg not supported in Util.DIGESTINFOHEAD: " + alg;
return this.DIGESTINFOHEAD[alg] + hHash;
};
this.getPaddedDigestInfoHex = function (hHash, alg, ah) {
var hDigestInfo = this.getDigestInfoHex(hHash, alg);
var pmStrLen = ah / 4;
if (hDigestInfo.length + 22 > pmStrLen) throw "key is too short for SigAlg: keylen=" + ah + "," + alg;
var hHead = "0001";
var hTail = "00" + hDigestInfo;
var hMid = "";
var fLen = pmStrLen - hHead.length - hTail.length;
for (var i = 0; i < fLen; i += 2) {
hMid += "ff";
}
var hPaddedMessage = hHead + hMid + hTail;
return hPaddedMessage;
};
this.hashString = function (s, alg) {
var md = new aF.crypto.MessageDigest({
'alg': alg
});
return md.digestString(s);
};
this.hashHex = function (sHex, alg) {
var md = new aF.crypto.MessageDigest({
'alg': alg
});
return md.digestHex(sHex);
};
this.sha1 = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'sha1',
'prov': 'cryptojs'
});
return md.digestString(s);
};
this.sha256 = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'sha256',
'prov': 'cryptojs'
});
return md.digestString(s);
};
this.sha256Hex = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'sha256',
'prov': 'cryptojs'
});
return md.digestHex(s);
};
this.sha512 = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'sha512',
'prov': 'cryptojs'
});
return md.digestString(s);
};
this.sha512Hex = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'sha512',
'prov': 'cryptojs'
});
return md.digestHex(s);
};
};
aF.crypto.Util.md5 = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'md5',
'prov': 'cryptojs'
});
return md.digestString(s);
};
aF.crypto.Util.ripemd160 = function (s) {
var md = new aF.crypto.MessageDigest({
'alg': 'ripemd160',
'prov': 'cryptojs'
});
return md.digestString(s);
};
aF.crypto.Util.SECURERANDOMGEN = new js();
aF.crypto.Util.getRandomHexOfNbytes = function (n) {
var dj = new Array(n);
aF.crypto.Util.SECURERANDOMGEN.lp(dj);
return BAtohex(dj);
};
aF.crypto.Util.getRandomBigIntegerOfNbytes = function (n) {
return new O(aF.crypto.Util.getRandomHexOfNbytes(n), 16);
};
aF.crypto.Util.getRandomHexOfNbits = function (n) {
var n_remainder = n % 8;
var n_quotient = (n - n_remainder) / 8;
var dj = new Array(n_quotient + 1);
aF.crypto.Util.SECURERANDOMGEN.lp(dj);
dj[0] = (((255 << n_remainder) & 255) ^ 255) & dj[0];
return BAtohex(dj);
};
aF.crypto.Util.getRandomBigIntegerOfNbits = function (n) {
return new O(aF.crypto.Util.getRandomHexOfNbits(n), 16);
};
aF.crypto.Util.getRandomBigIntegerZeroToMax = function (biMax) {
var bitLenMax = biMax.ho();
while (1) {
var biRand = aF.crypto.Util.getRandomBigIntegerOfNbits(bitLenMax);
if (biMax.az(biRand) != -1) return biRand;
}
};
aF.crypto.Util.getRandomBigIntegerMinToMax = function (biMin, biMax) {
var flagCompare = biMin.az(biMax);
if (flagCompare == 1) throw "biMin is greater than biMax";
if (flagCompare == 0) return biMin;
var biDiff = biMax.cK(biMin);
var biRand = aF.crypto.Util.getRandomBigIntegerZeroToMax(biDiff);
return biRand.add(biMin);
};
aF.crypto.MessageDigest = function (aC) {
var md = null;
var algName = null;
var provName = null;
this.setAlgAndProvider = function (alg, prov) {
alg = aF.crypto.MessageDigest.getCanonicalAlgName(alg);
if (alg !== null && prov === undefined) prov = aF.crypto.Util.DEFAULTPROVIDER[alg];
if (':md5:sha1:sha224:sha256:sha384:sha512:ripemd160:'.indexOf(alg) != -1 && prov == 'cryptojs') {
try {
this.md = aF.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[alg].create();
} catch (ex) {
throw "setAlgAndProvider hash alg set fail alg=" + alg + "/" + ex;
}
this.updateString = function (bS) {
this.md.update(bS);
};
this.updateHex = function (al) {
var wHex = aX.bJ.cJ.parse(al);
this.md.update(wHex);
};
this.digest = function () {
var hash = this.md.fU();
return hash.toString(aX.bJ.cJ);
};
this.digestString = function (bS) {
this.updateString(bS);
return this.digest();
};
this.digestHex = function (al) {
this.updateHex(al);
return this.digest();
};
}
if (':sha256:'.indexOf(alg) != -1 && prov == 'sjcl') {
try {
this.md = new sjcl.hash.sha256();
} catch (ex) {
throw "setAlgAndProvider hash alg set fail alg=" + alg + "/" + ex;
}
this.updateString = function (bS) {
this.md.update(bS);
};
this.updateHex = function (al) {
var baHex = sjcl.codec.al.toBits(al);
this.md.update(baHex);
};
this.digest = function () {
var hash = this.md.fU();
return sjcl.codec.al.fromBits(hash);
};
this.digestString = function (bS) {
this.updateString(bS);
return this.digest();
};
this.digestHex = function (al) {
this.updateHex(al);
return this.digest();
};
}
};
this.updateString = function (bS) {
throw "updateString(str) not supported for this alg/prov: " + this.algName + "/" + this.provName;
};
this.updateHex = function (al) {
throw "updateHex(hex) not supported for this alg/prov: " + this.algName + "/" + this.provName;
};
this.digest = function () {
throw "digest() not supported for this alg/prov: " + this.algName + "/" + this.provName;
};
this.digestString = function (bS) {
throw "digestString(str) not supported for this alg/prov: " + this.algName + "/" + this.provName;
};
this.digestHex = function (al) {
throw "digestHex(hex) not supported for this alg/prov: " + this.algName + "/" + this.provName;
};
if (aC !== undefined) {
if (aC['alg'] !== undefined) {
this.algName = aC['alg'];
if (aC['prov'] === undefined) this.provName = aF.crypto.Util.DEFAULTPROVIDER[this.algName];
this.setAlgAndProvider(this.algName, this.provName);
}
}
};
aF.crypto.MessageDigest.getCanonicalAlgName = function (alg) {
if (typeof alg === "string") {
alg = alg.toLowerCase();
alg = alg.replace(/-/, '');
}
return alg;
};
aF.crypto.MessageDigest.getHashLength = function (alg) {
var MD = aF.crypto.MessageDigest;
var alg2 = MD.getCanonicalAlgName(alg);
if (MD.HASHLENGTH[alg2] === undefined) throw "not supported algorithm: " + alg;
return MD.HASHLENGTH[alg2];
};
aF.crypto.MessageDigest.HASHLENGTH = {
'md5': 16,
'sha1': 20,
'sha224': 28,
'sha256': 32,
'sha384': 48,
'sha512': 64,
'ripemd160': 20
};
aF.crypto.Mac = function (aC) {
var mac = null;
var pass = null;
var algName = null;
var provName = null;
var algProv = null;
this.setAlgAndProvider = function (alg, prov) {
alg = alg.toLowerCase();
if (alg == null) alg = "hmacsha1";
alg = alg.toLowerCase();
if (alg.substr(0, 4) != "hmac") {
throw "setAlgAndProvider unsupported HMAC alg: " + alg;
}
if (prov === undefined) prov = aF.crypto.Util.DEFAULTPROVIDER[alg];
this.algProv = alg + "/" + prov;
var hashAlg = alg.substr(4);
if (':md5:sha1:sha224:sha256:sha384:sha512:ripemd160:'.indexOf(hashAlg) != -1 && prov == 'cryptojs') {
try {
var mdObj = aF.crypto.Util.CRYPTOJSMESSAGEDIGESTNAME[hashAlg];
this.mac = aX.jg.AP.create(mdObj, this.pass);
} catch (ex) {
throw "setAlgAndProvider hash alg set fail hashAlg=" + hashAlg + "/" + ex;
}
this.updateString = function (bS) {
this.mac.update(bS);
};
this.updateHex = function (al) {
var wHex = aX.bJ.cJ.parse(al);
this.mac.update(wHex);
};
this.doFinal = function () {
var hash = this.mac.fU();
return hash.toString(aX.bJ.cJ);
};
this.doFinalString = function (bS) {
this.updateString(bS);
return this.doFinal();
};
this.doFinalHex = function (al) {
this.updateHex(al);
return this.doFinal();
};
}
};
this.updateString = function (bS) {
throw "updateString(str) not supported for this alg/prov: " + this.algProv;
};
this.updateHex = function (al) {
throw "updateHex(hex) not supported for this alg/prov: " + this.algProv;
};
this.doFinal = function () {
throw "digest() not supported for this alg/prov: " + this.algProv;
};
this.doFinalString = function (bS) {
throw "digestString(str) not supported for this alg/prov: " + this.algProv;
};
this.doFinalHex = function (al) {
throw "digestHex(hex) not supported for this alg/prov: " + this.algProv;
};
this.setPassword = function (pass) {
if (typeof pass == 'string') {
var hPass = pass;
if (pass.length % 2 == 1 || !pass.match(/^[0-9A-Fa-f]+$/)) {
hPass = rstrtohex(pass);
}
this.pass = aX.bJ.cJ.parse(hPass);
return;
}
if (typeof pass != 'object') throw "KJUR.crypto.Mac unsupported password type: " + pass;
var hPass = null;
if (pass.al !== undefined) {
if (pass.al.length % 2 != 0 || !pass.al.match(/^[0-9A-Fa-f]+$/)) throw "Mac: wrong hex password: " + pass.al;
hPass = pass.al;
}
if (pass.utf8 !== undefined) hPass = utf8tohex(pass.utf8);
if (pass.rstr !== undefined) hPass = rstrtohex(pass.rstr);
if (pass.xt !== undefined) hPass = kI(pass.xt);
if (pass.b64u !== undefined) hPass = b64utohex(pass.b64u);
if (hPass == null) throw "KJUR.crypto.Mac unsupported password type: " + pass;
this.pass = aX.bJ.cJ.parse(hPass);
};
if (aC !== undefined) {
if (aC.pass !== undefined) {
this.setPassword(aC.pass);
}
if (aC.alg !== undefined) {
this.algName = aC.alg;
if (aC['prov'] === undefined) this.provName = aF.crypto.Util.DEFAULTPROVIDER[this.algName];
this.setAlgAndProvider(this.algName, this.provName);
}
}
};
aF.crypto.Signature = function (aC) {
var prvKey = null;
var pubKey = null;
var md = null;
var sig = null;
var algName = null;
var provName = null;
var algProvName = null;
var mdAlgName = null;
var pubkeyAlgName = null;
var state = null;
var pssSaltLen = -1;
var initParams = null;
var sHashHex = null;
var hDigestInfo = null;
var hPaddedDigestInfo = null;
var hSign = null;
this._setAlgNames = function () {
var matchResult = this.algName.match(/^(.+)with(.+)$/);
if (matchResult) {
this.mdAlgName = matchResult[1].toLowerCase();
this.pubkeyAlgName = matchResult[2].toLowerCase();
}
};
this._zeroPaddingOfSignature = function (al, ho) {
var s = "";
var nZero = ho / 4 - al.length;
for (var i = 0; i < nZero; i++) {
s = s + "0";
}
return s + al;
};
this.setAlgAndProvider = function (alg, prov) {
this._setAlgNames();
if (prov != 'cryptojs/jsrsa') throw "provider not supported: " + prov;
if (':md5:sha1:sha224:sha256:sha384:sha512:ripemd160:'.indexOf(this.mdAlgName) != -1) {
try {
this.md = new aF.crypto.MessageDigest({
'alg': this.mdAlgName
});
} catch (ex) {
throw "setAlgAndProvider hash alg set fail alg=" + this.mdAlgName + "/" + ex;
}
this.aV = function (keyparam, pass) {
var keyObj = null;
try {
if (pass === undefined) {
keyObj = KEYUTIL.an(keyparam);
} else {
keyObj = KEYUTIL.an(keyparam, pass);
}
} catch (ex) {
throw "init failed:" + ex;
}
if (keyObj.isPrivate === true) {
this.prvKey = keyObj;
this.state = "SIGN";
} else if (keyObj.isPublic === true) {
this.pubKey = keyObj;
this.state = "VERIFY";
} else {
throw "init failed.:" + keyObj;
}
};
this.initSign = function (aC) {
if (typeof aC['ecprvhex'] == 'string' && typeof aC['eccurvename'] == 'string') {
this.ecprvhex = aC['ecprvhex'];
this.eccurvename = aC['eccurvename'];
} else {
this.prvKey = aC;
}
this.state = "SIGN";
};
this.initVerifyByPublicKey = function (aC) {
if (typeof aC['ecpubhex'] == 'string' && typeof aC['eccurvename'] == 'string') {
this.ecpubhex = aC['ecpubhex'];
this.eccurvename = aC['eccurvename'];
} else if (aC instanceof aF.crypto.ECDSA) {
this.pubKey = aC;
} else if (aC instanceof ae) {
this.pubKey = aC;
}
this.state = "VERIFY";
};
this.initVerifyByCertificatePEM = function (certPEM) {
var qx = new X509();
qx.readCertPEM(certPEM);
this.pubKey = qx.subjectPublicKeyRSA;
this.state = "VERIFY";
};
this.updateString = function (bS) {
this.md.updateString(bS);
};
this.updateHex = function (al) {
this.md.updateHex(al);
};
this.sign = function () {
this.sHashHex = this.md.digest();
if (typeof this.ecprvhex != "undefined" && typeof this.eccurvename != "undefined") {
var ec = new aF.crypto.ECDSA({
'curve': this.eccurvename
});
this.hSign = ec.signHex(this.sHashHex, this.ecprvhex);
} else if (this.prvKey instanceof ae && this.pubkeyAlgName == "rsaandmgf1") {
this.hSign = this.prvKey.signWithMessageHashPSS(this.sHashHex, this.mdAlgName, this.pssSaltLen);
} else if (this.prvKey instanceof ae && this.pubkeyAlgName == "rsa") {
this.hSign = this.prvKey.signWithMessageHash(this.sHashHex, this.mdAlgName);
} else if (this.prvKey instanceof aF.crypto.ECDSA) {
this.hSign = this.prvKey.signWithMessageHash(this.sHashHex);
} else if (this.prvKey instanceof aF.crypto.DSA) {
this.hSign = this.prvKey.signWithMessageHash(this.sHashHex);
} else {
throw "Signature: unsupported public key alg: " + this.pubkeyAlgName;
}
return this.hSign;
};
this.signString = function (bS) {
this.updateString(bS);
return this.sign();
};
this.signHex = function (al) {
this.updateHex(al);
return this.sign();
};
this.verify = function (hSigVal) {
this.sHashHex = this.md.digest();
if (typeof this.ecpubhex != "undefined" && typeof this.eccurvename != "undefined") {
var ec = new aF.crypto.ECDSA({
curve: this.eccurvename
});
return ec.verifyHex(this.sHashHex, hSigVal, this.ecpubhex);
} else if (this.pubKey instanceof ae && this.pubkeyAlgName == "rsaandmgf1") {
return this.pubKey.verifyWithMessageHashPSS(this.sHashHex, hSigVal, this.mdAlgName, this.pssSaltLen);
} else if (this.pubKey instanceof ae && this.pubkeyAlgName == "rsa") {
return this.pubKey.verifyWithMessageHash(this.sHashHex, hSigVal);
} else if (this.pubKey instanceof aF.crypto.ECDSA) {
return this.pubKey.verifyWithMessageHash(this.sHashHex, hSigVal);
} else if (this.pubKey instanceof aF.crypto.DSA) {
return this.pubKey.verifyWithMessageHash(this.sHashHex, hSigVal);
} else {
throw "Signature: unsupported public key alg: " + this.pubkeyAlgName;
}
};
}
};
this.aV = function (key, pass) {
throw "init(key, pass) not supported for this alg:prov=" + this.algProvName;
};
this.initVerifyByPublicKey = function (rsaPubKey) {
throw "initVerifyByPublicKey(rsaPubKeyy) not supported for this alg:prov=" + this.algProvName;
};
this.initVerifyByCertificatePEM = function (certPEM) {
throw "initVerifyByCertificatePEM(certPEM) not supported for this alg:prov=" + this.algProvName;
};
this.initSign = function (prvKey) {
throw "initSign(prvKey) not supported for this alg:prov=" + this.algProvName;
};
this.updateString = function (bS) {
throw "updateString(str) not supported for this alg:prov=" + this.algProvName;
};
this.updateHex = function (al) {
throw "updateHex(hex) not supported for this alg:prov=" + this.algProvName;
};
this.sign = function () {
throw "sign() not supported for this alg:prov=" + this.algProvName;
};
this.signString = function (bS) {
throw "digestString(str) not supported for this alg:prov=" + this.algProvName;
};
this.signHex = function (al) {
throw "digestHex(hex) not supported for this alg:prov=" + this.algProvName;
};
this.verify = function (hSigVal) {
throw "verify(hSigVal) not supported for this alg:prov=" + this.algProvName;
};
this.initParams = aC;
if (aC !== undefined) {
if (aC['alg'] !== undefined) {
this.algName = aC['alg'];
if (aC['prov'] === undefined) {
this.provName = aF.crypto.Util.DEFAULTPROVIDER[this.algName];
} else {
this.provName = aC['prov'];
}
this.algProvName = this.algName + ":" + this.provName;
this.setAlgAndProvider(this.algName, this.provName);
this._setAlgNames();
}
if (aC['psssaltlen'] !== undefined) this.pssSaltLen = aC['psssaltlen'];
if (aC['prvkeypem'] !== undefined) {
if (aC['prvkeypas'] !== undefined) {
throw "both prvkeypem and prvkeypas parameters not supported";
} else {
try {
var prvKey = new ae();
prvKey.readPrivateKeyFromPEMString(aC['prvkeypem']);
this.initSign(prvKey);
} catch (ex) {
throw "fatal error to load pem private key: " + ex;
}
}
}
}
};
aF.crypto.eU = function (aC) { };
aF.crypto.eU.bZ = function (s, keyObj, algName) {
if (keyObj instanceof ae && keyObj.isPublic) {
var algName2 = aF.crypto.eU.getAlgByKeyAndName(keyObj, algName);
if (algName2 === "RSA") return keyObj.bZ(s);
if (algName2 === "RSAOAEP") return keyObj.encryptOAEP(s, "sha1");
var a = algName2.match(/^RSAOAEP(\d+)$/);
if (a !== null) return keyObj.encryptOAEP(s, "sha" + a[1]);
throw "Cipher.encrypt: unsupported algorithm for RSAKey: " + algName;
} else {
throw "Cipher.encrypt: unsupported key or algorithm";
}
};
aF.crypto.eU.eV = function (al, keyObj, algName) {
if (keyObj instanceof ae && keyObj.isPrivate) {
var algName2 = aF.crypto.eU.getAlgByKeyAndName(keyObj, algName);
if (algName2 === "RSA") return keyObj.eV(al);
if (algName2 === "RSAOAEP") return keyObj.decryptOAEP(al, "sha1");
var a = algName2.match(/^RSAOAEP(\d+)$/);
if (a !== null) return keyObj.decryptOAEP(al, "sha" + a[1]);
throw "Cipher.decrypt: unsupported algorithm for RSAKey: " + algName;
} else {
throw "Cipher.decrypt: unsupported key or algorithm";
}
};
aF.crypto.eU.getAlgByKeyAndName = function (keyObj, algName) {
if (keyObj instanceof ae) {
if (":RSA:RSAOAEP:RSAOAEP224:RSAOAEP256:RSAOAEP384:RSAOAEP512:".indexOf(algName) != -1) return algName;
if (algName === null || algName === undefined) return "RSA";
throw "getAlgByKeyAndName: not supported algorithm name for RSAKey: " + algName;
}
throw "getAlgByKeyAndName: not supported algorithm name: " + algName;
};
aF.crypto.yJ = new
function () {
this.oidhex2name = {
'2a864886f70d010101': 'rsaEncryption',
'2a8648ce3d0201': 'ecPublicKey',
'2a8648ce380401': 'dsa',
'2a8648ce3d030107': 'secp256r1',
'2b8104001f': 'secp192k1',
'2b81040021': 'secp224r1',
'2b8104000a': 'secp256k1',
'2b81040023': 'secp521r1',
'2b81040022': 'secp384r1',
'2a8648ce380403': 'SHA1withDSA',
'608648016503040301': 'SHA224withDSA',
'608648016503040302': 'SHA256withDSA',
};
};
keyBoard.prototype.apiversion = "1.0.1";