function Ja() {
function lb() {
(new Ka).getFingerprint(La, function(a) {
if (mb())
JS.onSuccess(a)
})
}
function Nb(a, c) {
var b = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""), d = [], e;
c = c || b.length;
for (e = 0; e < a; e++)
d[e] = b[0 | Math.random() * c];
return d.join("")
}
function Ob(a) {
for (var c = "", b = a.length - 1; 0 <= b; b--)
c += a.charAt(b);
return c
}
function D(a, c, b, d, e, f, g) {
a = a + (b ^ (c | ~d)) + e + g;
return (a << f | a >>> 32 - f) + c
}
function E(a, c, b, d, e, f, g) {
a = a + (c ^ b ^ d) + e + g;
return (a << f | a >>> 32 - f) + c
}
function F(a, c, b, d, e, f, g) {
a = a + (c & d | b & ~d) + e + g;
return (a << f | a >>> 32 - f) + c
}
function G(a, c, b, d, e, f, g) {
a = a + (c & b | ~c & d) + e + g;
return (a << f | a >>> 32 - f) + c
}
function Pb(a) {
return 4294967296 * (a - (a | 0)) | 0
}
function O(a, c) {
"object" === typeof a && (c = a,
a = void 0);
if (!(this instanceof O))
return (new O(a,c)).getResult();
var b = a || (Z && Z.navigator && Z.navigator.userAgent ? Z.navigator.userAgent : "")
, d = c ? V.extend(Qb, c) : Qb;
this.getBrowser = function() {
var a = {
name: void 0,
version: void 0
};
R.rgx.call(a, b, d.browser);
a.major = V.major(a.version);
return a
}
;
this.getCPU = function() {
var a = {
architecture: void 0
};
R.rgx.call(a, b, d.cpu);
return a
}
;
this.getDevice = function() {
var a = {
vendor: void 0,
model: void 0,
type: void 0
};
R.rgx.call(a, b, d.device);
return a
}
;
this.getEngine = function() {
var a = {
name: void 0,
version: void 0
};
R.rgx.call(a, b, d.engine);
return a
}
;
this.getOS = function() {
var a = {
name: void 0,
version: void 0
};
R.rgx.call(a, b, d.os);
return a
}
;
this.getResult = function() {
return {
ua: this.getUA(),
browser: this.getBrowser(),
engine: this.getEngine(),
os: this.getOS(),
device: this.getDevice(),
cpu: this.getCPU()
}
}
;
this.getUA = function() {
return b
}
;
this.setUA = function(a) {
b = a;
return this
}
;
return this
}
function Rb(a) {
return null != /[\\\"<>\.;]/.exec(a) && "undefined" != typeof encodeURIComponent ? encodeURIComponent(a) : a
}
function ga(a, c) {
if (Sb) {
var b = c ? "visible" : "hidden";
ha && W(a) ? W(a).style.visibility = b : Tb("#" + a, "visibility:" + b)
}
}
function Tb(a, c, b, d) {
if (!p.ie || !p.mac) {
var e = v.getElementsByTagName("head")[0];
e && (b = b && "string" == typeof b ? b : "screen",
d && (nb = aa = null),
aa && nb == b || (d = v.createElement("style"),
d.setAttribute("type", "text/css"),
d.setAttribute("media", b),
aa = e.appendChild(d),
p.ie && p.win && "undefined" != typeof v.styleSheets && 0 < v.styleSheets.length && (aa = v.styleSheets[v.styleSheets.length - 1]),
nb = b),
p.ie && p.win ? aa && "object" == typeof aa.addRule && aa.addRule(a, c) : aa && "undefined" != typeof v.createTextNode && aa.appendChild(v.createTextNode(a + " {" + c + "}")))
}
}
function Ma(a) {
var c = p.pv;
a = a.split(".");
a[0] = parseInt(a[0], 10);
a[1] = parseInt(a[1], 10) || 0;
a[2] = parseInt(a[2], 10) || 0;
return c[0] > a[0] || c[0] == a[0] && c[1] > a[1] || c[0] == a[0] && c[1] == a[1] && c[2] >= a[2] ? !0 : !1
}
function W(a) {
var c = null;
try {
c = v.getElementById(a)
} catch (b) {}
return c
}
function Ub(a) {
var c = W(a);
c && "OBJECT" == c.nodeName && (p.ie && p.win ? (c.style.display = "none",
function d() {
if (4 == c.readyState) {
var e = W(a);
if (e) {
for (var f in e)
"function" == typeof e[f] && (e[f] = null);
e.parentNode.removeChild(e)
}
} else
setTimeout(d, 10)
}()) : c.parentNode.removeChild(c))
}
function ob(a, c, b) {
var d, e = W(b);
if (p.wk && 312 > p.wk)
return d;
if (e)
if ("undefined" == typeof a.id && (a.id = b),
p.ie && p.win) {
var f = "", g;
for (g in a)
a[g] != Object.prototype[g] && ("data" == g.toLowerCase() ? c.movie = a[g] : "styleclass" == g.toLowerCase() ? f += ' class\x3d"' + a[g] + '"' : "classid" != g.toLowerCase() && (f += " " + g + '\x3d"' + a[g] + '"'));
g = "";
for (var h in c)
c[h] != Object.prototype[h] && (g += '\x3cparam name\x3d"' + h + '" value\x3d"' + c[h] + '" /\x3e');
e.outerHTML = '\x3cobject classid\x3d"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + f + "\x3e" + g + "\x3c/object\x3e";
Na[Na.length] = a.id;
d = W(a.id)
} else {
h = v.createElement("object");
h.setAttribute("type", "application/x-shockwave-flash");
for (var A in a)
a[A] != Object.prototype[A] && ("styleclass" == A.toLowerCase() ? h.setAttribute("class", a[A]) : "classid" != A.toLowerCase() && h.setAttribute(A, a[A]));
for (f in c)
c[f] != Object.prototype[f] && "movie" != f.toLowerCase() && (a = h,
g = f,
A = c[f],
b = v.createElement("param"),
b.setAttribute("name", g),
b.setAttribute("value", A),
a.appendChild(b));
e.parentNode.replaceChild(h, e);
d = h
}
return d
}
function pb(a) {
var c = v.createElement("div");
if (p.win && p.ie)
c.innerHTML = a.innerHTML;
else if (a = a.getElementsByTagName("object")[0])
if (a = a.childNodes)
for (var b = a.length, d = 0; d < b; d++)
1 == a[d].nodeType && "PARAM" == a[d].nodeName || 8 == a[d].nodeType || c.appendChild(a[d].cloneNode(!0));
return c
}
function Ac(a) {
if (p.ie && p.win && 4 != a.readyState) {
var c = v.createElement("div");
a.parentNode.insertBefore(c, a);
c.parentNode.replaceChild(pb(a), c);
a.style.display = "none";
(function d() {
4 == a.readyState ? a.parentNode.removeChild(a) : setTimeout(d, 10)
}
)()
} else
a.parentNode.replaceChild(pb(a), a)
}
function qb(a, c, b, d) {
Oa = !0;
rb = d || null;
Vb = {
success: !1,
id: b
};
var e = W(b);
if (e) {
"OBJECT" == e.nodeName ? (wa = pb(e),
Pa = null) : (wa = e,
Pa = b);
a.id = "SWFObjectExprInst";
if ("undefined" == typeof a.width || !/%$/.test(a.width) && 310 > parseInt(a.width, 10))
a.width = "310";
if ("undefined" == typeof a.height || !/%$/.test(a.height) && 137 > parseInt(a.height, 10))
a.height = "137";
v.title = v.title.slice(0, 47) + " - Flash Player Installation";
d = p.ie && p.win ? "ActiveX" : "PlugIn";
d = "MMredirectURL\x3d" + S.location.toString().replace(/&/g, "%26") + "\x26MMplayerType\x3d" + d + "\x26MMdoctitle\x3d" + v.title;
c.flashvars = "undefined" != typeof c.flashvars ? c.flashvars + ("\x26" + d) : d;
p.ie && p.win && 4 != e.readyState && (d = v.createElement("div"),
b += "SWFObjectNew",
d.setAttribute("id", b),
e.parentNode.insertBefore(d, e),
e.style.display = "none",
function g() {
4 == e.readyState ? e.parentNode.removeChild(e) : setTimeout(g, 10)
}());
ob(a, c, b)
}
}
function sb() {
return !Oa && Ma("6.0.65") && (p.win || p.mac) && !(p.wk && 312 > p.wk)
}
function tb(a) {
var c = null;
(a = W(a)) && "OBJECT" == a.nodeName && ("undefined" != typeof a.SetVariable ? c = a : (a = a.getElementsByTagName("object")[0]) && (c = a));
return c
}
function ub() {
var a = da.length;
if (0 < a)
for (var c = 0; c < a; c++) {
var b = da[c].id
, d = da[c].callbackFn
, e = {
success: !1,
id: b
};
if (0 < p.pv[0]) {
var f = W(b);
if (f)
if (!Ma(da[c].swfVersion) || p.wk && 312 > p.wk)
if (da[c].expressInstall && sb()) {
e = {};
e.data = da[c].expressInstall;
e.width = f.getAttribute("width") || "0";
e.height = f.getAttribute("height") || "0";
f.getAttribute("class") && (e.styleclass = f.getAttribute("class"));
f.getAttribute("align") && (e.align = f.getAttribute("align"));
for (var g = {}, f = f.getElementsByTagName("param"), h = f.length, A = 0; A < h; A++)
"movie" != f[A].getAttribute("name").toLowerCase() && (g[f[A].getAttribute("name")] = f[A].getAttribute("value"));
qb(e, g, b, d)
} else
Ac(f),
d && d(e);
else
ga(b, !0),
d && (e.success = !0,
e.ref = tb(b),
d(e))
} else
ga(b, !0),
d && ((b = tb(b)) && "undefined" != typeof b.SetVariable && (e.success = !0,
e.ref = b),
d(e))
}
}
function Wb(a) {
if ("undefined" != typeof S.addEventListener)
S.addEventListener("load", a, !1);
else if ("undefined" != typeof v.addEventListener)
v.addEventListener("load", a, !1);
else if ("undefined" != typeof S.attachEvent) {
var c = S;
c.attachEvent("onload", a);
ma[ma.length] = [c, "onload", a]
} else if ("function" == typeof S.onload) {
var b = S.onload;
S.onload = function() {
b();
a()
}
} else
S.onload = a
}
function Xb(a) {
ha ? a() : Qa[Qa.length] = a
}
function na() {
if (!ha) {
try {
var a = v.getElementsByTagName("body")[0].appendChild(v.createElement("span"));
a.parentNode.removeChild(a)
} catch (b) {
return
}
ha = !0;
for (var a = Qa.length, c = 0; c < a; c++)
Qa[c]()
}
}
function Ra(a) {
if (!a)
return "";
if (Bc(a))
return a.replace(/\s/g, "");
-1 != a.indexOf("://") && (a = a.substr(a.indexOf("://") + 3));
var c = "com net org gov edu mil biz name info mobi pro travel museum int areo post rec".split(" ")
, b = a.split(".");
if (1 >= b.length || !isNaN(b[b.length - 1]))
return a;
for (a = 0; a < c.length && c[a] != b[b.length - 1]; )
a++;
if (a != c.length)
return "." + b[b.length - 2] + "." + b[b.length - 1];
for (a = 0; a < c.length && c[a] != b[b.length - 2]; )
a++;
return a == c.length ? b[b.length - 2] + "." + b[b.length - 1] : "." + b[b.length - 3] + "." + b[b.length - 2] + "." + b[b.length - 1]
}
function Sa() {
function a() {
throw Error("'new Fingerprint()' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200");
}
function c() {
var a = document.createElement("canvas")
, c = null;
try {
c = a.getContext("webgl") || a.getContext("experimental-webgl")
} catch (q) {}
c || (c = null);
return c
}
function b() {
if (!d())
return !1;
var a = c();
return !!window.WebGLRenderingContext && !!a
}
function d() {
var a = document.createElement("canvas");
return !(!a.getContext || !a.getContext("2d"))
}
function e() {
var a = navigator.userAgent.toLowerCase()
, c = navigator.productSub
, a = 0 <= a.indexOf("firefox") ? "Firefox" : 0 <= a.indexOf("opera") || 0 <= a.indexOf("opr") ? "Opera" : 0 <= a.indexOf("chrome") ? "Chrome" : 0 <= a.indexOf("safari") ? "Safari" : 0 <= a.indexOf("trident") ? "Internet Explorer" : "Other";
if (("Chrome" === a || "Safari" === a || "Opera" === a) && "20030107" !== c)
return !0;
c = eval.toString().length;
if (37 === c && "Safari" !== a && "Firefox" !== a && "Other" !== a || 39 === c && "Internet Explorer" !== a && "Other" !== a || 33 === c && "Chrome" !== a && "Opera" !== a && "Other" !== a)
return !0;
var b;
try {
throw "a";
} catch (oa) {
try {
oa.toSource(),
b = !0
} catch (Yb) {
b = !1
}
}
return b && "Firefox" !== a && "Other" !== a
}
function f() {
var a = navigator.userAgent.toLowerCase()
, c = navigator.oscpu
, b = navigator.platform.toLowerCase()
, a = 0 <= a.indexOf("windows phone") ? "Windows Phone" : 0 <= a.indexOf("win") ? "Windows" : 0 <= a.indexOf("android") ? "Android" : 0 <= a.indexOf("linux") || 0 <= a.indexOf("cros") ? "Linux" : 0 <= a.indexOf("iphone") || 0 <= a.indexOf("ipad") ? "iOS" : 0 <= a.indexOf("mac") ? "Mac" : "Other";
return ("ontouchstart"in window || 0 < navigator.maxTouchPoints || 0 < navigator.msMaxTouchPoints) && "Windows Phone" !== a && "Android" !== a && "iOS" !== a && "Other" !== a || "undefined" !== typeof c && (c = c.toLowerCase(),
0 <= c.indexOf("win") && "Windows" !== a && "Windows Phone" !== a || 0 <= c.indexOf("linux") && "Linux" !== a && "Android" !== a || 0 <= c.indexOf("mac") && "Mac" !== a && "iOS" !== a || (-1 === c.indexOf("win") && -1 === c.indexOf("linux") && -1 === c.indexOf("mac")) !== ("Other" === a)) ? !0 : 0 <= b.indexOf("win") && "Windows" !== a && "Windows Phone" !== a || (0 <= b.indexOf("linux") || 0 <= b.indexOf("android") || 0 <= b.indexOf("pike")) && "Linux" !== a && "Android" !== a || (0 <= b.indexOf("mac") || 0 <= b.indexOf("ipad") || 0 <= b.indexOf("ipod") || 0 <= b.indexOf("iphone")) && "Mac" !== a && "iOS" !== a || (0 > b.indexOf("win") && 0 > b.indexOf("linux") && 0 > b.indexOf("mac") && 0 > b.indexOf("iphone") && 0 > b.indexOf("ipad")) !== ("Other" === a) ? !0 : "undefined" === typeof navigator.plugins && "Windows" !== a && "Windows Phone" !== a
}
function g() {
if ("undefined" !== typeof navigator.languages)
try {
if (navigator.languages[0].substr(0, 2) !== navigator.language.substr(0, 2))
return !0
} catch (k) {
return !0
}
return !1
}
function h() {
function a(a) {
b.clearColor(0, 0, 0, 1);
b.enable(b.DEPTH_TEST);
b.depthFunc(b.LEQUAL);
b.clear(b.COLOR_BUFFER_BIT | b.DEPTH_BUFFER_BIT);
return "[" + a[0] + ", " + a[1] + "]"
}
var b;
b = c();
if (!b)
return null;
var d = []
, e = b.createBuffer();
b.bindBuffer(b.ARRAY_BUFFER, e);
var f = new Float32Array([-.2, -.9, 0, .4, -.26, 0, 0, .732134444, 0]);
b.bufferData(b.ARRAY_BUFFER, f, b.STATIC_DRAW);
e.itemSize = 3;
e.numItems = 3;
var f = b.createProgram()
, g = b.createShader(b.VERTEX_SHADER);
b.shaderSource(g, "attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate\x3dattrVertex+uniformOffset;gl_Position\x3dvec4(attrVertex,0,1);}");
b.compileShader(g);
var r = b.createShader(b.FRAGMENT_SHADER);
b.shaderSource(r, "precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor\x3dvec4(varyinTexCoordinate,0,1);}");
b.compileShader(r);
b.attachShader(f, g);
b.attachShader(f, r);
b.linkProgram(f);
b.useProgram(f);
f.vertexPosAttrib = b.getAttribLocation(f, "attrVertex");
f.offsetUniform = b.getUniformLocation(f, "uniformOffset");
b.enableVertexAttribArray(f.vertexPosArray);
b.vertexAttribPointer(f.vertexPosAttrib, e.itemSize, b.FLOAT, !1, 0, 0);
b.uniform2f(f.offsetUniform, 1, 1);
b.drawArrays(b.TRIANGLE_STRIP, 0, e.numItems);
try {
d.push(b.canvas.toDataURL())
} catch (Cc) {}
d.push("extensions:" + (b.getSupportedExtensions() || []).join(";"));
d.push("webgl aliased line width range:" + a(b.getParameter(b.ALIASED_LINE_WIDTH_RANGE)));
d.push("webgl aliased point size range:" + a(b.getParameter(b.ALIASED_POINT_SIZE_RANGE)));
d.push("webgl alpha bits:" + b.getParameter(b.ALPHA_BITS));
d.push("webgl antialiasing:" + (b.getContextAttributes().antialias ? "yes" : "no"));
d.push("webgl blue bits:" + b.getParameter(b.BLUE_BITS));
d.push("webgl depth bits:" + b.getParameter(b.DEPTH_BITS));
d.push("webgl green bits:" + b.getParameter(b.GREEN_BITS));
d.push("webgl max anisotropy:" + function(a) {
var b = a.getExtension("EXT_texture_filter_anisotropic") || a.getExtension("WEBKIT_EXT_texture_filter_anisotropic") || a.getExtension("MOZ_EXT_texture_filter_anisotropic");
return b ? (a = a.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT),
0 === a && (a = 2),
a) : null
}(b));
d.push("webgl max combined texture image units:" + b.getParameter(b.MAX_COMBINED_TEXTURE_IMAGE_UNITS));
d.push("webgl max cube map texture size:" + b.getParameter(b.MAX_CUBE_MAP_TEXTURE_SIZE));
d.push("webgl max fragment uniform vectors:" + b.getParameter(b.MAX_FRAGMENT_UNIFORM_VECTORS));
d.push("webgl max render buffer size:" + b.getParameter(b.MAX_RENDERBUFFER_SIZE));
d.push("webgl max texture image units:" + b.getParameter(b.MAX_TEXTURE_IMAGE_UNITS));
d.push("webgl max texture size:" + b.getParameter(b.MAX_TEXTURE_SIZE));
d.push("webgl max varying vectors:" + b.getParameter(b.MAX_VARYING_VECTORS));
d.push("webgl max vertex attribs:" + b.getParameter(b.MAX_VERTEX_ATTRIBS));
d.push("webgl max vertex texture image units:" + b.getParameter(b.MAX_VERTEX_TEXTURE_IMAGE_UNITS));
d.push("webgl max vertex uniform vectors:" + b.getParameter(b.MAX_VERTEX_UNIFORM_VECTORS));
d.push("webgl max viewport dims:" + a(b.getParameter(b.MAX_VIEWPORT_DIMS)));
d.push("webgl red bits:" + b.getParameter(b.RED_BITS));
d.push("webgl renderer:" + b.getParameter(b.RENDERER));
d.push("webgl shading language version:" + b.getParameter(b.SHADING_LANGUAGE_VERSION));
d.push("webgl stencil bits:" + b.getParameter(b.STENCIL_BITS));
d.push("webgl vendor:" + b.getParameter(b.VENDOR));
d.push("webgl version:" + b.getParameter(b.VERSION));
try {
var n = b.getExtension("WEBGL_debug_renderer_info");
n && (d.push("webgl unmasked vendor:" + b.getParameter(n.UNMASKED_VENDOR_WEBGL)),
d.push("webgl unmasked renderer:" + b.getParameter(n.UNMASKED_RENDERER_WEBGL)))
} catch (Cc) {}
if (!b.getShaderPrecisionFormat)
return d;
w(["FLOAT", "INT"], function(a) {
w(["VERTEX", "FRAGMENT"], function(c) {
w(["HIGH", "MEDIUM", "LOW"], function(e) {
w(["precision", "rangeMin", "rangeMax"], function(k) {
var q = b.getShaderPrecisionFormat(b[c + "_SHADER"], b[e + "_" + a])[k];
"precision" !== k && (k = "precision " + k);
k = ["webgl ", c.toLowerCase(), " shader ", e.toLowerCase(), " ", a.toLowerCase(), " ", k, ":", q].join("");
d.push(k)
})
})
})
});
return d
}
function A(a) {
if (null == navigator.plugins)
return a.NOT_AVAILABLE;
for (var b = [], c = 0, d = navigator.plugins.length; c < d; c++)
navigator.plugins[c] && b.push(navigator.plugins[c]);
for (var c = !1, d = 0, e = a.plugins.sortPluginsFor.length; d < e; d++)
if (navigator.userAgent.match(a.plugins.sortPluginsFor[d])) {
c = !0;
break
}
c && (b = b.sort(function(a, b) {
return a.name > b.name ? 1 : a.name < b.name ? -1 : 0
}));
return m(b, function(a) {
var b = m(a, function(a) {
return [a.type, a.suffixes]
});
return [a.name, a.description, b]
})
}
function m(a, b) {
var c = [];
if (null == a)
return c;
if (Array.prototype.map && a.map === Array.prototype.map)
return a.map(b);
w(a, function(a, d, e) {
c.push(b(a, d, e))
});
return c
}
function w(a, b) {
if (Array.prototype.forEach && a.forEach === Array.prototype.forEach)
a.forEach(b);
else if (a.length === +a.length)
for (var c = 0, d = a.length; c < d; c++)
b(a[c], c, a);
else
for (c in a)
a.hasOwnProperty(c) && b(a[c], c, a)
}
function r(a, b) {
a = a || "";
b = b || 0;
for (var c = a.length % 16, d = a.length - c, e = [0, b], k = [0, b], f, l, g = [2277735313, 289559509], r = [1291169091, 658871167], h = 0; h < d; h += 16)
f = [a.charCodeAt(h + 4) & 255 | (a.charCodeAt(h + 5) & 255) << 8 | (a.charCodeAt(h + 6) & 255) << 16 | (a.charCodeAt(h + 7) & 255) << 24, a.charCodeAt(h) & 255 | (a.charCodeAt(h + 1) & 255) << 8 | (a.charCodeAt(h + 2) & 255) << 16 | (a.charCodeAt(h + 3) & 255) << 24],
l = [a.charCodeAt(h + 12) & 255 | (a.charCodeAt(h + 13) & 255) << 8 | (a.charCodeAt(h + 14) & 255) << 16 | (a.charCodeAt(h + 15) & 255) << 24, a.charCodeAt(h + 8) & 255 | (a.charCodeAt(h + 9) & 255) << 8 | (a.charCodeAt(h + 10) & 255) << 16 | (a.charCodeAt(h + 11) & 255) << 24],
f = z(f, g),
f = Q(f, 31),
f = z(f, r),
e = n(e, f),
e = Q(e, 27),
e = p(e, k),
e = p(z(e, [0, 5]), [0, 1390208809]),
l = z(l, r),
l = Q(l, 33),
l = z(l, g),
k = n(k, l),
k = Q(k, 31),
k = p(k, e),
k = p(z(k, [0, 5]), [0, 944331445]);
f = [0, 0];
l = [0, 0];
switch (c) {
case 15:
l = n(l, y([0, a.charCodeAt(h + 14)], 48));
case 14:
l = n(l, y([0, a.charCodeAt(h + 13)], 40));
case 13:
l = n(l, y([0, a.charCodeAt(h + 12)], 32));
case 12:
l = n(l, y([0, a.charCodeAt(h + 11)], 24));
case 11:
l = n(l, y([0, a.charCodeAt(h + 10)], 16));
case 10:
l = n(l, y([0, a.charCodeAt(h + 9)], 8));
case 9:
l = n(l, [0, a.charCodeAt(h + 8)]),
l = z(l, r),
l = Q(l, 33),
l = z(l, g),
k = n(k, l);
case 8:
f = n(f, y([0, a.charCodeAt(h + 7)], 56));
case 7:
f = n(f, y([0, a.charCodeAt(h + 6)], 48));
case 6:
f = n(f, y([0, a.charCodeAt(h + 5)], 40));
case 5:
f = n(f, y([0, a.charCodeAt(h + 4)], 32));
case 4:
f = n(f, y([0, a.charCodeAt(h + 3)], 24));
case 3:
f = n(f, y([0, a.charCodeAt(h + 2)], 16));
case 2:
f = n(f, y([0, a.charCodeAt(h + 1)], 8));
case 1:
f = n(f, [0, a.charCodeAt(h)]),
f = z(f, g),
f = Q(f, 31),
f = z(f, r),
e = n(e, f)
}
e = n(e, [0, a.length]);
k = n(k, [0, a.length]);
e = p(e, k);
k = p(k, e);
e = u(e);
k = u(k);
e = p(e, k);
k = p(k, e);
return ("00000000" + (e[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (e[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (k[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (k[1] >>> 0).toString(16)).slice(-8)
}
function u(a) {
a = n(a, [0, a[0] >>> 1]);
a = z(a, [4283543511, 3981806797]);
a = n(a, [0, a[0] >>> 1]);
a = z(a, [3301882366, 444984403]);
return a = n(a, [0, a[0] >>> 1])
}
function n(a, b) {
return [a[0] ^ b[0], a[1] ^ b[1]]
}
function y(a, b) {
b %= 64;
return 0 === b ? a : 32 > b ? [a[0] << b | a[1] >>> 32 - b, a[1] << b] : [a[1] << b - 32, 0]
}
function Q(a, b) {
b %= 64;
if (32 === b)
return [a[1], a[0]];
if (32 > b)
return [a[0] << b | a[1] >>> 32 - b, a[1] << b | a[0] >>> 32 - b];
b -= 32;
return [a[1] << b | a[0] >>> 32 - b, a[0] << b | a[1] >>> 32 - b]
}
function z(a, b) {
a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535];
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
var c = [0, 0, 0, 0];
c[3] += a[3] * b[3];
c[2] += c[3] >>> 16;
c[3] &= 65535;
c[2] += a[2] * b[3];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[2] += a[3] * b[2];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[1] += a[1] * b[3];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[1] += a[2] * b[2];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[1] += a[3] * b[1];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[0] += a[0] * b[3] + a[1] * b[2] + a[2] * b[1] + a[3] * b[0];
c[0] &= 65535;
return [c[0] << 16 | c[1], c[2] << 16 | c[3]]
}
function p(a, b) {
a = [a[0] >>> 16, a[0] & 65535, a[1] >>> 16, a[1] & 65535];
b = [b[0] >>> 16, b[0] & 65535, b[1] >>> 16, b[1] & 65535];
var c = [0, 0, 0, 0];
c[3] += a[3] + b[3];
c[2] += c[3] >>> 16;
c[3] &= 65535;
c[2] += a[2] + b[2];
c[1] += c[2] >>> 16;
c[2] &= 65535;
c[1] += a[1] + b[1];
c[0] += c[1] >>> 16;
c[1] &= 65535;
c[0] += a[0] + b[0];
c[0] &= 65535;
return [c[0] << 16 | c[1], c[2] << 16 | c[3]]
}
var v = {
preprocessor: null,
audio: {
timeout: 1E3,
excludeIOS11: !0
},
fonts: {
swfContainerId: "fingerprintjs2",
swfPath: "flash/compiled/FontList.swf",
userDefinedFonts: [],
extendedJsFonts: !1
},
screen: {
detectScreenOrientation: !0
},
plugins: {
sortPluginsFor: [/palemoon/i],
excludeIE: !1
},
extraComponents: [],
excludes: {
enumerateDevices: !0,
doNotTrack: !0,
fontsFlash: !0
},
NOT_AVAILABLE: "not available",
ERROR: "error",
EXCLUDED: "excluded"
}
, t = [{
key: "userAgent",
getData: function(a) {
a(navigator.userAgent)
}
}, {
key: "webdriver",
getData: function(a, b) {
a(null == navigator.webdriver ? b.NOT_AVAILABLE : navigator.webdriver)
}
}, {
key: "language",
getData: function(a, b) {
a(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || b.NOT_AVAILABLE)
}
}, {
key: "colorDepth",
getData: function(a, b) {
a(window.screen.colorDepth || b.NOT_AVAILABLE)
}
}, {
key: "deviceMemory",
getData: function(a, b) {
a(navigator.deviceMemory || b.NOT_AVAILABLE)
}
}, {
key: "devicePixelRatio",
getData: function(a, b) {
a(window.devicePixelRatio || b.NOT_AVAILABLE)
}
}, {
key: "hardwareConcurrency",
getData: function(a, b) {
a(navigator.hardwareConcurrency ? navigator.hardwareConcurrency : b.NOT_AVAILABLE)
}
}, {
key: "screenResolution",
getData: function(a, b) {
var c = [window.screen.width, window.screen.height];
b.screen.detectScreenOrientation && c.sort().reverse();
a(c)
}
}, {
key: "availableScreenResolution",
getData: function(a, b) {
var c;
window.screen.availWidth && window.screen.availHeight ? (c = [window.screen.availHeight, window.screen.availWidth],
b.screen.detectScreenOrientation && c.sort().reverse()) : c = b.NOT_AVAILABLE;
a(c)
}
}, {
key: "timezoneOffset",
getData: function(a) {
a((new Date).getTimezoneOffset())
}
}, {
key: "timezone",
getData: function(a, b) {
window.Intl && window.Intl.DateTimeFormat ? a((new window.Intl.DateTimeFormat).resolvedOptions().timeZone) : a(b.NOT_AVAILABLE)
}
}, {
key: "sessionStorage",
getData: function(a, b) {
var c;
try {
c = !!window.sessionStorage
} catch (oa) {
c = b.ERROR
}
a(c)
}
}, {
key: "localStorage",
getData: function(a, b) {
var c;
try {
c = !!window.localStorage
} catch (oa) {
c = b.ERROR
}
a(c)
}
}, {
key: "indexedDb",
getData: function(a, b) {
var c;
try {
c = !!window.indexedDB
} catch (oa) {
c = b.ERROR
}
a(c)
}
}, {
key: "addBehavior",
getData: function(a) {
a(!(!document.body || !document.body.addBehavior))
}
}, {
key: "openDatabase",
getData: function(a) {
a(!!window.openDatabase)
}
}, {
key: "cpuClass",
getData: function(a, b) {
a(navigator.cpuClass || b.NOT_AVAILABLE)
}
}, {
key: "navigatorPlatform",
getData: function(a, b) {
a(navigator.platform ? navigator.platform : b.NOT_AVAILABLE)
}
}, {
key: "doNotTrack",
getData: function(a, b) {
a(navigator.doNotTrack ? navigator.doNotTrack : navigator.msDoNotTrack ? navigator.msDoNotTrack : window.doNotTrack ? window.doNotTrack : b.NOT_AVAILABLE)
}
}, {
key: "plugins",
getData: function(a, b) {
if ("Microsoft Internet Explorer" === navigator.appName || "Netscape" === navigator.appName && /Trident/.test(navigator.userAgent))
if (b.plugins.excludeIE)
a(b.EXCLUDED);
else {
var c = [];
Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(window, "ActiveXObject") || "ActiveXObject"in window ? c = m("AcroPDF.PDF;Adodb.Stream;AgControl.AgControl;DevalVRXCtrl.DevalVRXCtrl.1;MacromediaFlashPaper.MacromediaFlashPaper;Msxml2.DOMDocument;Msxml2.XMLHTTP;PDF.PdfCtrl;QuickTime.QuickTime;QuickTimeCheckObject.QuickTimeCheck.1;RealPlayer;RealPlayer.RealPlayer(tm) ActiveX Control (32-bit);RealVideo.RealVideo(tm) ActiveX Control (32-bit);Scripting.Dictionary;SWCtl.SWCtl;Shell.UIHelper;ShockwaveFlash.ShockwaveFlash;Skype.Detection;TDCCtl.TDCCtl;WMPlayer.OCX;rmocx.RealPlayer G2 Control;rmocx.RealPlayer G2 Control.1".split(";"), function(a) {
try {
return new window.ActiveXObject(a),
a
} catch (Yb) {
return b.ERROR
}
}) : c.push(b.NOT_AVAILABLE);
navigator.plugins && (c = c.concat(A(b)));
a(c)
}
else
a(A(b))
}
}, {
key: "canvas",
getData: function(a, b) {
if (d()) {
var c = []
, e = document.createElement("canvas");
e.width = 2E3;
e.height = 200;
e.style.display = "inline";
var f = e.getContext("2d");
f.rect(0, 0, 10, 10);
f.rect(2, 2, 6, 6);
c.push("canvas winding:" + (!1 === f.isPointInPath(5, 5, "evenodd") ? "yes" : "no"));
f.textBaseline = "alphabetic";
f.fillStyle = "#f60";
f.fillRect(125, 1, 62, 20);
f.fillStyle = "#069";
f.font = b.dontUseFakeFontInCanvas ? "11pt Arial" : "11pt no-real-font-123";
f.fillText("Cwm fjordbank glyphs vext quiz, \ud83d\ude03", 2, 15);
f.fillStyle = "rgba(102, 204, 0, 0.2)";
f.font = "18pt Arial";
f.fillText("Cwm fjordbank glyphs vext quiz, \ud83d\ude03", 4, 45);
f.globalCompositeOperation = "multiply";
f.fillStyle = "rgb(255,0,255)";
f.beginPath();
f.arc(50, 50, 50, 0, 2 * Math.PI, !0);
f.closePath();
f.fill();
f.fillStyle = "rgb(0,255,255)";
f.beginPath();
f.arc(100, 50, 50, 0, 2 * Math.PI, !0);
f.closePath();
f.fill();
f.fillStyle = "rgb(255,255,0)";
f.beginPath();
f.arc(75, 100, 50, 0, 2 * Math.PI, !0);
f.closePath();
f.fill();
f.fillStyle = "rgb(255,0,255)";
f.arc(75, 75, 75, 0, 2 * Math.PI, !0);
f.arc(75, 75, 25, 0, 2 * Math.PI, !0);
f.fill("evenodd");
e.toDataURL && c.push("canvas fp:" + e.toDataURL());
a(c)
} else
a(b.NOT_AVAILABLE)
}
}, {
key: "webgl",
getData: function(a, c) {
b() ? a(h()) : a(c.NOT_AVAILABLE)
}
}, {
key: "webglVendorAndRenderer",
getData: function(a) {
if (b()) {
var d;
try {
var e = c()
, f = e.getExtension("WEBGL_debug_renderer_info");
d = e.getParameter(f.UNMASKED_VENDOR_WEBGL) + "~" + e.getParameter(f.UNMASKED_RENDERER_WEBGL)
} catch (Yb) {
d = null
}
a(d)
} else
a()
}
}, {
key: "adBlock",
getData: function(a) {
var b = document.createElement("div");
b.innerHTML = "\x26nbsp;";
b.className = "adsbox";
var c = !1;
try {
document.body.appendChild(b),
c = 0 === document.getElementsByClassName("adsbox")[0].offsetHeight,
document.body.removeChild(b)
} catch (oa) {
c = !1
}
a(c)
}
}, {
key: "hasLiedLanguages",
getData: function(a) {
a(g())
}
}, {
key: "hasLiedResolution",
getData: function(a) {
a(window.screen.width < window.screen.availWidth || window.screen.height < window.screen.availHeight)
}
}, {
key: "hasLiedOs",
getData: function(a) {
a(f())
}
}, {
key: "hasLiedBrowser",
getData: function(a) {
a(e())
}
}, {
key: "touchSupport",
getData: function(a) {
var b = 0, c;
"undefined" !== typeof navigator.maxTouchPoints ? b = navigator.maxTouchPoints : "undefined" !== typeof navigator.msMaxTouchPoints && (b = navigator.msMaxTouchPoints);
try {
document.createEvent("TouchEvent"),
c = !0
} catch (oa) {
c = !1
}
a([b, c, "ontouchstart"in window])
}
}, {
key: "fonts",
getData: function(a, b) {
function c() {
var a = document.createElement("span");
a.style.position = "absolute";
a.style.left = "-9999px";
a.style.fontSize = "72px";
a.style.fontStyle = "normal";
a.style.fontWeight = "normal";
a.style.letterSpacing = "normal";
a.style.lineBreak = "auto";
a.style.lineHeight = "normal";
a.style.textTransform = "none";
a.style.textAlign = "left";
a.style.textDecoration = "none";
a.style.textShadow = "none";
a.style.whiteSpace = "normal";
a.style.wordBreak = "normal";
a.style.wordSpacing = "normal";
a.innerHTML = "mmmmmmmmmmlli";
return a
}
var d = ["monospace", "sans-serif", "serif"]
, e = "Andale Mono;Arial;Arial Black;Arial Hebrew;Arial MT;Arial Narrow;Arial Rounded MT Bold;Arial Unicode MS;Bitstream Vera Sans Mono;Book Antiqua;Bookman Old Style;Calibri;Cambria;Cambria Math;Century;Century Gothic;Century Schoolbook;Comic Sans;Comic Sans MS;Consolas;Courier;Courier New;Geneva;Georgia;Helvetica;Helvetica Neue;Impact;Lucida Bright;Lucida Calligraphy;Lucida Console;Lucida Fax;LUCIDA GRANDE;Lucida Handwriting;Lucida Sans;Lucida Sans Typewriter;Lucida Sans Unicode;Microsoft Sans Serif;Monaco;Monotype Corsiva;MS Gothic;MS Outlook;MS PGothic;MS Reference Sans Serif;MS Sans Serif;MS Serif;MYRIAD;MYRIAD PRO;Palatino;Palatino Linotype;Segoe Print;Segoe Script;Segoe UI;Segoe UI Light;Segoe UI Semibold;Segoe UI Symbol;Tahoma;Times;Times New Roman;Times New Roman PS;Trebuchet MS;Verdana;Wingdings;Wingdings 2;Wingdings 3".split(";");
b.fonts.extendedJsFonts && (e = e.concat("Abadi MT Condensed Light;Academy Engraved LET;ADOBE CASLON PRO;Adobe Garamond;ADOBE GARAMOND PRO;Agency FB;Aharoni;Albertus Extra Bold;Albertus Medium;Algerian;Amazone BT;American Typewriter;American Typewriter Condensed;AmerType Md BT;Andalus;Angsana New;AngsanaUPC;Antique Olive;Aparajita;Apple Chancery;Apple Color Emoji;Apple SD Gothic Neo;Arabic Typesetting;ARCHER;ARNO PRO;Arrus BT;Aurora Cn BT;AvantGarde Bk BT;AvantGarde Md BT;AVENIR;Ayuthaya;Bandy;Bangla Sangam MN;Bank Gothic;BankGothic Md BT;Baskerville;Baskerville Old Face;Batang;BatangChe;Bauer Bodoni;Bauhaus 93;Bazooka;Bell MT;Bembo;Benguiat Bk BT;Berlin Sans FB;Berlin Sans FB Demi;Bernard MT Condensed;BernhardFashion BT;BernhardMod BT;Big Caslon;BinnerD;Blackadder ITC;BlairMdITC TT;Bodoni 72;Bodoni 72 Oldstyle;Bodoni 72 Smallcaps;Bodoni MT;Bodoni MT Black;Bodoni MT Condensed;Bodoni MT Poster Compressed;Bookshelf Symbol 7;Boulder;Bradley Hand;Bradley Hand ITC;Bremen Bd BT;Britannic Bold;Broadway;Browallia New;BrowalliaUPC;Brush Script MT;Californian FB;Calisto MT;Calligrapher;Candara;CaslonOpnface BT;Castellar;Centaur;Cezanne;CG Omega;CG Times;Chalkboard;Chalkboard SE;Chalkduster;Charlesworth;Charter Bd BT;Charter BT;Chaucer;ChelthmITC Bk BT;Chiller;Clarendon;Clarendon Condensed;CloisterBlack BT;Cochin;Colonna MT;Constantia;Cooper Black;Copperplate;Copperplate Gothic;Copperplate Gothic Bold;Copperplate Gothic Light;CopperplGoth Bd BT;Corbel;Cordia New;CordiaUPC;Cornerstone;Coronet;Cuckoo;Curlz MT;DaunPenh;Dauphin;David;DB LCD Temp;DELICIOUS;Denmark;DFKai-SB;Didot;DilleniaUPC;DIN;DokChampa;Dotum;DotumChe;Ebrima;Edwardian Script ITC;Elephant;English 111 Vivace BT;Engravers MT;EngraversGothic BT;Eras Bold ITC;Eras Demi ITC;Eras Light ITC;Eras Medium ITC;EucrosiaUPC;Euphemia;Euphemia UCAS;EUROSTILE;Exotc350 Bd BT;FangSong;Felix Titling;Fixedsys;FONTIN;Footlight MT Light;Forte;FrankRuehl;Fransiscan;Freefrm721 Blk BT;FreesiaUPC;Freestyle Script;French Script MT;FrnkGothITC Bk BT;Fruitger;FRUTIGER;Futura;Futura Bk BT;Futura Lt BT;Futura Md BT;Futura ZBlk BT;FuturaBlack BT;Gabriola;Galliard BT;Gautami;Geeza Pro;Geometr231 BT;Geometr231 Hv BT;Geometr231 Lt BT;GeoSlab 703 Lt BT;GeoSlab 703 XBd BT;Gigi;Gill Sans;Gill Sans MT;Gill Sans MT Condensed;Gill Sans MT Ext Condensed Bold;Gill Sans Ultra Bold;Gill Sans Ultra Bold Condensed;Gisha;Gloucester MT Extra Condensed;GOTHAM;GOTHAM BOLD;Goudy Old Style;Goudy Stout;GoudyHandtooled BT;GoudyOLSt BT;Gujarati Sangam MN;Gulim;GulimChe;Gungsuh;GungsuhChe;Gurmukhi MN;Haettenschweiler;Harlow Solid Italic;Harrington;Heather;Heiti SC;Heiti TC;HELV;Herald;High Tower Text;Hiragino Kaku Gothic ProN;Hiragino Mincho ProN;Hoefler Text;Humanst 521 Cn BT;Humanst521 BT;Humanst521 Lt BT;Imprint MT Shadow;Incised901 Bd BT;Incised901 BT;Incised901 Lt BT;INCONSOLATA;Informal Roman;Informal011 BT;INTERSTATE;IrisUPC;Iskoola Pota;JasmineUPC;Jazz LET;Jenson;Jester;Jokerman;Juice ITC;Kabel Bk BT;Kabel Ult BT;Kailasa;KaiTi;Kalinga;Kannada Sangam MN;Kartika;Kaufmann Bd BT;Kaufmann BT;Khmer UI;KodchiangUPC;Kokila;Korinna BT;Kristen ITC;Krungthep;Kunstler Script;Lao UI;Latha;Leelawadee;Letter Gothic;Levenim MT;LilyUPC;Lithograph;Lithograph Light;Long Island;Lydian BT;Magneto;Maiandra GD;Malayalam Sangam MN;Malgun Gothic;Mangal;Marigold;Marion;Marker Felt;Market;Marlett;Matisse ITC;Matura MT Script Capitals;Meiryo;Meiryo UI;Microsoft Himalaya;Microsoft JhengHei;Microsoft New Tai Lue;Microsoft PhagsPa;Microsoft Tai Le;Microsoft Uighur;Microsoft YaHei;Microsoft Yi Baiti;MingLiU;MingLiU_HKSCS;MingLiU_HKSCS-ExtB;MingLiU-ExtB;Minion;Minion Pro;Miriam;Miriam Fixed;Mistral;Modern;Modern No. 20;Mona Lisa Solid ITC TT;Mongolian Baiti;MONO;MoolBoran;Mrs Eaves;MS LineDraw;MS Mincho;MS PMincho;MS Reference Specialty;MS UI Gothic;MT Extra;MUSEO;MV Boli;Nadeem;Narkisim;NEVIS;News Gothic;News GothicMT;NewsGoth BT;Niagara Engraved;Niagara Solid;Noteworthy;NSimSun;Nyala;OCR A Extended;Old Century;Old English Text MT;Onyx;Onyx BT;OPTIMA;Oriya Sangam MN;OSAKA;OzHandicraft BT;Palace Script MT;Papyrus;Parchment;Party LET;Pegasus;Perpetua;Perpetua Titling MT;PetitaBold;Pickwick;Plantagenet Cherokee;Playbill;PMingLiU;PMingLiU-ExtB;Poor Richard;Poster;PosterBodoni BT;PRINCETOWN LET;Pristina;PTBarnum BT;Pythagoras;Raavi;Rage Italic;Ravie;Ribbon131 Bd BT;Rockwell;Rockwell Condensed;Rockwell Extra Bold;Rod;Roman;Sakkal Majalla;Santa Fe LET;Savoye LET;Sceptre;Script;Script MT Bold;SCRIPTINA;Serifa;Serifa BT;Serifa Th BT;ShelleyVolante BT;Sherwood;Shonar Bangla;Showcard Gothic;Shruti;Signboard;SILKSCREEN;SimHei;Simplified Arabic;Simplified Arabic Fixed;SimSun;SimSun-ExtB;Sinhala Sangam MN;Sketch Rockwell;Skia;Small Fonts;Snap ITC;Snell Roundhand;Socket;Souvenir Lt BT;Staccato222 BT;Steamer;Stencil;Storybook;Styllo;Subway;Swis721 BlkEx BT;Swiss911 XCm BT;Sylfaen;Synchro LET;System;Tamil Sangam MN;Technical;Teletype;Telugu Sangam MN;Tempus Sans ITC;Terminal;Thonburi;Traditional Arabic;Trajan;TRAJAN PRO;Tristan;Tubular;Tunga;Tw Cen MT;Tw Cen MT Condensed;Tw Cen MT Condensed Extra Bold;TypoUpright BT;Unicorn;Univers;Univers CE 55 Medium;Univers Condensed;Utsaah;Vagabond;Vani;Vijaya;Viner Hand ITC;VisualUI;Vivaldi;Vladimir Script;Vrinda;Westminster;WHITNEY;Wide Latin;ZapfEllipt BT;ZapfHumnst BT;ZapfHumnst Dm BT;Zapfino;Zurich BlkEx BT;Zurich Ex BT;ZWAdobeF".split(";")));
for (var e = e.concat(b.fonts.userDefinedFonts), e = e.filter(function(a, b) {
return e.indexOf(a) === b
}), f = document.getElementsByTagName("body")[0], g = document.createElement("div"), k = document.createElement("div"), r = {}, h = {}, l = [], n = 0, u = d.length; n < u; n++) {
var y = c();
y.style.fontFamily = d[n];
g.appendChild(y);
l.push(y)
}
f.appendChild(g);
n = 0;
for (u = d.length; n < u; n++)
r[d[n]] = l[n].offsetWidth,
h[d[n]] = l[n].offsetHeight;
l = {};
n = 0;
for (u = e.length; n < u; n++) {
for (var y = [], t = 0, Q = d.length; t < Q; t++) {
var z;
z = e[n];
var A = d[t]
, m = c();
m.style.fontFamily = "'" + z + "'," + A;
z = m;
k.appendChild(z);
y.push(z)
}
l[e[n]] = y
}
f.appendChild(k);
n = [];
u = 0;
for (y = e.length; u < y; u++) {
t = l[e[u]];
Q = !1;
for (z = 0; z < d.length && !(Q = t[z].offsetWidth !== r[d[z]] || t[z].offsetHeight !== h[d[z]]); z++)
;
Q && n.push(e[u])
}
f.removeChild(k);
f.removeChild(g);
a(n)
},
pauseBefore: !0
}, {
key: "fontsFlash",
getData: function(a, b) {
if ("undefined" === typeof window.swfobject)
return a("swf object not loaded");
if (!window.swfobject.hasFlashPlayerVersion("9.0.0"))
return a("flash not installed");
if (!b.fonts.swfPath)
return a("missing options.fonts.swfPath");
window.___fp_swf_loaded = function(b) {
a(b)
}
;
var c = b.fonts.swfContainerId
, d = document.createElement("div");
d.setAttribute("id", (void 0).fonts.swfContainerId);
document.body.appendChild(d);
window.swfobject.embedSWF(b.fonts.swfPath, c, "1", "1", "9.0.0", !1, {
onReady: "___fp_swf_loaded"
}, {
allowScriptAccess: "always",
menu: "false"
}, {})
},
pauseBefore: !0
}, {
key: "audio",
getData: function(a, b) {
var c = b.audio;
if (c.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\/11.+Safari/))
return a(b.EXCLUDED);
var d = window.OfflineAudioContext || window.webkitOfflineAudioContext;
if (null == d)
return a(b.NOT_AVAILABLE);
var e = new d(1,44100,44100)
, f = e.createOscillator();
f.type = "triangle";
f.frequency.setValueAtTime(1E4, e.currentTime);
var g = e.createDynamicsCompressor();
w([["threshold", -50], ["knee", 40], ["ratio", 12], ["reduction", -20], ["attack", 0], ["release", .25]], function(a) {
void 0 !== g[a[0]] && "function" === typeof g[a[0]].setValueAtTime && g[a[0]].setValueAtTime(a[1], e.currentTime)
});
f.connect(g);
g.connect(e.destination);
f.start(0);
e.startRendering();
var k = setTimeout(function() {
console.warn('Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: "' + navigator.userAgent + '".');
e.oncomplete = function() {}
;
e = null;
return a("audioTimeout")
}, c.timeout);
e.oncomplete = function(b) {
var c;
try {
clearTimeout(k),
c = b.renderedBuffer.getChannelData(0).slice(4500, 5E3).reduce(function(a, b) {
return a + Math.abs(b)
}, 0).toString(),
f.disconnect(),
g.disconnect()
} catch (vb) {
a(vb);
return
}
a(c)
}
}
}, {
key: "enumerateDevices",
getData: function(a, b) {
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices)
return a(b.NOT_AVAILABLE);
navigator.mediaDevices.enumerateDevices().then(function(b) {
a(b.map(function(a) {
return "id\x3d" + a.deviceId + ";gid\x3d" + a.groupId + ";" + a.kind + ";" + a.label
}))
})
}
}];
a.get = function(a, b) {
function c(d) {
r += 1;
if (r >= a.components.length)
b(g.data);
else {
var e = a.components[r];
if (a.excludes[e.key])
c(!1);
else if (!d && e.pauseBefore)
--r,
setTimeout(function() {
c(!0)
}, 1);
else
try {
e.getData(function(a) {
g.addPreprocessedComponent(e.key, a);
c(!1)
}, a)
} catch (vb) {
g.addPreprocessedComponent(e.key, String(vb)),
c(!1)
}
}
}
b ? a || (a = {}) : (b = a,
a = {});
var d = a;
if (null != v) {
var e, f;
for (f in v)
e = v[f],
null == e || Object.prototype.hasOwnProperty.call(d, f) || (d[f] = e)
}
a.components = a.extraComponents.concat(t);
var g = {
data: [],
addPreprocessedComponent: function(b, c) {
"function" === typeof a.preprocessor && (c = a.preprocessor(b, c));
g.data.push({
key: b,
value: c
})
}
}
, r = -1;
c(!1)
}
;
a.getPromise = function(b) {
return new Promise(function(c) {
a.get(b, c)
}
)
}
;
a.getV18 = function(b, c) {
null == c && (c = b,
b = {});
return a.get(b, function(a) {
for (var d = [], e = 0; e < a.length; e++) {
var f = a[e];
f.value === (b.NOT_AVAILABLE || "not available") ? d.push({
key: f.key,
value: "unknown"
}) : "plugins" === f.key ? d.push({
key: "plugins",
value: m(f.value, function(a) {
var b = m(a[2], function(a) {
return a.join ? a.join("~") : a
}).join(",");
return [a[0], a[1], b].join("::")
})
}) : -1 !== ["canvas", "webgl"].indexOf(f.key) ? d.push({
key: f.key,
value: f.value.join("~")
}) : -1 !== ["sessionStorage", "localStorage", "indexedDb", "addBehavior", "openDatabase"].indexOf(f.key) ? f.value && d.push({
key: f.key,
value: 1
}) : f.value ? d.push(f.value.join ? {
key: f.key,
value: f.value.join(";")
} : f) : d.push({
key: f.key,
value: f.value
})
}
a = r(m(d, function(a) {
return a.value
}).join("~~~"), 31);
c(a, d)
})
}
;
a.x64hash128 = r;
a.VERSION = "2.1.0";
return a
}
function Zb(a) {
for (var c = [], b = 0; b < 8 * a.length; b += 8)
c[b >> 5] |= (a.charCodeAt(b / 8) & 255) << b % 32;
a = 8 * a.length;
c[a >> 5] |= 128 << a % 32;
c[(a + 64 >>> 9 << 4) + 14] = a;
a = 1732584193;
for (var b = -271733879, d = -1732584194, e = 271733878, f = 0; f < c.length; f += 16) {
var g = a
, h = b
, A = d
, m = e;
a = C(a, b, d, e, c[f + 0], 7, -680876936);
e = C(e, a, b, d, c[f + 1], 12, -389564586);
d = C(d, e, a, b, c[f + 2], 17, 606105819);
b = C(b, d, e, a, c[f + 3], 22, -1044525330);
a = C(a, b, d, e, c[f + 4], 7, -176418897);
e = C(e, a, b, d, c[f + 5], 12, 1200080426);
d = C(d, e, a, b, c[f + 6], 17, -1473231341);
b = C(b, d, e, a, c[f + 7], 22, -45705983);
a = C(a, b, d, e, c[f + 8], 7, 1770035416);
e = C(e, a, b, d, c[f + 9], 12, -1958414417);
d = C(d, e, a, b, c[f + 10], 17, -42063);
b = C(b, d, e, a, c[f + 11], 22, -1990404162);
a = C(a, b, d, e, c[f + 12], 7, 1804603682);
e = C(e, a, b, d, c[f + 13], 12, -40341101);
d = C(d, e, a, b, c[f + 14], 17, -1502002290);
b = C(b, d, e, a, c[f + 15], 22, 1236535329);
a = H(a, b, d, e, c[f + 1], 5, -165796510);
e = H(e, a, b, d, c[f + 6], 9, -1069501632);
d = H(d, e, a, b, c[f + 11], 14, 643717713);
b = H(b, d, e, a, c[f + 0], 20, -373897302);
a = H(a, b, d, e, c[f + 5], 5, -701558691);
e = H(e, a, b, d, c[f + 10], 9, 38016083);
d = H(d, e, a, b, c[f + 15], 14, -660478335);
b = H(b, d, e, a, c[f + 4], 20, -405537848);
a = H(a, b, d, e, c[f + 9], 5, 568446438);
e = H(e, a, b, d, c[f + 14], 9, -1019803690);
d = H(d, e, a, b, c[f + 3], 14, -187363961);
b = H(b, d, e, a, c[f + 8], 20, 1163531501);
a = H(a, b, d, e, c[f + 13], 5, -1444681467);
e = H(e, a, b, d, c[f + 2], 9, -51403784);
d = H(d, e, a, b, c[f + 7], 14, 1735328473);
b = H(b, d, e, a, c[f + 12], 20, -1926607734);
a = I(a, b, d, e, c[f + 5], 4, -378558);
e = I(e, a, b, d, c[f + 8], 11, -2022574463);
d = I(d, e, a, b, c[f + 11], 16, 1839030562);
b = I(b, d, e, a, c[f + 14], 23, -35309556);
a = I(a, b, d, e, c[f + 1], 4, -1530992060);
e = I(e, a, b, d, c[f + 4], 11, 1272893353);
d = I(d, e, a, b, c[f + 7], 16, -155497632);
b = I(b, d, e, a, c[f + 10], 23, -1094730640);
a = I(a, b, d, e, c[f + 13], 4, 681279174);
e = I(e, a, b, d, c[f + 0], 11, -358537222);
d = I(d, e, a, b, c[f + 3], 16, -722521979);
b = I(b, d, e, a, c[f + 6], 23, 76029189);
a = I(a, b, d, e, c[f + 9], 4, -640364487);
e = I(e, a, b, d, c[f + 12], 11, -421815835);
d = I(d, e, a, b, c[f + 15], 16, 530742520);
b = I(b, d, e, a, c[f + 2], 23, -995338651);
a = J(a, b, d, e, c[f + 0], 6, -198630844);
e = J(e, a, b, d, c[f + 7], 10, 1126891415);
d = J(d, e, a, b, c[f + 14], 15, -1416354905);
b = J(b, d, e, a, c[f + 5], 21, -57434055);
a = J(a, b, d, e, c[f + 12], 6, 1700485571);
e = J(e, a, b, d, c[f + 3], 10, -1894986606);
d = J(d, e, a, b, c[f + 10], 15, -1051523);
b = J(b, d, e, a, c[f + 1], 21, -2054922799);
a = J(a, b, d, e, c[f + 8], 6, 1873313359);
e = J(e, a, b, d, c[f + 15], 10, -30611744);
d = J(d, e, a, b, c[f + 6], 15, -1560198380);
b = J(b, d, e, a, c[f + 13], 21, 1309151649);
a = J(a, b, d, e, c[f + 4], 6, -145523070);
e = J(e, a, b, d, c[f + 11], 10, -1120210379);
d = J(d, e, a, b, c[f + 2], 15, 718787259);
b = J(b, d, e, a, c[f + 9], 21, -343485551);
a = B(a, g);
b = B(b, h);
d = B(d, A);
e = B(e, m)
}
c = [a, b, d, e];
a = "";
for (b = 0; b < 4 * c.length; b++)
a += "0123456789abcdef".charAt(c[b >> 2] >> b % 4 * 8 + 4 & 15) + "0123456789abcdef".charAt(c[b >> 2] >> b % 4 * 8 & 15);
return a
}
function C(a, c, b, d, e, f, g) {
return B(Ta(B(B(a, c & b | ~c & d), B(e, g)), f), c)
}
function H(a, c, b, d, e, f, g) {
return B(Ta(B(B(a, c & d | b & ~d), B(e, g)), f), c)
}
function I(a, c, b, d, e, f, g) {
return B(Ta(B(B(a, c ^ b ^ d), B(e, g)), f), c)
}
function J(a, c, b, d, e, f, g) {
return B(Ta(B(B(a, b ^ (c | ~d)), B(e, g)), f), c)
}
function B(a, c) {
var b = (a & 65535) + (c & 65535);
return (a >> 16) + (c >> 16) + (b >> 16) << 16 | b & 65535
}
function Ta(a, c) {
return a << c | a >>> 32 - c
}
function Ua(a) {
try {
var c, b, d, e = document.cookie.split(";");
for (c = 0; c < e.length; c++)
if (b = e[c].substr(0, e[c].indexOf("\x3d")),
d = e[c].substr(e[c].indexOf("\x3d") + 1),
b = b.replace(/^\s+|\s+$/g, ""),
a = a.replace(/^\s+|\s+$/g, ""),
b == a)
return unescape(d)
} catch (f) {}
}
function Va(a, c, b, d, e, f) {
var g = new Date;
g.setTime(g.getTime());
-1 != b ? (b *= 864E5,
g = new Date(g.getTime() + b),
cookieString = a + "\x3d" + escape(c) + (b ? ";expires\x3d" + g.toGMTString() : "") + (d ? ";path\x3d" + d : "") + (e ? ";domain\x3d" + e : "") + (f ? ";secure" : "")) : (g = -1,
cookieString = a + "\x3d" + escape(c) + (b ? ";expires\x3d" + g : "") + (d ? ";path\x3d" + d : "") + (e ? ";domain\x3d" + e : "") + (f ? ";secure" : ""));
document.cookie = cookieString
}
function Bc(a) {
a = a.replace(/\s/g, "");
if (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(a)) {
a = a.split(".");
if (0 == parseInt(parseFloat(a[0])) || 0 == parseInt(parseFloat(a[3])))
return !1;
for (var c = 0; c < a.length; c++)
if (255 < parseInt(parseFloat(a[c])))
return !1;
return !0
}
return !1
}
function mb() {
return void 0 !== window.SDKElement && "" !== window.SDKElement ? !0 : !1
}
function Va(a, c, b, d) {
try {
var e = new Date;
e.setTime(e.getTime() + 864E5 * Number(b));
document.cookie = 1 == d ? a + "\x3d" + c + "; path\x3d/;expires \x3d " + e.toGMTString() + ";domain\x3d" + Ra(window.location.host.split(":")[0]) + ";secure\x3d" + d : a + "\x3d" + c + "; path\x3d/;expires \x3d " + e.toGMTString() + ";domain\x3d" + Ra(window.location.host.split(":")[0])
} catch (f) {}
}
function $b() {
return ("ontouchstart"in window || 0 < navigator.maxTouchPoints || 0 < navigator.msMaxTouchPoints) && navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) ? "WAP" : "WEB"
}
function Ka() {
this.dfpCache = new evercookie
}
"undefined" !== typeof window && "function" === typeof define && define.amd ? define(Sa) : "undefined" !== typeof module && module.exports ? module.exports = Sa() : this.exports ? this.exports = Sa() : this.Fingerprint2 = Sa();
var ac = {
now: function() {
return (new Date).getTime()
},
rand: function() {
return Math.random().toString().substr(2)
},
removeElem: function(a) {
var c = a.parentNode;
if (c)
try {
c.removeChild(a)
} catch (b) {}
},
parseData: function(a) {
var c = "";
if ("string" === typeof a)
c = a;
else if ("object" === typeof a)
for (var b in a)
c += "\x26" + b + "\x3d" + encodeURIComponent(a[b]);
c += "\x26_time\x3d" + this.now();
return c = c.substr(1)
},
getJSON: function(a, c, b) {
c = document.createElement("script");
c.type = "text/javascript";
c.src = a;
c.id = "id_callbackFunction";
window.callbackFunction = function(a) {
window.callbackFunction = void 0;
var c = document.getElementById("id_callbackFunction");
c && ac.removeElem(c);
b(a)
}
;
var d = document.getElementsByTagName("head");
!d || !d[0] || document.getElementById("id_callbackFunction") && -1 != a.indexOf("getFinger") || d[0].appendChild(c)
}
};
"object" != typeof JSON && (JSON = {});
(function() {
function a(a) {
return 10 > a ? "0" + a : a
}
function c() {
return this.valueOf()
}
function b(a) {
return u.lastIndex = 0,
u.test(a) ? '"' + a.replace(u, function(a) {
var b = g[a];
return "string" == typeof b ? b : "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
}) + '"' : '"' + a + '"'
}
function d(a, c) {
var g, r, n, u, k, l = e, q = c[a];
switch (q && "object" == typeof q && "function" == typeof q.toJSON && (q = q.toJSON(a)),
"function" == typeof h && (q = h.call(c, a, q)),
typeof q) {
case "string":
return b(q);
case "number":
return isFinite(q) ? String(q) : "null";
case "boolean":
case "null":
return String(q);
case "object":
if (!q)
return "null";
if (e += f,
k = [],
"[object Array]" === Object.prototype.toString.apply(q)) {
u = q.length;
for (g = 0; u > g; g += 1)
k[g] = d(g, q) || "null";
return n = 0 === k.length ? "[]" : e ? "[\n" + e + k.join(",\n" + e) + "\n" + l + "]" : "[" + k.join(",") + "]",
e = l,
n
}
if (h && "object" == typeof h)
for (u = h.length,
g = 0; u > g; g += 1)
"string" == typeof h[g] && (r = h[g],
n = d(r, q),
n && k.push(b(r) + (e ? ": " : ":") + n));
else
for (r in q)
Object.prototype.hasOwnProperty.call(q, r) && (n = d(r, q),
n && k.push(b(r) + (e ? ": " : ":") + n));
return n = 0 === k.length ? "{}" : e ? "{\n" + e + k.join(",\n" + e) + "\n" + l + "}" : "{" + k.join(",") + "}",
e = l,
n
}
}
var e, f, g, h, m = /^[\],:{}\s]*$/, p = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, w = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, r = /(?:^|:|,)(?:\s*\[)+/g, u = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, n = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
"function" != typeof Date.prototype.toJSON && (Date.prototype.toJSON = function() {
return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + a(this.getUTCMonth() + 1) + "-" + a(this.getUTCDate()) + "T" + a(this.getUTCHours()) + ":" + a(this.getUTCMinutes()) + ":" + a(this.getUTCSeconds()) + "Z" : null
}
,
Boolean.prototype.toJSON = c,
Number.prototype.toJSON = c,
String.prototype.toJSON = c);
"function" != typeof JSON.stringify && (g = {
"\b": "\\b",
" ": "\\t",
"\n": "\\n",
"\f": "\\f",
"\r": "\\r",
'"': '\\"',
"\\": "\\\\"
},
JSON.stringify = function(a, b, c) {
var g;
if (e = "",
f = "",
"number" == typeof c)
for (g = 0; c > g; g += 1)
f += " ";
else
"string" == typeof c && (f = c);
if (h = b,
b && "function" != typeof b && ("object" != typeof b || "number" != typeof b.length))
throw Error("JSON.stringify");
return d("", {
"": a
})
}
);
"function" != typeof JSON.parse && (JSON.parse = function(a, b) {
function c(a, d) {
var e, f, g = a[d];
if (g && "object" == typeof g)
for (e in g)
Object.prototype.hasOwnProperty.call(g, e) && (f = c(g, e),
void 0 !== f ? g[e] = f : delete g[e]);
return b.call(a, d, g)
}
var d;
if (a = String(a),
n.lastIndex = 0,
n.test(a) && (a = a.replace(n, function(a) {
return "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4)
})),
m.test(a.replace(p, "@").replace(w, "]").replace(r, "")))
return d = eval("(" + a + ")"),
"function" == typeof b ? c({
"": d
}, "") : d;
throw new SyntaxError("JSON.parse");
}
)
}
)();
Array.prototype.indexOf || (Array.prototype.indexOf = function(a, c) {
var b;
if (null == this)
throw new TypeError("'this' is null or undefined");
var d = Object(this)
, e = d.length >>> 0;
if (0 === e)
return -1;
b = +c || 0;
Infinity === Math.abs(b) && (b = 0);
if (b >= e)
return -1;
for (b = Math.max(0 <= b ? b : e - Math.abs(b), 0); b < e; ) {
if (b in d && d[b] === a)
return b;
b++
}
return -1
}
);
var Wa, S = window, v = document, ea = navigator, bc = !1, Qa = [function() {
if (bc) {
var a = v.getElementsByTagName("body")[0]
, c = v.createElement("object");
c.setAttribute("type", "application/x-shockwave-flash");
var b = a.appendChild(c);
if (b) {
var d = 0;
(function f() {
if ("undefined" != typeof b.GetVariable) {
var g = b.GetVariable("$version");
g && (g = g.split(" ")[1].split(","),
p.pv = [parseInt(g[0], 10), parseInt(g[1], 10), parseInt(g[2], 10)])
} else if (10 > d) {
d++;
setTimeout(f, 10);
return
}
a.removeChild(c);
b = null;
ub()
}
)()
} else
ub()
} else
ub()
}
], da = [], Na = [], ma = [], wa, Pa, rb, Vb, ha = !1, Oa = !1, aa, nb, Sb = !0, p, Dc = "undefined" != typeof v.getElementById && "undefined" != typeof v.getElementsByTagName && "undefined" != typeof v.createElement, Xa = ea.userAgent.toLowerCase(), Ya = ea.platform.toLowerCase(), Ec = Ya ? /win/.test(Ya) : /win/.test(Xa), Fc = Ya ? /mac/.test(Ya) : /mac/.test(Xa), Gc = /webkit/.test(Xa) ? parseFloat(Xa.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : !1, wb = !+"\v1", xa = [0, 0, 0], P = null;
if ("undefined" != typeof ea.plugins && "object" == typeof ea.plugins["Shockwave Flash"])
!(P = ea.plugins["Shockwave Flash"].description) || "undefined" != typeof ea.mimeTypes && ea.mimeTypes["application/x-shockwave-flash"] && !ea.mimeTypes["application/x-shockwave-flash"].enabledPlugin || (bc = !0,
wb = !1,
P = P.replace(/^.*\s+(\S+\s+\S+$)/, "$1"),
xa[0] = parseInt(P.replace(/^(.*)\..*$/, "$1"), 10),
xa[1] = parseInt(P.replace(/^.*\.(.*)\s.*$/, "$1"), 10),
xa[2] = /[a-zA-Z]/.test(P) ? parseInt(P.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0);
else if ("undefined" != typeof S.ActiveXObject)
try {
if (P = (new ActiveXObject("ShockwaveFlash.ShockwaveFlash")).GetVariable("$version"))
wb = !0,
P = P.split(" ")[1].split(","),
xa = [parseInt(P[0], 10), parseInt(P[1], 10), parseInt(P[2], 10)]
} catch (a) {}
p = {
w3: Dc,
pv: xa,
wk: Gc,
ie: wb,
win: Ec,
mac: Fc
};
p.w3 && (("undefined" != typeof v.readyState && "complete" == v.readyState || "undefined" == typeof v.readyState && (v.getElementsByTagName("body")[0] || v.body)) && na(),
ha || ("undefined" != typeof v.addEventListener && v.addEventListener("DOMContentLoaded", na, !1),
p.ie && p.win && (v.attachEvent("onreadystatechange", function c() {
"complete" == v.readyState && (v.detachEvent("onreadystatechange", c),
na())
}),
S == top && function b() {
if (!ha) {
try {
v.documentElement.doScroll("left")
} catch (d) {
setTimeout(b, 0);
return
}
na()
}
}()),
p.wk && function c() {
ha || (/loaded|complete/.test(v.readyState) ? na() : setTimeout(c, 0))
}(),
Wb(na)));
p.ie && p.win && window.attachEvent("onunload", function() {
for (var a = ma.length, c = 0; c < a; c++)
ma[c][0].detachEvent(ma[c][1], ma[c][2]);
a = Na.length;
for (c = 0; c < a; c++)
Ub(Na[c]);
for (var b in p)
p[b] = null;
p = null;
for (var d in Wa)
Wa[d] = null;
Wa = null
});
Wa = {
registerObject: function(a, c, b, d) {
if (p.w3 && a && c) {
var e = {};
e.id = a;
e.swfVersion = c;
e.expressInstall = b;
e.callbackFn = d;
da[da.length] = e;
ga(a, !1)
} else
d && d({
success: !1,
id: a
})
},
getObjectById: function(a) {
if (p.w3)
return tb(a)
},
embedSWF: function(a, c, b, d, e, f, g, h, m, pa) {
var A = {
success: !1,
id: c
};
p.w3 && !(p.wk && 312 > p.wk) && a && c && b && d && e ? (ga(c, !1),
Xb(function() {
b += "";
d += "";
var r = {};
if (m && "object" === typeof m)
for (var u in m)
r[u] = m[u];
r.data = a;
r.width = b;
r.height = d;
u = {};
if (h && "object" === typeof h)
for (var n in h)
u[n] = h[n];
if (g && "object" === typeof g)
for (var y in g)
u.flashvars = "undefined" != typeof u.flashvars ? u.flashvars + ("\x26" + y + "\x3d" + g[y]) : y + "\x3d" + g[y];
if (Ma(e))
n = ob(r, u, c),
r.id == c && ga(c, !0),
A.success = !0,
A.ref = n;
else {
if (f && sb()) {
r.data = f;
qb(r, u, c, pa);
return
}
ga(c, !0)
}
pa && pa(A)
})) : pa && pa(A)
},
switchOffAutoHideShow: function() {
Sb = !1
},
ua: p,
getFlashPlayerVersion: function() {
return {
major: p.pv[0],
minor: p.pv[1],
release: p.pv[2]
}
},
hasFlashPlayerVersion: Ma,
createSWF: function(a, c, b) {
if (p.w3)
return ob(a, c, b)
},
showExpressInstall: function(a, c, b, d) {
p.w3 && sb() && qb(a, c, b, d)
},
removeSWF: function(a) {
p.w3 && Ub(a)
},
createCSS: function(a, c, b, d) {
p.w3 && Tb(a, c, b, d)
},
addDomLoadEvent: Xb,
addLoadEvent: Wb,
getQueryParamValue: function(a) {
var c = v.location.search || v.location.hash;
if (c) {
/\?/.test(c) && (c = c.split("?")[1]);
if (null == a)
return Rb(c);
for (var c = c.split("\x26"), b = 0; b < c.length; b++)
if (c[b].substring(0, c[b].indexOf("\x3d")) == a)
return Rb(c[b].substring(c[b].indexOf("\x3d") + 1))
}
return ""
},
expressInstallCallback: function() {
if (Oa) {
var a = W("SWFObjectExprInst");
a && wa && (a.parentNode.replaceChild(wa, a),
Pa && (ga(Pa, !0),
p.ie && p.win && (wa.style.display = "block")),
rb && rb(Vb));
Oa = !1
}
}
};
try {
var x = window
, K = x.document
, xb = x.globalStorage
, Hc = x.swfobject;
try {
var yb = x.localStorage
} catch (a) {}
try {
var zb = x.sessionStorage
} catch (a) {}
var ya, Za, cc = {
history: !1,
java: !1,
tests: 2,
silverlight: !1,
domain: Ra(x.location.host.split(":")[0]),
baseurl: "",
asseturi: "/assets",
authPath: !1
};
x._evercookie_flash_var = function(a) {
ya = a;
(a = K.getElementById("myswf")) && a.parentNode && a.parentNode.removeChild(a)
}
;
x.evercookie = x.Evercookie = function(a) {
a = a || {};
var c = {}, b;
for (b in cc) {
var d = a[b];
c[b] = "undefined" !== typeof d ? d : cc[b]
}
"function" === typeof c.domain && (c.domain = c.domain(x));
var e = c.tests
, f = c.domain
, g = this;
this._ec = {};
this.get = function(a, b, c) {
g._evercookie(a, b, void 0, void 0, c)
}
;
this.set = function(a, b) {
g._evercookie(a, function() {}, b)
}
;
this._evercookie = function(a, b, c, d, f) {
void 0 === g._evercookie && (g = this);
void 0 === d && (d = 0);
0 === d && (g.evercookie_database_storage(a, c),
g.evercookie_indexdb_storage(a, c),
g._ec.userData = g.evercookie_userdata(a, c),
g._ec.localData = g.evercookie_local_storage(a, c),
g._ec.globalData = g.evercookie_global_storage(a, c),
g._ec.sessionData = g.evercookie_session_storage(a, c));
if (void 0 !== c)
("undefined" === typeof ya || "undefined" === typeof Za) && d++ < e && setTimeout(function() {
g._evercookie(a, b, c, d, f)
}, 300);
else if ((x.openDatabase && "undefined" === typeof g._ec.dbData || ("indexedDB"in x || (x.indexedDB = x.indexedDB || x.mozIndexedDB || x.webkitIndexedDB || x.msIndexedDB)) && ("undefined" === typeof g._ec.idbData || "" === g._ec.idbData) || "undefined" === typeof ya || "undefined" === typeof g._ec.etagData || "undefined" === typeof g._ec.cacheData || "undefined" === typeof g._ec.javaData || K.createElement("canvas").getContext && ("undefined" === typeof g._ec.pngData || "" === g._ec.pngData) || "undefined" === typeof Za) && d++ < e)
setTimeout(function() {
g._evercookie(a, b, c, d, f)
}, 20);
else {
g._ec.lsoData = g.getFromStr(a, ya);
ya = void 0;
g._ec.slData = g.getFromStr(a, Za);
Za = void 0;
var n = g._ec, r = [], h = 0, u, k;
g._ec = {};
for (k in n)
n[k] && "null" !== n[k] && "undefined" !== n[k] && (r[n[k]] = void 0 === r[n[k]] ? 1 : r[n[k]] + 1);
for (k in r)
r[k] > h && (h = r[k],
u = k);
void 0 === u || void 0 !== f && 1 === f || g.set(a, u);
"function" === typeof b && b(u, n)
}
}
;
this.evercookie_userdata = function(a, b) {
try {
var c = this.createElem("div", "userdata_el", 1);
if (c.addBehavior)
if (c.style.behavior = "url(#default#userData)",
void 0 !== b)
c.setAttribute(a, b),
c.save(a);
else
return c.load(a),
c.getAttribute(a)
} catch (y) {}
}
;
this.evercookie_local_storage = function(a, b) {
try {
if (yb)
if (void 0 !== b)
yb.setItem(a, b);
else
return yb.getItem(a)
} catch (n) {}
}
;
this.evercookie_database_storage = function(a, b) {
try {
if (x.openDatabase) {
var c = x.openDatabase("sqlite_evercookie", "", "evercookie", 1048576);
void 0 !== b ? c.transaction(function(c) {
c.executeSql("CREATE TABLE IF NOT EXISTS cache(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, value TEXT NOT NULL, UNIQUE (name))", [], function() {}, function() {});
c.executeSql("INSERT OR REPLACE INTO cache(name, value) VALUES(?, ?)", [a, b], function() {}, function() {})
}) : c.transaction(function(b) {
b.executeSql("SELECT value FROM cache WHERE name\x3d?", [a], function(a, b) {
g._ec.dbData = 1 <= b.rows.length ? b.rows.item(0).value : ""
}, function() {})
})
}
} catch (y) {}
}
;
this.evercookie_indexdb_storage = function(a, b) {
try {
if ("indexedDB"in x || (indexedDB = x.indexedDB || x.mozIndexedDB || x.webkitIndexedDB || x.msIndexedDB,
IDBTransaction = x.IDBTransaction || x.webkitIDBTransaction || x.msIDBTransaction,
IDBKeyRange = x.IDBKeyRange || x.webkitIDBKeyRange || x.msIDBKeyRange),
indexedDB) {
var c = indexedDB.open("idb_evercookie", 1);
c.onerror = function() {}
;
c.onupgradeneeded = function(a) {
a.target.result.createObjectStore("evercookie", {
keyPath: "name",
unique: !1
})
}
;
c.onsuccess = void 0 !== b ? function(c) {
c = c.target.result;
c.objectStoreNames.contains("evercookie") && c.transaction(["evercookie"], "readwrite").objectStore("evercookie").put({
name: a,
value: b
});
c.close()
}
: function(b) {
b = b.target.result;
if (b.objectStoreNames.contains("evercookie")) {
var c = b.transaction(["evercookie"]).objectStore("evercookie").get(a);
c.onsuccess = function() {
g._ec.idbData = void 0 === c.result ? void 0 : c.result.value
}
} else
g._ec.idbData = void 0;
b.close()
}
}
} catch (y) {}
}
;
this.evercookie_session_storage = function(a, b) {
try {
if (zb)
if (void 0 !== b)
zb.setItem(a, b);
else
return zb.getItem(a)
} catch (n) {}
}
;
this.evercookie_global_storage = function(a, b) {
if (xb) {
var c = this.getHost();
try {
if (void 0 !== b)
xb[c][a] = b;
else
return xb[c][a]
} catch (y) {}
}
}
;
this.encode = function(a) {
var b = "", c, d, e, f, g, h, r = 0;
for (a = this._utf8_encode(a); r < a.length; )
c = a.charCodeAt(r++),
d = a.charCodeAt(r++),
e = a.charCodeAt(r++),
f = c >> 2,
c = (c & 3) << 4 | d >> 4,
g = (d & 15) << 2 | e >> 6,
h = e & 63,
isNaN(d) ? g = h = 64 : isNaN(e) && (h = 64),
b = b + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(f) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(c) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(g) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(h);
return b
}
;
this.decode = function(a) {
var b = "", c, d, e, f, g, h = 0;
for (a = a.replace(/[^A-Za-z0-9\+\/\=]/g, ""); h < a.length; )
c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".indexOf(a.charAt(h++)),
d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".indexOf(a.charAt(h++)),
f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".indexOf(a.charAt(h++)),
g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".indexOf(a.charAt(h++)),
c = c << 2 | d >> 4,
d = (d & 15) << 4 | f >> 2,
e = (f & 3) << 6 | g,
b += String.fromCharCode(c),
64 !== f && (b += String.fromCharCode(d)),
64 !== g && (b += String.fromCharCode(e));
return b = this._utf8_decode(b)
}
;
this._utf8_encode = function(a) {
a = a.replace(/\r\n/g, "\n");
for (var b = "", c = 0, d = a.length, e; c < d; c++)
e = a.charCodeAt(c),
128 > e ? b += String.fromCharCode(e) : (127 < e && 2048 > e ? b += String.fromCharCode(e >> 6 | 192) : (b += String.fromCharCode(e >> 12 | 224),
b += String.fromCharCode(e >> 6 & 63 | 128)),
b += String.fromCharCode(e & 63 | 128));
return b
}
;
this._utf8_decode = function(a) {
for (var b = "", c = 0, d = a.length, e, f, g; c < d; )
e = a.charCodeAt(c),
128 > e ? (b += String.fromCharCode(e),
c += 1) : 191 < e && 224 > e ? (f = a.charCodeAt(c + 1),
b += String.fromCharCode((e & 31) << 6 | f & 63),
c += 2) : (f = a.charCodeAt(c + 1),
g = a.charCodeAt(c + 2),
b += String.fromCharCode((e & 15) << 12 | (f & 63) << 6 | g & 63),
c += 3);
return b
}
;
this.createElem = function(a, b, c) {
a = void 0 !== b && K.getElementById(b) ? K.getElementById(b) : K.createElement(a);
a.style.visibility = "hidden";
a.style.position = "absolute";
b && a.setAttribute("id", b);
c && K.body.appendChild(a);
return a
}
;
var h = this.waitForSwf = function(a) {
void 0 === a ? a = 0 : a++;
a < e && "undefined" === typeof Hc && setTimeout(function() {
h(a)
}, 300)
}
;
this.evercookie_cookie = function(a, b) {
if (void 0 !== b)
K.cookie = a + "\x3d" + b + "; expires\x3dTue, 31 Dec 2030 00:00:00 UTC; path\x3d/; domain\x3d" + f;
else
return this.getFromStr(a, K.cookie)
}
;
this.getFromStr = function(a, b) {
if ("string" === typeof b) {
var c = a + "\x3d", d = b.split(/[;&]/), e, f;
for (e = 0; e < d.length; e++) {
for (f = d[e]; " " === f.charAt(0); )
f = f.substring(1, f.length);
if (0 === f.indexOf(c))
return f.substring(c.length, f.length)
}
}
}
;
this.getHost = function() {
return Ra(x.location.host.split(":")[0])
}
;
this.toHex = function(a) {
for (var b = "", c = a.length, d = 0, e; d < c; ) {
for (e = a.charCodeAt(d++).toString(16); 2 > e.length; )
e = "0" + e;
b += e
}
return b
}
;
this.fromHex = function(a) {
for (var b = "", c = a.length, d; 0 <= c; )
d = c - 2,
b = String.fromCharCode("0x" + a.substring(d, c)) + b,
c = d;
return b
}
;
var m = this.createElem("a", "_ec_rgb_link"), p, w;
try {
p = 1,
w = K.createElement("style"),
w.styleSheet ? w.styleSheet.innerHTML = "#_ec_rgb_link:visited{display:none;color:#FF0000}" : w.innerHTML ? w.innerHTML = "#_ec_rgb_link:visited{display:none;color:#FF0000}" : w.appendChild(K.createTextNode("#_ec_rgb_link:visited{display:none;color:#FF0000}"))
} catch (r) {
p = 0
}
this._getRGB = function(a, b) {
if (b && 0 === p)
return -1;
m.href = a;
m.innerHTML = a;
K.body.appendChild(w);
K.body.appendChild(m);
var c;
if (K.defaultView) {
if (null == K.defaultView.getComputedStyle(m, null))
return -1;
c = K.defaultView.getComputedStyle(m, null).getPropertyValue("color")
} else
c = m.currentStyle.color;
return c
}
}
} catch (a) {}
var Z = "object" === typeof window ? window : this
, V = {
extend: function(a, c) {
var b = {}, d;
for (d in a)
b[d] = c[d] && 0 === c[d].length % 2 ? c[d].concat(a[d]) : a[d];
return b
},
has: function(a, c) {
return "string" === typeof a ? -1 !== c.toLowerCase().indexOf(a.toLowerCase()) : !1
},
lowerize: function(a) {
return a.toLowerCase()
},
major: function(a) {
return "string" === typeof a ? a.replace(/[^\d\.]/g, "").split(".")[0] : void 0
},
trim: function(a) {
return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
}
}
, R = {
rgx: function(a, c) {
for (var b = 0, d, e, f, g, h, m; b < c.length && !h; ) {
var p = c[b]
, w = c[b + 1];
for (d = e = 0; d < p.length && !h; )
if (h = p[d++].exec(a))
for (f = 0; f < w.length; f++)
m = h[++e],
g = w[f],
"object" === typeof g && 0 < g.length ? 2 == g.length ? this[g[0]] = "function" == typeof g[1] ? g[1].call(this, m) : g[1] : 3 == g.length ? this[g[0]] = "function" !== typeof g[1] || g[1].exec && g[1].test ? m ? m.replace(g[1], g[2]) : void 0 : m ? g[1].call(this, m, g[2]) : void 0 : 4 == g.length && (this[g[0]] = m ? g[3].call(this, m.replace(g[1], g[2])) : void 0) : this[g] = m ? m : void 0;
b += 2
}
},
str: function(a, c) {
for (var b in c)
if ("object" === typeof c[b] && 0 < c[b].length)
for (var d = 0; d < c[b].length; d++) {
if (V.has(c[b][d], a))
return "?" === b ? void 0 : b
}
else if (V.has(c[b], a))
return "?" === b ? void 0 : b;
return a
}
}
, qa = {
browser: {
oldsafari: {
version: {
"1.0": "/8",
"1.2": "/1",
"1.3": "/3",
"2.0": "/412",
"2.0.2": "/416",
"2.0.3": "/417",
"2.0.4": "/419",
"?": "/"
}
}
},
device: {
amazon: {
model: {
"Fire Phone": ["SD", "KF"]
}
},
sprint: {
model: {
"Evo Shift 4G": "7373KT"
},
vendor: {
HTC: "APA",
Sprint: "Sprint"
}
}
},
os: {
windows: {
version: {
ME: "4.90",
"NT 3.11": "NT3.51",
"NT 4.0": "NT4.0",
2E3: "NT 5.0",
XP: ["NT 5.1", "NT 5.2"],
Vista: "NT 6.0",
7: "NT 6.1",
8: "NT 6.2",
"8.1": "NT 6.3",
10: ["NT 6.4", "NT 10.0"],
RT: "ARM"
}
}
}
}
, Qb = {
browser: [[/(opera\smini)\/([\w\.-]+)/i, /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, /(opera).+version\/([\w\.]+)/i, /(opera)[\/\s]+([\w\.]+)/i], ["name", "version"], [/(opios)[\/\s]+([\w\.]+)/i], [["name", "Opera Mini"], "version"], [/\s(opr)\/([\w\.]+)/i], [["name", "Opera"], "version"], [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, /(?:ms|\()(ie)\s([\w\.]+)/i, /(rekonq)\/([\w\.]*)/i, /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon)\/([\w\.-]+)/i], ["name", "version"], [/(konqueror)\/([\w\.]+)/i], [["name", "Konqueror"], "version"], [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i], [["name", "IE"], "version"], [/(edge|edgios|edga|edg)\/((\d+)?[\w\.]+)/i], [["name", "Edge"], "version"], [/(yabrowser)\/([\w\.]+)/i], [["name", "Yandex"], "version"], [/(puffin)\/([\w\.]+)/i], [["name", "Puffin"], "version"], [/(focus)\/([\w\.]+)/i], [["name", "Firefox Focus"], "version"], [/(opt)\/([\w\.]+)/i], [["name", "Opera Touch"], "version"], [/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i], [["name", "UCBrowser"], "version"], [/(comodo_dragon)\/([\w\.]+)/i], [["name", /_/g, " "], "version"], [/(windowswechat qbcore)\/([\w\.]+)/i], [["name", "WeChat(Win) Desktop"], "version"], [/(micromessenger)\/([\w\.]+)/i], [["name", "WeChat"], "version"], [/(brave)\/([\w\.]+)/i], [["name", "Brave"], "version"], [/(qqbrowserlite)\/([\w\.]+)/i], ["name", "version"], [/(QQ)\/([\d\.]+)/i], ["name", "version"], [/m?(qqbrowser)[\/\s]?([\w\.]+)/i], ["name", "version"], [/(BIDUBrowser)[\/\s]?([\w\.]+)/i], ["name", "version"], [/(2345Explorer)[\/\s]?([\w\.]+)/i], ["name", "version"], [/(MetaSr)[\/\s]?([\w\.]+)/i], ["name"], [/(LBBROWSER)/i], ["name"], [/xiaomi\/miuibrowser\/([\w\.]+)/i], ["version", ["name", "MIUI Browser"]], [/;fbav\/([\w\.]+);/i], ["version", ["name", "Facebook"]], [/safari\s(line)\/([\w\.]+)/i, /android.+(line)\/([\w\.]+)\/iab/i], ["name", "version"], [/headlesschrome(?:\/([\w\.]+)|\s)/i], ["version", ["name", "Chrome Headless"]], [/\swv\).+(chrome)\/([\w\.]+)/i], [["name", /(.+)/, "$1 WebView"], "version"], [/((?:oculus|samsung)browser)\/([\w\.]+)/i], [["name", /(.+(?:g|us))(.+)/, "$1 $2"], "version"], [/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i], ["version", ["name", "Android Browser"]], [/(sailfishbrowser)\/([\w\.]+)/i], [["name", "Sailfish Browser"], "version"], [/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i], ["name", "version"], [/(dolfin)\/([\w\.]+)/i], [["name", "Dolphin"], "version"], [/((?:android.+)crmo|crios)\/([\w\.]+)/i], [["name", "Chrome"], "version"], [/(coast)\/([\w\.]+)/i], [["name", "Opera Coast"], "version"], [/fxios\/([\w\.-]+)/i], ["version", ["name", "Firefox"]], [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i], ["version", ["name", "Mobile Safari"]], [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i], ["version", "name"], [/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i], [["name", "GSA"], "version"], [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i], ["name", ["version", R.str, qa.browser.oldsafari.version]], [/(webkit|khtml)\/([\w\.]+)/i], ["name", "version"], [/(navigator|netscape)\/([\w\.-]+)/i], [["name", "Netscape"], "version"], [/(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i, /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, /(links)\s\(([\w\.]+)/i, /(gobrowser)\/?([\w\.]*)/i, /(ice\s?browser)\/v?([\w\._]+)/i, /(mosaic)[\/\s]([\w\.]+)/i], ["name", "version"]],
cpu: [[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i], [["architecture", "amd64"]], [/(ia32(?=;))/i], [["architecture", V.lowerize]], [/((?:i[346]|x)86)[;\)]/i], [["architecture", "ia32"]], [/windows\s(ce|mobile);\sppc;/i], [["architecture", "arm"]], [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i], [["architecture", /ower/, "", V.lowerize]], [/(sun4\w)[;\)]/i], [["architecture", "sparc"]], [/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+[;l]))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i], [["architecture", V.lowerize]]],
device: [[/\((ipad|playbook);[\w\s\),;-]+(rim|apple)/i], ["model", "vendor", ["type", "tablet"]], [/applecoremedia\/[\w\.]+ \((ipad)/], ["model", ["vendor", "Apple"], ["type", "tablet"]], [/(apple\s{0,1}tv)/i], [["model", "Apple TV"], ["vendor", "Apple"]], [/(archos)\s(gamepad2?)/i, /(hp).+(touchpad)/i, /(hp).+(tablet)/i, /(kindle)\/([\w\.]+)/i, /\s(nook)[\w\s]+build\/(\w+)/i, /(dell)\s(strea[kpr\s\d]*[\dko])/i], ["vendor", "model", ["type", "tablet"]], [/(kf[A-z]+)\sbuild\/.+silk\//i], ["model", ["vendor", "Amazon"], ["type", "tablet"]], [/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i], [["model", R.str, qa.device.amazon.model], ["vendor", "Amazon"], ["type", "mobile"]], [/android.+aft([bms])\sbuild/i], ["model", ["vendor", "Amazon"], ["type", "smarttv"]], [/\((ip[honed|\s\w*]+);.+(apple)/i], ["model", "vendor", ["type", "mobile"]], [/\((ip[honed|\s\w*]+);/i], ["model", ["vendor", "Apple"], ["type", "mobile"]], [/(blackberry)[\s-]?(\w+)/i, /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i, /(hp)\s([\w\s]+\w)/i, /(asus)-?(\w+)/i], ["vendor", "model", ["type", "mobile"]], [/\(bb10;\s(\w+)/i], ["model", ["vendor", "BlackBerry"], ["type", "mobile"]], [/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone|p00c)/i], ["model", ["vendor", "Asus"], ["type", "tablet"]], [/(sony)\s(tablet\s[ps])\sbuild\//i, /(sony)?(?:sgp.+)\sbuild\//i], [["vendor", "Sony"], ["model", "Xperia Tablet"], ["type", "tablet"]], [/android.+\s([c-g]\d{4}|so[-l]\w+)(?=\sbuild\/|\).+chrome\/(?![1-6]{0,1}\d\.))/i], ["model", ["vendor", "Sony"], ["type", "mobile"]], [/\s(ouya)\s/i, /(nintendo)\s([wids3u]+)/i], ["vendor", "model", ["type", "console"]], [/android.+;\s(shield)\sbuild/i], ["model", ["vendor", "Nvidia"], ["type", "console"]], [/(playstation\s[34portablevi]+)/i], ["model", ["vendor", "Sony"], ["type", "console"]], [/(sprint\s(\w+))/i], [["vendor", R.str, qa.device.sprint.vendor], ["model", R.str, qa.device.sprint.model], ["type", "mobile"]], [/(htc)[;_\s-]+([\w\s]+(?=\)|\sbuild)|\w+)/i, /(zte)-(\w*)/i, /(alcatel|geeksphone|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i], ["vendor", ["model", /_/g, " "], ["type", "mobile"]], [/(nexus\s9)/i], ["model", ["vendor", "HTC"], ["type", "tablet"]], [/d\/huawei([\w\s-]+)[;\)]/i, /(nexus\s6p)/i], ["model", ["vendor", "Huawei"], ["type", "mobile"]], [/(microsoft);\s(lumia[\s\w]+)/i], ["vendor", "model", ["type", "mobile"]], [/[\s\(;](xbox(?:\sone)?)[\s\);]/i], ["model", ["vendor", "Microsoft"], ["type", "console"]], [/(kin\.[onetw]{3})/i], [["model", /\./g, " "], ["vendor", "Microsoft"], ["type", "mobile"]], [/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, /mot[\s-]?(\w*)/i, /(XT\d{3,4}) build\//i, /(nexus\s6)/i], ["model", ["vendor", "Motorola"], ["type", "mobile"]], [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i], ["model", ["vendor", "Motorola"], ["type", "tablet"]], [/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i], [["vendor", V.trim], ["model", V.trim], ["type", "smarttv"]], [/hbbtv.+maple;(\d+)/i], [["model", /^/, "SmartTV"], ["vendor", "Samsung"], ["type", "smarttv"]], [/\(dtv[\);].+(aquos)/i], ["model", ["vendor", "Sharp"], ["type", "smarttv"]], [/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, /((SM-T\w+))/i], [["vendor", "Samsung"], "model", ["type", "tablet"]], [/smart-tv.+(samsung)/i], ["vendor", ["type", "smarttv"], "model"], [/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i, /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i, /sec-((sgh\w+))/i], [["vendor", "Samsung"], "model", ["type", "mobile"]], [/sie-(\w*)/i], ["model", ["vendor", "Siemens"], ["type", "mobile"]], [/(maemo|nokia).*(n900|lumia\s\d+)/i, /(nokia)[\s_-]?([\w-]*)/i], [["vendor", "Nokia"], "model", ["type", "mobile"]], [/android[x\d\.\s;]+\s([ab][1-7]\-?[0178a]\d\d?)/i], ["model", ["vendor", "Acer"], ["type", "tablet"]], [/android.+([vl]k\-?\d{3})\s+build/i], ["model", ["vendor", "LG"], ["type", "tablet"]], [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i], [["vendor", "LG"], "model", ["type", "tablet"]], [/(lg) netcast\.tv/i], ["vendor", "model", ["type", "smarttv"]], [/(nexus\s[45])/i, /lg[e;\s\/-]+(\w*)/i, /android.+lg(\-?[\d\w]+)\s+build/i], ["model", ["vendor", "LG"], ["type", "mobile"]], [/(lenovo)\s?(s(?:5000|6000)(?:[\w-]+)|tab(?:[\s\w]+))/i], ["vendor", "model", ["type", "tablet"]], [/android.+(ideatab[a-z0-9\-\s]+)/i], ["model", ["vendor", "Lenovo"], ["type", "tablet"]], [/(lenovo)[_\s-]?([\w-]+)/i], ["vendor", "model", ["type", "mobile"]], [/linux;.+((jolla));/i], ["vendor", "model", ["type", "mobile"]], [/((pebble))app\/[\d\.]+\s/i], ["vendor", "model", ["type", "wearable"]], [/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i], ["vendor", "model", ["type", "mobile"]], [/crkey/i], [["model", "Chromecast"], ["vendor", "Google"]], [/android.+;\s(glass)\s\d/i], ["model", ["vendor", "Google"], ["type", "wearable"]], [/android.+;\s(pixel c)[\s)]/i], ["model", ["vendor", "Google"], ["type", "tablet"]], [/android.+;\s(pixel( [23])?( xl)?)[\s)]/i], ["model", ["vendor", "Google"], ["type", "mobile"]], [/android.+;\s(\w+)\s+build\/hm\1/i, /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, /android.+(mi[\s\-_]*(?:a\d|one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i, /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i], [["model", /_/g, " "], ["vendor", "Xiaomi"], ["type", "mobile"]], [/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i], [["model", /_/g, " "], ["vendor", "Xiaomi"], ["type", "tablet"]], [/android.+;\s(m[1-5]\snote)\sbuild/i], ["model", ["vendor", "Meizu"], ["type", "mobile"]], [/(mz)-([\w-]{2,})/i], [["vendor", "Meizu"], "model", ["type", "mobile"]], [/android.+a000(1)\s+build/i, /android.+oneplus\s(a\d{4})\s+build/i], ["model", ["vendor", "OnePlus"], ["type", "mobile"]], [/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i], ["model", ["vendor", "RCA"], ["type", "tablet"]], [/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i], ["model", ["vendor", "Dell"], ["type", "tablet"]], [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i], ["model", ["vendor", "Verizon"], ["type", "tablet"]], [/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i], [["vendor", "Barnes \x26 Noble"], "model", ["type", "tablet"]], [/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i], ["model", ["vendor", "NuVision"], ["type", "tablet"]], [/android.+;\s(k88)\sbuild/i], ["model", ["vendor", "ZTE"], ["type", "tablet"]], [/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i], ["model", ["vendor", "Swiss"], ["type", "mobile"]], [/android.+[;\/]\s*(zur\d{3})\s+build/i], ["model", ["vendor", "Swiss"], ["type", "tablet"]], [/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i], ["model", ["vendor", "Zeki"], ["type", "tablet"]], [/(android).+[;\/]\s+([YR]\d{2})\s+build/i, /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i], [["vendor", "Dragon Touch"], "model", ["type", "tablet"]], [/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i], ["model", ["vendor", "Insignia"], ["type", "tablet"]], [/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i], ["model", ["vendor", "NextBook"], ["type", "tablet"]], [/android.+[;\/]\s*(Xtreme\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i], [["vendor", "Voice"], "model", ["type", "mobile"]], [/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i], [["vendor", "LvTel"], "model", ["type", "mobile"]], [/android.+;\s(PH-1)\s/i], ["model", ["vendor", "Essential"], ["type", "mobile"]], [/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i], ["model", ["vendor", "Envizen"], ["type", "tablet"]], [/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i], ["vendor", "model", ["type", "tablet"]], [/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i], ["model", ["vendor", "MachSpeed"], ["type", "tablet"]], [/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i], ["vendor", "model", ["type", "tablet"]], [/android.+[;\/]\s*TU_(1491)\s+build/i], ["model", ["vendor", "Rotor"], ["type", "tablet"]], [/android.+(KS(.+))\s+build/i], ["model", ["vendor", "Amazon"], ["type", "tablet"]], [/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i], ["vendor", "model", ["type", "tablet"]], [/\s(tablet|tab)[;\/]/i, /\s(mobile)(?:[;\/]|\ssafari)/i], [["type", V.lowerize], "vendor", "model"], [/[\s\/\(](smart-?tv)[;\)]/i], [["type", "smarttv"]], [/(android[\w\.\s\-]{0,9});.+build/i], ["model", ["vendor", "Generic"]]],
engine: [[/windows.+\sedge\/([\w\.]+)/i], ["version", ["name", "EdgeHTML"]], [/webkit\/537\.36.+chrome\/(?!27)/i], [["name", "Blink"]], [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, /(icab)[\/\s]([23]\.[\d\.]+)/i], ["name", "version"], [/rv\:([\w\.]{1,9}).+(gecko)/i], ["version", "name"]],
os: [[/microsoft\s(windows)\s(vista|xp)/i], ["name", "version"], [/(windows)\snt\s6\.2;\s(arm)/i, /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i], ["name", ["version", R.str, qa.os.windows.version]], [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], [["name", "Windows"], ["version", R.str, qa.os.windows.version]], [/\((bb)(10);/i], [["name", "BlackBerry"], "version"], [/(blackberry)\w*\/?([\w\.]*)/i, /(tizen)[\/\s]([\w\.]+)/i, /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|sailfish|contiki)[\/\s-]?([\w\.]*)/i], ["name", "version"], [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i], [["name", "Symbian"], "version"], [/\((series40);/i], ["name"], [/mozilla.+\(mobile;.+gecko.+firefox/i], [["name", "Firefox OS"], "version"], [/(nintendo|playstation)\s([wids34portablevu]+)/i, /(mint)[\/\s\(]?(\w*)/i, /(mageia|vectorlinux)[;\s]/i, /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, /(hurd|linux)\s?([\w\.]*)/i, /(gnu)\s?([\w\.]*)/i], ["name", "version"], [/(cros)\s[\w]+\s([\w\.]+\w)/i], [["name", "Chromium OS"], "version"], [/(sunos)\s?([\w\.\d]*)/i], [["name", "Solaris"], "version"], [/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i], ["name", "version"], [/(haiku)\s(\w+)/i], ["name", "version"], [/cfnetwork\/.+darwin/i, /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i], [["version", /_/g, "."], ["name", "iOS"]], [/(mac\sos\sx)\s?([\w\s\.]*)/i, /(macintosh|mac(?=_powerpc)\s)/i], [["name", "Mac OS"], ["version", /_/g, "."]], [/((?:open)?solaris)[\/\s-]?([\w\.]*)/i, /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms|fuchsia)/i, /(unix)\s?([\w\.]*)/i], ["name", "version"]]
};
O.VERSION = "0.7.20";
O.BROWSER = {
NAME: "name",
MAJOR: "major",
VERSION: "version"
};
O.CPU = {
ARCHITECTURE: "architecture"
};
O.DEVICE = {
MODEL: "model",
VENDOR: "vendor",
TYPE: "type",
CONSOLE: "console",
MOBILE: "mobile",
SMARTTV: "smarttv",
TABLET: "tablet",
WEARABLE: "wearable",
EMBEDDED: "embedded"
};
O.ENGINE = {
NAME: "name",
VERSION: "version"
};
O.OS = {
NAME: "name",
VERSION: "version"
};
"undefined" !== typeof exports ? ("undefined" !== typeof module && module.exports && (exports = module.exports = O),
exports.UAParser = O) : "function" === typeof define && define.amd ? define(function() {
return O
}) : Z && (Z.UAParser = O);
var ra = Z && (Z.jQuery || Z.Zepto);
if ("undefined" !== typeof ra && !ra.ua) {
var $a = new O;
ra.ua = $a.getResult();
ra.ua.get = function() {
return $a.getUA()
}
;
ra.ua.set = function(a) {
$a.setUA(a);
a = $a.getResult();
for (var c in a)
ra.ua[c] = a[c]
}
}
var Ab;
if (!(Ab = M)) {
var za = Math
, ab = {}
, bb = ab.lib = {}
, dc = function() {}
, Aa = bb.Base = {
extend: function(a) {
dc.prototype = this;
var c = new dc;
a && c.mixIn(a);
c.hasOwnProperty("init") || (c.init = function() {
c.$super.init.apply(this, arguments)
}
);
c.init.prototype = c;
c.$super = this;
return c
},
create: function() {
var a = this.extend();
a.init.apply(a, arguments);
return a
},
init: function() {},
mixIn: function(a) {
for (var c in a)
a.hasOwnProperty(c) && (this[c] = a[c]);
a.hasOwnProperty("toString") && (this.toString = a.toString)
},
clone: function() {
return this.init.prototype.extend(this)
}
}
, Ba = bb.WordArray = Aa.extend({
init: function(a, c) {
a = this.words = a || [];
this.sigBytes = void 0 != c ? c : 4 * a.length
},
toString: function(a) {
return (a || Ic).stringify(this)
},
concat: function(a) {
var c = this.words
, b = a.words
, d = this.sigBytes;
a = a.sigBytes;
this.clamp();
if (d % 4)
for (var e = 0; e < a; e++)
c[d + e >>> 2] |= (b[e >>> 2] >>> 24 - e % 4 * 8 & 255) << 24 - (d + e) % 4 * 8;
else if (65535 < b.length)
for (e = 0; e < a; e += 4)
c[d + e >>> 2] = b[e >>> 2];
else
c.push.apply(c, b);
this.sigBytes += a;
return this
},
clamp: function() {
var a = this.words
, c = this.sigBytes;
a[c >>> 2] &= 4294967295 << 32 - c % 4 * 8;
a.length = za.ceil(c / 4)
},
clone: function() {
var a = Aa.clone.call(this);
a.words = this.words.slice(0);
return a
},
random: function(a) {
for (var c = [], b = 0; b < a; b += 4)
c.push(4294967296 * za.random() | 0);
return new Ba.init(c,a)
}
})
, Bb = ab.enc = {}
, Ic = Bb.Hex = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var b = [], d = 0; d < a; d++) {
var e = c[d >>> 2] >>> 24 - d % 4 * 8 & 255;
b.push((e >>> 4).toString(16));
b.push((e & 15).toString(16))
}
return b.join("")
},
parse: function(a) {
for (var c = a.length, b = [], d = 0; d < c; d += 2)
b[d >>> 3] |= parseInt(a.substr(d, 2), 16) << 24 - d % 8 * 4;
return new Ba.init(b,c / 2)
}
}
, ec = Bb.Latin1 = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var b = [], d = 0; d < a; d++)
b.push(String.fromCharCode(c[d >>> 2] >>> 24 - d % 4 * 8 & 255));
return b.join("")
},
parse: function(a) {
for (var c = a.length, b = [], d = 0; d < c; d++)
b[d >>> 2] |= (a.charCodeAt(d) & 255) << 24 - d % 4 * 8;
return new Ba.init(b,c)
}
}
, Jc = Bb.Utf8 = {
stringify: function(a) {
try {
return decodeURIComponent(escape(ec.stringify(a)))
} catch (c) {
throw Error("Malformed UTF-8 data");
}
},
parse: function(a) {
return ec.parse(unescape(encodeURIComponent(a)))
}
}
, fc = bb.BufferedBlockAlgorithm = Aa.extend({
reset: function() {
this._data = new Ba.init;
this._nDataBytes = 0
},
_append: function(a) {
"string" == typeof a && (a = Jc.parse(a));
this._data.concat(a);
this._nDataBytes += a.sigBytes
},
_process: function(a) {
var c = this._data
, b = c.words
, d = c.sigBytes
, e = this.blockSize
, f = d / (4 * e)
, f = a ? za.ceil(f) : za.max((f | 0) - this._minBufferSize, 0);
a = f * e;
d = za.min(4 * a, d);
if (a) {
for (var g = 0; g < a; g += e)
this._doProcessBlock(b, g);
g = b.splice(0, a);
c.sigBytes -= d
}
return new Ba.init(g,d)
},
clone: function() {
var a = Aa.clone.call(this);
a._data = this._data.clone();
return a
},
_minBufferSize: 0
});
bb.Hasher = fc.extend({
cfg: Aa.extend(),
init: function(a) {
this.cfg = this.cfg.extend(a);
this.reset()
},
reset: function() {
fc.reset.call(this);
this._doReset()
},
update: function(a) {
this._append(a);
this._process();
return this
},
finalize: function(a) {
a && this._append(a);
return this._doFinalize()
},
blockSize: 16,
_createHelper: function(a) {
return function(c, b) {
return (new a.init(b)).finalize(c)
}
},
_createHmacHelper: function(a) {
return function(c, b) {
return (new Kc.HMAC.init(a,b)).finalize(c)
}
}
});
var Kc = ab.algo = {};
Ab = ab
}
for (var M = Ab, cb = Math, db = M, ia = db.lib, Lc = ia.WordArray, eb = ia.Hasher, ia = db.algo, gc = [], hc = [], fb = 2, Ca = 0; 64 > Ca; ) {
var sa;
a: {
sa = fb;
for (var Mc = cb.sqrt(sa), Cb = 2; Cb <= Mc; Cb++)
if (!(sa % Cb)) {
sa = !1;
break a
}
sa = !0
}
sa && (8 > Ca && (gc[Ca] = Pb(cb.pow(fb, .5))),
hc[Ca] = Pb(cb.pow(fb, 1 / 3)),
Ca++);
fb++
}
var ja = []
, ia = ia.SHA256 = eb.extend({
_doReset: function() {
this._hash = new Lc.init(gc.slice(0))
},
_doProcessBlock: function(a, c) {
for (var b = this._hash.words, d = b[0], e = b[1], f = b[2], g = b[3], h = b[4], m = b[5], p = b[6], w = b[7], r = 0; 64 > r; r++) {
if (16 > r)
ja[r] = a[c + r] | 0;
else {
var u = ja[r - 15]
, n = ja[r - 2];
ja[r] = ((u << 25 | u >>> 7) ^ (u << 14 | u >>> 18) ^ u >>> 3) + ja[r - 7] + ((n << 15 | n >>> 17) ^ (n << 13 | n >>> 19) ^ n >>> 10) + ja[r - 16]
}
u = w + ((h << 26 | h >>> 6) ^ (h << 21 | h >>> 11) ^ (h << 7 | h >>> 25)) + (h & m ^ ~h & p) + hc[r] + ja[r];
n = ((d << 30 | d >>> 2) ^ (d << 19 | d >>> 13) ^ (d << 10 | d >>> 22)) + (d & e ^ d & f ^ e & f);
w = p;
p = m;
m = h;
h = g + u | 0;
g = f;
f = e;
e = d;
d = u + n | 0
}
b[0] = b[0] + d | 0;
b[1] = b[1] + e | 0;
b[2] = b[2] + f | 0;
b[3] = b[3] + g | 0;
b[4] = b[4] + h | 0;
b[5] = b[5] + m | 0;
b[6] = b[6] + p | 0;
b[7] = b[7] + w | 0
},
_doFinalize: function() {
var a = this._data
, c = a.words
, b = 8 * this._nDataBytes
, d = 8 * a.sigBytes;
c[d >>> 5] |= 128 << 24 - d % 32;
c[(d + 64 >>> 9 << 4) + 14] = cb.floor(b / 4294967296);
c[(d + 64 >>> 9 << 4) + 15] = b;
a.sigBytes = 4 * c.length;
this._process();
return this._hash
},
clone: function() {
var a = eb.clone.call(this);
a._hash = this._hash.clone();
return a
}
});
db.SHA256 = eb._createHelper(ia);
db.HmacSHA256 = eb._createHmacHelper(ia);
var ic = M
, Nc = ic.lib.WordArray;
ic.enc.Base64 = {
stringify: function(a) {
var c = a.words
, b = a.sigBytes
, d = this._map;
a.clamp();
a = [];
for (var e = 0; e < b; e += 3)
for (var f = (c[e >>> 2] >>> 24 - e % 4 * 8 & 255) << 16 | (c[e + 1 >>> 2] >>> 24 - (e + 1) % 4 * 8 & 255) << 8 | c[e + 2 >>> 2] >>> 24 - (e + 2) % 4 * 8 & 255, g = 0; 4 > g && e + .75 * g < b; g++)
a.push(d.charAt(f >>> 6 * (3 - g) & 63));
if (c = d.charAt(64))
for (; a.length % 4; )
a.push(c);
return a.join("")
},
parse: function(a) {
var c = a.length
, b = this._map
, d = b.charAt(64);
d && (d = a.indexOf(d),
-1 != d && (c = d));
for (var d = [], e = 0, f = 0; f < c; f++)
if (f % 4) {
var g = b.indexOf(a.charAt(f - 1)) << f % 4 * 2
, h = b.indexOf(a.charAt(f)) >>> 6 - f % 4 * 2;
d[e >>> 2] |= (g | h) << 24 - e % 4 * 8;
e++
}
return Nc.create(d, e)
},
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
};
for (var Db = Math, gb = M, ka = gb.lib, Oc = ka.WordArray, hb = ka.Hasher, ka = gb.algo, m = [], ib = 0; 64 > ib; ib++)
m[ib] = 4294967296 * Db.abs(Db.sin(ib + 1)) | 0;
ka = ka.MD5 = hb.extend({
_doReset: function() {
this._hash = new Oc.init([1732584193, 4023233417, 2562383102, 271733878])
},
_doProcessBlock: function(a, c) {
for (var b = 0; 16 > b; b++) {
var d = c + b
, e = a[d];
a[d] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360
}
var b = this._hash.words
, d = a[c + 0]
, e = a[c + 1]
, f = a[c + 2]
, g = a[c + 3]
, h = a[c + 4]
, p = a[c + 5]
, v = a[c + 6]
, w = a[c + 7]
, r = a[c + 8]
, u = a[c + 9]
, n = a[c + 10]
, y = a[c + 11]
, x = a[c + 12]
, z = a[c + 13]
, B = a[c + 14]
, C = a[c + 15]
, t = b[0]
, k = b[1]
, l = b[2]
, q = b[3]
, t = G(t, k, l, q, d, 7, m[0])
, q = G(q, t, k, l, e, 12, m[1])
, l = G(l, q, t, k, f, 17, m[2])
, k = G(k, l, q, t, g, 22, m[3])
, t = G(t, k, l, q, h, 7, m[4])
, q = G(q, t, k, l, p, 12, m[5])
, l = G(l, q, t, k, v, 17, m[6])
, k = G(k, l, q, t, w, 22, m[7])
, t = G(t, k, l, q, r, 7, m[8])
, q = G(q, t, k, l, u, 12, m[9])
, l = G(l, q, t, k, n, 17, m[10])
, k = G(k, l, q, t, y, 22, m[11])
, t = G(t, k, l, q, x, 7, m[12])
, q = G(q, t, k, l, z, 12, m[13])
, l = G(l, q, t, k, B, 17, m[14])
, k = G(k, l, q, t, C, 22, m[15])
, t = F(t, k, l, q, e, 5, m[16])
, q = F(q, t, k, l, v, 9, m[17])
, l = F(l, q, t, k, y, 14, m[18])
, k = F(k, l, q, t, d, 20, m[19])
, t = F(t, k, l, q, p, 5, m[20])
, q = F(q, t, k, l, n, 9, m[21])
, l = F(l, q, t, k, C, 14, m[22])
, k = F(k, l, q, t, h, 20, m[23])
, t = F(t, k, l, q, u, 5, m[24])
, q = F(q, t, k, l, B, 9, m[25])
, l = F(l, q, t, k, g, 14, m[26])
, k = F(k, l, q, t, r, 20, m[27])
, t = F(t, k, l, q, z, 5, m[28])
, q = F(q, t, k, l, f, 9, m[29])
, l = F(l, q, t, k, w, 14, m[30])
, k = F(k, l, q, t, x, 20, m[31])
, t = E(t, k, l, q, p, 4, m[32])
, q = E(q, t, k, l, r, 11, m[33])
, l = E(l, q, t, k, y, 16, m[34])
, k = E(k, l, q, t, B, 23, m[35])
, t = E(t, k, l, q, e, 4, m[36])
, q = E(q, t, k, l, h, 11, m[37])
, l = E(l, q, t, k, w, 16, m[38])
, k = E(k, l, q, t, n, 23, m[39])
, t = E(t, k, l, q, z, 4, m[40])
, q = E(q, t, k, l, d, 11, m[41])
, l = E(l, q, t, k, g, 16, m[42])
, k = E(k, l, q, t, v, 23, m[43])
, t = E(t, k, l, q, u, 4, m[44])
, q = E(q, t, k, l, x, 11, m[45])
, l = E(l, q, t, k, C, 16, m[46])
, k = E(k, l, q, t, f, 23, m[47])
, t = D(t, k, l, q, d, 6, m[48])
, q = D(q, t, k, l, w, 10, m[49])
, l = D(l, q, t, k, B, 15, m[50])
, k = D(k, l, q, t, p, 21, m[51])
, t = D(t, k, l, q, x, 6, m[52])
, q = D(q, t, k, l, g, 10, m[53])
, l = D(l, q, t, k, n, 15, m[54])
, k = D(k, l, q, t, e, 21, m[55])
, t = D(t, k, l, q, r, 6, m[56])
, q = D(q, t, k, l, C, 10, m[57])
, l = D(l, q, t, k, v, 15, m[58])
, k = D(k, l, q, t, z, 21, m[59])
, t = D(t, k, l, q, h, 6, m[60])
, q = D(q, t, k, l, y, 10, m[61])
, l = D(l, q, t, k, f, 15, m[62])
, k = D(k, l, q, t, u, 21, m[63]);
b[0] = b[0] + t | 0;
b[1] = b[1] + k | 0;
b[2] = b[2] + l | 0;
b[3] = b[3] + q | 0
},
_doFinalize: function() {
var a = this._data
, c = a.words
, b = 8 * this._nDataBytes
, d = 8 * a.sigBytes;
c[d >>> 5] |= 128 << 24 - d % 32;
var e = Db.floor(b / 4294967296);
c[(d + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360;
c[(d + 64 >>> 9 << 4) + 14] = (b << 8 | b >>> 24) & 16711935 | (b << 24 | b >>> 8) & 4278255360;
a.sigBytes = 4 * (c.length + 1);
this._process();
a = this._hash;
c = a.words;
for (b = 0; 4 > b; b++)
d = c[b],
c[b] = (d << 8 | d >>> 24) & 16711935 | (d << 24 | d >>> 8) & 4278255360;
return a
},
clone: function() {
var a = hb.clone.call(this);
a._hash = this._hash.clone();
return a
}
});
gb.MD5 = hb._createHelper(ka);
gb.HmacMD5 = hb._createHmacHelper(ka);
var Eb = M
, Da = Eb.lib
, jc = Da.Base
, Pc = Da.WordArray
, Da = Eb.algo
, Qc = Da.EvpKDF = jc.extend({
cfg: jc.extend({
keySize: 4,
hasher: Da.MD5,
iterations: 1
}),
init: function(a) {
this.cfg = this.cfg.extend(a)
},
compute: function(a, c) {
for (var b = this.cfg, d = b.hasher.create(), e = Pc.create(), f = e.words, g = b.keySize, b = b.iterations; f.length < g; ) {
h && d.update(h);
var h = d.update(a).finalize(c);
d.reset();
for (var m = 1; m < b; m++)
h = d.finalize(h),
d.reset();
e.concat(h)
}
e.sigBytes = 4 * g;
return e
}
});
Eb.EvpKDF = function(a, c, b) {
return Qc.create(b).compute(a, c)
}
;
if (!M.lib.Cipher) {
var ba = M
, X = ba.lib
, Ea = X.Base
, Fa = X.WordArray
, kc = X.BufferedBlockAlgorithm
, lc = ba.enc.Base64
, Rc = ba.algo.EvpKDF
, jb = X.Cipher = kc.extend({
cfg: Ea.extend(),
createEncryptor: function(a, c) {
return this.create(this._ENC_XFORM_MODE, a, c)
},
createDecryptor: function(a, c) {
return this.create(this._DEC_XFORM_MODE, a, c)
},
init: function(a, c, b) {
this.cfg = this.cfg.extend(b);
this._xformMode = a;
this._key = c;
this.reset()
},
reset: function() {
kc.reset.call(this);
this._doReset()
},
process: function(a) {
this._append(a);
return this._process()
},
finalize: function(a) {
a && this._append(a);
return this._doFinalize()
},
keySize: 4,
ivSize: 4,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
_createHelper: function(a) {
return {
encrypt: function(c, b, d) {
return ("string" == typeof b ? mc : ta).encrypt(a, c, b, d)
},
decrypt: function(c, b, d) {
return ("string" == typeof b ? mc : ta).decrypt(a, c, b, d)
}
}
}
});
X.StreamCipher = jb.extend({
_doFinalize: function() {
return this._process(!0)
},
blockSize: 1
});
var Ga = ba.mode = {}
, nc = function(a, c, b) {
var d = this._iv;
d ? this._iv = void 0 : d = this._prevBlock;
for (var e = 0; e < b; e++)
a[c + e] ^= d[e]
}
, la = (X.BlockCipherMode = Ea.extend({
createEncryptor: function(a, c) {
return this.Encryptor.create(a, c)
},
createDecryptor: function(a, c) {
return this.Decryptor.create(a, c)
},
init: function(a, c) {
this._cipher = a;
this._iv = c
}
})).extend();
la.Encryptor = la.extend({
processBlock: function(a, c) {
var b = this._cipher
, d = b.blockSize;
nc.call(this, a, c, d);
b.encryptBlock(a, c);
this._prevBlock = a.slice(c, c + d)
}
});
la.Decryptor = la.extend({
processBlock: function(a, c) {
var b = this._cipher
, d = b.blockSize
, e = a.slice(c, c + d);
b.decryptBlock(a, c);
nc.call(this, a, c, d);
this._prevBlock = e
}
});
Ga = Ga.CBC = la;
la = (ba.pad = {}).Pkcs7 = {
pad: function(a, c) {
for (var b = 4 * c, b = b - a.sigBytes % b, d = b << 24 | b << 16 | b << 8 | b, e = [], f = 0; f < b; f += 4)
e.push(d);
b = Fa.create(e, b);
a.concat(b)
},
unpad: function(a) {
a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255
}
};
X.BlockCipher = jb.extend({
cfg: jb.cfg.extend({
mode: Ga,
padding: la
}),
reset: function() {
jb.reset.call(this);
var a = this.cfg
, c = a.iv
, a = a.mode;
if (this._xformMode == this._ENC_XFORM_MODE)
var b = a.createEncryptor;
else
b = a.createDecryptor,
this._minBufferSize = 1;
this._mode = b.call(a, this, c && c.words)
},
_doProcessBlock: function(a, c) {
this._mode.processBlock(a, c)
},
_doFinalize: function() {
var a = this.cfg.padding;
if (this._xformMode == this._ENC_XFORM_MODE) {
a.pad(this._data, this.blockSize);
var c = this._process(!0)
} else
c = this._process(!0),
a.unpad(c);
return c
},
blockSize: 4
});
var Fb = X.CipherParams = Ea.extend({
init: function(a) {
this.mixIn(a)
},
toString: function(a) {
return (a || this.formatter).stringify(this)
}
})
, Ga = (ba.format = {}).OpenSSL = {
stringify: function(a) {
var c = a.ciphertext;
a = a.salt;
return (a ? Fa.create([1398893684, 1701076831]).concat(a).concat(c) : c).toString(lc)
},
parse: function(a) {
a = lc.parse(a);
var c = a.words;
if (1398893684 == c[0] && 1701076831 == c[1]) {
var b = Fa.create(c.slice(2, 4));
c.splice(0, 4);
a.sigBytes -= 16
}
return Fb.create({
ciphertext: a,
salt: b
})
}
}
, ta = X.SerializableCipher = Ea.extend({
cfg: Ea.extend({
format: Ga
}),
encrypt: function(a, c, b, d) {
d = this.cfg.extend(d);
var e = a.createEncryptor(b, d);
c = e.finalize(c);
e = e.cfg;
return Fb.create({
ciphertext: c,
key: b,
iv: e.iv,
algorithm: a,
mode: e.mode,
padding: e.padding,
blockSize: a.blockSize,
formatter: d.format
})
},
decrypt: function(a, c, b, d) {
d = this.cfg.extend(d);
c = this._parse(c, d.format);
return a.createDecryptor(b, d).finalize(c.ciphertext)
},
_parse: function(a, c) {
return "string" == typeof a ? c.parse(a, this) : a
}
})
, ba = (ba.kdf = {}).OpenSSL = {
execute: function(a, c, b, d) {
d || (d = Fa.random(8));
a = Rc.create({
keySize: c + b
}).compute(a, d);
b = Fa.create(a.words.slice(c), 4 * b);
a.sigBytes = 4 * c;
return Fb.create({
key: a,
iv: b,
salt: d
})
}
}
, mc = X.PasswordBasedCipher = ta.extend({
cfg: ta.cfg.extend({
kdf: ba
}),
encrypt: function(a, c, b, d) {
d = this.cfg.extend(d);
b = d.kdf.execute(b, a.keySize, a.ivSize);
d.iv = b.iv;
a = ta.encrypt.call(this, a, c, b.key, d);
a.mixIn(b);
return a
},
decrypt: function(a, c, b, d) {
d = this.cfg.extend(d);
c = this._parse(c, d.format);
b = d.kdf.execute(b, a.keySize, a.ivSize, c.salt);
d.iv = b.iv;
return ta.decrypt.call(this, a, c, b.key, d)
}
})
}
for (var Gb = M, oc = Gb.lib.BlockCipher, Hb = Gb.algo, N = [], pc = [], qc = [], rc = [], sc = [], tc = [], Ib = [], Jb = [], Kb = [], Lb = [], Y = [], ca = 0; 256 > ca; ca++)
Y[ca] = 128 > ca ? ca << 1 : ca << 1 ^ 283;
for (var T = 0, fa = 0, ca = 0; 256 > ca; ca++) {
var U = fa ^ fa << 1 ^ fa << 2 ^ fa << 3 ^ fa << 4
, U = U >>> 8 ^ U & 255 ^ 99;
N[T] = U;
pc[U] = T;
var kb = Y[T]
, uc = Y[kb]
, vc = Y[uc]
, L = 257 * Y[U] ^ 16843008 * U;
qc[T] = L << 24 | L >>> 8;
rc[T] = L << 16 | L >>> 16;
sc[T] = L << 8 | L >>> 24;
tc[T] = L;
L = 16843009 * vc ^ 65537 * uc ^ 257 * kb ^ 16843008 * T;
Ib[U] = L << 24 | L >>> 8;
Jb[U] = L << 16 | L >>> 16;
Kb[U] = L << 8 | L >>> 24;
Lb[U] = L;
T ? (T = kb ^ Y[Y[Y[vc ^ kb]]],
fa ^= Y[Y[fa]]) : T = fa = 1
}
var Sc = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]
, Hb = Hb.AES = oc.extend({
_doReset: function() {
for (var a = this._key, c = a.words, b = a.sigBytes / 4, a = 4 * ((this._nRounds = b + 6) + 1), d = this._keySchedule = [], e = 0; e < a; e++)
if (e < b)
d[e] = c[e];
else {
var f = d[e - 1];
e % b ? 6 < b && 4 == e % b && (f = N[f >>> 24] << 24 | N[f >>> 16 & 255] << 16 | N[f >>> 8 & 255] << 8 | N[f & 255]) : (f = f << 8 | f >>> 24,
f = N[f >>> 24] << 24 | N[f >>> 16 & 255] << 16 | N[f >>> 8 & 255] << 8 | N[f & 255],
f ^= Sc[e / b | 0] << 24);
d[e] = d[e - b] ^ f
}
c = this._invKeySchedule = [];
for (b = 0; b < a; b++)
e = a - b,
f = b % 4 ? d[e] : d[e - 4],
c[b] = 4 > b || 4 >= e ? f : Ib[N[f >>> 24]] ^ Jb[N[f >>> 16 & 255]] ^ Kb[N[f >>> 8 & 255]] ^ Lb[N[f & 255]]
},
encryptBlock: function(a, c) {
this._doCryptBlock(a, c, this._keySchedule, qc, rc, sc, tc, N)
},
decryptBlock: function(a, c) {
var b = a[c + 1];
a[c + 1] = a[c + 3];
a[c + 3] = b;
this._doCryptBlock(a, c, this._invKeySchedule, Ib, Jb, Kb, Lb, pc);
b = a[c + 1];
a[c + 1] = a[c + 3];
a[c + 3] = b
},
_doCryptBlock: function(a, c, b, d, e, f, g, h) {
for (var m = this._nRounds, p = a[c] ^ b[0], w = a[c + 1] ^ b[1], r = a[c + 2] ^ b[2], u = a[c + 3] ^ b[3], n = 4, v = 1; v < m; v++)
var x = d[p >>> 24] ^ e[w >>> 16 & 255] ^ f[r >>> 8 & 255] ^ g[u & 255] ^ b[n++]
, z = d[w >>> 24] ^ e[r >>> 16 & 255] ^ f[u >>> 8 & 255] ^ g[p & 255] ^ b[n++]
, B = d[r >>> 24] ^ e[u >>> 16 & 255] ^ f[p >>> 8 & 255] ^ g[w & 255] ^ b[n++]
, u = d[u >>> 24] ^ e[p >>> 16 & 255] ^ f[w >>> 8 & 255] ^ g[r & 255] ^ b[n++]
, p = x
, w = z
, r = B;
x = (h[p >>> 24] << 24 | h[w >>> 16 & 255] << 16 | h[r >>> 8 & 255] << 8 | h[u & 255]) ^ b[n++];
z = (h[w >>> 24] << 24 | h[r >>> 16 & 255] << 16 | h[u >>> 8 & 255] << 8 | h[p & 255]) ^ b[n++];
B = (h[r >>> 24] << 24 | h[u >>> 16 & 255] << 16 | h[p >>> 8 & 255] << 8 | h[w & 255]) ^ b[n++];
u = (h[u >>> 24] << 24 | h[p >>> 16 & 255] << 16 | h[w >>> 8 & 255] << 8 | h[r & 255]) ^ b[n++];
a[c] = x;
a[c + 1] = z;
a[c + 2] = B;
a[c + 3] = u
},
keySize: 8
});
Gb.AES = oc._createHelper(Hb);
"function" !== typeof String.prototype.trim && (String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "")
}
);
"function" != typeof Array.prototype.map && (Array.prototype.map = function(a, c) {
var b = [];
if ("function" === typeof a)
for (var d = 0, e = this.length; d < e; d++)
b.push(a.call(c, this[d], d, this));
return b
}
);
void 0 != Ua("fp_ver") && Va("fp_ver", "", -1, !1);
var ua = 0;
try {
localStorage.length || (localStorage.x = 1,
localStorage.removeItem("x"))
} catch (a) {
ua = navigator.cookieEnabled ? 1 : 0
}
try {
var wc = window.RequestFileSystem || window.webkitRequestFileSystem;
wc && wc(0, 0, function() {}, function() {
ua = 1
});
try {
"storage"in navigator && "estimate"in navigator.storage && navigator.storage.estimate().then(function(a) {
12E7 > a.quota && (ua = 1)
})
} catch (a) {}
"MozAppearance"in document.documentElement.style && (navigator.serviceWorker || (ua = 1));
window.indexedDB || !window.PointerEvent && !window.MSPointerEvent || (ua = 1)
} catch (a) {}
Ka.prototype = {
constructor: Ka(),
sortElements: function(a) {
a.sort(function(a, b) {
var c, e;
if ("object" === typeof a && "object" === typeof b && a && b)
return c = a.key,
e = b.key,
c === e ? 0 : typeof c === typeof e ? c < e ? -1 : 1 : typeof c < typeof e ? -1 : 1;
throw "error";
})
},
calcHash: function(a) {
for (var c = "", b = 0; b < a.length; b++)
c += a[b].key + a[b].value;
try {
var d = Ob(c)
, e = d.length;
a = "";
a = 0 == d.length % 2 ? d.substring(e / 2, e) + d.substring(0, e / 2) : d.substring(e / 2 + 1, e) + d.charAt(e / 2) + d.substring(0, e / 2);
for (var f = Ob(a), g = f.length, h = f.split(""), d = 0; d < parseInt(g / 2); d++)
if (0 == d % 2) {
var m = f.charAt(d);
h[d] = h[g - 1 - d];
h[g - 1 - d] = m
}
var p = h.join("")
, w = p.length
, r = 0 == w % 3 ? parseInt(w / 3) : parseInt(w / 3) + 1;
if (3 > w)
c = p;
else
var u = p.substring(0, 1 * r)
, n = p.substring(1 * r, 2 * r)
, v = p.substring(2 * r, w)
, c = n + v + u
} catch (Q) {}
return c = M.SHA256(c).toString(M.enc.Base64)
},
getSendString: function(a) {
for (var c = "", b = 0; b < a.length; b++)
c += a[b].key + "\x3d" + a[b].value + "\x26";
return c.substring(0, c.length - 1)
},
getCrossKey: function() {
var a = []
, c = {
Linux: "colorDepth pixelRatio timezoneOffset cpuClass navigatorPlatform touchSupport fontsHash webglVendorAndRenderer".split(" "),
Win32: "colorDepth resolution timezoneOffset navigatorPlatform webglVendorAndRenderer touchSupport".split(" "),
Win64: "colorDepth screenResolution timezoneOffset navigatorPlatform webglVendorAndRenderer touchSupport".split(" "),
MacIntel: "colorDepth screenResolution pixelRatio timezoneOffset navigatorPlatform touchSupport".split(" "),
iPhone: "canvasHash colorDepth timezoneOffset cpuClass navigatorPlatform touchSupport screenResolution pixelRatio fontsHash webglVendorAndRenderer".split(" ")
};
/Linux|linux/g.test(navigator.platform) && (a = c.Linux);
navigator.platform && c[navigator.platform] && (a = c[navigator.platform]);
return a
},
setMoreInfo: function(a) {
a.push({
key: "javaEnabled",
value: navigator.javaEnabled() ? "1" : "0"
});
for (var c = navigator.mimeTypes, b = "", d = 0; d < c.length; d++)
b += c[d].type + "#";
a.push({
key: "mimeTypesHash",
value: Zb(b.substr(0, b.length - 1))
});
a.push({
key: "cookieEnabled",
value: navigator.cookieEnabled ? "1" : "0"
});
c = 0;
0 <= navigator.userAgent.toString().indexOf("MSIE") || window.ActiveXObject || "ActiveXObject"in window ? (b = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),
c = Number(b.GetVariable("$version").split(" ")[1].replace(/,/g, ".").replace(/^(d+.d+).*$/, "$1"))) : navigator.plugins && 0 < navigator.plugins.length && (b = navigator.plugins["Shockwave Flash"]) && (flashArr = b.description.split(" "),
c = flashArr[2] + " " + flashArr[3]);
a.push({
key: "flashVersion",
value: c
});
a.push({
key: "doNotTrack",
value: navigator.doNotTrack || navigator.msDoNotTrack || window.doNotTrack || "unknown"
});
c = new UAParser;
c.setUA(navigator.userAgent);
c = c.getResult();
a.push({
key: "browserName",
value: c.browser.name
});
a.push({
key: "browserVersion",
value: c.browser.version
});
a.push({
key: "os",
value: c.os.name
});
a.push({
key: "osVersion",
value: c.os.version
});
a.push({
key: "browserEngine",
value: c.engine.name
});
a.push({
key: "browserEngineVersion",
value: c.engine.version
});
a.push({
key: "deviceType",
value: c.device.type
});
a.push({
key: "deviceVendor",
value: c.device.vendor
})
},
getCollectElements: function(a, c) {
var b = this
, d = {};
a.fpExcludes && (d.excludes = a.fpExcludes);
d.extraComponents = [{
key: "localCode",
getData: function(a) {
var b = 0
, c = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if ("function" == typeof c) {
try {
var d = new c({
iceServers: []
});
d.createDataChannel("", {
reliable: !1
})
} catch (pa) {
if (2 != b) {
b = 1;
a();
return
}
}
var e = !1;
d.onicecandidate = function(c) {
var d = /([0-9]{1,3}(\.[0-9]{1,3}){3})/
, f = [];
"complete" != c.target.iceGatheringState || e || (e = !0,
c.target.localDescription.sdp.split("\n").forEach(function(a) {
(a = d.exec(a)) && "127.0.0.1" != a[1] && "0.0.0.0" != a[1] && -1 === f.indexOf(a[1]) && f.push(a[1])
}),
2 != b && (b = 1,
a(0 < f.length ? f.sort()[0] : "")))
}
;
d.onaddstream = function(a) {
remoteVideo.src = window.URL.createObjectURL(a.stream)
}
;
d.createOffer(function(a) {
d.setLocalDescription(a, function() {}, function() {})
}, function() {}, {});
setTimeout(function() {
0 == b && (b = 2,
a())
}, 500)
} else
a()
}
}, {
key: "isIncognito",
getData: function(a) {
a(ua)
}
}, {
key: "isRiskBrowser",
getData: function(a) {
var b;
b = /PhantomJS/.test(navigator.userAgent) || window.callPhantom || window._phantom || /HeadlessChrome/.test(navigator.userAgent) || 0 == navigator.plugins.length || "" == navigator.languages ? 1 : void 0;
if (!b) {
b = 0;
var c = ["selenium", "webdriver", "driver"];
try {
b = util.inAttrs(window, "_Selenium_IDE_Recorder,_selenium,callSelenium,__nightmare") || util.inAttrs(window.document, "__driver_evaluate,__webdriver_evaluate,__selenium_evaluate,__fxdriver_evaluate,__driver_unwrapped,__webdriver_unwrapped,__selenium_unwrapped,__fxdriver_unwrapped,__webdriver_script_func,__webdriver_script_function,__webdriver_script_fn");
for (var d in window.document)
"$" === d[0] && d.match("^\\$[a-z]dc_") && window.document[d].cache_ && (b = 1);
for (d = 0; d < c.length; d++)
window.document.documentElement.getAttribute(c[d]) && (b = 1)
} catch (A) {}
try {
window.external && window.external.toString() && -1 !== window.external.toString().indexOf("Sequentum") && (b = 1)
} catch (A) {
b = 0
}
}
a(b)
}
}];
Fingerprint2.get(d, function(d) {
var e = d.map(function(a) {
return a.value
});
b.setMoreInfo(d);
a.extendFields && (d = d.concat(a.extendFields));
for (var g = [], h = ["fonts", "webgl", "plugins", "canvas"], m = b.getCrossKey(), p = [], v = 0; v < d.length; v++) {
var r = d[v]
, u = r.key.replace(RegExp("%", "gm"), "")
, n = r.value;
void 0 !== n && "" !== n && ("platform" == u && (u = "navigatorPlatform"),
r.value instanceof Array && (-1 != h.indexOf(u) ? (u += "Hash",
n = Zb(n.join("#"))) : n = n.toString().replace(RegExp("%", "gm"), "")),
-1 != m.indexOf(u) && p.push(n),
g.push({
key: u,
value: n
}))
}
d = Fingerprint2.x64hash128(p.join(""), 31).substring(0, 16) + Fingerprint2.x64hash128(e.join(""), 31).substring(16);
g.push({
key: "WAP" == $b() ? "wapSmartID" : "webSmartID",
value: d
});
b.dfpCache.get("CHFIT_CACHE", function(a) {
a && g.push({
key: "cookieCode",
value: a
});
g.push({
key: "custID",
value: "zke.com"
});
g.push({
key: "platform",
value: $b()
});
b.sortElements(g);
a = b.calcHash(g);
g.push({
key: "hashCode",
value: a
});
g.push({
key: "algID",
value: "ZuFNKbPgR9"
});
g.push({
key: "deviceId",
value: ""
});
g.push({
key: "timestamp",
value: (new Date).getTime()
});
"function" == typeof c && c(g)
})
})
},
collectionSDKElements: function(a, c) {
var b = this
, d = {};
a.fpExcludes && (d.excludes = a.fpExcludes);
Fingerprint2.get(d, function(d) {
for (var e = d.map(function(a) {
return a.value
}), g = [], h = b.getCrossKey(), m = [], p = 0; p < d.length; p++) {
var v = d[p]
, r = v.key.replace(RegExp("%", "gm"), "")
, v = v.value;
-1 != h.indexOf(r) && m.push(v)
}
try {
a.extendFields && (g = g.concat(a.extendFields))
} catch (u) {}
d = Fingerprint2.x64hash128(m.join(""), 31).substring(0, 16) + Fingerprint2.x64hash128(e.join(""), 31).substring(16);
g.push({
key: "wapSmartID",
value: d
});
g.push({
key: "custID",
value: "zke.com"
});
g.push({
key: "platform",
value: "WEB"
});
b.dfpCache.get("CHFIT_CACHE", function(a) {
a && g.push({
key: "cookieCode",
value: a
});
b.sortElements(g);
a = b.calcHash(g);
g.push({
key: "hashCode",
value: a
});
g.push({
key: "algID",
value: "ZuFNKbPgR9"
});
g.push({
key: "deviceId",
value: ""
});
g.push({
key: "timestamp",
value: (new Date).getTime()
});
"function" == typeof c && c(g)
})
})
},
storeCache: function(a) {
if (typeof a == 'string') {
a =JSON.parse(a);
}
for (var c in a)
"dfp" == c ? Ua("CHFIT_DEVICEID") != a[c] && Va("CHFIT_DEVICEID", a[c], 1E3, !1) : "exp" == c ? Va("CHFIT_EXPIRATION", a[c], 1E3, !1) : "cookieCode" == c && this.dfpCache.set("CHFIT_CACHE", a[c])
},
getEncryptKey: function() {
var a = Nb(16, 16)
, c = Nb(16, 16);
return a + c
},
sendGenerateInfo: function(a, c) {
var b = this
, d = b.getSendString(a)
, e = b.getEncryptKey()
, f = encodeURIComponent
, g = e.substring(0, 16)
, h = e.substring(16)
, g = M.enc.Utf8.parse(g)
, h = M.enc.Utf8.parse(h)
, d = M.AES.encrypt(d, g, {
iv: h,
mode: M.mode.CBC
}).toString()
, f = f(d);
ac.getJSON("https://microspot.chainupcloud.com/security-microspot/public/generate/jsonp?bsk\x3d" + e + "\x26inputItem\x3d" + f, null, function(a) {
b.storeCache(a);
"function" == typeof c && c(a)
})
},
getFingerprint: function(a, c) {
var b = this
, d = Ua("CHFIT_DEVICEID")
, e = Ua("CHFIT_EXPIRATION");
d && null != d && "" != d && e && null != e && "" != e && 9E5 < e - (new Date).getTime() ? "function" == typeof c && c(JSON.stringify({
dfp: d,
exp: e
})) : mb() ? this.collectionSDKElements(a, function(a) {
b.sendGenerateInfo(a, c)
}) : this.getCollectElements(a, function(a) {
b.sendGenerateInfo(a, c)
})
},
getFingerprintBySDK: function(a) {
a = "string" === typeof a ? JSON.parse(a) : a;
var c = {}, b = [], d;
for (d in a)
"platform" != d && "custID" != d && "timestamp" != d && b.push({
key: d,
value: a[d]
});
c.extendFields = b;
c.fpExcludes = {
webgl: !0,
plugins: !0,
webglVendorAndRenderer: !0,
canvas: !0,
enumerateDevices: !0,
pixelRatio: !0,
doNotTrack: !0,
fontsFlash: !0
};
this.getFingerprint(c, function(a) {
JS.onSuccess(a)
})
}
};
var La = {};
if (mb()) {
var xc = "string" === typeof window.SDKElement ? JSON.parse(window.SDKElement) : window.SDKElement, yc = [], va;
for (va in xc)
"platform" != va && "custID" != va && "timestamp" != va && yc.push({
key: va,
value: xc[va]
});
La.extendFields = yc;
La.fpExcludes = {
webgl: !0,
plugins: !0,
webglVendorAndRenderer: !0,
canvas: !0,
enumerateDevices: !0,
pixelRatio: !0,
doNotTrack: !0,
fontsFlash: !0
}
} else
La.extendFields = [];
var Ha = []
, Mb = !1
, zc = !1;
if ("function" !== typeof lb)
throw new TypeError("callback for docReady(fn) must be a function");
if (Mb)
setTimeout(function() {
lb(void 0)
}, 1);
else {
Ha.push({
fn: lb,
ctx: void 0
});
var Ia = function() {
if (!Mb) {
Mb = !0;
for (var a = 0; a < Ha.length; a++)
Ha[a].fn.call(window, Ha[a].ctx);
Ha = []
}
};
"complete" === document.readyState ? setTimeout(Ia, 1) : zc || (document.addEventListener ? (document.addEventListener("DOMContentLoaded", Ia, !1),
window.addEventListener("load", Ia, !1)) : (document.attachEvent("onreadystatechange", function() {
"complete" === document.readyState && Ia()
}),
window.attachEvent("onload", Ia)),
zc = !0)
}
return Ka
}
"undefined" !== typeof window && "function" === typeof define && define.amd ? define(Ja) : "undefined" !== typeof module && module.exports ? module.exports = Ja() : this.exports ? this.exports = Ja() : this.BSDeviceFingerprint = Ja();