@ianmenethil/zp-devicefp 0.1.0-alpha.0

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.
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@ianmenethil/zp-devicefp",
3
+ "version": "2.2.0",
4
+ "tag": "@ianmenethil/zp-devicefp@2.2.0",
5
+ "npmIdentifier": "ianmenethil-zp-devicefp-2.2.0",
6
+ "manifestPath": "ianmenethil-zp-devicefp-2.2.0-manifest.json",
7
+ "buildTimestamp": "2026-05-14T12:23:02.107Z",
8
+ "files": [
9
+ {
10
+ "file": "zp.dfp.js",
11
+ "hash": "75ab8712080abbc186ce9af80ca159c0a9ad4cb17a84ad9f5bf9ac1c92ec591b3d9d683a9810a214cf920a93aae4dd1d",
12
+ "hashSri": "sha384-dauHEggKu8GGzpr4DKFZwKmtTLF6hK2fW/msHJLsWRs9nWg6mBCiFM+SCpOq5N0d",
13
+ "size": 45602
14
+ },
15
+ {
16
+ "file": "zp.dfp.min.js",
17
+ "hash": "84397eb56262a10bbc5e69f87d1785703002c1130e786d9f6776486a4894fbe93855376c6f2872c638439c1cd4cafff0",
18
+ "hashSri": "sha384-hDl+tWJioQu8Xmn4fReFcDACwRMOeG2fZ3ZIakiU++k4VTdsbyhyxjhDnBzUyv/w",
19
+ "size": 20680
20
+ },
21
+ {
22
+ "file": "zp.dfp.obf.js",
23
+ "hash": "1fba7385337c7f16743fbdd87310b904bd7646d49bc69a2a3e31613bbc74a874d7a6cf3483330bb1d9f49f798fd44c8f",
24
+ "hashSri": "sha384-H7pzhTN8fxZ0P73YcxC5BL12RtSbxpoqPjFhO7x0qHTXps80gzMLsdn0n3mP1EyP",
25
+ "size": 217962
26
+ },
27
+ {
28
+ "file": "zp.dfp.esm.js",
29
+ "hash": "6ee621312a8eb62a9fb6542d99a7cef7a6b7f70a9a790d15eb96cdcd2740294b23601607058ff112b52d0ebe1fa3dfa2",
30
+ "hashSri": "sha384-buYhMSqOtiqftlQtmafO96a39wqaeQ0V65bNzSdAKUsjYBYHBY/xErUtDr4fo9+i",
31
+ "size": 42651
32
+ }
33
+ ]
34
+ }
@@ -0,0 +1 @@
1
+ "use strict";(()=>{function D(){return{global:globalThis,navigator:typeof navigator>"u"?void 0:navigator,document:typeof document>"u"?void 0:document,screen:typeof screen>"u"?void 0:screen,location:typeof location>"u"?void 0:location,fetch:typeof fetch>"u"?void 0:fetch,crypto:globalThis.crypto,performance:typeof performance>"u"?void 0:performance,intl:typeof Intl>"u"?void 0:Intl}}function s(e){return e.performance?.now?.()??Date.now()}function K(e){return!!e.document?.createElement}function _(e){return!!e.document?.createElement?.("canvas").getContext}function Ne(e){let o=e;return o.OfflineAudioContext??o.webkitOfflineAudioContext}var X={name:"audio",tier:"core",supportsSync:!1,async collect(e){let o=s(e.env),t=Ne(e.env.global);if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=new t(1,5e3,44100),r=n.createOscillator(),a=n.createDynamicsCompressor();r.type="triangle",r.frequency.value=1e4,a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.25,r.connect(a),a.connect(n.destination),r.start(0);let i=await n.startRendering(),l=i.getChannelData(0),c=0;for(let u=4500;u<l.length;u+=1)c+=Math.abs(l[u]);return{status:"ok",durationMs:s(e.env)-o,value:{sampleRate:i.sampleRate,length:i.length,signalValue:Number(c.toFixed(6))}}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};function Te(e){let o=e.createElement("canvas");o.width=280,o.height=80;let t=o.getContext("2d");if(!t)throw new Error("2D canvas context unavailable");return t.fillStyle="#f60",t.fillRect(8,10,120,60),t.fillStyle="#069",t.font="20px Arial",t.fillText("Browser FP",12,40),t.strokeStyle="rgba(102, 204, 0, 0.7)",t.beginPath(),t.arc(180,40,24,0,Math.PI*2),t.stroke(),{dataUrl:o.toDataURL(),winding:t.isPointInPath(1,1,"evenodd")}}var Y={name:"canvas",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!_(e.env))return{status:"unsupported",durationMs:s(e.env)-o};try{return{status:"ok",durationMs:s(e.env)-o,value:Te(t)}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var H=["ua","uaHints","locale","screen","hardware","storage","fonts","canvas","webgl","audio"],Z=["mediaDevices","permissions","webrtc","frameInfo","networkInfo","paymentSupport","referrerInfo","navigationInfo","riskSignals"],$=["ua","locale","screen","hardware","storage","fonts","canvas","webgl","frameInfo","networkInfo","paymentSupport","referrerInfo","navigationInfo"];var J=["Arial","Helvetica Neue","Times New Roman","Georgia","Courier New","Trebuchet MS","Verdana","Tahoma","Impact","Comic Sans MS"],Q=["geolocation","notifications","camera","microphone"],ee=["architecture","bitness","formFactors","fullVersionList","model","platform","platformVersion","wow64"];var De=["monospace","sans-serif","serif"],_e="mmmmmmmmmmlli";function te(e,o,t){let n=e.createElement("span");n.textContent=_e,n.style.position="absolute",n.style.left="-9999px",n.style.top="-9999px",n.style.fontSize="72px",n.style.fontFamily=`${o}, ${t}`,e.body.appendChild(n);let r=n.offsetWidth;return e.body.removeChild(n),r}function Ie(e){let o=[];for(let t of J){let n=!1;for(let r of De){let a=te(e,"",r);if(te(e,t,r)!==a){n=!0;break}}n&&o.push(t)}return o}var ne={name:"fonts",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!K(e.env))return{status:"unsupported",durationMs:s(e.env)-o};try{let n=Ie(t);return{status:"ok",durationMs:s(e.env)-o,value:{detectedFonts:n,fontCount:n.length}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var oe={name:"frameInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=t.getElementsByTagName("iframe"),r=[];for(let i of n){let l=i.src||"";try{r.push(new URL(l).hostname)}catch{r.push("unknown")}}let a=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{iframesCount:n.length,isTopLevel:a===a.top,iframeDomains:r}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var re={name:"hardware",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;return t?{status:"ok",durationMs:s(e.env)-o,value:{hardwareConcurrency:t.hardwareConcurrency,deviceMemory:t.deviceMemory,platform:t.platform,maxTouchPoints:t.maxTouchPoints}}:{status:"unsupported",durationMs:s(e.env)-o}}};var se={name:"locale",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator,n=e.env.intl;if(!t||!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=new n.DateTimeFormat,a=r.resolvedOptions(),i=new n.NumberFormat(t.language),l=typeof n.RelativeTimeFormat=="function"?new n.RelativeTimeFormat(t.language,{numeric:"auto"}):void 0,c=new Date(Date.UTC(2024,0,2,3,4,5));return{status:"ok",durationMs:s(e.env)-o,value:{language:t.language,languages:t.languages,locale:a.locale,calendar:a.calendar,numberingSystem:a.numberingSystem,timeZone:a.timeZone,hourCycle:a.hourCycle,timeZoneOffsetMinutes:c.getTimezoneOffset(),formattedNumber:i.format(123456.789),formattedDate:r.format(c),formattedRelativeDay:l?.format(-1,"day")}}}};var ae={name:"mediaDevices",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.mediaDevices,n=e.env.global;if(!n.isSecureContext)return{status:"blocked",durationMs:s(e.env)-o,error:"Media device enumeration requires a secure context."};if(n.document?.visibilityState!=="visible")return{status:"blocked",durationMs:s(e.env)-o,error:"Media device enumeration requires a visible document."};if(!t?.enumerateDevices)return{status:"unsupported",durationMs:s(e.env)-o};try{let a=(await t.enumerateDevices()).reduce((i,l)=>(i[l.kind]=(i[l.kind]??0)+1,i),{});return{status:"ok",durationMs:s(e.env)-o,value:a}}catch(r){return{status:"blocked",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};var ie={name:"navigationInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.performance;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=null,a=t.getEntriesByType("navigation")?.[0];return a!==void 0&&(n=a.type),n===null&&(n=t.navigation.type),{status:"ok",durationMs:s(e.env)-o,value:{navigationType:n}}}catch(n){return{status:"error",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var le={name:"networkInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};let n=t.connection??t.mozConnection??t.webkitConnection??null;if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=n;return{status:"ok",durationMs:s(e.env)-o,value:{effectiveType:r.effectiveType??null,downlink:r.downlink??null,rtt:r.rtt??null,saveData:typeof r.saveData=="boolean"?r.saveData:null}}}};var ce={name:"paymentSupport",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{paymentRequest:t.PaymentRequest!==void 0}}}};var ue={name:"permissions",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.permissions;if(!t?.query)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=await Promise.all(Q.map(async r=>{try{let a=await t.query({name:r});return[r,a.state]}catch{return[r,"unsupported"]}}));return{status:"ok",durationMs:s(e.env)-o,value:Object.fromEntries(n)}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};var pe={name:"referrerInfo",tier:"extended",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;return t?{status:"ok",durationMs:s(e.env)-o,value:{referrer:t.referrer}}:{status:"unsupported",durationMs:s(e.env)-o}}};var me={name:"riskSignals",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator,n=e.env.global;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let r=t.userAgent,a=t.webdriver?!0:null,i=[];r.includes("HeadlessChrome")&&i.push("headless-ua"),r.includes("Chrome")&&typeof n.chrome!="object"&&i.push("missing-chrome-object"),(n.outerHeight===0||n.outerWidth===0)&&i.push("zero-outer-dimensions"),r.includes("Chrome")&&!r.includes("Mobile")&&t.plugins.length===0&&i.push("no-plugins-on-desktop-chrome"),Array.isArray(t.languages)&&t.languages.length===0&&i.push("empty-languages");let l=null,c=t.userAgentData;if(c&&"getHighEntropyValues"in c)try{let d=c,g=r.includes("Win")?"Windows":r.includes("Mac")?"macOS":r.includes("Linux")?"Linux":null,p=d.platform||null;l=g===null||p===null?null:g===p}catch{l=null}let u=typeof Notification<"u"?Notification.permission:null,y=null;if(typeof t.permissions?.query=="function")try{(await t.permissions.query({name:"notifications"})).state==="denied"&&Notification.permission==="default"&&(y=!0)}catch{y=null}let f=e.env.performance?.timeOrigin?Math.round(Date.now()-e.env.performance.timeOrigin):null;return{status:"ok",durationMs:s(e.env)-o,value:{webdriver:a,headlessHints:i,uaConsistency:l,notificationPermission:u,permissionsHeadlessHint:y,timeToCaptureMs:f}}}catch(r){return{status:"blocked",durationMs:s(e.env)-o,error:r instanceof Error?r.message:String(r)}}}};function I(e,o){if(typeof e.matchMedia!="function")return"unsupported";try{return e.matchMedia(o).matches}catch{return"unsupported"}}var de={name:"screen",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.screen,n=e.env.navigator,r=e.env.global;return t?{status:"ok",durationMs:s(e.env)-o,value:{width:t.width,height:t.height,availWidth:t.availWidth,availHeight:t.availHeight,colorDepth:t.colorDepth,pixelDepth:t.pixelDepth,orientationType:t.orientation.type,orientationAngle:t.orientation.angle,maxTouchPoints:n?.maxTouchPoints??0,devicePixelRatio:typeof r.devicePixelRatio=="number"?r.devicePixelRatio:void 0,colorGamutP3:I(r,"(color-gamut: p3)"),prefersReducedMotion:I(r,"(prefers-reduced-motion: reduce)"),prefersContrastMore:I(r,"(prefers-contrast: more)"),forcedColorsActive:I(r,"(forced-colors: active)")}}:{status:"unsupported",durationMs:s(e.env)-o}}};function fe(e,o){try{let t=e[o];if(!t)return"unsupported";let n="__bf_probe__";return t.setItem(n,"1"),t.removeItem(n),"available"}catch{return"blocked"}}var ge={name:"storage",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator,n=e.env.global;return{status:"ok",durationMs:s(e.env)-o,value:{cookiesEnabled:t?.cookieEnabled??!1,localStorage:fe(n,"localStorage"),sessionStorage:fe(n,"sessionStorage"),indexedDb:typeof n.indexedDB>"u"?"unsupported":"available",openDatabase:typeof n.openDatabase>"u"?"unsupported":"available",pdfViewerEnabled:t?.pdfViewerEnabled??!1}}}};var ye={name:"ua",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.navigator;return t?{status:"ok",durationMs:s(e.env)-o,value:{userAgent:t.userAgent,appVersion:t.appVersion,vendor:t.vendor,platform:t.platform,webdriver:t.webdriver,maxTouchPoints:t.maxTouchPoints,cookieEnabled:t.cookieEnabled,vendorSub:t.vendorSub}}:{status:"unsupported",durationMs:s(e.env)-o}}};var Se={name:"uaHints",tier:"core",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.navigator?.userAgentData;if(!t)return{status:"unsupported",durationMs:s(e.env)-o};try{let n=t.getHighEntropyValues?await t.getHighEntropyValues([...ee]):void 0;return{status:"ok",durationMs:s(e.env)-o,value:{brands:t.brands??[],mobile:!!t.mobile,platform:t.platform,...n}}}catch(n){return{status:"blocked",durationMs:s(e.env)-o,error:n instanceof Error?n.message:String(n)}}}};function Pe(e){let o=e.createElement("canvas");return o.getContext("webgl")??o.getContext("experimental-webgl")}var ve={name:"webgl",tier:"core",supportsSync:!0,async collect(e){return this.collectSync(e)},collectSync(e){let o=s(e.env),t=e.env.document;if(!t||!_(e.env))return{status:"unsupported",durationMs:s(e.env)-o};let n=Pe(t);if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r=n.getExtension("WEBGL_debug_renderer_info"),a=r?n.getParameter(r.UNMASKED_RENDERER_WEBGL):n.getParameter(n.RENDERER),i=r?n.getParameter(r.UNMASKED_VENDOR_WEBGL):n.getParameter(n.VENDOR);return{status:"ok",durationMs:s(e.env)-o,value:{vendor:i,renderer:a,version:n.getParameter(n.VERSION),shadingLanguageVersion:n.getParameter(n.SHADING_LANGUAGE_VERSION),maxTextureSize:n.getParameter(n.MAX_TEXTURE_SIZE),maxViewportDims:n.getParameter(n.MAX_VIEWPORT_DIMS),extensions:n.getSupportedExtensions()??[]}}}};function Ae(e){let o=new Set,t=new Set;for(let n of e.split(/\r?\n/)){if(n.startsWith("a=rtpmap:")){let r=n.slice(9);o.add(r.split(" ",2)[1]??n)}n.startsWith("a=extmap:")&&t.add(n.slice(9))}return{codecs:[...o].sort(),extmaps:[...t].sort()}}var he={name:"webrtc",tier:"extended",supportsSync:!1,async collect(e){let o=s(e.env),t=e.env.global,n=t.RTCPeerConnection??t.webkitRTCPeerConnection;if(!n)return{status:"unsupported",durationMs:s(e.env)-o};let r;try{r=new n,r.createDataChannel("bf");let a=await r.createOffer(),i=Ae(a.sdp??"");return{status:"ok",durationMs:s(e.env)-o,value:i}}catch(a){return{status:"blocked",durationMs:s(e.env)-o,error:a instanceof Error?a.message:String(a)}}finally{r?.close()}}};var Oe=[ye,Se,se,de,re,ge,ne,Y,ve,X,ae,ue,he,oe,le,ce,pe,ie,me],V=new Map(Oe.map(e=>[e.name,e]));function P(e){return e&&typeof e=="object"?e:void 0}function U(e){return typeof e=="string"&&e.length>0?e:void 0}function E(e){return typeof e=="number"&&Number.isFinite(e)?e:void 0}function we(e){let o=[],t=[],n=P(e.ua?.value),r=P(e.uaHints?.value),a=P(e.hardware?.value),i=P(e.screen?.value),l=U(n?.userAgent)?.toLowerCase()??"",c=U(n?.platform)?.toLowerCase()??"",u=U(r?.platform)?.toLowerCase()??"",y=!!n?.webdriver,f=E(i?.maxTouchPoints)??E(n?.maxTouchPoints)??0,d=E(i?.width)??0,g=E(i?.height)??0,p=E(a?.deviceMemory);y&&t.push("navigator_webdriver"),l.includes("headless")&&t.push("headless_user_agent"),c&&u&&!c.includes(u)&&!u.includes(c)&&o.push("ua_platform_mismatch"),l.includes("iphone")&&f===0&&o.push("touch_claim_without_touch_points"),l.includes("android")&&d>0&&d>=1600&&o.push("mobile_ua_desktop_screen"),l.includes("windows")&&c.includes("mac")&&o.push("windows_ua_mac_platform"),p!==void 0&&(p<.25||p>64)&&o.push("implausible_device_memory"),d>0&&g>0&&d<200&&g<200&&o.push("tiny_screen_geometry");let S=o.length*.12,v=t.length*.18;return{score:Math.max(0,Math.min(1,Number((1-S-v).toFixed(3)))),anomalies:o,automationHints:t}}function xe(e){return Number.isFinite(e)?Number(e.toFixed(6)):e}function B(e){if(e===void 0)return"undefined";if(e===null)return null;if(typeof e=="number")return xe(e);if(typeof e=="bigint")return e.toString();if(typeof e=="boolean"||typeof e=="string")return e;if(Array.isArray(e))return e.map(o=>B(o));if(e instanceof Date)return e.toISOString();if(typeof e=="object"){let o=e,t={};for(let n of Object.keys(o).sort())t[n]=B(o[n]);return t}return String(e)}function Fe(e){return B(e)}function G(e){return JSON.stringify(Fe(e))}var Le={ua:.5,uaHints:.7,locale:.5,screen:.8,hardware:.7,storage:.4,fonts:.9,canvas:1,webgl:1,audio:.9,mediaDevices:.6,permissions:.4,webrtc:.8,frameInfo:.3,networkInfo:.6,paymentSupport:.2,referrerInfo:.3,navigationInfo:.4,riskSignals:.7};function be(e,o){let t=0,n=0;for(let[i,l]of Object.entries(e)){let c=Le[i];if(n+=c,l.status==="ok"){t+=c;continue}if(l.status==="unsupported"||l.status==="blocked"){t+=c*.35;continue}l.status==="timeout"&&(t+=c*.15)}if(n===0)return 0;let a=t/n*(.65+o.score*.35);return Math.max(0,Math.min(1,Number(a.toFixed(3))))}var A=class{listeners=new Map;on(o,t){let n=this.listeners.get(o)??new Set;return n.add(t),this.listeners.set(o,n),()=>{n.delete(t),n.size===0&&this.listeners.delete(o)}}emit(o,t){let n=this.listeners.get(o);if(n)for(let r of n)r(t)}};var He=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998];function h(e,o){return e>>>o|e<<32-o}function Ve(e){return new TextEncoder().encode(e)}function W(e){let o=Ve(e),t=o.length*8,n=o.length+9+63>>6<<6,r=new Uint8Array(n);r.set(o),r[o.length]=128;let a=new DataView(r.buffer);a.setUint32(n-4,t,!1);let i=1779033703,l=3144134277,c=1013904242,u=2773480762,y=1359893119,f=2600822924,d=528734635,g=1541459225,p=new Uint32Array(64);for(let S=0;S<r.length;S+=64){for(let m=0;m<16;m+=1)p[m]=a.getUint32(S+m*4,!1);for(let m=16;m<64;m+=1){let F=h(p[m-15],7)^h(p[m-15],18)^p[m-15]>>>3,L=h(p[m-2],17)^h(p[m-2],19)^p[m-2]>>>10;p[m]=p[m-16]+F+p[m-7]+L>>>0}let v=i,b=l,C=c,O=u,w=y,N=f,T=d,x=g;for(let m=0;m<64;m+=1){let F=h(w,6)^h(w,11)^h(w,25),L=w&N^~w&T,q=x+F+L+He[m]+p[m]>>>0,ke=h(v,2)^h(v,13)^h(v,22),Re=v&b^v&C^b&C,Me=ke+Re>>>0;x=T,T=N,N=w,w=O+q>>>0,O=C,C=b,b=v,v=q+Me>>>0}i=i+v>>>0,l=l+b>>>0,c=c+C>>>0,u=u+O>>>0,y=y+w>>>0,f=f+N>>>0,d=d+T>>>0,g=g+x>>>0}return[i,l,c,u,y,f,d,g].map(S=>S.toString(16).padStart(8,"0")).join("")}function k(e){return{debug:!1,extended:!1,timeoutMs:1500,...e}}function j(e,o="async"){let t=k(e),n=t.extended?[...H,...Z]:[...H],r=o==="sync"?n.filter(l=>$.includes(l)):n,a=t.include?r.filter(l=>t.include?.includes(l)):r,i=new Set(t.exclude??[]);return a.filter(l=>!i.has(l))}async function Ce(e,o,t){let n=t.endpoint&&e.fetch;if(!n)throw new Error("Fetch is not available in this runtime.");return n(t.endpoint,{method:"POST",headers:{"content-type":"application/json",...t.headers},body:JSON.stringify({fingerprint:o,...t.bodyExtras})})}var R="0.1.0",M=1;function Be(e){return{status:"timeout",durationMs:e,error:"Signal collection timed out."}}async function Ge(e,o,t,n){let r=o.performance?.now?.()??Date.now();if(t.abortSignal?.aborted)return{status:"error",durationMs:0,error:"Collection aborted before signal execution started."};let a=()=>{},i=new Promise(c=>{let u=setTimeout(()=>{c(Be((o.performance?.now?.()??Date.now())-r))},t.timeoutMs);a=()=>clearTimeout(u),t.abortSignal?.addEventListener("abort",()=>{a(),c({status:"error",durationMs:(o.performance?.now?.()??Date.now())-r,error:"Collection aborted."})},{once:!0})}),l=e.collect({env:o,options:t,warn:n});return Promise.race([l,i]).finally(()=>{a()})}function Ee(e,o,t,n){let r={};for(let[c,u]of Object.entries(e))u.value!==void 0&&(r[c]=W(G(u.value)));let a=W(G(Object.keys(r).sort().map(c=>[c,r[c]]))),i=we(e),l=be(e,i);return{schemaVersion:1,libraryVersion:R,thumbprint:a,confidence:l,componentHashes:r,signals:e,antiSpoof:i,warnings:o,diagnostics:{requestedSignals:t,completedSignals:Object.keys(e).sort(),elapsedMs:Number(n.toFixed(3))}}}async function z(e){let o=k(e),t=new A;return{on(n,r){return t.on(n,r)},async collect(n){let r=k({...o,...n}),a=D(),i=j(r,"async"),l={},c=[],u=a.performance?.now?.()??Date.now(),y=(g,p)=>{c.push(g),t.emit("warning",{signal:p,message:g})},f=0;await Promise.all(i.map(async g=>{let p=V.get(g);if(!p){y(`No collector registered for signal "${g}".`,g);return}let S=await Ge(p,a,r,y);l[g]=S,f+=1,t.emit("progress",{completed:f,total:i.length,signal:g,result:S})}));let d=Ee(l,c,i,(a.performance?.now?.()??Date.now())-u);return t.emit("complete",{result:d}),d},collectSync(n){let r=k({...o,...n}),a=D(),i=j(r,"sync"),l={},c=[],u=a.performance?.now?.()??Date.now(),y=(f,d)=>{c.push(f),t.emit("warning",{signal:d,message:f})};for(let f of i){let d=V.get(f);if(!d?.collectSync){y(`Signal "${f}" is not available in synchronous mode.`,f);continue}l[f]=d.collectSync({env:a,options:r,warn:y})}return Ee(l,c,i,(a.performance?.now?.()??Date.now())-u)},upload(n,r){return Ce(D(),n,r)}}}var We={createFingerprintClient:z,LIBRARY_VERSION:R,SCHEMA_VERSION:1};typeof globalThis<"u"&&(globalThis.DeviceFP=We);})();