@anonympins/fingerprint 0.2.4 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,10 +27,10 @@ The process unfolds in three steps:
27
27
  * **Request Patterns**: Repetitive, rapid-fire, or sequential requests typical of scraping bots. The parameters for detecting these patterns (e.g., request velocity, burst detection) are dynamically adjusted by the auto-tuner for optimal performance.
28
28
  * **Honeypot Trap**: Detection of bots that automatically fill hidden form fields or probe for common but unused URL parameters (e.g., `?debug=true`).
29
29
  * **TLS Fingerprint Spoofing**: Detects inconsistencies between the TLS fingerprint (JA3/JA4) and other HTTP headers (e.g., User-Agent), indicating an attempt to disguise the client.
30
- 3. **Dynamic Challenge**: If the suspicion score exceeds a certain threshold, a challenge is presented to the user. The difficulty and type of challenge depend on the score:
30
+ 3. **Dynamic Challenge**: If the suspicion score exceeds a certain threshold, a challenge is presented. The difficulty and type of challenge depend on the score:
31
31
  * **Low to Medium Suspicion**: A combined **CPU and Memory Proof-of-Work (PoW)** challenge is issued. The difficulty of both the CPU (hash calculation) and Memory (allocation and computation) components scales progressively with the suspicion score. For low scores, the memory challenge is negligible, making it primarily a CPU task.
32
- * **High Suspicion**: For the most suspicious requests, the system issues a high-difficulty combined CPU/Memory challenge. The architecture allows for plugging in more complex challenges like CAPTCHAs if needed.
33
- * **New Devices**: To increase the cost for bots that simply clear their cookies, new (unseen) devices are systematically presented with a minimal, almost imperceptible challenge on their first visit, even if their suspicion score is low.
32
+ * **High Suspicion**: For the most suspicious requests, the system issues a high-difficulty combined CPU/Memory challenge or a "Useful Proof-of-Work" task (see below). The architecture allows for plugging in more complex challenges like CAPTCHAs if needed.
33
+ * **New Devices**: To increase the cost for bots that simply clear their cookies, new (unseen) devices are systematically presented with a minimal, almost imperceptible challenge on their first visit. This behavior is enabled by default in `strict` and `ecommerce` profiles and can be configured with the `challengeNewDevices` option.
34
34
 
35
35
  Once the challenge is solved, a clearance "ticket" is issued via a secure cookie, exempting the user from new challenges. The duration of this ticket is dynamic:
36
36
  - **Probationary Ticket**: If the request was moderately suspicious, a very short-lived "probationary" ticket (e.g., 30 seconds) is issued. This forces the client to be re-evaluated quickly, increasing security.
@@ -43,21 +43,104 @@ For API clients, the challenge is delivered as a `404` JSON response, and the cl
43
43
  - **Multi-Factor Fingerprinting**: Combines client-side data (`hardwareConcurrency`, `deviceMemory`, `screen`, `canvas`, `webgl`) and server-side data (`User-Agent`, `Client-Hints`).
44
44
  - **Secure Ticket System**: Uses HMAC-SHA256 signatures to validate clearances and prevent tampering.
45
45
  - **Pluggable Datastore**: Supports external datastores like Redis for state persistence and scalability across multiple server instances.
46
- - **Express.js Middleware**: Easy integration into an Express application with `powMiddleware`. The datastore must support setting a Time-To-Live (TTL) for challenge secrets.
46
+ - **Express.js Middleware**: Easy integration into an Express application with `powMiddleware`.
47
47
  - **Timing Attack Protection**: Uses `crypto.timingSafeEqual` for secure validation of tickets and other signatures.
48
48
  - **Bot Whitelisting**: Includes a DNS-based verification mechanism to reliably identify and whitelist legitimate crawlers like Googlebot and Bingbot, preventing them from being challenged. The results are cached for optimal performance.
49
- - **Automatic Parameter Tuning**: Includes a genetic algorithm-based optimizer (`startThresholdAutoTuning`) that analyzes real traffic to dynamically adjust not only suspicion thresholds (`low`, `medium`, `high`) but also the parameters for behavioral pattern detection, improving accuracy and reducing false positives over time.
49
+ - **Automatic Parameter Tuning**: Includes a genetic algorithm-based optimizer (`startThresholdAutoTuning`) that analyzes real traffic to dynamically adjust suspicion thresholds, weights, and behavioral pattern detection parameters, improving accuracy and reducing false positives over time. The tuner is hardened against data poisoning attempts.
50
+ - **Hardened Security**: Protects against various attacks, including DoS via memory exhaustion, invalid nonce submission, and uses cryptographically secure randomness for all sensitive operations.
50
51
 
51
52
  ## Installation and Usage
52
53
 
