API Name |
---|
AudioParam.setValueAtTime |
CanvasRenderingContext2D.arc |
CanvasRenderingContext2D.fill |
CanvasRenderingContext2D.fillText |
DynamicsCompressorNode.connect |
Geolocation.getCurrentPosition |
Geolocation.watchPosition |
Navigator.appCodeName |
Navigator.appName |
Navigator.cookieEnabled |
Navigator.doNotTrack |
Navigator.getBattery |
Navigator.hardwareConcurrency |
Navigator.javaEnabled |
Navigator.language |
Navigator.languages |
Navigator.mimeTypes |
Navigator.platform |
Navigator.plugins |
Navigator.productSub |
Navigator.vendor |
Navigator.vendorSub |
OfflineAudioContext.createDynamicsCompressor |
OfflineAudioContext.createOscillator |
OscillatorNode.frequency |
Screen.colorDepth |
Screen.height |
Screen.orientation |
Screen.pixelDepth |
Screen.width |
WebGL2RenderingContext.canvas |
WebGL2RenderingContext.getExtension |
WebGL2RenderingContext.getParameter |
WebGLRenderingContext.canvas |
Window.devicePixelRatio |
API Name |
---|
Client.postMessage |
DedicatedWorkerGlobalScope.postMessage |
Document.cookie |
IDBObjectStore.add |
IDBObjectStore.put |
MessagePort.postMessage |
Navigator.sendBeacon |
RTCDataChannel.send |
ServiceWorker.postMessage |
WebSocket.send |
Window.indexedDB |
Window.localStorage |
Window.openDatabase |
Window.postMessage |
Window.sessionStorage |
Worker.postMessage |
XMLHttpRequest.send |
API Name | Documentation | Proof | Deployed(T/F) |
---|---|---|---|
AudioBuffer.getChannelData | MDN | 1 | T |
BatteryManager.charging | MDN | 1 | T |
BatteryManager.chargingTime | MDN | 1 | T |
BatteryManager.dischargingTime | MDN | 1 | T |
BatteryManager.level | MDN | 1, 2 | T |
CSSRuleList.length | MDN | 1, 2 | F |
CSSStyleDeclaration.cssText | MDN | 1, 2 | F |
CSSStyleDeclaration.getPropertyValue | MDN | 1, 2 | F |
CSSStyleDeclaration.setProperty | MDN | 1, 2 | F |
CSSStyleSheet.cssRules | MDN | 1, 2 | F |
CSSStyleSheet.insertRule | MDN | 1, 2 | F |
CanvasGradient.addColorStop | MDN | 1, 2 | T |
CanvasRenderingContext2D.beginPath | MDN | 1, 2 | T |
CanvasRenderingContext2D.bezierCurveTo | MDN | 1, 2 | T |
CanvasRenderingContext2D.canvas | MDN | 1, 2 | T |
CanvasRenderingContext2D.clearRect | MDN | 1, 2 | T |
CanvasRenderingContext2D.clip | MDN | 1, 2 | T |
CanvasRenderingContext2D.closePath | MDN | 1, 2 | T |
CanvasRenderingContext2D.createLinearGradient | MDN | 1, 2 | T |
CanvasRenderingContext2D.createRadialGradient | MDN | 1, 2 | T |
CanvasRenderingContext2D.ellipse | MDN | 1, 2 | T |
CanvasRenderingContext2D.fillRect | MDN | 1, 2 | T |
CanvasRenderingContext2D.getImageData | MDN | 1, 2 | T |
CanvasRenderingContext2D.isPointInPath | MDN | 1, 2 | T |
CanvasRenderingContext2D.lineTo | MDN | 1, 2 | T |
CanvasRenderingContext2D.measureText | MDN | 1, 2 | T |
CanvasRenderingContext2D.moveTo | MDN | 1, 2 | T |
CanvasRenderingContext2D.quadraticCurveTo | MDN | 1, 2 | T |
CanvasRenderingContext2D.rect | MDN | 1, 2 | T |
CanvasRenderingContext2D.restore | MDN | 1, 2 | T |
CanvasRenderingContext2D.rotate | MDN | 1, 2 | T |
CanvasRenderingContext2D.save | MDN | 1, 2 | T |
CanvasRenderingContext2D.stroke | MDN | 1, 2 | T |
CanvasRenderingContext2D.strokeText | MDN | 1, 2 | T |
CanvasRenderingContext2D.translate | MDN | 1, 2 | T |
Crypto.getRandomValues | MDN | 1 | T |
Crypto.subtle | MDN | 1 | T |
DOMRect.width | MDN | 1 | F |
DOMRect.y | MDN | 1 | F |
DeviceMotionEvent.rotationRate | MDN | 1, 2 | T |
DeviceMotionEventRotationRate.beta | MDN | 1, 2 | T |
DeviceMotionEventRotationRate.gamma | MDN | 1, 2 | T |
DeviceOrientationEvent.alpha | MDN | 1, 2 | T |
DeviceOrientationEvent.beta | MDN | 1, 2 | T |
DeviceOrientationEvent.gamma | MDN | 1, 2 | T |
DynamicsCompressorNode.attack | MDN | 1 | T |
DynamicsCompressorNode.knee | MDN | 1 | T |
DynamicsCompressorNode.ratio | MDN | 1 | T |
DynamicsCompressorNode.reduction | MDN | 1 | T |
DynamicsCompressorNode.release | MDN | 1 | T |
DynamicsCompressorNode.threshold | MDN | 1 | T |
GainNode.gain | MDN | 1 | T |
Geolocation.clearWatch | MDN | 1 | T |
HTMLCanvasElement.getContext | MDN | 1 | T |
HTMLCanvasElement.height | MDN | 1 | T |
HTMLCanvasElement.toDataURL | MDN | 1 | T |
HTMLCanvasElement.width | MDN | 1 | T |
History.length | MDN | N/A | T |
IdleDeadline.timeRemaining | MDN | 1 | F |
ImageData.data | MDN | 1, 2 | T |
IntersectionObserver.disconnect | MDN | 1, 2 | F |
IntersectionObserver.observe | MDN | 1, 2 | F |
IntersectionObserver.unobserve | MDN | 1, 2 | F |
IntersectionObserverEntry.intersectionRatio | MDN | 1, 2 | F |
IntersectionObserverEntry.isIntersecting | MDN | 1, 2 | F |
IntersectionObserverEntry.target | MDN | 1, 2 | F |
MediaDevices.enumerateDevices | MDN | 1 | T |
MediaDevices.getDisplayMedia | MDN | 1 | T |
MediaQueryList.addListener | MDN | 1 | T |
MediaQueryList.matches | MDN | 1 | T |
MediaSource.readyState | MDN | 1 | F |
MemoryInfo.jsHeapSizeLimit | MDN | 1 | T |
MemoryInfo.totalJSHeapSize | MDN | 1 | T |
MemoryInfo.usedJSHeapSize | MDN | 1 | T |
MimeTypeArray.item | MDN | 1 | T |
MimeTypeArray.length | MDN | 1 | T |
MimeTypeArray.namedItem | MDN | 1 | T |
MutationObserver.observe | MDN | 1 | F |
MutationRecord.addedNodes | MDN | 1 | F |
MutationRecord.attributeName | MDN | 1 | F |
MutationRecord.target | MDN | 1 | F |
Navigator.appVersion | MDN | 1, 2 | T |
Navigator.connection | MDN | 1, 2 | T |
Navigator.credentials | MDN | 1, 2 | T |
Navigator.geolocation | MDN | 1, 2 | T |
Navigator.getGamepads | MDN | 1, 2 | T |
Navigator.getUserMedia | MDN | 1, 2 | T |
Navigator.keyboard | MDN | 1, 2 | T |
Navigator.locks | MDN | 1, 2 | T |
Navigator.maxTouchPoints | MDN | 1, 2 | T |
Navigator.mediaCapabilities | MDN | 1, 2 | T |
Navigator.mediaDevices | MDN | 1, 2 | T |
Navigator.onLine | MDN | 1, 2 | T |
Navigator.permissions | MDN | 1, 2 | T |
Navigator.product | MDN | 1, 2 | T |
Navigator.serviceWorker | MDN | 1, 2 | T |
Navigator.unregisterProtocolHandler | MDN | 1, 2 | T |
Navigator.userAgent | MDN | 1, 2 | T |
Navigator.userAgentData | MDN | 1, 2 | T |
Navigator.vibrate | MDN | 1, 2 | T |
Navigator.webdriver | MDN | 1, 2 | T |
Navigator.webkitGetUserMedia | MDN | 1, 2 | T |
Navigator.webkitPersistentStorage | MDN | 1, 2 | T |
Navigator.webkitTemporaryStorage | MDN | 1, 2 | T |
Navigator.xr | MDN | 1, 2 | T |
NetworkInformation.downlink | MDN | 1 | T |
NetworkInformation.effectiveType | MDN | 1 | T |
NetworkInformation.rtt | MDN | 1 | T |
NetworkInformation.saveData | MDN | 1 | T |
NetworkInformation.type | MDN | 1 | T |
OfflineAudioCompletionEvent.renderedBuffer | MDN | 1 | T |
OfflineAudioContext.startRendering | MDN | 1 | T |
Performance.measure | MDN | 1 | F |
Performance.memory | MDN | 1 | T |
Performance.now | MDN | 1, 2, 3 | F |
Performance.timeOrigin | MDN | 1 | T |
Performance.timing | MDN | 1 | T |
PerformanceObserverEntryList.getEntries | MDN | 1 | F |
PerformanceResourceTiming.connectStart | MDN | 1 | T |
PerformanceResourceTiming.fetchStart | MDN | N/A | T |
PerformanceResourceTiming.responseEnd | MDN | N/A | T |
PerformanceResourceTiming.responseStart | MDN | N/A | T |
PerformanceResourceTiming.toJSON | MDN | N/A | T |
PerformanceTiming.connectEnd | MDN | 1 | T |
PerformanceTiming.domainLookupEnd | MDN | 1 | T |
PerformanceTiming.fetchStart | MDN | N/A | T |
PerformanceTiming.loadEventStart | MDN | N/A | T |
PerformanceTiming.navigationStart | MDN | N/A | T |
PerformanceTiming.responseStart | MDN | N/A | T |
PermissionStatus.state | MDN | 1 | F |
PluginArray.item | MDN | 1 | T |
PluginArray.length | MDN | 1 | T |
PluginArray.namedItem | MDN | 1 | T |
PluginArray.refresh | MDN | 1 | T |
PresentationRequest.getAvailability | MDN | 1, 2 | F |
ProgressEvent.loaded | MDN | 1 | F |
ProgressEvent.total | MDN | 1 | F |
RTCSessionDescription.sdp | MDN | 1 | F |
Screen.availHeight | MDN | 1 | T |
Screen.availLeft | MDN | 1 | T |
Screen.availTop | MDN | 1 | T |
Screen.availWidth | MDN | 1 | T |
Screen.left | MDN | 1 | T |
ScreenOrientation.angle | MDN | 1, 2 | T |
ScreenOrientation.lock | MDN | 1 | T |
ScreenOrientation.type | MDN | 1, 2 | T |
ScreenOrientation.unlock | MDN | 1 | T |
ServiceWorkerContainer.controller | MDN | 1 | F |
SourceBuffer.appendBuffer | MDN | 1, 2 | F |
SourceBuffer.buffered | MDN | 1, 2 | F |
SourceBuffer.updating | MDN | 1, 2 | F |
TextMetrics.fontBoundingBoxAscent | MDN | 1, 2 | T |
TextMetrics.width | MDN | 1, 2 | T |
TimeRanges.end | MDN | 1 | F |
TimeRanges.length | MDN | 1 | F |
TimeRanges.start | MDN | 1 | F |
WebGL2RenderingContext.attachShader | MDN | 1, 2 | T |
WebGL2RenderingContext.bindBuffer | MDN | 1, 2 | T |
WebGL2RenderingContext.bindTexture | MDN | 1, 2 | T |
WebGL2RenderingContext.bufferData | MDN | 1, 2 | T |
WebGL2RenderingContext.compileShader | MDN | 1, 2 | T |
WebGL2RenderingContext.createBuffer | MDN | 1, 2 | T |
WebGL2RenderingContext.createProgram | MDN | 1, 2 | T |
WebGL2RenderingContext.createShader | MDN | 1, 2 | T |
WebGL2RenderingContext.createTexture | MDN | 1, 2 | T |
WebGL2RenderingContext.deleteProgram | MDN | 1, 2 | T |
WebGL2RenderingContext.drawArrays | MDN | 1, 2 | T |
WebGL2RenderingContext.getContextAttributes | MDN | 1, 2 | T |
WebGL2RenderingContext.getShaderPrecisionFormat | MDN | 1, 2 | T |
WebGL2RenderingContext.getSupportedExtensions | MDN | 1, 2 | T |
WebGL2RenderingContext.isContextLost | MDN | 1, 2 | T |
WebGL2RenderingContext.isEnabled | MDN | 1 , 2 | T |
WebGL2RenderingContext.shaderSource | MDN | 1, 2 | T |
WebGL2RenderingContext.texImage2D | MDN | 1, 2 | T |
WebGL2RenderingContext.texParameteri | MDN | 1, 2 | T |
WebGLLoseContext.loseContext | W3 | 1, 2 | T |
WebGLRenderingContext.createBuffer | MDN | 1, 2 | T |
WebGLRenderingContext.drawArrays | MDN | 1, 2 | T |
WebGLRenderingContext.getExtension | MDN | 1, 2 | T |
WebGLRenderingContext.getParameter | MDN | 1, 2 | T |
WebGLRenderingContext.getShaderPrecisionFormat | MDN | 1, 2 | T |
WebGLShaderPrecisionFormat.precision | MDN | 1, 2 | T |
WebGLShaderPrecisionFormat.rangeMax | MDN | 1, 2 | T |
Window.applicationCache | MDN | 1 | T |
Window.clearTimeout | MDN | 1 | T |
Window.clientInformation | MDN | 1 | T |
Window.closed | MDN | 1 | T |
Window.crypto | MDN | 1 | T |
Window.defaultstatus | MDN | 1 | T |
Window.document | MDN | 1 | T |
Window.event | MDN | 1 | T |
Window.external | MDN | 1 | T |
Window.fetch | MDN | 1 | T |
Window.frames | MDN | 1 | T |
Window.getComputedStyle | MDN | 1 | T |
Window.history | MDN | 1 | T |
Window.innerHeight | MDN | 1, 2 | T |
Window.innerWidth | MDN | 1, 2 | T |
Window.length | MDN | 1 | T |
Window.location | MDN | 1 | T |
Window.locationbar | MDN | 1 | T |
Window.matchMedia | MDN | 1 | T |
Window.name | MDN | 1 | T |
Window.navigator | MDN | 1 | T |
Window.onerror | MDN | 1 | T |
Window.ontouchstart | MDN | 1 | T |
Window.open | MDN | 1 | T |
Window.opener | MDN | 1 | T |
Window.orientation | MDN | 1 | T |
Window.outerHeight | MDN | 1, 2 | T |
Window.outerWidth | MDN | 1, 2 | T |
Window.pageXOffset | MDN | 1 | T |
Window.pageYOffset | MDN | 1 | T |
Window.parent | MDN | 1 | T |
Window.performance | MDN | 1 | T |
Window.requestAnimationFrame | MDN | 1 | T |
Window.requestIdleCallback | MDN | 1 | T |
Window.screen | MDN | 1 | T |
Window.screenLeft | MDN | 1 | T |
Window.screenTop | MDN | 1 | T |
Window.screenX | MDN | 1 | T |
Window.screenY | MDN | 1 | T |
Window.self | MDN | 1 | T |
Window.setInterval | MDN | 1 | T |
Window.setTimeout | MDN | 1 | T |
Window.speechSynthesis | MDN | 1 | T |
Window.top | MDN | 1 | T |
Window.visualViewport | MDN | 1 | T |
Window.webkitRequestFileSystem | MDN | 1 | T |
Window.window | MDN | 1 | T |
API Name | Documentation | Crawled Script |
---|---|---|
TextDecoder.decode | MDN | Obfuscation |
TextEncoder.encode | MDN | Obfuscation |
Window.atob | MDN | Obfuscation |
Window.btoa | MDN | Obfuscation |
API Name | Documentation | Proof | Deployed(T/F) |
---|---|---|---|
BarProp.visible | MDN | N/A | F |
CanvasRenderingContext2D.font | MDN | 1 | T |
CanvasRenderingContext2D.scale | MDN | 1 | T |
CanvasRenderingContext2D.setLineDash | MDN | 1 | T |
DOMRect.height | MDN | 1 | T |
MutationRecord.type | MDN | 1 | F |
Navigator.bluetooth | MDN | 1 | T |
NetworkInformation.onchange | MDN | 1 | T |
OffscreenCanvas.getContext | MDN | 1 | T |
PageTransitionEvent.persisted | MDN | N/A | F |
Performance.mark | MDN | 1 | F |
PerformanceResourceTiming.initiatorType | MDN | 1 | F |
Permissions.query | MDN | N/A | F |
SpeechSynthesis.getVoices | MDN | 1 | F |
VisualViewport.width | MDN | N/A | F |
WebGLRenderingContext.getContextAttribute | MDN | 1 | T |
WebGLShaderPrecisionFormat.rangeMin | MDN | 1 | T |
Window.statusbar | MDN | N/A | F |
API Name |
---|
DeprecatedStorageQuota.requestQuota |
HTMLAnchorElement.hash |
HTMLAnchorElement.host |
HTMLAnchorElement.hostname |
HTMLAnchorElement.href |
HTMLAnchorElement.origin |
HTMLAnchorElement.password |
HTMLAnchorElement.pathname |
HTMLAnchorElement.port |
HTMLAnchorElement.protocol |
HTMLAnchorElement.search |
HTMLAnchorElement.text |
HTMLIFrameElement.contentDocument |
HTMLIFrameElement.contentWindow |
HTMLIFrameElement.name |
HTMLIFrameElement.src |
HTMLScriptElement.src |
IDBDatabase.createObjectStore |
IDBFactory.open |
Location.ancestorOrigins |
Location.hash |
Location.host |
Location.hostname |
Location.href |
Location.origin |
Location.pathname |
Location.port |
Location.protocol |
Location.reload |
Location.search |
Location.toString |
Location.valueOf |
MessageEvent.data |
MessageEvent.origin |
RTCPeerConnection.createDataChannel |
RTCPeerConnection.createOffer |
RTCPeerConnection.localDescription |
RTCPeerConnection.setLocalDescription |
Response.json |
Storage.clear |
Storage.getItem |
Storage.length |
Storage.removeItem |
Storage.setItem |
URL.host |
URL.href |
URL.pathname |
URL.searchParams |
URLSearchParams.get |
Window.clearInterval |
XMLHttpRequest.abort |
XMLHttpRequest.getResponseHeader |
XMLHttpRequest.open |
XMLHttpRequest.readyState |
XMLHttpRequest.response |
XMLHttpRequest.responseText |
XMLHttpRequest.responseURL |
XMLHttpRequest.setRequestHeader |
XMLHttpRequest.status |
XMLHttpRequest.statusText |
XMLHttpRequest.timeout |
XMLHttpRequest.withCredentials |
API Name |
---|
AbortController.abort |
AbortController.signal |
Attr.name |
Attr.value |
CustomEvent.detail |
DOMException.message |
DOMStringList.length |
DOMTokenList.add |
DOMTokenList.contains |
DOMTokenList.remove |
Document.evaluate |
Element.matches |
Event.stopImmediatePropagation |
Event.target |
FormData.append |
HTMLCollection.length |
HTMLImageElement.decode |
HTMLInputElement.defaultValue |
HTMLInputElement.files |
HTMLInputElement.value |
HTMLMetaElement.content |
HTMLMetaElement.name |
Node.appendChild |
NodeList.item |
NodeList.length |
UnderlyingSourceBase.type |
t.prototype.getPermissionsMetadata = function () {
return __awaiter(this, void 0, void 0, function () {
var t, n, i, r, o, a;
return __generator(this, function (s) {
switch (s.label) {
case 0:
if (t = {}, n = ["accelerometer", "accessibility-events", "ambient-light-sensor", "background-sync", "camera", "clipboard-read", "clipboard-write", "geolocation", "gyroscope", "magnetometer", "microphone", "midi", "notifications", "payment-handler", "persistent-storage", "push"], i = [], navigator.permissions)
for (o in r = function (e) {
var r = n[e];
i.push(navigator.permissions.query({
name: r
}).then(function (e) {
t[r] = e.state
}).catch(function (e) {}))
}, n) r(o);
s.label = 1;
case 1:
return s.trys.push([1, 3, , 4]), [4, Promise.all(i)];
case 2:
return s.sent(), [3, 4];
case 3:
return a = s.sent(), e.STLogger.warn(a), [3, 4];
case 4:
return [2, t]
}
})
})
}
function () {
var t = !1;
if ("localStorage" in window) try {
window.localStorage.setItem("\_tmptest", "tmpval"), t = !0, window.localStorage.removeItem("\_tmptest")
} catch (t) {}
if (t) try {
window.localStorage && (_ = window.localStorage, b = "localStorage", j = \_.jStorage_update)
} catch (t) {} else if ("globalStorage" in window) try {
window.globalStorage && (_ = "localhost" == window.location.hostname ? window.globalStorage["localhost.localdomain"] : window.globalStorage[window.location.hostname], b = "globalStorage", j = \_.jStorage_update)
} catch (t) {} else {
if (w = document.createElement("link"), !w.addBehavior) return void(w = null);
w.style.behavior = "url(#default#userData)", document.getElementsByTagName("head")[0].appendChild(w);
try {
w.load("jStorage")
} catch (t) {
w.setAttribute("jStorage", "{}"), w.save("jStorage"), w.load("jStorage")
}
var n = "{}";
try {
n = w.getAttribute("jStorage")
} catch (t) {}
try {
j = w.getAttribute("jStorage_update")
} catch (t) {}
\_.jStorage = n, b = "userDataBehavior"
}
s(), h(), e(), u(), "addEventListener" in window && window.addEventListener("pageshow", function (t) {
t.persisted && i()
}, !1)
}()
t.prototype.ht = function () {
var t = this;
this.u.X = this.tt("longtask", (function (e) {
t.ft({
W: e
})
}))
}, t.prototype.v = function () {
return s && !!s.getEntriesByType && !!s.now && !!s.mark
}, t.prototype.l = function () {
return "PerformanceObserver" in o
}, t.prototype.ct = function (t) {
var e = s.getEntriesByName(t),
i = e[e.length - 1];
return i && "measure" === i.entryType ? i.duration : -1
}, t.prototype.L = function () {
return a ? {
deviceMemory: a.deviceMemory ? a.deviceMemory : 0,
hardwareConcurrency: a.hardwareConcurrency ? a.hardwareConcurrency : 0,
serviceWorkerStatus: "serviceWorker" in a ? a.serviceWorker.controller ? "controlled" : "supported" : "unsupported"
} : {}
}, t.prototype._ = function () {
if (!this.v()) return {};
var t = performance.getEntriesByType("navigation")[0];
if (!t) return {};
var e = t.responseStart,
i = t.responseEnd;
return {
fetchTime: i - t.fetchStart,
workerTime: t.workerStart > 0 ? i - t.workerStart : 0,
totalTime: i - t.requestStart,
downloadTime: i - e,
timeToFirstByte: e - t.requestStart,
headerSize: t.transferSize - t.encodedBodySize || 0,
dnsLookupTime: t.domainLookupEnd - t.domainLookupStart
}
}, t.prototype.I = function () {
if ("connection" in a) {
var t = a.connection;
return "object" != typeof t ? {} : (f = t.effectiveType, d = !!t.saveData, {
downlink: t.downlink,
effectiveType: t.effectiveType,
rtt: t.rtt,
saveData: !!t.saveData
})
}
return {}
}
var ke = X("guid", "ON"),
le = !d.google_conversion_domain && "GooglemKTybQhCsO" in v &&
"function" == typeof v.GooglemKTybQhCsO ? X("resp", "GooglemKTybQhCsO") : "",
me = X("disvt", d.google_disable_viewthrough),
ne = X("eid", Nb().join());
var ha = d.google_conversion_date;
var x = [];
if (a) {
var H = a.screen;
H && (x.push(X("u_h", H.height)), x.push(X("u_w", H.width)), x.push(X("u_ah", H.availHeight)), x.push(X("u_aw", H.availWidth)), x.push(X("u_cd", H.colorDepth)));
a.history && x.push(X("u_his", a.history.length))
}
ha && "function" == typeof ha.getTimezoneOffset && x.push(X("u_tz", -ha.getTimezoneOffset()));
b && ("function" == typeof b.javaEnabled &&
x.push(X("u_java", b.javaEnabled())), b.plugins && x.push(X("u_nplug", b.plugins.length)), b.mimeTypes && x.push(X("u_nmime", b.mimeTypes.length)));
ha = x.join("");
x = X("gtm", d.google_gtm);
b = b && b.sendBeacon ? X("sendb", "1") : "";
function g() {
var e = [];
return document.querySelectorAll("script[src*=extension]").forEach(function(t) {
var r = t.getAttribute("src");
r && e.push(r)
}), JSON.stringify(e)
}
function m() {
for (var e = ["innerHeight", "innerWidth", "outerWidth", "outerHeight", "devicePixelRatio"], t = {}, r = 0; r < e.length; r++) {
var n = e[r];
t[n] = window[n]
}
return window.statusbar && (t.statusbar_visible = window.statusbar.visible), t.length = window.length, t.modified = Object.getOwnPropertyNames(window.screen), JSON.stringify(t)
}
function w(e) {
var r = {};
for (var n in e)
if ("enabledPlugin" !== n && "function" != typeof e[n])
if ("object" === (0, t.default)(e[n])) {
var o = w(e[n]);
Object.keys(o) && (r[n] = o)
} else r[n] = e[n];
return r
}
isHighDensity: (a = window.matchMedia && (window.matchMedia("only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)").matches || window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)").matches) || window.devicePixelRatio && window.devicePixelRatio > 1.3, function () {
return a
}),
isSmartPhone: (s = window.matchMedia && window.matchMedia(" only screen and (min-device-width : 320px) and (max-device-width : 480px)").matches || /(iPhone|iPod)/g.test(navigator.userAgent), function () {
return s
}),
isTablet: (n = window.matchMedia && window.matchMedia(" only screen and (min-device-width : 768px) and (max-device-width : 1024px)").matches || /(iPhone|iPod)/g.test(navigator.userAgent), function () {
return n
}),
isDesktop: function () {
return !(this.isTablet() || this.isSmartPhone())
},
getOuterWidth: function (e) {
var t, r, i;
return e.getBoundingClientRect().width + parseFloat(getComputedStyle(e).marginLeft) + parseFloat(getComputedStyle(e).marginRight)
},
isHtmlContent: function (e) {
return /(?:%3C|[<>&])/.test(e)
},
setContentToElement: function (e, t) {
TRC.dom.isHtmlContent(t) ? e.innerHTML = t : e.innerText = t
}