@zaplier/sdk 1.8.7 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v2/chunks/anti-adblock-B_7p9rSc.min.js +6 -0
- package/dist/v2/chunks/anti-adblock-B_aAB361.min.js +6 -0
- package/dist/v2/chunks/auto-tracker-5ij0Y4C-.min.js +6 -0
- package/dist/v2/chunks/browser-apis-zkKPQ-Pn.min.js +6 -0
- package/dist/v2/chunks/confidence-DCUtUduG.min.js +6 -0
- package/dist/v2/chunks/core-BTl6GQvU.min.js +6 -0
- package/dist/v2/chunks/core-BUMPOlca.min.js +6 -0
- package/dist/v2/chunks/core-CGxFM5QW.min.js +6 -0
- package/dist/v2/chunks/core-NFvhjAfH.min.js +6 -0
- package/dist/v2/chunks/core-hqxwsWnO.min.js +6 -0
- package/dist/v2/chunks/core-zJiDcx4q.min.js +6 -0
- package/dist/v2/chunks/device-signals-DzcCjR7i.min.js +6 -0
- package/dist/v2/chunks/dom-blockers-CtmwJ8XW.min.js +6 -0
- package/dist/v2/chunks/fingerprint-C1MH_xUr.min.js +6 -0
- package/dist/v2/chunks/hardware-VrMyNUbt.min.js +6 -0
- package/dist/v2/chunks/heatmap-BxbXSH7M.min.js +6 -0
- package/dist/v2/chunks/heatmap-FZpkJ8Pr.min.js +6 -0
- package/dist/v2/chunks/incognito-CUk-WJ9L.min.js +6 -0
- package/dist/v2/chunks/math-k-cWr0Zr.min.js +6 -0
- package/dist/v2/chunks/plugins-enhanced-DybbZw-x.min.js +6 -0
- package/dist/v2/chunks/session-replay-DsIhuKDJ.min.js +6 -0
- package/dist/v2/chunks/session-replay-DzEF_WqO.min.js +6 -0
- package/dist/v2/chunks/storage-DGh64hgU.min.js +6 -0
- package/dist/v2/chunks/system-Bu10BgJe.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-BUu5td5h.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-CIXH9EKf.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-DSIEfVJQ.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-Djomq4wG.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-FU8S1BmX.min.js +6 -0
- package/dist/v2/chunks/visitor-persistence-nXdSbDzp.min.js +6 -0
- package/dist/v2/core.d.ts +149 -80
- package/dist/v2/core.min.js +2 -2
- package/dist/v2/modules/anti-adblock.js +2 -2
- package/dist/v2/modules/auto-tracker.js +6 -0
- package/dist/v2/modules/browser-apis-BFbMjhvj.js +6 -0
- package/dist/v2/modules/confidence-B8ji6M6W.js +6 -0
- package/dist/v2/modules/device-signals-OERVSprN.js +6 -0
- package/dist/v2/modules/dom-blockers-NN7G4m7O.js +6 -0
- package/dist/v2/modules/fingerprint-BmsWDNK6.js +6 -0
- package/dist/v2/modules/fingerprint.js +2 -2
- package/dist/v2/modules/hardware-DEB_C62e.js +6 -0
- package/dist/v2/modules/heatmap.js +2 -2
- package/dist/v2/modules/incognito-B8-4CGqL.js +6 -0
- package/dist/v2/modules/math-D6mV6BoT.js +6 -0
- package/dist/v2/modules/plugins-enhanced-Bs-rTKz4.js +6 -0
- package/dist/v2/modules/replay.js +2 -2
- package/dist/v2/modules/storage-DpYaBLNV.js +6 -0
- package/dist/v2/modules/system-C8YX5XCh.js +6 -0
- package/dist/v2/modules/visitor-persistence.js +6 -0
- package/package.json +2 -3
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function e(e){var t;const n=[];return null!==(t=function e(t){var o;if(t&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0===t)return;if("number"==typeof t)return Number.isFinite(t)?String(t):"null";if("object"!=typeof t)return JSON.stringify(t);if(Array.isArray(t)){let n="[";for(let r=0;r<t.length;r++)r&&(n+=","),n+=null!==(o=e(t[r]))&&void 0!==o?o:"null";return n+"]"}if(null===t)return"null";if(-1!==n.indexOf(t))throw new TypeError("Converting circular structure to JSON");const r=n.push(t)-1,i=Object.keys(t).sort();let a="";for(const n of i){const o=e(t[n]);void 0!==o&&(a&&(a+=","),a+=JSON.stringify(n)+":"+o)}return n.splice(r,1),"{"+a+"}"}(e))&&void 0!==t?t:""}function t(e,t){const n=e[1]+t[1]&4294967295;return[e[0]+t[0]+(n<e[1]?1:0)&4294967295,n]}function n(e,t){const n=65535&e[1],o=e[1]>>>16,r=65535&t[1],i=t[1]>>>16,a=n*i+o*r&4294967295,c=o*i+(a>>>16),s=n*r+((65535&a)<<16)&4294967295;return[e[0]*t[1]+e[1]*t[0]+c&4294967295,s]}function o(e,t){return 0==(t%=64)?e:t<32?[4294967295&(e[0]<<t|e[1]>>>32-t),4294967295&(e[1]<<t|e[0]>>>32-t)]:(t-=32,[4294967295&(e[1]<<t|e[0]>>>32-t),4294967295&(e[0]<<t|e[1]>>>32-t)])}function r(e,t){return[e[0]^t[0],e[1]^t[1]]}function i(e){let t=e;return t=r(t,[0,t[0]>>>1]),t=n(t,[4283543511,3981806797]),t=r(t,[0,t[0]>>>1]),t=n(t,[3301882366,444984403]),t=r(t,[0,t[0]>>>1]),t}function a(e,a=0){const c=function(e){const t=[];for(let n=0;n<e.length;n+=4){let o=0;for(let t=Math.min(3,e.length-n-1);t>=0;t--)o=o<<8|e.charCodeAt(n+t);t.push(o)}return t}(e),s=Math.floor(c.length/4);let l=[0,a],u=[0,a];const d=[2277735313,289559509],m=[1291169091,658871167];for(let e=0;e<s;e++){const i=4*e,a=4*e+2;let s=[c[i+1]||0,c[i]||0],h=[c[a+1]||0,c[a]||0];s=n(s,d),s=o(s,31),s=n(s,m),l=r(l,s),l=o(l,27),l=t(l,u),l=t(n(l,[0,5]),[0,1390208809]),h=n(h,m),h=o(h,33),h=n(h,d),u=r(u,h),u=o(u,31),u=t(u,l),u=t(n(u,[0,5]),[0,944331445])}const h=4*s,f=c.length-h;let p=[0,0],g=[0,0];return f>=12&&(g=r(g,[c[h+3]||0,0])),f>=8&&(g=r(g,[0,c[h+2]||0]),g=n(g,m),g=o(g,33),g=n(g,d),u=r(u,g)),f>=4&&(p=r(p,[c[h+1]||0,0])),f>=1&&(p=r(p,[0,c[h]||0]),p=n(p,d),p=o(p,31),p=n(p,m),l=r(l,p)),l=r(l,[0,e.length]),u=r(u,[0,e.length]),l=t(l,u),u=t(u,l),l=i(l),u=i(u),l=t(l,u),u=t(u,l),(l[0]>>>0).toString(16).padStart(8,"0")+(l[1]>>>0).toString(16).padStart(8,"0")+((u[0]>>>0).toString(16).padStart(8,"0")+(u[1]>>>0).toString(16).padStart(8,"0"))}function c(e){let t=0;if(0===e.length)return t.toString(36);for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return Math.abs(t).toString(36)}function s(e){return["duration","timestamp","error","errors","collectionTime","startTime","endTime","_timestamp"].includes(e)||e.endsWith("_timestamp")||e.endsWith("Timestamp")}function l(e){if(null==e)return null;if(Array.isArray(e))return e.map(e=>l(e)).filter(e=>null!==e).sort((e,t)=>JSON.stringify(e).localeCompare(JSON.stringify(t)));if("object"==typeof e){const t=Object.keys(e).sort(),n={};for(const o of t){if(s(o))continue;const t=l(e[o]);null!==t&&(n[o]=t)}return n}return"number"==typeof e?Number.isFinite(e)?Math.abs(e)<1e-4?0:Math.abs(e)>1e6?e>0?1e6:-1e6:Number(e>=.1&&e<=10?e.toFixed(3):e.toFixed(2)):0:"string"==typeof e?e.trim().toLowerCase():"boolean"==typeof e?e:null}const u={SAMPLE_RATE:44100,DURATION:.1,FREQUENCIES:[440,1e3,1760,3520],COMPRESSOR_THRESHOLD:-50,COMPRESSOR_KNEE:40,COMPRESSOR_RATIO:12,COMPRESSOR_ATTACK:.003,COMPRESSOR_RELEASE:.25,FILTER_FREQUENCY:2e3,GAIN_VALUE:.5,DELAY_TIME:.02};function d(){try{const e=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(!e)return null;const t=44100,n=u.DURATION;return new e(1,Math.floor(t*n),t)}catch{return null}}async function m(e){try{const t=u.FREQUENCIES.map((t,n)=>{const o=e.createOscillator(),r=["sine","square","sawtooth","triangle"],i=r[n%r.length];return o.type=i||"sine",o.frequency.setValueAtTime(t,e.currentTime),o}),n=e.createDynamicsCompressor(),o=e.createBiquadFilter(),r=e.createGain(),i=e.createDelay(),a=e.createAnalyser();n.threshold.setValueAtTime(u.COMPRESSOR_THRESHOLD,e.currentTime),n.knee.setValueAtTime(u.COMPRESSOR_KNEE,e.currentTime),n.ratio.setValueAtTime(u.COMPRESSOR_RATIO,e.currentTime),n.attack.setValueAtTime(u.COMPRESSOR_ATTACK,e.currentTime),n.release.setValueAtTime(u.COMPRESSOR_RELEASE,e.currentTime),o.type="bandpass",o.frequency.setValueAtTime(u.FILTER_FREQUENCY,e.currentTime),o.Q.setValueAtTime(.7,e.currentTime),r.gain.setValueAtTime(u.GAIN_VALUE,e.currentTime),i.delayTime.setValueAtTime(u.DELAY_TIME,e.currentTime);const s=e.createGain();s.gain.setValueAtTime(.25,e.currentTime),t.forEach(e=>{e.connect(s)}),s.connect(o),o.connect(n),n.connect(r),r.connect(i),i.connect(a),a.connect(e.destination),t.forEach((e,t)=>{e.start(.01*t),e.stop(u.DURATION)});const l=(await e.startRendering()).getChannelData(0),d=[];for(let e=0;e<32;e++){const t=Math.floor(l.length/32*e);d.push(l[t]||0)}const m=Math.sqrt(d.reduce((e,t)=>e+t*t,0)/d.length),h=Math.max(...d.map(Math.abs)),f=d.reduce((e,t)=>e+Math.abs(t),0)/d.length;let p=0;for(let e=0;e<Math.min(d.length,16);e++){const t=d[e];void 0!==t&&(p+=e*Math.abs(t))}return c([...d,m,h,f,p].join(","))}catch(e){return c("multi_oscillator_error")}}async function h(e){try{const t=[100,440,1e3,2e3,4e3,8e3,12e3,16e3],n=[];for(const o of t){const t=e.createOscillator(),r=e.createAnalyser();t.type="sine",t.frequency.setValueAtTime(o,e.currentTime),r.fftSize=256,r.smoothingTimeConstant=0,t.connect(r),r.connect(e.destination),t.start(),t.stop(.05);const i=d();if(i){const e=i.createOscillator();e.type="sine",e.frequency.setValueAtTime(o,i.currentTime),e.connect(i.destination),e.start(),e.stop(.05);try{const e=(await i.startRendering()).getChannelData(0),t=Math.sqrt(e.reduce((e,t)=>e+t*t,0)/e.length);n.push(t)}catch{n.push(0)}}}return c(n.join(","))}catch(e){return c("frequency_response_error")}}async function f(e){try{const t=e.createOscillator(),n=e.createDynamicsCompressor();t.type="triangle",t.frequency.setValueAtTime(u.FREQUENCIES[0],e.currentTime),n.threshold.setValueAtTime(u.COMPRESSOR_THRESHOLD,e.currentTime),n.knee.setValueAtTime(u.COMPRESSOR_KNEE,e.currentTime),n.ratio.setValueAtTime(u.COMPRESSOR_RATIO,e.currentTime),n.attack.setValueAtTime(u.COMPRESSOR_ATTACK,e.currentTime),n.release.setValueAtTime(u.COMPRESSOR_RELEASE,e.currentTime),t.connect(n),n.connect(e.destination),t.start(),t.stop(u.DURATION);const o=(await e.startRendering()).getChannelData(0);return c([o[0]||0,o[Math.floor(.25*o.length)]||0,o[Math.floor(.5*o.length)]||0,o[Math.floor(.75*o.length)]||0,o[o.length-1]||0].join(","))}catch(e){return c("compressor_error")}}async function p(){var e;const t=performance.now();try{const n=function(){try{const e=window.OfflineAudioContext||window.webkitOfflineAudioContext;if(e)try{return new e(1,1,44100).sampleRate}catch{}const t=window.AudioContext||window.webkitAudioContext;if(t)try{const e=new t,n=e.sampleRate;return e.close().catch(()=>{}),n}catch{}}catch{}return 44100}(),o=function(){const e={};try{const t=d();if(t){e.sampleRate=t.sampleRate,e.length=t.length,e.state=t.state;const n=[],o=[8e3,22050,44100,48e3,96e3];for(const e of o)try{const t=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,1,e);t.sampleRate===e&&n.push(e),"close"in t&&"function"==typeof t.close&&t.close()}catch{}e.supportedSampleRates=n,"baseLatency"in t&&(e.baseLatency=t.baseLatency);try{const n=t.createBufferSource();e.channelCountMode=n.channelCountMode}catch{e.channelCountMode="max"}"close"in t&&"function"==typeof t.close&&t.close()}}catch(t){e.error="context_characteristics_error"}return e}(),r={multiOsc:d(),compressor:d(),frequencyResponse:d()};if(!r.multiOsc||!r.compressor||!r.frequencyResponse)throw new Error("OfflineAudioContext not available");const[i,a,s]=await Promise.all([m(r.multiOsc).catch(()=>"multi_oscillator_error"),f(r.compressor).catch(()=>"compressor_error"),h(r.frequencyResponse).catch(()=>"frequency_response_error")]),l={};try{const e=d();if(e){const t=["createOscillator","createAnalyser","createBiquadFilter","createConvolver","createDelay","createDynamicsCompressor","createGain","createWaveShaper","createStereoPanner","createChannelSplitter","createChannelMerger"];for(const n of t)try{"function"==typeof e[n]&&(e[n](),l[n]=!0)}catch{l[n]=!1}"close"in e&&"function"==typeof e.close&&e.close()}}catch{}const u=c([i,a,s,n.toString(),JSON.stringify(o),JSON.stringify(l)].join("|")),p=performance.now();return{value:{oscillator:i,compressor:a,sampleRate:n,maxChannelCount:(null===(e=o.supportedSampleRates)||void 0===e?void 0:e.length)||2,multiOscillatorFingerprint:i,frequencyResponseFingerprint:s,contextCharacteristics:o,nodeCapabilities:l,audioStackHash:u,supportedSampleRates:o.supportedSampleRates||[],channelCountMode:o.channelCountMode||"max"},duration:p-t}}catch(e){return{value:{oscillator:"error",compressor:"error",sampleRate:0,maxChannelCount:0,multiOscillatorFingerprint:"error",frequencyResponseFingerprint:"error",contextCharacteristics:{},nodeCapabilities:{},audioStackHash:"error",supportedSampleRates:[],channelCountMode:"max"},duration:performance.now()-t,error:e instanceof Error?e.message:"Audio fingerprinting failed"}}}function g(){try{return"function"==typeof(window.OfflineAudioContext||window.webkitOfflineAudioContext)||"function"==typeof(window.AudioContext||window.webkitAudioContext)}catch{return!1}}function y(){try{return"WebKitAppearance"in document.documentElement.style||"webkitRequestFileSystem"in window||"webkitResolveLocalFileSystemURL"in window||Boolean(window.safari)}catch{return!1}}function w(){try{return"ontouchstart"in window&&("orientation"in window||"onorientationchange"in window)&&/android/i.test(navigator.userAgent)}catch{return!1}}function v(){try{if("brave"in navigator&&navigator.brave)return!0;const e=navigator.userAgent;return!!e.includes("Brave")||!(!window.chrome||!window.chrome.runtime||window.chrome.webstore||window.navigator.getBattery||!/Chrome/.test(e))}catch{return!1}}function b(){try{const e=navigator.userAgent;return!!(e.includes("Arc/")||window.arc||window.Arc||window.chrome&&window.chrome.runtime&&/Chrome/.test(e)&&(e.includes("ArcBrowser")||"arc:"===window.location.protocol))}catch{return!1}}function S(){try{if(window.opr||window.opera)return!0;const e=navigator.userAgent;return!(!e.includes("OPR/")&&!e.includes("Opera/"))}catch{return!1}}function E(){try{return!!navigator.userAgent.includes("Vivaldi/")||!!window.vivaldi}catch{return!1}}function A(){try{const e=navigator.userAgent;return e.includes("SamsungBrowser/")||e.includes("Samsung Internet")}catch{return!1}}function T(){try{return!(v()||b()||S()||E()||M()||A())&&Boolean(window.chrome&&(window.chrome.webstore||window.chrome.runtime)&&/Chrome/.test(navigator.userAgent)&&!/Edg|OPR|Opera|Vivaldi|SamsungBrowser|Arc|Brave/.test(navigator.userAgent))}catch{return!1}}function C(){try{return"InstallTrigger"in window||"mozInnerScreenX"in window||"mozPaintCount"in window||Boolean(navigator.mozApps)}catch{return!1}}function M(){try{return"msCredentials"in navigator||Boolean(window.StyleMedia)||T()&&/edg/i.test(navigator.userAgent)}catch{return!1}}function x(){try{return y()&&!T()&&!M()&&Boolean(window.safari)&&/safari/i.test(navigator.userAgent)}catch{return!1}}function R(){try{return window.isSecureContext||"https:"===location.protocol}catch{return!1}}function _(){try{return"webkitTemporaryStorage"in navigator||navigator.storage&&navigator.storage.estimate&&navigator.storage.estimate().then(e=>(e.quota||0)<104857600),!1}catch{return!1}}function k(){return v()||b()||S()||E()||A()||T()?"Blink":M()?"EdgeHTML/Blink":C()?"Gecko":y()||x()?"WebKit":"Unknown"}function P(){const e=function(){try{if(v())return"Brave";if(b())return"Arc";if(S())return"Opera";if(E())return"Vivaldi";if(A())return"Samsung Internet";if(M())return"Edge";if(C())return"Firefox";if(x())return"Safari";if(T())return"Chrome";const e=navigator.userAgent;return/Firefox/i.test(e)&&!T()?"Firefox":/Safari/i.test(e)&&!T()?"Safari":/Chrome/i.test(e)?"Chrome":"Unknown"}catch{return"Unknown"}}(),t=k(),n=["Brave","Arc","Opera","Vivaldi","Samsung Internet","Edge","Chrome"].includes(e);let o=e.toLowerCase();return n&&"Chrome"!==e&&(o=`${e.toLowerCase()}-chromium`),{name:e,engine:t,isChromiumBased:n,family:o}}function O(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}function F(){try{if(!O())return!1;const e=document.createElement("canvas"),t=e.getContext("webgl")||e.getContext("experimental-webgl");if(!t)return!1;const n=t,o=n.getParameter(n.RENDERER),r=Boolean(o&&"string"==typeof o),i=n.getExtension("WEBGL_lose_context");return i&&i.loseContext(),r}catch{return!1}}function I(){try{return!(!window.AudioContext&&!window.webkitAudioContext)}catch{return!1}}function D(){const e=O(),t=function(){try{return"undefined"!=typeof window&&"function"==typeof window.matchMedia}catch{return!1}}();return{engine:k(),supportsDOM:e,supportsMediaQueries:t,supportsWebGL:F(),supportsAudio:I(),isSecure:R(),isPrivateMode:_(),canRunDOMBlockers:(y()||w())&&e,canRunAccessibility:t,canRunBrowserAPIs:e&&"undefined"!=typeof navigator}}async function L(){const e=performance.now();try{const t=function(){try{const e=navigator.language||"";let t=[];navigator.languages?t=Array.from(navigator.languages):navigator.language&&(t=[navigator.language]);const n=[navigator.userLanguage,navigator.browserLanguage,navigator.systemLanguage].filter(Boolean);return t=[...new Set([...t,...n])],{language:e,languages:t}}catch{return{language:"",languages:[]}}}(),n=function(){try{let e="";if(Intl&&Intl.DateTimeFormat)try{e=Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}if(!e){const t=new Date(2024,0,1).getTimezoneOffset(),n=t>0?"-":"+",o=Math.floor(Math.abs(t)/60),r=Math.abs(t)%60;e=`UTC${n}${o.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}return{timezone:e,timezoneOffset:new Date(2024,0,1).getTimezoneOffset()}}catch{return{timezone:"",timezoneOffset:0}}}(),o=function(){try{return{platform:navigator.platform||"",userAgent:navigator.userAgent||""}}catch{return{platform:"",userAgent:""}}}(),r=function(){try{const e=navigator.hardwareConcurrency||0;let t;"deviceMemory"in navigator&&(t=navigator.deviceMemory);const n={hardwareConcurrency:e};return void 0!==t&&(n.deviceMemory=t),n}catch{return{hardwareConcurrency:0}}}(),i=function(){try{const e=!1!==navigator.cookieEnabled;let t=null;return"doNotTrack"in navigator?t=navigator.doNotTrack:"msDoNotTrack"in navigator?t=navigator.msDoNotTrack:"mozDoNotTrack"in window&&(t=window.mozDoNotTrack),{cookieEnabled:e,doNotTrack:t}}catch{return{cookieEnabled:!0,doNotTrack:null}}}(),a=function(){try{if(!navigator.plugins)return{length:0,names:[]};const e=Array.from(navigator.plugins).map(e=>e.name).filter(e=>e).sort();return{length:navigator.plugins.length,names:e.slice(0,10)}}catch{return{length:0,names:[]}}}(),c=function(){try{let e=0,t=!1,n=!1;"maxTouchPoints"in navigator?e=navigator.maxTouchPoints:"msMaxTouchPoints"in navigator&&(e=navigator.msMaxTouchPoints);try{t="TouchEvent"in window}catch{t="ontouchstart"in window}return n="ontouchstart"in window,{maxTouchPoints:e,touchEvent:t,touchStart:n}}catch{return{maxTouchPoints:0,touchEvent:!1,touchStart:!1}}}(),s=function(){try{return P()}catch{return{name:"Unknown",engine:"Unknown",isChromiumBased:!1,family:"unknown"}}}(),l=performance.now(),u={language:t.language,languages:t.languages,timezone:n.timezone,timezoneOffset:n.timezoneOffset,platform:o.platform,userAgent:o.userAgent,browserInfo:s,hardwareConcurrency:r.hardwareConcurrency,cookieEnabled:i.cookieEnabled,doNotTrack:i.doNotTrack,plugins:a,touchSupport:c};void 0!==r.deviceMemory&&(u.deviceMemory=r.deviceMemory);const d=navigator.productSub;return"string"==typeof d&&d&&(u.productSub=d),u.applePayVersion=(()=>{try{if(void 0===globalThis.ApplePaySession)return 0;if("function"!=typeof globalThis.ApplePaySession.supportsVersion)return 0;for(let e=15;e>=1;e--)if(globalThis.ApplePaySession.supportsVersion(e))return e;return 0}catch{return 0}})(),{value:u,duration:l-e}}catch(t){return{value:{language:"",languages:[],timezone:"",timezoneOffset:0,platform:"",userAgent:"",hardwareConcurrency:0,cookieEnabled:!0,doNotTrack:null,plugins:{length:0,names:[]},touchSupport:{maxTouchPoints:0,touchEvent:!1,touchStart:!1}},duration:performance.now()-e,error:t instanceof Error?t.message:"Browser fingerprinting failed"}}}function N(){try{return"object"==typeof navigator&&null!==navigator}catch{return!1}}function B(e){var t;if(0===e.length)return 0;const n={};for(const o of e)n[o]=(null!==(t=n[o])&&void 0!==t?t:0)+1;let o=e[0];for(const e in n){const t=parseInt(e,10);n[t]>n[o]&&(o=t)}return o}function H(e,t,n){const o=e[0].data.length,r=new Uint8ClampedArray(o);for(let t=0;t<o;t++){const n=[];for(const o of e)n.push(o.data[t]);r[t]=B(n)}return new ImageData(r,t,n)}const V=["Zap Canvas 🎨🔒2024","Żółć gęślą jaźń €$¢£¥","αβγδεζηθικλμνξο","中文测试字体渲染","🌟🎯🚀💎🌊🎨"];function U(e){e.imageSmoothingEnabled=!0,e.imageSmoothingQuality="high";const t=e.createRadialGradient(75,75,0,75,75,50);t.addColorStop(0,"rgba(255, 0, 0, 0.8)"),t.addColorStop(.3,"rgba(0, 255, 0, 0.6)"),t.addColorStop(.7,"rgba(0, 0, 255, 0.4)"),t.addColorStop(1,"rgba(255, 255, 0, 0.2)"),e.fillStyle=t,e.fillRect(10,10,130,100),e.fillStyle="rgba(102, 204, 0, 0.7)",e.fillRect(15.5,15.3,49.7,49.2),e.fillStyle="#f60",e.fillRect(70.3,10.7,50.1,50.9),e.beginPath(),e.moveTo(25.2,120.1),e.bezierCurveTo(25.2,120.1,75.8,90.3,125.5,120.7),e.bezierCurveTo(125.5,120.7,90.1,150.2,60.8,140.9),e.closePath(),e.fillStyle="rgba(200, 100, 50, 0.6)",e.fill(),e.globalCompositeOperation="multiply",e.beginPath(),e.arc(50.7,80.3,20.1,0,2*Math.PI),e.fillStyle="rgba(255, 0, 100, 0.5)",e.fill(),e.beginPath(),e.arc(70.3,80.7,20.9,0,2*Math.PI),e.fillStyle="rgba(0, 255, 100, 0.5)",e.fill(),e.globalCompositeOperation="source-over",e.strokeStyle="rgba(50, 50, 50, 0.8)",e.lineWidth=.5,e.setLineDash([2.3,1.7]);for(let t=0;t<10;t++)e.beginPath(),e.moveTo(10+13.7*t,160),e.lineTo(50+11.3*t,200),e.stroke();e.setLineDash([]);const n=document.createElement("canvas");n.width=20,n.height=20;const o=n.getContext("2d");if(o){o.fillStyle="rgba(150, 75, 200, 0.3)",o.fillRect(0,0,10,10),o.fillRect(10,10,10,10);const t=e.createPattern(n,"repeat");t&&(e.fillStyle=t,e.fillRect(150,120,80,60))}e.shadowColor="rgba(0, 0, 0, 0.5)",e.shadowBlur=3.2,e.shadowOffsetX=2.1,e.shadowOffsetY=2.7,e.fillStyle="rgba(100, 200, 150, 0.8)",e.fillRect(160,30,60,40),e.shadowColor="transparent",e.shadowBlur=0,e.shadowOffsetX=0,e.shadowOffsetY=0}function G(e){const t=["14px Arial, sans-serif",'13px "Times New Roman", serif',"12px Georgia, serif","15px Helvetica, Arial, sans-serif",'11px "Courier New", monospace',"13px Verdana, sans-serif","16px Impact, fantasy",'12px "Comic Sans MS", cursive'],n=["#000","#333","#666","#999","rgba(255, 0, 0, 0.8)","rgba(0, 255, 0, 0.7)","rgba(0, 0, 255, 0.6)","rgba(128, 64, 192, 0.9)"],o=["top","hanging","middle","alphabetic","bottom"],r=["left","center","right"];let i=250;V.forEach((a,c)=>{t.forEach((t,s)=>{const l=(c+s)%n.length,u=s%o.length,d=s%r.length;e.font=t,e.fillStyle=n[l]||n[0],e.textBaseline=o[u]||"top",e.textAlign=r[d]||"left";const m=10+.7*s%200,h=i+18.3*s%100;e.fillText(a,m,h),s%2==0&&(e.strokeStyle=`rgba(${100+20*s}, ${50+15*s}, ${150+10*s}, 0.5)`,e.lineWidth=.3,e.strokeText(a,m+.5,h+.5))}),i+=120}),e.save(),e.translate(100,400),e.rotate(Math.PI/6),e.scale(1.2,.8),e.font="italic 14px Arial",e.fillStyle="rgba(200, 100, 50, 0.8)",e.fillText("Transformed & Rotated Text",0,0),e.restore(),e.font="6px Arial",e.fillStyle="#000",e.fillText("Tiny text rendering test",10,500),e.font="32px Arial",e.fillStyle="rgba(255, 0, 0, 0.5)",e.fillText("Large",10,540),e.textAlign="left",e.textBaseline="top"}async function j(){const e=performance.now();try{const t=document.createElement("canvas");t.width=300,t.height=600;const n=t.getContext("2d",{alpha:!0,desynchronized:!1,colorSpace:"srgb",willReadFrequently:!0});if(!n)throw new Error("Canvas 2D context not available");n.rect(0,0,10,10),n.rect(2,2,6,6);const o=n.isPointInPath(5,5,"evenodd");G(n);const r=c(t.toDataURL("image/png"));n.clearRect(0,0,t.width,t.height),U(n);const i=c(t.toDataURL("image/png")),a=function(e,t){try{e.clearRect(0,0,t.width,t.height),e.fillStyle="rgb(100, 150, 200)",e.fillRect(10.3,10.7,20.1,20.9),e.strokeStyle="rgb(200, 100, 50)",e.lineWidth=1.3,e.beginPath(),e.moveTo(15.2,35.8),e.lineTo(25.7,45.1),e.stroke();const n=e.getImageData(10,10,30,40).data;let o=0,r=0,i=0,a=0,c=0;for(let e=0;e<n.length;e+=4){const t=n[e]||0,s=n[e+1]||0,l=n[e+2]||0;if((n[e+3]||0)>25&&(o+=t,r+=s,i+=l,c++,e>=16)){const o=n[e-16]||0,r=Math.abs(t-o);r>=8&&(a+=r)}}if(0===c)return"no-valid-pixels";const s=10*Math.round(o/c/10);return`${s}-${10*Math.round(r/c/10)}-${10*Math.round(i/c/10)}-${10*Math.round(a/c/10)}`}catch(e){return"subpixel-error"}}(n,t),s=function(e,t,n,o){const r=[];let i=0;try{const a=o.getImageData(0,0,1,1);a&&0!==a.data.length||(r.push("getImageData-blocked"),i+=3),(e.length<8||t.length<8)&&(r.push("short-hash"),i+=2);const c=["error","blocked","disabled","00000000","ffffffff","12345678"];(c.includes(e)||c.includes(t))&&(r.push("known-blocked-hash"),i+=3),("subpixel-error"===n||n.includes("0-0-0"))&&(r.push("subpixel-anomaly"),i+=2),e===t&&"error"!==e&&(r.push("identical-hashes"),i+=2);const s=document.createElement("canvas");s.width=10,s.height=10;const l=s.getContext("2d");if(l){const e=performance.now();l.fillStyle="red",l.fillRect(0,0,10,10),s.toDataURL(),performance.now()-e>50&&(r.push("slow-canvas"),i+=1)}return{isInconsistent:i>=2,confidence:Math.min(i/5,1),reasons:r}}catch(e){return{isInconsistent:!0,confidence:1,reasons:["detection-error"]}}}(r,i,a,n);let l;if(s.isInconsistent||v()||A()){l=function(e,t,n,o=3){const r=[];for(let i=0;i<o;i++){const o=document.createElement("canvas");o.width=e,o.height=t;const i=o.getContext("2d",{willReadFrequently:!0});if(i){n(i);try{r.push(i.getImageData(0,0,e,t))}catch{}}}if(0===r.length)return"consensus-blocked";if(1===r.length)return c(Array.from(r[0].data).join(","));const i=H(r,e,t);return c(Array.from(i.data).join(","))}(t.width,t.height,e=>{G(e),e.globalCompositeOperation="multiply",U(e),e.globalCompositeOperation="source-over"})}else n.clearRect(0,0,t.width,t.height),G(n),n.globalCompositeOperation="multiply",U(n),n.globalCompositeOperation="source-over",l=c(t.toDataURL("image/png"));const u=performance.now();return{value:{text:r,geometry:i,winding:o,isInconsistent:s.isInconsistent,subPixelAnalysis:a,compositeHash:l,inconsistencyConfidence:s.confidence,blockingReasons:s.reasons},duration:u-e}}catch(t){return{value:{text:"error",geometry:"error",winding:!1,isInconsistent:!0,subPixelAnalysis:"error",compositeHash:"error",inconsistencyConfidence:1,blockingReasons:["canvas-error"]},duration:performance.now()-e,error:t instanceof Error?t.message:"Canvas fingerprinting failed"}}}function W(){try{const e=document.createElement("canvas").getContext("2d");return null!==e&&"function"==typeof e.fillText}catch{return!1}}const $=["Arial","Arial Black","Calibri","Cambria","Comic Sans MS","Consolas","Courier New","Georgia","Impact","Lucida Console","Lucida Sans Unicode","Microsoft Sans Serif","Palatino Linotype","Segoe UI","Tahoma","Times New Roman","Trebuchet MS","Verdana","American Typewriter","Avenir","Baskerville","Big Caslon","Brush Script MT","Copperplate","Didot","Futura","Gill Sans","Helvetica","Helvetica Neue","Hoefler Text","Lucida Grande","Marker Felt","Optima","Papyrus","Phosphate","Rockwell","Savoye LET","SignPainter","Skia","Snell Roundhand","System Font","Zapfino","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Droid Sans","Droid Sans Mono","Droid Serif","Liberation Sans","Liberation Sans Narrow","Liberation Serif","Ubuntu","Ubuntu Mono","Roboto","Roboto Condensed","Roboto Mono","Roboto Slab","Droid Sans","Droid Sans Mono","Droid Serif","Helvetica Neue","Arial","Helvetica","Courier New","Times New Roman","San Francisco","Avenir Next","Open Sans","Lato","Montserrat","Source Sans Pro","Raleway","PT Sans","Lora","Playfair Display","Oswald","Slabo 27px","Fira Sans","Hiragino Sans","Hiragino Kaku Gothic ProN","Meiryo","MS Gothic","MS Mincho","SimSun","SimHei","Microsoft YaHei","Malgun Gothic","Apple SD Gothic Neo"],z=["monospace","sans-serif","serif"],X="mmMwWLliI0O&1 ※";function q(e,t){const n=document.createElement("canvas").getContext("2d");if(!n)return{width:0,height:0};n.font=`12px ${t}`;const o=n.measureText(e);return{width:o.width,height:o.actualBoundingBoxAscent+o.actualBoundingBoxDescent}}function Z(e,t){const n=document.createElement("span");n.style.position="absolute",n.style.left="-9999px",n.style.top="-9999px",n.style.fontSize="12px",n.style.fontFamily=t,n.style.whiteSpace="nowrap",n.textContent=e,document.body.appendChild(n);const o=n.getBoundingClientRect(),r={width:o.width,height:o.height};return document.body.removeChild(n),r}function K(e,t="canvas"){const n="canvas"===t?q:Z,o=z.map(e=>n(X,e)),r=z.map(t=>n(X,`${e}, ${t}`));for(let e=0;e<o.length;e++){const t=o[e],n=r[e];if(t&&n){const e=Math.abs(t.width-n.width),o=Math.abs(t.height-n.height);if(e>.1||o>.1)return!0}}return!1}function Y(){try{const e=document.createElement("span");return e&&"object"==typeof e.style}catch{return!1}}function J(e){return 10*Math.round(e/10)}async function Q(){const e=performance.now();try{const t=function(){try{return{width:screen.width||0,height:screen.height||0}}catch{return{width:0,height:0}}}(),n=screen.colorDepth||screen.pixelDepth||0,o=function(){try{return window.devicePixelRatio||1}catch{return 1}}(),r=function(){try{const e=screen.availWidth||0,t=screen.availHeight||0;return 0===e&&0===t?{width:J(screen.width||0),height:J(screen.height||0)}:{width:J(e),height:J(t)}}catch{return{width:J(screen.width||0),height:J(screen.height||0)}}}(),i=function(){try{const e=document.documentElement,t=Math.max(e.clientWidth||0,window.innerWidth||0),n=Math.max(e.clientHeight||0,window.innerHeight||0);return{width:J(t),height:J(n)}}catch{const e=window.innerWidth||0,t=window.innerHeight||0;return{width:J(e),height:J(t)}}}(),a=function(){try{if(screen.orientation)return{angle:screen.orientation.angle,type:screen.orientation.type};const e=screen.mozOrientation||screen.msOrientation||screen.webkitOrientation;if(void 0!==e)return{angle:e,type:"unknown"};const t=screen.width>screen.height;return{angle:t?90:0,type:t?"landscape-primary":"portrait-primary"}}catch{return}}(),c=performance.now(),s={width:t.width,height:t.height,colorDepth:n,pixelRatio:o,availableWidth:r.width,availableHeight:r.height,viewportWidth:i.width,viewportHeight:i.height};return a&&(s.orientation=a),{value:s,duration:c-e}}catch(t){return{value:{width:0,height:0,colorDepth:0,pixelRatio:1,viewportWidth:0,viewportHeight:0,availableWidth:0,availableHeight:0},duration:performance.now()-e,error:t instanceof Error?t.message:"Screen fingerprinting failed"}}}function ee(){try{return"object"==typeof screen&&"number"==typeof screen.width&&"number"==typeof screen.height}catch{return!1}}let te=null,ne=0,oe=0;function re(){try{const e=performance.now();if(te&&te.isValid)if(e-te.timestamp<18e5){if(te.context&&!te.context.isContextLost())return te.usageCount++,te.lastUsed=e,te.context;ie()}else ie();if(ne>=8)return null;const t=function(){try{if("undefined"==typeof document)return null;const e=document.createElement("canvas");return e.width=1,e.height=1,e}catch{return null}}();if(!t)return null;const n=function(e){try{const t={alpha:!1,antialias:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"default"};return e.getContext("webgl",t)||e.getContext("experimental-webgl",t)}catch{return null}}(t);return n?(ne++,oe++,te={context:n,canvas:t,timestamp:e,isValid:!0,usageCount:1,lastUsed:e},n):null}catch(e){return ie(),null}}function ie(){if(te){try{if(te.context){const e=te.context.getExtension("WEBGL_lose_context");e&&e.loseContext()}te.canvas&&(te.canvas.width=0,te.canvas.height=0),ne>0&&ne--}catch{ne>0&&ne--}te.isValid=!1,te=null}}function ae(){if(!te||!te.context)return!1;try{return!te.context.isContextLost()}catch{return!1}}function ce(){const e=re();if(!e)return[];try{const t=e.getSupportedExtensions();return t?Array.from(t).sort():[]}catch{return[]}}function se(){const e=re();if(!e)return{};try{const t={},n=["VERSION","VENDOR","RENDERER","SHADING_LANGUAGE_VERSION","MAX_TEXTURE_SIZE","MAX_RENDERBUFFER_SIZE","MAX_VIEWPORT_DIMS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VARYING_VECTORS"];for(const o of n)try{const n=e[o];void 0!==n&&(t[o]=e.getParameter(n))}catch{}return t}catch{return{}}}function le(){try{ie(),ne=0,oe=0}catch(e){}}if("undefined"!=typeof window&&(window.addEventListener("beforeunload",le),window.addEventListener("pagehide",le),window.addEventListener("unload",le),document.addEventListener("visibilitychange",()=>{}),"memory"in performance&&"function"==typeof performance.memory.addEventListener))try{performance.memory.addEventListener("memorypressure",le)}catch(e){}var ue=Object.freeze({__proto__:null,cleanupWebGLCache:le,forceCleanupWebGL:function(){ie(),ne=0},getCachedWebGLContext:re,getCachedWebGLExtensions:ce,getCachedWebGLParameters:se,invalidateWebGLCache:ie,isWebGLContextValid:ae});const de={VENDOR:7936,RENDERER:7937,VERSION:7938,SHADING_LANGUAGE_VERSION:35724,MAX_VERTEX_ATTRIBS:34921,MAX_TEXTURE_SIZE:3379,MAX_RENDERBUFFER_SIZE:34024,MAX_VIEWPORT_DIMS:3386,ALIASED_LINE_WIDTH_RANGE:33902,ALIASED_POINT_SIZE_RANGE:33901,MAX_FRAGMENT_UNIFORM_VECTORS:36349,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661};function me(e,t,n){const o=e.createShader(t);return o?(e.shaderSource(o,n),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)?o:(e.deleteShader(o),null)):null}function he(e,t,n){const o=e.createProgram();return o?(e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?o:(e.deleteProgram(o),null)):null}function fe(e){const t=new Uint8Array(e.canvas.width*e.canvas.height*4);return e.readPixels(0,0,e.canvas.width,e.canvas.height,e.RGBA,e.UNSIGNED_BYTE,t),t}function pe(e){var t,n,o,r;let i=0;for(let a=0;a<e.length;a+=4)i=33*i+(null!==(t=e[a])&&void 0!==t?t:0)+256*(null!==(n=e[a+1])&&void 0!==n?n:0)+65536*(null!==(o=e[a+2])&&void 0!==o?o:0)+16777216*(null!==(r=e[a+3])&&void 0!==r?r:0)>>>0;return i.toString(16)}function ge(e){try{const t=e.getParameter(e.VENDOR)||"unknown",n=e.getParameter(e.RENDERER)||"unknown",o=e.getParameter(e.VERSION)||"unknown",r=e.getParameter(e.MAX_TEXTURE_SIZE)||0,i=`${t}|${n}|${o}|${r}|${e.getParameter(e.MAX_VERTEX_ATTRIBS)||0}|${e.getParameter(e.MAX_VIEWPORT_DIMS)||[0,0]}`;let a=0;for(let e=0;e<i.length;e++)a=(a<<5)-a+i.charCodeAt(e)&4294967295;return`fallback_${Math.abs(a).toString(16)}`}catch{return"webgl_unavailable"}}async function ye(){const e=performance.now();try{if(!ve())throw new Error("WebGL not supported in this browser");const t=re();if(!t)throw new Error("WebGL context not available");if(!ae())throw new Error("WebGL context lost");const n=function(){try{return se()}catch{return{}}}(),o=n.VENDOR||"unknown",r=n.RENDERER||"unknown",i=n.VERSION||"unknown";let a=o,c=r;for(let e=0;e<3;e++)try{const e=t.getExtension("WEBGL_debug_renderer_info");if(e){const n=t.getParameter(e.UNMASKED_VENDOR_WEBGL),o=t.getParameter(e.UNMASKED_RENDERER_WEBGL);n&&"unknown"!==n&&(a=n),o&&"unknown"!==o&&(c=o);break}}catch(t){if(2===e)break;await new Promise(e=>setTimeout(e,10))}const s=function(){try{return ce()}catch{return[]}}(),l=function(e){const t={};return Object.entries(de).forEach(([n,o])=>{const r=function(e,t){try{return e.getParameter(t)}catch{return null}}(e,o);null!==r&&(t[n]=Array.isArray(r)?r.join(","):r)}),["UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL"].forEach(n=>{try{const o=e.getExtension("WEBGL_debug_renderer_info");if(o){const r=o[n];if(void 0!==r){const o=e.getParameter(r);o&&(t[n]=o)}}}catch{}}),t}(t),u=function(e){const t=[],n=[];try{const o=[e.LOW_FLOAT,e.MEDIUM_FLOAT,e.HIGH_FLOAT,e.LOW_INT,e.MEDIUM_INT,e.HIGH_INT],r=["LOW_FLOAT","MEDIUM_FLOAT","HIGH_FLOAT","LOW_INT","MEDIUM_INT","HIGH_INT"];for(let i=0;i<o.length;i++){const a=o[i];if(void 0===a)continue;const c=e.getShaderPrecisionFormat(e.VERTEX_SHADER,a),s=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,a);c&&t.push(`${r[i]}:${c.precision},${c.rangeMin},${c.rangeMax}`),s&&n.push(`${r[i]}:${s.precision},${s.rangeMin},${s.rangeMax}`)}}catch{}return{vertex:t.join(";"),fragment:n.join(";")}}(t),d=function(e){try{const t="\n attribute vec2 a_position;\n attribute vec3 a_color;\n varying vec3 v_color;\n uniform float u_time;\n \n void main() {\n // Complex mathematical operations to differentiate GPUs\n float wave = sin(a_position.x * 10.0 + u_time) * 0.1;\n vec2 position = a_position + vec2(wave, cos(a_position.y * 8.0) * 0.1);\n \n // GPU-specific floating point calculations\n float precision = sin(position.x * 123.456) + cos(position.y * 789.012);\n position += vec2(precision * 0.001);\n \n gl_Position = vec4(position, 0.0, 1.0);\n v_color = a_color;\n }\n ",n="\n precision mediump float;\n varying vec3 v_color;\n uniform float u_time;\n \n void main() {\n // Complex color calculations that vary between GPU vendors\n vec3 color = v_color;\n color.r += sin(gl_FragCoord.x * 0.1 + u_time) * 0.1;\n color.g += cos(gl_FragCoord.y * 0.1 + u_time) * 0.1;\n color.b += sin((gl_FragCoord.x + gl_FragCoord.y) * 0.05) * 0.1;\n \n // GPU-specific precision in color calculations\n color = normalize(color) * length(v_color);\n \n gl_FragColor = vec4(color, 1.0);\n }\n ",o=me(e,e.VERTEX_SHADER,t),r=me(e,e.FRAGMENT_SHADER,n);if(!o||!r)return ge(e);const i=he(e,o,r);if(!i)return ge(e);e.useProgram(i);const a=new Float32Array([-.8,-.6,1,.2,.3,0,.8,.3,1,.2,.8,-.6,.2,.3,1,-.5,-.2,.8,.9,.1,.3,.6,.1,.8,.9,.7,-.3,.9,.1,.8]),c=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,c),e.bufferData(e.ARRAY_BUFFER,a,e.STATIC_DRAW);const s=e.getAttribLocation(i,"a_position"),l=e.getAttribLocation(i,"a_color"),u=e.getUniformLocation(i,"u_time");let d;if(e.enableVertexAttribArray(s),e.enableVertexAttribArray(l),e.vertexAttribPointer(s,2,e.FLOAT,!1,20,0),e.vertexAttribPointer(l,3,e.FLOAT,!1,20,8),e.uniform1f(u,1.23456789),e.enable(e.BLEND),e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA),e.clearColor(.1,.2,.3,1),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLES,0,6),v()||A()){const o=e.canvas.width,r=e.canvas.height,i=[fe(e)];for(let e=0;e<2;e++){const e=document.createElement("canvas");e.width=o,e.height=r;const c=e.getContext("webgl");if(!c)continue;const s=t,l=n,u=me(c,c.VERTEX_SHADER,s),d=me(c,c.FRAGMENT_SHADER,l);if(!u||!d)continue;const m=he(c,u,d);if(!m)continue;c.useProgram(m);const h=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,h),c.bufferData(c.ARRAY_BUFFER,a,c.STATIC_DRAW);const f=c.getAttribLocation(m,"a_position"),p=c.getAttribLocation(m,"a_color"),g=c.getUniformLocation(m,"u_time");c.enableVertexAttribArray(f),c.enableVertexAttribArray(p),c.vertexAttribPointer(f,2,c.FLOAT,!1,20,0),c.vertexAttribPointer(p,3,c.FLOAT,!1,20,8),c.uniform1f(g,1.23456789),c.enable(c.BLEND),c.blendFunc(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA),c.clearColor(.1,.2,.3,1),c.clear(c.COLOR_BUFFER_BIT),c.drawArrays(c.TRIANGLES,0,6),i.push(fe(c)),c.deleteProgram(m),c.deleteShader(u),c.deleteShader(d),c.deleteBuffer(h)}const c=H(i.map(e=>new ImageData(new Uint8ClampedArray(e),o,r)),o,r);d=pe(new Uint8Array(c.data))}else d=pe(fe(e));return e.deleteProgram(i),e.deleteShader(o),e.deleteShader(r),e.deleteBuffer(c),d}catch(t){return ge(e)}}(t),m=function(e){var t;const n={};try{const o=e.getExtension("WEBGL_debug_renderer_info");o&&(n.unmaskedVendor=e.getParameter(o.UNMASKED_VENDOR_WEBGL),n.unmaskedRenderer=e.getParameter(o.UNMASKED_RENDERER_WEBGL)),n.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),n.maxCombinedTextureImageUnits=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),n.maxViewportDims=e.getParameter(e.MAX_VIEWPORT_DIMS),n.maxRenderbufferSize=e.getParameter(e.MAX_RENDERBUFFER_SIZE),n.maxVertexAttribs=e.getParameter(e.MAX_VERTEX_ATTRIBS),n.maxVertexUniformVectors=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),n.maxFragmentUniformVectors=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),n.maxVaryingVectors=e.getParameter(e.MAX_VARYING_VECTORS),n.antialias=(null===(t=e.getContextAttributes())||void 0===t?void 0:t.antialias)||!1;const r=e.getExtension("OES_texture_float");n.floatTextures=!!r;const i=e.getExtension("OES_texture_half_float");n.halfFloatTextures=!!i;const a=e.getParameter(e.COMPRESSED_TEXTURE_FORMATS);n.compressedTextureFormats=Array.isArray(a)?a.length:0;const c=e instanceof WebGL2RenderingContext;if(n.webgl2=c,c){const t=e;n.maxColorAttachments=t.getParameter(t.MAX_COLOR_ATTACHMENTS),n.maxDrawBuffers=t.getParameter(t.MAX_DRAW_BUFFERS),n.maxTexture3DSize=t.getParameter(t.MAX_3D_TEXTURE_SIZE)}const s=e.getParameter(e.ALIASED_LINE_WIDTH_RANGE);n.lineWidthRange=Array.isArray(s)?s.join(","):"";const l=e.getParameter(e.ALIASED_POINT_SIZE_RANGE);n.pointSizeRange=Array.isArray(l)?l.join(","):""}catch(e){}return n}(t),h=(()=>{const e=`${a||o||""}|${c||r||""}`.toLowerCase();let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)&4294967295;return Math.abs(t).toString(16)})(),f=performance.now();return{value:{vendor:a,renderer:c,version:i,extensions:s,parameters:l,shaderPrecision:u,renderHash:d,capabilities:m,vendorRendererHash:h,contextAttributes:t.getContextAttributes()||{}},duration:f-e}}catch(t){return{value:{vendor:"unknown",renderer:"unknown",version:"unknown",extensions:[],parameters:{},shaderPrecision:{vertex:"",fragment:""},renderHash:"",capabilities:{},vendorRendererHash:"",contextAttributes:{}},duration:performance.now()-e,error:t instanceof Error?t.message:"WebGL fingerprinting failed"}}}let we=null;function ve(){if(null!==we)return we;try{const e=document.createElement("canvas");e.width=1,e.height=1;const t=e.getContext("webgl",{failIfMajorPerformanceCaveat:!0,antialias:!1,alpha:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1})||e.getContext("experimental-webgl",{failIfMajorPerformanceCaveat:!0,antialias:!1,alpha:!1,depth:!1,stencil:!1,preserveDrawingBuffer:!1}),n=null!==t;if(t&&"getExtension"in t)try{const e=t.getExtension("WEBGL_lose_context");e&&e.loseContext()}catch(e){}return e.width=0,e.height=0,we=n,n}catch{return we=!1,!1}}function be(){try{for(const e of["rec2020","p3","srgb"]){const t=Oe(`(color-gamut: ${e})`);if(null==t?void 0:t.matches)return e}return"unknown"}catch{return"unknown"}}function Se(){try{const e=Oe("(forced-colors: active)");if(null==e?void 0:e.matches)return!0;const t=Oe("(forced-colors: none)");return!(null==t?void 0:t.matches)&&null}catch{return null}}function Ee(){try{const e=["no-preference","high","more","low","less","forced"];for(const t of e){const e=Oe(`(prefers-contrast: ${t})`);if(null==e?void 0:e.matches)return"high"===t?"more":"low"===t?"less":t}return"unknown"}catch{return"unknown"}}function Ae(){try{const e=Oe("(prefers-reduced-motion: reduce)");if(null==e?void 0:e.matches)return!0;const t=Oe("(prefers-reduced-motion: no-preference)");return!(null==t?void 0:t.matches)&&null}catch{return null}}function Te(){try{return!!matchMedia("(prefers-reduced-transparency: reduce)").matches||!matchMedia("(prefers-reduced-transparency: no-preference)").matches&&null}catch{return null}}function Ce(){try{for(let e=8;e>=0;e--)if(matchMedia(`(monochrome: ${e})`).matches)return e;return 0}catch{return 0}}function Me(){try{return!!matchMedia("(inverted-colors: inverted)").matches||!matchMedia("(inverted-colors: none)").matches&&null}catch{return null}}function xe(){try{return!!matchMedia("(dynamic-range: high)").matches||!matchMedia("(dynamic-range: standard)").matches&&null}catch{return null}}function Re(){try{const e=[48,36,30,24,16,15,8];for(const t of e)if(matchMedia(`(color: ${t})`).matches)return t;return screen.colorDepth||24}catch{return screen.colorDepth||24}}function _e(){try{return matchMedia("(hover: hover)").matches?"hover":matchMedia("(hover: none)").matches?"none":"unknown"}catch{return"unknown"}}function ke(){try{return matchMedia("(pointer: fine)").matches?"fine":matchMedia("(pointer: coarse)").matches?"coarse":matchMedia("(pointer: none)").matches?"none":"unknown"}catch{return"unknown"}}function Pe(){return D().canRunAccessibility}function Oe(e){try{return Pe()?matchMedia(e):null}catch(e){return null}}function Fe(){try{return!!matchMedia("(prefers-reduced-data: reduce)").matches||!matchMedia("(prefers-reduced-data: no-preference)").matches&&null}catch{return null}}function Ie(){try{const e=["fullscreen","standalone","minimal-ui","browser"];for(const t of e)if(matchMedia(`(display-mode: ${t})`).matches)return t;return"unknown"}catch{return"unknown"}}function De(){try{const e=["opaque","additive","subtractive"];for(const t of e)if(matchMedia(`(environment-blending: ${t})`).matches)return t;return"unknown"}catch{return"unknown"}}function Le(){try{return!!matchMedia("(any-hover: hover)").matches||!matchMedia("(any-hover: none)").matches&&null}catch{return null}}function Ne(){try{return matchMedia("(any-pointer: fine)").matches?"fine":matchMedia("(any-pointer: coarse)").matches?"coarse":matchMedia("(any-pointer: none)").matches?"none":"unknown"}catch{return"unknown"}}function Be(){try{return matchMedia("(prefers-color-scheme: dark)").matches?"dark":matchMedia("(prefers-color-scheme: light)").matches?"light":matchMedia("(prefers-color-scheme: no-preference)").matches?"no-preference":"unknown"}catch{return"unknown"}}function He(){var e;try{for(const t of["enabled","initial-only","none"])if(null===(e=Oe(`(scripting: ${t})`))||void 0===e?void 0:e.matches)return t;return"unknown"}catch{return"unknown"}}function Ve(){var e;try{for(const t of["fast","slow","none"])if(null===(e=Oe(`(update: ${t})`))||void 0===e?void 0:e.matches)return t;return"unknown"}catch{return"unknown"}}function Ue(){const e=be(),t=Se(),n=Ee(),o=Ae(),r=Te(),i=Ce(),a=Me(),c=xe(),s=Re(),l=_e(),u=ke(),d=Fe(),m=Ie(),h=De(),f=Le(),p=Ne(),g=Be(),y=He(),w=Ve(),v=Boolean(t||o||r||a||d||"no-preference"!==n||"no-preference"!==g||i>0),b=[e,c?"hdr":"sdr",`${s}bit`,i>0?`mono${i}`:"color",g,m,h].join("-"),S=[l,u,f?"anyhover":"nohover",p].join("-");return{colorGamut:e,forcedColors:t,contrastPreference:n,reducedMotion:o,reducedTransparency:r,monochromeDepth:i,invertedColors:a,hdrSupport:c,enhancedColorDepth:s,hoverCapability:l,pointerCapability:u,reducedData:d,displayMode:m,environmentBlending:h,anyHover:f,anyPointer:p,colorScheme:g,scripting:y,updateFrequency:w,hasAccessibilityFeatures:v,displayCapabilities:b,interactionCapabilities:S}}function Ge(e){const t=["unknown"!==e.colorGamut,null!==e.forcedColors,"unknown"!==e.contrastPreference,null!==e.reducedMotion,null!==e.reducedTransparency,null!==e.invertedColors,null!==e.hdrSupport,null!==e.reducedData,"unknown"!==e.displayMode,"unknown"!==e.environmentBlending,null!==e.anyHover,"unknown"!==e.colorScheme],n=t.filter(Boolean).length/t.length,o=[null!==e.reducedData,"unknown"!==e.displayMode,"unknown"!==e.environmentBlending,"unknown"!==e.colorScheme,null!==e.hdrSupport],r=o.filter(Boolean).length/o.length,i=[!0===e.forcedColors,!0===e.reducedMotion,!0===e.reducedTransparency,!0===e.invertedColors,!0===e.reducedData,"no-preference"!==e.contrastPreference,"dark"===e.colorScheme,e.monochromeDepth>0],a=i.filter(Boolean).length/i.length,c=["srgb"!==e.colorGamut,!0===e.forcedColors,!0===e.reducedMotion,!0===e.reducedTransparency,!0===e.invertedColors,!0===e.reducedData,e.monochromeDepth>0,!0===e.hdrSupport,"browser"!==e.displayMode,"opaque"!==e.environmentBlending,"dark"===e.colorScheme],s=c.filter(Boolean).length/c.length;return{confidence:Math.round(100*n)/100,uniqueness:Math.round(100*s)/100,accessibilityScore:Math.round(100*a)/100,modernBrowserScore:Math.round(100*r)/100}}var je=Object.freeze({__proto__:null,analyzeAccessibilityFingerprint:Ge,getAccessibilityFingerprint:Ue,getAnyHover:Le,getAnyPointer:Ne,getColorGamut:be,getColorScheme:Be,getContrastPreference:Ee,getDisplayMode:Ie,getEnhancedColorDepth:Re,getEnvironmentBlending:De,getForcedColors:Se,getHDRSupport:xe,getHoverCapability:_e,getInvertedColors:Me,getMonochromeDepth:Ce,getPointerCapability:ke,getReducedData:Fe,getReducedMotion:Ae,getReducedTransparency:Te,getScriptingSupport:He,getUpdateFrequency:Ve,isAccessibilityDetectionAvailable:Pe});function We(e){if("number"==typeof e)return{confidence:0,uniqueness:0,intlApiSupport:0,localeComplexity:0};const t=Object.values(e.intlSupport).filter(Boolean).length/Object.keys(e.intlSupport).length,n=[e.locale,e.calendar,e.numberingSystem,e.timeZone,e.dateStyle,e.timeStyle,e.hourCycle,e.numberLocale,e.currencyDisplay,e.currencySign,e.notation,e.signDisplay,e.listStyle,e.relativeTimeStyle,e.pluralRules],o=n.filter(e=>"unknown"!==e&&""!==e).length/n.length,r=[e.locale.length>2?1:0,"gregory"!==e.calendar?1:0,"latn"!==e.numberingSystem?1:0,e.hour12?1:0,e.localeMatch?0:1].reduce((e,t)=>e+t,0)/5,i=(o+t+r)/3;return{confidence:Math.round(100*o)/100,uniqueness:Math.round(100*i)/100,intlApiSupport:Math.round(100*t)/100,localeComplexity:Math.round(100*r)/100}}const $e="mmMwWLliI0fiflO&1",ze={default:{text:$e},serif:{style:{fontFamily:"serif"},text:$e},sans:{style:{fontFamily:"sans-serif"},text:$e},mono:{style:{fontFamily:"monospace"},text:$e},apple:{style:{font:"-apple-system-body"},text:$e},system:{style:{fontFamily:"system-ui"},text:$e},min:{style:{fontSize:"1px"},text:$e},large:{style:{fontSize:"72px"},text:$e},ui:{style:{fontFamily:"ui-serif"},text:$e},emoji:{style:{fontFamily:"Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji"},text:"🎯🔥💯"},math:{style:{fontFamily:"STIX Two Math, Cambria Math"},text:"∑∆∇∂"},cjk:{style:{fontFamily:"Hiragino Sans, Microsoft YaHei, SimSun"},text:"中文测试"},arabic:{style:{fontFamily:"Tahoma, Arial Unicode MS"},text:"اختبار"},hebrew:{style:{fontFamily:"Tahoma, Arial Unicode MS"},text:"בדיקה"},subpixel:{style:{fontFamily:"Arial",fontSize:"11px",textRendering:"optimizeLegibility"},text:$e},kerning:{style:{fontFamily:"Times",fontSize:"24px",fontKerning:"normal"},text:"AV To"},ligatures:{style:{fontFamily:"Times",fontSize:"24px",fontVariantLigatures:"common-ligatures"},text:"ffi ffl fi fl"}};function Xe(e,t,n){try{const o="mmmmmmmmmmlli",r=qe(e,t,{style:{fontFamily:n},text:o}),i=qe(e,t,{style:{fontFamily:"monospace"},text:o});if(Math.abs(r-i)<1)return"monospace-fallback";const a=qe(e,t,{style:{fontFamily:"sans-serif"},text:o});return Math.abs(r-a)<1?"sans-serif-fallback":"native-font"}catch(e){return"fallback-error"}}function qe(e,t,n){const o=e.createElement("span"),{style:r={},text:i=$e}=n;o.textContent=i,o.style.cssText="position: absolute; left: 0; top: 0; white-space: nowrap; visibility: hidden;",Object.entries(r).forEach(([e,t])=>{void 0!==t&&(o.style[e]=t)}),t.appendChild(o);const a=o.getBoundingClientRect().width;return t.removeChild(o),Math.round(100*a)/100}function Ze(e){const t=[e.default,e.serif,e.sans,e.mono,e.apple,e.system,e.min,e.large,e.ui,e.emoji,e.math,e.cjk,e.arabic,e.hebrew,e.subpixel,e.kerning,e.ligatures],n=t.some(e=>e>0),o=t.filter(e=>e>0).length,r=t.length;let i=n?o/r:0;(e.antiAliasing.enabled||e.systemFontHints.clearType)&&(i+=.2),Object.keys(e.fallbackBehavior).length>0&&(i+=.1),i=Math.min(i,1);const a=e.apple>0||e.system>0,c=[e.subpixel,e.kerning,e.ligatures,e.emoji,e.math].some(e=>e>0)||e.antiAliasing.enabled||e.systemFontHints.clearType,s=t.reduce((e,t)=>e+t,0)/t.length,l=t.reduce((e,t)=>e+Math.pow(t-s,2),0)/t.length;let u=Math.min(l/100,1);e.antiAliasing.smoothingLevel>0&&(u+=.1),e.systemFontHints.hintingLevel>0&&(u+=.1),u=Math.min(u,1);let d="low";const m=e.antiAliasing.smoothingLevel;m>50||e.systemFontHints.clearType?d="high":(m>20||e.systemFontHints.hintingLevel>2)&&(d="medium");const h="error"!==e.isolatedHash&&e.isolatedHash.length>0;return{confidence:Math.round(100*i)/100,uniqueness:Math.round(100*u)/100,hasSystemFonts:a,hasAdvancedFeatures:c,renderingQuality:d,isolationIntegrity:h}}const Ke=["sans-serif-thin","ARNO PRO","Agency FB","Arabic Typesetting","Arial Unicode MS","AvantGarde Bk BT","BankGothic Md BT","Batang","Bitstream Vera Sans Mono","Calibri","Century","Century Gothic","Clarendon","EUROSTILE","Franklin Gothic","Futura Bk BT","Futura Md BT","GOTHAM","Gill Sans","HELV","Haettenschweiler","Helvetica Neue","Humanst521 BT","Leelawadee","Letter Gothic","Levenim MT","Lucida Bright","Lucida Sans","Menlo","MS Mincho","MS Outlook","MS Reference Specialty","MS UI Gothic","MT Extra","MYRIAD PRO","Marlett","Meiryo UI","Microsoft Uighur","Minion Pro","Monotype Corsiva","PMingLiU","Pristina","SCRIPTINA","Segoe UI Light","Serifa","SimHei","Small Fonts","Staccato222 BT","TRAJAN PRO","Univers CE 55 Medium","Vrinda","ZWAdobeF","Arial","Arial Black","Comic Sans MS","Courier New","Georgia","Impact","Palatino Linotype","Tahoma","Times New Roman","Trebuchet MS","Verdana","American Typewriter","Avenir","Baskerville","Big Caslon","Brush Script MT","Copperplate","Didot","Futura","Helvetica","Hoefler Text","Lucida Grande","Marker Felt","Optima","Papyrus","Phosphate","Rockwell","Savoye LET","SignPainter","Skia","Snell Roundhand","Zapfino","DejaVu Sans","DejaVu Sans Mono","DejaVu Serif","Liberation Sans","Liberation Serif","Ubuntu","Ubuntu Mono"],Ye="mmMwWLliI0O&1",Je="48px",Qe=["monospace","sans-serif","serif"];function et(e,t){const n=e.createElement("span");return n.style.position="absolute",n.style.top="0",n.style.left="0",n.style.fontFamily=t,n.style.fontSize=Je,n.style.whiteSpace="nowrap",n.textContent=Ye,n}function tt(e,t,n){return et(e,`'${t}',${n}`)}function nt(e,t){return Qe.some((n,o)=>{const r=e[o],i=t[n];return!(!r||!i||r.offsetWidth===i.width&&r.offsetHeight===i.height)})}function ot(e){const{available:t,method:n,precision:o,totalTested:r,detectionTime:i}=e;let a=.5;"iframe"===n?a=.9:"dom"===n&&(a=.7),a*=o;const c=t.filter(e=>["Calibri","Segoe UI Light","MS UI Gothic","Arial Unicode MS"].includes(e)).length,s=t.filter(e=>["Helvetica Neue","Avenir","Menlo","Zapfino","Baskerville"].includes(e)).length,l=t.filter(e=>["DejaVu Sans","Liberation Sans","Ubuntu"].includes(e)).length,u=t.filter(e=>["sans-serif-thin","Roboto"].includes(e)).length;let d="unknown";c>=2?d="windows":s>=2?d="macos":l>=1?d="linux":u>=1&&(d="android");const m=Math.min(i<100?1:.8,1),h=["Arial","Times New Roman","Helvetica"],f=t.filter(e=>!h.includes(e)),p=Math.min(f.length/10,1);return{confidence:Math.round(100*a)/100,uniqueness:Math.round(100*p)/100,osSignature:d,browserCapabilities:Math.round(100*m)/100}}const rt=Math;function it(e,t,n,o){const r=(n-t)/o;let i=0;for(let n=0;n<o;n++)i+=e(t+(n+.5)*r);return i*r}const at=()=>0;function ct(){const e=rt.acos||at,t=rt.acosh||at,n=rt.asin||at,o=rt.asinh||at,r=rt.atanh||at,i=rt.atan||at,a=rt.sin||at,c=rt.sinh||at,s=rt.cos||at,l=rt.cosh||at,u=rt.tan||at,d=rt.tanh||at,m=rt.exp||at,h=rt.expm1||at,f=rt.log1p||at,p=rt.cbrt||at,g=rt.hypot||at,y=rt.log10||at,w=rt.log2||at;return{acos:e(.12312423423423424),asin:n(.12312423423423424),atan:i(.5),cos:s(10.000000000123),sin:a(-1e300),tan:u(-1e300),acosh:t(1e308),asinh:o(1),atanh:r(.5),cosh:l(1),sinh:c(1),tanh:d(1),exp:m(1),expm1:h(1),log1p:f(10),powPI:rt.pow(rt.PI,-100),cbrt:p(27),hypot:g(3,4),log10:y(100),log2:w(8),acoshPf:(e=>rt.log(e+rt.sqrt(e*e-1)))(1e154),asinhPf:rt.log(1+rt.sqrt(2)),atanhPf:rt.log(3)/2,sinhPf:(rt.exp(1)-rt.exp(-1))/2,coshPf:(rt.exp(1)+rt.exp(-1))/2,expm1Pf:rt.exp(1)-1,tanhPf:(rt.exp(2)-1)/(rt.exp(2)+1),log1pPf:rt.log(11),precision:{float32:rt.abs(0),float64:rt.abs(2-2.0000000000000004),bigNumbers:rt.abs(1),smallNumbers:rt.abs(1e-15+2e-15-3e-15)},largeCos:rt.cos(1e20),largeSin:rt.sin(1e20),largeTan:rt.tan(1e20),integratedAsin:it(rt.asin,-1,1,97),integratedCos:it(rt.cos,0,rt.PI,97),integratedSin:it(rt.sin,-rt.PI,rt.PI,97),integratedTan:it(rt.tan,0,2*rt.PI,97)}}function st(){try{const e=ct();return[e.acos,e.asin,e.atan,e.cos,e.sin,e.tan,e.acosh,e.asinh,e.atanh,e.cosh,e.sinh,e.tanh,e.exp,e.expm1,e.log1p,e.powPI,e.cbrt,e.hypot,e.log10,e.log2,e.precision.float32,e.precision.float64,e.precision.bigNumbers,e.precision.smallNumbers].join(",")}catch{return"math-unavailable"}}function lt(e){let t=.9,n=.8;Object.values(e).some(e=>"number"==typeof e&&0!==e)||(t=.1,n=.1),t*=Object.values(e.precision).reduce((e,t)=>e+("number"!=typeof t||isNaN(t)?0:1),0)/4;let o="high";return t<.3?o="low":t<.7&&(o="medium"),{confidence:Math.round(100*t)/100,stability:o,uniqueness:Math.round(100*n)/100}}function ut(e,t){const n=e.match(new RegExp(`m=${t} [^\\s]+ [^\\s]+ ([^\\n\\r]+)`));return(n?n[1].split(" "):[]).map(n=>{var o;const r=new RegExp(`(rtpmap|fmtp|rtcp-fb):${n} (.+)`,"g"),i=[...e.matchAll(r)];if(!i.length)return null;const a={};for(const e of i){const n=e[1],r=e[2],i=r.split("/");"rtpmap"===n?(a.mimeType=`${t}/${i[0]}`,a.clockRate=Number(i[1]),"audio"===t&&(a.channels=Number(i[2])||1)):"rtcp-fb"===n?(null!==(o=a.feedbackSupport)&&void 0!==o||(a.feedbackSupport=[]),a.feedbackSupport.push(r)):"fmtp"===n&&(a.sdpFmtpLine=r)}return a}).filter(Boolean)}function dt(){try{return!!(window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection)}catch{return!1}}const mt=["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","geolocation","gyroscope","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management"];async function ht(){const e={};return await Promise.allSettled(mt.map(async t=>{try{const n=await navigator.permissions.query({name:t});e[t]=n.state}catch{}})),e}function ft(e){var t;if(0===e.length)return"unknown";const n={};for(const o of e)n[o]=(null!==(t=n[o])&&void 0!==t?t:0)+1;let o=e[0];for(const e in n)n[e]>n[o]&&(o=e);return o}async function pt(){var e;const t=performance.now();try{if(!(null===(e=null===navigator||void 0===navigator?void 0:navigator.permissions)||void 0===e?void 0:e.query))return{value:{},duration:performance.now()-t,error:"Permissions API not available"};const n=await Promise.all([ht(),ht(),ht()]),o={};for(const e of mt){const t=n.map(t=>t[e]).filter(e=>void 0!==e);t.length>0&&(o[e]=ft(t))}return{value:o,duration:performance.now()-t}}catch(e){return{value:{},duration:performance.now()-t,error:e instanceof Error?e.message:"Permissions fingerprinting failed"}}}function gt(){var e;try{return"undefined"!=typeof navigator&&"function"==typeof(null===(e=navigator.permissions)||void 0===e?void 0:e.query)}catch{return!1}}function yt(e){return e.replace(/\\/g,"\\\\").replace(/,/g,"\\,")}async function wt(){const t=performance.now();return new Promise(n=>{try{if("undefined"==typeof window||!window.speechSynthesis||"function"!=typeof window.speechSynthesis.getVoices)return void n({value:{supported:!1,voiceCount:0,voicesHash:"unsupported"},duration:performance.now()-t,error:"Speech Synthesis API not supported"});let o=!1,r=null;const i=i=>{if(!o){o=!0,r&&clearTimeout(r);try{const o=function(e){return e.map(e=>{var t,n,o;return[yt(null!==(t=e.voiceURI)&&void 0!==t?t:""),yt(null!==(n=e.name)&&void 0!==n?n:""),yt(null!==(o=e.lang)&&void 0!==o?o:""),e.localService?"1":"0",e.default?"1":"0"].join(",")}).sort()}(i);n({value:{supported:!0,voiceCount:i.length,voicesHash:c(e(o))},duration:performance.now()-t})}catch(e){n({value:{supported:!0,voiceCount:0,voicesHash:"error"},duration:performance.now()-t,error:e instanceof Error?e.message:"Voice processing failed"})}}},a=window.speechSynthesis.getVoices();if(a.length>0)return void i(a);r=setTimeout(()=>{i(window.speechSynthesis.getVoices())},800);const s=()=>{window.speechSynthesis.removeEventListener("voiceschanged",s),i(window.speechSynthesis.getVoices())};window.speechSynthesis.addEventListener("voiceschanged",s)}catch(e){n({value:{supported:!1,voiceCount:0,voicesHash:"error"},duration:performance.now()-t,error:e instanceof Error?e.message:"Speech synthesis error"})}})}function vt(){var e;try{return"undefined"!=typeof window&&"function"==typeof(null===(e=window.speechSynthesis)||void 0===e?void 0:e.getVoices)}catch{return!1}}const bt=[{exclude:["canvas"],browsers:["firefox","safari","brave"]},{exclude:["audio"],browsers:["safari","samsung"]},{exclude:["fonts"],browsers:["firefox"]},{exclude:["hardware","pluginsEnhanced"],browsers:["brave"]}],St=[{exclude:["system"],browsers:["safari"]},{exclude:["permissions"]}],Et=[{exclude:["speech"],browsers:["brave","firefox"]}];const At=[["aspect-ratio","aspect-ratio: 1"],["container-type","container-type: inline-size"],["content-visibility","content-visibility: auto"],["field-sizing","field-sizing: content"],["subgrid","grid-template-columns: subgrid"],["masonry","grid-template-rows: masonry"],["has-selector","selector(:has(*))"],["is-selector","selector(:is(*))"],["where-selector","selector(:where(*))"],["focus-visible","selector(:focus-visible)"],["color-mix","color: color-mix(in srgb, red, blue)"],["oklch","color: oklch(0.5 0.2 200)"],["relative-color","color: hsl(from red h s l)"],["backdrop-filter","backdrop-filter: blur(10px)"],["text-wrap-balance","text-wrap: balance"],["text-wrap-pretty","text-wrap: pretty"],["overscroll-behavior","overscroll-behavior: none"],["scroll-behavior","scroll-behavior: smooth"],["view-transition","view-transition-name: auto"],["animation-timeline","animation-timeline: scroll()"],["animation-range","animation-range: 10% 90%"],["scroll-timeline","scroll-timeline: --t block"],["font-variant-numeric","font-variant-numeric: oldstyle-nums"],["hyphenate-character","hyphenate-character: auto"],["text-decoration-skip-ink","text-decoration-skip-ink: auto"],["hanging-punctuation","hanging-punctuation: first"],["individual-transform","translate: 10px"],["rotate-property","rotate: 45deg"],["margin-inline","margin-inline: auto"],["inset","inset: 0"],["contain","contain: layout"],["contain-intrinsic-size","contain-intrinsic-size: auto"],["cascade-layers","@layer"],["revert-layer","color: revert-layer"],["scrollbar-width","scrollbar-width: thin"],["scrollbar-color","scrollbar-color: red blue"],["webkit-text-stroke","-webkit-text-stroke: 1px black"],["webkit-line-clamp","-webkit-line-clamp: 2"],["css-nesting","selector(& .child)"],["forced-colors","(forced-colors: active)"]];function Tt(e){try{return e.startsWith("selector(")||e.startsWith("(")||e.startsWith("@"),CSS.supports(e)}catch{return!1}}function Ct(){try{return"undefined"!=typeof CSS&&"function"==typeof CSS.supports}catch{return!1}}const Mt=['video/mp4; codecs="avc1.42E01E"','video/mp4; codecs="avc1.4D001E"','video/mp4; codecs="hev1.1.6.L93.B0"','video/mp4; codecs="vp09.00.10.08"','video/mp4; codecs="av01.0.01M.08"','video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="av01.0.01M.08"','video/ogg; codecs="theora"'],xt=['audio/mp4; codecs="mp4a.40.2"','audio/mp4; codecs="mp4a.40.5"',"audio/mpeg",'audio/ogg; codecs="vorbis"','audio/ogg; codecs="opus"','audio/webm; codecs="opus"','audio/wav; codecs="1"',"audio/flac","audio/aac"],Rt=['video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="av1"','video/webm; codecs="vp9,opus"','audio/webm; codecs="opus"','audio/ogg; codecs="opus"','video/mp4; codecs="avc1"'];function _t(){try{return"undefined"!=typeof document}catch{return!1}}const kt=new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,253,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11]),Pt=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,3,1,0,0,10,12,1,10,0,65,0,65,0,65,0,252,10,0,0,11]),Ot=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,13,3,1,0,0]),Ft=new Uint8Array([0,97,115,109,1,0,0,0,1,3,1,78,0]);function It(e){try{return WebAssembly.validate(e)}catch{return!1}}const Dt=["𝔸","𝔹","ℂ","𝔻","𝔼","𝔽","𝔾","ℍ","𝕀","𝕁","𝕂","𝕃"],Lt=[["β","ψ"],["λ","ε"],["ζ","α"],["ξ","μ"],["ρ","φ"],["κ","τ"],["η","σ"],["ι","ω"],["γ","ν"],["χ","δ"],["θ","π"],["υ","ο"]],Nt=["<math><msubsup><mo>∫</mo><mi>a</mi><mi>b</mi></msubsup><mfrac><mrow><mi>f</mi><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mrow><mi>d</mi><mi>x</mi></mrow></mfrac></math>","<math><mfrac><mrow><mi>π</mi><mo>×</mo><msup><mi>r</mi><mn>2</mn></msup></mrow><mrow><mn>4</mn></mrow></mfrac></math>","<math><mo>[</mo><mtable><mtr><mtd><mi>α</mi></mtd><mtd><mi>β</mi></mtd></mtr><mtr><mtd><mi>γ</mi></mtd><mtd><mi>δ</mi></mtd></mtr></mtable><mo>]</mo></math>",`<math><munderover><mo>∏</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mrow>${Dt.map((e,t)=>{const[n,o]=Lt[t];return`<mmultiscripts><mi>${e}</mi><mi>${n}</mi><mi>${o}</mi></mmultiscripts>`}).join("")}</mrow></math>`,...Dt.map((e,t)=>{const[n,o]=Lt[t];return`<math><mmultiscripts><mi>${e}</mi><mi>${n}</mi><mi>${o}</mi></mmultiscripts></math>`})],Bt=["fontFamily","fontSize","fontWeight","fontStyle","lineHeight","fontVariant","fontStretch","fontKerning","fontFeatureSettings","fontVariantNumeric"];function Ht(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=(0|Math.imul(t,16777619))>>>0;return t.toString(16).padStart(8,"0")}async function Vt(){const t=performance.now();try{if(!Ut())return{value:{supported:!1,dimensionsHash:"",fontStyleHash:""},duration:performance.now()-t,error:"document not available"};if(!function(){try{const e=document.createElement("div");e.style.cssText="position:absolute;visibility:hidden;top:-9999px;left:-9999px",e.innerHTML="<math><mrow><mi>x</mi></mrow></math>",document.body.appendChild(e);const t=e.querySelector("math"),n=null==t?void 0:t.getBoundingClientRect();return document.body.removeChild(e),!!(n&&n.width>0&&n.height>0)}catch{return!1}}())return{value:{supported:!1,dimensionsHash:"",fontStyleHash:""},duration:performance.now()-t};const n=Ht(e(Nt.map(e=>function(e){var t;const n=document.createElement("div");n.style.cssText="position:absolute;visibility:hidden;top:-9999px;left:-9999px;font-size:16px",n.innerHTML=e,document.body.appendChild(n);const o=n.querySelector("math"),r=null!==(t=null==o?void 0:o.getBoundingClientRect())&&void 0!==t?t:{width:0,height:0};return document.body.removeChild(n),{width:Math.round(100*r.width)/100,height:Math.round(100*r.height)/100}}(e))));return{value:{supported:!0,dimensionsHash:n,fontStyleHash:Ht(e(function(){var e;const t=document.createElement("div");t.style.cssText="position:absolute;visibility:hidden;top:-9999px;left:-9999px;font-size:16px",t.innerHTML="<math><mi>x</mi></math>",document.body.appendChild(t);const n=t.querySelector("math"),o=n?window.getComputedStyle(n):null,r={};for(const t of Bt)r[t]=o&&null!==(e=o[t])&&void 0!==e?e:"";return document.body.removeChild(t),r}()))},duration:performance.now()-t}}catch(e){return{value:{supported:!1,dimensionsHash:"",fontStyleHash:""},duration:performance.now()-t,error:e instanceof Error?e.message:"MathML fingerprinting failed"}}}function Ut(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body&&null!==document.body}catch{return!1}}async function Gt(){var e;const t=performance.now();try{if(!jt())return{value:{available:!1},duration:performance.now()-t};const n=navigator.userAgentData,o=await n.getHighEntropyValues(["architecture","bitness","fullVersionList","mobile","model","platformVersion","formFactor","uaFullVersion"]);return{value:{available:!0,brands:null===(e=o.fullVersionList)||void 0===e?void 0:e.map(e=>{var t,n;return{brand:null!==(t=e.brand)&&void 0!==t?t:"",version:null!==(n=e.version)&&void 0!==n?n:""}}),mobile:o.mobile,platform:n.platform,platformVersion:o.platformVersion,architecture:o.architecture,bitness:o.bitness,model:o.model,uaFullVersion:o.uaFullVersion,formFactor:o.formFactor},duration:performance.now()-t}}catch(e){return{value:{available:!1},duration:performance.now()-t,error:e instanceof Error?e.message:"Client Hints fingerprinting failed"}}}function jt(){var e;try{return"undefined"!=typeof navigator&&"userAgentData"in navigator&&"function"==typeof(null===(e=navigator.userAgentData)||void 0===e?void 0:e.getHighEntropyValues)}catch{return!1}}const Wt={gdprMode:!1,includeInvasive:!0,timeout:5e3,debug:!1,excludeComponents:[]},$t=new Map;function zt(e,t){return!t.excludeComponents.includes(e)&&(!(t.gdprMode&&!t.includeInvasive&&["canvas","webgl","audio","fontPreferences","enhancedFonts"].includes(e))&&(["mathFingerprint","dateTimeLocale","accessibilityEnhanced","fontPreferences","enhancedFonts","webrtc","permissions","speech","cssFeatures","mediaCodecs","wasmFeatures","mathml","clientHints"].includes(e),!0))}function Xt(e,t){$t.set(e,t)}async function qt(e,t,n){const o=`${e}_${n.gdprMode}`,r=(i=o,$t.get(i)||null);var i;if(r)return r;const a="webgl"===e,c=["canvas","webgl","audio","hardware","system"].includes(e),s=a?2:c?3:1,l=a?[200,500]:[100,250,500];for(let r=0;r<s;r++)try{const i=n.timeout+r*(a?2e3:1e3),c=new Promise((t,n)=>{setTimeout(()=>n(new Error(`${e} timeout after ${i}ms (attempt ${r+1})`)),i)}),s=await Promise.race([t(),c]);if(null!=s)return Xt(o,s),s;throw new Error(`${e} returned null/undefined result`)}catch(e){const t=r===s-1,n=e instanceof Error?e.message:String(e);if(a&&n.includes("context")){try{const{forceCleanupWebGL:e}=await Promise.resolve().then(function(){return ue});e()}catch(e){}return null}if(t)return null;!n.includes("timeout")&&r<l.length&&await new Promise(e=>setTimeout(e,l[r])),a&&await new Promise(e=>setTimeout(e,100))}return null}async function Zt(t={}){var n,o,r,i,s,u;const d=performance.now(),m={...Wt,...t},h=[],f=[],w={collectionTime:d,gdprMode:m.gdprMode,components:[]},b=[];if(zt("canvas",m)&&W()&&b.push(qt("canvas",j,m).then(e=>({component:"canvas",result:e}))),zt("webgl",m)&&ve()&&b.push(qt("webgl",ye,m).then(e=>({component:"webgl",result:e}))),zt("audio",m)&&g()&&b.push(qt("audio",p,m).then(e=>({component:"audio",result:e}))),zt("fonts",m)&&Y()&&b.push(qt("fonts",()=>async function(e=!0){const t=performance.now();try{let n;if(e&&function(){try{const e=document.createElement("canvas").getContext("2d");return null!==e&&"function"==typeof e.measureText}catch{return!1}}()){const{available:e,measurements:t}=function(){const e=[],t={};for(const n of $)try{const o=q(X,n);t[n]=o,K(n,"canvas")&&e.push(n)}catch(e){continue}return{available:e,measurements:t}}();n={available:e.sort(),method:"advanced",measurements:t}}else n={available:function(){const e=[];for(const t of $)try{K(t,"dom")&&e.push(t)}catch(e){continue}return e}().sort(),method:"basic"};return{value:n,duration:performance.now()-t}}catch(e){return{value:{available:[],method:"basic"},duration:performance.now()-t,error:e instanceof Error?e.message:"Font detection failed"}}}(!m.gdprMode),m).then(e=>({component:"fonts",result:e}))),zt("screen",m)&&ee()&&b.push(qt("screen",Q,m).then(e=>({component:"screen",result:e}))),zt("browser",m)&&N()&&b.push(qt("browser",L,m).then(e=>({component:"browser",result:e}))),zt("webrtc",m)&&dt()&&b.push(qt("webrtc",()=>async function(t=4500){const n=performance.now();return new Promise(o=>{try{const r=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!r)return void o({value:{supported:!1,extensionsHash:"unsupported",audio:{count:0,hash:"unsupported"},video:{count:0,hash:"unsupported"},candidateType:null},duration:performance.now()-n});const i=new r({iceCandidatePoolSize:1,iceServers:[]});i.createDataChannel(""),(async()=>{var r,a;try{const s=await i.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await i.setLocalDescription(s);const l=null!==(r=s.sdp)&&void 0!==r?r:"",u=[...new Set((null!==(a=l.match(/extmap:\d+ [^\n\r]+/g))&&void 0!==a?a:[]).map(e=>e.replace(/extmap:\d+ /,"")))].sort(),d=ut(l,"audio"),m=ut(l,"video"),h={extensionsHash:c(e(u)),audio:{count:d.length,hash:c(e(d))},video:{count:m.length,hash:c(e(m))}},f=Math.floor(.9*t),p=await new Promise(e=>{const t=setTimeout(()=>{i.removeEventListener("icecandidate",n),i.close(),e(null)},f),n=o=>{var r,a;(null===(r=o.candidate)||void 0===r?void 0:r.candidate)&&(clearTimeout(t),i.removeEventListener("icecandidate",n),i.close(),e(null!==(a=o.candidate.type)&&void 0!==a?a:null))};i.addEventListener("icecandidate",n)});o({value:{supported:!0,...h,candidateType:p,timedOut:null===p},duration:performance.now()-n})}catch(e){i.close(),o({value:{supported:!0,extensionsHash:"offer-error",audio:{count:0,hash:"offer-error"},video:{count:0,hash:"offer-error"},candidateType:null},duration:performance.now()-n,error:e instanceof Error?e.message:"WebRTC offer failed"})}})()}catch(e){o({value:{supported:!1,extensionsHash:"error",audio:{count:0,hash:"error"},video:{count:0,hash:"error"},candidateType:null},duration:performance.now()-n,error:e instanceof Error?e.message:"WebRTC error"})}})}(m.timeout),m).then(e=>({component:"webrtc",result:e}))),zt("permissions",m)&>()&&b.push(qt("permissions",pt,m).then(e=>({component:"permissions",result:e}))),!m.gdprMode&&zt("speech",m)&&vt()&&b.push(qt("speech",wt,m).then(e=>({component:"speech",result:e}))),zt("cssFeatures",m)&&Ct()&&b.push(qt("cssFeatures",async()=>function(){const t=performance.now();try{if(!Ct())return{value:{features:{},supportedCount:0,hash:""},duration:performance.now()-t,error:"CSS.supports not available"};const n={};for(const[e,t]of At)n[e]=Tt(t);const o=Object.values(n).filter(Boolean).length,r=function(t){const n=e(t);let o=2166136261;for(let e=0;e<n.length;e++)o^=n.charCodeAt(e),o=(0|Math.imul(o,16777619))>>>0;return o.toString(16).padStart(8,"0")}(n);return{value:{features:n,supportedCount:o,hash:r},duration:performance.now()-t}}catch(e){return{value:{features:{},supportedCount:0,hash:""},duration:performance.now()-t,error:e instanceof Error?e.message:"CSS features fingerprinting failed"}}}(),m).then(e=>({component:"cssFeatures",result:e}))),zt("mediaCodecs",m)&&_t()&&b.push(qt("mediaCodecs",async()=>function(){const t=performance.now();try{if(!_t())return{value:{video:{},audio:{},recorder:{},hash:""},duration:performance.now()-t,error:"document not available"};const n=document.createElement("video"),o={};for(const e of Mt)try{o[e]=n.canPlayType(e)}catch{o[e]=""}const r=document.createElement("audio"),i={};for(const e of xt)try{i[e]=r.canPlayType(e)}catch{i[e]=""}const a={},c="undefined"!=typeof MediaRecorder&&"function"==typeof MediaRecorder.isTypeSupported;for(const e of Rt)try{a[e]=!!c&&MediaRecorder.isTypeSupported(e)}catch{a[e]=!1}const s=function(t,n,o){const r=e({video:t,audio:n,recorder:o});let i=2166136261;for(let e=0;e<r.length;e++)i^=r.charCodeAt(e),i=(0|Math.imul(i,16777619))>>>0;return i.toString(16).padStart(8,"0")}(o,i,a);return{value:{video:o,audio:i,recorder:a,hash:s},duration:performance.now()-t}}catch(e){return{value:{video:{},audio:{},recorder:{},hash:""},duration:performance.now()-t,error:e instanceof Error?e.message:"Media codecs fingerprinting failed"}}}(),m).then(e=>({component:"mediaCodecs",result:e}))),zt("wasmFeatures",m)&&function(){try{return"undefined"!=typeof WebAssembly&&"function"==typeof WebAssembly.validate}catch{return!1}}()&&b.push(qt("wasmFeatures",async()=>function(){const e=performance.now();try{if("undefined"==typeof WebAssembly)return{value:{basic:!1,validate:!1,compile:!1,simd:!1,threads:!1,bulkMemory:!1,exceptions:!1,gc:!1},duration:performance.now()-e};const t="function"==typeof WebAssembly.validate;return{value:{basic:!0,validate:t,compile:"function"==typeof WebAssembly.compile,simd:!!t&&It(kt),threads:"undefined"!=typeof SharedArrayBuffer,bulkMemory:!!t&&It(Pt),exceptions:!!t&&It(Ot),gc:!!t&&It(Ft)},duration:performance.now()-e}}catch(t){return{value:{basic:!1,validate:!1,compile:!1,simd:!1,threads:!1,bulkMemory:!1,exceptions:!1,gc:!1},duration:performance.now()-e,error:t instanceof Error?t.message:"Wasm features fingerprinting failed"}}}(),m).then(e=>({component:"wasmFeatures",result:e}))),zt("mathml",m)&&Ut()&&b.push(qt("mathml",Vt,m).then(e=>({component:"mathml",result:e}))),!m.gdprMode&&zt("clientHints",m)&&jt()&&b.push(qt("clientHints",Gt,m).then(e=>({component:"clientHints",result:e}))),(await Promise.allSettled(b)).forEach((e,t)=>{var n,o;if("fulfilled"===e.status&&e.value.result){const{component:t,result:n}=e.value;w[t]=n,h.push(t)}else{const r=b[t],i=(null===(n=null==r?void 0:r.toString().match(/component: "(\w+)"/))||void 0===n?void 0:n[1])||"unknown";f.push({component:i,error:"rejected"===e.status?(null===(o=e.reason)||void 0===o?void 0:o.message)||"Promise rejected":"Collection failed or timeout"})}}),!m.gdprMode)try{const{detectIncognitoHeuristics:e}=await import("./incognito-B8-4CGqL.js"),t=await e();t&&(w.incognitoDetection={likelihood:t.likelihood,methods:t.methods},h.push("incognito"))}catch(e){f.push({component:"incognito",error:e instanceof Error?e.message:"Incognito detection failed"})}if(zt("hardware",m))try{const e=await import("./hardware-DEB_C62e.js").catch(()=>null);if(null===(n=null==e?void 0:e.isHardwareDetectionAvailable)||void 0===n?void 0:n.call(e)){const t=null===(o=e.getHardwareFingerprint)||void 0===o?void 0:o.call(e);t&&(w.hardware={value:t,duration:0},h.push("hardware"))}else if(!e){const e={hardwareConcurrency:navigator.hardwareConcurrency||0,deviceMemory:navigator.deviceMemory||0,platform:navigator.platform||"unknown"};w.hardware={value:e,duration:0},h.push("hardware")}}catch(e){f.push({component:"hardware",error:e instanceof Error?e.message:"Hardware detection failed"})}if(zt("system",m))try{const{getSystemFingerprint:e,isSystemDetectionAvailable:t}=await import("./system-C8YX5XCh.js");if(t()){const t=e();t&&(w.system={value:t,duration:0},h.push("system"))}}catch(e){f.push({component:"system",error:e instanceof Error?e.message:"System detection failed"})}if(zt("storage",m))try{const{getStorageFingerprint:e,isStorageDetectionAvailable:t}=await import("./storage-DpYaBLNV.js");if(t()){const t=performance.now(),n=await e(),o=performance.now()-t;n&&(w.storage={value:n,duration:o},h.push("storage"))}}catch(e){f.push({component:"storage",error:e instanceof Error?e.message:"Storage detection failed"})}if(zt("math",m))try{const{getCompleteMathFingerprint:e,isMathDetectionAvailable:t}=await import("./math-D6mV6BoT.js");if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(w.math={value:n,duration:o},h.push("math"))}}catch(e){f.push({component:"math",error:e instanceof Error?e.message:"Math fingerprinting failed"})}if(zt("domBlockers",m))try{const{getDomBlockersFingerprint:e,isDomBlockersDetectionAvailable:t}=await import("./dom-blockers-NN7G4m7O.js");if(t()){const t=performance.now(),n=await e({debug:m.debug}),o=performance.now()-t;n&&(w.domBlockers={value:n,duration:o},h.push("domBlockers"))}}catch(e){f.push({component:"domBlockers",error:e instanceof Error?e.message:"DOM blockers detection failed"})}if(zt("accessibility",m))try{const{getAccessibilityFingerprint:e,isAccessibilityDetectionAvailable:t}=await Promise.resolve().then(function(){return je});if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(w.accessibility={value:n,duration:o},h.push("accessibility"))}}catch(e){f.push({component:"accessibility",error:e instanceof Error?e.message:"Accessibility detection failed"})}if(zt("browserApis",m))try{const{getBrowserApisFingerprint:e,isBrowserApisDetectionAvailable:t}=await import("./browser-apis-BFbMjhvj.js");if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(w.browserApis={value:n,duration:o},h.push("browserApis"))}}catch(e){f.push({component:"browserApis",error:e instanceof Error?e.message:"Browser APIs detection failed"})}if(zt("pluginsEnhanced",m))try{const{getEnhancedPluginFingerprint:e,isEnhancedPluginDetectionAvailable:t}=await import("./plugins-enhanced-Bs-rTKz4.js");if(t()){const t=performance.now(),n=e(),o=performance.now()-t;n&&(w.pluginsEnhanced={value:n,duration:o},h.push("pluginsEnhanced"))}}catch(e){f.push({component:"pluginsEnhanced",error:e instanceof Error?e.message:"Enhanced plugin detection failed"})}if(zt("mathFingerprint",m)&&function(){try{return"undefined"!=typeof Math&&"function"==typeof Math.sin}catch{return!1}}())try{const e=performance.now(),t=ct(),n=performance.now()-e;t&&(w.mathFingerprint={value:t,duration:n,analysis:lt(t),hash:st()},h.push("mathFingerprint"))}catch(e){f.push({component:"mathFingerprint",error:e instanceof Error?e.message:"Math fingerprinting failed"})}if(zt("fontPreferences",m)&&function(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}())try{const e=performance.now(),t=await async function(){try{const{document:e,container:t,cleanup:n}=await new Promise((e,t)=>{const n=document.createElement("iframe");n.style.cssText="position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0;",n.srcdoc='<!doctype html>\n <html>\n <head>\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <style>\n body { \n margin: 0; \n padding: 20px; \n width: 4000px;\n text-size-adjust: none;\n -webkit-text-size-adjust: none;\n }\n </style>\n </head>\n <body></body>\n </html>',n.onload=()=>{try{const o=n.contentDocument,r=n.contentWindow;if(!o||!r)return void t(new Error("Cannot access iframe content"));const i=o.body;T()?i.style.zoom=""+1/r.devicePixelRatio:y()&&(i.style.zoom="reset");const a=o.createElement("div");a.textContent=Array(200).fill("word").join(" "),i.appendChild(a),e({document:o,container:i,cleanup:()=>{n.parentNode&&n.parentNode.removeChild(n)}})}catch(e){t(e)}},n.onerror=()=>{t(new Error("Failed to load iframe"))},document.body.appendChild(n)}),o={};for(const[n,r]of Object.entries(ze))try{o[n]=qe(e,t,r)}catch(e){o[n]=0}const r=function(e,t,n="Arial"){try{const t=e.createElement("canvas");t.width=100,t.height=50;const o=t.getContext("2d",{willReadFrequently:!0});if(!o)return{quality:0,antiAliasing:!1,smoothing:0};o.font=`24px "${n}"`,o.fillStyle="#000000",o.fillText("Wg",10.5,30.7);const r=o.getImageData(10,20,30,20).data;let i=0,a=0,c=0;for(let e=0;e<r.length;e+=4){const t=r[e]||0,n=r[e+1]||0,o=r[e+2]||0;(r[e+3]||0)<10||(c++,t===n&&n===o&&t>0&&t<255&&a++,e>4&&Math.abs(t-(r[e-4]||0))>50&&i++)}const s=c>0?a/c:0,l=c>0?100*a/c:0;return{quality:Math.round(l),antiAliasing:s>.1,smoothing:Math.round(100*l)/100}}catch(e){return{quality:0,antiAliasing:!1,smoothing:0}}}(e,0,"Arial"),i=function(e){try{const t=e.createElement("canvas");t.width=100,t.height=50;const n=t.getContext("2d",{willReadFrequently:!0});if(!n)return{clearType:!1,hintingLevel:0,subpixelRendering:!1};const o=["rn","il","WW","mm"];let r=0,i=0,a=0;for(const e of o){n.clearRect(0,0,t.width,t.height),n.font="16px Arial",n.fillStyle="#000",n.fillText(e,10,25);const o=n.getImageData(10,15,40,20).data;for(let e=0;e<o.length;e+=12){const t=o[e]||0,n=o[e+1]||0,c=o[e+2]||0,s=o[e+4]||0,l=o[e+5]||0,u=o[e+6]||0;(Math.abs(t-n)>20||Math.abs(n-c)>20)&&r++,Math.abs(t-s)+Math.abs(n-l)+Math.abs(c-u)>50&&i++,(t>0&&t<255||n>0&&n<255||c>0&&c<255)&&a++}}return{clearType:r>10,hintingLevel:Math.min(Math.round(a/10),5),subpixelRendering:i>5}}catch(e){return{clearType:!1,hintingLevel:0,subpixelRendering:!1}}}(e),a={},s=["Arial","Helvetica","Times New Roman","Georgia","Courier New"];for(const n of s)try{a[n]=Xe(e,t,n)}catch(e){a[n]="fallback-error"}const l=c([JSON.stringify(o),JSON.stringify(r),JSON.stringify(i),JSON.stringify(a)].join("|"));return n(),{...o,antiAliasing:{enabled:r.antiAliasing,type:i.clearType?"cleartype":r.antiAliasing?"standard":"none",smoothingLevel:r.smoothing},systemFontHints:i,fallbackBehavior:a,isolatedHash:l}}catch(e){return{...Object.keys(ze).reduce((e,t)=>(e[t]=0,e),{}),antiAliasing:{enabled:!1,type:"unknown",smoothingLevel:0},systemFontHints:{clearType:!1,hintingLevel:0,subpixelRendering:!1},fallbackBehavior:{},isolatedHash:"error"}}}(),n=performance.now()-e;t&&(w.fontPreferences={value:t,duration:n,analysis:Ze(t),hash:(S=t,S.isolatedHash&&"error"!==S.isolatedHash?S.isolatedHash:[...[S.default,S.serif,S.sans,S.mono,S.apple,S.system,S.min,S.large,S.ui,S.emoji,S.math,S.cjk,S.arabic,S.hebrew,S.subpixel,S.kerning,S.ligatures].map(e=>Math.round(e)),S.antiAliasing.enabled?1:0,S.systemFontHints.clearType?1:0,S.systemFontHints.hintingLevel,Math.round(S.antiAliasing.smoothingLevel)].join(","))},h.push("fontPreferences"))}catch(e){f.push({component:"fontPreferences",error:e instanceof Error?e.message:"Font preferences detection failed"})}var S,E,M;if(zt("dateTimeLocale",m)&&function(){try{return"undefined"!=typeof window&&void 0!==window.Intl}catch{return!1}}())try{const e=performance.now(),t=function(){const e=function(){try{if(!window.Intl)return-1;const e=window.Intl.DateTimeFormat;if(!e)return-2;const t=(new e).resolvedOptions();return t.locale||""===t.locale?{locale:t.locale||"unknown",calendar:t.calendar||"unknown",numberingSystem:t.numberingSystem||"unknown",timeZone:t.timeZone||"unknown",hourCycle:t.hourCycle||"unknown",hour12:void 0!==t.hour12&&t.hour12}:-3}catch(e){return-2}}();if("number"==typeof e)return e;const t=function(){try{if(!window.Intl||!window.Intl.NumberFormat)return-4;const e=(new Intl.NumberFormat).resolvedOptions(),t=new Intl.NumberFormat(void 0,{style:"currency",currency:"USD"}).resolvedOptions();return{numberLocale:e.locale||"unknown",currencyDisplay:t.currencyDisplay||"unknown",currencySign:t.currencySign||"unknown",notation:e.notation||"unknown",signDisplay:e.signDisplay||"unknown"}}catch(e){return-4}}(),n="number"==typeof t?{}:t,o=function(){const e={listStyle:"unknown",relativeTimeStyle:"unknown",pluralRules:"unknown"};try{if(window.Intl&&window.Intl.ListFormat){const t=(new window.Intl.ListFormat).resolvedOptions();e.listStyle=t.style||"unknown"}}catch(e){}try{if(window.Intl&&window.Intl.RelativeTimeFormat){const t=(new window.Intl.RelativeTimeFormat).resolvedOptions();e.relativeTimeStyle=t.style||"unknown"}}catch(e){}try{if(window.Intl&&window.Intl.PluralRules){const t=(new window.Intl.PluralRules).select(1);e.pluralRules=t||"unknown"}}catch(e){}return e}(),r=function(){const e={DateTimeFormat:!1,NumberFormat:!1,RelativeTimeFormat:!1,ListFormat:!1,PluralRules:!1,Collator:!1};try{window.Intl&&(e.DateTimeFormat="function"==typeof window.Intl.DateTimeFormat,e.NumberFormat="function"==typeof window.Intl.NumberFormat,e.RelativeTimeFormat="function"==typeof window.Intl.RelativeTimeFormat,e.ListFormat="function"==typeof window.Intl.ListFormat,e.PluralRules="function"==typeof window.Intl.PluralRules,e.Collator="function"==typeof window.Intl.Collator)}catch(e){}return e}(),i=navigator.language||"unknown",a=e.locale===i;let c="unknown",s="unknown";try{if(window.Intl&&"function"==typeof window.Intl.DateTimeFormat){const e=new Intl.DateTimeFormat(void 0,{dateStyle:"long"}),t=new Intl.DateTimeFormat(void 0,{timeStyle:"long"}),n=e.resolvedOptions(),o=t.resolvedOptions();c=n.dateStyle||"unknown",s=o.timeStyle||"unknown"}}catch(e){}return{locale:e.locale||"unknown",calendar:e.calendar||"unknown",numberingSystem:e.numberingSystem||"unknown",timeZone:e.timeZone||"unknown",dateStyle:c,timeStyle:s,hourCycle:e.hourCycle||"unknown",hour12:e.hour12||!1,numberLocale:n.numberLocale||e.locale||"unknown",currencyDisplay:n.currencyDisplay||"unknown",currencySign:n.currencySign||"unknown",notation:n.notation||"unknown",signDisplay:n.signDisplay||"unknown",listStyle:o.listStyle||"unknown",relativeTimeStyle:o.relativeTimeStyle||"unknown",pluralRules:o.pluralRules||"unknown",navigatorLanguage:i,localeMatch:a,intlSupport:r}}(),n=performance.now()-e;t&&"object"==typeof t&&(w.dateTimeLocale={value:t,duration:n,analysis:We(t),hash:(E=t,"number"==typeof E?`status-${E}`:[E.locale,E.calendar,E.numberingSystem,E.timeZone,E.hourCycle,E.hour12?"1":"0",E.localeMatch?"1":"0",Object.values(E.intlSupport).map(e=>e?"1":"0").join("")].join("|"))},h.push("dateTimeLocale"))}catch(e){f.push({component:"dateTimeLocale",error:e instanceof Error?e.message:"DateTime locale detection failed"})}if(zt("accessibilityEnhanced",m)&&Pe())try{const e=performance.now(),t=Ue(),n=performance.now()-e;t&&(w.accessibilityEnhanced={value:t,duration:n,analysis:Ge(t)},h.push("accessibilityEnhanced"))}catch(e){f.push({component:"accessibilityEnhanced",error:e instanceof Error?e.message:"Enhanced accessibility detection failed"})}if(zt("enhancedFonts",m)&&function(){try{return"undefined"!=typeof document&&"function"==typeof document.createElement&&void 0!==document.body}catch{return!1}}())try{const e=performance.now(),t=await async function(){const e=performance.now();try{const{document:t,body:n,cleanup:o}=await new Promise((e,t)=>{const n=document.createElement("iframe");n.style.cssText="position: absolute; left: -9999px; top: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none;",n.onload=()=>{try{const t=n.contentDocument;if(!t)throw new Error("Cannot access iframe document");const o=t.body;if(!o)throw new Error("Iframe body not available");o.style.fontSize=Je,o.style.margin="0",o.style.padding="0",e({document:t,body:o,cleanup:()=>{n.parentNode&&n.parentNode.removeChild(n)}})}catch(e){t(e)}},n.onerror=()=>{t(new Error("Failed to load font measurement iframe"))},document.body.appendChild(n)});try{const o=t.createElement("div");o.style.setProperty("visibility","hidden","important");const r=Qe.map(e=>et(t,e));r.forEach(e=>o.appendChild(e));const i={};for(const e of Ke)i[e]=Qe.map(n=>tt(t,e,n)),i[e].forEach(e=>o.appendChild(e));n.appendChild(o);const a={};Qe.forEach((e,t)=>{const n=r[t];n&&(a[e]={width:n.offsetWidth,height:n.offsetHeight})});const c=[],s={};for(const e of Ke){const t=i[e];t&&(nt(t,a)&&c.push(e),t.length>0&&t[0]&&(s[e]={width:t[0].offsetWidth,height:t[0].offsetHeight}))}const l=performance.now()-e,u=Object.values(s).map(e=>e.width);return{available:c,method:"iframe",measurements:s,precision:new Set(u).size/u.length,totalTested:Ke.length,detectionTime:l}}finally{o()}}catch(t){return function(e){const t=[],n={};try{const e=document.createElement("div");e.style.cssText="position: absolute; left: -9999px; top: -9999px; visibility: hidden;";const o={};Qe.forEach(t=>{const n=document.createElement("span");n.style.fontFamily=t,n.style.fontSize=Je,n.style.whiteSpace="nowrap",n.textContent=Ye,e.appendChild(n),document.body.appendChild(e),o[t]={width:n.offsetWidth,height:n.offsetHeight},document.body.removeChild(e),e.removeChild(n)});for(const r of Ke){let i=!1;for(const t of Qe){const a=document.createElement("span");a.style.fontFamily=`'${r}',${t}`,a.style.fontSize=Je,a.style.whiteSpace="nowrap",a.textContent=Ye,e.appendChild(a),document.body.appendChild(e);const c={width:a.offsetWidth,height:a.offsetHeight};n[r]=c;const s=o[t];if(!s||c.width===s.width&&c.height===s.height||(i=!0),document.body.removeChild(e),e.removeChild(a),i)break}i&&t.push(r)}}catch(e){}const o=performance.now()-e,r=Object.values(n).map(e=>e.width),i=new Set(r).size;return{available:t,method:"dom",measurements:n,precision:r.length>0?i/r.length:0,totalTested:Ke.length,detectionTime:o}}(e)}}(),n=performance.now()-e;t&&(w.enhancedFonts={value:t,duration:n,analysis:ot(t),hash:(M=t,`${M.available.sort().join(",")}|${M.method}|${M.precision.toFixed(2)}`)},h.push("enhancedFonts"))}catch(e){f.push({component:"enhancedFonts",error:e instanceof Error?e.message:"Enhanced font detection failed"})}{const e=function(e){const t=function(){try{return v()?"brave":C()?"firefox":x()?"safari":A()?"samsung":"other"}catch{return"other"}}(),n=new Set,o=e=>{for(const o of e)if(!o.browsers||o.browsers.includes(t))for(const e of o.exclude)n.add(e)};return o(Et),function(){try{return window!==window.top}catch{return!0}}()&&o(St),function(e){return(null!=e?e:0)>=.6}(e)&&o(bt),n}(null!==(i=null===(r=w.incognitoDetection)||void 0===r?void 0:r.likelihood)&&void 0!==i?i:0);if(e.size>0)for(const t of e)if(void 0!==w[t]){w[t]=null;const e=h.indexOf(t);-1!==e&&(h.splice(e,1),f.push({component:t,error:"excluded by stabilization rules"}))}}const R={};let _;h.forEach(e=>{const t=w[e];t&&t.value&&(R[e]=t.value)});try{const{calculateConfidence:e}=await import("./confidence-B8ji6M6W.js"),t=[...h.map(e=>{var t,n;return{component:e,success:!0,duration:(null===(t=w[e])||void 0===t?void 0:t.duration)||0,value:null===(n=w[e])||void 0===n?void 0:n.value}}),...f.map(e=>({component:e.component,success:!1,duration:0,error:e.error}))];_=e(t,{requireMinimumComponents:6,penalizeMissingCore:!0,adjustForIncognito:!0}),w.confidence={score:_.score,level:_.level,factors:_.factors,recommendations:_.recommendations}}catch(e){const t=h.length/(h.length+f.length||1);w.confidence={score:t>=.8?.95:t>=.6?.8:.5,level:t>=.8?"High":t>=.6?"Medium":"Low",factors:{componentCount:h.length,weightedScore:t,stabilityScore:t,entropyScore:t,spoofResistanceScore:t},recommendations:t<.8?["Enable more fingerprinting components"]:[]}}const k={...w,hash:"",components:h,collectionTime:performance.now()-d},O={success:h.length>0,collectedComponents:h,failedComponents:f,confidence:_||w.confidence};if(h.length>0){const t=null===(s=k.browser)||void 0===s?void 0:s.value,n=null===(u=k.screen)||void 0===u?void 0:u.value,o=(null==t?void 0:t.userAgent)||"",r=(()=>{var e;const t=!0===(null===(e=navigator.userAgentData)||void 0===e?void 0:e.mobile),o=navigator.maxTouchPoints||0,r=(null==n?void 0:n.width)||0,i=(null==n?void 0:n.height)||0,a=Math.min(r,i);return Math.max(r,i),t?"mobile":o>0?a<=480?"mobile":"tablet":a>1024?"desktop":a<=480?"mobile":"desktop"})();let i={};try{const{collectDeviceSignals:e}=await import("./device-signals-OERVSprN.js");i=e()}catch(e){}const c={ua:(()=>{try{return P().family}catch{const e=o,t=e.match(/(chrome|safari|firefox|edge|edg|brave|opera|opr|chromium)/i);return((null==t?void 0:t[1])||e.split(" ")[0]||"unknown").toLowerCase()}})(),timezone:(null==t?void 0:t.timezone)||"unknown",primaryLanguage:(()=>{try{const e=null==t?void 0:t.languages;return Array.isArray(e)&&e.length>0&&e[0]?e[0].toLowerCase().split("-")[0]:"undefined"!=typeof navigator&&navigator.language?navigator.language.toLowerCase().split("-")[0]:"unknown"}catch{return"unknown"}})(),platform:((null==t?void 0:t.platform)||"unknown").toLowerCase(),deviceType:r,hardware:(()=>{var e;const t=i.hardwareConcurrency,n=i.deviceMemory;if(!t&&!n)return;const o=t?(e=>e>=32?"workstation":e>=20?"ultra":e>=16?"high":e>=12?"premium":e>=8?"mid":e>=6?"normal":e>=4?"basic":e>=2?"low":"minimal")(t):"unknown",r=n?(e=>e>=64?"workstation":e>=32?"ultra":e>=24?"high":e>=16?"premium":e>=12?"mid":e>=8?"normal":e>=4?"basic":e>=2?"low":"minimal")(n):"unknown";var a;return{cores:o,memory:r,arch:void 0===(a=i.architecture)?"unknown":255===a?"arm64":0===a?"x86_64":"other",class:((e,t)=>"workstation"!==e&&"ultra"!==e||"workstation"!==t&&"ultra"!==t?"high"!==e&&"premium"!==e||"high"!==t&&"premium"!==t&&"ultra"!==t?"mid"!==e&&"normal"!==e||"mid"!==t&&"normal"!==t&&"premium"!==t?"basic"!==e&&"low"!==e||"basic"!==t&&"low"!==t&&"normal"!==t?"minimal"===e||"minimal"===t?"mobile":"mixed":"budget":"mainstream":"enthusiast":"professional")(o,r),touch:(null===(e=i.touchSupport)||void 0===e?void 0:e.maxTouchPoints)?i.touchSupport.maxTouchPoints>=10?"multi":i.touchSupport.maxTouchPoints>=5?"standard":"basic":"none"}})(),screenFrame:(null==i?void 0:i.screenFrame)?{top:i.screenFrame.top||0,right:i.screenFrame.right||0,bottom:i.screenFrame.bottom||0,left:i.screenFrame.left||0}:void 0,display:(()=>{const e=i.colorDepth,t=i.colorGamut,n=(e=>e?e>=48?"ultra_high":e>=32?"high":e>=24?"normal":e>=16?"basic":"low":"unknown")(e),o=(e=>{if(!e)return"unknown";switch(e){case"rec2020":return"professional";case"p3":return"enhanced";case"srgb":return"standard";default:return"unknown"}})(t);return{depth:n,gamut:o,class:((e,t)=>"ultra_high"===e||"professional"===t?"professional":"high"===e||"enhanced"===t?"premium":"normal"===e&&"standard"===t?"standard":"basic"===e?"basic":"legacy")(n,o)}})()},d=[c.ua||"",c.platform||"",c.deviceType||"",c.timezone||"",c.primaryLanguage||""].filter(Boolean);if(d.length>=3){const e=d.join("|");let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)&4294967295;c._entropy=Math.abs(t).toString(36).substring(0,8)}m.debug||"undefined"!=typeof window&&window._rabbitTrackerDebug;const h=function(t){return a(e(l(t)))}(c,m.debug),f=["canvas","webgl","audio","mathFingerprint","fontPreferences","enhancedFonts","dateTimeLocale","accessibilityEnhanced","domBlockers","pluginsEnhanced","speech","clientHints"],p={};for(const[e,t]of Object.entries(R))f.includes(e)||(p[e]=t);const g=(F={...p,_stableCore:c},m.debug,a(e(l(F))));k.hash=g,m.debug,O.data={...k,stableCoreHash:h,stableCoreVector:c},m.debug&&(null==_||_.recommendations.length)}else O.error="No components could be collected";var F;return O}function Kt(e){return function(e){const t=(e.length>=32?e:(e+e+e+e).substring(0,32)).substring(0,32).split("");return t[12]="4",t[16]=(3&parseInt(t[16]||"0",16)|8).toString(16),`${t.slice(0,8).join("")}-${t.slice(8,12).join("")}-${t.slice(12,16).join("")}-${t.slice(16,20).join("")}-${t.slice(20,32).join("")}`}(e.hash)}async function Yt(){return Zt({gdprMode:!0,includeInvasive:!1,excludeComponents:["canvas","webgl","audio"],timeout:2e3})}async function Jt(){return Zt({gdprMode:!1,includeInvasive:!0,timeout:5e3})}function Qt(){$t.clear()}function en(){return ee()&&N()}function tn(){const e=[];return W()&&e.push("canvas"),ve()&&e.push("webgl"),g()&&e.push("audio"),Y()&&e.push("fonts"),ee()&&e.push("screen"),N()&&e.push("browser"),dt()&&e.push("webrtc"),gt()&&e.push("permissions"),vt()&&e.push("speech"),e}export{x as a,R as b,C as c,Zt as d,Kt as e,Yt as f,D as g,Jt as h,T as i,Qt as j,en as k,tn as l};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Zaplier SDK
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
3
|
* Advanced privacy-first tracking with code splitting
|
|
4
4
|
* (c) 2026 Zaplier Team
|
|
5
5
|
*/
|
|
6
|
-
export{j as clearFingerprintCache,d as collectFingerprint,e as generateVisitorIdFromFingerprint,l as getAvailableComponents,h as getCompleteFingerprint,f as getLightweightFingerprint,k as isFingerprintingAvailable}from"./fingerprint-
|
|
6
|
+
export{j as clearFingerprintCache,d as collectFingerprint,e as generateVisitorIdFromFingerprint,l as getAvailableComponents,h as getCompleteFingerprint,f as getLightweightFingerprint,k as isFingerprintingAvailable}from"./fingerprint-BmsWDNK6.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function n(){try{if("deviceMemory"in navigator){const n=navigator.deviceMemory;return"number"==typeof n?n:null}return null}catch{return null}}function r(){try{if("hardwareConcurrency"in navigator){const n=navigator.hardwareConcurrency;return"number"==typeof n?n:null}return null}catch{return null}}function e(){try{return[navigator.platform,navigator.userAgent,navigator.userAgent.includes("ARM")?"ARM":null,navigator.userAgent.includes("arm64")?"ARM64":null,navigator.userAgent.includes("aarch64")?"ARM64":null,navigator.userAgent.includes("x86_64")?"x86_64":null,navigator.userAgent.includes("WOW64")?"x86_64":null,navigator.userAgent.includes("Win64")?"x86_64":null,navigator.userAgent.includes("Intel")?"Intel":null].filter(Boolean).join("|")||"unknown"}catch{return"unknown"}}function t(){try{return navigator.maxTouchPoints||0}catch{return 0}}function u(){return"undefined"!=typeof navigator}function a(){var u,a;return{deviceMemory:n(),hardwareConcurrency:r(),architecture:e(),maxTouchPoints:t(),platform:navigator.platform||"unknown",jsHeapSizeLimit:null!==(a=null===(u=performance.memory)||void 0===u?void 0:u.jsHeapSizeLimit)&&void 0!==a?a:0,architectureFloat32:(()=>{var n;try{const r=new Float32Array(1);return r[0]=1/0,r[0]-=r[0],null!==(n=new Uint8Array(r.buffer)[3])&&void 0!==n?n:-1}catch{return-1}})()}}export{e as getArchitecture,n as getDeviceMemory,r as getHardwareConcurrency,a as getHardwareFingerprint,t as getMaxTouchPoints,u as isHardwareDetectionAvailable};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Zaplier SDK
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
3
|
* Advanced privacy-first tracking with code splitting
|
|
4
4
|
* (c) 2026 Zaplier Team
|
|
5
5
|
*/
|
|
6
|
-
class
|
|
6
|
+
class t{constructor(t,e={}){this.clicks=[],this.scrollData=[],this.mouseMoves=[],this.lastMouseMove=0,this.maxScrollDepth=0,this.isActive=!1,this.recentClicks=[],this.handleClick=t=>{if(!this.config.trackClicks)return;const e=t.target;e.getBoundingClientRect();const i=window.pageXOffset||document.documentElement.scrollLeft,s=window.pageYOffset||document.documentElement.scrollTop,o={x:t.clientX,y:t.clientY,absoluteX:t.clientX+i,absoluteY:t.clientY+s,element:this.getElementSelector(e),timestamp:Date.now(),button:t.button};this.config.trackRageClicks&&this.detectRageClick(o.x,o.y,o.timestamp)&&(o.rageClick=!0),this.clicks.push(o),this.clicks.length>this.config.maxClickBuffer&&(this.clicks=this.clicks.slice(-this.config.maxClickBuffer))},this.handleScroll=()=>{if(!this.config.trackScrollDepth)return;const t=this.calculateScrollDepth();this.maxScrollDepth=Math.max(this.maxScrollDepth,t),this.scrollData.push({depth:t,maxDepth:this.maxScrollDepth,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}}),this.scrollData.length>100&&(this.scrollData=this.scrollData.slice(-50))},this.handleMouseMove=t=>{if(!this.config.trackMouseMoves)return;const e=Date.now();e-this.lastMouseMove<this.config.mouseMoveThrottle||(this.lastMouseMove=e,this.mouseMoves.push({x:t.clientX,y:t.clientY,timestamp:e}),this.mouseMoves.length>200&&(this.mouseMoves=this.mouseMoves.slice(-100)))},this.handleResize=()=>{const t=this.calculateScrollDepth();this.scrollData.push({depth:t,maxDepth:this.maxScrollDepth,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}})},this.sessionId=t,this.config={enabled:!0,trackClicks:!0,trackScrollDepth:!0,trackMouseMoves:!1,trackRageClicks:!0,mouseMoveThrottle:200,batchInterval:1e4,maxClickBuffer:500,rageClickThreshold:3,rageClickTimeWindow:1e3,...e}}start(){return!(!this.config.enabled||this.isActive||(this.isActive=!0,this.setupEventListeners(),this.startBatchTimer(),this.trackInitialViewport(),0))}stop(){if(this.isActive&&(this.isActive=!1,this.removeEventListeners(),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.clicks.length>0||this.scrollData.length>0||this.mouseMoves.length>0)){try{if("undefined"!=typeof navigator&&navigator.sendBeacon&&this.config.apiEndpoint&&this.config.token){const t=`${this.config.apiEndpoint}/heatmap/track?token=${encodeURIComponent(this.config.token)}`;let e;try{const t=new URL(window.location.href);e=t.origin+t.pathname}catch{e=window.location.href}const i=Math.max(document.body.scrollWidth,document.body.offsetWidth,document.documentElement.clientWidth,document.documentElement.scrollWidth,document.documentElement.offsetWidth),s=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight),o={sessionId:this.sessionId,pageMetadata:{url:window.location.href,normalizedUrl:e,width:i,height:s,title:document.title,viewport:{width:window.innerWidth,height:window.innerHeight},documentSize:{width:i,height:s}},clicks:[...this.clicks],scrollData:[...this.scrollData],mouseMoves:this.config.trackMouseMoves?[...this.mouseMoves]:[],maxScrollDepth:this.maxScrollDepth,timestamp:Date.now()},n=new Blob([JSON.stringify(o)],{type:"application/json"});if(navigator.sendBeacon(t,n))return this.clicks=[],this.scrollData=[],void(this.mouseMoves=[])}}catch{}this.sendBatch()}}setupEventListeners(){this.config.trackClicks&&document.addEventListener("click",this.handleClick,!0),this.config.trackScrollDepth&&(window.addEventListener("scroll",this.handleScroll,{passive:!0}),document.addEventListener("scroll",this.handleScroll,{passive:!0})),this.config.trackMouseMoves&&document.addEventListener("mousemove",this.handleMouseMove,{passive:!0}),window.addEventListener("resize",this.handleResize),window.addEventListener("orientationchange",this.handleResize)}removeEventListeners(){document.removeEventListener("click",this.handleClick,!0),window.removeEventListener("scroll",this.handleScroll),document.removeEventListener("scroll",this.handleScroll),document.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),window.removeEventListener("orientationchange",this.handleResize)}trackInitialViewport(){const t=this.calculateScrollDepth();this.scrollData.push({depth:t,maxDepth:t,timestamp:Date.now(),viewport:{width:window.innerWidth,height:window.innerHeight}})}calculateScrollDepth(){const t=window.pageYOffset||document.documentElement.scrollTop,e=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight),i=window.innerHeight;return e<=i?100:Math.min(100,Math.round((t+i)/e*100))}detectRageClick(t,e,i){const s=this.config.rageClickTimeWindow;this.recentClicks=this.recentClicks.filter(t=>i-t.timestamp<=s);const o=this.recentClicks.filter(i=>Math.sqrt(Math.pow(i.x-t,2)+Math.pow(i.y-e,2))<=50);return this.recentClicks.push({x:t,y:e,timestamp:i}),o.length>=this.config.rageClickThreshold-1}getElementSelector(t){if(t.id)return`#${t.id}`;if(t.className&&"string"==typeof t.className){const e=t.className.split(" ").filter(t=>t.length>0);if(e.length>0)return`.${e.slice(0,2).join(".")}`}const e=t.tagName.toLowerCase();return t.parentElement?`${e}:nth-child(${Array.from(t.parentElement.children).indexOf(t)+1})`:e}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(0===this.clicks.length&&0===this.scrollData.length&&0===this.mouseMoves.length)return;const t=Math.max(document.body.scrollWidth,document.body.offsetWidth,document.documentElement.clientWidth,document.documentElement.scrollWidth,document.documentElement.offsetWidth),e=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight);let i;try{const t=new URL(window.location.href);i=t.origin+t.pathname}catch{i=window.location.href}const s={sessionId:this.sessionId,pageMetadata:{url:window.location.href,normalizedUrl:i,width:t,height:e,title:document.title,viewport:{width:window.innerWidth,height:window.innerHeight},documentSize:{width:t,height:e}},clicks:[...this.clicks],scrollData:[...this.scrollData],mouseMoves:this.config.trackMouseMoves?[...this.mouseMoves]:[],maxScrollDepth:this.maxScrollDepth,timestamp:Date.now()};this.clicks=[],this.scrollData=[],this.mouseMoves=[],this.sendToBackend(s)}setAntiAdblockManager(t){this.antiAdblockManager=t}async sendToBackend(t){try{if(this.antiAdblockManager&&(await this.antiAdblockManager.send(t,"/heatmap/track")).success)return;const e=this.config.apiEndpoint?`${this.config.apiEndpoint}/heatmap/track?token=${encodeURIComponent(this.config.token||"")}`:"/api/heatmap/track";(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).ok}catch(t){}}getStats(){const t=this.clicks.filter(t=>t.rageClick).length;return{clickCount:this.clicks.length,maxScrollDepth:this.maxScrollDepth,isRecording:this.isActive,mouseMovements:this.mouseMoves.length,rageClicks:t}}enableMouseTracking(){this.config.trackMouseMoves||(this.config.trackMouseMoves=!0,this.isActive&&document.addEventListener("mousemove",this.handleMouseMove,{passive:!0}))}disableMouseTracking(){this.config.trackMouseMoves&&(this.config.trackMouseMoves=!1,document.removeEventListener("mousemove",this.handleMouseMove),this.mouseMoves=[])}isRecording(){return this.isActive}}export{t as HeatmapEngine};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
async function t(){var t,e;const o=[];let n=0;const a=await async function(){try{const t="__incognito_test__",e=Date.now().toString();localStorage.setItem(t,e);const o=localStorage.getItem(t);return localStorage.removeItem(t),o===e}catch{return!1}}();a||(n+=.25,o.push("localStorage_blocked"));const s=await async function(){try{const t="__incognito_test__",e=Date.now().toString();sessionStorage.setItem(t,e);const o=sessionStorage.getItem(t);return sessionStorage.removeItem(t),o===e}catch{return!1}}();s||(n+=.2,o.push("sessionStorage_blocked"));const r=await async function(){try{return!!window.indexedDB&&new Promise(t=>{const e=indexedDB.open("__incognito_test__",1);e.onsuccess=()=>{e.result.close(),indexedDB.deleteDatabase("__incognito_test__"),t(!0)},e.onerror=()=>t(!1),e.onblocked=()=>t(!1)})}catch{return!1}}();r||(n+=.15,o.push("indexedDB_blocked"));const i=function(){try{const t="__incognito_test__",e=Date.now().toString();document.cookie=`${t}=${e}; SameSite=Strict; path=/`;const o=-1!==document.cookie.indexOf(`${t}=${e}`);return document.cookie=`${t}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`,o}catch{return!1}}();i||(n+=.2,o.push("cookies_blocked")),function(){try{return!(!Array.isArray(navigator.languages)||1!==navigator.languages.length||!navigator.language)&&navigator.languages[0]===navigator.language}catch{return!1}}()&&(n+=.25,o.push("languages_single_value"));try{if(a){const t="__incognito_persistence_test__",e="persist_test";localStorage.setItem(t,e);const a=localStorage.getItem(t)===e;localStorage.removeItem(t),a||(n+=.2,o.push("localStorage_not_persistent"))}}catch{}try{if(null===(t=navigator.storage)||void 0===t?void 0:t.estimate){const t=await navigator.storage.estimate(),e=(null==t?void 0:t.quota)||0,a=(null==t?void 0:t.usage)||0;0===e?(n+=.3,o.push("storage_quota_zero")):e>0&&e<125829120&&(n+=.25,o.push("storage_quota_low")),0===a&&e>0&&(n+=.1,o.push("storage_usage_zero"))}else o.push("storage_estimate_unavailable")}catch{o.push("storage_estimate_error")}"serviceWorker"in navigator||(n+=.1,o.push("service_worker_absent")),"caches"in window||(n+=.05,o.push("cache_api_absent"));try{if(null===(e=navigator.permissions)||void 0===e?void 0:e.query){const t=await navigator.permissions.query({name:"notifications"});"denied"===(null==t?void 0:t.state)&&(n+=.05,o.push("notifications_denied"))}}catch{o.push("permissions_query_error")}(function(){try{return!!window.showOpenFilePicker}catch{return!1}})()||o.push("fs_access_absent"),"connection"in navigator||o.push("network_info_absent"),n=Math.max(0,Math.min(1,n));const c=[a,s,r,i].filter(t=>!t).length;return c>=3?n=Math.max(n,.85):c>=2&&(n=Math.max(n,.7)),o.includes("languages_single_value")&&(c>=1||n>=.2)&&(n=Math.max(n,.5)),{likelihood:n,methods:o}}export{t as detectIncognitoHeuristics};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function a(){const a=Math,t=()=>0,e=a.acos||t,n=a.acosh||t,o=a.asin||t,r=a.asinh||t,s=a.atanh||t,c=a.atan||t,i=a.sin||t,h=a.sinh||t,p=a.cos||t,l=a.cosh||t,g=a.tan||t,u=a.tanh||t,f=a.exp||t,P=a.expm1||t,E=a.log1p||t,N=t=>a.pow(a.PI,t),x=t=>a.log(t+a.sqrt(t*t+1)),I=t=>a.log((1+t)/(1-t))/2,M=t=>(a.exp(t)-1/a.exp(t))/2,_=t=>(a.exp(t)+1/a.exp(t))/2,m=t=>a.exp(t)-1,L=t=>(a.exp(2*t)-1)/(a.exp(2*t)+1),b=t=>a.log(1+t);try{return{acos:e(.12312423423423424),asin:o(.12312423423423424),atan:c(.5),cos:p(10.000000000123),sin:i(-1e300),tan:g(-1e300),acosh:n(1e308),acoshPf:(S=1e154,a.log(S+a.sqrt(S*S-1))),asinh:r(1),asinhPf:x(1),atanh:s(.5),atanhPf:I(.5),cosh:l(1),coshPf:_(1),sinh:h(1),sinhPf:M(1),tanh:u(1),tanhPf:L(1),exp:f(1),expm1:P(1),expm1Pf:m(1),log1p:E(10),log1pPf:b(10),powPI:N(-100),sqrt:a.sqrt(2),cbrt:a.cbrt?a.cbrt(8):0,log:a.log(a.E),log10:a.log10?a.log10(10):0,log2:a.log2?a.log2(2):0,special_0:a.sin(a.PI),special_1:a.cos(a.PI/2),special_2:a.tan(a.PI/4),special_3:a.sqrt(-1),special_4:a.log(-1),special_5:1/0,special_6:NaN}}catch(t){return{error:1,basicMath:a.PI+a.E}}var S}function t(){try{return{PI:Math.PI,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,SQRT1_2:Math.SQRT1_2,SQRT2:Math.SQRT2}}catch{return{}}}function e(){try{return{precision1:.1+.2,precision2:.3-.1,precision3:.1*3,precision4:1.1-.9,largeAdd:1e16,largeSub:1e16,tiny:Number.MIN_VALUE,epsilon:Number.EPSILON||2220446049250313e-31,maxValue:Number.MAX_VALUE,maxSafeInteger:Number.MAX_SAFE_INTEGER||9007199254740991,minSafeInteger:Number.MIN_SAFE_INTEGER||-9007199254740991}}catch{return{}}}function n(){return"undefined"!=typeof Math}function o(){return{operations:a(),constants:t(),floatingPoint:e()}}export{o as getCompleteMathFingerprint,e as getFloatingPointBehavior,t as getMathConstants,a as getMathFingerprint,n as isMathDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
import{g as e,i as n,c as r}from"./fingerprint-BmsWDNK6.js";function t(){try{if(!f())return"NOT_SUPPORTED";const e=function(){try{return navigator.plugins||null}catch(e){if("SecurityError"===e.name)return null;throw e}}();if(!e)return"NAVIGATOR_UNAVAILABLE";const n=[];if(0===e.length)return n;for(let r=0;r<e.length;r++){const t=e[r];if(!t)continue;const o=[];if(t.length>0)for(let e=0;e<t.length;e++){const n=t[e];n&&n.type&&o.push(n.type)}n.push({name:t.name||"",filename:t.filename||"",description:t.description||"",version:t.version||void 0,mimeTypes:o})}return n.sort((e,n)=>e.name.localeCompare(n.name))}catch(e){return"SecurityError"===e.name?"SECURITY_RESTRICTED":[]}}function o(){try{if(!navigator.mimeTypes||0===navigator.mimeTypes.length)return[];const e=[];for(let n=0;n<navigator.mimeTypes.length;n++){const r=navigator.mimeTypes[n];r&&r.type&&e.push(r.type)}return e.sort()}catch{return[]}}function i(){try{if(navigator.plugins&&Array.from(navigator.plugins).some(e=>e.name.toLowerCase().includes("flash")||e.description.toLowerCase().includes("flash")))return!0;if(navigator.mimeTypes&&Array.from(navigator.mimeTypes).some(e=>"application/x-shockwave-flash"===e.type))return!0;if(void 0!==window.ActiveXObject)try{return!!new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch{return!1}return!1}catch{return!1}}function a(){try{if(navigator.plugins&&Array.from(navigator.plugins).some(e=>e.name.toLowerCase().includes("java")&&!e.name.toLowerCase().includes("javascript")))return!0;const e=["application/x-java-applet","application/x-java-bean","application/x-java-vm"];return!(!navigator.mimeTypes||!e.some(e=>Array.from(navigator.mimeTypes).some(n=>n.type===e)))||"function"==typeof navigator.javaEnabled&&navigator.javaEnabled()}catch{return!1}}function s(){try{if(navigator.plugins&&Array.from(navigator.plugins).some(e=>e.name.toLowerCase().includes("silverlight")))return!0;if(navigator.mimeTypes&&Array.from(navigator.mimeTypes).some(e=>"application/x-silverlight"===e.type))return!0;if(void 0!==window.ActiveXObject)try{return!!new window.ActiveXObject("AgControl.AgControl")}catch{return!1}return!1}catch{return!1}}function c(){var e,r;try{if(!n())return"NOT_SUPPORTED";if(!navigator.plugins)return"NAVIGATOR_UNAVAILABLE";const t=navigator.plugins.length;return 0===t||(!(null===(e=window.chrome)||void 0===e?void 0:e.runtime)&&!(null===(r=window.chrome)||void 0===r?void 0:r.webstore)&&void 0!==window.chrome||!Array.from(navigator.plugins).some(e=>e.name.toLowerCase().includes("pdf")||e.name.toLowerCase().includes("chrome"))&&t<3)}catch(e){return"SecurityError"===e.name&&"SECURITY_RESTRICTED"}}function u(){try{if(!r())return"NOT_SUPPORTED";const e={mozInnerScreenX:"mozInnerScreenX"in window,mozPaintCount:"mozPaintCount"in window,mozApps:!!navigator.mozApps,buildID:!!navigator.buildID,oscpu:!!navigator.oscpu},n=Object.values(e).filter(Boolean).length;return 0===n||(navigator.plugins?0===navigator.plugins.length&&n<2:"NAVIGATOR_UNAVAILABLE")}catch(e){return"SecurityError"===e.name&&"SECURITY_RESTRICTED"}}function l(e){const n=["antivirus","security","firewall","malware","protection","kaspersky","norton","mcafee","avast","avira","bitdefender","eset","sophos","symantec","trend micro","f-secure"];return e.filter(e=>n.some(n=>e.name.toLowerCase().includes(n)||e.description.toLowerCase().includes(n))).map(e=>e.name)}function m(e){const n=["adblock","adblocker","ad block","ublock","ghostery","privacy badger","disconnect","noscript","tracking protection"];return e.filter(e=>n.some(n=>e.name.toLowerCase().includes(n)||e.description.toLowerCase().includes(n))).map(e=>e.name)}function p(e,n,r,t){let o=50;return o+=10*e.length,o+=5*n.length,r&&(o-=15),t&&(o-=10),Math.max(0,Math.min(100,o))}function g(e,n){const r=e.map(e=>e.name).sort(),t=n.slice(0,10).sort();return[`plugins:${r.length}`,`mimes:${n.length}`,...r.slice(0,5),...t.slice(0,5)].join("|")}function f(){return e().canRunBrowserAPIs&&"undefined"!=typeof navigator}function v(){const e=t(),n=Array.isArray(e)?e:[],r=o(),f=Array.isArray(r)?r:[],v=i(),y=a(),d=s(),h=c(),w="boolean"==typeof h&&h,A=u(),T="boolean"==typeof A&&A,E=l(n),C=m(n),b=g(n,f),S=p(E,C,v,y);return{plugins:n,pluginCount:n.length,mimeTypes:f,mimeTypeCount:f.length,flashEnabled:v,javaEnabled:y,silverLightEnabled:d,chromeExtensionsBlocked:w,firefoxExtensionsBlocked:T,securityPlugins:E,adBlockerPlugins:C,pluginSignature:b,securityScore:S}}export{p as calculateSecurityScore,c as detectChromeExtensionsBlocked,u as detectFirefoxExtensionsBlocked,g as generatePluginSignature,v as getEnhancedPluginFingerprint,o as getMimeTypes,t as getNavigatorPlugins,m as identifyAdBlockerPlugins,l as identifySecurityPlugins,f as isEnhancedPluginDetectionAvailable,i as testFlashEnabled,a as testJavaEnabled,s as testSilverlightEnabled};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Zaplier SDK
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
3
|
* Advanced privacy-first tracking with code splitting
|
|
4
4
|
* (c) 2026 Zaplier Team
|
|
5
5
|
*/
|
|
6
|
-
class t{constructor(t,i,s={}){this.events=[],this.isActive=!1,this.isPaused=!1,this.lastActivityTime=Date.now(),this.sessionStartTime=Date.now(),this.sessionId=t,this.visitorId=i,this.config={enabled:!0,sampleRate:1,batchInterval:1e4,inactivityTimeout:3e4,pauseOnInactive:!0,...s}}async start(){if(!this.config.enabled||this.isActive)return!1;if(Math.random()>this.config.sampleRate)return!1;try{const{record:t}=await import("rrweb");return this.rrwebStopRecord=t({emit:t=>{this.onActivity(),this.isPaused||this.events.push(t)}}),this.isActive=!0,this.startBatchTimer(),this.startInactivityTracking(),!0}catch(t){return!1}}stop(){this.isActive&&(this.isActive=!1,this.rrwebStopRecord&&(this.rrwebStopRecord(),this.rrwebStopRecord=void 0),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.inactivityTimer&&(clearTimeout(this.inactivityTimer),this.inactivityTimer=void 0),this.sendBatch())}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(0===this.events.length)return;const t={sessionId:this.sessionId,visitorId:this.visitorId,events:[...this.events],metadata:{userAgent:navigator.userAgent,timestamp:Date.now(),startUrl:window.location.href,duration:Date.now()-this.sessionStartTime,activeTime:this.getActiveTime(),funnelSteps:[],hasConversion:!1,eventsCount:this.events.length,isPaused:this.isPaused}};this.events=[],this.sendToBackend(t)}setSDKInstance(t){this.sdkInstance=t}async sendToBackend(t){try{if(!this.sdkInstance)return;const i=await this.sdkInstance.sendReplayBatch(t);i&&i.success}catch(t){}}getEventCount(){return this.events.length}isRecording(){return this.isActive}isPausedState(){return this.isPaused}startInactivityTracking(){this.config.pauseOnInactive&&(["mousedown","mousemove","keypress","scroll","touchstart","click"].forEach(t=>{document.addEventListener(t,this.
|
|
6
|
+
class t{constructor(t,i,s={}){this.events=[],this.isActive=!1,this.isPaused=!1,this.lastActivityTime=Date.now(),this.sessionStartTime=Date.now(),this.boundOnActivity=null,this.sessionId=t,this.visitorId=i,this.config={enabled:!0,sampleRate:1,batchInterval:1e4,inactivityTimeout:3e4,pauseOnInactive:!0,...s}}async start(){if(!this.config.enabled||this.isActive)return!1;if(Math.random()>this.config.sampleRate)return!1;try{const{record:t}=await import("rrweb");return this.rrwebStopRecord=t({emit:t=>{this.onActivity(),this.isPaused||this.events.push(t)}}),this.isActive=!0,this.startBatchTimer(),this.startInactivityTracking(),!0}catch(t){return!1}}stop(){this.isActive&&(this.isActive=!1,this.rrwebStopRecord&&(this.rrwebStopRecord(),this.rrwebStopRecord=void 0),this.batchTimer&&(clearInterval(this.batchTimer),this.batchTimer=void 0),this.inactivityTimer&&(clearTimeout(this.inactivityTimer),this.inactivityTimer=void 0),this.boundOnActivity&&(["mousedown","mousemove","keypress","scroll","touchstart","click"].forEach(t=>{document.removeEventListener(t,this.boundOnActivity,!0)}),this.boundOnActivity=null),this.sendBatch())}startBatchTimer(){this.batchTimer=window.setInterval(()=>{this.sendBatch()},this.config.batchInterval)}sendBatch(){if(!this.sdkInstance)return void(this.config.pauseOnInactive&&this.events.length);if(0===this.events.length)return;const t={sessionId:this.sessionId,visitorId:this.visitorId,events:[...this.events],metadata:{userAgent:navigator.userAgent,timestamp:Date.now(),startUrl:window.location.href,duration:Date.now()-this.sessionStartTime,activeTime:this.getActiveTime(),funnelSteps:[],hasConversion:!1,eventsCount:this.events.length,isPaused:this.isPaused}};this.events=[],this.sendToBackend(t)}setSDKInstance(t){this.sdkInstance=t}async sendToBackend(t){try{if(!this.sdkInstance)return;const i=await this.sdkInstance.sendReplayBatch(t);i&&i.success}catch(t){}}getEventCount(){return this.events.length}isRecording(){return this.isActive}isPausedState(){return this.isPaused}startInactivityTracking(){this.config.pauseOnInactive&&(this.boundOnActivity=this.onActivity.bind(this),["mousedown","mousemove","keypress","scroll","touchstart","click"].forEach(t=>{document.addEventListener(t,this.boundOnActivity,!0)}),this.resetInactivityTimer())}onActivity(){this.lastActivityTime=Date.now(),this.isPaused&&this.resume(),this.resetInactivityTimer()}resetInactivityTimer(){this.inactivityTimer&&clearTimeout(this.inactivityTimer),this.inactivityTimer=window.setTimeout(()=>{this.pauseForInactivity()},this.config.inactivityTimeout)}pauseForInactivity(){this.isPaused||(this.isPaused=!0)}resume(){this.isPaused&&(this.isPaused=!1)}getActiveTime(){return Date.now()-this.sessionStartTime}getVisitorId(){return this.visitorId}}export{t as SessionReplayEngine};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function e(){try{if("undefined"==typeof localStorage)return!1;const e="__rb_test__",t="test";localStorage.setItem(e,t);const o=localStorage.getItem(e);return localStorage.removeItem(e),o===t}catch(e){return"blocked"}}function t(){try{if("undefined"==typeof sessionStorage)return!1;const e="__rb_test__",t="test";sessionStorage.setItem(e,t);const o=sessionStorage.getItem(e);return sessionStorage.removeItem(e),o===t}catch(e){return"blocked"}}function o(){return new Promise(e=>{try{if(!("indexedDB"in window))return void e(!1);const t="__rb_test_db__",o=indexedDB.open(t,1);let n=!1;const r=t=>{n||(n=!0,e(t))};setTimeout(()=>r("blocked"),1e3),o.onerror=()=>r("blocked"),o.onsuccess=()=>{try{o.result.close();const e=indexedDB.deleteDatabase(t);e.onsuccess=()=>r(!0),e.onerror=()=>r(!0)}catch{r("blocked")}},o.onupgradeneeded=()=>{try{const e=o.result;e.objectStoreNames.contains("test")||e.createObjectStore("test")}catch{r("blocked")}}}catch{e("blocked")}})}function n(){try{return"openDatabase"in window&&"function"==typeof window.openDatabase}catch{return!1}}async function r(){try{if("storage"in navigator&&"estimate"in navigator.storage){const e=await navigator.storage.estimate();return{quota:e.quota||null,usage:e.usage||null,available:e.quota&&e.usage?e.quota-e.usage:null}}return{}}catch{return{}}}function a(){return"undefined"!=typeof window}async function s(){const[a,s]=await Promise.all([o(),r()]);return{localStorage:e(),sessionStorage:t(),indexedDB:a,webSQL:n(),quota:s}}export{o as getIndexedDBSupport,e as getLocalStorageSupport,t as getSessionStorageSupport,s as getStorageFingerprint,r as getStorageQuota,n as getWebSQLSupport,a as isStorageDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function n(){try{if("undefined"!=typeof Intl&&Intl.DateTimeFormat){const n=Intl.DateTimeFormat().resolvedOptions().timeZone;if(n)return n}const n=new Date(2024,0,1).getTimezoneOffset();return`UTC${n>0?"-":"+"}${Math.abs(n/60)}`}catch{return"unknown"}}function e(){try{const n=[];navigator.languages&&Array.isArray(navigator.languages)&&n.push(...navigator.languages),navigator.language&&n.push(navigator.language);const e=navigator.userLanguage||navigator.browserLanguage;return e&&n.push(e),[...new Set(n)]}catch{return["unknown"]}}function o(){try{if("undefined"!=typeof Intl&&Intl.DateTimeFormat){const n=(new Intl.DateTimeFormat).resolvedOptions();return{locale:n.locale||"unknown",calendar:n.calendar||"unknown",numberingSystem:n.numberingSystem||"unknown",timeZone:n.timeZone||"unknown"}}return{locale:"unknown"}}catch{return{locale:"unknown"}}}function t(){try{const n={platform:navigator.platform||"unknown",oscpu:navigator.oscpu||null,vendor:navigator.vendor||null},e=navigator.userAgent;if(e.includes("Windows"))n.os="Windows",e.includes("Windows NT 10.0")?n.osVersion="10":e.includes("Windows NT 6.3")?n.osVersion="8.1":e.includes("Windows NT 6.2")?n.osVersion="8":e.includes("Windows NT 6.1")&&(n.osVersion="7");else if(e.includes("Macintosh")||e.includes("Mac OS")){n.os="macOS";const o=e.match(/Mac OS X ([0-9_]+)/);o&&o[1]&&(n.osVersion=o[1].replace(/_/g,"."))}else if(e.includes("Linux"))n.os="Linux";else if(e.includes("Android")){n.os="Android";const o=e.match(/Android ([0-9.]+)/);o&&o[1]&&(n.osVersion=o[1])}else if(e.includes("iOS")||e.includes("iPhone")||e.includes("iPad")){n.os="iOS";const o=e.match(/OS ([0-9_]+)/);o&&o[1]&&(n.osVersion=o[1].replace(/_/g,"."))}return n}catch{return{platform:"unknown"}}}function a(){return"undefined"!=typeof navigator}function i(){return{timezone:n(),languages:e(),dateTimeLocale:o(),platform:t(),cookiesEnabled:navigator.cookieEnabled||!1}}export{o as getDateTimeLocale,e as getLanguages,t as getPlatformExtended,i as getSystemFingerprint,n as getTimezone,a as isSystemDetectionAvailable};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Zaplier SDK v3.0.0 - Unified SDK
|
|
3
|
+
* Advanced privacy-first tracking with code splitting
|
|
4
|
+
* (c) 2026 Zaplier Team
|
|
5
|
+
*/
|
|
6
|
+
function e(e){return function(e){const t=new Date||new Date;return`${e}_${t.getFullYear()}${(t.getMonth()+1).toString().padStart(2,"0")}${t.getDate().toString().padStart(2,"0")}_${t.getHours().toString().padStart(2,"0")}`}(e)}const t={session:"__zp_s",visitor:"__zp_v",device:"__zp_d",prefs:"__zp_p",analytics:"__zp_a"};class s{static setLocal(e,t){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.setItem(e,t),!0}catch(e){}return!1}static getLocal(e){try{if("undefined"!=typeof window&&window.localStorage)return localStorage.getItem(e)}catch(e){}return null}static setSession(e,t){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.setItem(e,t),!0}catch(e){}return!1}static getSession(e){try{if("undefined"!=typeof window&&window.sessionStorage)return sessionStorage.getItem(e)}catch(e){}return null}static setCookie(e,t,s=365){try{if("undefined"!=typeof document){const o=new Date(Date.now()+24*s*60*60*1e3).toUTCString();return document.cookie=`${e}=${t}; expires=${o}; path=/; SameSite=Lax`,!0}}catch(e){}return!1}static getCookie(e){try{if("undefined"!=typeof document){const t=e+"=",s=decodeURIComponent(document.cookie).split(";");for(let e=0;e<s.length;e++){let o=s[e];if(o){for(;" "===o.charAt(0);)o=o.substring(1);if(0===o.indexOf(t))return o.substring(t.length,o.length)}}}}catch(e){}return null}static setMemory(e,t){return this.memoryStore.set(e,t),!0}static getMemory(e){return this.memoryStore.get(e)||null}static get(e){let t=this.getLocal(e);return t?{value:t,method:"localStorage"}:(t=this.getSession(e),t?{value:t,method:"sessionStorage"}:(t=this.getCookie(e),t?{value:t,method:"cookie"}:(t=this.getMemory(e),t?{value:t,method:"memory"}:{value:null,method:"none"})))}static set(e,t){return this.setLocal(e,t)?{success:!0,method:"localStorage"}:this.setSession(e,t)?{success:!0,method:"sessionStorage"}:this.setCookie(e,t)?{success:!0,method:"cookie"}:(this.setMemory(e,t),{success:!0,method:"memory"})}}s.memoryStore=new Map;class o{generateSessionId(){const{value:o}=s.get(t.prefs);if(o)try{const t=JSON.parse(o);if(t._v&&!0===t._vb)return e(t._v)}catch(e){}return e("temp-"+Date.now().toString(36))}createCamouflageData(e,t,s,o=!1){return{theme:"auto",lang:(navigator.language||"en-US").substring(0,2),tz:Intl.DateTimeFormat().resolvedOptions().timeZone,analytics:!0,cookies:!0,_v:e,_s:t,_sc:s,_vb:!!o||void 0,ts:Date.now()}}extractFromCamouflage(e){try{const t=JSON.parse(e);if(t._v&&t._s&&t._sc&&!0===t._vb)return{visitorId:t._v,sessionId:t._s,stableCoreHash:t._sc,persistenceMethod:"localStorage",confidence:.95,createdAt:t.ts||Date.now(),lastSeen:Date.now(),reused:!0};if(t._v&&!t._vb)return null}catch(e){}return null}async getOrCreateVisitorIdentity(e){const{stableCoreHash:o}=e,{value:r,method:n}=s.get(t.prefs);if(r){const e=this.extractFromCamouflage(r);if(e&&e.stableCoreHash===o&&e.visitorId){const r=this.createCamouflageData(e.visitorId,e.sessionId,o);return s.set(t.prefs,JSON.stringify(r)),{...e,persistenceMethod:n,lastSeen:Date.now(),reused:!0}}}return{sessionId:e.sessionId||this.generateSessionId(),stableCoreHash:o,deviceFingerprint:e.deviceFingerprint,persistenceMethod:"memory",confidence:.9,createdAt:Date.now(),lastSeen:Date.now(),reused:!1,pendingBackendResponse:!0}}async updateVisitorIdFromBackend(o,r,n){try{let i=n||this.getCurrentSessionId();i&&!i.includes("temp-")||(i=e(o));const a=this.createCamouflageData(o,i,r,!0),{success:c,method:u}=s.set(t.prefs,JSON.stringify(a));return!!c&&(s.set(t.device,r),!0)}catch(e){return!1}}getCurrentSessionId(){const{value:e}=s.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.sessionId)||null}return null}getCurrentVisitorId(){const{value:e}=s.get(t.prefs);if(e){const t=this.extractFromCamouflage(e);return(null==t?void 0:t.visitorId)||null}return null}clearIdentity(){try{for(const e of Object.values(t)){try{"undefined"!=typeof window&&window.localStorage&&localStorage.removeItem(e)}catch{}try{"undefined"!=typeof window&&window.sessionStorage&&sessionStorage.removeItem(e)}catch{}}s.setCookie(t.prefs,"",-1),s.setCookie(t.device,"",-1)}catch(e){}}}export{o as VisitorIdentityManager};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zaplier/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "Advanced privacy-first tracking SDK with session replay, heatmaps, and anti-adblock technology",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -14,8 +14,7 @@
|
|
|
14
14
|
"types": "./dist/v2/core.d.ts"
|
|
15
15
|
},
|
|
16
16
|
"./legacy": {
|
|
17
|
-
"import": "./dist/
|
|
18
|
-
"require": "./dist/index.cjs"
|
|
17
|
+
"import": "./dist/sdk.legacy.min.js"
|
|
19
18
|
},
|
|
20
19
|
"./fingerprint": {
|
|
21
20
|
"import": "./dist/v2/modules/fingerprint.js"
|