53
- This module is designed for a Node.js environment.
54
+ This library is available for both **Node.js** and **PHP**.
55
+
56
+ * [Node.js (Express) Quickstart](#nodejs-express)
57
+ * [PHP Quickstart](#php)
58
+ * [PHP Quickstart (Direct Integration)](#php-quickstart-direct-integration)
59
+ * [PHP Quickstart (PSR-15 Middleware)](#php-quickstart-psr-15-middleware)
54
60
 
55
61
  ### Prerequisites
56
62
 
57
- Ensure you have middleware for parsing cookies (like `cookie-parser`) and request bodies (like `express.json` and `express.urlencoded`) set up in your Express application *before* the `powMiddleware`.
63
+ * **PHP 7.4+**
64
+ * The **GMP** extension (`php-gmp`) is required for handling the large-integer arithmetic used in cryptographic challenges.
65
+ * **Composer** for package management.
66
+
67
+ ---
68
+
69
+ ### Prerequisites
70
+
71
+ ## PHP Quickstart (Direct Integration)
72
+
73
+ This guide shows the simplest way to integrate the library into any PHP application, without requiring a framework. It interacts directly with PHP's native functions and superglobals.
74
+
75
+ ### Prerequisites
76
+
77
+ * **PHP 7.4+**
78
+ * The **GMP** extension (`php-gmp`) is required for handling the large-integer arithmetic used in cryptographic challenges.
79
+ * **Composer** for package management.
80
+
81
+ ### Installation
82
+
83
+ Install the main library via Composer:
84
+
85
+ ```bash
86
+ composer require anonympins/fingerprint
87
+ ```
58
88
 
59
89
  ### Configuration
60
90
 
91
+ Define a secret key for signing Proof-of-Work tickets in your environment variables or your `.env` file. This is **required** for production environments.
92
+
93
+ ```bash
94
+ POW_SECRET="your_secret_key_of_at_least_32_characters"
95
+ ```
96
+
97
+ ### Integration Example
98
+
99
+ This example shows how to protect an application's entry point (e.g., `index.php`) by calling the `protect()` method at the very beginning of your script.
100
+
101
+ ```php
102
+ <?php
103
+
104
+ declare(strict_types=1);
105
+
106
+ require_once __DIR__ . '/vendor/autoload.php';
107
+
108
+ use Anonympins\Fingerprint\Config\SecurityProfiles;
109
+ use Anonympins\Fingerprint\DirectFingerprint;
110
+
111
+ // 1. Choose a security profile and customize it if necessary.
112
+ $securityConfig = SecurityProfiles::createSecurityProfile('balanced', [
113
+ // Enable verbose mode for development
114
+ 'verbose' => true,
115
+ ]);
116
+
117
+ // 2. Create an instance of the DirectFingerprint protector.
118
+ $protector = new DirectFingerprint($securityConfig);
119
+
120
+ // 3. Protect the script.
121
+ // This method will analyze the request. If it's suspicious, it will
122
+ // send a challenge or block response and then call `exit()`.
123
+ // If the request is allowed, it returns the fingerprint data.
124
+ $fingerprint = $protector->protect();
125
+
126
+ // --- If the script continues, the request was allowed ---
127
+
128
+ $score = $fingerprint['score'] ?? 0;
129
+
130
+ header('Content-Type: text/html; charset=utf-8');
131
+ echo "<h1>Welcome to the protected page!</h1>";
132
+ echo "<p>Your suspicion score was: " . round($score, 2) . "</p>";
133
+
134
+ ?>
135
+ ```
136
+
137
+ ### [NodeJS Configuration](nodejs-express)
138
+
139
+ #### Prerequisites for Node.js
140
+
141
+ Ensure you have middleware for parsing cookies (like `cookie-parser`) and request bodies (like `express.json` and `express.urlencoded`) set up in your Express application *before* the `powMiddleware`.
142
+
143
+ #### Configuration
61
144
  Define a secret key for signing PoW tickets in your environment variables.
62
145
 
63
146
  ```bash
@@ -135,7 +218,7 @@ app.listen(3000, () => console.log('Server started on port 3000'));
135
218
 
136
219
  ### Full Configuration Example
137
220
 
138
- If you prefer to define the entire configuration manually instead of using a profile, you can create a `securityConfig` object with all the parameters. All parameters are optional.
221
+ If you prefer to define the entire configuration manually instead of using a profile, you can create a `securityConfig` object with all the parameters. All parameters are optional, but it is highly recommended to review and adjust them for your specific needs. The engine will warn you about any unknown keys in this configuration, helping you catch typos.
139
222
 
140
223
  ```javascript
141
224
  import { default_whitelist, default_analyzers } from './fingerprint.js';
@@ -249,6 +332,11 @@ const securityConfig = {
249
332
  '/api/v1/webhooks/trusted-source', // Exact path
250
333
  '/api/v2/public/*', // All paths starting with /api/v2/public/
251
334
  ]},
335
+
336
+ // Allows a specific GraphQL query and all mutations•
337
+ {type: 'graphql_operation_allowlist',entries: [
338
+ 'query:GetPublicPosts',
339
+ 'mutation:*']},
252
340
  // Option 2: DNS-verified bots (e.g., search engine crawlers).
253
341
  // This uses a secure DNS lookup (reverse then forward) to verify the bot's identity.
254
342
  // The result is cached per IP to avoid repeated DNS lookups.
@@ -270,7 +358,8 @@ const securityConfig = {
270
358
  maxDataPoints: 20000 // Minimum requests before starting an optimization cycle.
271
359
  },
272
360
  // Enables problem solving for suspicious activity (configurable in problems.config.json)
273
- enableUsefulWork: true
361
+ enableUsefulWork: true,
362
+ usefulWorkConfigPath: './path/to/your/problems.config.json' // (Optional) Path to the useful work configuration.
274
363
  };
275
364
  ```
276
365
 
@@ -613,9 +702,9 @@ The engine is a named export from the main module.
613
702
 
614
703
  ### Useful Proof-of-Work (`ProblemManager`)
615
704
 
616
- Instead of issuing a generic Proof-of-Work, the system can dispatch a "useful" computational problem to a suspicious client. This allows harnessing the client's CPU cycles to solve complex problems (like optimization tasks) over time. This feature is managed by the `ProblemManager` class, which is enabled via the `enableUsefulWork: true` flag in the security configuration.
705
+ Instead of issuing a generic Proof-of-Work, the system can dispatch a "useful" computational problem to a suspicious client. This allows harnessing the client's CPU cycles to solve complex problems (like optimization tasks) over time. This feature is managed by the `ProblemManager` class, which is enabled via the `enableUsefulWork: true` flag in the security configuration. The state of these problems is persisted via the configured datastore, allowing a cluster of servers to collaborate on solving them.
617
706
 
618
- The `ProblemManager` reads its configuration from `problems.config.json`, which defines the problems to be solved, the type of work units, and the current state of the solutions.
707
+ The `ProblemManager` reads its configuration asynchronously from `problems.config.json`, which defines the problems to be solved, the type of work units, and the initial state of the solutions.
619
708
 
620
709
  While you typically won't interact with it directly, its methods are exported and can be used for monitoring or manual administration. The main instance is exported as `problemManager`.
621
710
 
@@ -0,0 +1 @@
1
+ const _0x36a6f6=_0x3ded;(function(_0xd469c7,_0x539490){const _0x2197dc=_0x3ded,_0x1c4904=_0xd469c7();while(!![]){try{const _0x5bb030=-parseInt(_0x2197dc(0x196))/0x1*(parseInt(_0x2197dc(0xc2))/0x2)+-parseInt(_0x2197dc(0xe0))/0x3+parseInt(_0x2197dc(0x199))/0x4*(parseInt(_0x2197dc(0x169))/0x5)+-parseInt(_0x2197dc(0xfd))/0x6+-parseInt(_0x2197dc(0x19c))/0x7+-parseInt(_0x2197dc(0x177))/0x8*(parseInt(_0x2197dc(0x12b))/0x9)+parseInt(_0x2197dc(0x10f))/0xa;if(_0x5bb030===_0x539490)break;else _0x1c4904['push'](_0x1c4904['shift']());}catch(_0x114096){_0x1c4904['push'](_0x1c4904['shift']());}}}(_0x1767,0x8b1d5));import{cyrb53,FingerprintBuilder}from'./fingerprint.builder.js';import{solveChallenge}from'./pow.solver.js';const ClientLibrary={'_cachedBuilder':null,'getDeviceFingerprint'(){const _0x1702f1=_0x3ded,_0x206c6={'cULNl':_0x1702f1(0xdf),'VzKMM':'#f60','pTLFs':'fingerprint','JhsGL':_0x1702f1(0x16d),'jFsJk':function(_0x3ae839,_0x3e3e21){return _0x3ae839>=_0x3e3e21;},'MOqXj':'X-Device-Fingerprint','HYzKb':_0x1702f1(0x174),'ShXUn':_0x1702f1(0x120),'fDyok':function(_0x1b1506,_0x2cb101){return _0x1b1506===_0x2cb101;},'JGbxj':_0x1702f1(0xbd),'QAfih':function(_0xb2c742,_0x2a9037){return _0xb2c742===_0x2a9037;},'ZPEDq':_0x1702f1(0x166),'CqBVe':_0x1702f1(0xdb),'ZJikv':_0x1702f1(0x195),'SMoNd':_0x1702f1(0x12d),'ludee':_0x1702f1(0x11d),'qEBDQ':_0x1702f1(0x18c),'DHlHG':function(_0x2648f4,_0x32ef13){return _0x2648f4!==_0x32ef13;},'poDMc':_0x1702f1(0x183),'GXVFN':_0x1702f1(0x151),'djlzo':_0x1702f1(0x110),'TpGlv':_0x1702f1(0x143),'Dszxr':'cvs','WFqZN':_0x1702f1(0x19b),'nmBda':_0x1702f1(0xce),'KhHvl':_0x1702f1(0xed),'GvfQC':_0x1702f1(0x14e),'FkIBk':'EAwSu','ozxdT':_0x1702f1(0xc6),'zMAjP':'true'};if(_0x206c6[_0x1702f1(0x113)](typeof window,_0x206c6[_0x1702f1(0x158)])){if(_0x206c6[_0x1702f1(0x112)](_0x1702f1(0x19d),_0x1702f1(0x19d)))return console[_0x1702f1(0xf2)](_0x206c6[_0x1702f1(0x129)]),'';else{const _0x58ba0a=_0x481887['createElement'](_0x1702f1(0xdb)),_0x21dd30=_0x58ba0a['getContext']('2d');if(_0x21dd30){const _0x5968d1=_0x206c6['cULNl']['split']('|');let _0x5e1339=0x0;while(!![]){switch(_0x5968d1[_0x5e1339++]){case'0':this[_0x1702f1(0xc7)]['add']('cvs',_0x58ba0a['toDataURL']());continue;case'1':_0x58ba0a['height']=0x32;continue;case'2':_0x21dd30[_0x1702f1(0x1a7)]='rgba(102,\x20204,\x200,\x200.7)';continue;case'3':_0x58ba0a[_0x1702f1(0x173)]=0xc8;continue;case'4':_0x21dd30['fillStyle']=_0x206c6[_0x1702f1(0x13a)];continue;case'5':_0x21dd30['fillStyle']='#069';continue;case'6':_0x21dd30[_0x1702f1(0x15e)](_0x1702f1(0x153),0x4,0x11);continue;case'7':_0x21dd30[_0x1702f1(0x1ae)]='alphabetic';continue;case'8':_0x21dd30[_0x1702f1(0x15e)](_0x206c6[_0x1702f1(0x19f)],0x2,0xf);continue;case'9':_0x21dd30[_0x1702f1(0x13b)]=_0x206c6[_0x1702f1(0x15b)];continue;case'10':_0x21dd30[_0x1702f1(0x132)](0x7d,0x1,0x3e,0x14);continue;}break;}}}}if(!this[_0x1702f1(0xc7)]){const _0x300990=window[_0x1702f1(0x172)],_0x223aa0=window[_0x1702f1(0x181)];this[_0x1702f1(0xc7)]=new FingerprintBuilder(),this['_cachedBuilder'][_0x1702f1(0xd9)]('hw',_0x300990[_0x1702f1(0x101)]+'_'+_0x300990[_0x1702f1(0x108)]+'_'+_0x300990[_0x1702f1(0x145)]),this[_0x1702f1(0xc7)]['add']('geo',Intl[_0x1702f1(0xe8)]()[_0x1702f1(0x16b)]()[_0x1702f1(0xff)]+'_'+_0x300990['language']+'_'+new Date()[_0x1702f1(0x123)]()),this[_0x1702f1(0xc7)][_0x1702f1(0xd9)](_0x1702f1(0x17b),_0x223aa0[_0x1702f1(0x173)]+'x'+_0x223aa0[_0x1702f1(0x19a)]+'_'+_0x223aa0['colorDepth']),this[_0x1702f1(0xc7)][_0x1702f1(0xd9)]('os',_0x300990[_0x1702f1(0x150)]);try{const _0x1821c6=document['createElement'](_0x206c6['CqBVe']),_0x15d87e=_0x1821c6[_0x1702f1(0x178)](_0x206c6[_0x1702f1(0x1a8)])||_0x1821c6[_0x1702f1(0x178)](_0x1702f1(0x176));if(_0x15d87e){const _0x1c97ce=_0x15d87e['getExtension'](_0x206c6[_0x1702f1(0xd6)]);if(_0x1c97ce){if(_0x206c6['fDyok'](_0x206c6[_0x1702f1(0x1a2)],_0x206c6[_0x1702f1(0x146)]))_0x206c6[_0x1702f1(0x180)](_0xde990b[_0x1702f1(0xf0)],_0x2a29f7)&&_0x49e695[_0x1702f1(0xf8)](),_0x9066e8[_0x1702f1(0x126)](_0x36aa17);else{const _0x226d11=_0x15d87e[_0x1702f1(0x106)](_0x1c97ce[_0x1702f1(0x133)]),_0x2693d4=_0x15d87e[_0x1702f1(0x106)](_0x1c97ce[_0x1702f1(0x131)]);this[_0x1702f1(0xc7)][_0x1702f1(0xd9)](_0x206c6[_0x1702f1(0xde)],_0x226d11+'_'+_0x2693d4);}}}}catch(_0x25780a){}try{const _0x229958=document[_0x1702f1(0x139)](_0x1702f1(0xdb)),_0x3630a7=_0x229958['getContext']('2d');if(_0x3630a7){if(_0x206c6[_0x1702f1(0x107)](_0x206c6['poDMc'],_0x206c6[_0x1702f1(0x11f)])){const _0x5b6782=this[_0x1702f1(0x13f)](),_0x3937e1=this['getClientBehaviorMetrics'](),_0x16c4d2=new _0x66fa7a(_0x289c58[_0x1702f1(0xc5)]||{});_0x16c4d2[_0x1702f1(0x105)](_0x206c6[_0x1702f1(0xd2)],_0x5b6782),_0x16c4d2['set'](_0x206c6['HYzKb'],_0x2b30c3['stringify'](_0x3937e1)),_0x259285[_0x1702f1(0xc5)]=_0x16c4d2;}else{const _0xbd617b=_0x206c6['GXVFN'][_0x1702f1(0xda)]('|');let _0x1f4bdc=0x0;while(!![]){switch(_0xbd617b[_0x1f4bdc++]){case'0':_0x229958[_0x1702f1(0x173)]=0xc8;continue;case'1':_0x3630a7[_0x1702f1(0x1a7)]=_0x206c6['djlzo'];continue;case'2':_0x3630a7[_0x1702f1(0x1a7)]=_0x206c6[_0x1702f1(0x13a)];continue;case'3':_0x3630a7['fillRect'](0x7d,0x1,0x3e,0x14);continue;case'4':_0x3630a7[_0x1702f1(0x13b)]=_0x206c6[_0x1702f1(0x15b)];continue;case'5':_0x3630a7[_0x1702f1(0x1ae)]=_0x1702f1(0xdc);continue;case'6':_0x3630a7[_0x1702f1(0x1a7)]=_0x206c6[_0x1702f1(0xc4)];continue;case'7':this[_0x1702f1(0xc7)][_0x1702f1(0xd9)](_0x206c6[_0x1702f1(0x148)],_0x229958[_0x1702f1(0x18d)]());continue;case'8':_0x3630a7['fillText'](_0x206c6[_0x1702f1(0x19f)],0x2,0xf);continue;case'9':_0x3630a7[_0x1702f1(0x15e)](_0x206c6['pTLFs'],0x4,0x11);continue;case'10':_0x229958[_0x1702f1(0x19a)]=0x32;continue;}break;}}}}catch(_0x221dd9){}const _0x30a162=[_0x206c6[_0x1702f1(0x179)],_0x206c6[_0x1702f1(0x116)],_0x1702f1(0x19e),_0x206c6[_0x1702f1(0x16c)],_0x1702f1(0xb9),_0x1702f1(0x16a)];if(_0x30a162[_0x1702f1(0xf5)](_0x1d0c81=>window[_0x1d0c81])){if(_0x206c6['GvfQC']===_0x206c6[_0x1702f1(0xfc)]){const _0x56bad4=_0xee0031[_0x1702f1(0x106)](_0x472262['UNMASKED_VENDOR_WEBGL']),_0x411c06=_0x44242a[_0x1702f1(0x106)](_0x2ec280[_0x1702f1(0x131)]);this[_0x1702f1(0xc7)]['add'](_0x206c6[_0x1702f1(0xde)],_0x56bad4+'_'+_0x411c06);}else this[_0x1702f1(0xc7)][_0x1702f1(0xd9)](_0x206c6[_0x1702f1(0xbe)],_0x1702f1(0x11a));}if(_0x300990['webdriver'])this[_0x1702f1(0xc7)][_0x1702f1(0xd9)](_0x1702f1(0xf4),_0x206c6[_0x1702f1(0x14b)]);}return this[_0x1702f1(0xc7)][_0x1702f1(0xeb)]();},'generateRequestSignature'(_0x1180f7={}){const _0x8684b8=_0x3ded,_0x279c8d={'WpxuB':function(_0x45c206,_0x741d5){return _0x45c206(_0x741d5);}},_0x1d0a00=this[_0x8684b8(0x13f)](),_0x5b4dfb=Object[_0x8684b8(0xd4)](_0x1180f7)['sort']()[_0x8684b8(0x147)](_0x177013=>_0x177013+'='+_0x1180f7[_0x177013])[_0x8684b8(0x135)]('&'),_0x1765cd=_0x279c8d['WpxuB'](cyrb53,_0x5b4dfb);return _0x1d0a00+_0x8684b8(0x1a4)+_0x1765cd;},async 'generateClientSideSignature'(_0x5665d4,_0x371982){const _0x5e4c38=_0x3ded,_0x5e8f0c={'pYzra':_0x5e4c38(0x1ad),'MzpqC':_0x5e4c38(0x17a),'Lfbdu':_0x5e4c38(0x1b1)},_0xb818af=Object[_0x5e4c38(0xd4)](_0x5665d4)[_0x5e4c38(0x1ac)]()[_0x5e4c38(0x147)](_0x326f6a=>_0x326f6a+'='+_0x5665d4[_0x326f6a])[_0x5e4c38(0x135)]('&'),_0x3c7b9a=new TextEncoder(),_0x19d9ac=await window[_0x5e4c38(0xfe)][_0x5e4c38(0x141)][_0x5e4c38(0xe4)]('raw',_0x3c7b9a[_0x5e4c38(0x102)](_0x371982),{'name':_0x5e8f0c['pYzra'],'hash':_0x5e8f0c['MzpqC']},![],[_0x5e8f0c[_0x5e4c38(0xbf)]]),_0x4a5a03=await window['crypto'][_0x5e4c38(0x141)][_0x5e4c38(0x1b1)](_0x5e8f0c[_0x5e4c38(0xd0)],_0x19d9ac,_0x3c7b9a[_0x5e4c38(0x102)](_0xb818af)),_0x5b56e0=Array[_0x5e4c38(0xc8)](new Uint8Array(_0x4a5a03));return _0x5b56e0[_0x5e4c38(0x147)](_0x44530e=>_0x44530e['toString'](0x10)[_0x5e4c38(0x170)](0x2,'0'))[_0x5e4c38(0x135)]('');},'_resetCache'(){this['_cachedBuilder']=null;},'startMouseEntropyTracker'(){const _0xae9632=_0x3ded,_0x51cc6f={'rkTpQ':function(_0x7cab8b,_0x6a2a96){return _0x7cab8b-_0x6a2a96;},'GxZbY':function(_0x1a2294,_0x15c55b){return _0x1a2294+_0x15c55b;},'iWuoK':function(_0x1b04e7,_0x51f681){return _0x1b04e7*_0x51f681;},'RCyvF':function(_0x1891eb,_0xacdbf4){return _0x1891eb>_0xacdbf4;},'HxpKP':_0xae9632(0x124)};if(_0x51cc6f[_0xae9632(0x122)](mouseMovements,0x0))return;document[_0xae9632(0x10b)](_0x51cc6f[_0xae9632(0xe9)],_0x8c9f0e=>{const _0x104cb7=_0xae9632,_0x48a436=_0x51cc6f[_0x104cb7(0x138)](_0x8c9f0e[_0x104cb7(0xba)],lastMousePos['x']),_0x46cb58=_0x8c9f0e[_0x104cb7(0x10e)]-lastMousePos['y'];metrics['mouseEntropy']+=Math['sqrt'](_0x51cc6f[_0x104cb7(0x164)](_0x51cc6f['iWuoK'](_0x48a436,_0x48a436),_0x51cc6f['iWuoK'](_0x46cb58,_0x46cb58))),lastMousePos={'x':_0x8c9f0e[_0x104cb7(0xba)],'y':_0x8c9f0e[_0x104cb7(0x10e)]},mouseMovements++;},{'passive':!![]});},'startKeystrokeDynamicsTracker'(){const _0xa8e5ff=_0x3ded,_0x5175cd={'oIsdC':_0xa8e5ff(0x17c),'txqnf':_0xa8e5ff(0x12e),'ZlsIY':function(_0xaa5cc6,_0x57dc36){return _0xaa5cc6(_0x57dc36);},'yNuZu':function(_0x4c1a54,_0x54254a){return _0x4c1a54!==_0x54254a;},'OYscH':'fDYPp','hcXeO':_0xa8e5ff(0xe5),'UdOnC':'OyjRb','KKGAj':function(_0x307c99,_0x12c84a){return _0x307c99-_0x12c84a;},'HRdIX':function(_0xb42a20,_0x3302f7){return _0xb42a20>_0x3302f7;},'BNjZr':function(_0x5f5c5a,_0x54922f){return _0x5f5c5a<_0x54922f;},'HXQvR':function(_0x194cef,_0x455f39){return _0x194cef>=_0x455f39;},'ramfw':_0xa8e5ff(0x168),'gQdCY':function(_0x20f07d,_0x5d14ab,_0x188c41){return _0x20f07d(_0x5d14ab,_0x188c41);},'mAqrf':function(_0x51bacc){return _0x51bacc();},'snkJf':_0xa8e5ff(0x186)},_0x435c1c=(function(){const _0x576dd2=_0xa8e5ff,_0x581866={'eIiyn':_0x5175cd[_0x576dd2(0xdd)]};if(_0x576dd2(0xd7)!==_0x5175cd['txqnf']){let _0x2e5b43=!![];return function(_0x1c4d6a,_0x5bae42){const _0x4fd58b=_0x2e5b43?function(){const _0x37611d=_0x3ded;if(_0x5bae42){const _0x2dc7f6=_0x5bae42[_0x37611d(0x136)](_0x1c4d6a,arguments);return _0x5bae42=null,_0x2dc7f6;}}:function(){};return _0x2e5b43=![],_0x4fd58b;};}else{const _0x579cbf={'ptAtp':_0x581866[_0x576dd2(0x191)]},_0x49d16c=()=>{const _0x294d3e=_0x576dd2;this[_0x294d3e(0xea)](),_0x29ff90['removeEventListener'](_0x579cbf[_0x294d3e(0xcd)],_0x49d16c);};_0x4658c4[_0x576dd2(0x10b)](_0x581866['eIiyn'],_0x49d16c),_0x584f07[_0x576dd2(0x105)](_0x4456f6,_0x49d16c);}}()),_0x57fa1d=_0x5175cd[_0xa8e5ff(0x194)](_0x435c1c,this,function(){const _0x47e248=_0xa8e5ff,_0x4b4721={'Terov':function(_0x1984cc,_0x2d8d7a){const _0x3dc872=_0x3ded;return _0x5175cd[_0x3dc872(0x17e)](_0x1984cc,_0x2d8d7a);}};if(_0x5175cd['yNuZu']('fDYPp',_0x5175cd[_0x47e248(0x111)])){const _0x527a92=this[_0x47e248(0x13f)](),_0x3ab7d5=_0x247f84[_0x47e248(0xd4)](_0x4e74c4)['sort']()[_0x47e248(0x147)](_0x3507a2=>_0x3507a2+'='+_0x44b23a[_0x3507a2])[_0x47e248(0x135)]('&'),_0x1700f0=_0x4b4721[_0x47e248(0x18e)](_0x6bcbd3,_0x3ab7d5);return _0x527a92+_0x47e248(0x1a4)+_0x1700f0;}else return _0x57fa1d[_0x47e248(0xeb)]()[_0x47e248(0x190)](_0x47e248(0xe5))[_0x47e248(0xeb)]()['constructor'](_0x57fa1d)[_0x47e248(0x190)](_0x5175cd[_0x47e248(0x156)]);});_0x5175cd['mAqrf'](_0x57fa1d);if(_0x5175cd[_0xa8e5ff(0x103)](keystrokeTimestamps['length'],0x0))return;document['addEventListener'](_0x5175cd[_0xa8e5ff(0x1b0)],()=>{const _0x4d368f=_0xa8e5ff,_0x51af92={'uOEag':_0x5175cd[_0x4d368f(0xdd)]};if(_0x4d368f(0x1a5)===_0x5175cd[_0x4d368f(0xee)]){const _0x5079a4=performance[_0x4d368f(0xfa)]();if(keystrokeTimestamps[_0x4d368f(0xf0)]>0x0){const _0x1d5744=keystrokeTimestamps[keystrokeTimestamps[_0x4d368f(0xf0)]-0x1],_0xc534b9=_0x5175cd[_0x4d368f(0x159)](_0x5079a4,_0x1d5744);if(_0x5175cd[_0x4d368f(0x103)](_0xc534b9,0xa)&&_0x5175cd[_0x4d368f(0xd8)](_0xc534b9,0x7d0)){if(_0x5175cd['HXQvR'](keystrokeLatencies['length'],KEYSTROKE_HISTORY_MAX)){if(_0x4d368f(0x14d)!==_0x5175cd['ramfw'])keystrokeLatencies[_0x4d368f(0xf8)]();else{const _0x460e78={'byRYW':_0x51af92[_0x4d368f(0x157)]},_0x2288ab=_0xdf36d7['querySelector']('[name=\x22'+_0x1cc580+'\x22]');if(_0x2288ab){const _0xca8edb=()=>{const _0x3f4dc1=_0x4d368f;this[_0x3f4dc1(0xea)](),_0x2288ab[_0x3f4dc1(0x104)](_0x460e78['byRYW'],_0xca8edb);};_0x2288ab[_0x4d368f(0x10b)](_0x51af92[_0x4d368f(0x157)],_0xca8edb),_0x397ad[_0x4d368f(0x105)](_0x2288ab,_0xca8edb);}}}keystrokeLatencies[_0x4d368f(0x126)](_0xc534b9);}}keystrokeTimestamps['push'](_0x5079a4);}else{const _0x23ee1e=_0x82bc67[_0x4d368f(0x136)](_0x3be78d,arguments);return _0x3cbb8e=null,_0x23ee1e;}},{'passive':!![]});},'initializeHoneypots'(_0x38af96){const _0x3615f0=_0x3ded,_0x4b9490={'eOvPm':_0x3615f0(0x17c),'cMRwi':function(_0x37f550,_0x522001){return _0x37f550-_0x522001;},'wRwUh':function(_0xf484d8,_0x2d0b0f){return _0xf484d8>_0x2d0b0f;},'aoQcr':function(_0x56c98d,_0x3517ad){return _0x56c98d<_0x3517ad;},'xYzDE':function(_0xd8487d,_0x2760a4){return _0xd8487d>=_0x2760a4;},'JHxNo':function(_0x144045,_0x1b5cb4){return _0x144045===_0x1b5cb4;},'nRoBi':function(_0x32761b,_0x58d597){return _0x32761b!==_0x58d597;},'cAdGH':_0x3615f0(0x18b),'GBdER':_0x3615f0(0xe6)};activeHoneypotListeners[_0x3615f0(0xf3)]((_0x125440,_0x5da119)=>{const _0x593db4=_0x3615f0;_0x5da119[_0x593db4(0x104)](_0x4b9490['eOvPm'],_0x125440);}),activeHoneypotListeners[_0x3615f0(0xd5)](),_0x38af96['forEach'](_0x78c4b1=>{const _0x3b6e43=_0x3615f0;if(_0x4b9490['nRoBi']('ZaxJn',_0x4b9490[_0x3b6e43(0x10d)])){const _0x1c5859=document[_0x3b6e43(0xe2)](_0x3b6e43(0xcf)+_0x78c4b1+'\x22]');if(_0x1c5859){if(_0x4b9490['JHxNo'](_0x4b9490[_0x3b6e43(0x149)],_0x3b6e43(0x117))){const _0x342922=_0x37e127[_0x4b9490['cMRwi'](_0xe176fc[_0x3b6e43(0xf0)],0x1)],_0x269156=_0x3fa204-_0x342922;_0x4b9490[_0x3b6e43(0x15f)](_0x269156,0xa)&&_0x4b9490[_0x3b6e43(0x125)](_0x269156,0x7d0)&&(_0x4b9490[_0x3b6e43(0x163)](_0x2ad3ec[_0x3b6e43(0xf0)],_0x21fc3c)&&_0x26a006[_0x3b6e43(0xf8)](),_0x47356e[_0x3b6e43(0x126)](_0x269156));}else{const _0x1c65a5=()=>{const _0x9b08f1=_0x3b6e43;this[_0x9b08f1(0xea)](),_0x1c5859['removeEventListener'](_0x4b9490[_0x9b08f1(0x1b3)],_0x1c65a5);};_0x1c5859[_0x3b6e43(0x10b)](_0x4b9490[_0x3b6e43(0x1b3)],_0x1c65a5),activeHoneypotListeners[_0x3b6e43(0x105)](_0x1c5859,_0x1c65a5);}}}else{const _0xa3923d=new _0x995f19(_0x2eab39,_0x3a553a['location'][_0x3b6e43(0x197)]);_0x251a94=_0x4b9490['JHxNo'](_0x5496a7[_0x3b6e43(0xf0)],0x0)&&_0xa3923d[_0x3b6e43(0x197)]===_0x4cb449[_0x3b6e43(0xc0)][_0x3b6e43(0x197)]||_0x4ffd9d[_0x3b6e43(0xf0)]>0x0&&_0x581ac4[_0x3b6e43(0xbc)](_0xa3923d[_0x3b6e43(0xbb)]);}});},'getClientBehaviorMetrics'(){const _0x5c6f56=_0x3ded,_0x563708={'iNHgS':function(_0x4a5f74,_0x115b16){return _0x4a5f74>_0x115b16;}};metrics[_0x5c6f56(0xca)]=window[_0x5c6f56(0x1a0)][_0x5c6f56(0xf0)],metrics['clientTimestamp']=Date[_0x5c6f56(0xfa)]();mouseMovements>0xa&&(metrics[_0x5c6f56(0x192)]/=mouseMovements);if(_0x563708[_0x5c6f56(0x160)](keystrokeLatencies[_0x5c6f56(0xf0)],0x0)){const _0x1b599c=keystrokeLatencies[_0x5c6f56(0x198)]((_0x20ee4b,_0x3a2f2e)=>_0x20ee4b+_0x3a2f2e,0x0);metrics['keystrokeLatency']=_0x1b599c/keystrokeLatencies[_0x5c6f56(0xf0)];}else metrics[_0x5c6f56(0x1af)]=0x0;return metrics;},async 'protectedFetch'(_0x104340,_0x2f3494={}){const _0x223ade=_0x3ded,_0x1d10d5={'pWtnC':_0x223ade(0x12a),'lRhQp':_0x223ade(0x174),'JiTog':function(_0xd1cc16,_0x33e6ff,_0x11a3e2){return _0xd1cc16(_0x33e6ff,_0x11a3e2);}},_0x146be5=this[_0x223ade(0x13f)](),_0x34fc70=this[_0x223ade(0x114)](),_0x3501e3=new Headers(_0x2f3494[_0x223ade(0xc5)]||{});return _0x3501e3[_0x223ade(0x105)](_0x1d10d5['pWtnC'],_0x146be5),_0x3501e3[_0x223ade(0x105)](_0x1d10d5[_0x223ade(0x1aa)],JSON[_0x223ade(0x1b5)](_0x34fc70)),_0x2f3494[_0x223ade(0xc5)]=_0x3501e3,_0x1d10d5[_0x223ade(0x134)](fetch,_0x104340,_0x2f3494);},'_isFetchPatched':![],'_interceptorChain':[],'_originalFetch':typeof window!==_0x36a6f6(0xbd)?window[_0x36a6f6(0x13c)]['bind'](window):null,'addFetchInterceptor'(_0x41b1d2){const _0x59f2a9=_0x36a6f6,_0x2779aa={'AyNQw':function(_0xfc14cc,_0x59f3c4){return _0xfc14cc/_0x59f3c4;},'AqkYz':function(_0x4632b9,_0xa2e9ad){return _0x4632b9!==_0xa2e9ad;},'WCWAr':_0x59f2a9(0x18f)};if(!this[_0x59f2a9(0x189)]){if(_0x2779aa[_0x59f2a9(0x100)](_0x2779aa[_0x59f2a9(0x1a1)],_0x2779aa[_0x59f2a9(0x1a1)])){const _0x405dc9=_0x190df9[_0x59f2a9(0x198)]((_0x23d6ab,_0x43ece3)=>_0x23d6ab+_0x43ece3,0x0);_0x34e6f3['keystrokeLatency']=_0x2779aa['AyNQw'](_0x405dc9,_0x4769a8['length']);}else this['patchGlobalFetch']();}this[_0x59f2a9(0x1b2)][_0x59f2a9(0x126)](_0x41b1d2);},'patchGlobalFetch'(){const _0x22379c=_0x36a6f6,_0x277059={'tRGaB':function(_0x174ebc,_0x67a0f5){return _0x174ebc>=_0x67a0f5;},'rKOdc':function(_0x116041,_0x4252f7,_0x35b5a4,_0x1746ca){return _0x116041(_0x4252f7,_0x35b5a4,_0x1746ca);}};if(this[_0x22379c(0x189)]||!this['_originalFetch'])return;this[_0x22379c(0x189)]=!![],window['fetch']=(_0x311504,_0xaeb635)=>{const _0x38abba={'YvudY':function(_0x74a0bb,_0x5ee561){return _0x277059['tRGaB'](_0x74a0bb,_0x5ee561);}},_0x142513=(_0x46f9ce,_0x1f092b,_0x8b6bb0)=>{const _0x265faf=_0x3ded;if(_0x265faf(0x171)!==_0x265faf(0x171))return _0x4e26e9;else{if(_0x38abba[_0x265faf(0xef)](_0x46f9ce,this[_0x265faf(0x1b2)][_0x265faf(0xf0)]))return this[_0x265faf(0x121)](_0x1f092b,_0x8b6bb0);const _0x2a465d=this[_0x265faf(0x1b2)][_0x46f9ce];return _0x2a465d(_0x1f092b,_0x8b6bb0,(_0x2cb4c4,_0x40009d)=>_0x142513(_0x46f9ce+0x1,_0x2cb4c4,_0x40009d));}};return _0x277059['rKOdc'](_0x142513,0x0,_0x311504,_0xaeb635||{});};},'onHoneypotTrigger':()=>{const _0x1d73a4=_0x36a6f6;metrics[_0x1d73a4(0xc9)]=!![];},'initializeFetch'(_0x3dced7=[]){const _0x1c9fa1=_0x36a6f6,_0x1e25d9={'YXoZg':function(_0x1d7822,_0xd61bd5){return _0x1d7822 instanceof _0xd61bd5;},'Qvuua':function(_0x5cc6c1,_0x13b050){return _0x5cc6c1(_0x13b050);},'fVaTy':function(_0x3aaec6,_0x1b5392){return _0x3aaec6===_0x1b5392;},'CYnzE':_0x1c9fa1(0xf7),'mUHdh':function(_0x59a2c5,_0x538ce6){return _0x59a2c5>_0x538ce6;},'Gmuxa':'IJmIH','KHsWw':'ydgth','QVMhW':_0x1c9fa1(0x12a),'rAruj':_0x1c9fa1(0x174),'ChSmn':function(_0x250ad1,_0x35d9f3,_0x22661e){return _0x250ad1(_0x35d9f3,_0x22661e);}},_0x3256a1=(_0x4d6751,_0x4fa0fa,_0x307d40)=>{const _0x39aeac=_0x1c9fa1,_0x46bc12=_0x1e25d9['YXoZg'](_0x4d6751,Request)?_0x4d6751[_0x39aeac(0x130)]:_0x1e25d9[_0x39aeac(0x15c)](String,_0x4d6751);let _0x2ac23c=![];try{if(_0x1e25d9[_0x39aeac(0xf6)]('BVAiO',_0x1e25d9[_0x39aeac(0x11c)])){const _0x43f67b=new URL(_0x46bc12,window[_0x39aeac(0xc0)]['origin']);_0x2ac23c=_0x1e25d9[_0x39aeac(0xf6)](_0x3dced7['length'],0x0)&&_0x1e25d9[_0x39aeac(0xf6)](_0x43f67b[_0x39aeac(0x197)],window[_0x39aeac(0xc0)][_0x39aeac(0x197)])||_0x1e25d9[_0x39aeac(0x18a)](_0x3dced7[_0x39aeac(0xf0)],0x0)&&_0x3dced7[_0x39aeac(0xbc)](_0x43f67b[_0x39aeac(0xbb)]);}else this['initializeHoneypots'](_0x2512a3);}catch(_0x57ba87){_0x2ac23c=_0x1e25d9[_0x39aeac(0xf6)](_0x3dced7[_0x39aeac(0xf0)],0x0);}if(_0x2ac23c){if(_0x1e25d9[_0x39aeac(0xe7)]===_0x1e25d9[_0x39aeac(0x10c)])this[_0x39aeac(0x167)]();else{const _0x34f4ff=this[_0x39aeac(0x13f)](),_0x439212=this['getClientBehaviorMetrics'](),_0x149c69=new Headers(_0x4fa0fa[_0x39aeac(0xc5)]||{});_0x149c69['set'](_0x1e25d9['QVMhW'],_0x34f4ff),_0x149c69['set'](_0x1e25d9[_0x39aeac(0xf9)],JSON[_0x39aeac(0x1b5)](_0x439212)),_0x4fa0fa['headers']=_0x149c69;}}return _0x1e25d9['ChSmn'](_0x307d40,_0x4d6751,_0x4fa0fa);};this[_0x1c9fa1(0x184)](_0x3256a1);},async 'solveChallengeAndRetry'(_0x2bcd0a,_0x284668,_0x6c3172){const _0x1fbfe9=_0x36a6f6,_0x21a2db={'cVQko':function(_0x5e6358,_0x2e04f0){return _0x5e6358-_0x2e04f0;},'uKCPd':function(_0x555fca,_0x1bda17){return _0x555fca*_0x1bda17;},'NlgVf':function(_0x40eb1b,_0x3b9c5c){return _0x40eb1b*_0x3b9c5c;},'agdJu':function(_0x4cd42c,_0x45e984){return _0x4cd42c>_0x45e984;},'gpaBr':function(_0xa94376,_0x47d2a8){return _0xa94376!==_0x47d2a8;},'KcCeo':'content-type','IYYFp':_0x1fbfe9(0x14a),'cdHXx':_0x1fbfe9(0x15d),'ItacQ':function(_0x886911,_0x46dc84){return _0x886911===_0x46dc84;},'VGHub':_0x1fbfe9(0x1b4),'WDaIb':_0x1fbfe9(0xe3),'vXXJR':function(_0x4daea7,_0x2ef7d5,_0x39a513){return _0x4daea7(_0x2ef7d5,_0x39a513);},'mANcj':function(_0x43ac22,_0x5b8d49){return _0x43ac22 instanceof _0x5b8d49;},'VNNHB':function(_0x2bc73d,_0xad755a){return _0x2bc73d(_0xad755a);},'VZbQj':_0x1fbfe9(0x144),'NYHdH':_0x1fbfe9(0x118),'dllUH':_0x1fbfe9(0x140)};if(_0x21a2db[_0x1fbfe9(0x193)](_0x2bcd0a[_0x1fbfe9(0x185)],0x194)||!_0x2bcd0a[_0x1fbfe9(0xc5)][_0x1fbfe9(0x165)](_0x21a2db[_0x1fbfe9(0x11e)])?.[_0x1fbfe9(0xbc)](_0x1fbfe9(0x187))||_0x2bcd0a['bodyUsed'])return _0x21a2db[_0x1fbfe9(0x14f)]===_0x21a2db[_0x1fbfe9(0x12c)]?this['_originalFetch'](_0x3fd899,_0x193ad3):_0x2bcd0a;try{if(_0x21a2db['ItacQ'](_0x21a2db[_0x1fbfe9(0x109)],_0x21a2db[_0x1fbfe9(0xe1)])){if(_0x21a2db[_0x1fbfe9(0x188)](_0x477685,0x0))return;_0xf6df71[_0x1fbfe9(0x10b)](_0x1fbfe9(0x124),_0x5875e9=>{const _0x29ef7c=_0x1fbfe9,_0x4993e5=_0x21a2db[_0x29ef7c(0x11b)](_0x5875e9[_0x29ef7c(0xba)],_0x28ce6d['x']),_0xeb7a91=_0x5875e9['clientY']-_0x245ce6['y'];_0x235c50[_0x29ef7c(0x192)]+=_0x58e3a6[_0x29ef7c(0x16f)](_0x21a2db[_0x29ef7c(0xd3)](_0x4993e5,_0x4993e5)+_0x21a2db[_0x29ef7c(0x16e)](_0xeb7a91,_0xeb7a91)),_0xe121a0={'x':_0x5875e9['clientX'],'y':_0x5875e9[_0x29ef7c(0x10e)]},_0x127925++;},{'passive':!![]});}else{const _0x3ea42b=await _0x2bcd0a[_0x1fbfe9(0x127)]();if(!_0x3ea42b['challenge']||!_0x3ea42b[_0x1fbfe9(0x115)][_0x1fbfe9(0xd1)])return _0x2bcd0a;console[_0x1fbfe9(0x1a9)]('[Fingerprint]\x20Received\x20a\x20\x27'+_0x3ea42b[_0x1fbfe9(0x115)][_0x1fbfe9(0xd1)]+_0x1fbfe9(0x155));const _0x4b9e05=this[_0x1fbfe9(0x13f)](),_0x2cddff=await _0x21a2db[_0x1fbfe9(0x137)](solveChallenge,_0x3ea42b['challenge'],_0x4b9e05);console[_0x1fbfe9(0x1a9)](_0x1fbfe9(0x17f));const _0x1cc16d=new URL(_0x21a2db[_0x1fbfe9(0x10a)](_0x284668,Request)?_0x284668[_0x1fbfe9(0x130)]:_0x21a2db[_0x1fbfe9(0xec)](String,_0x284668),window[_0x1fbfe9(0xc0)][_0x1fbfe9(0x197)]);return _0x2cddff[_0x1fbfe9(0x17d)](_0x1cc16d),_0x1cc16d[_0x1fbfe9(0x152)][_0x1fbfe9(0x105)](_0x21a2db[_0x1fbfe9(0xf1)],_0x4b9e05),window[_0x1fbfe9(0x13c)](_0x1cc16d[_0x1fbfe9(0xeb)](),_0x6c3172);}}catch(_0x52bae4){if(_0x21a2db[_0x1fbfe9(0x128)]===_0x21a2db['NYHdH'])return console[_0x1fbfe9(0xf2)](_0x21a2db[_0x1fbfe9(0x162)],_0x52bae4),_0x2bcd0a;else this[_0x1fbfe9(0xc7)]=null;}},'initializeClient'(_0x35b617={}){const _0x19a0aa=_0x36a6f6,_0x8af965={'vHzym':function(_0x227008,_0x2a50c2){return _0x227008-_0x2a50c2;},'CvUOR':function(_0x38f3bf,_0x30ad7b){return _0x38f3bf*_0x30ad7b;},'dKjPU':function(_0x4f834c,_0x289ff8){return _0x4f834c*_0x289ff8;},'vlAgr':function(_0x934015,_0x23301f){return _0x934015===_0x23301f;},'uJKrU':_0x19a0aa(0x12f),'FtQJh':function(_0x1380dc,_0x3f2018){return _0x1380dc>_0x3f2018;},'pvjwl':function(_0x4c20fe,_0x2a4b7f){return _0x4c20fe!==_0x2a4b7f;}},{mouse:mouse=!![],keystrokes:keystrokes=!![],honeypots:honeypots=[],fetch:_0x27a2cc={}}=_0x35b617;if(mouse){if(_0x8af965[_0x19a0aa(0x13d)](_0x8af965[_0x19a0aa(0x15a)],_0x8af965['uJKrU']))this[_0x19a0aa(0x167)]();else{const _0x84b29f=_0x8af965[_0x19a0aa(0x1ab)](_0x3172ec[_0x19a0aa(0xba)],_0x4a322a['x']),_0x4ab7a6=_0x31b599['clientY']-_0x479cac['y'];_0xcbd86f['mouseEntropy']+=_0x560864['sqrt'](_0x8af965[_0x19a0aa(0xfb)](_0x84b29f,_0x84b29f)+_0x8af965['dKjPU'](_0x4ab7a6,_0x4ab7a6)),_0x28dbe9={'x':_0x580d32['clientX'],'y':_0x26c274[_0x19a0aa(0x10e)]},_0x59886f++;}}keystrokes&&this['startKeystrokeDynamicsTracker'](),_0x8af965['FtQJh'](honeypots[_0x19a0aa(0xf0)],0x0)&&this[_0x19a0aa(0x161)](honeypots),_0x35b617[_0x19a0aa(0x13c)]&&(this[_0x19a0aa(0xcb)](_0x27a2cc[_0x19a0aa(0x175)]),_0x8af965['pvjwl'](_0x27a2cc[_0x19a0aa(0x142)],![])&&this[_0x19a0aa(0x184)](async(_0x3a3d2f,_0x1424f6,_0x5a499c)=>{const _0x4d43b6=_0x19a0aa,_0xf9a29e=await _0x5a499c(_0x3a3d2f,_0x1424f6);return this[_0x4d43b6(0x182)](_0xf9a29e[_0x4d43b6(0x13e)](),_0x3a3d2f,_0x1424f6);}));}},metrics={'mouseEntropy':0x0,'keystrokeLatency':0x0,'honeypotInteraction':![],'historyLength':0x0,'clientTimestamp':0x0};let lastMousePos={'x':0x0,'y':0x0},mouseMovements=0x0,activeHoneypotListeners=new Map(),keystrokeTimestamps=[],keystrokeLatencies=[];const KEYSTROKE_HISTORY_MAX=0x14;export const getDeviceFingerprint=ClientLibrary[_0x36a6f6(0x13f)][_0x36a6f6(0x119)](ClientLibrary);function _0x1767(){const _0x20c082=['UNMASKED_VENDOR_WEBGL','JiTog','join','apply','vXXJR','rkTpQ','createElement','VzKMM','font','fetch','vlAgr','clone','getDeviceFingerprint','[Fingerprint]\x20Failed\x20to\x20solve\x20or\x20retry\x20challenge:','subtle','handleChallenges','#069','pow_fp','maxTouchPoints','qEBDQ','map','Dszxr','GBdER','mhwig','zMAjP','initializeClient','aDlMf','cQCyS','IYYFp','platform','0|10|5|4|2|3|6|8|1|9|7','searchParams','fingerprint','_resetCache','\x27\x20challenge.\x20Solving...','hcXeO','uOEag','JGbxj','KKGAj','uJKrU','JhsGL','Qvuua','MRvYz','fillText','wRwUh','iNHgS','initializeHoneypots','dllUH','xYzDE','GxZbY','get','getDeviceFingerprint\x20can\x20only\x20be\x20called\x20on\x20the\x20client-side.','startMouseEntropyTracker','LmYoK','120395WhoYZQ','_driver','resolvedOptions','KhHvl','14px\x20\x27Arial\x27','NlgVf','sqrt','padStart','xUITl','navigator','width','X-Behavior-Metrics','targetDomains','experimental-webgl','1352CdlXSJ','getContext','WFqZN','SHA-256','scr','input','applyToUrl','ZlsIY','[Fingerprint]\x20Challenge\x20solved.\x20Retrying\x20original\x20request.','jFsJk','screen','solveChallengeAndRetry','xTTVb','addFetchInterceptor','status','keydown','application/json','agdJu','_isFetchPatched','mUHdh','vWZLU','mgWxo','toDataURL','Terov','Ykgxe','search','eIiyn','mouseEntropy','gpaBr','gQdCY','webgl','10eyGeAs','origin','reduce','176YjTYXP','height','cdc_adoQpoasnfa76pfcZLmcfl_Array','6244546XLbLyq','yXqIF','cdc_adoQpoasnfa76pfcZLmcfl_Symbol','pTLFs','history','WCWAr','ludee','generateRequestSignature','|req:','OyjRb','startKeystrokeDynamicsTracker','fillStyle','ZJikv','log','lRhQp','vHzym','sort','HMAC','textBaseline','keystrokeLatency','snkJf','sign','_interceptorChain','eOvPm','AWJWN','stringify','_selenium','clientX','hostname','includes','undefined','ozxdT','Lfbdu','location','patchGlobalFetch','31542WwhuGF','protectedFetch','TpGlv','headers','cdp','_cachedBuilder','from','honeypotInteraction','historyLength','initializeFetch','generateClientSideSignature','ptAtp','cdc_adoQpoasnfa76pfcZLmcfl_Promise','[name=\x22','pYzra','type','MOqXj','uKCPd','keys','clear','SMoNd','Vnazq','BNjZr','add','split','canvas','alphabetic','oIsdC','ShXUn','3|1|7|9|4|10|5|8|2|6|0','1961460AEuuXZ','WDaIb','querySelector','lAELe','importKey','(((.+)+)+)+$','ccdCX','Gmuxa','DateTimeFormat','HxpKP','onHoneypotTrigger','toString','VNNHB','$cdc_asdjflasutopfhvcZLmcfl_','UdOnC','YvudY','length','VZbQj','error','forEach','bot','some','fVaTy','BVAiO','shift','rAruj','now','CvUOR','FkIBk','372372oQtIgx','crypto','timeZone','AqkYz','hardwareConcurrency','encode','HRdIX','removeEventListener','set','getParameter','DHlHG','deviceMemory','VGHub','mANcj','addEventListener','KHsWw','cAdGH','clientY','19041800GtNTdO','rgba(102,\x20204,\x200,\x200.7)','OYscH','QAfih','fDyok','getClientBehaviorMetrics','challenge','nmBda','jfMws','upqeG','bind','true','cVQko','CYnzE','YpqFG','KcCeo','poDMc','gpu','_originalFetch','RCyvF','getTimezoneOffset','mousemove','aoQcr','push','json','NYHdH','ZPEDq','X-Device-Fingerprint','33453ROjroP','cdHXx','WEBGL_debug_renderer_info','lowDB','chiNc','url','UNMASKED_RENDERER_WEBGL','fillRect'];_0x1767=function(){return _0x20c082;};return _0x1767();}export const generateRequestSignature=ClientLibrary[_0x36a6f6(0x1a3)]['bind'](ClientLibrary);function _0x3ded(_0x575f2d,_0x459484){_0x575f2d=_0x575f2d-0xb9;const _0x2833c4=_0x1767();let _0xf6ed51=_0x2833c4[_0x575f2d];return _0xf6ed51;}export const generateClientSideSignature=ClientLibrary[_0x36a6f6(0xcc)]['bind'](ClientLibrary);export const _resetCache=ClientLibrary[_0x36a6f6(0x154)][_0x36a6f6(0x119)](ClientLibrary);export const startMouseEntropyTracker=ClientLibrary['startMouseEntropyTracker']['bind'](ClientLibrary);export const startKeystrokeDynamicsTracker=ClientLibrary[_0x36a6f6(0x1a6)]['bind'](ClientLibrary);export const initializeHoneypots=ClientLibrary['initializeHoneypots']['bind'](ClientLibrary);export const getClientBehaviorMetrics=ClientLibrary[_0x36a6f6(0x114)][_0x36a6f6(0x119)](ClientLibrary);export const protectedFetch=ClientLibrary[_0x36a6f6(0xc3)][_0x36a6f6(0x119)](ClientLibrary);export const addFetchInterceptor=ClientLibrary[_0x36a6f6(0x184)][_0x36a6f6(0x119)](ClientLibrary);export const patchGlobalFetch=ClientLibrary[_0x36a6f6(0xc1)][_0x36a6f6(0x119)](ClientLibrary);export const initializeFetch=ClientLibrary[_0x36a6f6(0xcb)][_0x36a6f6(0x119)](ClientLibrary);export const initializeClient=ClientLibrary[_0x36a6f6(0x14c)][_0x36a6f6(0x119)](ClientLibrary);export const solveChallengeAndRetry=ClientLibrary[_0x36a6f6(0x182)][_0x36a6f6(0x119)](ClientLibrary);export default ClientLibrary;