@magield/collectors 0.6.1 → 0.8.2

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.
Files changed (57) hide show
  1. package/dist/behavior/recorder.d.ts +33 -0
  2. package/dist/behavior/recorder.js +303 -1
  3. package/dist/hash.d.ts +15 -0
  4. package/dist/hash.js +27 -1
  5. package/dist/index.d.ts +7 -0
  6. package/dist/index.js +7 -1
  7. package/dist/native.d.ts +39 -0
  8. package/dist/native.js +142 -1
  9. package/dist/registry.d.ts +57 -0
  10. package/dist/registry.js +108 -1
  11. package/dist/run.d.ts +10 -0
  12. package/dist/run.js +128 -1
  13. package/dist/signals/adblock.d.ts +2 -0
  14. package/dist/signals/adblock.js +135 -1
  15. package/dist/signals/apps.d.ts +2 -0
  16. package/dist/signals/apps.js +191 -1
  17. package/dist/signals/audio.d.ts +16 -0
  18. package/dist/signals/audio.js +63 -1
  19. package/dist/signals/automation.d.ts +2 -0
  20. package/dist/signals/automation.js +346 -1
  21. package/dist/signals/behavior.d.ts +17 -0
  22. package/dist/signals/behavior.js +31 -1
  23. package/dist/signals/capabilities.d.ts +2 -0
  24. package/dist/signals/capabilities.js +235 -1
  25. package/dist/signals/devices.d.ts +2 -0
  26. package/dist/signals/devices.js +119 -1
  27. package/dist/signals/display.d.ts +2 -0
  28. package/dist/signals/display.js +101 -1
  29. package/dist/signals/errors.d.ts +2 -0
  30. package/dist/signals/errors.js +84 -1
  31. package/dist/signals/features.d.ts +2 -0
  32. package/dist/signals/features.js +951 -1
  33. package/dist/signals/fonts.d.ts +2 -0
  34. package/dist/signals/fonts.js +128 -1
  35. package/dist/signals/integrity.d.ts +2 -0
  36. package/dist/signals/integrity.js +216 -1
  37. package/dist/signals/math.d.ts +2 -0
  38. package/dist/signals/math.js +43 -1
  39. package/dist/signals/navigator.d.ts +10 -0
  40. package/dist/signals/navigator.js +81 -1
  41. package/dist/signals/pointer.d.ts +2 -0
  42. package/dist/signals/pointer.js +93 -1
  43. package/dist/signals/render.d.ts +12 -0
  44. package/dist/signals/render.js +214 -1
  45. package/dist/signals/screen.d.ts +9 -0
  46. package/dist/signals/screen.js +80 -1
  47. package/dist/signals/storage.d.ts +33 -0
  48. package/dist/signals/storage.js +100 -1
  49. package/dist/signals/timezone.d.ts +9 -0
  50. package/dist/signals/timezone.js +63 -1
  51. package/dist/signals/webrtc.d.ts +2 -0
  52. package/dist/signals/webrtc.js +168 -1
  53. package/dist/stable-core.d.ts +128 -0
  54. package/dist/stable-core.js +187 -1
  55. package/dist/types.d.ts +54 -0
  56. package/dist/types.js +15 -1
  57. package/package.json +2 -1
@@ -1 +1,100 @@
1
- (function(T,U){const V={T:'aY[8',U:0x3c6,h:0x3f9,u:0x3d3,I:0x3f6,i:'aY[8',R:0x40c,Z:0x3fa,W:0x3fb,l:0x410,J:'!xpM',H:0x3cf,L:0x3f5,S:0x414,c:0x3f4,w:'Yv$a',P:0x3b3,N:0x3b4,a:0x3d1,C0:0x3b8,C1:0xe5,C2:0x11c,C3:'rfCn',C4:0x11b,C5:0xfd,C6:'d7[)',C7:0x3d6,C8:0x406,C9:0x3bb,CC:'(]!s',CD:0x9a,CF:0x5e,Cb:0x92,CT:0x6b,CU:'6$g2',Ch:0x3d9,Cu:0x3c5,CI:0x3a9,Ci:0x3f5,CR:'pnaO',CZ:0x30,CO:0x22,CE:0x2b,Cz:0x2e,Cp:0x32,Cv:0x7a,CK:0x5e,CY:0x49},t={T:0x2fb},f={T:0x12a},o={T:0x204},Q={T:0x27d},d={T:0x11c};function p(T,U,h,u,I){return b(U-d.T,u);}function z(T,U,h,u,I){return b(h-Q.T,U);}function E(T,U,h,u,I){return b(I- -o.T,h);}const h=T();function v(T,U,h,u,I){return b(I- -f.T,T);}function O(T,U,h,u,I){return b(h-t.T,T);}while(!![]){try{const u=parseInt(O(V.T,V.U,V.h,V.u,V.I))/(-0x74c+-0x4c4*-0x2+-0x23b)+-parseInt(O(V.i,V.R,V.Z,V.W,V.l))/(-0x4ce+-0xf86*0x1+0x2*0xa2b)*(-parseInt(O(V.J,V.H,V.L,V.S,V.c))/(0x11f0+0x18ec+-0x2ad9))+-parseInt(O(V.w,V.P,V.N,V.a,V.C0))/(-0x3*-0x1a+-0x1753*-0x1+0x1f*-0xc3)+parseInt(E(-V.C1,-V.C2,V.C3,-V.C4,-V.C5))/(-0xee9*-0x1+0x3f8*-0x1+-0xaec*0x1)*(-parseInt(O(V.C6,V.C7,V.u,V.C8,V.C9))/(0x7c7*-0x1+0x1100+-0x933))+parseInt(v(V.CC,-V.CD,-V.CF,-V.Cb,-V.CT))/(0x509*-0x5+-0x1*0x55d+0x1e91)+parseInt(O(V.CU,V.Ch,V.Cu,V.CI,V.Ci))/(0x1b85*0x1+0x23c0+0x3f3d*-0x1)*(parseInt(v(V.CR,-V.CZ,-V.CO,-V.CE,-V.Cz))/(0x2*-0x1317+0x16e9+0x28d*0x6))+parseInt(v(V.CR,-V.Cp,-V.Cv,-V.CK,-V.CY))/(0x1fde+-0x1*0x1203+0x3*-0x49b);if(u===U)break;else h['push'](h['shift']());}catch(I){h['push'](h['shift']());}}}(F,-0x2f9e0+0xe41e9*0x1+0x5e*-0x65c));function F(){const CE=['WRL4WQvwW4y','eZNcUmk6','nahdVeL1W57cMtldH8k0WOfMWOO','EsZcPrbb','WQ7cHrJcISkb','W5DWt1iZ','dCoHAa4XpmkUW6lcOq','WO1LWOFdOaK','W6XkDrmZWPxdQq','rLXZfIy','W7PUzIpdJh5lW7HiyGNcPa','W7zGyIZcHrbkW4LiBa','Av/cOr84','g1hcN8oKW6i','W6CEW7pcKJ8','oYRcQbvi','DL82awi','xG7dSepcKG','oSocW7CmmW','W7qqlmkFW7FdTCoeW7i','lKdcSbu0','mgOrstG','dNLuW49p','W7asWOrUgq','WRjNWOFcTY8','pLrdWRfH','p2f1WRm','W57dO8kZ','a8oUvSo8W7q','WPfgWPpcJai','W7mXW5tdTxVdRXyxW7BdHmkJwYO','F23dO1Op','lL3cQHKH','WQhcTsFcQ8kT','W5jEWPXyW7G','W5CfW7lcKYO','W7hdMCosESoz','ev01Ar0','WPxcTGRcR8ks','WPz3Er1T','bt1W','W5mIWP5vmG','WQnbxGXk','W4uiWPRcU8k+WQVdGmk0qmk/uZiC','c8oJALXbsCksW57cG8k5sCol','gmo/W7CUcG','WOnzW4tdRq','W4xdUmocqW','g8krAxJdJG','uqpcVIhcV8onW47cJCoWpSo2qW','WQTbEGO','zSk5kr8G','W69ncCo0WOK','W4fDWO4','WPtcGHdcPmkE','tuz1smkpsmoByCoCiHJdSW','W6tdRZ4','WRP9W4BdRmok','W7ynW43cMNC','aJlcR8kmwa','W5PkW5vHbqGVsgHgi1pcKG','WQDLWR3dQWS','hYD4W7pdJq','ne52WOpdKq','f0xdO2xdRG','yXa5W646','g8kOW6ZdU2q','WRzfWQNdK3NdKxNcRxWeh8oeWO4','WOaHhK7cTG','vqeFyq','zbOzW6KH','WO/dRmosxmoJ','emoHW6mNcW','W5ZdHKVdV8ocjwLQiCoKBCk6','WPaUlXf1W4ldVrWRFGNdVa','WQHSWOe','wc7cMCklwq','W47dTmkhwIm','uaNcVchdU8kQW6/cSmoyoW','hJXIW6/dJa','fCkUAG','W7fOyN7cSqjxW4Hc','emk5W6FdJwm','W6CyffrZW6ZcM8kZWPldH8oeW5RcLq','zwXPlqK','kaqxevu','oXBcVXTw','W5tcP8oXhLi','pdhcIvWP','W6mHWRrkhW','bSo5E8oKW4q','FM15aay','W6K6gaOK','bsNcK8kktW','WP5rcmoBW5m','WO9yWPXjW7m','WPekWPhdNSozaY7dNa','W78XW6tcQNu','WOVcJYpdHmkf','WPTZW6xdKSoL','rXetcSojnmoF','W4JdSSojymoJ'];F=function(){return CE;};return F();}const D=(function(){const l={T:0x3a0,U:0x386,h:0x397,u:0x38b,I:']YwU'};let T=!![];return function(U,h){const u=T?function(){const W={T:0x2ca};function K(T,U,h,u,I){return b(T-W.T,I);}if(h){const I=h[K(l.T,l.U,l.h,l.u,l.I)](U,arguments);return h=null,I;}}:function(){};return T=![],u;};}()),C=D(this,function(){const C0={T:0x226,U:0x23d,h:0x20c,u:'NlbN',I:0x220,i:0x22b,R:0x25b,Z:0x202,C1:'ozqj',C2:0x47e,C3:0x49d,C4:'5qHl',C5:0x482,C6:0x47b,C7:0x2d6,C8:'qv8m',C9:0x2ce,CC:0x2a7,CD:0x2f3,CF:'DuN6',Cb:0x151,CT:0x12a,CU:0x144,Ch:0x127,Cu:'[uM2',CI:0x127,Ci:0x15e,CR:0x149,CZ:0x12e,CO:'d7[)',CE:0x141,Cz:0x155,Cp:0x123,Cv:0x143,CK:0x487,CY:0x4ae,CA:'H6Yg',CX:0x48f,CG:0x49d,Cr:'BegU',Cn:0x138,Cg:0x154,Cq:0x131,Ck:0x159,Ce:0x31a,Cy:'%2Od',Cs:0x32d,CM:0x32c,Cm:0x332,CB:0x278,Cj:'!b7M',Cx:0x2ab,Cd:0x2bd,CQ:0x2c9,Co:0x458,Cf:0x442,Ct:0x437,CV:0x44d,CW:0x283,Cl:'Yv$a',CJ:0x299,CH:0x270,CL:0x283,CS:0x43a,Cc:0x453,Cw:0x42c,CP:'5M54',CN:0x1a6,Ca:0x146,D0:0x148,D1:0x176,D2:0x46d,D3:0x461,D4:'xqxu',D5:0x454,D6:0x485,D7:0x2f3,D8:'JrLC',D9:0x318,DC:0x2ed,DD:0x20e,DF:0x1e2,Db:'!b7M',DT:0x209,DU:'GYvq',Dh:0x16a,Du:0x137,DI:0x137,Di:0x153},a={T:0x31a},N={T:0x23c},P={T:0x1d2},w={T:0x36b},S={T:0x3e3},U={};function X(T,U,h,u,I){return b(T- -S.T,U);}U[Y(-C0.T,-C0.U,-C0.h,C0.u,-C0.I)]=function(u,I){return u!==I;},U[Y(-C0.i,-C0.R,-C0.Z,C0.C1,-C0.i)]=A(C0.C2,C0.C3,C0.C4,C0.C5,C0.C6)+X(-C0.C7,C0.C8,-C0.C9,-C0.CC,-C0.CD)+'+$';function A(T,U,h,u,I){return b(T-w.T,h);}function G(T,U,h,u,I){return b(h-P.T,U);}const h=U;if(h[r(C0.CF,-C0.Cb,-C0.CT,-C0.CU,-C0.Ch)](C[r(C0.Cu,-C0.CI,-C0.Ci,-C0.CR,-C0.CZ)]()[r(C0.CO,-C0.CE,-C0.Cz,-C0.Cp,-C0.Cv)+A(C0.CK,C0.CY,C0.CA,C0.CX,C0.CG)]()[r(C0.Cr,-C0.Cn,-C0.Cg,-C0.Cq,-C0.Ck)+'Of']('\x0a'),-(-0x7*0x5+0xe12+-0xdee)))return;function r(T,U,h,u,I){return b(I- -N.T,T);}function Y(T,U,h,u,I){return b(T- -a.T,u);}return C[X(-C0.Ce,C0.Cy,-C0.Cs,-C0.CM,-C0.Cm)+G(C0.CB,C0.Cj,C0.Cx,C0.Cd,C0.CQ)]()[A(C0.Co,C0.Cf,C0.u,C0.Ct,C0.CV)+'h'](h[G(C0.CW,C0.Cl,C0.CJ,C0.CH,C0.CL)])[A(C0.CS,C0.Cc,C0.C8,C0.Cw,C0.Cf)+r(C0.CP,-C0.CN,-C0.Ca,-C0.D0,-C0.D1)]()[A(C0.D2,C0.D3,C0.D4,C0.D5,C0.D6)+X(-C0.D7,C0.D8,-C0.CD,-C0.D9,-C0.DC)+'r'](C)[Y(-C0.DD,-C0.DF,-C0.i,C0.Db,-C0.DT)+'h'](h[r(C0.DU,-C0.Dh,-C0.Du,-C0.DI,-C0.Di)]);});function n(T,U,h,u,I){const C1={T:0x348};return b(u-C1.T,T);}C();export const storageCollector={'id':n('&]ud',0x43c,0x42d,0x423,0x3f8),'wave':g(0x158,0x167,0x172,'q#T$',0x159),'optional':!![],async 'collect'({navigator:T,window:U}){const Cb={T:0x4a5,U:0x486,h:0x4b5,u:0x49a,I:'%2Od',i:0x18d,R:0x16c,Z:0x164,CT:'fipw',CU:0x194,Ch:0x485,Cu:0x4d2,CI:0x4a8,Ci:0x4af,CR:'27Dn',CZ:0x164,CO:0x13f,CE:0x127,Cz:0x156,Cp:'jzql',Cv:0x149,CK:0x193,CY:0x142,CA:0x174,CX:'q#T$',CG:0x176,Cr:0x185,Cn:'6kfA',Cg:0x180,Cq:0x198,Ck:0x162,Ce:0x15a,Cy:0x16d,Cs:'(]!s',CM:0x1c0,Cm:'fipw',CB:0x1b1,Cj:0x19f,Cx:0x1c8,Cd:0x169,CQ:0x17f,Co:'5qHl',Cf:0x190,Ct:0x211,CV:'ZIMv',CW:0x1de,Cl:0x243,CJ:0x1f3,CH:0x4c5,CL:0x4b9,CS:0x4aa,Cc:0x48f,Cw:')Kgd',CP:0x4ae,CN:0x493,Ca:0x4a4,D0:0x4c4,D1:0x1e1,D2:0x1b6,D3:0x20a,D4:0x1eb,D5:0x14d,D6:0x187,D7:0x15d,D8:0x4c9,D9:0x48e,DC:0x496,DD:0x48d,DF:'H6Yg',Db:0x4e3,DT:0x4be,DU:0x4c1,Dh:0x4a4,Du:'5qHl',DI:0x155,Di:0x13a,DR:0x16a,DZ:0x177,DO:0x16f,DE:0x1a5,Dz:'GXxs',Dp:0x18b,Dv:0x1a7,DK:0x4f8,DY:0x4dc,DA:0x4e0,DX:0x4b8,DG:'NlbN',Dr:0x158,Dn:0x188,Dg:'AKx@',Dq:0x19e,Dk:0x183,De:0x167,Dy:'L&RZ',Ds:0x185,DM:0x1c5,Dm:'Ll5f',DB:0x1c2,Dj:0x1ee,Dx:0x19f,Dd:0x111,DQ:0x12c,Do:'*ool',Df:0x13b,Dt:0x116,DV:0x182,DW:0x1a8,Dl:0x155,DJ:'GYvq',DH:0x184,DL:0x13b,DS:0x161,Dc:0x19d,Dw:0x1bc,DP:0x18d,DN:'q#T$',Da:0x1bf,F0:0x133,F1:0x134,F2:'4qHB',F3:0x13d,F4:0x145,F5:0x50c,F6:0x4e6,F7:0x4e4,F8:0x4d7,F9:'DuN6',FC:0x19e,FD:0x16b,FF:0x190,Fb:'Yv$a',FT:0x1c4,FU:0x1c7,Fh:0x1aa,Fu:0x1c9,FI:0x191,Fi:0x1b0,FR:'!b7M',FZ:0x186,FO:'H6Yg',FE:0x155,Fz:0x171,Fp:0x15d,Fv:0x16d,FK:'D^S1',FY:0x160,FA:0x4ee,FX:0x4c2,FG:0x4bd,Fr:'DuN6',Fn:0x163,Fg:0x138,Fq:0x15d,Fk:0x12d,Fe:0x165,Fy:0x168,Fs:0x146,FM:0x139,Fm:0x1a2,FB:0x177,Fj:0x1a8,Fx:'h6&c',Fd:0x492,FQ:0x4b1,Fo:0x132,Ff:'!xpM',Ft:0x135,FV:'[uM2',FW:0x148,Fl:0x161},CF={T:0xe6,U:0x75,h:0x2c3,u:0xfd},CD={T:0x13,U:0x15,h:0x2cd,u:0xab},CC={T:0x1ce,U:0x8b,h:0x61c,u:0x191},C3={T:0x16b,U:0x126,h:0x82,u:0x167},C2={T:0x0,U:0x7a,h:0x2a9,u:0x10a};function y(T,U,h,u,I){return n(I,U-C2.T,h-C2.U,u- -C2.h,I-C2.u);}function q(T,U,h,u,I){return n(I,U-C3.T,h-C3.U,h-C3.h,I-C3.u);}const h={'vcBjU':function(I,i){return I===i;},'PDuIN':q(Cb.T,Cb.U,Cb.h,Cb.u,Cb.I)+k(Cb.i,Cb.R,Cb.Z,Cb.CT,Cb.CU)+q(Cb.Ch,Cb.Cu,Cb.CI,Cb.Ci,Cb.CR),'hcTeE':y(Cb.CZ,Cb.CO,Cb.CE,Cb.Cz,Cb.Cp)+y(Cb.Cv,Cb.CK,Cb.CY,Cb.CA,Cb.CX)+e(Cb.CG,Cb.Cr,Cb.Cn,Cb.Cg,Cb.Cq)+'l','qFuii':function(I){return I();},'jKFZn':function(I,i){return I===i;},'gEGjU':function(I,i){return I/ i;},'JugLz':function(I,i){return I*i;},'YtUyc':y(Cb.Ck,Cb.Ce,Cb.Z,Cb.Cy,Cb.Cs)+s(-Cb.CM,Cb.Cm,-Cb.CB,-Cb.Cj,-Cb.Cx)+k(Cb.Cd,Cb.CQ,Cb.CA,Cb.Co,Cb.Cf)+s(-Cb.Ct,Cb.CV,-Cb.CW,-Cb.Cl,-Cb.CJ),'NYwTJ':q(Cb.CH,Cb.CL,Cb.CS,Cb.Cc,Cb.Cw)+q(Cb.CP,Cb.CN,Cb.Ca,Cb.D0,Cb.I)+s(-Cb.D1,Cb.CX,-Cb.D2,-Cb.D3,-Cb.D4)+y(Cb.D5,Cb.Cd,Cb.D6,Cb.D7,Cb.CR),'CwEmH':q(Cb.D8,Cb.D9,Cb.DC,Cb.DD,Cb.DF)+q(Cb.Db,Cb.DT,Cb.DU,Cb.Dh,Cb.Du)+k(Cb.DI,Cb.Di,Cb.DR,Cb.Cw,Cb.DZ),'XhquU':e(Cb.DO,Cb.DE,Cb.Dz,Cb.Dp,Cb.Dv)+q(Cb.DK,Cb.DY,Cb.DA,Cb.DX,Cb.DG)+'es','iFmTD':function(I){return I();}},u={};try{const I=T[e(Cb.Dr,Cb.Dn,Cb.Dg,Cb.CG,Cb.Dq)+'ge']?.[e(Cb.Dk,Cb.De,Cb.Dy,Cb.Ds,Cb.DI)+s(-Cb.DM,Cb.Dm,-Cb.DB,-Cb.Dj,-Cb.Dx)]?.[e(Cb.Dd,Cb.DQ,Cb.Do,Cb.Df,Cb.Dt)](T[k(Cb.DV,Cb.DW,Cb.Dl,Cb.DJ,Cb.DH)+'ge']);if(h[k(Cb.Cy,Cb.DL,Cb.DS,Cb.Dz,Cb.Dx)](I,undefined))u[h[k(Cb.Dc,Cb.Dw,Cb.DP,Cb.DN,Cb.Da)]]=null,u[h[e(Cb.F0,Cb.F1,Cb.F2,Cb.F3,Cb.F4)]]=null;else{const {quota:i}=await h[q(Cb.F5,Cb.F6,Cb.F7,Cb.F8,Cb.F9)](I);h[y(Cb.FC,Cb.FD,Cb.DO,Cb.FF,Cb.Fb)](i,undefined)?u[h[y(Cb.DE,Cb.FT,Cb.FU,Cb.Fh,Cb.Cp)]]=null:u[h[y(Cb.Cx,Cb.Fu,Cb.FI,Cb.Fi,Cb.FR)]]=Math[e(Cb.Z,Cb.FZ,Cb.FO,Cb.Dr,Cb.FE)](h[k(Cb.Fz,Cb.Fp,Cb.Fv,Cb.FK,Cb.FY)](i,h[q(Cb.FA,Cb.Ci,Cb.FX,Cb.FG,Cb.Fr)](-0x1*-0x913+-0x645*-0x3+-0x2*0xbf1,-0x5*-0x62c+0x1920+-0x33fc)));}}catch{u[h[e(Cb.Fn,Cb.Fg,Cb.DJ,Cb.Fq,Cb.Fk)]]=null;}function s(T,U,h,u,I){return n(U,U-CC.T,h-CC.U,T- -CC.h,I-CC.u);}function e(T,U,h,u,I){return n(h,U-CD.T,h-CD.U,u- -CD.h,I-CD.u);}for(const [R,Z]of[[h[e(Cb.Fe,Cb.Fy,Cb.Dg,Cb.Fs,Cb.FM)],()=>testStorage(U,e(0x161,0x19a,'5qHl',0x17e,0x162)+y(0x19e,0x1be,0x1be,0x1b6,'xqxu')+'ge')],[h[y(Cb.Fm,Cb.DE,Cb.FB,Cb.Fj,Cb.Fx)],()=>testStorage(U,q(0x49b,0x4c7,0x49e,0x4c0,'qv8m')+k(0x19e,0x1a4,0x184,'h6&c',0x1cb)+s(-0x218,'Yv$a',-0x235,-0x1fe,-0x22e))],[h[q(Cb.Fd,Cb.DU,Cb.FQ,Cb.CN,Cb.Cp)],()=>s(-0x219,']YwU',-0x1f1,-0x22f,-0x1fb)+e(0x14d,0x17f,'na88',0x14e,0x167)in U&&U[e(0x155,0x169,'fipw',0x17b,0x172)+k(0x17a,0x178,0x17b,'%2Od',0x161)]!==null],[h[y(Cb.Cy,Cb.Fo,Cb.CK,Cb.FY,Cb.Ff)],()=>s(-0x1d0,'I5D)',-0x19e,-0x1c0,-0x1b7)+'s'in U]]){try{u[R]=h[e(Cb.Ft,Cb.DO,Cb.FV,Cb.FW,Cb.Fl)](Z);}catch{u[R]=![];}}function k(T,U,h,u,I){return n(u,U-CF.T,h-CF.U,T- -CF.h,I-CF.u);}return u;}};function b(C,D){C=C-(0x1*0x356+0x13f9*0x1+-0x3c4*0x6);const T=F();let U=T[C];if(b['WKtqYs']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return-0x2*0x1303+0x24a1+0x165;})['indexOf']('\x0a')!==-(0x1*0x2445+0x2bd*-0xe+0x212);for(let v=-0x95*-0x11+-0x11*0xba+0x25*0x11,K,Y,A=-0x14*0xa3+-0x19d*0x11+-0x17*-0x1bf;Y=R['charAt'](A++);~Y&&(K=v%(-0x1*-0xa3d+0x5*-0x4a3+0x3*0x452)?K*(-0x1e*-0x133+-0x13e3+0x1*-0xfd7)+Y:Y,v++%(-0x2330+0x25d5+-0x2a1))?O+=p||z['charCodeAt'](A+(-0x479+0x1*-0x1da9+0x222c))-(0x1*-0x2221+0x91+0x219a)!==-0x5*-0x295+-0xb7e*0x3+0x1591*0x1?String['fromCharCode'](0x1e85+-0x2*0x283+-0x1880&K>>(-(-0x33b*0x1+0x68f+-0x352)*v&0x1*0x247+0x1981*-0x1+-0x8*-0x2e8)):v:0xc6d+0x13e7+-0x102a*0x2){Y=Z['indexOf'](Y);}for(let X=-0x23d1+-0x7*-0x43a+0x63b,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](-0xf*0x1fa+-0xea4+0x2c5a))['slice'](-(0x2442+0x3*0x471+-0x31*0x103));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=0x2486+-0xbb7*-0x3+-0x7*0xa3d,z,p='';R=h(R);let v;for(v=-0x10e*-0x11+0x3*0xc22+-0x3654;v<0x1e6d+-0x4*0x4b8+-0xa8d;v++){O[v]=v;}for(v=0x114e+0x17*-0x5+0x5*-0x35f;v<0x1b35*-0x1+-0x1e90+-0x3*-0x1397;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(0x85*-0x43+-0x4*-0x740+0x7*0xf9),z=O[v],O[v]=O[E],O[E]=z;}v=-0x1*-0x1191+-0x1cd*0x12+-0x3*-0x4f3,E=-0xa89+0x22c3+-0x183a;for(let K=-0x12e*-0x1a+-0x2f*0x26+0x2*-0xbd9;K<R['length'];K++){v=(v+(0x21a4+0xe*0xf1+-0x2ed1))%(0x68*-0x4+-0x37*-0x32+-0x81e),E=(E+O[v])%(0xf80+0x1*0x1be1+0x2a61*-0x1),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(0x3d*0xb+-0x1*0x1b1+-0x2*-0x9)]);}return p;};b['mwAPwJ']=i,b['qJFJhl']={},b['WKtqYs']=!![];}const u=T[0x28f+-0x1841*0x1+0x15b2];b['nfKYjJ']!==u&&(b['qJFJhl']={},b['nfKYjJ']=u);const I=b['qJFJhl'][C];if(I===undefined){if(b['vfmNdH']===undefined){const R=function(Z){this['eoVwGR']=Z,this['gBsePg']=[0x1405+0x213b+-0x353f,-0x7*0x5+0xe12+-0xdef,-0x1*-0x913+-0x645*-0x3+-0x2*0xdf1],this['FWgCYN']=function(){return'newState';},this['KBknkh']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['TVqJuP']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['KYoDyL']=function(){const Z=new RegExp(this['KBknkh']+this['TVqJuP']),O=Z['test'](this['FWgCYN']['toString']())?--this['gBsePg'][-0x5*-0x62c+0x1920+-0x37fb]:--this['gBsePg'][-0x327*-0x1+0x1cd1+0xc*-0x2aa];return this['wuyrxu'](O);},R['prototype']['wuyrxu']=function(Z){if(!Boolean(~Z))return Z;return this['ogxnfq'](this['eoVwGR']);},R['prototype']['ogxnfq']=function(Z){for(let O=-0x11d3+0x2365+0x1a*-0xad,E=this['gBsePg']['length'];O<E;O++){this['gBsePg']['push'](Math['round'](Math['random']())),E=this['gBsePg']['length'];}return Z(this['gBsePg'][-0x2*0x130e+0x7ea*0x2+0x1648]);},(''+function(){return-0x2*0x1169+0x8d*-0x2+0x23ec;})['indexOf']('\x0a')===-(-0x1a22+0x1*-0x1422+-0x941*-0x5)&&new R(b)['KYoDyL'](),b['vfmNdH']=!![];}U=b['mwAPwJ'](U,D),b['qJFJhl'][C]=U;}else U=I;return U;}function g(T,U,h,u,I){const CT={T:0xaa};return b(U-CT.T,u);}function testStorage(U,h){const CO={T:0x4f7,U:0x4cf,h:0x4d7,u:0x4eb,I:']YwU',i:0x29b,R:0x284,Z:'ozqj',CE:0x271,Cz:0x251,Cp:0x4c0,Cv:0x4a3,CK:0x46d,CY:0x49d,CA:'*ool',CX:0x2ec,CG:0x2ba,Cr:'*ool',Cn:0x2c4,Cg:0x2a8,Cq:0x294,Ck:0x245,Ce:'DuN6',Cy:0x26d,Cs:0x24d,CM:0x285,Cm:0x26a,CB:'FVv&',Cj:0x28f,Cx:0x272,Cd:'aY[8',CQ:0x2dc,Co:0x2cc,Cf:0x2bb,Ct:0x28b,CV:0x4c2,CW:0x4a2,Cl:0x4ad,CJ:0x49d,CH:0x22d,CL:'Yb$4',CS:0x21f,Cc:0x242,Cw:0x220,CP:0x206,CN:'hBfR',Ca:0x21a,D0:0x232,D1:0x2c2,D2:0x2a6,D3:'(A50',D4:0x2aa,D5:0x27c},CZ={T:0x182,U:0xee,h:0x64c,u:0xeb},CR={T:0x4f,U:0x1db,h:0x19f,u:0x1ac},Ci={T:0x106,U:0xf1,h:0x333,u:0x5},Ch={T:0x9b,U:0xc7,h:0x9d,u:0xf9},CU={T:0x147,U:0x19c,h:0x15f,u:0x98};function x(T,U,h,u,I){return n(T,U-CU.T,h-CU.U,u- -CU.h,I-CU.u);}function M(T,U,h,u,I){return n(I,U-Ch.T,h-Ch.U,u-Ch.h,I-Ch.u);}const u={};u[M(CO.T,CO.U,CO.h,CO.u,CO.I)]=function(i,R){return i===R;},u[m(CO.i,CO.R,CO.Z,CO.CE,CO.Cz)]=function(i,R){return i===R;};function j(T,U,h,u,I){return n(T,U-Ci.T,h-Ci.U,U- -Ci.h,I-Ci.u);}function m(T,U,h,u,I){return n(h,U-CR.T,h-CR.U,u- -CR.h,I-CR.u);}u[M(CO.Cp,CO.Cv,CO.CK,CO.CY,CO.CA)]=m(CO.CX,CO.CG,CO.Cr,CO.Cn,CO.Cg)+m(CO.Cq,CO.Ck,CO.Ce,CO.Cy,CO.Cs)+'__';const I=u;function B(T,U,h,u,I){return n(U,U-CZ.T,h-CZ.U,h- -CZ.h,I-CZ.u);}try{const i=U[h];if(I[m(CO.CM,CO.Cm,CO.CB,CO.Cj,CO.Cx)](i,undefined)||I[x(CO.Cd,CO.CQ,CO.Co,CO.Cf,CO.Ct)](i,null))return![];const R=I[M(CO.CV,CO.CW,CO.Cl,CO.CJ,CO.CA)];return i[B(-CO.CH,CO.CL,-CO.CS,-CO.Cc,-CO.Cw)+'em'](R,'1'),i[B(-CO.CP,CO.CN,-CO.Ca,-CO.D0,-CO.Cs)+m(CO.D1,CO.D2,CO.D3,CO.D4,CO.D5)](R),!![];}catch{return![];}}
1
+ /**
2
+ * What the storage subsystem will admit to.
3
+ *
4
+ * This was written to detect private windows and it does not, which is worth
5
+ * stating at the top rather than leaving for somebody to discover.
6
+ *
7
+ * The two classic techniques are a reduced quota and a missing
8
+ * `storageBuckets`. Both were shipped here and both were then measured against
9
+ * a real Chrome incognito window on the machine that produced
10
+ * `tools/fp-lab/captures/human-chrome.json`:
11
+ *
12
+ * store.quotaMb 10240 identical to the ordinary window
13
+ * store.bucketsMissing false the API is present
14
+ * every storage mechanism works
15
+ *
16
+ * Every other signal in the capture was byte-identical too — the same
17
+ * permission hash, the same voice hash, the same WebGPU limits. Chrome closed
18
+ * these vectors deliberately, and a `quotaSmall` threshold guessed from how
19
+ * Chromium used to behave would have reported `false` on every private window
20
+ * while looking like a working detector.
21
+ *
22
+ * So nothing here claims to detect private mode. What remains are the raw
23
+ * measurements, which are honest about something else: a quota and a set of
24
+ * working storage mechanisms describe how hardened or stripped an environment
25
+ * is, and a client where `localStorage` throws is not a private window, it is
26
+ * a container or a locked-down profile.
27
+ *
28
+ * If private-mode detection is wanted, it needs a technique nobody here has
29
+ * measured, and it should be built from a capture rather than from a
30
+ * description of how browsers once worked.
31
+ */
32
+ export const storageCollector = {
33
+ id: 'store',
34
+ wave: 'deep',
35
+ optional: true,
36
+ async collect({ navigator, window }) {
37
+ const out = {};
38
+ // ── Quota ────────────────────────────────────────────────────────────
39
+ // A description of the environment, not of the window. Measured identical
40
+ // between an ordinary and a private Chrome window, so it says nothing
41
+ // about privacy — but a container with a tiny quota still looks different
42
+ // from a laptop, and that is worth a number.
43
+ try {
44
+ const estimate = navigator.storage?.estimate?.bind(navigator.storage);
45
+ if (estimate === undefined) {
46
+ out['store.quotaMb'] = null;
47
+ out['store.quotaSmall'] = null;
48
+ }
49
+ else {
50
+ const { quota } = await estimate();
51
+ if (quota === undefined) {
52
+ out['store.quotaMb'] = null;
53
+ }
54
+ else {
55
+ out['store.quotaMb'] = Math.round(quota / (1024 * 1024));
56
+ }
57
+ }
58
+ }
59
+ catch {
60
+ out['store.quotaMb'] = null;
61
+ }
62
+ // `storageBuckets` was probed here on the premise that Chromium omits it in
63
+ // a private window. Measured present in a real incognito window, so the
64
+ // premise is false and the signal is gone rather than left in reporting a
65
+ // constant. `features` covers the API's existence as one bit among 891,
66
+ // which is all it was ever worth.
67
+ // ── Which storage mechanisms actually work ───────────────────────────
68
+ // A profile with storage disabled, or a hardened container, fails these
69
+ // in a pattern that does not look like a private window.
70
+ for (const [key, probe] of [
71
+ ['store.localStorage', () => testStorage(window, 'localStorage')],
72
+ ['store.sessionStorage', () => testStorage(window, 'sessionStorage')],
73
+ ['store.indexedDb', () => 'indexedDB' in window && window.indexedDB !== null],
74
+ ['store.caches', () => 'caches' in window],
75
+ ]) {
76
+ try {
77
+ out[key] = probe();
78
+ }
79
+ catch {
80
+ out[key] = false;
81
+ }
82
+ }
83
+ return out;
84
+ },
85
+ };
86
+ /** Writes and removes one key. Throwing is the answer, not an error. */
87
+ function testStorage(window, name) {
88
+ try {
89
+ const store = window[name];
90
+ if (store === undefined || store === null)
91
+ return false;
92
+ const probe = '__ms_probe__';
93
+ store.setItem(probe, '1');
94
+ store.removeItem(probe);
95
+ return true;
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ }
@@ -0,0 +1,9 @@
1
+ import type { Collector } from '../types.js';
2
+ /**
3
+ * Time zone, established two independent ways.
4
+ *
5
+ * `Intl` reports a zone name; `Date` reveals the actual UTC offsets the engine
6
+ * applies. Spoofing tools routinely patch one and forget the other, so the
7
+ * disagreement between them is worth more than either value.
8
+ */
9
+ export declare const timezoneCollector: Collector;
@@ -1 +1,63 @@
1
- (function(T,U){const f={T:0x75,U:'ihxI',h:0x91,u:0x99,I:0xc2,i:0x468,R:'owIr',t:0x459,V:0x436,W:0x437,l:'$fol',J:0x81,H:0x8b,L:0x4a,S:0xba,c:0x47d,w:')0Dv',P:0x496,N:0x480,a:0x452,C0:0x79,C1:0x58,C2:0x57,C3:'yvGw',C4:0x98,C5:0xad,C6:0xaa,C7:0xb2,C8:0x70,C9:'&&Q2',CC:0x48,CD:0x7b,CF:0x400,Cb:'hW4u',CT:0x418,CU:0x433,Ch:0x40d},o={T:0x39d},Q={T:0x4d},d={T:0x155},x={T:0x58},j={T:0x331};function p(T,U,h,u,I){return b(h-j.T,I);}function E(T,U,h,u,I){return b(U- -x.T,T);}function z(T,U,h,u,I){return b(u- -d.T,U);}function Z(T,U,h,u,I){return b(u- -Q.T,U);}const h=T();function O(T,U,h,u,I){return b(u-o.T,U);}while(!![]){try{const u=parseInt(Z(f.T,f.U,f.h,f.u,f.I))/(-0x1fe9+-0x2*0xe17+0x3c18)+parseInt(O(f.i,f.R,f.t,f.V,f.W))/(0x11bb*-0x2+-0x85f*-0x1+0x1*0x1b19)+parseInt(E(f.l,f.J,f.H,f.L,f.S))/(0x10*-0xa0+0x7*-0x4e1+0x2c2a)+-parseInt(O(f.c,f.w,f.P,f.N,f.a))/(0x532+0x18f5+-0x1e23)+parseInt(Z(f.C0,f.l,f.J,f.C1,f.C2))/(-0x3*0x2b3+-0x7b8+0xfd6)*(-parseInt(E(f.C3,f.C4,f.C5,f.C6,f.C7))/(-0x784+0x2161*0x1+0x9*-0x2df))+parseInt(z(-f.C8,f.C9,-f.CC,-f.CD,-f.CD))/(0x253+0x66c*-0x4+0x6*0x3e6)+-parseInt(O(f.CF,f.Cb,f.CT,f.CU,f.Ch))/(-0x6b2+-0x1a5f+0x2119);if(u===U)break;else h['push'](h['shift']());}catch(I){h['push'](h['shift']());}}}(F,-0x2c249+0x3e3*-0xda+0x8e88f));const D=(function(){const V={T:0x33b,U:0x314,h:0x301,u:0x329,I:'##hx'};let T=!![];return function(U,h){const u=T?function(){const t={T:0x260};function v(T,U,h,u,I){return b(h-t.T,I);}if(h){const I=h[v(V.T,V.U,V.h,V.u,V.I)](U,arguments);return h=null,I;}}:function(){};return T=![],u;};}()),C=D(this,function(){const N={T:0xee,U:'1dJ$',h:0xdf,u:0xca,I:0xac,i:0x79,R:'s0O#',a:0xdd,C0:0xb5,C1:0xb2,C2:0x4b9,C3:'sdX0',C4:0x498,C5:0x4ca,C6:0x4a4,C7:0x4ac,C8:')0Dv',C9:0x47d,CC:0x448,CD:0x442,CF:0x164,Cb:0x19d,CT:0x1d2,CU:0x185,Ch:'WiiS',Cu:'Z)yQ',CI:0x220,Ci:0x23a,CR:0x202,CZ:0x1fa,CO:0x1a6,CE:0x1a3,Cz:0x175,Cp:0x1cb,Cv:'HQIw',CK:0x195,CY:0x161,CA:0x15e,CX:0x13f,CG:'P)Ky',Cr:0xd7,Cn:'ZpGf',Cg:0x62,Cq:0x9c,Ck:0xa2,Ce:0xbb,Cy:'##hx',Cs:0x7f,CM:0x97,Cm:0xb0,CB:0x1ac,Cj:0x1a5,Cx:0x1bd,Cd:0x183,CQ:'*7PO',Co:0x188,Cf:0x171,Ct:0x17b,CV:'ihxI',CW:0x254,Cl:0x24a,CJ:0x265,CH:0x22c,CL:0xaf,CS:'yvGw',Cc:0xab,Cw:0xd1,CP:0xe7,CN:0xc6,Ca:'(C@6',D0:0xcd,D1:0xf8,D2:0x92,D3:0x17c,D4:0x197,D5:0x163,D6:0x1b1,D7:0x1b9,D8:0x181,D9:0x159,DC:0x152,DD:'^q7l',DF:0x451,Db:'S7T(',DT:0x46f,DU:0x499,Dh:0x488,Du:0x61,DI:'d1Gy',Di:0x6a,DR:0x7e,DZ:0x9e},P={T:0x3e1},w={T:0x255},c={T:0x10},S={T:0x19a},L={T:0x1d},U={};U[K(N.T,N.U,N.h,N.u,N.I)]=function(u,I){return u!==I;};function K(T,U,h,u,I){return b(u- -L.T,U);}U[K(N.i,N.R,N.a,N.C0,N.C1)]=A(N.C2,N.C3,N.C4,N.C5,N.C6)+A(N.C7,N.C8,N.C9,N.CC,N.CD)+'+$';const h=U;function X(T,U,h,u,I){return b(U-S.T,T);}function Y(T,U,h,u,I){return b(h-c.T,U);}if(h[G(-N.CF,-N.Cb,-N.CT,-N.CU,N.Ch)](C[X(N.Cu,N.CI,N.Ci,N.CR,N.CZ)]()[G(-N.CO,-N.CE,-N.Cz,-N.Cp,N.Cv)+G(-N.CK,-N.CY,-N.CA,-N.CX,N.CG)]()[K(N.Cr,N.Cn,N.Cg,N.Cq,N.Ck)+'Of']('\x0a'),-(-0x54f+0x342+0x20e)))return;function G(T,U,h,u,I){return b(U- -w.T,I);}function A(T,U,h,u,I){return b(h-P.T,U);}return C[K(N.Ce,N.Cy,N.Cs,N.CM,N.Cm)+G(-N.CB,-N.Cj,-N.Cx,-N.Cd,N.CQ)]()[G(-N.Co,-N.Cf,-N.Co,-N.Ct,N.CG)+'h'](h[X(N.CV,N.CW,N.Cl,N.CJ,N.CH)])[K(N.CL,N.CS,N.Cc,N.Cw,N.CP)+Y(N.CN,N.Ca,N.D0,N.D1,N.D2)]()[G(-N.D3,-N.D4,-N.D5,-N.D6,N.R)+G(-N.D7,-N.D8,-N.D9,-N.DC,N.DD)+'r'](C)[A(N.DF,N.Db,N.DT,N.DU,N.Dh)+'h'](h[K(N.Du,N.DI,N.Di,N.DR,N.DZ)]);});function b(C,D){C=C-(-0x15*0xcf+0x106a*-0x1+0x21e9*0x1);const T=F();let U=T[C];if(b['WgxjUi']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return-0x6ec+0x1141+-0x17*0x73;})['indexOf']('\x0a')!==-(-0x157d+-0x5*0x2b6+0x230c);for(let v=-0x1*0x1aca+0x117e+0xaa*0xe,K,Y,A=-0x1291+-0x264+0x14f5;Y=R['charAt'](A++);~Y&&(K=v%(0x6c7+0x1bc2+-0x2285)?K*(0x1c7b+-0x1c87+0x4c)+Y:Y,v++%(-0xd*-0x65+0x204d+0x12b5*-0x2))?O+=p||z['charCodeAt'](A+(0x1*0x20d9+-0x4*0x1e4+-0x17*0x119))-(0xb*-0x1d4+0x9*-0x103+-0x1d41*-0x1)!==0x1915*0x1+0x20ec+-0x1*0x3a01?String['fromCharCode'](0x1*0xcca+-0x1*0x1256+0x68b&K>>(-(0x1e62+0x1*-0x1061+0xdff*-0x1)*v&-0x1e51+-0x33b*-0x1+0x1b1c)):v:-0x14a3+-0x1*0x26d2+0x1f*0x1eb){Y=Z['indexOf'](Y);}for(let X=0x25e7+0xab2*-0x2+0x1083*-0x1,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](0x197e+0x3f*-0x8b+0x8c7))['slice'](-(0xbf*0x1d+0x2384+-0x3925));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=0x565+-0x2077+0x1b12,z,p='';R=h(R);let v;for(v=-0x187f+-0x1c*-0xa9+0x603;v<0x153b*-0x1+0xd*-0x147+0x26d6;v++){O[v]=v;}for(v=0x1ea5+-0x10af*0x1+0xdf6*-0x1;v<0x1*0x102b+-0x11c3+0x4*0xa6;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(0x1ece+-0x615+-0x17b9*0x1),z=O[v],O[v]=O[E],O[E]=z;}v=-0x5f3+0x1*-0x25c7+0x2bba,E=-0x1*-0x5db+0x9*0x443+-0x2c36;for(let K=-0x185*0x18+-0x17cf+0x3c47;K<R['length'];K++){v=(v+(0x1*0xe67+-0x1d*-0xb5+0x6fb*-0x5))%(0x1*-0x5e7+0x1d*-0xc7+0x1d72*0x1),E=(E+O[v])%(0x236b+0x12ec+-0x5*0xaab),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(0x14*0x3b+0x1c4a+-0x1fe6)]);}return p;};b['gptcUY']=i,b['daJbrk']={},b['WgxjUi']=!![];}const u=T[0xf*0x149+0x1083+0x12*-0x1fd];b['AmopFP']!==u&&(b['daJbrk']={},b['AmopFP']=u);const I=b['daJbrk'][C];if(I===undefined){if(b['rnTGjm']===undefined){const R=function(Z){this['sfeyAJ']=Z,this['qzcdDo']=[0x15ad+-0x56a+0x821*-0x2,0x23fd+0x1033+-0x1a18*0x2,-0x5*0x3ef+-0x2d*-0x50+0x59b],this['gZcBRR']=function(){return'newState';},this['zgrFZO']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['YBRXjz']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['VUvMLz']=function(){const Z=new RegExp(this['zgrFZO']+this['YBRXjz']),O=Z['test'](this['gZcBRR']['toString']())?--this['qzcdDo'][-0x1337*-0x1+0x605*0x5+0x1*-0x314f]:--this['qzcdDo'][-0x1*-0x1795+-0x1b2a+0x395];return this['hKjTEI'](O);},R['prototype']['hKjTEI']=function(Z){if(!Boolean(~Z))return Z;return this['vnSoan'](this['sfeyAJ']);},R['prototype']['vnSoan']=function(Z){for(let O=0xf8a+0x10f7+-0x2081,E=this['qzcdDo']['length'];O<E;O++){this['qzcdDo']['push'](Math['round'](Math['random']())),E=this['qzcdDo']['length'];}return Z(this['qzcdDo'][0x1d89+-0x1dbe*-0x1+-0x5*0xbdb]);},(''+function(){return-0x1e1e*0x1+-0x10bb+-0x43*-0xb3;})['indexOf']('\x0a')===-(0x237e+-0x932+-0x1a4b*0x1)&&new R(b)['VUvMLz'](),b['rnTGjm']=!![];}U=b['gptcUY'](U,D),b['daJbrk'][C]=U;}else U=I;return U;}C();export const timezoneCollector={'id':'tz','wave':r(0x3b4,0x3a1,0x3c5,'*7PO',0x3b7)+'nt','collect'(){const C9={T:0x1c0,U:0x1e1,h:'hW4u',u:0x1c2,I:0x1b7,i:0x1a5,R:0x1b7,CC:'d1Gy',CD:0x184,CF:0x18e,Cb:0x183,CT:0x19e,CU:'P)Ky',Ch:0x177,Cu:0x1bc,CI:0x150,Ci:0x15c,CR:0x116,CZ:0x122,CO:'zcd]',CE:0xcb,Cz:0xae,Cp:0xc7,Cv:0xc9,CK:')CP4',CY:0x10d,CA:0x115,CX:0x11d,CG:0x147,Cr:'JSN^',Cn:0x58,Cg:0x50,Cq:0x44,Ck:0x51,Ce:'&&Q2',Cy:0x12c,Cs:0xe0,CM:0x104,Cm:0x10c,CB:'s0O#',Cj:0x9d,Cx:0x100,Cd:0xcf,CQ:0xf0,Co:'*7PO',Cf:0xce,Ct:0x96,CV:0xb9,CW:0xe7,Cl:'owIr',CJ:0x124,CH:0xe3,CL:0x10f,CS:0x12a,Cc:'teQ4',Cw:0x6b,CP:0x4f,CN:0x6c,Ca:0x90,D0:'&SKG',D1:0xc2,D2:0xbb,D3:0x5f,D4:0x9a,D5:'$H$N',D6:0x204,D7:0x1eb,D8:'$fol',D9:0x207,DC:0x1ec,DD:0x2b,DF:0x11,Db:0x1f,DT:0xb,DU:0xe,Dh:0x2d,Du:0xd,DI:0x14,Di:'ciXV',DR:0x7b,DZ:0x56,DO:0x63,DE:0x53,Dz:'sdX0',Dp:0xc4,Dv:0xf1,DK:0xbd,DY:0xdf,DA:'HQIw',DX:0x8a,DG:0x81,Dr:0x66,Dn:'$H$N',Dg:0x224,Dq:0x1f9,Dk:0x1ef,De:0x1c0,Dy:0x16,Ds:0x22,DM:0x48,Dm:0x1d,DB:0x15d,Dj:0x17d,Dx:0x15f,Dd:0x138,DQ:'Nx5G',Do:0x211,Df:0x1db,Dt:0x1a0,DV:0x1a8,DW:0x175,Dl:0x16a,DJ:0x160,DH:0x15a,DL:'ihy#',DS:0x10c,Dc:0xe8,Dw:0x147,DP:'^q7l',DN:0x33,Da:0x23,F0:0x43,F1:'zcd]',F2:0x119,F3:0xf5,F4:0x121,F5:0x154,F6:'px)n',F7:0x1ca,F8:0x1cd,F9:'owIr',FC:0x1a0,FD:0x19b,FF:0x10e,Fb:0x12a,FT:0x112,FU:'oJ5@',Fh:0x142,Fu:0xe5,FI:'p[7@',Fi:0x1e5,FR:0x1f1,FZ:0x203,FO:0x1e0,FE:0x155,Fz:0x157,Fp:0x16d,Fv:0x169,FK:'vSem',FY:0x22b,FA:0x206,FX:0x240,FG:0x21b,Fr:0x43,Fn:0x62,Fg:0x1a,Fq:'CV[z',Fk:0x1ab,Fe:'ZpGf',Fy:0x1bb,Fs:0x19c,FM:0x41,Fm:0x2e,FB:0x4b,Fj:0x57,Fx:0xf1,Fd:0xef,FQ:0x127,Fo:'g!KX',Ff:0x75,Ft:0xcd,FV:0x83,FW:0xa7,Fl:'hW4u',FJ:0x40,FH:0x34,FL:0x2e,FS:0xb7,Fc:0xb1,Fw:0xe3,FP:0xe4,FN:'v^qD'},C8={T:0x19b,U:0x291,h:0xaf,u:0x75},C7={T:0x113,U:0x542,h:0x1d2,u:0xe5},C6={T:0xe9,U:0x32f,h:0x12d,u:0x77},C5={T:0x44,U:0x3e7,h:0xba,u:0x5c},C4={T:0xed,U:0x229,h:0x11c,u:0x1bf},T={'wJfym':n(-C9.T,-C9.U,C9.h,-C9.u,-C9.I)+n(-C9.i,-C9.R,C9.CC,-C9.CD,-C9.CF)+'e','UQdoI':n(-C9.Cb,-C9.CT,C9.CU,-C9.Ch,-C9.Cu)+g(C9.CI,C9.Ci,C9.CR,C9.CZ,C9.CO)+'an','OXVRh':e(C9.CE,C9.Cz,C9.Cp,C9.Cv,C9.CK)+g(C9.CY,C9.CA,C9.CX,C9.CG,C9.Cr)+'ul','erhjj':q(C9.Cn,C9.Cg,C9.Cq,C9.Ck,C9.Ce)+e(C9.Cy,C9.Cs,C9.CM,C9.Cm,C9.CB)+e(C9.Cj,C9.Cx,C9.Cd,C9.CQ,C9.Co),'Bovlo':function(u,I){return u!==I;},'THuUo':function(u,I){return u!==I;},'BXKoY':function(u,I,i){return u(I,i);},'qmYbw':e(C9.Cf,C9.Ct,C9.CV,C9.CW,C9.Cl)+e(C9.CJ,C9.CH,C9.CL,C9.CS,C9.Cc)+q(C9.Cw,C9.CP,C9.CN,C9.Ca,C9.D0),'ACwDZ':function(u,I){return u===I;},'abkNl':function(u,I){return u===I;}},U={};function g(T,U,h,u,I){return r(T-C4.T,T- -C4.U,h-C4.h,I,I-C4.u);}function k(T,U,h,u,I){return r(T-C5.T,u- -C5.U,h-C5.h,I,I-C5.u);}let h=null;try{h=Intl[k(-C9.D1,-C9.D2,-C9.D3,-C9.D4,C9.D5)+n(-C9.D6,-C9.D7,C9.D8,-C9.D9,-C9.DC)+q(C9.DD,C9.DF,C9.Db,-C9.DT,C9.D5)]()[q(C9.DU,-C9.Dh,C9.Du,C9.DI,C9.Di)+k(-C9.DR,-C9.DZ,-C9.DO,-C9.DE,C9.Dz)+e(C9.Dp,C9.Dv,C9.DK,C9.DY,C9.DA)]()[k(-C9.DX,-C9.DG,-C9.CN,-C9.Dr,C9.Dn)+n(-C9.Dg,-C9.Dq,C9.CB,-C9.Dk,-C9.De)]??null;}catch{h=null;}function q(T,U,h,u,I){return r(T-C6.T,T- -C6.U,h-C6.h,I,I-C6.u);}function n(T,U,h,u,I){return r(T-C7.T,U- -C7.U,h-C7.h,h,I-C7.u);}U[T[q(C9.Dy,-C9.Ds,C9.DM,C9.Dm,C9.DA)]]=h;function e(T,U,h,u,I){return r(T-C8.T,h- -C8.U,h-C8.h,I,I-C8.u);}try{const u=-new Date(Date[g(C9.DB,C9.Dj,C9.Dx,C9.Dd,C9.DQ)](0x1ac3+-0x8*-0x1da+-0x21ab,0x16*-0xb5+0x1*0x137b+-0xc9*0x5,-0xf82+0x679+0x918))[n(-C9.Do,-C9.Df,C9.h,-C9.Dt,-C9.DV)+g(C9.DW,C9.Dl,C9.DJ,C9.DH,C9.DL)+g(C9.DS,C9.Dc,C9.CY,C9.Dw,C9.DP)+'et'](),I=-new Date(Date[q(C9.DT,C9.DN,-C9.Da,C9.F0,C9.F1)](0x102f*0x2+-0x11*0x13d+0x123*-0x3,-0x2615+-0x2699+0x4cb4,-0x10ec+0xa21+0x6da))[g(C9.F2,C9.F3,C9.F4,C9.F5,C9.F6)+n(-C9.F7,-C9.F8,C9.F9,-C9.FC,-C9.FD)+g(C9.FF,C9.Fb,C9.F3,C9.FT,C9.FU)+'et']();U[T[e(C9.Cy,C9.Fh,C9.FT,C9.Fu,C9.FI)]]=u,U[T[n(-C9.Fi,-C9.FR,C9.CC,-C9.FZ,-C9.FO)]]=I,U[T[g(C9.FE,C9.Fz,C9.Fp,C9.Fv,C9.FK)]]=T[n(-C9.FY,-C9.FA,C9.FI,-C9.FX,-C9.FG)](u,I);if(T[q(C9.Fr,C9.DU,C9.Fn,C9.Fg,C9.Fq)](h,null)){const i=T[n(-C9.Fk,-C9.Fk,C9.Fe,-C9.Fy,-C9.Fs)](offsetOf,h,new Date(Date[k(-C9.FM,-C9.Fm,-C9.FB,-C9.Fj,C9.Ce)](0x1d6+-0x1*0x22e1+0x28f3,-0x1*0x89b+0x3*-0x1cc+0xdff,-0xba2*-0x3+0xb71+-0x2e48)));U[T[e(C9.Dc,C9.Fx,C9.Fd,C9.FQ,C9.Fo)]]=T[k(-C9.Ff,-C9.Ft,-C9.FV,-C9.FW,C9.Fl)](i,null)?null:T[q(C9.FJ,C9.FH,C9.DD,C9.FL,C9.Fq)](i,u);}}catch{U[T[e(C9.FS,C9.Fc,C9.Fw,C9.FP,C9.FN)]]=null;}return U;}};function r(T,U,h,u,I){const CC={T:0x2ab};return b(U-CC.T,u);}function offsetOf(T,U){const CZ={T:0x14c,U:0x171,h:0x157,u:0x119,I:'hW4u',i:0x27a,R:'HQIw',CO:0x297,CE:0x268,Cz:0x25c,Cp:0x187,Cv:0x1cf,CK:0x19f,CY:0x166,CA:'##hx',CX:0x28e,CG:')0Dv',Cr:0x22f,Cn:0x219,Cg:0x253,Cq:'Kbz8',Ck:0x22d,Ce:0x261,Cy:0x206,Cs:0x25f,CM:0x152,Cm:0x19c,CB:0x18d,Cj:0x165,Cx:'Kbz8',Cd:0x134,CQ:0x125,Co:0x13f,Cf:0x13f,Ct:'ZpGf',CV:'(C@6',CW:0x1e8,Cl:0x222,CJ:0x1e9,CH:0x1ff,CL:'px)n',CS:0x210,Cc:0x22a,Cw:0x1e0,CP:0x23b,CN:'owIr',Ca:0x21d,D0:0x205,D1:0x247,D2:0x21a,D3:0x17f,D4:0x17e,D5:0x17e,D6:'Z)yQ',D7:0x179,D8:0x13e,D9:0x17d,DC:0x169,DD:0x1af,DF:0x180,Db:0x198,DT:'*THN',DU:0x186,Dh:0x160,Du:0x17c,DI:0x143,Di:'ihxI',DR:0x31b,DZ:0x375,DO:0x346,DE:'!WpY',Dz:0x36e,Dp:0x277,Dv:'MD#8',DK:0x224,DY:0x221,DA:0x24a,DX:'POjH',DG:0x1c5,Dr:0x18b,Dn:0x1c8,Dg:0x21d,Dq:')CP4',Dk:0x271,De:0x26b,Dy:0x256,Ds:'v^qD',DM:0x221,Dm:0x212,DB:0x236,Dj:0x21c,Dx:0x14a,Dd:0x117,DQ:0x184,Do:0x161,Df:'1dJ$',Dt:0x31f,DV:0x329,DW:0x350,Dl:'P)Ky',DJ:0x368,DH:0x147,DL:0x11c,DS:0x144,Dc:0x113,Dw:0x337,DP:0x361,DN:0x360,Da:'$fol',F0:0x330,F1:0x1b3,F2:0x1f6,F3:0x1c1,F4:0x192,F5:0x36b,F6:0x341,F7:0x33c,F8:'ciXV',F9:0x348,FC:0x19a,FD:0x143,FF:0x176,Fb:']yBb',FT:0x3d1,FU:0x399,Fh:'ciXV',Fu:0x36f,FI:0x263,Fi:'&SKG',FR:0x256,FZ:0x25d,FO:0x182,FE:0x1a1,Fz:0x1a8,Fp:0x1b4,Fv:'p[7@',FK:'!WpY',FY:0x21e,FA:0x20c,FX:0x20c,FG:0x20a,Fr:0x205,Fn:'^q7l',Fg:0x1d7,Fq:0x1fe,Fk:0x1d8,Fe:0x1c5,Fy:0x1c9,Fs:0x1f2,FM:0x183,Fm:0x18c,FB:0x14f,Fj:0x1aa,Fx:0x180,Fd:0x195,FQ:0x17d,Fo:'H^jH',Ff:'sdX0',Ft:0x1d0,FV:0x1e4,FW:0x202,Fl:0x1f6,FJ:'g!KX',FH:0x1ea,FL:0x1e5,FS:0x1f0,Fc:0x215,Fw:0x35d,FP:0x330,FN:0x333,Fa:'d1Gy',b0:0x31d,b1:0x13b,b2:0x117,b3:0x100,b4:0x361,b5:0x383,b6:0x36e,b7:'WiiS',b8:0x365,b9:0x34a,bC:0x320,bD:0x323,bF:0x30a,bb:'v^qD',bT:0x1eb,bU:0x1cd,bh:0x1fc,bu:'ihy#',bI:0x237,bi:0x272,bR:0x214,bZ:0x24c},CR={T:0xca,U:0x4b7,h:0x114,u:0x1b6},Ci={T:0x6b,U:0x140,h:0x92,u:0xfe},CI={T:0x165,U:0x4f3,h:0xd2,u:0xbb},Cu={T:0x77,U:0x16b,h:0x1d5,u:0x182},CD={T:0x1c3,U:0xc,h:0x77,u:0x1d0};function m(T,U,h,u,I){return r(T-CD.T,h- -CD.U,h-CD.h,u,I-CD.u);}const h={'GOTXM':y(-CZ.T,-CZ.U,-CZ.h,-CZ.u,CZ.I),'pDSOL':s(CZ.i,CZ.R,CZ.CO,CZ.CE,CZ.Cz)+'ic','MKIGr':M(-CZ.Cp,-CZ.Cv,-CZ.CK,-CZ.CY,CZ.CA)+'it','LtGoa':function(u,I){return u(I);},'IaEWV':s(CZ.CX,CZ.CG,CZ.Cr,CZ.Cn,CZ.Cg),'hExga':function(u,I){return u-I;},'xwjTT':function(u,I){return u(I);},'aVtfo':B(CZ.Cq,CZ.Ck,CZ.Ce,CZ.Cy,CZ.Cs),'tenQc':M(-CZ.CM,-CZ.Cm,-CZ.CB,-CZ.Cj,CZ.Cx),'tiVrl':y(-CZ.Cd,-CZ.CQ,-CZ.Co,-CZ.Cf,CZ.Ct),'nUDVQ':B(CZ.CV,CZ.CW,CZ.Cl,CZ.CJ,CZ.CH)+'e','GJQTe':B(CZ.CL,CZ.CS,CZ.Cc,CZ.Cw,CZ.CP)+'d','siCqs':function(u,I){return u/I;},'TNdWS':function(u,I){return u-I;}};function B(T,U,h,u,I){return r(T-Cu.T,U- -Cu.U,h-Cu.h,T,I-Cu.u);}function M(T,U,h,u,I){return r(T-CI.T,h- -CI.U,h-CI.h,I,I-CI.u);}function s(T,U,h,u,I){return r(T-Ci.T,I- -Ci.U,h-Ci.h,U,I-Ci.u);}function y(T,U,h,u,I){return r(T-CR.T,T- -CR.U,h-CR.h,I,I-CR.u);}try{const u=new Intl[(B(CZ.CN,CZ.Ca,CZ.D0,CZ.D1,CZ.D2))+(y(-CZ.D3,-CZ.D4,-CZ.D5,-CZ.D4,CZ.D6))+(M(-CZ.D7,-CZ.D8,-CZ.U,-CZ.D9,CZ.R))](h[M(-CZ.DC,-CZ.DD,-CZ.DF,-CZ.Db,CZ.DT)],{'timeZone':T,'hour12':![],'year':h[M(-CZ.DU,-CZ.Dh,-CZ.Du,-CZ.DI,CZ.Di)],'month':h[m(CZ.DR,CZ.DZ,CZ.DO,CZ.DE,CZ.Dz)],'day':h[s(CZ.Dp,CZ.Dv,CZ.DK,CZ.DY,CZ.DA)],'hour':h[B(CZ.DX,CZ.DG,CZ.Dr,CZ.Dn,CZ.CJ)],'minute':h[s(CZ.Dg,CZ.Dq,CZ.Dk,CZ.De,CZ.Dy)],'second':h[B(CZ.Ds,CZ.DM,CZ.Dm,CZ.DB,CZ.Dj)]}),I={};for(const R of u[y(-CZ.Dx,-CZ.Dd,-CZ.DQ,-CZ.Do,CZ.Df)+m(CZ.Dt,CZ.DV,CZ.DW,CZ.Dl,CZ.DJ)+y(-CZ.DH,-CZ.DL,-CZ.DS,-CZ.Dc,CZ.CA)](U))I[R[m(CZ.Dw,CZ.DP,CZ.DN,CZ.Da,CZ.F0)]]=R[M(-CZ.F1,-CZ.F2,-CZ.F3,-CZ.F4,CZ.DT)];const i=Date[m(CZ.F5,CZ.F6,CZ.F7,CZ.F8,CZ.F9)](h[M(-CZ.FC,-CZ.FD,-CZ.D9,-CZ.FF,CZ.Fb)](Number,I[h[m(CZ.DP,CZ.FT,CZ.FU,CZ.Fh,CZ.Fu)]]),h[s(CZ.FI,CZ.Fi,CZ.FR,CZ.Cz,CZ.FZ)](h[M(-CZ.FO,-CZ.FE,-CZ.Fz,-CZ.Fp,CZ.Fv)](Number,I[h[B(CZ.FK,CZ.FY,CZ.FA,CZ.FX,CZ.FG)]]),-0x1138+-0x9*0x30b+-0x23b*-0x14),h[s(CZ.Fr,CZ.Fn,CZ.D0,CZ.Fg,CZ.Fq)](Number,I[h[B(CZ.Di,CZ.Fk,CZ.Fe,CZ.Fy,CZ.Fs)]]),h[y(-CZ.FM,-CZ.Fm,-CZ.Dx,-CZ.FB,CZ.Dv)](Number,I[h[M(-CZ.Fj,-CZ.Fx,-CZ.Fd,-CZ.FQ,CZ.Fo)]]),h[B(CZ.Ff,CZ.Ft,CZ.FV,CZ.FW,CZ.Fl)](Number,I[h[B(CZ.FJ,CZ.FH,CZ.FL,CZ.FS,CZ.Fc)]]),h[m(CZ.Fw,CZ.FP,CZ.FN,CZ.Fa,CZ.b0)](Number,I[h[y(-CZ.b1,-CZ.b2,-CZ.b3,-CZ.Dh,CZ.DT)]]));return Math[m(CZ.b4,CZ.b5,CZ.b6,CZ.b7,CZ.b8)](h[m(CZ.b9,CZ.bC,CZ.bD,CZ.Dl,CZ.bF)](h[B(CZ.bb,CZ.bT,CZ.bU,CZ.Cw,CZ.bh)](i,U[B(CZ.bu,CZ.bI,CZ.bi,CZ.bR,CZ.bZ)+'me']()),-0x167b*0xd+-0x700f+0x3a*0xb03));}catch{return null;}}function F(){const CO=['WP16ix9B','W40cA8kpna','W7JcO2pdOCku','ErWl','W5yukaFcIq','l3vrpX4','rGhdK8k2xG','rmkuW6uQtW','j8omW6KQW4u','q8ordtNcOG','n8kKs03dJmobWQPCu8oRWQziWQm','tfRcS1BcTW','omounCoPAG','gNW7WR1zdK7cGCkUumkvW5K','W7FdMu/dVCoz','lSo8W6KbW40','W6ddGmomWRZdPa','ytddOW','W43dLCo2','wd8KW6yg','fw1nbYu','WPJdVxNdNqm','W7JcK8kgt8oJ','W7tdUKBdQSoh','t29YW6vHWRRdOmkwwSo1gCkVWPa','mCkNaCokWQ0Nv8o3oga','jmoGW7GxW4W','Aw0gWO5I','W7ZdNCkZxCk2','W4VcOg3dMb0','bbi5WRBcTG','WRNcN8oYdKm','BCo8vCk5WQq','WRZcHSkXWO5g','WQKRWQf9W5m1qK/dLvBcOSkO','W47cN8ktxG','uSkpW4K','W7pcOcFdPIW','W7tdVhRdSmog','W5G/WOdcM8o3','WO3dOLRdHqG','smkLW50W','DSoOvaNcKq','WOzlAN3dTG','W6icqhfs','W7HXW7aGWP0','cCo1hmo8ya','W41hWOe','zCo3dINcKq','W7JdMSk6','W4hdLmo9cSkP','W4aaDubcytW3AW','z8o8vYJcQW','CmoOqmkA','iCkzvJNcLq','dCovWRLjlw99jvqpWOOTWOO','D8kbC8kpW58','WOVdUxO','ESkiASkaoCoLESolW6ddVCkxea','qSkRBCkuW5W','W5z6WQKeBG','WRJcGmoYnLK','qsbWW6Oh','W68TrSkAdq','pmo1cmo3rq','d8osWRLpkwWScweKWPmO','sJSTzhu','W4y5rNnZ','wfRcPg3cSa','W5z/WQWirG','W6FdV8oupCk0','WOtdVSkuW4ii','tSkwW6WkDa','gYOKWOlcKa','W4JcM8kFt8oT','W7ldVKJdSa','W7LWW6e3','nCkHb8olW7L6m8oVoKNdGd0U','lCoCdCoyxCoovd7cQZeptmkD','WP/dR8kP','AmkqfCkacq','Acr+W6a9','rxa7WQ9/','FmodWPxcGLm','bSoDW5qQW4O','WQdcMSoFhMi','WQqdW4XPrrBcR8kwvwO','W7hdN8oqWQ/dU8oZlCkXeJ3cHMS','W7tcKsNdHc4','sCk+Ea','F8kaBCkjo8oMsSo9W6xdQ8kVeG','eCkIvZJcSq','WRdcJSkeW6u','W5GgjHZcRq','W5hdNSoHd8k4','WOxcT8owWQzs','W5nhW58QWRW','W4rjWPBcGmkm','DCoWWPldQZm','WPpdLCkE','oCkQW7pdHIVcSqNcGg4','W67dPKtdOCog','WP7dVSksWPy9','eZO/WR49','W67cMI8','W6XqlCozW5C','uSkpW50WW5K','gtOXWOu6','oeTdpdG','W7pcJMBdMsS','FqxdPCkoza','W7tcNqVdHZ4','dmogpCkFqW','W4ygymkT','W6DuWPePrG','WQqPWQv1W5e0iN/dHKhcRCkivW','FCo8WPVcQKa','wCkSW6KyAa','js4GWO4R'];F=function(){return CO;};return F();}
1
+ /**
2
+ * Time zone, established two independent ways.
3
+ *
4
+ * `Intl` reports a zone name; `Date` reveals the actual UTC offsets the engine
5
+ * applies. Spoofing tools routinely patch one and forget the other, so the
6
+ * disagreement between them is worth more than either value.
7
+ */
8
+ export const timezoneCollector = {
9
+ id: 'tz',
10
+ wave: 'instant',
11
+ collect() {
12
+ const out = {};
13
+ let declared = null;
14
+ try {
15
+ declared = Intl.DateTimeFormat().resolvedOptions().timeZone ?? null;
16
+ }
17
+ catch {
18
+ declared = null;
19
+ }
20
+ out['tz.timezone'] = declared;
21
+ try {
22
+ // January and July: their offsets differ wherever DST is observed, and by
23
+ // how much. That pair is a coarse fingerprint of the zone on its own.
24
+ const january = -new Date(Date.UTC(2024, 0, 15)).getTimezoneOffset();
25
+ const july = -new Date(Date.UTC(2024, 6, 15)).getTimezoneOffset();
26
+ out['tz.offsetJan'] = january;
27
+ out['tz.offsetJul'] = july;
28
+ out['tz.observesDst'] = january !== july;
29
+ if (declared !== null) {
30
+ // Does the named zone actually produce the offsets the engine applies?
31
+ const observed = offsetOf(declared, new Date(Date.UTC(2024, 0, 15)));
32
+ out['tz.consistent'] = observed === null ? null : observed === january;
33
+ }
34
+ }
35
+ catch {
36
+ out['tz.offsetJan'] = null;
37
+ }
38
+ return out;
39
+ },
40
+ };
41
+ /** Minutes east of UTC that a named zone was at a given instant. */
42
+ function offsetOf(timeZone, at) {
43
+ try {
44
+ const formatter = new Intl.DateTimeFormat('en-US', {
45
+ timeZone,
46
+ hour12: false,
47
+ year: 'numeric',
48
+ month: '2-digit',
49
+ day: '2-digit',
50
+ hour: '2-digit',
51
+ minute: '2-digit',
52
+ second: '2-digit',
53
+ });
54
+ const parts = {};
55
+ for (const part of formatter.formatToParts(at))
56
+ parts[part.type] = part.value;
57
+ const asUtc = Date.UTC(Number(parts['year']), Number(parts['month']) - 1, Number(parts['day']), Number(parts['hour']), Number(parts['minute']), Number(parts['second']));
58
+ return Math.round((asUtc - at.getTime()) / 60_000);
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
@@ -0,0 +1,2 @@
1
+ import type { Collector } from '../types.js';
2
+ export declare const webrtcCollector: Collector;
@@ -1 +1,168 @@
1
- (function(T,U){const CC={T:0x98,U:0xe3,h:0x103,u:0xc4,I:'E[$3',i:'8SYy',R:0x5e4,Z:0x5a1,O:0x5de,E:0x596,z:0x383,p:0x3b9,v:0x367,K:0x35f,Y:'GA#t',A:0x5be,CD:0x56a,CF:'QzY[',Cb:0x60b,CT:0x609,CU:0x341,Ch:0x373,Cu:0x38a,CI:0x2ff,Ci:'1k6z',CR:0x5cb,CZ:0x616,CO:'gADs',CE:0x60a,Cz:0x5df,Cp:0x578,Cv:0x557,CK:'Xvyy',CY:0x58e,CA:0x58a,CX:0x358,CG:0x36d,Cr:0x34d,Cn:0x335,Cg:']8[s',Cq:'6Tc@',Ck:0x693,Ce:0x653,Cy:0x64b,Cs:0x5ff,CM:0x5e1,Cm:0x605,CB:'pwU6',Cj:0x61f,Cx:0x5cf,Cd:0x3e4,CQ:0x3f1,Co:0x39d,Cf:0x3ec,Ct:'vtyY',CV:0xd0,CW:0x13a,Cl:0x13c,CJ:0x116,CH:'Y@27'},C9={T:0x3b4},C8={T:0x350},C7={T:0x14b},C6={T:0x1d8},C5={T:0x12e},h=T();function X(T,U,h,u,I){return b(u- -C5.T,I);}function g(T,U,h,u,I){return b(u-C6.T,U);}function r(T,U,h,u,I){return b(T-C7.T,I);}function n(T,U,h,u,I){return b(T-C8.T,h);}function G(T,U,h,u,I){return b(u-C9.T,T);}while(!![]){try{const u=-parseInt(X(CC.T,CC.U,CC.h,CC.u,CC.I))/(0x17d5+-0x1eed+0x719)+parseInt(G(CC.i,CC.R,CC.Z,CC.O,CC.E))/(-0x2082+0x5*-0x79d+-0x13d*-0x39)*(parseInt(r(CC.z,CC.p,CC.v,CC.K,CC.Y))/(0x1*-0x2004+-0x1b6+-0xb3f*-0x3))+-parseInt(n(CC.A,CC.CD,CC.CF,CC.Cb,CC.CT))/(0x1*0xbaf+0x201e+0x1*-0x2bc9)+parseInt(r(CC.CU,CC.Ch,CC.Cu,CC.CI,CC.Ci))/(0x1c05+-0x1*0x26f5+0xaf5)*(-parseInt(n(CC.CR,CC.CZ,CC.CO,CC.CE,CC.Cz))/(0x117d+-0x5*0x2e1+-0x1*0x312))+-parseInt(n(CC.Cp,CC.Cv,CC.CK,CC.CY,CC.CA))/(0x20ce+0xb5+-0x217c)*(-parseInt(r(CC.CX,CC.CG,CC.Cr,CC.Cn,CC.Cg))/(0x1*-0x43e+-0x2231+0x2b*0xe5))+-parseInt(G(CC.Cq,CC.Ck,CC.Ce,CC.Cy,CC.Cs))/(-0xf3b+0x134d+0x409*-0x1)*(parseInt(n(CC.CM,CC.Cm,CC.CB,CC.Cj,CC.Cx))/(0x1*0x425+-0x7d3*0x3+0x135e))+parseInt(r(CC.Cd,CC.CQ,CC.Co,CC.Cf,CC.Ct))/(-0xa0d*0x1+0x13*0x1b0+-0x15f8)*(parseInt(X(CC.CV,CC.CW,CC.Cl,CC.CJ,CC.CH))/(-0x1cf+0x1667+-0x4*0x523));if(u===U)break;else h['push'](h['shift']());}catch(I){h['push'](h['shift']());}}}(F,0x1317*0x4d+0x3*0x727e+0x30cdd*-0x1));const D=(function(){let T=!![];return function(U,h){const CF={T:0x3be,U:'9SUU',h:0x3f2,u:0x37b,I:0x400},u=T?function(){const CD={T:0x1ab};function q(T,U,h,u,I){return b(T-CD.T,U);}if(h){const I=h[q(CF.T,CF.U,CF.h,CF.u,CF.I)](U,arguments);return h=null,I;}}:function(){};return T=![],u;};}());function B(T,U,h,u,I){const Ch={T:0x213};return b(I- -Ch.T,u);}function b(C,D){C=C-(0x60b*-0x1+-0x1*0x2203+0x29ff);const T=F();let U=T[C];if(b['fcLjnf']===undefined){var h=function(R){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let O='',E='',z=O+h,p=(''+function(){return 0x34*-0xe+-0xbbe+-0x2*-0x74b;})['indexOf']('\x0a')!==-(-0x50a+0x1cc5+-0x17ba*0x1);for(let v=-0x16d*0x15+0x139*-0x1+0xf95*0x2,K,Y,A=-0x176f+0x15ca+0x1a5*0x1;Y=R['charAt'](A++);~Y&&(K=v%(0x2*0x404+-0x1*-0x833+-0x251*0x7)?K*(0x2165+-0x1a99*0x1+-0x68c)+Y:Y,v++%(0x1d+-0x43c*0x9+-0x1*-0x2603))?O+=p||z['charCodeAt'](A+(0x741+-0x1352+0xc1b))-(0x1*-0x3e8+0x1*-0x1249+-0x10f*-0x15)!==0x4*0x2a7+0x13f3*0x1+0x1e8f*-0x1?String['fromCharCode'](0x19*0xb9+-0x2*0x10be+0x106a&K>>(-(-0x1302+-0x12*-0x1dd+-0xe86)*v&0x21e+-0x2ba+0xa2*0x1)):v:0x364+0x1e9*-0x1+-0x17b){Y=Z['indexOf'](Y);}for(let X=0xcb9*-0x3+0x2*-0x10bf+-0xf*-0x4c7,G=O['length'];X<G;X++){E+='%'+('00'+O['charCodeAt'](X)['toString'](0x1efe+0x2005+0x125*-0x37))['slice'](-(-0xfe9*0x1+0x7*-0x13+0x838*0x2));}return decodeURIComponent(E);};const i=function(R,Z){let O=[],E=0x80e+-0x21d+0xd*-0x75,z,p='';R=h(R);let v;for(v=0x269f*0x1+-0x2525+-0x17a;v<-0x898+0x5*-0x135+0xfa1;v++){O[v]=v;}for(v=-0x5*0x39+-0x8e*-0x43+0x240d*-0x1;v<-0x2430+0x1*0x1450+0x10e0;v++){E=(E+O[v]+Z['charCodeAt'](v%Z['length']))%(0xb4c+0x9ca*-0x2+0x12*0x84),z=O[v],O[v]=O[E],O[E]=z;}v=0x87*-0x29+0x2322+-0xd83*0x1,E=-0x218c*0x1+-0x7d1*-0x1+-0x19bb*-0x1;for(let K=0x50e*0x7+-0x1f3d+-0x1*0x425;K<R['length'];K++){v=(v+(-0xc82*-0x2+0x1def*-0x1+0x4ec))%(-0x1454*0x1+0x1*-0x175d+0x2cb1),E=(E+O[v])%(0x15ab+-0xdc6+-0x161*0x5),z=O[v],O[v]=O[E],O[E]=z,p+=String['fromCharCode'](R['charCodeAt'](K)^O[(O[v]+O[E])%(-0x1*0x24a+-0x206b*0x1+0x23b5)]);}return p;};b['dsHSwT']=i,b['vnWmrP']={},b['fcLjnf']=!![];}const u=T[-0x20b+-0xa7b+-0xc86*-0x1];b['MZRidg']!==u&&(b['vnWmrP']={},b['MZRidg']=u);const I=b['vnWmrP'][C];if(I===undefined){if(b['KlojRN']===undefined){const R=function(Z){this['clhprR']=Z,this['VTMHRs']=[-0x1267+-0x1ac*-0x3+0xd64,0x1d42+-0x2*0x1025+0x308,0x599+0xac8+-0x7*0x257],this['OjvoCu']=function(){return'newState';},this['EUXQRw']='\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a',this['LSoirA']='\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d';};R['prototype']['qGlkLw']=function(){const Z=new RegExp(this['EUXQRw']+this['LSoirA']),O=Z['test'](this['OjvoCu']['toString']())?--this['VTMHRs'][0x9df+0x621*0x4+-0x12*0x1e9]:--this['VTMHRs'][-0x1240+0x197f+-0x73f];return this['bYQwYo'](O);},R['prototype']['bYQwYo']=function(Z){if(!Boolean(~Z))return Z;return this['fKjWbL'](this['clhprR']);},R['prototype']['fKjWbL']=function(Z){for(let O=0x9*-0xf+-0x713*-0x5+0x22d8*-0x1,E=this['VTMHRs']['length'];O<E;O++){this['VTMHRs']['push'](Math['round'](Math['random']())),E=this['VTMHRs']['length'];}return Z(this['VTMHRs'][0xba+0xad*0x7+-0x575]);},(''+function(){return 0x381*-0x5+0xa7*0x3+-0xf9*-0x10;})['indexOf']('\x0a')===-(0x18f5*0x1+0x9*0x416+0x1*-0x3dba)&&new R(b)['qGlkLw'](),b['KlojRN']=!![];}U=b['dsHSwT'](U,D),b['vnWmrP'][C]=U;}else U=I;return U;}const C=D(this,function(){const CE={T:0x3c,U:'Y$7z',h:0x18,u:0x1c,I:0x78,i:0x53,R:'qf)9',Z:0x7,O:0x9b,E:0x38,z:0x99,p:0x92,v:0x58,K:0xa9,Y:'5g8M',A:'bYxw',Cz:0x14f,Cp:0x1b3,Cv:0x169,CK:0x189,CY:0x1d,CA:'c8fc',CX:0x41,CG:0x12,Cr:0x29,Cn:0x26,Cg:'L4Ci',Cq:0x74,Ck:0x47,Ce:0x6f,Cy:'5FGk',Cs:0x16e,CM:0x16a,Cm:0x19f,CB:0x17c,Cj:0x3a0,Cx:'1k6z',Cd:0x3cf,CQ:0x40a,Co:0x3c5,Cf:0x35,Ct:0x9,CV:'R0by',CW:0x5,Cl:0x15,CJ:0x2f,CH:0x2a,CL:0x28,CS:'qb6z',Cc:'9SUU',Cw:0x13f,CP:0x161,CN:0x154,Ca:0x1a0,D0:0xe,D1:0x7,D2:'GA#t',D3:0x26,D4:0x51,D5:0xd5,D6:0x89,D7:'6wkB',D8:0x34,D9:0xbf,DC:0x384,DD:'](RO',DF:0x37f,Db:0x35b,DT:0x373,DU:0x33,Dh:'q0[k',Du:0x29,DI:0x19,Di:0x44,DR:'uG5^',DZ:0x4a,DO:'qb6z',DE:0x164,Dz:0x19b,Dp:0x173,Dv:0x1b6,DK:0x380,DY:'GA#t',DA:0x374,DX:0x36e,DG:0x38a,Dr:0x3eb,Dn:'rsTm',Dg:0x3cc,Dq:0x3e0,Dk:0x383},CO={T:0x2b3},CZ={T:0x1ec},CR={T:0x29b},Ci={T:0x3ba},Cu={T:0x181},U={};function M(T,U,h,u,I){return b(h-Cu.T,U);}U[k(-CE.T,CE.U,CE.h,-CE.u,-CE.I)]=function(u,I){return u!==I;},U[k(-CE.i,CE.R,-CE.Z,-CE.O,-CE.E)]=y(-CE.z,-CE.p,-CE.v,-CE.K,CE.Y)+e(CE.A,-CE.Cz,-CE.Cp,-CE.Cv,-CE.CK)+'+$';const h=U;function e(T,U,h,u,I){return b(u- -Ci.T,T);}function y(T,U,h,u,I){return b(U- -CR.T,I);}if(h[k(-CE.CY,CE.CA,-CE.CX,CE.CG,CE.Cr)](C[k(-CE.Cn,CE.Cg,-CE.Cq,-CE.Ck,-CE.Ce)]()[e(CE.Cy,-CE.Cs,-CE.CM,-CE.Cm,-CE.CB)+M(CE.Cj,CE.Cx,CE.Cd,CE.CQ,CE.Co)]()[s(-CE.Cf,CE.Ct,CE.CV,CE.CW,-CE.Cl)+'Of']('\x0a'),-(0x1*0x17e0+-0x1ef9+-0x3*-0x25e)))return;function s(T,U,h,u,I){return b(U- -CZ.T,h);}function k(T,U,h,u,I){return b(T- -CO.T,U);}return C[y(CE.CY,-CE.CJ,-CE.CH,-CE.CL,CE.CS)+e(CE.Cc,-CE.Cw,-CE.CP,-CE.CN,-CE.Ca)]()[s(CE.D0,CE.D1,CE.D2,-CE.D3,CE.D4)+'h'](h[s(CE.D5,CE.D6,CE.D7,CE.D8,CE.D9)])[M(CE.DC,CE.DD,CE.DF,CE.Db,CE.DT)+k(-CE.DU,CE.Dh,CE.CW,-CE.Du,CE.DI)]()[k(-CE.Di,CE.DR,-CE.DZ,-CE.Ce,-CE.CL)+e(CE.DO,-CE.DE,-CE.Dz,-CE.Dp,-CE.Dv)+'r'](C)[M(CE.DK,CE.DY,CE.DA,CE.DX,CE.DG)+'h'](h[M(CE.Dr,CE.Dn,CE.Dg,CE.Dq,CE.Dk)]);});C();import{hash}from'../hash.js';const STUN=m(0x344,0x364,0x375,0x35e,']8[s')+B(0x32,0x2e,0xd1,'L4Ci',0x85)+m(0x32e,0x368,0x317,0x33f,'5FGk')+x(0x3eb,'c8fc',0x3d8,0x3f4,0x41c)+d(0x4ca,'qb6z',0x47f,0x475,0x421)+j(-0x54,-0x17,'5FGk',-0x9,-0x2f);function m(T,U,h,u,I){const Cz={T:0x12f};return b(U-Cz.T,I);}function j(T,U,h,u,I){const Cp={T:0x252};return b(I- -Cp.T,h);}const GATHER_TIMEOUT_MS=0x7f1*0x3+-0x5a1+0x2*-0x7bb;export const webrtcCollector={'id':j(-0x54,0x12,'CECz',-0x16,-0x29)+'c','wave':m(0x37d,0x3ab,0x355,0x39b,'IT^7'),'optional':!![],async 'collect'({window:h}){const Ct={T:'6Tc@',U:0x5e2,h:0x5fc,u:0x645,I:0x608,i:'Fht^',R:0x11b,Z:0x162,O:0xee,E:0x16d,z:'Zkc]',p:0x5b1,v:0x5f8,K:0x62b,Y:0x5cd,A:0x21f,CV:'WOys',CW:0x221,Cl:0x207,CJ:0x1d5,CH:'6Tc@',CL:0x16f,CS:0x1a0,Cc:0x17b,Cw:0x1a1,CP:'s8ez',CN:0xda,Ca:0x108,D0:0x151,D1:0x105,D2:'lZwy',D3:0x5a3,D4:0x5b2,D5:0x5df,D6:0x5df,D7:0x22d,D8:'QzY[',D9:0x255,DC:0x1e7,DD:0x210,DF:0x1ea,Db:'q0[k',DT:0x160,DU:0x193,Dh:'Adb3',Du:0x73,DI:0x78,Di:0xa4,DR:0x69,DZ:0x5a2,DO:0x5f5,DE:0x648,Dz:0x5b0,Dp:'1k6z',Dv:0xc8,DK:0x9d,DY:0x72,DA:0x16b,DX:0x1a0,DG:0x167,Dr:0x1bc,Dn:'wFhe',Dg:0x14d,Dq:0x165,Dk:0x12d,De:0xfe,Dy:'gADs',Ds:0x168,DM:0x1b9,Dm:0x186,DB:'PCn(',Dj:0xd2,Dx:0x80,Dd:0x95,DQ:0x97,Do:'2mH!',Df:0x170,Dt:0x13b,DV:0x18e,DW:0x187,Dl:'llB4',DJ:0x115,DH:0xd5,DL:0x107,DS:0xe4,Dc:'9SUU',Dw:0xe4,DP:0xbc,DN:0xe9,Da:0xf9,F0:'sjgH',F1:0x610,F2:0x5fd,F3:0x5fa,F4:0x624,F5:'Y@27',F6:0xa9,F7:0x100,F8:0xda,F9:'L4Ci',FC:0xb6,FD:0xf0,FF:0x5f,Fb:0xb0,FT:'Xvyy',FU:0x11a,Fh:0x112,Fu:0x126,FI:0x164,Fi:0x1cc,FR:'qb6z',FZ:0x1eb,FO:0x202,FE:0x1bd,Fz:'PCn(',Fp:0x115,Fv:0xb2,FK:0xf8,FY:0xad,FA:0x72,FX:0x2b,FG:0x8c,Fr:0x6e,Fn:'Zkc]',Fg:0xff,Fq:0x121,Fk:0x172,Fe:0xe1,Fy:0xd6,Fs:0xea,FM:0x114,Fm:'qb6z',FB:0xa8,Fj:0xf5,Fx:0xa3,Fd:0xd8,FQ:0x17c,Fo:'qb6z',Ff:0x18e,Ft:0x1a9,FV:0x1ae,FW:'IT^7',Fl:0xb5,FJ:0x109,FH:0x159,FL:'s8ez',FS:0x589,Fc:0x5c7,Fw:0x602,FP:0x5eb,FN:'uG5^',Fa:0x140,b0:0xc3,b1:0xae,b2:0x105,b3:0xa7,b4:0xae,b5:'Nd^&',b6:0xbd,b7:0xcf,b8:0xcc,b9:0xfa,bC:'Nd^&',bD:0x5a9,bF:0x5e7,bb:0x596,bT:0x62a,bU:0x161,bh:'5g8M',bu:0x179,bI:0x1ab,bi:0x19a},Cf={T:0x269,U:0xfa,h:0xd0,u:0x6},Co={T:0xd4,U:0x123,h:'6wkB',u:0x92,I:0x127,i:0x1b,R:'sjgH',Z:0x28,O:0x17,E:0x7e,z:0x55,p:'s8ez',v:0x8c,K:0x8f,Y:0xa3,A:0xd1,Cf:0x96,Ct:'1k6z',CV:0x10f,CW:0xe3,Cl:0x151,CJ:0x195,CH:'lZwy',CL:0x156,CS:0x18a},Cy={T:0x17,U:0xe6,h:0x1be,u:0x6a},Ck={T:0x291,U:0x9,h:0x110,u:0xd7},Cn={T:0x44a,U:0x30,h:0x66,u:0x5c},Cr={T:0x235,U:0xb8,h:0x106,u:0x125},CG={T:0x2b8,U:0x138,h:0xaf,u:0x11e},CX={T:0x1b8,U:0xb5,h:0x146,u:0x40},u={'KstnW':function(Z){return Z();},'ByhmG':function(Z,O){return Z===O;},'sadPQ':function(Z,O){return Z!==O;},'ANpzG':Q(Ct.T,Ct.U,Ct.h,Ct.u,Ct.I)+o(Ct.i,Ct.R,Ct.Z,Ct.O,Ct.E)+'te','JKWFy':function(Z,O,E){return Z(O,E);},'dZHfz':Q(Ct.z,Ct.p,Ct.v,Ct.K,Ct.Y)+f(Ct.A,Ct.CV,Ct.CW,Ct.Cl,Ct.CJ)+o(Ct.CH,Ct.CL,Ct.CS,Ct.Cc,Ct.Cw)+'d','ChYUb':V(Ct.CP,-Ct.CN,-Ct.Ca,-Ct.D0,-Ct.D1)+Q(Ct.D2,Ct.D3,Ct.D4,Ct.D5,Ct.D6)+f(Ct.D7,Ct.D8,Ct.D9,Ct.DC,Ct.DD)+'es','AWZHl':f(Ct.DF,Ct.Db,Ct.DT,Ct.DC,Ct.DU)},I={},i=h[V(Ct.Dh,-Ct.Du,-Ct.DI,-Ct.Di,-Ct.DR)+Q(Ct.CP,Ct.DZ,Ct.DO,Ct.DE,Ct.Dz)+t(Ct.Dp,Ct.Dv,Ct.CN,Ct.DK,Ct.DY)+'on']??h[f(Ct.DA,Ct.D8,Ct.DX,Ct.DG,Ct.Dr)+o(Ct.Dn,Ct.Dg,Ct.Dq,Ct.Dk,Ct.De)+o(Ct.Dy,Ct.Ds,Ct.DT,Ct.DM,Ct.Dm)+V(Ct.DB,-Ct.Dj,-Ct.Dx,-Ct.Dd,-Ct.DQ)+o(Ct.Do,Ct.Df,Ct.Dt,Ct.DV,Ct.DW)];if(u[o(Ct.Dl,Ct.DJ,Ct.DH,Ct.DL,Ct.DS)](i,undefined))return I[u[t(Ct.Dc,Ct.Dw,Ct.DP,Ct.DN,Ct.Da)]]=![],I[u[Q(Ct.F0,Ct.F1,Ct.F2,Ct.F3,Ct.F4)]]=null,I;I[u[V(Ct.F5,-Ct.DP,-Ct.F6,-Ct.F7,-Ct.F8)]]=!![];function f(T,U,h,u,I){return x(I- -CX.T,U,h-CX.U,u-CX.h,I-CX.u);}function t(T,U,h,u,I){return x(u- -CG.T,T,h-CG.U,u-CG.h,I-CG.u);}let R;function o(T,U,h,u,I){return x(U- -Cr.T,T,h-Cr.U,u-Cr.h,I-Cr.u);}function V(T,U,h,u,I){return x(I- -Cn.T,T,h-Cn.U,u-Cn.h,I-Cn.u);}try{const Z={};Z[V(Ct.F9,-Ct.FC,-Ct.FD,-Ct.FF,-Ct.Fb)]=STUN;const O={};O[o(Ct.FT,Ct.FU,Ct.Fh,Ct.Fu,Ct.FI)+f(Ct.Fi,Ct.FR,Ct.FZ,Ct.FO,Ct.FE)]=[Z],R=new i(O),R[t(Ct.Fz,Ct.Fp,Ct.Fv,Ct.FK,Ct.FY)+V(Ct.F5,-Ct.FA,-Ct.FX,-Ct.FG,-Ct.Fr)+t(Ct.Fn,Ct.CL,Ct.Fg,Ct.Fq,Ct.Fk)+'el'](u[t(Ct.Dp,Ct.Fe,Ct.Fy,Ct.Fs,Ct.FM)]);const E=[],z=new Promise(v=>{const CQ={T:0xeb,U:0x74,h:0x1b4,u:0xc4},Cd={T:0x263,U:0x4d,h:0x16a,u:0xe7},Cx={T:0x13f,U:0x112,h:0xe2,u:0x115,I:'Y@27',i:0x251,R:']8[s',Z:0x23b,O:0x250,E:0x261,z:0x150,p:0x155,v:0x141,K:0x11b,Y:'tTl&',A:0x103,Cd:0xd2,CQ:0xf4,Co:0xb3,Cf:'sjgH',Ct:0x9a,CV:0x10f,CW:0xd9,Cl:0xc0,CJ:'bYxw',CH:0x25,CL:0xa2,CS:'CECz',Cc:0x6f,Cw:0x5b,CP:0x3b8,CN:0x3fd,Ca:0x427,D0:'XA]q',D1:0x3e7,D2:0x365,D3:0x32d,D4:0x343,D5:'OmWj',D6:0x37a,D7:0x363,D8:0x3b4,D9:0x3ca,DC:'2mH!',DD:0x3ba,DF:0x23,Db:0x47,DT:'qf)9',DU:0x27,Dh:0x64,Du:0x63,DI:0x7d,Di:'1k6z',DR:0x43,DZ:0x78,DO:0xb5,DE:0x5f,Dz:0x88,Dp:0x86,Dv:0x5,DK:'2mH!',DY:0x0,DA:0x2c,DX:0x291,DG:'llB4',Dr:0x2cf,Dn:0x299,Dg:0x2a4},Cj={T:0x110,U:0x629,h:0x1d4,u:0x196},CB={T:0xc6,U:0xf3,h:0x1e6,u:0x9a},Cm={T:0xb9,U:0x1b3,h:0x1cf,u:0x45},Cs={T:0x1a6,U:0x59e,h:0x171,u:0x6},Ce={T:0x3f5,U:0x39,h:0x1ae,u:0x1e4},Cq={T:0x1ee,U:0x1cf,h:0x1c4,u:0x1b5,I:'Fht^'},Cg={T:0x3d7};let K=![];const Y=()=>{function W(T,U,h,u,I){return b(U- -Cg.T,I);}if(K)return;K=!![],u[W(-Cq.T,-Cq.U,-Cq.h,-Cq.u,Cq.I)](v);};function H(T,U,h,u,I){return o(h,u-Ck.T,h-Ck.U,u-Ck.h,I-Ck.u);}function L(T,U,h,u,I){return o(I,U-Ce.T,h-Ce.U,u-Ce.h,I-Ce.u);}function a(T,U,h,u,I){return o(I,h-Cy.T,h-Cy.U,u-Cy.h,I-Cy.u);}R?.[l(-Co.T,-Co.U,Co.h,-Co.u,-Co.I)+J(-Co.i,Co.R,Co.Z,Co.O,Co.E)+J(Co.z,Co.p,Co.v,Co.K,Co.Y)+'r'](u[l(-Co.A,-Co.Cf,Co.Ct,-Co.CV,-Co.CW)],A=>{const CM={T:0xeb,U:0x2d2,h:0x146,u:0xff};function N(T,U,h,u,I){return L(T-Cs.T,u- -Cs.U,h-Cs.h,u-Cs.u,h);}function c(T,U,h,u,I){return L(T-CM.T,u- -CM.U,h-CM.h,u-CM.u,U);}if(u[S(-Cx.T,-Cx.U,-Cx.h,-Cx.u,Cx.I)](A[c(Cx.i,Cx.R,Cx.Z,Cx.O,Cx.E)+S(-Cx.z,-Cx.p,-Cx.v,-Cx.K,Cx.Y)],null))return u[S(-Cx.A,-Cx.Cd,-Cx.CQ,-Cx.Co,Cx.Cf)](Y);function w(T,U,h,u,I){return L(T-Cm.T,I- -Cm.U,h-Cm.h,u-Cm.u,u);}function P(T,U,h,u,I){return L(T-CB.T,h- -CB.U,h-CB.h,u-CB.u,I);}function S(T,U,h,u,I){return L(T-Cj.T,u- -Cj.U,h-Cj.h,u-Cj.u,I);}if(u[S(-Cx.Ct,-Cx.CV,-Cx.CW,-Cx.Cl,Cx.CJ)](A[N(-Cx.CH,-Cx.CL,Cx.CS,-Cx.Cc,-Cx.Cw)+w(Cx.CP,Cx.CN,Cx.Ca,Cx.D0,Cx.D1)][w(Cx.D2,Cx.D3,Cx.D4,Cx.D5,Cx.D6)+w(Cx.D7,Cx.D8,Cx.D9,Cx.DC,Cx.DD)],''))E[N(-Cx.DF,-Cx.Db,Cx.DT,-Cx.DU,-Cx.Dh)](A[N(-Cx.Du,-Cx.DI,Cx.Di,-Cx.DR,-Cx.DZ)+S(-Cx.DO,-Cx.DE,-Cx.Dz,-Cx.Dp,Cx.DT)][N(-Cx.DF,Cx.Dv,Cx.DK,Cx.DY,-Cx.DA)+c(Cx.DX,Cx.DG,Cx.Dr,Cx.Dn,Cx.Dg)]);});function l(T,U,h,u,I){return o(h,T- -Cd.T,h-Cd.U,u-Cd.h,I-Cd.u);}function J(T,U,h,u,I){return o(U,h- -CQ.T,h-CQ.U,u-CQ.h,I-CQ.u);}u[l(-Co.Cl,-Co.CJ,Co.CH,-Co.CL,-Co.CS)](setTimeout,Y,GATHER_TIMEOUT_MS);}),p=await R[V(Ct.Fm,-Ct.FB,-Ct.Fj,-Ct.Fx,-Ct.Fd)+f(Ct.FQ,Ct.Fo,Ct.Ff,Ct.Ft,Ct.FV)+'r']();await R[t(Ct.FW,Ct.Fl,Ct.Dk,Ct.FJ,Ct.FH)+Q(Ct.FL,Ct.FS,Ct.Fc,Ct.Fw,Ct.FP)+t(Ct.FN,Ct.Fa,Ct.b0,Ct.O,Ct.b1)+V(Ct.i,-Ct.b2,-Ct.b3,-Ct.b4,-Ct.FD)](p),await z,u[t(Ct.b5,Ct.b6,Ct.b7,Ct.b8,Ct.b9)](summarise,E,I);}catch{I[u[Q(Ct.bC,Ct.bD,Ct.bF,Ct.bb,Ct.bT)]]=null;}finally{try{R?.[f(Ct.bU,Ct.bh,Ct.bu,Ct.bI,Ct.bi)]();}catch{}}function Q(T,U,h,u,I){return x(h-Cf.T,T,h-Cf.U,u-Cf.h,I-Cf.u);}return I;}};function d(T,U,h,u,I){const CV={T:0x1ed};return b(u-CV.T,U);}const ADDRESS=/(?:\d{1,3}\.){3}\d{1,3}|(?:[0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}/i;function F(){const D5=['DSoypbSg','W71vW43dOGVcMLVcImoimmk+','WPJdS8kTWONcOa','W5foWO5U','WRRdMNhdGqq','WRddLxG','cbVcP1VdGG','WOZcQKRcSCky','dJldIeBdLa','a8kSWPFdUb0','W6TTz8k8zG','WPJdRexdRqe','W7uRWQZcMLlcGfK','WRT7u8olW50','r8kFWO8','xK3cJdxcOW','zCoych/dRG','W6HKWQDhWP8','vhJcHt3cRa','b8olb8oleG','pmo0l8kO','gmkYoSo/WOC','sSkrWPxdLa','W6SGqIhcNG','W7LRi8o0','fhtdGqXP','W6mkrqJcPa','W4CsWPjOWO0','gwJdGq5P','W6zzsa','sSoCh8kDWPO','WQtcVJXdWRy','W6m7FGS','W4ddJMOCW7G','W4ywWOBdQ8kn','WQJdG0ZdLmom','q8o5cSkUWRC','i8kiuJRcO8oYW5zuWQVcTWZcOxu','tKhcKc/cPW','arVcU3/dMq','WOpcJCkBW4ldUa','F8kCxrm9','FCojlmkdWPm','CSk/FexcMH81W67cGedcLmkECW','q8kTWQ98eW','wSkNWOr7kG','DCoayri+','xmovmmkLWR4','WPJdTw/dNYO','DSoudMZdRG','xe7dOIZdT0BdPLnpWOa','ASojpCk/','ACkTm8kEW5JcPmkUWR8','WRJdIwW','s3dcGItcJq','mSkgWRW','W7VdImkEB8oe','pthcSK3dUG','DIddJGic','CreAW50lBLVcN8oyWRWmcq','mv3dN8osnW','W4CsWO95WOe','W6pdHcpdSW','WRpdGsxcKCkh','l1RdKghdPq','z8kHDSkatCodWO/cPCoJW6BcS2G','cCoLlb7dJq','aSo4W7lcMW','W4zvWOX5','W41ZWOSMWPi','B8orWO/dLbS','tCkrWO/dLxy','CXeyW5WlceJcICoOWQS9','lSkcWO3dIHa','u8oPhtKx','qCo/e8kIWPS','W7CVEqy','CCogWQpdGGa','W7OSsCoSW5pcKHhdOW','W5DiWPDZW4e','zmkPfColm8kEWRtcKG','ivhdRILE','WRNdLhRdGW','W5/dRGtdUSoT','F8oyWOJcIaW','WQZcNI7dSY4','j8o9ebqu','W516WRTOW4SaqNBcHIZdUCkG','pSkPW4JcNGi','DSkZWOfOja','WO/dMc/cNCkS','W6JcIsBcKL3dTCo1WOnBWPRdRG','hmkJpCoJWPy','imoan8kSWP0','W6BdOfm9W7u','WORcOZXHWOG','W4/cHwCAW6i','gSoSm8kGW7q','k8kAWRtdIrm','cwRdICo8nq','pSkryKSw','W65LjCoL','W6xdJSkztSov','rwmAWPPM','BCkckSkQWPa','xunWr0e','Bmo2zX0K','W6PoWOi/WRq','WRFdNNZdKqq','yhqhWPbq','fGC3gG8','lSowDee','W6/cG8kFFmoE','x24CWPa','W6NdSCoVW4pdTxvIk8ku','W6JcIYJcKtFdN8oWWO5PWQC','wSo0zSkMW5ldP8klj8oZlCoC','cmkNm8ovWOC','k1ddGgC','tsRdOwFcGG','W65hx8k2zq','WRJcQmk5W7xdUG','gmk0oCo9WPO','W4JdPv3cSG','B3ZcJbtcIq','WRNdO3NdHSoB','pSkrFvyt','W4WIWQVdI8kK','W5maWPRdSCkt','nSoDjHC0','WOpcS8kkWQtcNa','W4/cHwGuW68','o17dNhFdUa','iCopmCoPlW','sSojW5fuea','W4XTWQi0WOK','WPrFW7S','WR/dNNRdGCok','ovVdLG','zCoycgBdSW','WQ7dMNRdKSon','WRNcMmokk8keW4/dNCoAW4OUea','xSonW51cdq','BSkppXXfW4RcTJJdVq/dQG0','x0VcKJ3cQG','WO7cOqbmWPi','WOBcI2VcKmkO','W6VdP8kAw8oM','gmkzW6LcnMVcNJi','WQ3cSrNdHWG','rJpcNfOKWRqLBxxcLCklACk7','uCo3taWN','gbVdIgRdPYPyWP0Rkr0','n8ogidyW','WQJcVCkIW7/cQq','WQtcKHFdLbm','gHVcT2RdMq','DmkcW7VcRqJdHNa','W4TbWQ7dQSko','Amotpquh','oSkmWR8','q2GaWOO','kmoCvKGm','dSk0hmo+WOW','WOtdIvVcISkT','WPpcRmk6W6JdPW','pCoOlWldLW','dmo2W6/cKa','ACoqW6pdUra5DmoAWPi','WPafW5TNW4RcVb3dH8kAemoHW7KT','WQj3rmoCW5K','WQZcPrf4WOm','WQ7dMxZdLmor','cMZdTMhdVW'];F=function(){return D5;};return F();}function x(T,U,h,u,I){const CW={T:0x14e};return b(T-CW.T,U);}function summarise(T,U){const D4={T:0x30e,U:0x321,h:'Xvyy',u:0x300,I:0x33d,i:'Xvyy',R:0x381,Z:0x36f,O:0x350,E:0x374,z:'wFhe',p:0x367,v:0x3bd,K:0x377,Y:0x3b6,A:0x2f5,D5:0x385,D6:'OmWj',D7:0x36b,D8:0x345,D9:0x527,DC:0x518,DD:'L4Ci',DF:0x508,Db:0x4f2,DT:0x4ea,DU:0x53c,Dh:'Adb3',Du:0x526,DI:0x4ed,Di:'L4Ci',DR:0x111,DZ:0xfb,DO:0xb3,DE:0xbd,Dz:0xf5,Dp:0x61,Dv:'bYxw',DK:0x9e,DY:0xb4,DA:0x2b1,DX:0x2de,DG:'Fht^',Dr:0x2ea,Dn:0x2f8,Dg:0x35,Dq:0x79,Dk:'s8ez',De:0x77,Dy:0x4a,Ds:'uG5^',DM:0x3a1,Dm:0x397,DB:0x3f1,Dj:0x3a5,Dx:0x20,Dd:0x65,DQ:'IT^7',Do:0x73,Df:0x2d,Dt:0x371,DV:0x35d,DW:'c8fc',Dl:0x334,DJ:0x34b,DH:0x292,DL:0x2ee,DS:'rsTm',Dc:0x313,Dw:0x2d9,DP:'s8ez',DN:0xaf,Da:0x8e,F0:0xc0,F1:0x6b,F2:0x2a5,F3:0x324,F4:'8SYy',F5:0x2c8,F6:0x2d5,F7:'QzY[',F8:0x3cf,F9:0x37d,FC:0x380,FD:0x39d,FF:'Y$7z',Fb:0x3e8,FT:0x3bc,FU:0x3d5,Fh:0x3e2,Fu:0x2de,FI:0x304,Fi:'Zkc]',FR:0x2b2,FZ:0x2fd,FO:0x54,FE:0x42,Fz:'8SYy',Fp:0x17,Fv:0x34,FK:'WOys',FY:0xc7,FA:0xc4,FX:0x8c,FG:0x309,Fr:'gADs',Fn:0x2f1,Fg:0x2f3,Fq:'lZwy',Fk:0x394,Fe:0x3d2,Fy:0x35c,Fs:0x3be,FM:0x25,Fm:0x93,FB:'sjgH',Fj:0x37,Fx:0x7a,Fd:0x11,FQ:0x5e,Fo:0x2c,Ff:0x379,Ft:0x3b2,FV:0x355,FW:0x36d,Fl:0x2d9,FJ:'5FGk',FH:0x348,FL:0x327,FS:0x2c2,Fc:0x2a2,Fw:0x3e6,FP:0x3d8,FN:0x425,Fa:0x3aa,b0:'5FGk',b1:0xc5,b2:0xb1,b3:0x101,b4:0x89,b5:'lZwy',b6:0x3e0,b7:0x39d,b8:0x422,b9:0x3b3,bC:0x3ee,bD:0x3d7,bF:0x3bf,bb:0x2a,bT:0xd,bU:'bYxw',bh:0x78,bu:0x4c,bI:'z%Wr',bi:0x11a,bR:0x11e,bZ:0x166,bO:0x140,bE:0x3c6,bz:0x37f,bp:0x3d4,bv:0x3c1,bK:0x12,bY:0xf,bA:0x28,bX:0x3a,bG:0x390,br:0x3a4,bn:0x3a0,bg:0x4fd,bq:0x4a6,bk:'vtyY',be:0x52f,by:0x526,bs:0xd6,bM:0xb1,bm:0xa6,bB:0x8d,bj:0x4f3,bx:0x533,bd:'q0[k',bQ:0x532,bo:0x2ef,bf:0x2d9,bt:0x2e3,bV:0x2f6,bW:0x9d,bl:0xc0,bJ:'qb6z',bH:0xa4,bL:0xb3,bS:0x508,bc:0x54f,bw:'IT^7',bP:0x537,bN:0x539,ba:0xc1,T0:0xa5,T1:0xbf,T2:0xd0,T3:0xff,T4:0xbc,T5:'z%Wr',T6:0xec,T7:0xd1,T8:0x53b,T9:0x513,TC:'PCn(',TD:0x51c,TF:0x50c,Tb:'qf)9',TT:0x3d9,TU:0x3d6,Th:0x40b,Tu:0x40a,TI:0x2f0,Ti:0x2a7,TR:0x302,TZ:0x2e1,TO:0x330,TE:0x335,Tz:'](RO',Tp:0x323,Tv:0x341,TK:0x3da,TY:0x393,TA:0x285,TX:0x314,TG:'5FGk',Tr:0x2e2,Tn:0x2d6,Tg:']8[s',Tq:0x3e7,Tk:0x39f,Te:0x394,Ty:'q0[k',Ts:0x3b1,TM:0x3c8,Tm:0x3c3,TB:0x3fb,Tj:0xb9,Tx:0xb6,Td:'Nd^&',TQ:0x9b,To:0xd3,Tf:'wFhe',Tt:0x392,TV:0x3d1,TW:0x3e8,Tl:0x3e3,TJ:'vtyY',TH:0x396,TL:0x342,TS:0x3cc,Tc:0x3ab,Tw:0x8f,TP:0xc2,TN:'*76S',Ta:0xb8,U0:'IT^7',U1:0x104,U2:0x13b,U3:0x6e,U4:'tTl&',U5:0x73,U6:0x96,U7:']8[s',U8:0x3b6,U9:0x3e4,UC:0x38c,UD:0x3ae,UF:0x40a,Ub:0x3eb,UT:0x3f1,UU:0x3d0,Uh:0x29a,Uu:'Y$7z',UI:0x2ee,Ui:0x6,UR:'5S#N',UZ:0xb,UO:0x4b,UE:0x322,Uz:0x301,Up:'gADs',Uv:0x32c,UK:0x33e,UY:0x4a,UA:0x44,UX:'L4Ci',UG:0x8b,Ur:0x28,Un:'8SYy',Ug:0x38,Uq:0x3f,Uk:0x31d,Ue:0x376,Uy:'IT^7',Us:0x36e,UM:'OmWj',Um:0xb6,UB:0xa8,Uj:0xba,Ux:0xb5,Ud:'XA]q',UQ:0xd9,Uo:0x97,Uf:0x299,Ut:'Ui[d',UV:0x2a7,UW:0x2ce,Ul:0xf8,UJ:0x129,UH:0x11c,UL:0x169,US:0xc,Uc:0x41,Uw:'6wkB',UP:0x1d,UN:0x29},D3={T:0x1d,U:0x192,h:0x2c,u:0x389},D2={T:0x38,U:0x14c,h:0x75,u:0xaa},D1={T:0x1ed,U:0x39,h:0xc6,u:0x2cf},D0={T:0x187,U:0xd3,h:0x1a2,u:0x4b4},Ca={T:0x26,U:0x86,h:0xb6,u:0x48},h={'gJfFV':C0(D4.T,D4.U,D4.h,D4.u,D4.I)+C1(D4.i,D4.R,D4.Z,D4.O,D4.E)+C1(D4.z,D4.p,D4.v,D4.K,D4.Y)+'es','kMbNE':function(z,p){return z===p;},'ucXly':C0(D4.A,D4.D5,D4.D6,D4.D7,D4.D8)+C4(D4.D9,D4.DC,D4.DD,D4.DF,D4.Db)+'s','Hemyt':C4(D4.DT,D4.DU,D4.Dh,D4.Du,D4.DI)+C3(D4.Di,D4.DR,D4.DZ,D4.DO,D4.DE)+C2(D4.Dz,D4.Dp,D4.Dv,D4.DK,D4.DY),'pDHku':C0(D4.DA,D4.DX,D4.DG,D4.Dr,D4.Dn),'RSDrn':C2(D4.Dg,D4.Dq,D4.Dk,D4.De,D4.Dy),'XDLSk':C1(D4.Ds,D4.DM,D4.Dm,D4.DB,D4.Dj),'DpGRf':C2(D4.Dx,D4.Dd,D4.DQ,D4.Do,D4.Df)+'l','YRBjQ':function(z,p){return z===p;},'VWJDC':function(z,p){return z===p;},'LXEZp':function(z,p){return z===p;},'BGnaD':C0(D4.Dt,D4.DV,D4.DW,D4.Dl,D4.DJ)+C0(D4.DH,D4.DL,D4.DS,D4.Dc,D4.Dw)+'t','uIRbT':C3(D4.DP,D4.DN,D4.Da,D4.F0,D4.F1)+C0(D4.F2,D4.F3,D4.F4,D4.F5,D4.F6)+'lx','tWrPS':C1(D4.F7,D4.F8,D4.F9,D4.FC,D4.FD)+C1(D4.FF,D4.Fb,D4.FT,D4.FU,D4.Fh)+'ay','MURaK':function(z,p){return z>p;},'OSKmg':function(z,p){return z??p;},'MEczv':C0(D4.Fu,D4.FI,D4.Fi,D4.FR,D4.FZ)+C2(D4.FO,D4.FE,D4.Fz,D4.Fp,D4.Fv)+C3(D4.FK,D4.FY,D4.FA,D4.FX,D4.De)+'nt','POgUW':C0(D4.FG,D4.F2,D4.Fr,D4.Fn,D4.Fg)+C1(D4.Fq,D4.Fk,D4.Fe,D4.Fy,D4.Fs)+C2(D4.FM,D4.Fm,D4.FB,D4.Fj,D4.Dp)+'h','RyhjB':function(z,p){return z(p);},'VkeaG':C2(D4.Fx,D4.Fd,D4.Dk,D4.FQ,D4.Fo)+C1(D4.DQ,D4.Ff,D4.DV,D4.Ft,D4.FV)+C0(D4.FW,D4.Fl,D4.FJ,D4.FH,D4.FL)+'y','ujVaf':function(z,p){return z>p;},'MpaVx':function(z,p){return z===p;}};function C2(T,U,h,u,I){return B(T-Ca.T,U-Ca.U,h-Ca.h,h,I-Ca.u);}U[h[C0(D4.FS,D4.Fc,D4.i,D4.u,D4.Dr)]]=T[C1(D4.Fr,D4.Fw,D4.FP,D4.FN,D4.Fa)+'h'];if(h[C3(D4.b0,D4.b1,D4.b2,D4.b3,D4.b4)](T[C1(D4.b5,D4.b6,D4.b7,D4.Fs,D4.b8)+'h'],0x2642+0x9*0x41d+-0x1*0x4b47)){U[h[C1(D4.Fz,D4.b9,D4.bC,D4.bD,D4.bF)]]=null,U[h[C2(D4.bb,D4.bT,D4.bU,D4.bh,D4.bu)]]=null;return;}let u=-0x15f3+-0x177a+0x2d6d,I=-0x6*0x2e5+-0xf*0x52+0x162c,i=0x21f4+-0x77*-0x47+-0x42f5,R=0x2*-0x1150+-0x18ec+-0xce*-0x4a;const Z=new Set();function C4(T,U,h,u,I){return B(T-D0.T,U-D0.U,h-D0.h,h,T-D0.u);}const O=new Set();for(const z of T){const p=/\btyp\s+(\w+)/[C3(D4.bI,D4.bi,D4.bR,D4.bZ,D4.bO)](z)?.[-0x1b90+0x669+0x1528*0x1]??'';if(h[C1(D4.FK,D4.bE,D4.bz,D4.bp,D4.bv)](p,h[C2(-D4.bK,-D4.bY,D4.FF,D4.bA,D4.bX)]))u++;else{if(h[C1(D4.b0,D4.bG,D4.br,D4.bn,D4.R)](p,h[C4(D4.bg,D4.bq,D4.bk,D4.be,D4.by)]))I++;else{if(h[C3(D4.b0,D4.bs,D4.bM,D4.bm,D4.bB)](p,h[C4(D4.bj,D4.bx,D4.bd,D4.bQ,D4.Db)]))i++;}}if(z[C0(D4.bo,D4.bf,D4.Dh,D4.bt,D4.bV)+C2(D4.bW,D4.bl,D4.bJ,D4.bH,D4.bL)](h[C4(D4.bS,D4.bc,D4.bw,D4.bP,D4.bN)])){R++;continue;}const v=ADDRESS[C2(D4.ba,D4.T0,D4.bJ,D4.T1,D4.T2)](z)?.[-0x83d+-0x1fdf+0x281c];if(h[C2(D4.T3,D4.T4,D4.T5,D4.T6,D4.T7)](v,undefined))continue;if(h[C4(D4.T8,D4.T9,D4.TC,D4.TD,D4.TF)](p,h[C1(D4.Tb,D4.TT,D4.TU,D4.Th,D4.Tu)]))O[C0(D4.TI,D4.Ti,D4.D6,D4.TR,D4.TZ)](v);else{if(h[C0(D4.TO,D4.TE,D4.Tz,D4.Tp,D4.Tv)](p,h[C1(D4.D6,D4.Fs,D4.TK,D4.Dj,D4.TY)])||h[C0(D4.TA,D4.TX,D4.TG,D4.Tr,D4.Tn)](p,h[C1(D4.Tg,D4.Tq,D4.b6,D4.Tk,D4.Te)]))Z[C1(D4.Ty,D4.Ts,D4.TM,D4.Tm,D4.TB)](v);}}function C0(T,U,h,u,I){return B(T-D1.T,U-D1.U,h-D1.h,h,I-D1.u);}U[h[C2(D4.Tj,D4.Tx,D4.Td,D4.TQ,D4.To)]]=u,U[h[C1(D4.Tf,D4.Tt,D4.TV,D4.TW,D4.Tl)]]=I;function C3(T,U,h,u,I){return B(T-D2.T,U-D2.U,h-D2.h,T,h-D2.u);}U[h[C1(D4.TJ,D4.TH,D4.TL,D4.TS,D4.Tc)]]=i,U[h[C2(D4.Tw,D4.TP,D4.TN,D4.FX,D4.Ta)]]=h[C3(D4.U0,D4.ba,D4.U1,D4.U2,D4.T1)](R,-0xd03+0xdc0+-0xbd*0x1);const [E]=[...Z][C2(D4.T7,D4.U3,D4.U4,D4.U5,D4.U6)]();function C1(T,U,h,u,I){return B(T-D3.T,U-D3.U,h-D3.h,T,U-D3.u);}U[h[C1(D4.U7,D4.U8,D4.U9,D4.UC,D4.UD)]]=h[C1(D4.DQ,D4.UF,D4.Ub,D4.UT,D4.UU)](E,null),U[h[C0(D4.Uh,D4.Tv,D4.Uu,D4.Fu,D4.UI)]]=O[C2(D4.FQ,D4.Ui,D4.UR,D4.UZ,D4.UO)],U[h[C0(D4.UE,D4.Uz,D4.Up,D4.Uv,D4.UK)]]=h[C2(D4.UY,D4.UA,D4.UX,D4.UG,D4.Tw)](O[C2(D4.Ur,D4.Fv,D4.Un,D4.Ug,D4.Uq)],0x13*0x12a+-0x2626+0x1008)?null:h[C0(D4.Uk,D4.Ue,D4.Uy,D4.Us,D4.Dl)](hash,[...O][C3(D4.UM,D4.Um,D4.UB,D4.Uj,D4.Ux)]()[C3(D4.Ud,D4.T0,D4.UQ,D4.Uo,D4.T4)](',')),U[h[C0(D4.Uf,D4.bt,D4.Ut,D4.UV,D4.UW)]]=h[C3(D4.bd,D4.Ul,D4.UJ,D4.UH,D4.UL)](i,0x955*0x1+-0x759*-0x3+-0x1f60)&&h[C2(D4.US,D4.Uc,D4.Uw,-D4.UP,D4.UN)](I,-0x6b*0x26+-0xdc5+-0x1da7*-0x1);}
1
+ import { hash } from '../hash.js';
2
+ /**
3
+ * What the WebRTC stack says about the network beneath the browser.
4
+ *
5
+ * In `INVASIVE_COLLECTORS` rather than the default set. No permission prompt is
6
+ * involved — candidate gathering needs none — but this reads the shape of
7
+ * somebody's home network, which is about the person rather than the browser.
8
+ *
9
+ * ## What it is for
10
+ *
11
+ * A candidate is a route the browser would accept media on, and the set of them
12
+ * describes the path out:
13
+ *
14
+ * `host` an address on the machine itself
15
+ * `srflx` the address a STUN server saw, which is the real public egress
16
+ * `relay` a TURN relay, meaning nothing direct worked
17
+ *
18
+ * The `srflx` address is the one that matters, and it is the reason this is
19
+ * worth collecting: it is observed by a third party rather than asserted by the
20
+ * client, so a proxy that rewrites HTTP headers does not move it. A request
21
+ * whose HTTP address is residential while its `srflx` address belongs to a
22
+ * datacentre is a contradiction the header cannot produce on its own.
23
+ *
24
+ * ## What it mostly gets, in practice
25
+ *
26
+ * Browsers have spent years closing this. Chrome replaces host candidates with
27
+ * an mDNS name — a random `.local` hostname regenerated per origin — so the
28
+ * classic "local IP leak" is gone by default. Firefox does the same under
29
+ * `resistFingerprinting`.
30
+ *
31
+ * That is recorded rather than worked around: `webrtc.mdns` says the
32
+ * obfuscation is active, which is itself a fact about the browser, and no local
33
+ * address is reported when there is none to report. What survives is the
34
+ * candidate *shape* — how many of each type, whether a relay was needed,
35
+ * whether gathering completed at all — and the public address, which is not
36
+ * obfuscated because a STUN server has to know it for the protocol to work.
37
+ */
38
+ /**
39
+ * A public STUN server, used only to learn the reflexive address.
40
+ *
41
+ * This is an outbound request from the visitor's browser to a third party, and
42
+ * it is the reason this collector is opt-in even though it prompts for nothing.
43
+ * Google's is used because it is the one every WebRTC application already
44
+ * contacts, so it adds no new party to a connection the browser makes anyway —
45
+ * but a deployment that would rather not can run its own and change this line.
46
+ */
47
+ const STUN = 'stun:stun.l.google.com:19302';
48
+ /** Short: gathering usually settles in well under this, and the wave has a budget. */
49
+ const GATHER_TIMEOUT_MS = 700;
50
+ export const webrtcCollector = {
51
+ id: 'webrtc',
52
+ wave: 'deep',
53
+ optional: true,
54
+ async collect({ window }) {
55
+ const out = {};
56
+ const Ctor = window.RTCPeerConnection ??
57
+ window.webkitRTCPeerConnection;
58
+ if (Ctor === undefined) {
59
+ // Present and null: the probe ran and the API is absent, which is a
60
+ // different fact from the collector never running.
61
+ out['webrtc.supported'] = false;
62
+ out['webrtc.candidates'] = null;
63
+ return out;
64
+ }
65
+ out['webrtc.supported'] = true;
66
+ let connection;
67
+ try {
68
+ connection = new Ctor({ iceServers: [{ urls: STUN }] });
69
+ // A data channel is what makes the browser gather at all. Nothing is
70
+ // sent on it and no media device is touched.
71
+ connection.createDataChannel('probe');
72
+ const candidates = [];
73
+ const gathered = new Promise((resolve) => {
74
+ let settled = false;
75
+ const finish = () => {
76
+ if (settled)
77
+ return;
78
+ settled = true;
79
+ resolve();
80
+ };
81
+ connection?.addEventListener('icecandidate', (event) => {
82
+ // A null candidate is the end-of-gathering marker, not a failure.
83
+ if (event.candidate === null)
84
+ return finish();
85
+ if (event.candidate.candidate !== '')
86
+ candidates.push(event.candidate.candidate);
87
+ });
88
+ setTimeout(finish, GATHER_TIMEOUT_MS);
89
+ });
90
+ const offer = await connection.createOffer();
91
+ await connection.setLocalDescription(offer);
92
+ await gathered;
93
+ summarise(candidates, out);
94
+ }
95
+ catch {
96
+ out['webrtc.candidates'] = null;
97
+ }
98
+ finally {
99
+ try {
100
+ connection?.close();
101
+ }
102
+ catch {
103
+ // A connection that will not close is not worth a thrown signal.
104
+ }
105
+ }
106
+ return out;
107
+ },
108
+ };
109
+ /** IPv4 and IPv6 both, since a candidate line carries either. */
110
+ const ADDRESS = /(?:\d{1,3}\.){3}\d{1,3}|(?:[0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}/i;
111
+ function summarise(candidates, out) {
112
+ out['webrtc.candidates'] = candidates.length;
113
+ if (candidates.length === 0) {
114
+ // Gathering produced nothing. Common in containers with no usable
115
+ // interface, and common behind a firewall that drops STUN — so it is
116
+ // reported as a count rather than inferred into a verdict.
117
+ out['webrtc.mdns'] = null;
118
+ out['webrtc.publicIp'] = null;
119
+ return;
120
+ }
121
+ let host = 0;
122
+ let srflx = 0;
123
+ let relay = 0;
124
+ let mdns = 0;
125
+ const publicAddresses = new Set();
126
+ const localAddresses = new Set();
127
+ for (const line of candidates) {
128
+ const type = /\btyp\s+(\w+)/.exec(line)?.[1] ?? '';
129
+ if (type === 'host')
130
+ host++;
131
+ else if (type === 'srflx')
132
+ srflx++;
133
+ else if (type === 'relay')
134
+ relay++;
135
+ // Chrome substitutes a per-origin random hostname for host candidates, so
136
+ // the address field reads `<uuid>.local` rather than an address.
137
+ if (line.includes('.local')) {
138
+ mdns++;
139
+ continue;
140
+ }
141
+ const address = ADDRESS.exec(line)?.[0];
142
+ if (address === undefined)
143
+ continue;
144
+ if (type === 'host')
145
+ localAddresses.add(address);
146
+ else if (type === 'srflx' || type === 'relay')
147
+ publicAddresses.add(address);
148
+ }
149
+ out['webrtc.host'] = host;
150
+ out['webrtc.srflx'] = srflx;
151
+ out['webrtc.relay'] = relay;
152
+ // True when the browser is obfuscating host candidates, which is the default
153
+ // on current Chrome. A fact about the browser, not a failure of the probe.
154
+ out['webrtc.mdns'] = mdns > 0;
155
+ // The reflexive address: observed by a third party rather than asserted by
156
+ // the client, which is what makes it worth comparing against the HTTP one.
157
+ const [first] = [...publicAddresses].sort();
158
+ out['webrtc.publicIp'] = first ?? null;
159
+ // Local addresses are hashed rather than reported. The count and stability
160
+ // are what a check would read — whether the machine has one interface or
161
+ // twelve, and whether that changed — and the addresses themselves describe
162
+ // somebody's home network without adding anything to that.
163
+ out['webrtc.localCount'] = localAddresses.size;
164
+ out['webrtc.localHash'] = localAddresses.size === 0 ? null : hash([...localAddresses].sort().join(','));
165
+ // No direct route was usable. Ordinary on a locked-down corporate network,
166
+ // and also what a relayed or heavily proxied connection looks like.
167
+ out['webrtc.relayOnly'] = relay > 0 && srflx === 0;
168
+ }
@@ -0,0 +1,128 @@
1
+ import type { SignalValue } from './types.js';
2
+ /**
3
+ * The stable core: what a device still looks like after it clears storage.
4
+ *
5
+ * The device id lives in cookies, localStorage and IndexedDB, so it is gone the
6
+ * moment someone opens a private window or clears site data — and with it goes
7
+ * every limit keyed on the device, including the credential-stuffing defence.
8
+ * That is not a bug in the storage layer; it is what private browsing *is*.
9
+ *
10
+ * The answer is a second, weaker identifier built only from signals that do not
11
+ * depend on storage at all: the GPU, the rendering stack, the CPU class, the
12
+ * screen. Those are the same in a private window as outside one.
13
+ *
14
+ * ## What is deliberately excluded
15
+ *
16
+ * Anything that changes on its own. A browser version, a window size, a
17
+ * connection type — include those and the core shifts under a returning user,
18
+ * which is the failure that makes a fingerprint useless: it stops recognising
19
+ * the people it is supposed to recognise.
20
+ *
21
+ * ## The privacy tension, stated plainly
22
+ *
23
+ * This links a private window to ordinary browsing on the same machine. Someone
24
+ * using a private window is often specifically trying to prevent that. There is
25
+ * no version of this that is both effective against storage clearing and
26
+ * respectful of the intent behind it — the two are the same act.
27
+ *
28
+ * So it is: hashed with the tenant salt before it is stored, never shared
29
+ * between tenants, suppressed entirely under `consent: 'deferred'`, and
30
+ * individually disableable. And it is weaker evidence than a real device id by
31
+ * design — enough to notice one device trying forty accounts, not enough to
32
+ * treat as identity.
33
+ */
34
+ /**
35
+ * Signals that survive a storage wipe and do not drift.
36
+ *
37
+ * Ordered for readability; the hash sorts them.
38
+ */
39
+ declare const STABLE_KEYS: readonly ["webgl.renderer", "webgl.vendor", "webgl.parametersHash", "webgl.fragmentHighFloat", "math.quirksHash", "err.nullAccessMessage", "screen.colorDepth", "screen.devicePixelRatio", "nav.hardwareConcurrency", "nav.deviceMemory", "nav.maxTouchPoints", "nav.platform", "tz.timezone"];
40
+ /**
41
+ * Keys left out, with the reason — so the next person to add one has to argue
42
+ * with something.
43
+ *
44
+ * nav.userAgent moves on every browser update
45
+ * features.hash moves on every browser update
46
+ * screen.innerWidth moves when the window is resized
47
+ * screen.chromeHeight needs focus, and moves with the toolbar
48
+ * nav.languages a user can change it, and some browsers reorder it
49
+ * canvas.stable a property of the browser's privacy settings, not the device
50
+ * nav.connectionType changes with the network, which is the point of it
51
+ *
52
+ * The next three were in the core until a measurement removed them. Safari 26,
53
+ * same machine, normal versus private browsing:
54
+ *
55
+ * canvas.hash 9cabb395 -> ec0c368d
56
+ * screen.width 1728 -> 1340
57
+ * screen.height 1117 -> 823
58
+ *
59
+ * Everything else was identical, so a core without these three would have
60
+ * matched — and with them it could not.
61
+ *
62
+ * canvas.hash Safari's fingerprinting protection seeds canvas noise **per
63
+ * session**. Two renders inside one session agree, so
64
+ * `canvas.stable` reports true and the noise check below does
65
+ * not fire. There is no in-session test that detects this;
66
+ * the only reliable answer is to keep rendered output out of
67
+ * a core that has to survive privacy modes.
68
+ *
69
+ * screen.width Safari private reports the *viewport* as the screen: 1340x823
70
+ * screen.height were exactly innerWidth and innerHeight. So these are not a
71
+ * different screen, they are a spoof — and one that moves
72
+ * again whenever the window is resized.
73
+ */
74
+ export declare const EXCLUDED_FROM_CORE: readonly ["nav.userAgent", "features.hash", "screen.innerWidth", "screen.chromeHeight", "nav.languages", "canvas.stable", "nav.connectionType", "canvas.hash", "screen.width", "screen.height"];
75
+ export interface StableCore {
76
+ readonly hash: string;
77
+ /** How many of the stable keys were actually present. */
78
+ readonly present: number;
79
+ readonly total: number;
80
+ /** The exact values that went into the hash, so two captures can be diffed. */
81
+ readonly parts: Readonly<Record<string, SignalValue>>;
82
+ /** A randomised signal was detected and left out, lowering the core's entropy. */
83
+ readonly noiseExcluded: boolean;
84
+ /**
85
+ * Below this, the hash is too thin to relink on — a handful of common values
86
+ * would collide across unrelated devices, and a wrong link is worse than none.
87
+ */
88
+ readonly usable: boolean;
89
+ }
90
+ /**
91
+ * Signals a browser may randomise between two reads in the same session.
92
+ *
93
+ * Kept as a guard even though canvas is no longer in the core, because the same
94
+ * per-read randomisation could appear on another signal — and because it
95
+ * catches Brave, which farbles per read rather than per session.
96
+ *
97
+ * It does **not** catch Safari, whose noise is seeded once per session: two
98
+ * renders agree, the check passes, and the value still differs the next time
99
+ * the browser is opened. That is why canvas was removed outright rather than
100
+ * guarded. An in-session test cannot detect a per-session seed.
101
+ */
102
+ declare const NOISE_TARGETS: readonly ["canvas.hash"];
103
+ export declare function stableCore(signals: Readonly<Record<string, SignalValue>>): StableCore;
104
+ /**
105
+ * The machine, separated from the browser running on it.
106
+ *
107
+ * Two tiers because they decay at different rates, and the difference between
108
+ * them is itself information. A browser update changes the engine tier and
109
+ * leaves the hardware tier alone; a new laptop changes both. Hashing all
110
+ * thirteen keys together means any single change mints a brand-new identity,
111
+ * so a returning customer who updated Chrome looks exactly like a stranger.
112
+ *
113
+ * The hardware tier is what a device-keyed limit should key on: it survives a
114
+ * cleared profile *and* a browser update, which is the combination a
115
+ * credential-stuffing run produces on purpose.
116
+ */
117
+ declare const HARDWARE_KEYS: readonly ["webgl.renderer", "webgl.vendor", "webgl.parametersHash", "webgl.fragmentHighFloat", "screen.colorDepth", "screen.devicePixelRatio", "nav.hardwareConcurrency", "nav.deviceMemory", "nav.maxTouchPoints"];
118
+ /** The build and its configuration: everything that moves when the browser does. */
119
+ declare const BROWSER_KEYS: readonly ["math.quirksHash", "err.nullAccessMessage", "nav.platform", "tz.timezone"];
120
+ export interface CoreTier {
121
+ readonly hash: string;
122
+ readonly present: number;
123
+ readonly total: number;
124
+ readonly usable: boolean;
125
+ }
126
+ export declare function hardwareCore(signals: Readonly<Record<string, SignalValue>>): CoreTier;
127
+ export declare function browserCore(signals: Readonly<Record<string, SignalValue>>): CoreTier;
128
+ export { STABLE_KEYS, NOISE_TARGETS, HARDWARE_KEYS, BROWSER_KEYS };