Skip to content

Instantly share code, notes, and snippets.

@felixguerrero12
Created December 27, 2024 15:58
Show Gist options
  • Select an option

  • Save felixguerrero12/f827f512667dec30004fbcb12352839e to your computer and use it in GitHub Desktop.

Select an option

Save felixguerrero12/f827f512667dec30004fbcb12352839e to your computer and use it in GitHub Desktop.
browser-signature-identifier.js
function param(t) {
var e, n = "";
for (e in t) t.hasOwnProperty(e) && (0 < n.length && (n += "&"), n += encodeURI(e + "=" + t[e]));
return n;
}
((t, e) => {
"object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.ClipboardJS = e() : t.ClipboardJS = e();
})(this, function () {
return n = [function (t, e, n) {
var o;
n = [t, n(7)], undefined !== (e = "function" == typeof (o = function (t, e) {
"use strict";
function n(t, e) {
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
}
var o = function (t) {
return t && t.__esModule ? t : {default: t};
}(e), r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
return typeof t;
} : function (t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t;
}, i = function () {
function o(t, e) {
for (var n = 0; n < e.length; n++) {
var o = e[n];
o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(t, o.key, o);
}
}
return function (t, e, n) {
return e && o(t.prototype, e), n && o(t, n), t;
};
}(), a = function () {
function e(t) {
n(this, e), this.resolveOptions(t), this.initSelection();
}
return i(e, [{key: "resolveOptions", value: function () {
var t = arguments.length > 0 && undefined !== arguments[0] ? arguments[0] : {};
this.action = t.action, this.container = t.container, this.emitter = t.emitter, this.target = t.target, this.text = t.text, this.trigger = t.trigger, this.selectedText = "";
}}, {key: "initSelection", value: function () {
this.text ? this.selectFake() : this.target && this.selectTarget();
}}, {key: "selectFake", value: function () {
var t = this, e = "rtl" == document.documentElement.getAttribute("dir");
this.removeFake(), this.fakeHandlerCallback = function () {
return t.removeFake();
}, this.fakeHandler = this.container.addEventListener("click", this.fakeHandlerCallback) || true, this.fakeElem = document.createElement("textarea"), this.fakeElem.style.fontSize = "12pt", this.fakeElem.style.border = "0", this.fakeElem.style.padding = "0", this.fakeElem.style.margin = "0", this.fakeElem.style.position = "absolute", this.fakeElem.style[e ? "right" : "left"] = "-9999px";
var n = window.pageYOffset || document.documentElement.scrollTop;
this.fakeElem.style.top = n + "px", this.fakeElem.setAttribute("readonly", ""), this.fakeElem.value = this.text, this.container.appendChild(this.fakeElem), this.selectedText = (0, o.default)(this.fakeElem), this.copyText();
}}, {key: "removeFake", value: function () {
this.fakeHandler && (this.container.removeEventListener("click", this.fakeHandlerCallback), this.fakeHandler = null, this.fakeHandlerCallback = null), this.fakeElem && (this.container.removeChild(this.fakeElem), this.fakeElem = null);
}}, {key: "selectTarget", value: function () {
this.selectedText = (0, o.default)(this.target), this.copyText();
}}, {key: "copyText", value: function () {
var e = undefined;
try {
e = document.execCommand(this.action);
} catch (t) {
e = false;
}
this.handleResult(e);
}}, {key: "handleResult", value: function (t) {
this.emitter.emit(t ? "success" : "error", {action: this.action, text: this.selectedText, trigger: this.trigger, clearSelection: this.clearSelection.bind(this)});
}}, {key: "clearSelection", value: function () {
this.trigger && this.trigger.focus(), window.getSelection().removeAllRanges();
}}, {key: "destroy", value: function () {
this.removeFake();
}}, {key: "action", set: function () {
var t = arguments.length > 0 && undefined !== arguments[0] ? arguments[0] : "copy";
if (this._action = t, "copy" !== this._action && "cut" !== this._action) throw new Error('Invalid "action" value, use either "copy" or "cut"');
}, get: function () {
return this._action;
}}, {key: "target", set: function (t) {
if (undefined !== t) {
if (!t || "object" !== (undefined === t ? "undefined" : r(t)) || 1 !== t.nodeType) throw new Error('Invalid "target" value, use a valid Element');
if ("copy" === this.action && t.hasAttribute("disabled")) throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');
if ("cut" === this.action && (t.hasAttribute("readonly") || t.hasAttribute("disabled"))) throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');
this._target = t;
}
}, get: function () {
return this._target;
}}]), e;
}();
t.exports = a;
}) ? o.apply(e, n) : o) && (t.exports = e);
}, function (t, e, n) {
var l = n(6), s = n(5);
t.exports = function (t, e, n) {
if (!t && !e && !n) throw new Error("Missing required arguments");
if (!l.string(e)) throw new TypeError("Second argument must be a String");
if (!l.fn(n)) throw new TypeError("Third argument must be a Function");
if (l.node(t)) return r = e, i = n, (o = t).addEventListener(r, i), {destroy: function () {
o.removeEventListener(r, i);
}};
var o, r, i, a, c, u;
if (l.nodeList(t)) return a = t, c = e, u = n, Array.prototype.forEach.call(a, function (t) {
t.addEventListener(c, u);
}), {destroy: function () {
Array.prototype.forEach.call(a, function (t) {
t.removeEventListener(c, u);
});
}};
if (l.string(t)) return s(document.body, t, e, n);
throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");
};
}, function (t, e) {
function n() {}
n.prototype = {on: function (t, e, n) {
var o = this.e || (this.e = {});
return (o[t] || (o[t] = [])).push({fn: e, ctx: n}), this;
}, once: function (t, e, n) {
function o() {
r.off(t, o), e.apply(n, arguments);
}
var r = this;
return o._ = e, this.on(t, o, n);
}, emit: function (t) {
for (var e = [].slice.call(arguments, 1), n = ((this.e || (this.e = {}))[t] || []).slice(), o = 0, r = n.length; o < r; o++) n[o].fn.apply(n[o].ctx, e);
return this;
}, off: function (t, e) {
var n = this.e || (this.e = {}), o = n[t], r = [];
if (o && e) for (var i = 0, a = o.length; i < a; i++) o[i].fn !== e && o[i].fn._ !== e && r.push(o[i]);
return r.length ? n[t] = r : delete n[t], this;
}}, t.exports = n;
}, function (t, e, n) {
var o;
n = [t, n(0), n(2), n(1)], undefined !== (e = "function" == typeof (o = function (t, e, n, o) {
"use strict";
function r(t) {
return t && t.__esModule ? t : {default: t};
}
function i(t, e) {
if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
}
function a(t, e) {
if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return !e || "object" != typeof e && "function" != typeof e ? t : e;
}
function c(t, e) {
if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
t.prototype = Object.create(e && e.prototype, {constructor: {value: t, enumerable: false, writable: true, configurable: true}}), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e);
}
function u(t, e) {
var n = "data-clipboard-" + t;
if (e.hasAttribute(n)) return e.getAttribute(n);
}
var l = r(e), s = r(n), f = r(o), d = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (t) {
return typeof t;
} : function (t) {
return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t;
}, h = function () {
function o(t, e) {
for (var n = 0; n < e.length; n++) {
var o = e[n];
o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(t, o.key, o);
}
}
return function (t, e, n) {
return e && o(t.prototype, e), n && o(t, n), t;
};
}(), p = function (t) {
function o(t, e) {
i(this, o);
var n = a(this, (o.__proto__ || Object.getPrototypeOf(o)).call(this));
return n.resolveOptions(e), n.listenClick(t), n;
}
return c(o, t), h(o, [{key: "resolveOptions", value: function () {
var t = arguments.length > 0 && undefined !== arguments[0] ? arguments[0] : {};
this.action = "function" == typeof t.action ? t.action : this.defaultAction, this.target = "function" == typeof t.target ? t.target : this.defaultTarget, this.text = "function" == typeof t.text ? t.text : this.defaultText, this.container = "object" === d(t.container) ? t.container : document.body;
}}, {key: "listenClick", value: function (t) {
var e = this;
this.listener = (0, f.default)(t, "click", function (t) {
return e.onClick(t);
});
}}, {key: "onClick", value: function (t) {
var e = t.delegateTarget || t.currentTarget;
this.clipboardAction && (this.clipboardAction = null), this.clipboardAction = new l.default({action: this.action(e), target: this.target(e), text: this.text(e), container: this.container, trigger: e, emitter: this});
}}, {key: "defaultAction", value: function (t) {
return u("action", t);
}}, {key: "defaultTarget", value: function (t) {
var e = u("target", t);
if (e) return document.querySelector(e);
}}, {key: "defaultText", value: function (t) {
return u("text", t);
}}, {key: "destroy", value: function () {
this.listener.destroy(), this.clipboardAction && (this.clipboardAction.destroy(), this.clipboardAction = null);
}}], [{key: "isSupported", value: function () {
var t = arguments.length > 0 && undefined !== arguments[0] ? arguments[0] : ["copy", "cut"], e = "string" == typeof t ? [t] : t, n = !!document.queryCommandSupported;
return e.forEach(function (t) {
n = n && !!document.queryCommandSupported(t);
}), n;
}}]), o;
}(s.default);
t.exports = p;
}) ? o.apply(e, n) : o) && (t.exports = e);
}, function (t, e) {
var n;
"undefined" == typeof Element || Element.prototype.matches || ((n = Element.prototype).matches = n.matchesSelector || n.mozMatchesSelector || n.msMatchesSelector || n.oMatchesSelector || n.webkitMatchesSelector), t.exports = function (t, e) {
for (; t && 9 !== t.nodeType;) {
if ("function" == typeof t.matches && t.matches(e)) return t;
t = t.parentNode;
}
};
}, function (t, e, n) {
function i(t, e, n, o, r) {
var i = function (e, n, t, o) {
return function (t) {
t.delegateTarget = a(t.target, n), t.delegateTarget && o.call(e, t);
};
}.apply(this, arguments);
return t.addEventListener(n, i, r), {destroy: function () {
t.removeEventListener(n, i, r);
}};
}
var a = n(4);
t.exports = function (t, e, n, o, r) {
return "function" == typeof t.addEventListener ? i.apply(null, arguments) : "function" == typeof n ? i.bind(null, document).apply(null, arguments) : ("string" == typeof t && (t = document.querySelectorAll(t)), Array.prototype.map.call(t, function (t) {
return i(t, e, n, o, r);
}));
};
}, function (t, n) {
n.node = function (t) {
return undefined !== t && t instanceof HTMLElement && 1 === t.nodeType;
}, n.nodeList = function (t) {
var e = Object.prototype.toString.call(t);
return undefined !== t && ("[object NodeList]" === e || "[object HTMLCollection]" === e) && "length" in t && (0 === t.length || n.node(t[0]));
}, n.string = function (t) {
return "string" == typeof t || t instanceof String;
}, n.fn = function (t) {
return "[object Function]" === Object.prototype.toString.call(t);
};
}, function (t, e) {
t.exports = function (t) {
var e, n;
return t = "SELECT" === t.nodeName ? (t.focus(), t.value) : "INPUT" === t.nodeName || "TEXTAREA" === t.nodeName ? ((e = t.hasAttribute("readonly")) || t.setAttribute("readonly", ""), t.select(), t.setSelectionRange(0, t.value.length), e || t.removeAttribute("readonly"), t.value) : (t.hasAttribute("contenteditable") && t.focus(), e = window.getSelection(), (n = document.createRange()).selectNodeContents(t), e.removeAllRanges(), e.addRange(n), e.toString());
};
}], r = {}, o.m = n, o.c = r, o.i = function (t) {
return t;
}, o.d = function (t, e, n) {
o.o(t, e) || Object.defineProperty(t, e, {configurable: false, enumerable: true, get: n});
}, o.n = function (t) {
var e = t && t.__esModule ? function () {
return t.default;
} : function () {
return t;
};
return o.d(e, "a", e), e;
}, o.o = function (t, e) {
return Object.prototype.hasOwnProperty.call(t, e);
}, o.p = "", o(o.s = 3);
function o(t) {
var e;
return (r[t] || (e = r[t] = {i: t, l: false, exports: {}}, n[t].call(e.exports, e, e.exports, o), e.l = true, e)).exports;
}
var n, r;
});
for (var TRANSLATION_STRING in TRANSLATION_STRINGS = {detect_looks_like: "Your web browser looks like:", detect_looks_like_announcing: "But it's announcing that it is:", detect_yes: "Yes", detect_no: "No", detect_javascript_is_enabled: "JavaScript is enabled", detect_cookies_are_enabled: "Cookies are enabled", detect_cookies_not_enabled: "Cookies are not enabled", detect_third_party_cookies_are_enabled: "Third-Party Cookies are enabled", detect_third_party_cookies_not_enabled: "Third-Party Cookies are not enabled", detect_could_not_be_detected_javascript_disabled: "Could not be detected because Javascript is disabled", detection_blocked_by_browser: "Detection blocked by your web browser", detect_try_reloading: "Error. Try reloading.", please_wait: "Please wait...", detect_up_to_date: "Up to date", detect_out_of_date: "Out of date", detect_click_to_update: "Click to update", detect_not_installed_or_disabled: "Not installed, or disabled", detect_your_local_ip_manually: "Detect your local IP manually", detect_gmt_offset: "Browser GMT Offset", detect_pixel_ratio: "Device Pixel Ratio", detect_platform: "Navigator Platform", detect_oscpu: "OS / CPU", detect_vendor: "Vendor", detect_hardware_concurrency: "No. of logical CPU cores", detect_ram_gb: "RAM", detect_max_touch_points: "Maximum Touch Points", detect_webgl_vendor: "WebGL Vendor", detect_webgl_renderer: "WebGL Renderer", detect_ecma_version: "ECMA Version", detect_addon_adblocker: "Ad blocker", detect_pixels: "Pixels", detect_bit: "bit"}) TRANSLATION_STRING in window == false && (window[TRANSLATION_STRING] = TRANSLATION_STRINGS[TRANSLATION_STRING]);
NAVIGATOR_PLATFORM_MAP = {android: "Android", arm: "ARM", debian: "Linux (Debian)", "freebsd-amd64": "FreeBSD (AMD64)", "general mobile device": "General Mobile Device", haiku: "Haiku", "hp-ux": "Hewlett Packard UNIX", ipad: "Apple iPad", iphone: "Apple iPhone", "ipod-touch": "Apple iPod Touch", ios: "Apple iOS", "linux aarch64": "Linux (AArch64)", "linux armv7l": "Linux (armv7l)", "linux armv8l": "Linux (armv8l)", "linux mips": "Linux (MIPS)", "linux i686": "Linux (i686)", "linux x86_64": "Linux (x86_64)", linux: "Linux", macintel: "Intel based Mac", "mac-os": "macOS", macppc: "PPC based Mac", mac68k: "Motorola 68K based Mac", nintendo: "Nintendo", "new-nintendo-3ds": "Nintendo (3DS)", "nintendo-switch": "Nintendo Switch", "nintendo-wiiu": "Nintendo WiiU", "openbsd-amd64": "OpenBSD (AMD64)", orbisos: "Orbis OS", "playstation 4": "PlayStation 4", "playstation vita": "PlayStation Vita", sunos: "SunOS", ubuntu: "Linux (Ubuntu)", unknown: "Unknown platform", win16: "Windows (16-Bit)", win32: "Windows (32-Bit)", win64: "Windows (64-Bit)", windows: "Windows", x11: "System running X11"};
var WIMB = WIMB || {version: "1.9", init: function () {
window.WIMB.data || (window.WIMB.data = {});
}, meta: {meta_string: function () {
return "href=" + encodeURIComponent(window.location.href) + "&src=wimb_library&wimb_version=" + WIMB.version + "&js_src_url=" + encodeURIComponent(window.WIMB.meta.js_src_url);
}}, detect: {javascript: {enabled: function () {
return true;
}}, cookies: {enabled: function () {
return !!navigator.cookieEnabled;
}}, cookies_third_party: {enabled: function () {
return "enabled" == window.WIMB.data.cookies_third_party || "disabled" != window.WIMB.data.cookies_third_party && null;
}, trigger_set_cookie: function (e) {
return window.WIMB.data.cookies_third_party = "unknown", cookie_set_script_element_id = "set_cookie", e = (e = undefined !== e ? e : "//webbrowsertests.com/detect/are-third-party-cookies-enabled-set-cookie") + "?" + WIMB.meta.meta_string(), (cookie_set_script_element = document.createElement("script")).setAttribute("src", e), cookie_set_script_element.setAttribute("id", cookie_set_script_element_id), cookie_set_script_element.setAttribute("async", "async"), (body_object = document.getElementsByTagName("body")[0]).appendChild(cookie_set_script_element), null !== document.getElementById(cookie_set_script_element_id);
}, cookie_has_now_been_set_by_third_party: function (e) {
e = (e = undefined !== e ? e : "//webbrowsertests.com/detect/are-third-party-cookies-enabled-check-cookie") + "?" + WIMB.meta.meta_string(), (cookie_check_script_element = document.createElement("script")).setAttribute("src", e), cookie_set_script_element.setAttribute("id", "check_cookie"), (body_object = document.getElementsByTagName("body")[0]).appendChild(cookie_check_script_element);
}, cookies_test_finished: function (e) {
window.WIMB.data.cookies_third_party = e ? "enabled" : "disabled";
}}, flash: {enabled: function () {
return console.log("Flash detection has been removed in v1.8. You can monkey-patch it back in with whatismybrowser-heavy.min.js"), null;
}}, java: {enabled: function () {
return console.log("Java detection has been removed in v1.8. You can monkey-patch it back in with whatismybrowser-heavy.min.js"), null;
}}, popup_windows: {allowed: function (e, t, n) {
return e = undefined !== e ? e : "/", t = undefined !== t ? parseInt(t) : 1, n = undefined !== n ? parseInt(n) : 1, popup_test_params = "width=" + t + ",height=" + n + ",left=0,top=0,location=no,toolbar=no,menubar=no,scrollbars=no,status=no,resizable=no,directories=no", !(!(popup_test_window = window.open(e, "wimb_popup_test", popup_test_params)) || popup_test_window.closed || undefined === popup_test_window.closed || 0 == parseInt(popup_test_window.outerHeight) || 0 == parseInt(popup_test_window.outerWidth));
}}, browser_window_size: {width: function () {
return undefined !== window.outerWidth ? parseInt(window.outerWidth) : 0;
}, height: function () {
return undefined !== window.outerHeight ? parseInt(window.outerHeight) : 0;
}}, browser_viewport_size: {width: function () {
var e = document.documentElement, t = document.getElementsByTagName("body")[0], e = window.innerWidth || e.clientWidth || t.clientWidth;
return parseInt(e);
}, height: function () {
var e = document.documentElement, t = document.getElementsByTagName("body")[0], e = window.innerHeight || e.clientHeight || t.clientHeight;
return parseInt(e);
}}, computer_screen: {width: function () {
return undefined !== window.screen.width ? parseInt(WIMB.detect.computer_screen.device_pixel_ratio() * parseInt(window.screen.width)) : 0;
}, height: function () {
return undefined !== window.screen.height ? parseInt(WIMB.detect.computer_screen.device_pixel_ratio() * parseInt(window.screen.height)) : 0;
}, color_depth: function () {
return undefined !== window.screen.colorDepth ? parseInt(window.screen.colorDepth) : 0;
}, device_pixel_ratio: function () {
return "undefined" !== window.devicePixelRatio ? parseInt(window.devicePixelRatio) : 1;
}}, private_mode: {enabled: function () {
return new Promise(function (e) {
function t() {
e(true);
}
function n() {
e(false);
}
var o, i;
function r() {
var e = navigator.userAgent.match(/Version\/([0-9\._]+).*Safari/);
if (e) {
if (parseInt(e[1], 10) < 11) {
try {
localStorage.length || (localStorage.setItem("inPrivate", "0"), localStorage.removeItem("inPrivate")), n();
} catch (e) {
(navigator.cookieEnabled ? t : n)();
}
return true;
return;
}
try {
window.openDatabase(null, null, null, null), n();
} catch (e) {
t();
}
}
return e;
}
if (((o = /(?=.*(opera|chrome)).*/i.test(navigator.userAgent) && navigator.storage && navigator.storage.estimate) && navigator.storage.estimate().then(function (e) {
return (e.quota < 12e7 ? t : n)();
}), !o) && ((o = "MozAppearance" in document.documentElement.style) && (null == indexedDB ? t() : ((i = indexedDB.open("inPrivate")).onsuccess = n, i.onerror = t)), !o && !r() && ((i = !window.indexedDB && (window.PointerEvent || window.MSPointerEvent)) && t(), !i))) return n();
});
}}, local_ipv4_addresses: {retrieve: function () {
if (undefined !== window.WIMB.data.ipv4_addresses) return window.WIMB.data.ipv4_addresses;
}, trigger_detection: function () {
window.WIMB.data.ipv4_addresses || (window.WIMB.data.ipv4_addresses = []);
var e = window.RTCPeerConnection || window.webkitRTCPeerConnection || window.mozRTCPeerConnection;
if (undefined === e) return false;
if (e) {
function t(e) {
if (".local" === ipv4_address.slice(ipv4_address.length - 6)) return window.WIMB.data.ipv4_addresses = [];
if ("" !== ipv4_address && "0.0.0.0" !== ipv4_address) {
for (local_ipv4_address_key in window.WIMB.data.ipv4_addresses) if (window.WIMB.data.ipv4_addresses[local_ipv4_address_key] == ipv4_address) return;
window.WIMB.data.ipv4_addresses.push(ipv4_address);
}
}
var n = new e({iceServers: []});
try {
n.createDataChannel("", {reliable: false});
} catch (e) {}
function o(e) {
var o = "";
return e.split("\r\n").forEach(function (e) {
var t, n;
~e.indexOf("a=candidate") ? (n = (t = e.split(" "))[4], "host" === t[7] && (o = n)) : ~e.indexOf("c=") && (n = (t = e.split(" "))[2], o = n);
}), o;
}
n.onicecandidate = function (e) {
e.candidate && (ipv4_address = o("a=" + e.candidate.candidate), t(ipv4_address));
}, n.createOffer(function (e) {
ipv4_address = o(e.sdp), t(ipv4_address), n.setLocalDescription(e);
}, function (e) {});
}
return true;
}}, gmt_offset: function () {
z = function (e) {
return e < 10 ? "0" + e : e;
};
var e = new Date, t = 0 < e.getTimezoneOffset() ? "-" : "+", e = Math.abs(e.getTimezoneOffset());
return t + z(Math.floor(e / 60)) + ":" + z(e % 60);
}, navigator: {platform: {value: function () {
try {
navigator_platform = navigator.platform;
} catch (e) {
return null;
}
return "undefined" != typeof navigator_platform && navigator_platform ? navigator_platform : null;
}, value_human_readable: function () {
if ("undefined" == typeof NAVIGATOR_PLATFORM_MAP && console.log("Couldn't load Navigator Platform Map"), null !== (navigator_platform = WIMB.detect.navigator.platform.value())) {
try {
navigator_platform_human = NAVIGATOR_PLATFORM_MAP[navigator_platform.toLowerCase()];
} catch (e) {
return null;
}
return "undefined" != typeof navigator_platform_human && navigator_platform_human ? navigator_platform_human : null;
}
}}, oscpu: {value: function () {
try {
navigator_oscpu = navigator.oscpu;
} catch (e) {
return null;
}
return "undefined" != typeof navigator_oscpu && navigator_oscpu ? navigator_oscpu : null;
}}, vendor: {value: function () {
try {
navigator_vendor = navigator.vendor;
} catch (e) {
return null;
}
return "undefined" != typeof navigator_vendor && navigator_vendor ? navigator_vendor : null;
}}, hardware_concurrency: {value: function () {
try {
hardware_concurrency = navigator.hardwareConcurrency;
} catch (e) {
return null;
}
return "undefined" != typeof hardware_concurrency && hardware_concurrency ? hardware_concurrency : null;
}}, mime_types: {all: function () {
if (undefined === navigator.mimeTypes) return null;
if (mime_types = [], 0 < navigator.mimeTypes.length) for (var e = 0; e < navigator.mimeTypes.length; e++) {
if (mime_type = {name: null, type: null, filename: null, suffixes: [], description: null}, undefined !== navigator.mimeTypes[e].enabledPlugin) {
try {
undefined !== navigator.mimeTypes[e].enabledPlugin.name && "" != navigator.mimeTypes[e].enabledPlugin.name && (mime_name = navigator.mimeTypes[e].enabledPlugin.name.replace(/\"/g, "'"), mime_type.name = mime_name);
} catch (e) {}
try {
undefined !== navigator.mimeTypes[e].enabledPlugin.filename && "" != navigator.mimeTypes[e].enabledPlugin.filename && (mime_type.filename = navigator.mimeTypes[e].enabledPlugin.filename);
} catch (e) {}
}
try {
undefined !== navigator.mimeTypes[e].type && "" != navigator.mimeTypes[e].type && (mime_type.type = navigator.mimeTypes[e].type);
} catch (e) {}
try {
undefined !== navigator.mimeTypes[e].suffixes && "" != navigator.mimeTypes[e].suffixes && (mime_type.suffixes = navigator.mimeTypes[e].suffixes.split(","));
} catch (e) {}
try {
undefined !== navigator.mimeTypes[e].description && "" != navigator.mimeTypes[e].description && (mime_description = (mime_description = navigator.mimeTypes[e].enabledPlugin.description).replace(/\"/g, "'"), mime_type.description = mime_description);
} catch (e) {}
try {
mime_types.push(mime_type);
} catch (e) {}
}
return mime_types;
}}, navigator_ram: {gigabytes: function () {
try {
navigator_ram_gb = navigator.deviceMemory;
} catch (e) {
return null;
}
return "undefined" != typeof navigator_ram_gb && navigator_ram_gb ? navigator_ram_gb : null;
}}, max_touch_points: {value: function () {
max_touch_points = null;
try {
max_touch_points = navigator.maxTouchPoints;
} catch (e) {}
if (null === max_touch_points) try {
max_touch_points = navigator.msMaxTouchPoints;
} catch (e) {}
return "undefined" != typeof max_touch_points ? max_touch_points : null;
}}, is_brave: function () {
try {
return !!navigator.brave && !!navigator.brave.isBrave();
} catch (e) {}
return null;
}, is_arc: function () {
try {
return "" !== getComputedStyle(document.documentElement).getPropertyValue("--arc-palette-title");
} catch (e) {}
return null;
}}, ecma: function () {
return rv = null, "function" == typeof RegExp && (rv = {edition: 3, date_published: "1999-12"}), "function" == typeof Array.isArray && (rv = {edition: 5, date_published: "2009-12"}), "function" != typeof Array.find && "function" != typeof Array.findIndex || (rv = {edition: 6, date_published: "2015-06", name: "ECMAScript 2015", name_code: "ES2015"}), "function" == typeof Array.prototype.includes && (rv = {edition: 7, date_published: "2016-06", name: "ECMAScript 2016", name_code: "ES2016"}), "function" == typeof Object.entries && (rv = {edition: 8, date_published: "2017-06", name: "ECMAScript 2017", name_code: "ES2017"}), "undefined" != typeof Promise && "function" == typeof Promise.prototype.finally && (rv = {edition: 9, date_published: "2018-06", name: "ECMAScript 2018", name_code: "ES2018"}), "function" != typeof Object.fromEntries && "function" != typeof String.prototype.trimStart || (rv = {edition: 10, date_published: "2019-06", name: "ECMAScript 2019", name_code: "ES2019"}), rv = "function" == typeof BigInt ? {edition: 11, date_published: "2020-06", name: "ECMAScript 2020", name_code: "ES2020"} : rv;
}, looks_like: {simple_software_string: function () {
return rv = null, window.WIMB.data.simple_software_string || (software_detection_result = WIMB.detect.looks_like.software.detection_result(), operating_system_detection_result = WIMB.detect.looks_like.operating_system.detection_result(), software_detection_result && operating_system_detection_result ? software_detection_result.software_name && operating_system_detection_result.operating_system_name && (rv = software_detection_result.software_name + " on " + operating_system_detection_result.operating_system_name) : software_detection_result ? software_detection_result.software_name && (rv = "undefined" != typeof detection_helper_operating_system_name ? software_detection_result.software_name + " on " + detection_helper_operating_system_name : software_detection_result.software_name) : operating_system_detection_result && operating_system_detection_result.operating_system_name && (rv = "undefined" != typeof detection_helper_software_name ? detection_helper_software_name + " on " + operating_system_detection_result.operating_system_name : "It's running on " + operating_system_detection_result.operating_system_name), rv && (window.WIMB.data.simple_software_string = rv), rv);
}, software: {detection_tests: function () {
if (window.WIMB.data.software_detection_tests) return window.WIMB.data.software_detection_tests;
rv = {};
try {
navigator_vendor = WIMB.detect.navigator.vendor.value().toLowerCase();
} catch (e) {}
return true === WIMB.detect.navigator.is_brave() && (rv.is_brave = 1), true === WIMB.detect.navigator.is_arc() && (rv.is_arc = 1), window.chrome && (rv.window_chrome = 1), window.safari && (rv.window_safari = 1), window.opera && (rv.window_opr = 1), window.opera && (rv.opr = 1), navigator.storage && (rv.navigator_storage = 1), document.documentMode && (rv.document_document_mode = 1), window.StyleMedia && (rv.window_style_media = 1), String.prototype.startsWith || (rv.no_starts_with = 1), "undefined" != typeof navigator_vendor && (rv.navigator_vendor = 1, "apple" == navigator_vendor.slice(0, 5) ? rv.navigator_vendor_is_apple = 1 : "google" == navigator_vendor.slice(0, 6) ? rv.navigator_vendor_is_google = 1 : "" === navigator_vendor && (rv.navigator_vendor_is_blank = 1)), rv && (window.WIMB.data.software_detection_tests = rv), rv;
}, detection_result: function () {
return (software_detection_tests = WIMB.detect.looks_like.software.detection_tests()).navigator_vendor_is_apple && software_detection_tests.window_safari ? {software_name: "Safari", software_name_code: "safari"} : software_detection_tests.is_brave ? {software_name: "Brave", software_name_code: "brave"} : software_detection_tests.is_arc ? {software_name: "Arc", software_name_code: "arc"} : software_detection_tests.document_document_mode || software_detection_tests.window_style_media ? {software_name: "Internet Explorer", software_name_code: "internet-explorer"} : software_detection_tests.window_opr || software_detection_tests.opr ? {software_name: "Opera", software_name_code: "opera"} : WIMB.detect.navigator.oscpu.value() || 1 === software_detection_tests.navigator_vendor_is_blank ? {software_name: "Firefox", software_name_code: "firefox"} : null;
}}, operating_system: {detection_tests: function () {
if (window.WIMB.data.operating_system_detection_tests) return window.WIMB.data.operating_system_detection_tests;
rv = {};
var e = "";
try {
e = WIMB.detect.navigator.platform.value().toLowerCase();
} catch (e) {}
null !== e && ("macintel" == e.slice(0, 8) ? 0 < WIMB.detect.navigator.max_touch_points.value() ? rv.platform = "ios" : rv.platform = "macos" : "win" == e.slice(0, 3) ? rv.platform = "windows" : "linux" == e.slice(0, 5) || "suse" == e.slice(0, 4) || "ubuntu" == e.slice(0, 6) ? rv.platform = "linux" : "ios" == e.slice(0, 3) || "iphone" == e.slice(0, 6) || "ipad" == e.slice(0, 4) || "ipod" == e.slice(0, 4) || "iphone" == e.slice(-6) || "ipad" == e.slice(-4) || "ipod" == e.slice(-4) ? rv.platform = "ios" : "general mobile device" == e ? rv.platform = "ios_gmd" : "android" == e.slice(0, 7) ? rv.platform = "android" : "chromium os" == e.slice(0, 11) ? rv.platform = "chromium_os" : "freebsd" == e.slice(0, 7) ? rv.platform = "freebsd" : "openbsd" == e.slice(0, 7) && (rv.platform = "openbsd"));
try {
navigator_vendor = WIMB.detect.navigator.vendor.value().toLowerCase();
} catch (e) {}
return "undefined" != typeof navigator_vendor && "apple" == navigator_vendor.slice(0, 5) && (rv.vendor = "apple"), null !== (navigator_oscpu = WIMB.detect.navigator.oscpu.value()) && (-1 !== navigator_oscpu.search(/windowsce/i) ? rv.oscpu = "windows_ce" : -1 !== navigator_oscpu.search(/windows/i) ? rv.oscpu = "windows" : -1 !== navigator_oscpu.search(/mac ?os/i) ? rv.oscpu = "macos" : -1 !== navigator_oscpu.search(/linux/i) && (rv.oscpu = "linux")), rv && (window.WIMB.data.operating_system_detection_tests = rv), rv;
}, detection_result: function () {
if ((operating_system_detection_tests = WIMB.detect.looks_like.operating_system.detection_tests()).platform) {
if ("macos" === operating_system_detection_tests.platform) return {operating_system_name: "macOS", operating_system_name_code: "macos"};
if ("windows" === operating_system_detection_tests.platform) return {operating_system_name: "Windows", operating_system_name_code: "windows"};
if ("ios" === operating_system_detection_tests.platform || "ios_gmd" === operating_system_detection_tests.platform) return {operating_system_name: "iOS", operating_system_name_code: "ios"};
if ("linux" === operating_system_detection_tests.platform) return {operating_system_name: "Linux", operating_system_name_code: "linux"};
if ("android" === operating_system_detection_tests.platform) return {operating_system_name: "Android", operating_system_name_code: "android"};
if ("freebsd" === operating_system_detection_tests.platform) return {operating_system_name: "FreeBSD", operating_system_name_code: "freebsd"};
if ("openbsd" === operating_system_detection_tests.platform) return {operating_system_name: "OpenBSD", operating_system_name_code: "openbsd"};
}
if (operating_system_detection_tests.vendor && "apple" === operating_system_detection_tests.platform && 0 < WIMB.detect.navigator.max_touch_points.value()) return {operating_system_name: "iOS", operating_system_name_code: "ios"};
if (operating_system_detection_tests.oscpu) {
if ("macos" === operating_system_detection_tests.oscpu) return {operating_system_name: "macOS", operating_system_name_code: "macos"};
operating_system_detection_tests.oscpu;
}
return null;
}}}, webgl: {canvas_div_id: "wimb_library_canvas", canvas: null, canvas_webgl: null, _init: function () {
var e;
null === document.getElementById(WIMB.detect.webgl.canvas_div_id) && ((e = document.createElement("canvas")).id = WIMB.detect.webgl.canvas_div_id, e.style = "position: absolute; height: 1px; width: 1px;", null !== document.body && document.body.appendChild(e), WIMB.detect.webgl.canvas = e, WIMB.detect.webgl.canvas_webgl = e.getContext("webgl"));
}, vendor: function () {
WIMB.detect.webgl._init();
var e = null;
try {
var t = WIMB.detect.webgl.canvas_webgl.getExtension("WEBGL_debug_renderer_info"), e = WIMB.detect.webgl.canvas_webgl.getParameter(t.UNMASKED_VENDOR_WEBGL);
} catch (e) {}
return e;
}, renderer: function () {
WIMB.detect.webgl._init();
var e = null;
try {
var t = WIMB.detect.webgl.canvas_webgl.getExtension("WEBGL_debug_renderer_info"), e = WIMB.detect.webgl.canvas_webgl.getParameter(t.UNMASKED_RENDERER_WEBGL);
} catch (e) {}
return e;
}}, client_hints: {frontend: {available: function () {
if (undefined === window.WIMB.data.client_hints_frontend_available) return undefined !== navigator.userAgentData ? (window.WIMB.data.client_hints_uadata = navigator.userAgentData, window.WIMB.data.client_hints_frontend_available = true, (async () => {
var e = await navigator.userAgentData.getHighEntropyValues(["architecture", "bitness", "model", "platform", "platformVersion", "uaFullVersion"]);
window.WIMB.data.client_hints_frontend_architecture = e.architecture, window.WIMB.data.client_hints_frontend_bitness = e.bitness, window.WIMB.data.client_hints_frontend_model = e.model, window.WIMB.data.client_hints_frontend_platform = e.platform, window.WIMB.data.client_hints_frontend_platform_version = e.platformVersion, window.WIMB.data.client_hints_frontend_ua_full_version = e.uaFullVersion;
})(), window.WIMB.data.client_hints_frontend_brands = window.WIMB.data.client_hints_uadata.brands, true) : window.WIMB.data.client_hints_frontend_available = false;
}, architecture: function () {
return window.WIMB.data.client_hints_frontend_architecture;
}, bitness: function () {
return window.WIMB.data.client_hints_frontend_bitness;
}, raw_brands: function () {
return window.WIMB.data.client_hints_frontend_brands;
}, brands_string: function () {
if (undefined !== window.WIMB.data.client_hints_frontend_brands) {
brands_string = "";
for (var e = 0; e < window.WIMB.data.client_hints_frontend_brands.length; e++) brands_string = brands_string + window.WIMB.data.client_hints_frontend_brands[e].brand + ": " + window.WIMB.data.client_hints_frontend_brands[e].version + ". ";
return (brands_string = (brands_string = (brands_string = (brands_string = brands_string.replace(/\"/g, "'")).replace(/\\/g, " ")).replace(/;/g, " ")).replace(/ +/g, " ")).trim();
}
}, model: function () {
return window.WIMB.data.client_hints_frontend_model;
}, platform: function () {
return window.WIMB.data.client_hints_frontend_platform;
}, platform_version: function () {
return window.WIMB.data.client_hints_frontend_platform_version;
}, ua_full_version: function () {
return window.WIMB.data.client_hints_frontend_ua_full_version;
}}}, addons: {get_all_names: function () {
return addons = [], WIMB.detect.addons.adblock.enabled() && addons.push({code: "adblocker", name: detect_addon_adblocker, version: null}), undefined !== WIMB.detect.addons.silverlight && WIMB.detect.addons.silverlight.enabled() && addons.push({code: "silverlight", name: "Microsoft Silverlight", version: WIMB.detect.addons.silverlight.version()}), addons;
}, adblock: {ad_div_id: "ads-advert-banner", _init: function () {
var e = document.createElement("div");
e.id = WIMB.detect.addons.adblock.ad_div_id, e.className = "ads--square ads--top adFrame", null !== document.body && document.body.appendChild(e);
}, enabled: function () {
return WIMB.detect.addons.adblock._init(), advert_id = document.getElementById(WIMB.detect.addons.adblock.ad_div_id), "none" == WIMB_UTIL.get_style(advert_id, "display");
}}, silverlight: {enabled: function () {
return null;
}}}}, version_check: {}}, WIMB_UTIL = (window.WIMB.init(), window.WIMB.meta.js_src_url = document.currentScript.src, WIMB_UTIL || {version: "1.0", get_style: function (e, t) {
return rv = "", e.currentStyle ? rv = e.currentStyle[t] : window.getComputedStyle && (rv = document.defaultView.getComputedStyle(e, null).getPropertyValue(t)), rv;
}, decode_java_version: function (e) {
if (!e) return false;
var t = e.split("."), n = [], o = "";
for (v = "1" == t[0] && t[1] <= "4" ? 0 : 1; v < t.length; v++) false !== t[v].search(/^[0-9]+[_]+[0-9]*$/) ? (fragment_fragments = t[v].split("_"), n.push(parseInt(fragment_fragments[0])), undefined !== fragment_fragments[1] && (o = parseInt(fragment_fragments[1]))) : (n.push(t[v]), v++);
return {version: n, update: o};
}});
var WIMB_CAPABILITIES = WIMB_CAPABILITIES || {capabilities: {}, add: function (e, t, o) {
o ? (WIMB_CAPABILITIES.capabilities[o] || (WIMB_CAPABILITIES.capabilities[o] = {}), WIMB_CAPABILITIES.capabilities[o][e] = t) : WIMB_CAPABILITIES.capabilities[e] = t;
}, add_update: function (e, t) {
WIMB_CAPABILITIES.add(e, t);
}, get_as_json_string: function () {
return undefined === WIMB_CAPABILITIES || undefined === WIMB_CAPABILITIES.capabilities.javascript ? "{}" : encodeURIComponent(JSON.stringify(WIMB_CAPABILITIES.capabilities));
}}, add_row_to_tech_details = function (e) {
document.getElementById("technical-details") && (document.getElementById("technical-details").innerHTML = document.getElementById("technical-details").innerHTML + '<li class="tech-detail-item"' + (e.title ? 'title="' + e.title + '"' : "") + '><div class="key">' + (undefined !== e.link ? '<a href="' + e.link + '">' : "") + e.key + (undefined !== e.link ? "</a>" : "") + '</div><div class="value">' + (undefined !== e.link ? '<a href="' + e.link + '">' : "") + e.value + (undefined !== e.link ? "</a>" : "") + "</div></li>");
}, do_capabilities_detection = function () {
try {
document.querySelector("#your-browsers-settings").classList.remove("no-javascript");
} catch (e) {}
try {
document.querySelector("#javascript-detection .detection-message").innerHTML = detect_yes + " - " + detect_javascript_is_enabled;
} catch (e) {}
if (WIMB_CAPABILITIES.add("javascript", "1"), WIMB.detect.cookies.enabled()) {
try {
document.querySelector("#cookies-detection .detection-message").innerHTML = detect_yes + " - " + detect_cookies_are_enabled;
} catch (e) {}
WIMB_CAPABILITIES.add("cookies", "1");
} else {
try {
document.querySelector("#cookies-detection .detection-message").innerHTML = detect_no + " - " + detect_cookies_not_enabled;
} catch (e) {}
WIMB_CAPABILITIES.add("cookies", "0");
}
try {
document.querySelector("#third-party-cookies-detection .detection-message").innerHTML = please_wait;
} catch (e) {}
if (WIMB.detect.cookies_third_party.trigger_set_cookie("https://" + window.third_party_domain + "/detect/are-third-party-cookies-enabled-set-cookie"), cookie_check_interval = setInterval(function () {
if (1 == WIMB.detect.cookies_third_party.enabled()) {
try {
document.querySelector("#third-party-cookies-detection .detection-message").innerHTML = detect_yes + " - " + detect_third_party_cookies_are_enabled;
} catch (e) {}
WIMB_CAPABILITIES.add("cookies_third_party", "1"), clearInterval(cookie_check_interval);
} else if (0 == WIMB.detect.cookies_third_party.enabled()) {
try {
document.querySelector("#third-party-cookies-detection .detection-message").innerHTML = detect_no + " - " + detect_third_party_cookies_not_enabled;
} catch (e) {}
WIMB_CAPABILITIES.add("cookies_third_party", "0"), clearInterval(cookie_check_interval);
}
}, 50), setTimeout(function () {
try {
document.querySelector("#third-party-cookies-detection .detection-message").innerHTML == please_wait && (document.querySelector("#third-party-cookies-detection .detection-message").innerHTML = detect_try_reloading, WIMB_CAPABILITIES.add("cookies_third_party", "-1"));
} catch (e) {}
clearInterval(cookie_check_interval);
}, 4e3), WIMB.detect.local_ipv4_addresses.trigger_detection(), setTimeout(function () {
if (null === (local_ip_div = document.querySelector("#local-ip-address .detected-column .detected-column-text"))) return true;
local_ip_div.innerHTML = please_wait;
var e = WIMB.detect.local_ipv4_addresses.retrieve();
if (local_ipv4_html = "", 0 < e.length) {
for (local_ipv4_address_key in e) local_ipv4_html = local_ipv4_html + e[local_ipv4_address_key] + "<br />", WIMB_CAPABILITIES.add("ip_" + local_ipv4_address_key, e[local_ipv4_address_key], "local_ipv4_addresses");
try {
document.querySelector("#local-ip-address .detected-column .detected-column-text").innerHTML = local_ipv4_html;
} catch (e) {}
} else document.querySelector("#local-ip-address .detected-column .detected-column-text").style.display = "none", document.querySelector("#local-ip-address .detected-column #local-ip-address-detection-blocked").style.display = "block";
}, 1e3), WIMB.detect.computer_screen.width() && WIMB.detect.computer_screen.height()) {
WIMB_CAPABILITIES.add("computer_screen_width", WIMB.detect.computer_screen.width()), WIMB_CAPABILITIES.add("computer_screen_height", WIMB.detect.computer_screen.height()), WIMB_CAPABILITIES.add("computer_screen_color_depth", WIMB.detect.computer_screen.color_depth());
try {
document.getElementById("computer-screen-detection").innerHTML = '<span class="detection-message">' + WIMB.detect.computer_screen.width() + " <span>x</span> " + WIMB.detect.computer_screen.height() + " " + detect_pixels + "<br />" + WIMB.detect.computer_screen.color_depth() + " bit</span>";
} catch (e) {}
}
function t() {
if (WIMB_CAPABILITIES.add_update("browser_window_size_width", WIMB.detect.browser_window_size.width()), WIMB_CAPABILITIES.add_update("browser_window_size_height", WIMB.detect.browser_window_size.height()), 0 == WIMB.detect.browser_window_size.width() || 0 == WIMB.detect.browser_window_size.height()) try {
var e = document.getElementById("browser-window-size");
e.parentNode.removeChild(e);
} catch (e) {} else try {
document.getElementById("browser-window-size-detection").innerHTML = '<span class="detection-message">' + WIMB.detect.browser_window_size.width() + " x " + WIMB.detect.browser_window_size.height() + " " + detect_pixels + "</span>";
} catch (e) {}
}
t(), setTimeout(function () {
t();
}, 2e3), window.addEventListener("resize", function (e) {
t();
}), setTimeout(function () {
if (0 < (browser_addons = WIMB.detect.addons.get_all_names()).length) {
for (browser_addon_key in browser_addons) {
WIMB_CAPABILITIES.add(browser_addons[browser_addon_key].code, browser_addons[browser_addon_key].version || "true", "browser_addons");
try {
document.getElementById("detected-addons-ul").insertAdjacentHTML("beforeend", "<li>" + browser_addons[browser_addon_key].name + "</li>");
} catch (e) {}
}
try {
document.getElementById("detected-addons").style.display = "flex";
} catch (e) {}
}
}, 1e3), WIMB.detect.computer_screen.device_pixel_ratio() && (WIMB_CAPABILITIES.add("device_pixel_ratio", WIMB.detect.computer_screen.device_pixel_ratio()), add_row_to_tech_details({key: detect_pixel_ratio, value: WIMB.detect.computer_screen.device_pixel_ratio()})), WIMB_CAPABILITIES.add("browser_gmt_offset", WIMB.detect.gmt_offset()), add_row_to_tech_details({key: detect_gmt_offset, value: WIMB.detect.gmt_offset()}), navigator_platform = WIMB.detect.navigator.platform.value(), navigator_platform_human = WIMB.detect.navigator.platform.value_human_readable(), null !== navigator_platform && (WIMB_CAPABILITIES.add("navigator_platform", navigator_platform), null !== navigator_platform_human ? add_row_to_tech_details({key: detect_platform, title: navigator_platform, value: navigator_platform_human, link: "/detect/navigator-platform"}) : add_row_to_tech_details({key: detect_platform, value: navigator_platform, link: "/detect/navigator-platform"})), null !== (navigator_oscpu = WIMB.detect.navigator.oscpu.value()) && (WIMB_CAPABILITIES.add("navigator_oscpu", navigator_oscpu.replace('"', "")), add_row_to_tech_details({key: detect_oscpu, value: navigator_oscpu})), null !== (navigator_vendor = WIMB.detect.navigator.vendor.value()) && (WIMB_CAPABILITIES.add("navigator_vendor", navigator_vendor), add_row_to_tech_details({key: detect_vendor, value: navigator_vendor})), null !== (navigator_hardware_concurrency = WIMB.detect.navigator.hardware_concurrency.value()) && (WIMB_CAPABILITIES.add("navigator_hardware_concurrency", hardware_concurrency), add_row_to_tech_details({key: detect_hardware_concurrency, value: navigator_hardware_concurrency})), null !== (navigator_mime_types = WIMB.detect.navigator.mime_types.all()) && WIMB_CAPABILITIES.add("navigator_mime_types", navigator_mime_types), null !== (navigator_ram_gb = WIMB.detect.navigator.navigator_ram.gigabytes()) && (WIMB_CAPABILITIES.add("navigator_ram_gb", navigator_ram_gb), add_row_to_tech_details({key: detect_ram_gb, value: navigator_ram_gb + " GB"})), null !== (max_touch_points = WIMB.detect.navigator.max_touch_points.value()) && (WIMB_CAPABILITIES.add("max_touch_points", max_touch_points), add_row_to_tech_details({key: detect_max_touch_points, value: max_touch_points})), null !== (webgl_vendor = WIMB.detect.webgl.vendor()) && (WIMB_CAPABILITIES.add("webgl_vendor", webgl_vendor), add_row_to_tech_details({key: detect_webgl_vendor, value: webgl_vendor})), webgl_renderer = WIMB.detect.webgl.renderer(), null !== webgl_vendor && (WIMB_CAPABILITIES.add("webgl_renderer", webgl_renderer), add_row_to_tech_details({key: detect_webgl_renderer, value: webgl_renderer})), WIMB.detect.client_hints.frontend.available() && setTimeout(function () {
WIMB_CAPABILITIES.add("architecture", WIMB.detect.client_hints.frontend.architecture(), "js_ch"), WIMB_CAPABILITIES.add("bitness", WIMB.detect.client_hints.frontend.bitness(), "js_ch"), WIMB_CAPABILITIES.add("brands_string", WIMB.detect.client_hints.frontend.brands_string(), "js_ch"), WIMB_CAPABILITIES.add("model", WIMB.detect.client_hints.frontend.model(), "js_ch"), WIMB_CAPABILITIES.add("platform", WIMB.detect.client_hints.frontend.platform(), "js_ch"), WIMB_CAPABILITIES.add("platform_version", WIMB.detect.client_hints.frontend.platform_version(), "js_ch"), WIMB_CAPABILITIES.add("ua_full_version", WIMB.detect.client_hints.frontend.ua_full_version(), "js_ch");
}, 1e3), software_detection_tests = WIMB.detect.looks_like.software.detection_tests(), 0 < Object.keys(software_detection_tests).length && software_detection_tests.constructor === Object && WIMB_CAPABILITIES.add("software_detection_tests", software_detection_tests), operating_system_detection_tests = WIMB.detect.looks_like.operating_system.detection_tests(), 0 < Object.keys(operating_system_detection_tests).length && operating_system_detection_tests.constructor === Object && WIMB_CAPABILITIES.add("operating_system_detection_tests", operating_system_detection_tests), null !== (ecma = WIMB.detect.ecma()) && (WIMB_CAPABILITIES.add("ecma_edition", ecma.edition), ecma.name_code ? add_row_to_tech_details({key: detect_ecma_version, value: ecma.edition + " (" + ecma.name_code + ")", link: "/detect/ecma-script-version"}) : add_row_to_tech_details({key: detect_ecma_version, value: ecma.edition, link: "/detect/ecma-script-version"}));
var e = false, o = (null !== (software_detection_result = WIMB.detect.looks_like.software.detection_result()) && null !== software_detection_result.software_name_code && "undefined" != typeof detection_helper_software_name_code && detection_helper_software_name_code !== software_detection_result.software_name_code && (e = true), false);
null !== (operating_system_detection_result = WIMB.detect.looks_like.operating_system.detection_result()) && "undefined" != typeof detection_helper_operating_system_name_code && detection_helper_operating_system_name_code !== operating_system_detection_result.operating_system_name_code && (o = true), true !== e && true !== o || document.getElementById("readout-primary") && (looks_like_simple_software_string = WIMB.detect.looks_like.simple_software_string(), e = '<li id="primary-browser-detection-frontend"><h1>' + detect_looks_like + '</h1><div class="string-major">' + looks_like_simple_software_string + "</li>", document.getElementById("primary-browser-detection").insertAdjacentHTML("afterbegin", e), document.getElementById("primary-browser-detection-backend").insertAdjacentHTML("beforeend", "<p>This conflict might be causing other websites to not detect your web browser properly.</p>"));
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment