ibp-tms 1.0.46 → 1.0.48

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 (3) hide show
  1. package/package.json +1 -1
  2. package/tms.js +1 -1
  3. package/tms.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ibp-tms",
3
- "version": "1.0.46",
3
+ "version": "1.0.48",
4
4
  "description": "Style & JS optimized",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/tms.js CHANGED
@@ -1 +1 @@
1
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(function(){let t,e,n=[],o=null,i=0,a=0,l=20,d=null,r=null,u=null,c=2;function s(o,i){const a=Date.now();if(t&&e){const l=o-t.x,d=i-t.y,r=a-e,u=Math.sqrt(l*l+d*d)/r;n.push({dx:l,dy:d,dt:r,velocity:u}),n.length>100&&n.shift()}t={x:o,y:i},e=a}function h(t){if(i>0&&(t=i),n.length-a<(t||l))return!1;a=n.length-1;let e=n.some(((t,e,n)=>e>0&&Math.abs(t.velocity-n[e-1].velocity)>.05)),o=n.some(((t,e,n)=>e>1&&(Math.abs(t.dx-n[e-1].dx)>.1||Math.abs(t.dy-n[e-1].dy)>.1))),d=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&d}function m(t,e){let n=h();if(n||t||e||i>0){var o=t&&!n?function(){let t=w(),e=null;return null!=t&&t.hash&&(e=t.hash,delete t.hash,y(t)),e}():g(e||i);if(null==o||c<=0)return;let l="/tfp/"+o+".png";var a=new Image;a.onload=function(){if(function(t,e={}){const n=e.threshold??20,o=e.ratio??.95,i=t.naturalWidth,a=t.naturalHeight,l=200,d=Math.min(1,l/Math.max(i,a)),r=document.createElement("canvas");r.width=Math.max(1,Math.floor(i*d)),r.height=Math.max(1,Math.floor(a*d));const u=r.getContext("2d");u.drawImage(t,0,0,r.width,r.height);const{data:c,width:s,height:h}=u.getImageData(0,0,r.width,r.height),m=s*h;let f=0;for(let t=0;t<c.length;t+=4){const e=c[t],o=c[t+1],i=c[t+2];0!==c[t+3]&&(Math.max(e,o,i)<=n&&f++)}return f/m>=o}(a)){let t=w();(!t.token||t.token&&"UN"!=t.token)&&new Promise(((t,e)=>{try{fetch("/traffic/id",{method:"GET"}).then((t=>t.json())).then((n=>{if(n&&n.id){let e=w();null==e&&(e={}),e.id=n.id,e.uid=n.id,d=n.id,y(e),t(n.id)}else e()})).catch((t=>{e()}))}catch(t){e()}})).then((e=>{t.token||(t.token="NA",y(t))})).catch((e=>{t.token="UN",y(t)}))}},a.onerror=function(){c--;let t=(document.querySelector('meta[property="og:url"]')?document.querySelector('meta[property="og:url"]').getAttribute("content"):window.location.href).match(/^(?:https?:\/\/)?(?:www\.)?([^\/]+)/i),e=t?t[0]:null;null!=e&&(a.src=e+l)},a.src=l}}function f(){if(h()){let t=w();null==t&&(t={}),t.hash=g(i),y(t)}}function g(t){let e=0==t?function(t){let e=0,n=0,o=0,i=0,a=[];t.forEach((t=>{e+=t.dx,n+=t.dy,o+=t.dt;let l=Math.sqrt(t.dx*t.dx+t.dy*t.dy);i+=l,a.push(l/(t.dt||1e-5))}));let l=a.length?a.reduce(((t,e)=>t+e),0)/a.length:0,d=Math.atan2(n,e);return[Math.round(255*Math.min(1,l/5)),Math.round(255*(d+Math.PI)/(2*Math.PI)),Math.round(255*Math.min(1,i/100))]}(n):[0,0,0],i=0==t?function(t,e,n){const o=.299*t+.587*e+.114*n;return Math.round(o/255*100)}(e[0],e[1],e[2]):1==t?1:-1,a=o&&o.id?"U-"+o.id:"UN";return btoa(`${a}|${i}|${e[0]}|${e[1]}|${e[2]}|${t??0}`).replace(/[^A-z0-9\.]/gi,"-e")}function w(){return null==window.localStorage.getItem("TSM")?null:JSON.parse(window.localStorage.getItem("TSM"))}function v(){let t=w(),e=null==window.localStorage.getItem("AGSTREAM")?null:atob(window.localStorage.getItem("AGSTREAM"));return!(null==t||null==e||!t.uid||btoa("U-"+atob(t.uid))==e)||null!=r&&null!=d&&btoa("U-"+atob(d))!=atob(r)}function y(t){return window.localStorage.setItem("TSM",JSON.stringify(t)),!0}let p=0;function M(t){m(t),p++,p<10&&setTimeout((()=>{M(!1)}),5e3*p)}function E(){M(!0),document.addEventListener("click",(()=>{m(!1)})),document.addEventListener("touchend",(()=>{m(!1)})),window.addEventListener("beforeunload",(()=>{f()})),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&f()}))}!function(){o=w();let t=document.getElementById("agTSM");if(null!=t){let e=JSON.parse(t.textContent);null!=e&&(null!=o&&o.id||(d=o.id=e.id,y(o)))}if(document&&document.body&&null!=document.body&&document.body.hasAttribute("r-id"))document.body.addEventListener("ag.tsm.valid",(t=>{let e=w();null==e&&(e={}),e.token=t.detail.token,e.id=t.detail.id,y(e)}));else{i=function(){if(navigator.webdriver||window.chrome?.runtime?.sendMessage||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1e3;if(0==navigator.languages?.length)return 500;try{const t=document.createElement("canvas"),e=t.getContext("webgl")||t.getContext("experimental-webgl"),n=["SwiftShader","llvmpipe","softpipe","swrast","Basic Render Driver"];if(e){const t=e.getExtension("WEBGL_debug_renderer_info"),o=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER);if(n.some((t=>o.toLowerCase().includes(t.toLowerCase()))))return 700}}catch(e){}let t=!1;const e=new Error;if(Object.defineProperty(e,"stack",{get(){t=!0}}),t)return 500;try{const t="__ls_test__",e=window.localStorage;e.setItem(t,"1"),e.removeItem(t)}catch(e){return 300}let n=document.cookie.match("AGIDs?=s?(?<MM>\\d{2})(?<dd>\\d{2})(?<yyyy>\\d{4})(?<HH>\\d{2})(?<mm>\\d{2})(?<ss>\\d{2})(?<fffff>\\d{5})");if(!n||null==n||!n.groups)return 300;let o=new Date(Date.parse(`${n.groups.yyyy}-${n.groups.MM}-${n.groups.dd}T${n.groups.HH}:${n.groups.mm}:${n.groups.ss}.${n.groups.fffff}Z`)),i=new Date,a=Math.abs(i.getTime()-o.getTime()),l=w();return a>1e4&&(null==l||!l.count)?300:!("ontouchstart"in window)&&navigator.maxTouchPoints>0?400:null!=l&&l.domain&&-1==window.location.indexOf(l.domain)||null!=u&&-1==window.location.indexOf(u)?101:v()?100:0}(),l="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0?2:20,null!=o&&o.valid||(document.addEventListener("mousemove",(t=>s(t.clientX,t.clientY))),document.addEventListener("mousedown",(t=>s(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("scroll",(t=>{s(window.scrollX,window.scrollY)})),E());let t=w();null==t&&(t={}),t.count?t.count++:t.count=1,t.count<10&&y(t),window.addEventListener("ag.event.stream",(t=>{r=t.detail.streamKey,v()&&m(!1,1)})),window.agEvent&&window.dispatchEvent(new CustomEvent("ag.event.stream.update"))}}()}(),{})));
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(()=>(function(){let t,e,n=[],o=null,i=0,a=0,l=20,r=null,d=null,u=null,c=2;function s(o,i){const a=Date.now();if(t&&e){const l=o-t.x,r=i-t.y,d=a-e,u=Math.sqrt(l*l+r*r)/d;n.push({dx:l,dy:r,dt:d,velocity:u}),n.length>100&&n.shift()}t={x:o,y:i},e=a}function h(){if(navigator.webdriver||window.chrome?.runtime?.sendMessage||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1e3;if(0==navigator.languages?.length)return 500;try{const t=document.createElement("canvas"),e=t.getContext("webgl")||t.getContext("experimental-webgl"),n=["SwiftShader","llvmpipe","softpipe","swrast","Basic Render Driver"];if(e){const t=e.getExtension("WEBGL_debug_renderer_info"),o=t?e.getParameter(t.UNMASKED_RENDERER_WEBGL):e.getParameter(e.RENDERER);if(n.some((t=>o.toLowerCase().includes(t.toLowerCase()))))return 700}}catch(e){}let t=!1;const e=new Error;if(Object.defineProperty(e,"stack",{get(){t=!0}}),t)return 500;try{const t="__ls_test__",e=window.localStorage;e.setItem(t,"1"),e.removeItem(t)}catch(e){return 300}let n=document.cookie.match("AGIDs?=s?(?<MM>\\d{2})(?<dd>\\d{2})(?<yyyy>\\d{4})(?<HH>\\d{2})(?<mm>\\d{2})(?<ss>\\d{2})(?<fffff>\\d{5})");if(!n||null==n||!n.groups)return 300;let o=new Date(Date.parse(`${n.groups.yyyy}-${n.groups.MM}-${n.groups.dd}T${n.groups.HH}:${n.groups.mm}:${n.groups.ss}.${n.groups.fffff}Z`)),i=new Date,a=Math.abs(i.getTime()-o.getTime()),l=v();return a>1e4&&(null==l||!l.count)?300:!("ontouchstart"in window)&&navigator.maxTouchPoints>0?400:null!=l&&l.domain&&-1==window.location.indexOf(l.domain)||null!=u&&-1==window.location.indexOf(u)?101:y()?100:0}function m(t){if(i>0&&(t=i),n.length-a<(t||l))return!1;a=n.length-1;let e=n.some(((t,e,n)=>e>0&&Math.abs(t.velocity-n[e-1].velocity)>.05)),o=n.some(((t,e,n)=>e>1&&(Math.abs(t.dx-n[e-1].dx)>.1||Math.abs(t.dy-n[e-1].dy)>.1))),r=n.some((t=>t.dt>50&&t.dt<500));return e&&o&&r}function f(t,e){let n=m();if(n||t||e||i>0){var o=t&&!n?function(){let t=v(),e=null;return null!=t&&t.hash&&(e=t.hash,delete t.hash,p(t)),e}():w(e||i);if(null==o||c<=0)return;let l="/tfp/"+o+".png";var a=new Image;a.onload=function(){if(function(t,e={}){const n=e.threshold??20,o=e.ratio??.95,i=t.naturalWidth,a=t.naturalHeight,l=200,r=Math.min(1,l/Math.max(i,a)),d=document.createElement("canvas");d.width=Math.max(1,Math.floor(i*r)),d.height=Math.max(1,Math.floor(a*r));const u=d.getContext("2d");u.drawImage(t,0,0,d.width,d.height);const{data:c,width:s,height:h}=u.getImageData(0,0,d.width,d.height),m=s*h;let f=0;for(let t=0;t<c.length;t+=4){const e=c[t],o=c[t+1],i=c[t+2];0!==c[t+3]&&(Math.max(e,o,i)<=n&&f++)}return f/m>=o}(a)){let t=v();(!t.token||t.token&&"UN"!=t.token)&&new Promise(((t,e)=>{try{fetch("/traffic/id",{method:"GET"}).then((t=>t.json())).then((n=>{if(n&&n.id){let e=v();null==e&&(e={}),e.id=n.id,e.uid=n.id,r=n.id,p(e),t(n.id)}else e()})).catch((t=>{e()}))}catch(t){e()}})).then((e=>{t.token||(t.token="NA",p(t))})).catch((e=>{t.token="UN",p(t)}))}},a.onerror=function(){if(c<=0)return;c--;let t=(document.querySelector('meta[property="og:url"]')?document.querySelector('meta[property="og:url"]').getAttribute("content"):window.location.href).match(/^(?:https?:\/\/)?(?:www\.)?([^\/]+)/i),e=t?t[0]:null;null!=e&&(a.src=e+l)},a.src=l}}function g(){if(m()){let t=v();null==t&&(t={}),t.hash=w(i),p(t)}}function w(t){let e=0==t?function(t){let e=0,n=0,o=0,i=0,a=[];t.forEach((t=>{e+=t.dx,n+=t.dy,o+=t.dt;let l=Math.sqrt(t.dx*t.dx+t.dy*t.dy);i+=l,a.push(l/(t.dt||1e-5))}));let l=a.length?a.reduce(((t,e)=>t+e),0)/a.length:0,r=Math.atan2(n,e);return[Math.round(255*Math.min(1,l/5)),Math.round(255*(r+Math.PI)/(2*Math.PI)),Math.round(255*Math.min(1,i/100))]}(n):[0,0,0],i=0==t?function(t,e,n){const o=.299*t+.587*e+.114*n;return Math.round(o/255*100)}(e[0],e[1],e[2]):1==t?1:-1,a=o&&o.id?"U-"+o.id:"UN";return btoa(`${a}|${i}|${e[0]}|${e[1]}|${e[2]}|${t??0}`).replace(/[^A-z0-9\.]/gi,"-e")}function v(){return null==window.localStorage.getItem("TSM")?null:JSON.parse(window.localStorage.getItem("TSM"))}function y(){let t=v(),e=null==window.localStorage.getItem("AGSTREAM")?null:atob(window.localStorage.getItem("AGSTREAM"));return!(null==t||null==e||!t.uid||btoa("U-"+atob(t.uid))==e)||null!=d&&null!=r&&btoa("U-"+atob(r))!=atob(d)}function p(t){return window.localStorage.setItem("TSM",JSON.stringify(t)),!0}let M=0;function E(t){f(t),M++,M<10&&setTimeout((()=>{E(!1)}),5e3*M)}function b(){E(!0),document.addEventListener("click",(()=>{f(!1)})),document.addEventListener("touchend",(()=>{f(!1)})),window.addEventListener("beforeunload",(()=>{g()})),document.addEventListener("visibilitychange",(()=>{"hidden"===document.visibilityState&&g()}))}!function(){o=v();let t=document.getElementById("agTSM");if(null!=t){let e=JSON.parse(t.textContent);null!=e&&(null!=o&&o.id||(r=o.id=e.id,p(o)))}if(document&&document.body&&null!=document.body&&document.body.hasAttribute("r-id"))document.body.addEventListener("ag.tsm.valid",(t=>{let e=v();null==e&&(e={}),e.token=t.detail.token,e.id=t.detail.id,p(e)}));else{i=h(),l="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0?2:20,null!=o&&o.valid||(document.addEventListener("mousemove",(t=>s(t.clientX,t.clientY))),document.addEventListener("mousedown",(t=>s(t.clientX,t.clientY))),document.addEventListener("touchstart",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchend",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("touchmove",(t=>{const e=t.touches[0];e&&e.clientX&&s(e.clientX,e.clientY)})),document.addEventListener("scroll",(t=>{s(window.scrollX,window.scrollY)})),b());let t=v();null==t&&(t={}),t.count?t.count++:t.count=1,t.count<10&&p(t),window.addEventListener("ag.event.stream",(t=>{d=t.detail.streamKey,y()&&(i=h(),f(!1,1))})),window.agEvent&&window.dispatchEvent(new CustomEvent("ag.event.stream.update"))}}()}(),{})));
package/tms.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tms.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tms.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","(function(){\r\n \r\n \r\n let movements = [];\r\n\r\n let tsm = null;\r\n\r\n let lastPos;\r\n\r\n let lastTime;\r\n\r\n let suspectScore = 0;\r\n\r\n let lastLength = 0;\r\n\r\n let defaultLimit = 20;\r\n\r\n let tmsUserID = null;\r\n\r\n let streamUserID = null;\r\n\r\n let currentDomain = null;\r\n\r\n let isUserIDUpdated = false;\r\n\r\n let updateError = 2;\r\n\r\n const isTouchCapable = () => {\r\n return (\r\n 'ontouchstart' in window ||\r\n navigator.maxTouchPoints > 0 ||\r\n navigator.msMaxTouchPoints > 0 // For older IE\r\n );\r\n };\r\n \r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n if(movements.length>100)movements.shift();\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function huristicAdaption(points) {\r\n let totalDx = 0, totalDy = 0, totalDt = 0;\r\n let totalDist = 0;\r\n let velocities = [];\r\n points.forEach(p => {\r\n totalDx += p.dx;\r\n totalDy += p.dy;\r\n totalDt += p.dt;\r\n let dist = Math.sqrt(p.dx * p.dx + p.dy * p.dy);\r\n totalDist += dist;\r\n velocities.push(dist / (p.dt || 1e-5)); // avoid divide by zero\r\n });\r\n // Feature extraction\r\n let avgVel = velocities.length ? velocities.reduce((a, b) => a + b, 0) / velocities.length : 0;\r\n let direction = Math.atan2(totalDy, totalDx); // angle in radians, -π to π\r\n\r\n // Non-linear scaling and normalization\r\n // velocity: [0, max], direction: [-π, π], totalDist: scale as you wish\r\n let r = Math.round(255 * Math.min(1, avgVel / 5)); // scale velocity, or use other non-linear (logistic, sqrt, etc)\r\n let g = Math.round(255 * (direction + Math.PI) / (2 * Math.PI)); // normalize angle to [0,1]\r\n let b = Math.round(255 * Math.min(1, totalDist / 100)); // scale total distance, or another feature\r\n\r\n return [r, g, b];\r\n }\r\n\r\n\r\n function rgbToGrayWight(r, g, b) {\r\n const gray = 0.299 * r + 0.587 * g + 0.114 * b; // Accurate grayscale\r\n return Math.round(gray / 255 * 100); // Scale to 0-100\r\n }\r\n\r\n\r\n\r\n\r\n function onRecord()\r\n {\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"mousedown\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"scroll\", e=>{ \r\n recordMovement(window.scrollX, window.scrollY);\r\n });\r\n }\r\n\r\n function getSuspectAutomationScore(){\r\n if(navigator.webdriver|| window.chrome?.runtime?.sendMessage ||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1000;\r\n if(navigator.languages?.length==0)return 500;\r\n try {\r\n const canvas = document.createElement('canvas');\r\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n const softwareRenderers = ['SwiftShader', 'llvmpipe', 'softpipe', 'swrast', 'Basic Render Driver'];\r\n if (gl) {\r\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER); \r\n if (softwareRenderers.some(r=>renderer.toLowerCase().includes(r.toLowerCase()))) {\r\n return 700;\r\n }\r\n }\r\n } catch (e) { \r\n }\r\n let cdpDetected = false;\r\n const e = new Error();\r\n Object.defineProperty(e, 'stack', {\r\n get() {\r\n cdpDetected = true;\r\n }\r\n });\r\n if(cdpDetected)\r\n return 500;\r\n\r\n \r\n try {\r\n const key = '__ls_test__';\r\n const storage = window.localStorage;\r\n storage.setItem(key, '1');\r\n storage.removeItem(key);\r\n } catch (e) { \r\n return 300;\r\n }\r\n\r\n let primaryCookie = document.cookie.match(('AGID\\s?\\=\\s?(?<MM>\\\\d{2})(?<dd>\\\\d{2})(?<yyyy>\\\\d{4})(?<HH>\\\\d{2})(?<mm>\\\\d{2})(?<ss>\\\\d{2})(?<fffff>\\\\d{5})'));\r\n if(!primaryCookie || primaryCookie==null || !primaryCookie.groups) return 300;\r\n let cookieDate = new Date(Date.parse(`${primaryCookie.groups.yyyy}-${primaryCookie.groups.MM}-${primaryCookie.groups.dd}T${primaryCookie.groups.HH}:${primaryCookie.groups.mm}:${primaryCookie.groups.ss}.${primaryCookie.groups.fffff}Z`));\r\n let currentDate = new Date();\r\n let timeDiff = Math.abs(currentDate.getTime() - cookieDate.getTime()); \r\n let currentValue = getCurrentValue();\r\n if(timeDiff>10*1000&&(currentValue==null||!currentValue.count))return 300; \r\n //if(!(window.innerWidth==window.outerWidth&&window.innerHeight==window.outerHeight))return 400;\r\n if(!('ontouchstart' in window)&&navigator.maxTouchPoints>0)return 400; \r\n if((currentValue!=null&&currentValue.domain&&window.location.indexOf(currentValue.domain)==-1)||(currentDomain!=null&&window.location.indexOf(currentDomain)==-1))return 101;\r\n if(suspectVPN())return 100; \r\n return 0;\r\n }\r\n\r\n function isHuman(limit) {\r\n if(suspectScore>0)limit = suspectScore;\r\n if (movements.length - lastLength < (limit?limit:defaultLimit)) return false;\r\n lastLength = movements.length - 1;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500); \r\n return varying && nonLinear && irregular;\r\n }\r\n\r\n function halucinateClient(){\r\n //updateScore(false,-1);\r\n }\r\n\r\n function updateId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/id',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.id = data.id;\r\n currentValue.uid = data.id;\r\n tmsUserID = data.id;\r\n setCurrentValue(currentValue);\r\n idresolve(data.id);\r\n }else{\r\n halucinateClient();\r\n idreject();\r\n }\r\n }).catch(ex=>{ halucinateClient();idreject();});\r\n }catch(ex){ halucinateClient();idreject(); }\r\n });\r\n }\r\n\r\n function getUId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/uid',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.uid = data.id;\r\n currentValue.domain = data.domain;\r\n tmsUserID = data.id;\r\n currentDomain = data.domain;\r\n setCurrentValue(currentValue);\r\n idresolve(tmsUserID);\r\n }else{\r\n idresolve('MC4wLjAuMA==');\r\n }\r\n }).catch(ex=>{ idresolve('MC4wLjAuMA=='); });\r\n }catch(ex){ idresolve('MC4wLjAuMA=='); }\r\n });\r\n }\r\n\r\n function updateScore(isInit,forcedScoreToUpdate){\r\n let isHumanResult = isHuman();\r\n if(isHumanResult||isInit||forcedScoreToUpdate||suspectScore>0){ \r\n var hashValue = isInit&&!isHumanResult?getScoreFromLocal():getHash(forcedScoreToUpdate?forcedScoreToUpdate:suspectScore); \r\n if(hashValue==null||updateError<=0)return;\r\n let src = \"/tfp/\"+hashValue+'.png';\r\n var image = new Image();\r\n image.onload = function() {\r\n if(isImageMostlyBlack(image)){\r\n let curretValue = getCurrentValue();\r\n if(!curretValue.token||(curretValue.token&&curretValue.token!='UN')){\r\n {\r\n updateId().then(data=>{\r\n if(!curretValue.token)\r\n {\r\n curretValue.token='NA';\r\n setCurrentValue(curretValue);\r\n }\r\n }).catch(e=>{\r\n curretValue.token='UN';\r\n setCurrentValue(curretValue);\r\n });\r\n }\r\n }\r\n }else{\r\n\r\n }\r\n };\r\n image.onerror = function() {\r\n updateError--;\r\n let shareUrl = document.querySelector('meta[property=\"og:url\"]') ? document.querySelector('meta[property=\"og:url\"]').getAttribute(\"content\") : window.location.href;\r\n let domainExtractedMatch = shareUrl.match(/^(?:https?:\\/\\/)?(?:www\\.)?([^\\/]+)/i);\r\n let domainExtracted = domainExtractedMatch ? domainExtractedMatch[0] : null;\r\n if(domainExtracted!=null){\r\n image.src = domainExtracted+src;\r\n }\r\n };\r\n image.src = src;\r\n } \r\n }\r\n\r\n function updateScoreToLocal(){\r\n if(isHuman()){ \r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.hash = getHash(suspectScore);\r\n setCurrentValue(currentValue);\r\n }\r\n }\r\n\r\n function getScoreFromLocal(){\r\n let currentValue = getCurrentValue();\r\n let valueToSend = null;\r\n if(currentValue!=null&&currentValue.hash)\r\n {\r\n valueToSend = currentValue.hash;\r\n delete currentValue.hash;\r\n setCurrentValue(currentValue);\r\n }\r\n return valueToSend;\r\n }\r\n\r\n function getHash(suspectScoreDetected){\r\n let rgb = suspectScoreDetected==0?huristicAdaption(movements):[0,0,0];\r\n let score = suspectScoreDetected==0?rgbToGrayWight(rgb[0],rgb[1],rgb[2]):(suspectScoreDetected==1?1:-1); \r\n let id = tsm && tsm.id ?'U-'+ tsm.id : 'UN';\r\n return btoa(`${id}|${score}|${rgb[0]}|${rgb[1]}|${rgb[2]}|${suspectScoreDetected??0}`).replace(/[^A-z0-9\\.]/gi,'-e');\r\n }\r\n\r\n function getCurrentValue()\r\n {\r\n if(window.localStorage.getItem(\"TSM\")==null)return null;\r\n return JSON.parse(window.localStorage.getItem(\"TSM\"));\r\n }\r\n\r\n function suspectVPN(){\r\n let currentValue = getCurrentValue();\r\n let currentEventStreamID = getCurrentEventStreamID(); \r\n if(currentValue!=null&&currentEventStreamID!=null&&currentValue.uid&&btoa('U-'+atob(currentValue.uid))!=currentEventStreamID)return true;\r\n if(streamUserID!=null&&tmsUserID!=null&&btoa('U-'+atob(tmsUserID))!=atob(streamUserID))return true;\r\n return false;\r\n }\r\n\r\n function getCurrentEventStreamID(){\r\n if(window.localStorage.getItem(\"AGSTREAM\")==null)return null;\r\n return atob(window.localStorage.getItem(\"AGSTREAM\"))\r\n }\r\n\r\n function setCurrentValue(value)\r\n {\r\n window.localStorage.setItem(\"TSM\", JSON.stringify(value));\r\n return true;\r\n }\r\n\r\n function isImageMostlyBlack(image, opts = {}) {\r\n const threshold = opts.threshold ?? 20; // 0–255, max brightness to count as black\r\n const ratio = opts.ratio ?? 0.95; // fraction of pixels that must be black\r\n\r\n const w = image.naturalWidth;\r\n const h = image.naturalHeight;\r\n\r\n // Downscale to speed up: sample at most 200x200\r\n const maxSize = 200;\r\n const scale = Math.min(1, maxSize / Math.max(w, h));\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = Math.max(1, Math.floor(w * scale));\r\n canvas.height = Math.max(1, Math.floor(h * scale));\r\n const ctx = canvas.getContext('2d');\r\n\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n\r\n const { data, width, height } = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const totalPixels = width * height;\r\n\r\n let blackPixels = 0;\r\n for (let i = 0; i < data.length; i += 4) {\r\n const r = data[i];\r\n const g = data[i + 1];\r\n const b = data[i + 2];\r\n const a = data[i + 3];\r\n\r\n // Treat transparent pixels as non‑black (optional)\r\n if (a === 0) continue;\r\n\r\n // brightness via simple max channel\r\n const brightness = Math.max(r, g, b);\r\n\r\n if (brightness <= threshold) {\r\n blackPixels++;\r\n }\r\n }\r\n\r\n return blackPixels / totalPixels >= ratio;\r\n }\r\n\r\n let startPeriod = 5000;\r\n let startIndex = 10;\r\n let currentIndex = 0;\r\n\r\n function autoUpdate(isInit){\r\n updateScore(isInit);\r\n currentIndex++;\r\n if(currentIndex<startIndex)\r\n setTimeout(() => {\r\n autoUpdate(false); \r\n }, startPeriod*currentIndex);\r\n }\r\n\r\n function start(){\r\n autoUpdate(true);\r\n document.addEventListener('click',()=>{updateScore(false);});\r\n document.addEventListener('touchend',()=>{updateScore(false);}); \r\n window.addEventListener('beforeunload',()=>{updateScoreToLocal();});\r\n document.addEventListener(\"visibilitychange\", () => {\r\n if (document.visibilityState === \"hidden\") {\r\n updateScoreToLocal();\r\n }\r\n }); \r\n }\r\n\r\n function attachListener(){\r\n document.body.addEventListener('ag.tsm.valid',(e)=>{\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.token = e.detail.token;\r\n currentValue.id = e.detail.id;\r\n setCurrentValue(currentValue);\r\n });\r\n }\r\n\r\n function init(){\r\n tsm = getCurrentValue(); \r\n let tsmElement = document.getElementById('agTSM');\r\n if(tsmElement!=null){\r\n let tsmValue = JSON.parse(tsmElement.textContent);\r\n if(tsmValue!=null){\r\n if(tsm == null || !tsm.id){\r\n tmsUserID = tsm.id = tsmValue.id;\r\n setCurrentValue(tsm);\r\n }\r\n }\r\n }\r\n if(document && document.body && document.body!=null && document.body.hasAttribute('r-id')){\r\n attachListener();\r\n }\r\n else{\r\n suspectScore = getSuspectAutomationScore();\r\n defaultLimit = isTouchCapable()?2:20;\r\n if(tsm==null||!tsm.valid){\r\n onRecord();\r\n start();\r\n }\r\n\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n if(currentValue.count)currentValue.count++;\r\n else currentValue.count=1;\r\n if(currentValue.count<10)\r\n setCurrentValue(currentValue);\r\n\r\n window.addEventListener('ag.event.stream',(e)=>{\r\n streamUserID = e.detail.streamKey;\r\n if(suspectVPN()){\r\n updateScore(false,1);\r\n } \r\n }); \r\n if(window.agEvent){\r\n window.dispatchEvent(new CustomEvent('ag.event.stream.update'));\r\n }\r\n }\r\n }\r\n \r\n init();\r\n\r\n})();\r\n\r\n\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","lastPos","lastTime","movements","tsm","suspectScore","lastLength","defaultLimit","tmsUserID","streamUserID","currentDomain","updateError","recordMovement","x","y","now","Date","dx","dy","dt","velocity","Math","sqrt","push","length","shift","isHuman","limit","varying","some","m","arr","abs","nonLinear","irregular","updateScore","isInit","forcedScoreToUpdate","isHumanResult","hashValue","currentValue","getCurrentValue","valueToSend","hash","setCurrentValue","getScoreFromLocal","getHash","src","image","Image","onload","opts","threshold","ratio","w","naturalWidth","h","naturalHeight","maxSize","scale","min","max","canvas","document","createElement","width","floor","height","ctx","getContext","drawImage","data","getImageData","totalPixels","blackPixels","r","g","b","isImageMostlyBlack","curretValue","token","Promise","idresolve","idreject","fetch","method","then","res","json","id","uid","catch","ex","e","onerror","domainExtractedMatch","querySelector","getAttribute","window","location","href","match","domainExtracted","updateScoreToLocal","suspectScoreDetected","rgb","points","totalDx","totalDy","totalDt","totalDist","velocities","forEach","p","dist","avgVel","reduce","direction","atan2","round","PI","huristicAdaption","score","gray","rgbToGrayWight","btoa","replace","localStorage","getItem","JSON","parse","suspectVPN","currentEventStreamID","atob","value","setItem","stringify","currentIndex","autoUpdate","setTimeout","start","addEventListener","visibilityState","tsmElement","getElementById","tsmValue","textContent","body","hasAttribute","detail","navigator","webdriver","chrome","runtime","sendMessage","test","userAgent","languages","gl","softwareRenderers","debugInfo","getExtension","renderer","getParameter","UNMASKED_RENDERER_WEBGL","RENDERER","toLowerCase","includes","cdpDetected","Error","Object","defineProperty","get","key","storage","removeItem","primaryCookie","cookie","groups","cookieDate","yyyy","MM","dd","HH","mm","ss","fffff","currentDate","timeDiff","getTime","count","maxTouchPoints","domain","indexOf","getSuspectAutomationScore","msMaxTouchPoints","valid","clientX","clientY","t","touches","scrollX","scrollY","streamKey","agEvent","dispatchEvent","CustomEvent","init"],"sourceRoot":""}
1
+ {"version":3,"file":"tms.js","mappings":"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","sources":["webpack:///webpack/universalModuleDefinition","webpack:///./src/tms.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, () => {\nreturn ","(function(){\r\n \r\n \r\n let movements = [];\r\n\r\n let tsm = null;\r\n\r\n let lastPos;\r\n\r\n let lastTime;\r\n\r\n let suspectScore = 0;\r\n\r\n let lastLength = 0;\r\n\r\n let defaultLimit = 20;\r\n\r\n let tmsUserID = null;\r\n\r\n let streamUserID = null;\r\n\r\n let currentDomain = null;\r\n\r\n let isUserIDUpdated = false;\r\n\r\n let updateError = 2;\r\n\r\n const isTouchCapable = () => {\r\n return (\r\n 'ontouchstart' in window ||\r\n navigator.maxTouchPoints > 0 ||\r\n navigator.msMaxTouchPoints > 0 // For older IE\r\n );\r\n };\r\n \r\n function getSignature() {\r\n\r\n var singnatureSamples = movements.filter((x, i) => { return i < 16 });\r\n var signatureValue = singnatureSamples.reduce((x, y, i) => {\r\n return x + '|' + Math.round(y.dx + y.dy + y.dt + y.velocity);\r\n }, '');\r\n return btoa(signatureValue);\r\n }\r\n\r\n function recordMovement(x, y) {\r\n const now = Date.now();\r\n if (lastPos && lastTime) {\r\n const dx = x - lastPos.x;\r\n const dy = y - lastPos.y;\r\n const dt = now - lastTime;\r\n const distance = Math.sqrt(dx * dx + dy * dy);\r\n const velocity = distance / dt;\r\n movements.push({ dx, dy, dt, velocity });\r\n if(movements.length>100)movements.shift();\r\n }\r\n lastPos = { x, y };\r\n lastTime = now;\r\n }\r\n\r\n function huristicAdaption(points) {\r\n let totalDx = 0, totalDy = 0, totalDt = 0;\r\n let totalDist = 0;\r\n let velocities = [];\r\n points.forEach(p => {\r\n totalDx += p.dx;\r\n totalDy += p.dy;\r\n totalDt += p.dt;\r\n let dist = Math.sqrt(p.dx * p.dx + p.dy * p.dy);\r\n totalDist += dist;\r\n velocities.push(dist / (p.dt || 1e-5)); // avoid divide by zero\r\n });\r\n // Feature extraction\r\n let avgVel = velocities.length ? velocities.reduce((a, b) => a + b, 0) / velocities.length : 0;\r\n let direction = Math.atan2(totalDy, totalDx); // angle in radians, -π to π\r\n\r\n // Non-linear scaling and normalization\r\n // velocity: [0, max], direction: [-π, π], totalDist: scale as you wish\r\n let r = Math.round(255 * Math.min(1, avgVel / 5)); // scale velocity, or use other non-linear (logistic, sqrt, etc)\r\n let g = Math.round(255 * (direction + Math.PI) / (2 * Math.PI)); // normalize angle to [0,1]\r\n let b = Math.round(255 * Math.min(1, totalDist / 100)); // scale total distance, or another feature\r\n\r\n return [r, g, b];\r\n }\r\n\r\n\r\n function rgbToGrayWight(r, g, b) {\r\n const gray = 0.299 * r + 0.587 * g + 0.114 * b; // Accurate grayscale\r\n return Math.round(gray / 255 * 100); // Scale to 0-100\r\n }\r\n\r\n\r\n\r\n\r\n function onRecord()\r\n {\r\n document.addEventListener(\"mousemove\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"mousedown\", e => recordMovement(e.clientX, e.clientY));\r\n document.addEventListener(\"touchstart\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchend\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"touchmove\", e => {\r\n const t = e.touches[0];\r\n if(t && t.clientX)\r\n recordMovement(t.clientX, t.clientY);\r\n });\r\n\r\n document.addEventListener(\"scroll\", e=>{ \r\n recordMovement(window.scrollX, window.scrollY);\r\n });\r\n }\r\n\r\n function getSuspectAutomationScore(){\r\n if(navigator.webdriver|| window.chrome?.runtime?.sendMessage ||/HeadlessChrome|Chrome-Lighthouse/i.test(navigator.userAgent))return 1000;\r\n if(navigator.languages?.length==0)return 500;\r\n try {\r\n const canvas = document.createElement('canvas');\r\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\r\n const softwareRenderers = ['SwiftShader', 'llvmpipe', 'softpipe', 'swrast', 'Basic Render Driver'];\r\n if (gl) {\r\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\r\n const renderer = debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : gl.getParameter(gl.RENDERER); \r\n if (softwareRenderers.some(r=>renderer.toLowerCase().includes(r.toLowerCase()))) {\r\n return 700;\r\n }\r\n }\r\n } catch (e) { \r\n }\r\n let cdpDetected = false;\r\n const e = new Error();\r\n Object.defineProperty(e, 'stack', {\r\n get() {\r\n cdpDetected = true;\r\n }\r\n });\r\n if(cdpDetected)\r\n return 500;\r\n\r\n \r\n try {\r\n const key = '__ls_test__';\r\n const storage = window.localStorage;\r\n storage.setItem(key, '1');\r\n storage.removeItem(key);\r\n } catch (e) { \r\n return 300;\r\n }\r\n\r\n let primaryCookie = document.cookie.match(('AGID\\s?\\=\\s?(?<MM>\\\\d{2})(?<dd>\\\\d{2})(?<yyyy>\\\\d{4})(?<HH>\\\\d{2})(?<mm>\\\\d{2})(?<ss>\\\\d{2})(?<fffff>\\\\d{5})'));\r\n if(!primaryCookie || primaryCookie==null || !primaryCookie.groups) return 300;\r\n let cookieDate = new Date(Date.parse(`${primaryCookie.groups.yyyy}-${primaryCookie.groups.MM}-${primaryCookie.groups.dd}T${primaryCookie.groups.HH}:${primaryCookie.groups.mm}:${primaryCookie.groups.ss}.${primaryCookie.groups.fffff}Z`));\r\n let currentDate = new Date();\r\n let timeDiff = Math.abs(currentDate.getTime() - cookieDate.getTime()); \r\n let currentValue = getCurrentValue();\r\n if(timeDiff>10*1000&&(currentValue==null||!currentValue.count))return 300; \r\n //if(!(window.innerWidth==window.outerWidth&&window.innerHeight==window.outerHeight))return 400;\r\n if(!('ontouchstart' in window)&&navigator.maxTouchPoints>0)return 400; \r\n if((currentValue!=null&&currentValue.domain&&window.location.indexOf(currentValue.domain)==-1)||(currentDomain!=null&&window.location.indexOf(currentDomain)==-1))return 101;\r\n if(suspectVPN())return 100; \r\n return 0;\r\n }\r\n\r\n function isHuman(limit) {\r\n if(suspectScore>0)limit = suspectScore;\r\n if (movements.length - lastLength < (limit?limit:defaultLimit)) return false;\r\n lastLength = movements.length - 1;\r\n let varying = movements.some((m, i, arr) => i > 0 && (Math.abs(m.velocity - arr[i - 1].velocity) > 0.05));\r\n let nonLinear = movements.some((m, i, arr) => i > 1 && (Math.abs(m.dx - arr[i - 1].dx) > 0.1 || Math.abs(m.dy - arr[i - 1].dy) > 0.1));\r\n let irregular = movements.some(m => m.dt > 50 && m.dt < 500); \r\n return varying && nonLinear && irregular;\r\n }\r\n\r\n function halucinateClient(){\r\n //updateScore(false,-1);\r\n }\r\n\r\n function updateId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/id',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.id = data.id;\r\n currentValue.uid = data.id;\r\n tmsUserID = data.id;\r\n setCurrentValue(currentValue);\r\n idresolve(data.id);\r\n }else{\r\n halucinateClient();\r\n idreject();\r\n }\r\n }).catch(ex=>{ halucinateClient();idreject();});\r\n }catch(ex){ halucinateClient();idreject(); }\r\n });\r\n }\r\n\r\n function getUId(){\r\n return new Promise((idresolve,idreject)=>{\r\n try{\r\n fetch('/traffic/uid',{method:'GET'}).then(res=>res.json()).then(data=>{\r\n if(data && data.id){\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.uid = data.id;\r\n currentValue.domain = data.domain;\r\n tmsUserID = data.id;\r\n currentDomain = data.domain;\r\n setCurrentValue(currentValue);\r\n idresolve(tmsUserID);\r\n }else{\r\n idresolve('MC4wLjAuMA==');\r\n }\r\n }).catch(ex=>{ idresolve('MC4wLjAuMA=='); });\r\n }catch(ex){ idresolve('MC4wLjAuMA=='); }\r\n });\r\n }\r\n\r\n function updateScore(isInit,forcedScoreToUpdate){\r\n let isHumanResult = isHuman();\r\n if(isHumanResult||isInit||forcedScoreToUpdate||suspectScore>0){ \r\n var hashValue = isInit&&!isHumanResult?getScoreFromLocal():getHash(forcedScoreToUpdate?forcedScoreToUpdate:suspectScore); \r\n if(hashValue==null||updateError<=0)return;\r\n let src = \"/tfp/\"+hashValue+'.png';\r\n var image = new Image();\r\n image.onload = function() {\r\n if(isImageMostlyBlack(image)){\r\n let curretValue = getCurrentValue();\r\n if(!curretValue.token||(curretValue.token&&curretValue.token!='UN')){\r\n {\r\n updateId().then(data=>{\r\n if(!curretValue.token)\r\n {\r\n curretValue.token='NA';\r\n setCurrentValue(curretValue);\r\n }\r\n }).catch(e=>{\r\n curretValue.token='UN';\r\n setCurrentValue(curretValue);\r\n });\r\n }\r\n }\r\n }else{\r\n\r\n }\r\n };\r\n image.onerror = function() {\r\n if(updateError<=0) return;\r\n updateError--; \r\n let shareUrl = document.querySelector('meta[property=\"og:url\"]') ? document.querySelector('meta[property=\"og:url\"]').getAttribute(\"content\") : window.location.href;\r\n let domainExtractedMatch = shareUrl.match(/^(?:https?:\\/\\/)?(?:www\\.)?([^\\/]+)/i);\r\n let domainExtracted = domainExtractedMatch ? domainExtractedMatch[0] : null;\r\n if(domainExtracted!=null){\r\n image.src = domainExtracted+src;\r\n }\r\n };\r\n image.src = src;\r\n } \r\n }\r\n\r\n function updateScoreToLocal(){\r\n if(isHuman()){ \r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.hash = getHash(suspectScore);\r\n setCurrentValue(currentValue);\r\n }\r\n }\r\n\r\n function getScoreFromLocal(){\r\n let currentValue = getCurrentValue();\r\n let valueToSend = null;\r\n if(currentValue!=null&&currentValue.hash)\r\n {\r\n valueToSend = currentValue.hash;\r\n delete currentValue.hash;\r\n setCurrentValue(currentValue);\r\n }\r\n return valueToSend;\r\n }\r\n\r\n function getHash(suspectScoreDetected){\r\n let rgb = suspectScoreDetected==0?huristicAdaption(movements):[0,0,0];\r\n let score = suspectScoreDetected==0?rgbToGrayWight(rgb[0],rgb[1],rgb[2]):(suspectScoreDetected==1?1:-1); \r\n let id = tsm && tsm.id ?'U-'+ tsm.id : 'UN';\r\n return btoa(`${id}|${score}|${rgb[0]}|${rgb[1]}|${rgb[2]}|${suspectScoreDetected??0}`).replace(/[^A-z0-9\\.]/gi,'-e');\r\n }\r\n\r\n function getCurrentValue()\r\n {\r\n if(window.localStorage.getItem(\"TSM\")==null)return null;\r\n return JSON.parse(window.localStorage.getItem(\"TSM\"));\r\n }\r\n\r\n function suspectVPN(){\r\n let currentValue = getCurrentValue();\r\n let currentEventStreamID = getCurrentEventStreamID(); \r\n if(currentValue!=null&&currentEventStreamID!=null&&currentValue.uid&&btoa('U-'+atob(currentValue.uid))!=currentEventStreamID)return true;\r\n if(streamUserID!=null&&tmsUserID!=null&&btoa('U-'+atob(tmsUserID))!=atob(streamUserID))return true;\r\n return false;\r\n }\r\n\r\n function getCurrentEventStreamID(){\r\n if(window.localStorage.getItem(\"AGSTREAM\")==null)return null;\r\n return atob(window.localStorage.getItem(\"AGSTREAM\"))\r\n }\r\n\r\n function setCurrentValue(value)\r\n {\r\n window.localStorage.setItem(\"TSM\", JSON.stringify(value));\r\n return true;\r\n }\r\n\r\n function isImageMostlyBlack(image, opts = {}) {\r\n const threshold = opts.threshold ?? 20; // 0–255, max brightness to count as black\r\n const ratio = opts.ratio ?? 0.95; // fraction of pixels that must be black\r\n\r\n const w = image.naturalWidth;\r\n const h = image.naturalHeight;\r\n\r\n // Downscale to speed up: sample at most 200x200\r\n const maxSize = 200;\r\n const scale = Math.min(1, maxSize / Math.max(w, h));\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = Math.max(1, Math.floor(w * scale));\r\n canvas.height = Math.max(1, Math.floor(h * scale));\r\n const ctx = canvas.getContext('2d');\r\n\r\n ctx.drawImage(image, 0, 0, canvas.width, canvas.height);\r\n\r\n const { data, width, height } = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n const totalPixels = width * height;\r\n\r\n let blackPixels = 0;\r\n for (let i = 0; i < data.length; i += 4) {\r\n const r = data[i];\r\n const g = data[i + 1];\r\n const b = data[i + 2];\r\n const a = data[i + 3];\r\n\r\n // Treat transparent pixels as non‑black (optional)\r\n if (a === 0) continue;\r\n\r\n // brightness via simple max channel\r\n const brightness = Math.max(r, g, b);\r\n\r\n if (brightness <= threshold) {\r\n blackPixels++;\r\n }\r\n }\r\n\r\n return blackPixels / totalPixels >= ratio;\r\n }\r\n\r\n let startPeriod = 5000;\r\n let startIndex = 10;\r\n let currentIndex = 0;\r\n\r\n function autoUpdate(isInit){\r\n updateScore(isInit);\r\n currentIndex++;\r\n if(currentIndex<startIndex)\r\n setTimeout(() => {\r\n autoUpdate(false); \r\n }, startPeriod*currentIndex);\r\n }\r\n\r\n function start(){\r\n autoUpdate(true);\r\n document.addEventListener('click',()=>{updateScore(false);});\r\n document.addEventListener('touchend',()=>{updateScore(false);}); \r\n window.addEventListener('beforeunload',()=>{updateScoreToLocal();});\r\n document.addEventListener(\"visibilitychange\", () => {\r\n if (document.visibilityState === \"hidden\") {\r\n updateScoreToLocal();\r\n }\r\n }); \r\n }\r\n\r\n function attachListener(){\r\n document.body.addEventListener('ag.tsm.valid',(e)=>{\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n currentValue.token = e.detail.token;\r\n currentValue.id = e.detail.id;\r\n setCurrentValue(currentValue);\r\n });\r\n }\r\n\r\n function init(){\r\n tsm = getCurrentValue(); \r\n let tsmElement = document.getElementById('agTSM');\r\n if(tsmElement!=null){\r\n let tsmValue = JSON.parse(tsmElement.textContent);\r\n if(tsmValue!=null){\r\n if(tsm == null || !tsm.id){\r\n tmsUserID = tsm.id = tsmValue.id;\r\n setCurrentValue(tsm);\r\n }\r\n }\r\n }\r\n if(document && document.body && document.body!=null && document.body.hasAttribute('r-id')){\r\n attachListener();\r\n }\r\n else{\r\n suspectScore = getSuspectAutomationScore();\r\n defaultLimit = isTouchCapable()?2:20;\r\n if(tsm==null||!tsm.valid){\r\n onRecord();\r\n start();\r\n }\r\n\r\n let currentValue = getCurrentValue();\r\n if(currentValue==null)currentValue={};\r\n if(currentValue.count)currentValue.count++;\r\n else currentValue.count=1;\r\n if(currentValue.count<10)\r\n setCurrentValue(currentValue);\r\n\r\n window.addEventListener('ag.event.stream',(e)=>{\r\n streamUserID = e.detail.streamKey;\r\n if(suspectVPN()){\r\n suspectScore = getSuspectAutomationScore();\r\n updateScore(false,1);\r\n } \r\n }); \r\n if(window.agEvent){\r\n window.dispatchEvent(new CustomEvent('ag.event.stream.update'));\r\n }\r\n }\r\n }\r\n \r\n init();\r\n\r\n})();\r\n\r\n\r\n"],"names":["root","factory","exports","module","define","amd","a","i","self","lastPos","lastTime","movements","tsm","suspectScore","lastLength","defaultLimit","tmsUserID","streamUserID","currentDomain","updateError","recordMovement","x","y","now","Date","dx","dy","dt","velocity","Math","sqrt","push","length","shift","getSuspectAutomationScore","navigator","webdriver","window","chrome","runtime","sendMessage","test","userAgent","languages","canvas","document","createElement","gl","getContext","softwareRenderers","debugInfo","getExtension","renderer","getParameter","UNMASKED_RENDERER_WEBGL","RENDERER","some","r","toLowerCase","includes","e","cdpDetected","Error","Object","defineProperty","get","key","storage","localStorage","setItem","removeItem","primaryCookie","cookie","match","groups","cookieDate","parse","yyyy","MM","dd","HH","mm","ss","fffff","currentDate","timeDiff","abs","getTime","currentValue","getCurrentValue","count","maxTouchPoints","domain","location","indexOf","suspectVPN","isHuman","limit","varying","m","arr","nonLinear","irregular","updateScore","isInit","forcedScoreToUpdate","isHumanResult","hashValue","valueToSend","hash","setCurrentValue","getScoreFromLocal","getHash","src","image","Image","onload","opts","threshold","ratio","w","naturalWidth","h","naturalHeight","maxSize","scale","min","max","width","floor","height","ctx","drawImage","data","getImageData","totalPixels","blackPixels","g","b","isImageMostlyBlack","curretValue","token","Promise","idresolve","idreject","fetch","method","then","res","json","id","uid","catch","ex","onerror","domainExtractedMatch","querySelector","getAttribute","href","domainExtracted","updateScoreToLocal","suspectScoreDetected","rgb","points","totalDx","totalDy","totalDt","totalDist","velocities","forEach","p","dist","avgVel","reduce","direction","atan2","round","PI","huristicAdaption","score","gray","rgbToGrayWight","btoa","replace","getItem","JSON","currentEventStreamID","atob","value","stringify","currentIndex","autoUpdate","setTimeout","start","addEventListener","visibilityState","tsmElement","getElementById","tsmValue","textContent","body","hasAttribute","detail","msMaxTouchPoints","valid","clientX","clientY","t","touches","scrollX","scrollY","streamKey","agEvent","dispatchEvent","CustomEvent","init"],"sourceRoot":""}