diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index c1bda71..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.cursor/rules/shared-web-tests.mdc b/.cursor/rules/shared-web-tests.mdc new file mode 100644 index 0000000..a1f7a68 --- /dev/null +++ b/.cursor/rules/shared-web-tests.mdc @@ -0,0 +1,298 @@ +# Shared Web Tests Repository + +## What This Repo Does + +This repository provides WebDriver testing infrastructure for DuckDuckGo browsers (iOS & macOS). It includes: +- A Rust-based WebDriver server (`ddgdriver`) that communicates with Apple browsers via automation servers +- Test utilities and example scripts for Selenium-based testing +- Integration with web-platform-tests (WPT) for cross-browser compatibility testing + +## Quick Start - Running Example Scripts + +### Setup (First Time) +```bash +# Install dependencies +npm install + +# Build the WebDriver binary +npm run build-rust + +# Build the Apple browser app (iOS or macOS) +npm run build:ios # or npm run build:macos +``` + +### Running Tests + +**Two-terminal workflow:** + +```bash +# Terminal 1: Start the WebDriver server +npm run driver:ios # or npm run driver:macos + +# Terminal 2: Run example test (must match platform from Terminal 1!) +npm run example # defaults to iOS +npm run example:macos # for macOS +npm run example:ios # explicit iOS +``` + +**Example with custom URL:** +```bash +./scripts/apple-webdriver.sh example ios https://duckduckgo.com +./scripts/apple-webdriver.sh example macos https://duckduckgo.com --no-keep +``` + +**Direct script execution:** +```bash +node scripts/selenium-navigate-example.mjs https://example.com --keep +``` + +## Critical Debugging Steps + +### 1. Check Simulator/App Logs + +**iOS Simulator logs:** +```bash +xcrun simctl spawn booted log show --last 900m --info --debug \ + --predicate 'subsystem == "com.duckduckgo.mobile.ios"' \ + --style compact +``` + +**macOS app logs:** +- Check Console.app for DuckDuckGo browser logs +- Look for automation server errors (port 8788) +- Check for "Invalid device" errors in logs + +**WebDriver output:** +- The WebDriver server prints detailed logs including: + - Simulator logs (prefixed with "Simulator logs:") + - Request/response details + - Element finding results + +### 2. Recompile WebDriver After Code Changes + +**After modifying Rust code (`webdriver/src/*.rs`):** +```bash +cd webdriver +cargo build +# Or from repo root: +npm run build-rust +``` + +**After modifying JavaScript files (`webdriver/src/*.js`):** +- JavaScript files are embedded at compile time +- **Must rebuild** the Rust binary: `npm run build-rust` + +**After modifying automation server code (in apple-browsers):** +- Rebuild the app: `npm run build:ios` or `npm run build:macos` +- Restart the WebDriver server + +### 3. Common Issues & Solutions + +**"Invalid device" error in logs:** +- Check session ID matches between WebDriver and automation server +- Verify the app is running and automation server is active +- Restart both the app and WebDriver server + +**Empty element arrays from FindElements:** +- Verify JavaScript variables (`using`, `value`) are defined in the script context +- Check if page is fully loaded (script waits for `document.readyState === 'complete'`) +- Verify CSS selectors work in browser DevTools +- Check `webdriver/KNOWN_ISSUES.md` for current issues + +**Session already exists:** +- Stop the WebDriver server (Ctrl+C) +- Restart: `npm run driver:ios` or `npm run driver:macos` +- Or cleanup existing sessions programmatically + +**Port conflicts:** +- WebDriver default: port 4444 +- macOS automation server: port 8788 +- Ensure ports are not in use: `lsof -i :4444` or `lsof -i :8788` + +### 4. Manual Testing & Verification + +**Test automation server directly (macOS):** +```bash +curl "http://localhost:8788/getUrl" +curl "http://localhost:8788/navigate?url=https://example.com" +``` + +**Verify WebDriver server is running:** +```bash +curl http://localhost:4444/status +curl http://localhost:4444/sessions +``` + +**Check app paths:** +- iOS: `$DERIVED_DATA_PATH/Build/Products/Debug-iphonesimulator/DuckDuckGo.app` +- macOS: `$DERIVED_DATA_PATH/Build/Products/Debug/DuckDuckGo.app` +- Or set `MACOS_APP_PATH` env var explicitly + +### 5. Environment Variables + +- `APPLE_BROWSERS_DIR` - Path to apple-browsers repo (default: `../apple-browsers`) +- `DERIVED_DATA_PATH` - Path to DerivedData with built app +- `MACOS_APP_PATH` - Explicit path to macOS app bundle +- `TARGET_PLATFORM` - `ios` or `macos` (affects which app to use) +- `PLATFORM` - Platform override +- `WEBDRIVER_SERVER_URL` - WebDriver server URL (default: `http://localhost:4444`) + +## File Structure + +- `webdriver/` - Rust WebDriver server implementation + - `src/handler.rs` - WebDriver command handlers + - `src/find-element.js` - Single element finding script + - `src/find-elements.js` - Multiple elements finding script +- `scripts/` - Test scripts and utilities + - `selenium-navigate-example.mjs` - Basic navigation example + - `apple-webdriver.sh` - Build/driver/test orchestration script +- `web-platform-tests/` - WPT submodule (large, gitignored in some contexts) + +## Important Notes + +- **Always rebuild WebDriver** after modifying Rust or JavaScript code +- **Check simulator logs** when debugging element finding or navigation issues +- **Match platform** between driver and example commands (iOS vs macOS) +- The WebDriver server must be running before executing test scripts +- Browser stays open by default; use `--no-keep` to auto-close + +## Agent Instructions for Running WebDriver Tests + +### MANDATORY Preflight Checklist (do this BEFORE any test) + +**Step 1: Clean environment first** +```bash +npm run driver:cleanup # Cleans sessions, kills stale processes, quits macOS app +``` + +**Step 2: Start driver (in background terminal or with `&`)** +```bash +npm run driver:macos & # or driver:ios +npm run driver:wait # Wait up to 60s for driver ready +``` + +**Step 3: Run your test** +```bash +npm run test:search-company -- --no-keep +``` + +### Simplified One-Line Commands (preferred) + +```bash +# Full automatic: cleanup → start driver → wait → run test → cleanup +npm run test:search-company:auto + +# Restart driver only (keeps app state) +npm run driver:restart:macos # or driver:restart:ios + +# Force kill everything (use if graceful cleanup fails) +npm run driver:kill +``` + +### CRITICAL: Rebuild After Code Changes + +**After modifying `webdriver/src/*.rs` or `webdriver/src/*.js`:** +```bash +npm run build-rust # JS files are embedded at compile time! +``` +Then restart the driver: `npm run driver:restart:macos` + +**After modifying apple-browsers automation server code:** +```bash +npm run build:macos # Rebuild the app +npm run driver:restart:macos +``` + +### Handling the "DuckDuckGo quit unexpectedly" Dialog + +This crash dialog appears when: +1. The driver process was killed without cleanly closing the browser +2. The macOS app didn't respond to graceful quit signals + +**Prevention:** +- Always use `npm run driver:cleanup` before starting tests +- Always pass `--no-keep` to auto-close the browser when test ends +- Use `npm run test:search-company:auto` which handles cleanup + +**Recovery:** +```bash +npm run driver:kill # Force kill everything +# Click "Ignore" on the crash dialog if it appears +npm run driver:macos # Start fresh +``` + +### Taking Screenshots for Debugging + +The WebDriver supports taking screenshots of the current page state - useful for debugging test failures or capturing visual evidence. + +**Quick screenshot during test:** +```bash +# Run search-company flow with screenshot at end +npm run test:search-company -- --screenshot --no-keep + +# Screenshots saved to: shared-web-tests/screenshots/ +``` + +**Programmatic screenshot in test code:** +```javascript +import { writeFile } from 'node:fs/promises'; + +// Take full page screenshot +const screenshotBase64 = await driver.takeScreenshot(); + +// Save to file +const buffer = Buffer.from(screenshotBase64, 'base64'); +await writeFile('debug-screenshot.png', buffer); +``` + +**Element screenshot (capture specific element):** +```javascript +const element = await driver.findElement(By.css('.my-selector')); +const elementScreenshot = await element.takeScreenshot(); +``` + +**When to use screenshots:** +- Test is failing and you need to see the page state +- Verifying visual state at specific points in a flow +- Documenting browser behavior for bug reports +- Capturing blocked tracker lists or privacy UI state + +**Screenshot location:** +- Default: `shared-web-tests/screenshots/` +- Filename format: `search-company-final-{timestamp}.png` + +### Common WebDriver Issues + +**Port 4444 already in use:** +```bash +npm run driver:cleanup # Preferred: cleans up properly +# or force: npm run driver:kill +``` + +**Session already started errors:** +```bash +npm run driver:cleanup # Deletes all sessions and restarts +``` + +**target="_blank" links:** +- Links with `target="_blank"` open new tabs, not navigate current page +- Solution: Use `driver.get(href)` instead of `element.click()` for such links +- Detection: Check `await element.getAttribute('target')` before clicking + +**Element not found:** +- Page may still be loading +- Use `waitForPageReady(driver)` helper before finding elements +- Verify selectors work in browser DevTools first + +**Click doesn't navigate:** +- Element may be obscured, or link has `target="_blank"` +- Check WebDriver logs for "clicked" responses without URL change +- Try direct navigation: `driver.get(targetUrl)` instead of clicking + +### WebDriver Commands Not Implemented + +If a Selenium method silently fails (returns null), check `webdriver/src/handler.rs` for the command implementation. Common missing commands fall through to the default case and return null. + +**Currently implemented:** NewSession, DeleteSession, Get, FindElement, FindElements, ElementClick, ElementSendKeys, ElementClear, ExecuteScript, ExecuteAsyncScript, GetCurrentUrl, GetTitle, GetPageSource, GetWindowHandle, GetWindowHandles, NewWindow, CloseWindow, SwitchToWindow, TakeScreenshot + +**To add a new command:** Add handler in `handler.rs`, rebuild with `npm run build-rust` diff --git a/.cursor/rules/webdriver-test-loop.mdc b/.cursor/rules/webdriver-test-loop.mdc new file mode 100644 index 0000000..3ddf121 --- /dev/null +++ b/.cursor/rules/webdriver-test-loop.mdc @@ -0,0 +1,154 @@ +--- +description: macOS WebDriver test development loop for agents +globs: + - shared-web-tests/webdriver/** + - shared-web-tests/scripts/** +--- + +# WebDriver Test Development Loop + +Use this rule when developing or debugging WebDriver tests against the macOS DuckDuckGo browser. + +## Before Writing Tests + +**Always inspect the target page HTML first** to understand what elements exist: + +```bash +# Fetch and inspect page structure +curl -s https://example.com/ | head -100 + +# Check for dynamic JS that loads content +curl -s https://example.com/index.mjs +``` + +This helps you: +- Know what selectors to use (`a[href]`, specific IDs, classes) +- Understand if content is static or dynamically loaded +- Avoid searching for elements that don't exist (e.g., buttons on a links-only page) + +## Development Loop + +### Step 1: Build everything and start driver + +```bash +cd shared-web-tests +npm run build-rust && npm run build:macos && npm run driver:macos +``` + +This builds the Rust WebDriver, builds the macOS browser, and starts the driver. The driver runs in the foreground - leave this terminal open. + +### Step 2: Run tests (separate terminal) + +```bash +cd shared-web-tests +npm run test:search-company +``` + +Add `-- --no-keep` to auto-close the browser after the test completes. + +### Iterate: After making changes + +After modifying Rust code (`handler.rs`) or macOS code: + +```bash +# Terminal 1: Stop driver (Ctrl+C), then rebuild and restart +npm run build-rust && npm run build:macos && npm run driver:macos +``` + +```bash +# Terminal 2: Run test again +npm run test:search-company +``` + +### Quick Restart (driver only, no rebuilds) + +```bash +pkill -f ddgdriver; npm run driver:macos +``` + +## Key Files + +| File | Purpose | +|------|---------| +| `webdriver/src/handler.rs` | WebDriver command handlers (Rust) | +| `webdriver/src/find-elements.js` | JavaScript injected for FindElements | +| `scripts/search-company-flow.mjs` | Test script for click-through flow | +| `webdriver/output.log` | WebDriver server logs | + +## Writing Test Scripts + +### Keep it simple + +1. **Know your page** - inspect HTML before writing selectors +2. **Use specific selectors** - `a[href]` for links, not broad patterns +3. **Minimal retries** - if elements aren't there, they aren't there +4. **Log clearly** - show what was found and what was clicked + +### Example: Finding and clicking links + +```javascript +// Simple link finding - no retries needed if page is loaded +const links = await driver.findElements(By.css('a[href]')); +console.log(`Found ${links.length} links`); + +for (const link of links) { + const href = await link.getAttribute('href'); + const text = await link.getText(); + console.log(` - ${text}: ${href}`); +} +``` + +## Debugging + +### Take Screenshots + +Capture page state for debugging when tests fail or behave unexpectedly: + +```bash +# Run with screenshot capture at end +npm run test:search-company -- --screenshot --no-keep + +# Screenshots saved to: shared-web-tests/screenshots/ +``` + +**In test code:** +```javascript +// Capture current page state +const screenshot = await driver.takeScreenshot(); +const buffer = Buffer.from(screenshot, 'base64'); +await writeFile('debug-state.png', buffer); +``` + +Use screenshots to: +- See actual page state when elements aren't found +- Verify navigation completed correctly +- Document blocked trackers or privacy UI + +### Check WebDriver Logs + +```bash +# View FindElements results +grep -E "FindElements raw response|element_ids" webdriver/output.log | tail -20 + +# Check for errors +grep -E "error|Error|PoisonError" webdriver/output.log | tail -20 +``` + +### Common Issues + +| Symptom | Cause | Fix | +|---------|-------|-----| +| `element_ids: []` but UUIDs in response | Old Rust binary | `npm run build-rust` | +| `ECONNREFUSED 127.0.0.1:4444` | Driver not running | Start driver in another terminal | +| `PoisonError` in logs | Driver thread panic | Restart driver | +| `Found 0 links` | Wrong selector or page not loaded | Inspect page HTML, wait for JS | + +## Test Page Reference + +### search-company.site + +The test page at `https://www.search-company.site/`: +- Loads ads dynamically via `index.mjs` +- Creates `` links with IDs like `ad-id-0`, `ad-id-1` +- Links are inside `
` elements +- Use selector `a[href]` to find all clickable ads diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 6bd2b7d..47dea16 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -14,4 +14,4 @@ updates: interval: 'weekly' target-branch: 'main' labels: - - 'dependencies' \ No newline at end of file + - 'dependencies' diff --git a/.gitignore b/.gitignore index 16d8d68..a735500 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ build/ -node_modules/ \ No newline at end of file +node_modules/ +.DS_Store +output.log +screenshots/ \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index e330e77..9f4f69b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ build/ -web-platform-tests/ \ No newline at end of file +web-platform-tests/ +webdriver/target/ \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index ba94134..05af754 100644 --- a/.prettierrc +++ b/.prettierrc @@ -2,4 +2,4 @@ "singleQuote": true, "printWidth": 140, "tabWidth": 4 -} \ No newline at end of file +} diff --git a/LICENSE.md b/LICENSE.md index 56ccf64..cc99554 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,9 @@ Copyright (c) 2025 Duck Duck Go, Inc. ## Apache License + ### Version 2.0, January 2004 + ###### http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -33,11 +35,12 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION **3. Grant of Patent License**. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. **4. Redistribution**. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: - 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and - 1. You must cause any modified files to carry prominent notices stating that You changed the files; and - 1. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and - 1. If the Work includes a "**NOTICE**" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. - You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +1. You must give any other recipients of the Work or Derivative Works a copy of this License; and +1. You must cause any modified files to carry prominent notices stating that You changed the files; and +1. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +1. If the Work includes a "**NOTICE**" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. **5. Submission of Contributions**. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. @@ -51,9 +54,6 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION END OF TERMS AND CONDITIONS - - - # The 3-Clause BSD License Copyright © web-platform-tests contributors @@ -65,4 +65,3 @@ Redistribution and use in source and binary forms, with or without modification, 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/README.md b/README.md index 78d158a..94af3a0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,6 @@ We repackage a few tests and rebuild the manifest. ## Test format - ## Running the test server To start the example test server run the following command: @@ -64,28 +63,139 @@ See more details: https://web-platform-tests.org/tools/certs/README.html The client will need to import this root ca to be able to trust the server. For Apple devices this can be done by running the following command: + ```bash xcrun simctl keychain booted add-root-cert path/to/shared-web-tests/web-platform-tests/tools/certs/cacert.pem ``` - Getting logs from the emulator: + ```bash xcrun simctl spawn booted log show --last 900m --info --debug --predicate 'subsystem == "com.duckduckgo.mobile.ios"' --style compact ``` -Building the iOS test build: +## Apple WebDriver Testing (iOS & macOS) + +### Quick Start + +```bash +# Terminal 1: Build the app (first time or after code changes) +npm run build:ios # or npm run build:macos + +# Terminal 1: Start the WebDriver server +npm run driver:ios # or npm run driver:macos + +# Terminal 2: Run the example test (must match the platform from Terminal 1!) +npm run example # defaults to iOS, or use npm run example:ios / npm run example:macos + +# ⚠️ Important: The example command connects to whatever driver is running. +# Make sure you run the matching platform driver and example commands! +# Default is iOS - use npm run example:macos for macOS. + +# Or run the full test suite +npm run test:ios # or npm run test:macos +``` + +### Options + +```bash +# Build from a different apple-browsers location +./scripts/apple-webdriver.sh build ios /path/to/apple-browsers +./scripts/apple-webdriver.sh build macos /path/to/apple-browsers + +# Browser stays open by default (use --no-keep to close automatically) +./scripts/apple-webdriver.sh example ios +./scripts/apple-webdriver.sh example macos + +# Navigate to a specific URL +./scripts/apple-webdriver.sh example ios https://duckduckgo.com +./scripts/apple-webdriver.sh example macos https://duckduckgo.com + +# Close browser automatically after test +./scripts/apple-webdriver.sh example macos https://duckduckgo.com --no-keep +``` + +### Environment Variables + +- `APPLE_BROWSERS_DIR` - Path to apple-browsers repo (default: `../apple-browsers`) +- `DERIVED_DATA_PATH` - Path to DerivedData containing the built app +- `MACOS_APP_PATH` - Path to macOS app (for macos platform) +- `TARGET_PLATFORM` - Target platform (`ios` or `macos`) +- `PLATFORM` - Platform override (`ios` or `macos`) + +### Manual Steps (if needed) + +Building the iOS app: + +```bash +cd ../apple-browsers +source .maestro/common.sh && build_app 1 +``` + +The iOS app will be built to `apple-browsers/DerivedData/Build/Products/Debug-iphonesimulator/DuckDuckGo.app` + +Building the macOS app: + ```bash -source .maestro/common.sh && build_app +cd ../apple-browsers +xcodebuild -project macOS/DuckDuckGo-macOS.xcodeproj \ + -scheme "macOS Browser" \ + -derivedDataPath DerivedData \ + -skipPackagePluginValidation \ + -skipMacroValidation ``` -Building the web driver API: +The macOS app will be built to `apple-browsers/DerivedData/Build/Products/Debug/DuckDuckGo.app` + +Building the WebDriver: + ```bash cd webdriver cargo build ``` -Running the suite: +Starting the driver manually: + ```bash -./wpt run --product duckduckgo --binary ~/duckduckgo/shared-web-tests/webdriver/target/debug/ddgdriver --log-mach - --log-mach-level info duckduckgo -``` \ No newline at end of file +# iOS +cd webdriver +DERIVED_DATA_PATH="../../apple-browsers/DerivedData" ./target/debug/ddgdriver --port 4444 + +# macOS +cd webdriver +MACOS_APP_PATH="../../apple-browsers/DerivedData/Build/Products/Debug/DuckDuckGo.app" \ +TARGET_PLATFORM=macos \ +DERIVED_DATA_PATH="../../apple-browsers/DerivedData" \ +./target/debug/ddgdriver --port 4444 +``` + +Running the example test manually: + +```bash +npm run webdriver:example +# or with options +node scripts/selenium-navigate-example.mjs https://duckduckgo.com --keep +``` + +Running the full suite: + +```bash +# iOS +./build/wpt run --product duckduckgo --binary webdriver/target/debug/ddgdriver --log-mach - --log-mach-level info duckduckgo + +# macOS +source build/_venv3/bin/activate +export MACOS_APP_PATH="/path/to/DuckDuckGo.app" +TARGET_PLATFORM=macos ./build/wpt run --product duckduckgo --binary webdriver/target/debug/ddgdriver --log-mach - --log-mach-level info duckduckgo +``` + +### macOS App Setup Requirements + +The macOS app must include the automation server. Ensure these files are added to the Xcode project's macOS target: + +- `macOS/DuckDuckGo/LaunchOptionsHandler.swift` +- `macOS/DuckDuckGo/Automation/AutomationServer.swift` + +The `AppDelegate.swift` must call `startAutomationServerIfNeeded()` in `applicationDidFinishLaunching`. + +The automation server reads `automationPort` from UserDefaults. The webdriver automatically detects the bundle ID from the app's Info.plist (handles both release `com.duckduckgo.macos.browser` and debug `com.duckduckgo.macos.browser.debug` builds). diff --git a/env.example b/env.example new file mode 100644 index 0000000..952553b --- /dev/null +++ b/env.example @@ -0,0 +1,10 @@ +# Nintendo Store Test Credentials +# Copy this file to .env and fill in your credentials +# DO NOT commit .env to version control + +# Nintendo Account credentials (required for digital game purchases) +NINTENDO_EMAIL=your-email@example.com +NINTENDO_PASSWORD=your-password + +# Optional: Skip login if you want to test guest flow only +# NINTENDO_SKIP_LOGIN=true diff --git a/eslint.config.js b/eslint.config.js index 7857ac8..ba30ddb 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -5,10 +5,7 @@ import globals from 'globals'; // @ts-check export default tseslint.config( { - ignores: [ - 'web-platform-tests', - 'build/**/*', - ], + ignores: ['web-platform-tests', 'build/**/*'], }, ...ddgConfig, ...tseslint.configs.recommended, @@ -40,4 +37,16 @@ export default tseslint.config( }, }, }, + { + // Browser scripts injected by webdriver - run in page context + files: ['webdriver/src/**/*.js'], + languageOptions: { + globals: { + ...globals.browser, + // Injected by webdriver before script execution + using: 'readonly', + value: 'readonly', + }, + }, + }, ); diff --git a/package-lock.json b/package-lock.json index 1b7c77d..a0361d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5360 +1,5360 @@ { - "name": "@duckduckgo/shared-web-tests", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@duckduckgo/shared-web-tests", - "version": "0.0.1", - "license": "Apache-2.0", - "dependencies": { - "@duckduckgo/eslint-config": "github:duckduckgo/eslint-config", - "eslint": "^9.15.0", - "http-server": "^14.1.1", - "typescript": "^5.6.3", - "typescript-eslint": "^8.15.0" - } - }, - "node_modules/@duckduckgo/eslint-config": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/duckduckgo/eslint-config.git#f4186a889de6492753998993b069b1b228d4554c", - "license": "ISC", - "dependencies": { - "@eslint/js": "^9.13.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-n": "^17.11.1", - "eslint-plugin-promise": "^7.1.0" - }, - "peerDependencies": { - "eslint": ">= 9" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", - "license": "Apache-2.0", - "dependencies": { - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", - "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/type-utils": "8.15.0", - "@typescript-eslint/utils": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", - "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", - "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", - "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/utils": "8.15.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", - "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", - "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", - "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", - "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.15.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", - "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", - "@eslint/plugin-kit": "^0.2.3", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", - "license": "MIT", - "dependencies": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", - "funding": [ - "https://github.com/sponsors/ota-meshi", - "https://opencollective.com/eslint" - ], - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": ">=8" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-n": { - "version": "17.13.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", - "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.1", - "enhanced-resolve": "^5.17.1", - "eslint-plugin-es-x": "^7.8.0", - "get-tsconfig": "^4.8.1", - "globals": "^15.11.0", - "ignore": "^5.3.2", - "minimatch": "^9.0.5", - "semver": "^7.6.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": ">=8.23.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", - "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", - "license": "ISC", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "dependencies": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - }, - "bin": { - "http-server": "bin/http-server" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "license": "MIT", - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "license": "MIT" - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", - "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.15.0", - "@typescript-eslint/parser": "8.15.0", - "@typescript-eslint/utils": "8.15.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "dependencies": { - "qs": "^6.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - }, - "dependencies": { - "@duckduckgo/eslint-config": { - "version": "git+ssh://git@github.com/duckduckgo/eslint-config.git#f4186a889de6492753998993b069b1b228d4554c", - "from": "@duckduckgo/eslint-config@github:duckduckgo/eslint-config", - "requires": { - "@eslint/js": "^9.13.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-n": "^17.11.1", - "eslint-plugin-promise": "^7.1.0" - } - }, - "@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "requires": { - "eslint-visitor-keys": "^3.4.3" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" - } - } - }, - "@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" - }, - "@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", - "requires": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "dependencies": { - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } - } - } - }, - "@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==" - }, - "@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } + "name": "@duckduckgo/shared-web-tests", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@duckduckgo/shared-web-tests", + "version": "0.0.1", + "license": "Apache-2.0", + "dependencies": { + "@duckduckgo/eslint-config": "github:duckduckgo/eslint-config", + "eslint": "^9.15.0", + "http-server": "^14.1.1", + "typescript": "^5.6.3", + "typescript-eslint": "^8.15.0" + } + }, + "node_modules/@duckduckgo/eslint-config": { + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/duckduckgo/eslint-config.git#f4186a889de6492753998993b069b1b228d4554c", + "license": "ISC", + "dependencies": { + "@eslint/js": "^9.13.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-n": "^17.11.1", + "eslint-plugin-promise": "^7.1.0" + }, + "peerDependencies": { + "eslint": ">= 9" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/core": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/js": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", + "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.15.0", + "@typescript-eslint/type-utils": "8.15.0", + "@typescript-eslint/utils": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", + "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.15.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/typescript-estree": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", + "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", + "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.15.0", + "@typescript-eslint/utils": "8.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", + "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", + "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", + "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.15.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/typescript-estree": "8.15.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", + "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.15.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.5", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-n": { + "version": "17.13.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", + "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.1", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "ignore": "^5.3.2", + "minimatch": "^9.0.5", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", + "license": "ISC", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "license": "MIT" + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", + "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.15.0", + "@typescript-eslint/parser": "8.15.0", + "@typescript-eslint/utils": "8.15.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } - } }, - "@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==" - }, - "@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==" - }, - "@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", - "requires": { - "levn": "^0.4.1" - } - }, - "@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==" - }, - "@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "requires": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "dependencies": { + "dependencies": { + "@duckduckgo/eslint-config": { + "version": "git+ssh://git@github.com/duckduckgo/eslint-config.git#f4186a889de6492753998993b069b1b228d4554c", + "from": "@duckduckgo/eslint-config@github:duckduckgo/eslint-config", + "requires": { + "@eslint/js": "^9.13.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-n": "^17.11.1", + "eslint-plugin-promise": "^7.1.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "requires": { + "eslint-visitor-keys": "^3.4.3" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" + } + } + }, + "@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" + }, + "@eslint/config-array": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "requires": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + } + } + }, + "@eslint/core": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==" + }, + "@eslint/eslintrc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + } + } + }, + "@eslint/js": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==" + }, + "@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==" + }, + "@eslint/plugin-kit": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "requires": { + "levn": "^0.4.1" + } + }, + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==" + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "requires": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "dependencies": { + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==" + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, "@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==" - } - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - }, - "@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" - }, - "@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" - }, - "@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", - "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", - "requires": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/type-utils": "8.15.0", - "@typescript-eslint/utils": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - } - }, - "@typescript-eslint/parser": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", - "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", - "requires": { - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", - "debug": "^4.3.4" - }, - "dependencies": { - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } - } - } - }, - "@typescript-eslint/scope-manager": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", - "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", - "requires": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", - "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", - "requires": { - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/utils": "8.15.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "dependencies": { - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } - } - } - }, - "@typescript-eslint/types": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", - "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==" - }, - "@typescript-eslint/typescript-estree": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", - "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", - "requires": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "dependencies": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" + }, + "@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==" + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", + "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", + "requires": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.15.0", + "@typescript-eslint/type-utils": "8.15.0", + "@typescript-eslint/utils": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + } + }, + "@typescript-eslint/parser": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", + "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", + "requires": { + "@typescript-eslint/scope-manager": "8.15.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/typescript-estree": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", + "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", + "requires": { + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", + "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", + "requires": { + "@typescript-eslint/typescript-estree": "8.15.0", + "@typescript-eslint/utils": "8.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + } + } + }, + "@typescript-eslint/types": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", + "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==" + }, + "@typescript-eslint/typescript-estree": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", + "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", + "requires": { + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/visitor-keys": "8.15.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "@typescript-eslint/utils": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", + "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.15.0", + "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/typescript-estree": "8.15.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", + "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", + "requires": { + "@typescript-eslint/types": "8.15.0", + "eslint-visitor-keys": "^4.2.0" + } + }, + "acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "requires": { + "lodash": "^4.17.14" + } + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "requires": { + "fill-range": "^7.1.1" + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" + }, + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "es-abstract": { + "version": "1.23.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", + "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "eslint": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.5", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "dependencies": { + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } + } + }, + "eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "requires": { + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "requires": { + "debug": "^3.2.7" + } + }, + "eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "requires": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" + } + }, + "eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "requires": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "^2.0.2" + } + } + } + }, + "eslint-plugin-n": { + "version": "17.13.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", + "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", + "requires": { + "@eslint-community/eslint-utils": "^4.4.1", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "ignore": "^5.3.2", + "minimatch": "^9.0.5", + "semver": "^7.6.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "globals": { + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==" + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "eslint-plugin-promise": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", + "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", + "requires": {} + }, + "eslint-scope": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==" + }, + "espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "requires": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + } + }, + "esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "requires": { + "flat-cache": "^4.0.0" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + } + }, + "flatted": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==" + }, + "follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "requires": { + "resolve-pkg-maps": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==" + }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "requires": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "requires": { + "is-typed-array": "^1.1.13" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "requires": { + "call-bind": "^1.0.7" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "requires": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, + "object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "requires": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + } + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "qs": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "requires": { + "side-channel": "^1.0.6" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "requires": { - "brace-expansion": "^2.0.1" - } + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, - "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" - } - } - }, - "@typescript-eslint/utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", - "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", - "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", - "requires": { - "@typescript-eslint/types": "8.15.0", - "eslint-visitor-keys": "^4.2.0" - } - }, - "acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - } - }, - "array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - } - }, - "array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - } - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" - } - }, - "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "requires": { - "possible-typed-array-names": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "requires": { - "fill-range": "^7.1.1" - } - }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "corser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", - "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==" - }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "es-abstract": { - "version": "1.23.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.5.tgz", - "integrity": "sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - } - }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "requires": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - } - }, - "es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "requires": { - "hasown": "^2.0.0" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", - "@eslint/plugin-kit": "^0.2.3", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "dependencies": { - "debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "requires": { - "ms": "^2.1.3" - } - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - } - } - }, - "eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", - "requires": { - "semver": "^7.5.4" - }, - "dependencies": { - "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" - } - } - }, - "eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", - "requires": { - "debug": "^3.2.7" - } - }, - "eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", - "requires": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" - } - }, - "eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "requires": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - } - } - }, - "eslint-plugin-n": { - "version": "17.13.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.13.2.tgz", - "integrity": "sha512-MhBAKkT01h8cOXcTBTlpuR7bxH5OBUNpUXefsvwSVEy46cY4m/Kzr2osUCQvA3zJFD6KuCeNNDv0+HDuWk/OcA==", - "requires": { - "@eslint-community/eslint-utils": "^4.4.1", - "enhanced-resolve": "^5.17.1", - "eslint-plugin-es-x": "^7.8.0", - "get-tsconfig": "^4.8.1", - "globals": "^15.11.0", - "ignore": "^5.3.2", - "minimatch": "^9.0.5", - "semver": "^7.6.3" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "requires": { - "balanced-match": "^1.0.0" - } + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } }, - "globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==" + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "requires": { - "brace-expansion": "^2.0.1" - } + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" }, "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" - } - } - }, - "eslint-plugin-promise": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-7.1.0.tgz", - "integrity": "sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==", - "requires": {} - }, - "eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==" - }, - "espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "requires": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - } - }, - "esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "requires": { - "reusify": "^1.0.4" - } - }, - "file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "requires": { - "flat-cache": "^4.0.0" - } - }, - "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - } - }, - "flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==" - }, - "follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "requires": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - } - }, - "get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", - "requires": { - "resolve-pkg-maps": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==" - }, - "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-server": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", - "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", - "requires": { - "basic-auth": "^2.0.1", - "chalk": "^4.1.2", - "corser": "^2.0.1", - "he": "^1.2.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy": "^1.18.1", - "mime": "^1.6.0", - "minimist": "^1.2.6", - "opener": "^1.5.1", - "portfinder": "^1.0.28", - "secure-compare": "3.0.1", - "union": "~0.5.0", - "url-join": "^4.0.1" - } - }, - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - }, - "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "requires": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - } - }, - "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - } - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - }, - "is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "requires": { - "hasown": "^2.0.2" - } - }, - "is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "requires": { - "is-typed-array": "^1.1.13" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "requires": { - "call-bind": "^1.0.7" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "requires": { - "which-typed-array": "^1.1.14" - } - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "requires": { - "call-bind": "^1.0.2" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "requires": { - "argparse": "^2.0.1" - } - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "requires": { - "minimist": "^1.2.0" - } - }, - "keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "requires": { - "json-buffer": "3.0.1" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "requires": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - } - }, - "object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - } - }, - "object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" - }, - "optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "requires": { - "p-limit": "^3.0.2" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", - "requires": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - } - }, - "possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" - }, - "qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "requires": { - "side-channel": "^1.0.6" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.2" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "requires": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "ts-api-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "requires": {} + }, + "tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, + "typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==" + }, + "typescript-eslint": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", + "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", + "requires": { + "@typescript-eslint/eslint-plugin": "8.15.0", + "@typescript-eslint/parser": "8.15.0", + "@typescript-eslint/utils": "8.15.0" + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "requires": { + "qs": "^6.4.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "requires": { + "iconv-lite": "0.6.3" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "requires": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "secure-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", - "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - } - }, - "string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", - "requires": {} - }, - "tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "requires": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - } - }, - "typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "requires": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - } - }, - "typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==" - }, - "typescript-eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", - "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", - "requires": { - "@typescript-eslint/eslint-plugin": "8.15.0", - "@typescript-eslint/parser": "8.15.0", - "@typescript-eslint/utils": "8.15.0" - } - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "union": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", - "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", - "requires": { - "qs": "^6.4.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "requires": { - "iconv-lite": "0.6.3" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - } - }, - "word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } - } } diff --git a/package.json b/package.json index c79b230..37d601d 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,104 @@ { - "name": "@duckduckgo/shared-web-tests", - "version": "0.0.1", - "description": "Shared test suite for web tests", - "files": [ - "dist/" - ], - "scripts": { - "start": "npm run build && npm run start-server", - "start-server": "python3 web-platform-tests/wpt.py serve --config ../build/wpt.config.json", - "build": "node scripts/build.mjs", - "tsc": "tsc", - "lint": "eslint . && npm run tsc && npx prettier . --check", - "lint-fix": "eslint . --fix && npx prettier . --write", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "type": "module", - "author": "DuckDuckGo", - "license": "Apache-2.0", - "dependencies": { - "@duckduckgo/eslint-config": "github:duckduckgo/eslint-config", - "eslint": "^9.15.0", - "http-server": "^14.1.1", - "typescript": "^5.6.3", - "typescript-eslint": "^8.15.0" - } + "name": "@duckduckgo/shared-web-tests", + "version": "0.0.1", + "description": "Shared test suite for web tests", + "files": [ + "dist/" + ], + "scripts": { + "start": "npm run build && npm run start-server", + "start-server": "python3 web-platform-tests/wpt.py serve --config ../build/wpt.config.json", + "build": "node scripts/build.mjs && npm run copy-cert && npm run build-rust || exit 1", + "copy-cert": "cp build/tools/certs/cacert.pem webdriver/", + "build-rust": "cd webdriver && cargo build || exit 1", + "tsc": "tsc", + "lint": "eslint . && npm run tsc && npx prettier . --check", + "lint-fix": "eslint . --fix && npx prettier . --write", + "install-hosts": "./build/wpt make-hosts-file | tee -a /etc/hosts", + "test": "./build/wpt run --product duckduckgo --binary webdriver/target/debug/ddgdriver --log-mach - --log-mach-level debug --log-mach-verbose duckduckgo", + "webdriver:example": "node scripts/selenium-navigate-example.mjs", + "test:run": "node scripts/test-runner.mjs", + "test:check": "node scripts/test-runner.mjs --check", + "test:search-company": "node scripts/search-company-flow.mjs", + "test:search-company:auto": "node scripts/test-runner.mjs", + "test:nintendo-basket": "node scripts/nintendo-basket-flow.mjs", + "test:nintendo-basket:auto": "node scripts/test-runner.mjs --script nintendo-basket-flow.mjs", + "test:nintendo-us-checkout": "node scripts/nintendo-us-checkout-flow.mjs", + "test:nintendo-us-checkout:auto": "node scripts/test-runner.mjs --script nintendo-us-checkout-flow.mjs", + "test:nintendo-unprotected": "node scripts/nintendo-unprotected-test.mjs", + "test:nintendo-unprotected:compare": "node scripts/nintendo-unprotected-test.mjs --compare", + "test:race-condition": "node scripts/race-condition-test.mjs", + "test:race-condition:control": "node scripts/chrome-control-test.mjs", + "chrome:debug": "node scripts/chrome-debug-page.mjs", + "chrome:debug:all": "node scripts/chrome-debug-page.mjs --all", + "chrome:debug:json": "node scripts/chrome-debug-page.mjs --json", + "safari:debug": "node scripts/safari-debug-page.mjs", + "safari:debug:all": "node scripts/safari-debug-page.mjs --all", + "safari:debug:json": "node scripts/safari-debug-page.mjs --json", + "compare": "node scripts/compare-browsers.mjs", + "compare:trackers": "node scripts/compare-browsers.mjs --trackers", + "compare:all": "node scripts/compare-browsers.mjs --all", + "compare:json": "node scripts/compare-browsers.mjs --json", + "compare:safari": "node scripts/compare-browsers.mjs --safari", + "compare:safari:trackers": "node scripts/compare-browsers.mjs --safari --trackers", + "compare:safari:all": "node scripts/compare-browsers.mjs --safari --all", + "compare:safari:json": "node scripts/compare-browsers.mjs --safari --json", + "test:protection-toggle": "node scripts/protection-toggle-reliability-test.mjs", + "test:protection-toggle:protected": "node scripts/protection-toggle-reliability-test.mjs --protected-only", + "test:protection-toggle:unprotected": "node scripts/protection-toggle-reliability-test.mjs --unprotected-only", + "driver:status": "node scripts/driver-port-cmd.mjs status", + "driver:sessions": "node scripts/driver-port-cmd.mjs sessions", + "driver:wait": "node scripts/driver-port-cmd.mjs wait", + "driver:cleanup": "node scripts/driver-port-cmd.mjs cleanup && (pkill -f ddgdriver 2>/dev/null || true) && (osascript -e 'tell application \"DuckDuckGo\" to quit' 2>/dev/null || true) && (xcrun simctl list devices -j 2>/dev/null | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));Object.values(d.devices||{}).flat().filter(s=>s.name?.includes('(webdriver)')&&s.state==='Booted').forEach(s=>{console.log('Shutting down simulator:',s.name);require('child_process').execSync('xcrun simctl shutdown '+s.udid)})\" 2>/dev/null || true)", + "driver:kill": "(pkill -9 -f ddgdriver 2>/dev/null || true) && (pkill -9 -f 'DuckDuckGo.app' 2>/dev/null || true) && (xcrun simctl list devices -j 2>/dev/null | node -e \"const d=JSON.parse(require('fs').readFileSync(0,'utf8'));Object.values(d.devices||{}).flat().filter(s=>s.name?.includes('(webdriver)')&&s.state==='Booted').forEach(s=>{console.log('Shutting down simulator:',s.name);require('child_process').execSync('xcrun simctl shutdown '+s.udid)})\" 2>/dev/null || true) && echo 'Killed driver, app, and simulators'", + "driver:restart:ios": "npm run driver:cleanup && sleep 1 && npm run driver:ios", + "driver:restart:macos": "npm run driver:cleanup && sleep 1 && npm run driver:macos", + "build:ios": "./scripts/apple-webdriver.sh build ios", + "build:macos": "./scripts/apple-webdriver.sh build macos", + "driver:ios": "./scripts/apple-webdriver.sh driver ios", + "driver:macos": "./scripts/apple-webdriver.sh driver macos", + "example": "./scripts/apple-webdriver.sh example ios", + "example:ios": "./scripts/apple-webdriver.sh example ios", + "example:macos": "./scripts/apple-webdriver.sh example macos", + "example:keep": "./scripts/apple-webdriver.sh example ios --keep", + "example:macos:keep": "./scripts/apple-webdriver.sh example macos --keep", + "test:ios": "./scripts/apple-webdriver.sh test ios", + "test:macos": "./scripts/apple-webdriver.sh test macos", + "debug:page": "node scripts/debug-page.mjs", + "debug:links": "node scripts/debug-page.mjs --links", + "debug:inputs": "node scripts/debug-page.mjs --inputs", + "debug:modals": "node scripts/debug-page.mjs --modals", + "debug:console": "node scripts/debug-page.mjs --console", + "debug:console:start": "node scripts/debug-page.mjs --console-start", + "debug:console:stop": "node scripts/debug-page.mjs --console-stop", + "debug:errors": "node scripts/debug-page.mjs --errors", + "debug:all": "node scripts/debug-page.mjs --all", + "diagnose": "node scripts/diagnose-site.mjs", + "diagnose:screenshot": "node scripts/diagnose-site.mjs --screenshot", + "diagnose:deep": "node scripts/diagnose-site.mjs --max-clicks 30 --max-depth 5", + "config:serve": "node scripts/serve-test-config.mjs", + "config:serve:custom": "node scripts/serve-test-config.mjs --config", + "build:macos-with-fix": "node scripts/build-macos-with-config-fix.mjs", + "build:macos-with-fix:dry": "node scripts/build-macos-with-config-fix.mjs --dry-run", + "build:macos-with-fix:config-only": "node scripts/build-macos-with-config-fix.mjs --skip-app-build", + "config:restore": "node scripts/build-macos-with-config-fix.mjs --restore", + "investigate:hover": "node scripts/investigate-hover-bug.mjs", + "investigate:hover:keep": "node scripts/investigate-hover-bug.mjs --keep", + "investigate:hover:screenshot": "node scripts/investigate-hover-bug.mjs --screenshot" + }, + "type": "module", + "author": "DuckDuckGo", + "license": "Apache-2.0", + "dependencies": { + "@duckduckgo/eslint-config": "github:duckduckgo/eslint-config", + "eslint": "^9.15.0", + "http-server": "^14.1.1", + "typescript": "^5.6.3", + "typescript-eslint": "^8.15.0" + }, + "devDependencies": { + "@types/node": "^22.10.0", + "prettier": "^3.7.4", + "selenium-webdriver": "^4.35.0" + } } diff --git a/screenshots/search-company-final-2026-01-22T02-39-45-131Z.png b/screenshots/search-company-final-2026-01-22T02-39-45-131Z.png new file mode 100644 index 0000000..82812a2 Binary files /dev/null and b/screenshots/search-company-final-2026-01-22T02-39-45-131Z.png differ diff --git a/scripts/apple-webdriver.sh b/scripts/apple-webdriver.sh new file mode 100755 index 0000000..1b5c909 --- /dev/null +++ b/scripts/apple-webdriver.sh @@ -0,0 +1,285 @@ +#!/bin/bash +set -e + +# Apple WebDriver setup and run script (iOS & macOS) +# Usage: +# ./scripts/apple-webdriver.sh build [ios|macos] [path] - Build the app (default: ios, ../apple-browsers) +# ./scripts/apple-webdriver.sh driver [ios|macos] [path] - Start ddgdriver (run in separate terminal) +# ./scripts/apple-webdriver.sh example [--keep] [url] - Run the example test (--keep keeps browser open) +# ./scripts/apple-webdriver.sh test [ios|macos] - Run the full test suite +# +# Environment: +# WEBDRIVER_PORT - Port for ddgdriver (default: 4444) + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +WEBDRIVER_PORT="${WEBDRIVER_PORT:-4444}" +SHARED_WEB_TESTS_DIR="$(dirname "$SCRIPT_DIR")" +REPO_ROOT="$(dirname "$SHARED_WEB_TESTS_DIR")" + +# Default apple-browsers path, can be overridden via argument or env var +APPLE_BROWSERS_DIR="${APPLE_BROWSERS_DIR:-$REPO_ROOT/apple-browsers}" +DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-$APPLE_BROWSERS_DIR/DerivedData}" + +export DERIVED_DATA_PATH + +# Detect platform from first argument if it's ios/macos, otherwise default to ios +detect_platform() { + local first_arg="$1" + if [ "$first_arg" = "ios" ] || [ "$first_arg" = "macos" ]; then + echo "$first_arg" + return 0 + fi + # Always default to ios + echo "ios" +} + +case "${1:-help}" in + build) + PLATFORM=$(detect_platform "$2") + # Allow path override as third argument (or second if platform not specified) + if [ "$PLATFORM" = "ios" ] || [ "$PLATFORM" = "macos" ]; then + if [ -n "$3" ]; then + APPLE_BROWSERS_DIR="$(cd "$3" && pwd)" + DERIVED_DATA_PATH="$APPLE_BROWSERS_DIR/DerivedData" + export DERIVED_DATA_PATH + fi + else + # Platform not specified, second arg is path + if [ -n "$2" ]; then + APPLE_BROWSERS_DIR="$(cd "$2" && pwd)" + DERIVED_DATA_PATH="$APPLE_BROWSERS_DIR/DerivedData" + export DERIVED_DATA_PATH + PLATFORM="ios" # Default + fi + fi + + if [ ! -d "$APPLE_BROWSERS_DIR/.maestro" ]; then + echo "❌ Error: Cannot find .maestro in $APPLE_BROWSERS_DIR" + echo " Specify path: $0 build $PLATFORM /path/to/apple-browsers" + exit 1 + fi + + # Build the WebDriver binary first (needed for both platforms) + echo "⏲️ Building WebDriver binary..." + cd "$SHARED_WEB_TESTS_DIR/webdriver" + if ! cargo build; then + echo "❌ Error: Failed to build WebDriver binary" + exit 1 + fi + echo "✅ WebDriver binary built" + + echo "Building $PLATFORM app from: $APPLE_BROWSERS_DIR" + cd "$APPLE_BROWSERS_DIR" + + if [ "$PLATFORM" = "macos" ]; then + # Build macOS app + echo "⏲️ Building macOS app" + set -o pipefail && xcodebuild -workspace DuckDuckGo.xcworkspace \ + -scheme "macOS Browser" \ + -derivedDataPath "$DERIVED_DATA_PATH" \ + -skipPackagePluginValidation \ + -skipMacroValidation \ + ONLY_ACTIVE_ARCH=NO | tee xcodebuild.log + if [ $? -ne 0 ]; then + echo "‼️ Unable to build macOS app into $DERIVED_DATA_PATH" + exit 1 + fi + APP_PATH="$DERIVED_DATA_PATH/Build/Products/Debug/DuckDuckGo.app" + echo "✅ macOS app built at: $APP_PATH" + else + # Build iOS app + # shellcheck source=/dev/null + source .maestro/common.sh + build_app 1 + APP_PATH="$DERIVED_DATA_PATH/Build/Products/Debug-iphonesimulator/DuckDuckGo.app" + echo "✅ iOS app built at: $APP_PATH" + fi + ;; + + driver) + PLATFORM=$(detect_platform "$2") + # Allow derived data path override + if [ "$PLATFORM" = "ios" ] || [ "$PLATFORM" = "macos" ]; then + if [ -n "$3" ]; then + DERIVED_DATA_PATH="$(cd "$3" && pwd)" + export DERIVED_DATA_PATH + fi + else + # Platform not specified, second arg is path + if [ -n "$2" ]; then + DERIVED_DATA_PATH="$(cd "$2" && pwd)" + export DERIVED_DATA_PATH + fi + PLATFORM="ios" # Default + fi + + if [ "$PLATFORM" = "macos" ]; then + APP_PATH="$DERIVED_DATA_PATH/Build/Products/Debug/DuckDuckGo.app" + if [ ! -d "$APP_PATH" ]; then + echo "❌ Error: macOS app not found at $APP_PATH" + echo " Run '$0 build macos' first, or specify path: $0 driver macos /path/to/DerivedData" + exit 1 + fi + # Set environment variables for macOS + export MACOS_APP_PATH="$APP_PATH" + export TARGET_PLATFORM="macos" + else + # Clear macOS-specific vars for iOS + unset MACOS_APP_PATH + unset TARGET_PLATFORM + APP_PATH="$DERIVED_DATA_PATH/Build/Products/Debug-iphonesimulator/DuckDuckGo.app" + if [ ! -d "$APP_PATH" ]; then + echo "❌ Error: iOS app not found at $APP_PATH" + echo " Run '$0 build ios' first, or specify path: $0 driver ios /path/to/DerivedData" + exit 1 + fi + fi + + echo "Starting ddgdriver on port $WEBDRIVER_PORT for $PLATFORM..." + echo "DERIVED_DATA_PATH=$DERIVED_DATA_PATH" + if [ "$PLATFORM" = "macos" ]; then + export MACOS_APP_PATH="$APP_PATH" + export TARGET_PLATFORM="macos" + echo "MACOS_APP_PATH=$MACOS_APP_PATH" + echo "TARGET_PLATFORM=$TARGET_PLATFORM" + else + # Explicitly unset for iOS to avoid confusion + unset TARGET_PLATFORM + unset MACOS_APP_PATH + fi + cd "$SHARED_WEB_TESTS_DIR/webdriver" + + # Build if needed + if [ ! -f "target/debug/ddgdriver" ]; then + echo "Building ddgdriver..." + cargo build + else + # Check if binary needs rebuild (if source files are newer) + if [ "webdriver/src/handler.rs" -nt "target/debug/ddgdriver" ] 2>/dev/null; then + echo "⚠️ ddgdriver source files are newer than binary. Rebuilding..." + cargo build + fi + fi + + # Verify environment variables are set before starting + if [ "$PLATFORM" = "macos" ]; then + echo "Verifying environment before starting driver..." + echo " TARGET_PLATFORM=${TARGET_PLATFORM:-}" + echo " MACOS_APP_PATH=${MACOS_APP_PATH:-}" + if [ -z "$TARGET_PLATFORM" ] || [ "$TARGET_PLATFORM" != "macos" ]; then + echo "❌ Error: TARGET_PLATFORM not set correctly!" + exit 1 + fi + fi + + # Explicitly pass environment variables to the ddgdriver process + # Use env to ensure they're passed through, and print them for debugging + if [ "$PLATFORM" = "macos" ]; then + echo "Launching ddgdriver with environment:" + echo " TARGET_PLATFORM=$TARGET_PLATFORM" + echo " MACOS_APP_PATH=$MACOS_APP_PATH" + echo " DERIVED_DATA_PATH=$DERIVED_DATA_PATH" + # Verify the variables are actually set + if [ -z "$TARGET_PLATFORM" ] || [ "$TARGET_PLATFORM" != "macos" ]; then + echo "❌ Error: TARGET_PLATFORM is not set to 'macos'!" + exit 1 + fi + # Use exec env to replace the shell process and ensure env vars are passed + exec env TARGET_PLATFORM="$TARGET_PLATFORM" \ + MACOS_APP_PATH="$MACOS_APP_PATH" \ + DERIVED_DATA_PATH="$DERIVED_DATA_PATH" \ + ./target/debug/ddgdriver --port "$WEBDRIVER_PORT" + else + # For iOS, make sure TARGET_PLATFORM is not set + exec env -u TARGET_PLATFORM \ + -u MACOS_APP_PATH \ + DERIVED_DATA_PATH="$DERIVED_DATA_PATH" \ + ./target/debug/ddgdriver --port "$WEBDRIVER_PORT" + fi + ;; + + example) + shift + PLATFORM=$(detect_platform "$1") + # If first arg is a platform, shift it out + if [ "$PLATFORM" = "ios" ] || [ "$PLATFORM" = "macos" ]; then + shift + fi + echo "Running webdriver example for $PLATFORM..." + if [ -z "$1" ] || [ "$1" != "ios" ] && [ "$1" != "macos" ]; then + echo "⚠️ Note: Defaulting to iOS. Make sure you started the driver with: $0 driver $PLATFORM" + else + echo "⚠️ Note: Make sure you started the driver with: $0 driver $PLATFORM" + fi + echo "" + cd "$SHARED_WEB_TESTS_DIR" + PLATFORM="$PLATFORM" TARGET_PLATFORM="$PLATFORM" node scripts/selenium-navigate-example.mjs "$@" + ;; + + test) + PLATFORM=$(detect_platform "$2") + echo "Running full test suite for $PLATFORM..." + cd "$SHARED_WEB_TESTS_DIR" + + if [ "$PLATFORM" = "macos" ]; then + # Find macOS app if not set + if [ -z "$MACOS_APP_PATH" ]; then + MACOS_APP_PATH="$DERIVED_DATA_PATH/Build/Products/Debug/DuckDuckGo.app" + if [ ! -d "$MACOS_APP_PATH" ]; then + echo "❌ Error: macOS app not found at $MACOS_APP_PATH" + echo " Run '$0 build macos' first" + exit 1 + fi + fi + export MACOS_APP_PATH + export TARGET_PLATFORM="macos" + source build/_venv3/bin/activate 2>/dev/null || true + TARGET_PLATFORM=macos ./build/wpt run --product duckduckgo --binary webdriver/target/debug/ddgdriver --log-mach - --log-mach-level info duckduckgo + else + npm run test + fi + ;; + + help|*) + echo "Apple WebDriver Setup Script (iOS & macOS)" + echo "" + echo "Usage: $0 [platform] [options]" + echo "" + echo "Commands:" + echo " build [ios|macos] [path] Build the app (default: ios, ../apple-browsers)" + echo " driver [ios|macos] [path] Start ddgdriver server (run in separate terminal)" + echo " example [ios|macos] [options] Run the example Selenium test (default: ios)" + echo " test [ios|macos] Run the full WPT test suite" + echo "" + echo "Platform:" + echo " ios iOS Simulator (default)" + echo " macos macOS app" + echo "" + echo "Example options:" + echo " --keep Keep browser open after test (default behavior)" + echo " --no-keep Close browser automatically after test" + echo " Navigate to specific URL (default: https://example.com)" + echo "" + echo "Environment variables:" + echo " APPLE_BROWSERS_DIR Path to apple-browsers repo" + echo " DERIVED_DATA_PATH Path to DerivedData containing built app" + echo " MACOS_APP_PATH Path to macOS app (for macos platform)" + echo " TARGET_PLATFORM Target platform (ios or macos)" + echo " PLATFORM Platform override (ios or macos)" + echo "" + echo "Quick start (iOS):" + echo " 1. $0 build ios # Build iOS app" + echo " 2. $0 driver ios # Terminal 1: Start driver" + echo " 3. $0 example # Terminal 2: Run test" + echo "" + echo "Quick start (macOS):" + echo " 1. $0 build macos # Build macOS app" + echo " 2. $0 driver macos # Terminal 1: Start driver" + echo " 3. $0 example # Terminal 2: Run test" + echo "" + echo "Examples:" + echo " $0 example ios --keep # iOS: Keep browser open" + echo " $0 example macos https://ddg.gg # macOS: Test specific URL" + echo " $0 example macos https://ddg.gg --keep # macOS: Test URL and keep open" + ;; +esac diff --git a/scripts/build-macos-with-config-fix.mjs b/scripts/build-macos-with-config-fix.mjs new file mode 100644 index 0000000..647971d --- /dev/null +++ b/scripts/build-macos-with-config-fix.mjs @@ -0,0 +1,333 @@ +#!/usr/bin/env node +/** + * Build macOS Browser with Modified Privacy Config + * + * This script: + * 1. Adds nintendo.com to unprotectedTemporary in the remote-config + * 2. Builds the config + * 3. Copies it to the apple-browsers bundled location + * 4. Rebuilds the macOS browser + * + * Usage: + * node scripts/build-macos-with-config-fix.mjs [--dry-run] [--skip-app-build] + * + * Options: + * --dry-run Show what would be done without making changes + * --skip-app-build Only update the config, don't rebuild the app + * --restore Restore original config (undo changes) + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { execSync, spawn } from 'node:child_process'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const projectRoot = path.resolve(__dirname, '..'); +const metaRoot = path.resolve(projectRoot, '..'); + +// Paths +const PATHS = { + remoteConfig: path.join(metaRoot, 'remote-config'), + macosOverride: path.join(metaRoot, 'remote-config/overrides/macos-override.json'), + generatedConfig: path.join(metaRoot, 'remote-config/generated/v4/macos-config.json'), + bundledConfig: path.join(metaRoot, 'apple-browsers/macOS/DuckDuckGo/ContentBlocker/Resources/macos-config.json'), + bundledConfigProvider: path.join( + metaRoot, + 'apple-browsers/macOS/DuckDuckGo/ContentBlocker/AppPrivacyConfigurationDataProvider.swift' + ), + appleBrowsers: path.join(metaRoot, 'apple-browsers'), + backupSuffix: '.nintendo-test-backup', +}; + +// Parse CLI args +const args = process.argv.slice(2); +const dryRun = args.includes('--dry-run'); +const skipAppBuild = args.includes('--skip-app-build'); +const restore = args.includes('--restore'); + +function log(message, type = 'info') { + const prefix = { + info: 'ℹ️ ', + success: '✅', + warn: '⚠️ ', + error: '❌', + step: '▶️ ', + }[type] || ''; + console.log(`${prefix} ${message}`); +} + +function exec(command, options = {}) { + log(`Running: ${command}`, 'step'); + if (dryRun) { + log(' (dry-run, skipping)', 'warn'); + return ''; + } + try { + return execSync(command, { encoding: 'utf-8', stdio: 'inherit', ...options }); + } catch (error) { + throw new Error(`Command failed: ${command}\n${error.message}`); + } +} + +function readJSON(filePath) { + return JSON.parse(fs.readFileSync(filePath, 'utf-8')); +} + +function writeJSON(filePath, data, minified = false) { + if (dryRun) { + log(`Would write to: ${filePath}`, 'warn'); + return; + } + // Use minified JSON for generated configs (matches remote-config output) + // Use pretty JSON for override files (easier to read/diff) + const content = minified ? JSON.stringify(data) : JSON.stringify(data, null, 4) + '\n'; + fs.writeFileSync(filePath, content); +} + +function backup(filePath) { + const backupPath = filePath + PATHS.backupSuffix; + if (!fs.existsSync(backupPath)) { + if (dryRun) { + log(`Would backup: ${filePath}`, 'warn'); + } else { + fs.copyFileSync(filePath, backupPath); + log(`Backed up: ${path.basename(filePath)}`, 'info'); + } + } +} + +function restoreBackup(filePath) { + const backupPath = filePath + PATHS.backupSuffix; + if (fs.existsSync(backupPath)) { + if (dryRun) { + log(`Would restore: ${filePath}`, 'warn'); + } else { + fs.copyFileSync(backupPath, filePath); + fs.unlinkSync(backupPath); + log(`Restored: ${path.basename(filePath)}`, 'success'); + } + } else { + log(`No backup found for: ${path.basename(filePath)}`, 'warn'); + } +} + +async function main() { + console.log(` +╔══════════════════════════════════════════════════════════╗ +║ Build macOS Browser with Nintendo Protection Disabled ║ +╚══════════════════════════════════════════════════════════╝ +`); + + if (dryRun) { + log('DRY RUN MODE - No changes will be made\n', 'warn'); + } + + // Handle restore + if (restore) { + log('Restoring original configuration...', 'step'); + restoreBackup(PATHS.macosOverride); + restoreBackup(PATHS.bundledConfig); + log('Done! Run the app build to complete restoration.', 'success'); + return; + } + + // Step 1: Backup original files + log('Step 1: Backing up original files', 'step'); + backup(PATHS.macosOverride); + backup(PATHS.bundledConfig); + + // Step 2: Modify macos-override.json + log('Step 2: Adding Nintendo to unprotectedTemporary', 'step'); + const override = readJSON(PATHS.macosOverride); + + const nintendoEntry = { + domain: 'nintendo.com', + reason: 'Testing - checkout flow breakage investigation', + }; + + if (!override.unprotectedTemporary) { + override.unprotectedTemporary = []; + } + + const alreadyExists = override.unprotectedTemporary.some( + (entry) => (typeof entry === 'string' ? entry : entry.domain) === 'nintendo.com' + ); + + if (!alreadyExists) { + override.unprotectedTemporary.push(nintendoEntry); + writeJSON(PATHS.macosOverride, override); + log('Added nintendo.com to macos-override.json', 'success'); + } else { + log('nintendo.com already in unprotectedTemporary', 'info'); + } + + // Step 3: Build remote-config + log('Step 3: Building remote-config', 'step'); + exec('npm run build', { cwd: PATHS.remoteConfig }); + + // Step 4: Verify and patch the generated config + // Note: The remote-config build applies unprotectedTemporary to feature exceptions + // but doesn't include it in the output array. We need to patch it. + log('Step 4: Patching generated config with unprotectedTemporary', 'step'); + if (!dryRun) { + const generatedConfig = readJSON(PATHS.generatedConfig); + + // Ensure unprotectedTemporary array exists + if (!generatedConfig.unprotectedTemporary) { + generatedConfig.unprotectedTemporary = []; + } + + const hasNintendo = generatedConfig.unprotectedTemporary.some( + (e) => (typeof e === 'string' ? e : e.domain) === 'nintendo.com' + ); + + if (!hasNintendo) { + generatedConfig.unprotectedTemporary.push({ + domain: 'nintendo.com', + reason: 'Testing - checkout flow breakage investigation', + }); + log('Patched: added nintendo.com to unprotectedTemporary', 'success'); + } else { + log('nintendo.com already in unprotectedTemporary', 'info'); + } + + // Also add tracker allowlist entries for known trackers on Nintendo + // This is needed because the Content Blocker operates separately from unprotectedTemporary + const trackersToAllowlist = [ + { tracker: 'optimizely.com', rule: 'logx.optimizely.com' }, + { tracker: 'optimizely.com', rule: 'cdn.optimizely.com' }, + { tracker: 'google-analytics.com', rule: 'google-analytics.com' }, + { tracker: 'googletagmanager.com', rule: 'googletagmanager.com' }, + { tracker: 'facebook.net', rule: 'connect.facebook.net' }, + { tracker: 'facebook.com', rule: 'facebook.com' }, + { tracker: 'doubleclick.net', rule: 'doubleclick.net' }, + ]; + + if (generatedConfig.features?.trackerAllowlist?.settings?.allowlistedTrackers) { + const allowlist = generatedConfig.features.trackerAllowlist.settings.allowlistedTrackers; + + for (const { tracker, rule } of trackersToAllowlist) { + if (!allowlist[tracker]) { + allowlist[tracker] = { rules: [] }; + } + + const existingRule = allowlist[tracker].rules.find( + (r) => r.rule === rule && r.domains?.includes('nintendo.com') + ); + + if (!existingRule) { + allowlist[tracker].rules.push({ + rule: rule, + domains: ['nintendo.com'], + reason: 'Testing Nintendo checkout flow', + }); + } + } + log('Patched: added tracker allowlist entries for nintendo.com', 'success'); + } else { + log('WARNING: trackerAllowlist not found in config', 'warn'); + } + + // Update version to ensure the app sees it as new + generatedConfig.version = Date.now(); + writeJSON(PATHS.generatedConfig, generatedConfig, true); // minified to match original format + + // Verify patch worked + const verifyConfig = readJSON(PATHS.generatedConfig); + const verified = verifyConfig.unprotectedTemporary?.some( + (e) => (typeof e === 'string' ? e : e.domain) === 'nintendo.com' + ); + if (verified) { + log('Verified: nintendo.com is in unprotectedTemporary', 'success'); + } else { + log('ERROR: Patch verification failed!', 'error'); + process.exit(1); + } + } + + // Step 5: Copy to apple-browsers + log('Step 5: Copying config to apple-browsers', 'step'); + if (!dryRun) { + fs.copyFileSync(PATHS.generatedConfig, PATHS.bundledConfig); + log(`Copied to: ${PATHS.bundledConfig}`, 'success'); + } + + // Step 6: Update the ETag/SHA in the provider + log('Step 6: Updating ETag/SHA in AppPrivacyConfigurationDataProvider.swift', 'step'); + if (!dryRun) { + const configContent = fs.readFileSync(PATHS.bundledConfig); + const crypto = await import('node:crypto'); + const newSHA = crypto.createHash('sha256').update(configContent).digest('hex'); + + let providerContent = fs.readFileSync(PATHS.bundledConfigProvider, 'utf-8'); + + // Update SHA + const shaRegex = /public static let embeddedDataSHA = "([a-f0-9]+)"/; + const shaMatch = providerContent.match(shaRegex); + if (shaMatch) { + providerContent = providerContent.replace(shaRegex, `public static let embeddedDataSHA = "${newSHA}"`); + log(`Updated SHA: ${shaMatch[1].substring(0, 16)}... -> ${newSHA.substring(0, 16)}...`, 'info'); + } + + // Generate a new ETag based on the config + // Format: "\"-\"" (escaped quotes inside the string) + const newETag = `${configContent.length}-${Date.now()}`; + // Match the entire line to avoid regex issues with escaped quotes + const etagLineRegex = /public static let embeddedDataETag = "\\\"[^"]*\\\""/; + const etagMatch = providerContent.match(etagLineRegex); + if (etagMatch) { + providerContent = providerContent.replace( + etagLineRegex, + `public static let embeddedDataETag = "\\\"${newETag}\\\""` + ); + log(`Updated ETag: ${etagMatch[0].substring(40, 60)}... -> ${newETag}`, 'info'); + } else { + log('WARNING: Could not find ETag line to update', 'warn'); + } + + fs.writeFileSync(PATHS.bundledConfigProvider, providerContent); + log('Updated AppPrivacyConfigurationDataProvider.swift', 'success'); + } + + // Step 7: Build macOS app + if (!skipAppBuild) { + log('Step 7: Building macOS app', 'step'); + log('This may take several minutes...', 'info'); + + // Use the shared-web-tests build script + exec('npm run build:macos', { cwd: projectRoot }); + log('macOS app built successfully', 'success'); + } else { + log('Step 7: Skipping app build (--skip-app-build)', 'warn'); + } + + // Summary + console.log(` +╔══════════════════════════════════════════════════════════╗ +║ Build Complete ║ +╚══════════════════════════════════════════════════════════╝ + +Nintendo.com protections have been DISABLED in the built app. + +To test: + 1. Start the driver: npm run driver:macos + 2. Run the test: PLATFORM=macos npm run test:nintendo-basket + +To restore original config: + node scripts/build-macos-with-config-fix.mjs --restore + npm run build:macos + +Modified files: + - ${PATHS.macosOverride} + - ${PATHS.bundledConfig} + - ${PATHS.bundledConfigProvider} + +Backups saved with suffix: ${PATHS.backupSuffix} +`); +} + +main().catch((error) => { + log(error.message, 'error'); + process.exit(1); +}); diff --git a/scripts/build.mjs b/scripts/build.mjs index 5c3d711..63b8ed3 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -1,4 +1,4 @@ -import { copyFileSync, existsSync, mkdirSync, writeFileSync, cpSync, rmSync, readFileSync } from 'fs'; +import { copyFileSync, existsSync, mkdirSync, writeFileSync, cpSync, rmSync } from 'fs'; import { join } from 'path'; import { execSync } from 'child_process'; @@ -11,37 +11,30 @@ copyFile('.', 'package.json'); copyFile('web-platform-tests', 'referrer-policy/generic/test-case.sub.js'); [ - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location.html', - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/context-helper.js', - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/target.js', - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/entry.html', - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/target.html', - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/empty.html', - 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/empty.html', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/context-for-location.html', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/context-helper.js', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/resources/target.js', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/entry.html', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/entry/target.html', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/incumbent/empty.html', + 'html/browsers/browsing-the-web/navigating-across-documents/multiple-globals/relevant/empty.html', - 'html/browsers/windows/embedded-opener-a-form.html', -].forEach(file => copyFile('web-platform-tests', file)); - -[ - 'wpt', -].forEach(file => copyFile('web-platform-tests', file)); + 'html/browsers/windows/embedded-opener-a-form.html', +].forEach((file) => copyFile('web-platform-tests', file)); +['wpt'].forEach((file) => copyFile('web-platform-tests', file)); // Copy whole directory -const copyDirectories = [ - 'docs', - 'tools', - 'common' -]; -copyDirectories.forEach(dir => { - rmSync(`build/${dir}`, { recursive: true, force: true }); - cpSync(`web-platform-tests/${dir}`, `build/${dir}`, { recursive: true, force: true }); -}) +const copyDirectories = ['docs', 'tools', 'common']; +copyDirectories.forEach((dir) => { + rmSync(`build/${dir}`, { recursive: true, force: true }); + cpSync(`web-platform-tests/${dir}`, `build/${dir}`, { recursive: true, force: true }); +}); const currentDir = process.cwd() + '/build'; const config = { - "doc_root": currentDir -} + doc_root: currentDir, +}; // write a JSON file writeFileSync('build/wpt.config.json', JSON.stringify(config, null, 2)); @@ -49,7 +42,6 @@ writeFileSync('build/wpt.config.json', JSON.stringify(config, null, 2)); const buildManifest = `./web-platform-tests/wpt manifest --tests-root ${currentDir} --no-download -v`; execSync(buildManifest, { stdio: 'inherit' }); - function copyFile(from, file) { // Get filename const fileParts = file.split('/'); @@ -58,7 +50,7 @@ function copyFile(from, file) { const buildDir = join('build', dir); const testharnessDest = join(buildDir, filename); if (!existsSync(buildDir)) { - mkdirSync(buildDir, { recursive: true }); + mkdirSync(buildDir, { recursive: true }); } copyFileSync(join(from, file), testharnessDest); } diff --git a/scripts/check-blocking.mjs b/scripts/check-blocking.mjs new file mode 100644 index 0000000..103df8d --- /dev/null +++ b/scripts/check-blocking.mjs @@ -0,0 +1,178 @@ +/** + * Diagnostic script to check content blocking behavior + * Compares what's blocked with and without custom privacy config + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const args = process.argv.slice(2); +const configArg = args.find(a => a.startsWith('--config=')); +const privacyConfigURL = configArg ? configArg.split('=').slice(1).join('=') : null; + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function cleanupSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + for (const session of data.value || []) { + await fetch(`${serverUrl}/session/${session.id}`, { method: 'DELETE' }); + } + } + } catch {} +} + +async function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +await cleanupSessions(); + +console.log('\n🔍 Content Blocker Diagnostic'); +console.log('='.repeat(50)); +console.log(`Config: ${privacyConfigURL || 'DEFAULT (protections ON)'}`); +console.log(''); + +const capabilities = { browserName: 'duckduckgo' }; +if (privacyConfigURL) { + capabilities['ddg:privacyConfigURL'] = privacyConfigURL; +} + +let driver; +try { + driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities(capabilities) + .build(); + + // Navigate to Nintendo + console.log('Navigating to nintendo.com...'); + await driver.get('https://www.nintendo.com/us/'); + await sleep(5000); + + // Check loaded scripts and resources + const diagnostics = await driver.executeScript(` + const results = { + url: window.location.href, + scripts: [], + blockedResources: [], + thirdPartyDomains: new Set(), + trackerDomains: [], + totalResources: 0 + }; + + // Check performance entries for loaded resources + const entries = performance.getEntriesByType('resource'); + results.totalResources = entries.length; + + for (const entry of entries) { + try { + const url = new URL(entry.name); + if (url.hostname !== window.location.hostname) { + results.thirdPartyDomains.add(url.hostname); + } + } catch {} + } + + // Check script tags + document.querySelectorAll('script[src]').forEach(script => { + try { + const url = new URL(script.src, window.location.href); + results.scripts.push({ + domain: url.hostname, + path: url.pathname.slice(0, 50) + }); + } catch {} + }); + + // Known tracker domains to check + const trackers = [ + 'google-analytics.com', + 'googletagmanager.com', + 'facebook.net', + 'facebook.com', + 'doubleclick.net', + 'googlesyndication.com', + 'criteo.com', + 'criteo.net', + 'amazon-adsystem.com', + 'twitter.com', + 'ads-twitter.com' + ]; + + results.thirdPartyDomains = Array.from(results.thirdPartyDomains); + + // Check which trackers loaded + for (const tracker of trackers) { + const found = results.thirdPartyDomains.some(d => d.includes(tracker)) || + results.scripts.some(s => s.domain.includes(tracker)); + if (found) { + results.trackerDomains.push(tracker); + } + } + + return results; + `); + + console.log('\\n📊 Resource Analysis:'); + console.log(` URL: ${diagnostics.url}`); + console.log(` Total resources loaded: ${diagnostics.totalResources}`); + console.log(` Third-party domains: ${diagnostics.thirdPartyDomains.length}`); + console.log(` Scripts loaded: ${diagnostics.scripts.length}`); + + console.log('\\n🔎 Third-party domains:'); + for (const domain of diagnostics.thirdPartyDomains.sort()) { + console.log(` - ${domain}`); + } + + console.log('\\n🎯 Known trackers detected:'); + if (diagnostics.trackerDomains.length === 0) { + console.log(' ✅ None (blocked or not present)'); + } else { + for (const tracker of diagnostics.trackerDomains) { + console.log(` ⚠️ ${tracker} - LOADED`); + } + } + + // Check for specific Facebook/Google/Criteo scripts + console.log('\\n🔬 Specific tracker check:'); + const trackerCheck = await driver.executeScript(` + const checks = {}; + + // Check GTM + checks.gtm = typeof window.google_tag_manager !== 'undefined' || + document.querySelector('script[src*="googletagmanager.com"]') !== null; + + // Check Facebook Pixel + checks.fbPixel = typeof window.fbq !== 'undefined' || + document.querySelector('script[src*="facebook"]') !== null; + + // Check Criteo + checks.criteo = typeof window.criteo_q !== 'undefined' || + document.querySelector('script[src*="criteo"]') !== null; + + // Check Google Analytics + checks.ga = typeof window.ga !== 'undefined' || + typeof window.gtag !== 'undefined' || + document.querySelector('script[src*="google-analytics"]') !== null; + + return checks; + `); + + console.log(` Google Tag Manager: ${trackerCheck.gtm ? '⚠️ LOADED' : '✅ BLOCKED/ABSENT'}`); + console.log(` Facebook Pixel: ${trackerCheck.fbPixel ? '⚠️ LOADED' : '✅ BLOCKED/ABSENT'}`); + console.log(` Criteo: ${trackerCheck.criteo ? '⚠️ LOADED' : '✅ BLOCKED/ABSENT'}`); + console.log(` Google Analytics: ${trackerCheck.ga ? '⚠️ LOADED' : '✅ BLOCKED/ABSENT'}`); + + console.log('\\n' + '='.repeat(50)); + +} catch (error) { + console.error('Error:', error.message); +} finally { + if (driver) { + await driver.quit(); + } +} diff --git a/scripts/check-cart-blocking.mjs b/scripts/check-cart-blocking.mjs new file mode 100644 index 0000000..e93abf3 --- /dev/null +++ b/scripts/check-cart-blocking.mjs @@ -0,0 +1,151 @@ +/** + * Check content blocking on Nintendo cart page + * Captures what's actually blocked vs allowed + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const args = process.argv.slice(2); +const configArg = args.find(a => a.startsWith('--config=')); +const privacyConfigURL = configArg ? configArg.split('=').slice(1).join('=') : null; + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function cleanupSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + for (const session of data.value || []) { + await fetch(`${serverUrl}/session/${session.id}`, { method: 'DELETE' }); + } + } + } catch {} +} + +async function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +await cleanupSessions(); + +console.log('\n🛒 Cart Page Content Blocker Check'); +console.log('='.repeat(50)); +console.log(`Config: ${privacyConfigURL || 'DEFAULT (protections ON)'}`); + +const capabilities = { browserName: 'duckduckgo' }; +if (privacyConfigURL) { + capabilities['ddg:privacyConfigURL'] = privacyConfigURL; +} + +let driver; +try { + driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities(capabilities) + .build(); + + // Go directly to cart page + console.log('\nNavigating to cart page...'); + await driver.get('https://www.nintendo.com/us/cart/'); + await sleep(8000); + + // Capture all network activity including failed requests + const diagnostics = await driver.executeScript(` + const results = { + url: window.location.href, + totalResources: 0, + thirdPartyDomains: [], + failedRequests: [], + scripts: [], + trackerCheck: {} + }; + + // Get all resource timing entries + const entries = performance.getEntriesByType('resource'); + results.totalResources = entries.length; + + const domains = new Set(); + for (const entry of entries) { + try { + const url = new URL(entry.name); + if (url.hostname !== 'www.nintendo.com') { + domains.add(url.hostname); + } + // Check for failed/blocked (zero transfer size often means blocked) + if (entry.transferSize === 0 && entry.decodedBodySize === 0) { + results.failedRequests.push({ + domain: url.hostname, + path: url.pathname.slice(0, 60), + duration: entry.duration + }); + } + } catch {} + } + results.thirdPartyDomains = Array.from(domains).sort(); + + // Check scripts + document.querySelectorAll('script[src]').forEach(script => { + try { + const url = new URL(script.src, window.location.href); + results.scripts.push(url.hostname); + } catch {} + }); + + // Check specific trackers + const trackerDomains = [ + 'google-analytics.com', + 'googletagmanager.com', + 'facebook.net', + 'connect.facebook.net', + 'facebook.com', + 'doubleclick.net', + 'criteo.com', + 'criteo.net', + 'quantummetric.com', + 'optimizely.com', + 'sentry.io' + ]; + + for (const tracker of trackerDomains) { + const loaded = results.thirdPartyDomains.some(d => d.includes(tracker)) || + results.scripts.some(s => s.includes(tracker)); + results.trackerCheck[tracker] = loaded ? 'LOADED' : 'BLOCKED/ABSENT'; + } + + return results; + `); + + console.log(`\nURL: ${diagnostics.url}`); + console.log(`Total resources: ${diagnostics.totalResources}`); + console.log(`Third-party domains loaded: ${diagnostics.thirdPartyDomains.length}`); + + console.log('\n📊 Third-party domains:'); + for (const d of diagnostics.thirdPartyDomains) { + console.log(` ${d}`); + } + + console.log('\n🎯 Tracker status:'); + for (const [tracker, status] of Object.entries(diagnostics.trackerCheck)) { + const icon = status === 'LOADED' ? '⚠️' : '✅'; + console.log(` ${icon} ${tracker}: ${status}`); + } + + if (diagnostics.failedRequests.length > 0) { + console.log('\n❌ Potentially blocked requests (0 transfer size):'); + for (const req of diagnostics.failedRequests.slice(0, 10)) { + console.log(` ${req.domain}${req.path}`); + } + } + + console.log('\n' + '='.repeat(50)); + +} catch (error) { + console.error('Error:', error.message); +} finally { + if (driver) { + await driver.quit(); + } +} diff --git a/scripts/chrome-control-test.mjs b/scripts/chrome-control-test.mjs new file mode 100644 index 0000000..2fbc527 --- /dev/null +++ b/scripts/chrome-control-test.mjs @@ -0,0 +1,85 @@ +#!/usr/bin/env node +/** + * Chrome Control Test (No Content Blocking) + * + * Runs the tracker test in Chrome to verify: + * 1. Trackers ARE loaded in a browser without content blocking + * 2. The page correctly reports tracker status + * + * This validates the DDG race condition test isn't giving false positives. + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); +const chrome = localRequire('selenium-webdriver/chrome'); + +const TEST_URL = 'https://www.publisher-company.site/product.html?p=12'; + +console.log('🧪 Chrome Control Test (No Content Blocking)'); +console.log(` URL: ${TEST_URL}`); +console.log(''); + +const options = new chrome.Options(); +options.addArguments('--headless=new'); + +const driver = await new selenium.Builder() + .forBrowser('chrome') + .setChromeOptions(options) + .build(); + +try { + await driver.get(TEST_URL); + await driver.sleep(3000); + + console.log('URL:', await driver.getCurrentUrl()); + + // Read the page's tracker status + const status = await driver.executeScript(` + const details = document.querySelector('details'); + if (details) details.open = true; + const items = document.querySelectorAll('li'); + return Array.from(items).map(li => li.textContent.trim()); + `); + + console.log(''); + console.log('📊 Page tracker status (Chrome, no blocking):'); + if (status && status.length > 0) { + status.forEach(s => console.log(' ', s)); + } else { + console.log(' (no status items found)'); + } + + // Probe trackers + console.log(''); + console.log('🔍 XHR Probe:'); + const trackers = [ + 'https://convert.ad-company.site/convert.js', + 'https://www.ad-company.site/track.js' + ]; + + for (const url of trackers) { + const r = await driver.executeScript(` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `); + const icon = r.status === 'allowed' ? '✅' : '❌'; + console.log(` ${icon} ${url}: ${r.status}${r.code ? ' (HTTP '+r.code+')' : ''}`); + } + + console.log(''); + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + console.log('Expected: Trackers should be ALLOWED in Chrome (no Content Blocker)'); + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + +} finally { + await driver.quit(); +} +console.log(''); +console.log('Done'); diff --git a/scripts/chrome-debug-page.mjs b/scripts/chrome-debug-page.mjs new file mode 100644 index 0000000..e272db0 --- /dev/null +++ b/scripts/chrome-debug-page.mjs @@ -0,0 +1,203 @@ +#!/usr/bin/env node +/** + * Chrome Debug Page Inspector + * + * Runs the same debug inspections as debug-page.mjs but in headless Chrome. + * Useful for comparing page state between Chrome (no protection) and DDG. + * + * Usage: + * node scripts/chrome-debug-page.mjs # Inspect page + * node scripts/chrome-debug-page.mjs --links # Show link analysis + * node scripts/chrome-debug-page.mjs --inputs # Show form inputs + * node scripts/chrome-debug-page.mjs --modals # Detect modals + * node scripts/chrome-debug-page.mjs --errors # Show resource errors + * node scripts/chrome-debug-page.mjs --all # Run all inspections + * node scripts/chrome-debug-page.mjs --json # Output as JSON + */ + +import { createRequire } from 'node:module'; +import { debugScripts } from './debug-utils.mjs'; + +const localRequire = createRequire(import.meta.url); +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const chrome = localRequire('selenium-webdriver/chrome'); + +// Parse args +const args = process.argv.slice(2); +const url = args.find(arg => !arg.startsWith('--')) || 'https://duckduckgo.com'; +const showLinks = args.includes('--links'); +const showInputs = args.includes('--inputs'); +const showModals = args.includes('--modals'); +const showErrors = args.includes('--errors'); +const showAll = args.includes('--all'); +const outputJson = args.includes('--json'); +const headless = !args.includes('--no-headless'); + +const results = { + browser: 'chrome', + url, + timestamp: new Date().toISOString(), + pageState: null, + elements: null, + links: null, + inputs: null, + modals: null, + errors: null +}; + +async function main() { + if (!outputJson) { + console.log('🔍 Chrome Debug Inspector'); + console.log(` URL: ${url}`); + console.log(` Mode: ${headless ? 'headless' : 'visible'}\n`); + } + + const options = new chrome.Options(); + if (headless) { + options.addArguments('--headless=new'); + } + options.addArguments('--window-size=1280,1024'); + options.addArguments('--disable-gpu'); + options.addArguments('--no-sandbox'); + + const driver = await new selenium.Builder() + .forBrowser('chrome') + .setChromeOptions(options) + .build(); + + try { + await driver.get(url); + await driver.sleep(2000); // Allow page to settle + + // Get page state + const pageState = await driver.executeScript(`return (function() { ${debugScripts.pageState} })()`); + results.pageState = pageState; + + if (!outputJson) { + console.log('📄 Page State:'); + console.log(` URL: ${pageState.url}`); + console.log(` Title: ${pageState.title}`); + console.log(` Ready: ${pageState.readyState}`); + console.log(` Viewport: ${pageState.viewport.width}x${pageState.viewport.height}`); + } + + // Actionable elements (default) + if (!showLinks && !showInputs && !showModals || showAll) { + const elements = await driver.executeScript(`return (function() { ${debugScripts.actionableElements} })()`); + results.elements = elements; + + if (!outputJson) { + const links = elements.filter(e => e.tag === 'a'); + const buttons = elements.filter(e => e.tag !== 'a'); + + console.log('\n🎯 Actionable Elements:'); + if (buttons.length > 0) { + console.log(`\n Buttons (${buttons.length}):`); + buttons.slice(0, 15).forEach(e => { + const status = e.disabled ? '🔒' : '✓'; + console.log(` ${status} [${e.selector}] "${e.text}"`); + }); + if (buttons.length > 15) console.log(` ... and ${buttons.length - 15} more`); + } + + if (links.length > 0) { + console.log(`\n Links (${links.length}):`); + links.slice(0, 15).forEach(e => { + const icon = e.hrefType === 'hash-only' ? '⚠️' : + e.hrefType === 'javascript' ? '⚠️' : '→'; + console.log(` ${icon} [${e.selector}] "${e.text}" ${e.href?.substring(0, 40) || ''}`); + }); + if (links.length > 15) console.log(` ... and ${links.length - 15} more`); + } + } + } + + // Link analysis + if (showLinks || showAll) { + const analysis = await driver.executeScript(`return (function() { ${debugScripts.linkAnalysis} })()`); + results.links = analysis; + + if (!outputJson) { + console.log('\n🔗 Link Analysis:'); + console.log(` Navigation: ${analysis.navigation.length}`); + console.log(` JS-triggered: ${analysis.jsTriggered.length}`); + console.log(` External: ${analysis.external.length}`); + + if (analysis.jsTriggered.length > 0) { + console.log('\n ⚠️ JS-triggered links:'); + analysis.jsTriggered.slice(0, 10).forEach(l => { + console.log(` "${l.text}"`); + }); + } + } + } + + // Form inputs + if (showInputs || showAll) { + const inputs = await driver.executeScript(`return (function() { ${debugScripts.formInputs} })()`); + results.inputs = inputs; + + if (!outputJson) { + console.log('\n📝 Form Inputs:'); + if (inputs.length === 0) { + console.log(' No visible inputs found'); + } else { + inputs.forEach(i => { + const status = i.disabled ? '🔒' : i.required ? '*' : ' '; + console.log(` ${status} [${i.selector}] type=${i.type} ${i.placeholder ? `"${i.placeholder}"` : ''}`); + }); + } + } + } + + // Modal detection + if (showModals || showAll) { + const modalInfo = await driver.executeScript(`return (function() { ${debugScripts.detectModals} })()`); + results.modals = modalInfo; + + if (!outputJson) { + console.log('\n🪟 Modal Detection:'); + if (!modalInfo.hasModal) { + console.log(' No modals detected'); + } else { + console.log(` Found ${modalInfo.modals.length} modal(s):`); + modalInfo.modals.forEach(m => { + console.log(` [${m.selector}] "${m.text?.substring(0, 50)}"`); + }); + } + } + } + + // Resource errors + if (showErrors || showAll) { + const errorInfo = await driver.executeScript(`return (function() { ${debugScripts.getResourceErrors} })()`); + results.errors = errorInfo; + + if (!outputJson) { + console.log('\n🔴 Resource Errors:'); + if (errorInfo.errors.length === 0) { + console.log(' No resource errors detected'); + } else { + errorInfo.errors.forEach(e => { + console.log(` ❌ ${e.type}: ${e.name.substring(0, 80)}`); + }); + } + } + } + + if (outputJson) { + console.log(JSON.stringify(results, null, 2)); + } else { + console.log('\n✅ Done'); + } + + } finally { + await driver.quit(); + } +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/compare-browsers.mjs b/scripts/compare-browsers.mjs new file mode 100644 index 0000000..ecbed5a --- /dev/null +++ b/scripts/compare-browsers.mjs @@ -0,0 +1,478 @@ +#!/usr/bin/env node +/** + * Browser Comparison Tool + * + * Compares page behavior between Chrome/Safari (no protection) and DDG browser. + * Requires ddgdriver to be running for DDG comparison. + * + * Usage: + * node scripts/compare-browsers.mjs + * node scripts/compare-browsers.mjs --all # Full comparison + * node scripts/compare-browsers.mjs --trackers # Focus on tracker blocking + * node scripts/compare-browsers.mjs --elements # Compare DOM elements + * node scripts/compare-browsers.mjs --requests # Compare network requests + * node scripts/compare-browsers.mjs --json # Output as JSON + * node scripts/compare-browsers.mjs --safari # Use Safari instead of Chrome + * node scripts/compare-browsers.mjs --safari-only # Safari only (no DDG) + * + * Environment: + * WEBDRIVER_SERVER_URL: DDG driver URL (default: http://localhost:4444) + */ + +import { createRequire } from 'node:module'; +import { debugScripts } from './debug-utils.mjs'; + +const localRequire = createRequire(import.meta.url); +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const chrome = localRequire('selenium-webdriver/chrome'); +const safari = localRequire('selenium-webdriver/safari'); + +// Parse args +const args = process.argv.slice(2); +const url = args.find(arg => !arg.startsWith('--')) || 'https://duckduckgo.com'; +const compareAll = args.includes('--all'); +const compareTrackers = args.includes('--trackers') || compareAll; +const compareElements = args.includes('--elements') || compareAll; +const compareRequests = args.includes('--requests') || compareAll; +const outputJson = args.includes('--json'); +const ddgOnly = args.includes('--ddg-only'); +const chromeOnly = args.includes('--chrome-only'); +const useSafari = args.includes('--safari') || args.includes('--safari-only'); +const safariOnly = args.includes('--safari-only'); + +const ddgServerUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +// Known tracker domains for testing +const TRACKER_URLS = [ + 'https://www.google-analytics.com/analytics.js', + 'https://www.googletagmanager.com/gtag/js', + 'https://connect.facebook.net/en_US/fbevents.js', + 'https://static.hotjar.com/c/hotjar.js', + 'https://cdn.segment.com/analytics.js/v1/segment/analytics.min.js' +]; + +const results = { + url, + timestamp: new Date().toISOString(), + chrome: null, + safari: null, + ddg: null, + comparison: { + pageState: {}, + elements: {}, + trackers: {}, + differences: [] + } +}; + +const baselineBrowser = useSafari ? 'safari' : 'chrome'; + +async function runChrome() { + const options = new chrome.Options(); + options.addArguments('--headless=new'); + options.addArguments('--window-size=1280,1024'); + options.addArguments('--disable-gpu'); + options.addArguments('--no-sandbox'); + + const driver = await new selenium.Builder() + .forBrowser('chrome') + .setChromeOptions(options) + .build(); + + try { + await driver.get(url); + await driver.sleep(2000); + + const data = { + browser: 'chrome', + pageState: await driver.executeScript(`return (function() { ${debugScripts.pageState} })()`), + elements: await driver.executeScript(`return (function() { ${debugScripts.actionableElements} })()`), + links: await driver.executeScript(`return (function() { ${debugScripts.linkAnalysis} })()`), + inputs: await driver.executeScript(`return (function() { ${debugScripts.formInputs} })()`), + modals: await driver.executeScript(`return (function() { ${debugScripts.detectModals} })()`), + errors: await driver.executeScript(`return (function() { ${debugScripts.getResourceErrors} })()`) + }; + + // Test tracker requests if requested + if (compareTrackers) { + data.trackers = {}; + for (const trackerUrl of TRACKER_URLS) { + const result = await driver.executeScript(` + return new Promise(resolve => { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${trackerUrl}', true); + xhr.timeout = 5000; + xhr.onload = () => resolve({ blocked: false, status: xhr.status }); + xhr.onerror = () => resolve({ blocked: true, error: 'network' }); + xhr.ontimeout = () => resolve({ blocked: true, error: 'timeout' }); + try { xhr.send(); } catch(e) { resolve({ blocked: true, error: e.message }); } + }); + `); + data.trackers[trackerUrl] = result; + } + } + + return data; + } finally { + await driver.quit(); + } +} + +async function runSafari() { + const options = new safari.Options(); + + let driver; + try { + driver = await new selenium.Builder() + .forBrowser('safari') + .setSafariOptions(options) + .build(); + } catch (err) { + if (err.message.includes('safaridriver')) { + throw new Error('Safari WebDriver not enabled. Run: sudo safaridriver --enable'); + } + throw err; + } + + try { + await driver.get(url); + await driver.sleep(2000); + + const data = { + browser: 'safari', + pageState: await driver.executeScript(`return (function() { ${debugScripts.pageState} })()`), + elements: await driver.executeScript(`return (function() { ${debugScripts.actionableElements} })()`), + links: await driver.executeScript(`return (function() { ${debugScripts.linkAnalysis} })()`), + inputs: await driver.executeScript(`return (function() { ${debugScripts.formInputs} })()`), + modals: await driver.executeScript(`return (function() { ${debugScripts.detectModals} })()`), + errors: await driver.executeScript(`return (function() { ${debugScripts.getResourceErrors} })()`) + }; + + // Test tracker requests if requested + if (compareTrackers) { + data.trackers = {}; + for (const trackerUrl of TRACKER_URLS) { + const result = await driver.executeScript(` + return new Promise(resolve => { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${trackerUrl}', true); + xhr.timeout = 5000; + xhr.onload = () => resolve({ blocked: false, status: xhr.status }); + xhr.onerror = () => resolve({ blocked: true, error: 'network' }); + xhr.ontimeout = () => resolve({ blocked: true, error: 'timeout' }); + try { xhr.send(); } catch(e) { resolve({ blocked: true, error: e.message }); } + }); + `); + data.trackers[trackerUrl] = result; + } + } + + return data; + } finally { + await driver.quit(); + } +} + +async function runDDG() { + // Check if DDG driver is running + try { + const response = await fetch(`${ddgServerUrl}/status`); + if (!response.ok) throw new Error('Driver not ready'); + } catch { + throw new Error(`DDG driver not running at ${ddgServerUrl}. Start with: npm run driver:ios or driver:macos`); + } + + // Check for existing session or create new one + const sessionsResponse = await fetch(`${ddgServerUrl}/sessions`); + const sessionsData = await sessionsResponse.json(); + const sessions = sessionsData.value || []; + + let sessionId; + let ownSession = false; + + if (sessions.length > 0) { + sessionId = sessions[0].id; + } else { + // Create new session + const createResponse = await fetch(`${ddgServerUrl}/session`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ capabilities: {} }) + }); + const createData = await createResponse.json(); + sessionId = createData.value?.sessionId || createData.sessionId; + ownSession = true; + } + + async function executeScript(script) { + const response = await fetch(`${ddgServerUrl}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script: `return (function() { ${script} })()`, + args: [] + }) + }); + const data = await response.json(); + if (data.value?.error) throw new Error(data.value.message); + return data.value; + } + + async function executeAsyncScript(script) { + const response = await fetch(`${ddgServerUrl}/session/${sessionId}/execute/async`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script, + args: [] + }) + }); + const data = await response.json(); + if (data.value?.error) throw new Error(data.value.message); + return data.value; + } + + try { + // Navigate to URL + await fetch(`${ddgServerUrl}/session/${sessionId}/url`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ url }) + }); + + // Wait for page load + await new Promise(r => setTimeout(r, 3000)); + + const data = { + browser: 'ddg', + pageState: await executeScript(debugScripts.pageState), + elements: await executeScript(debugScripts.actionableElements), + links: await executeScript(debugScripts.linkAnalysis), + inputs: await executeScript(debugScripts.formInputs), + modals: await executeScript(debugScripts.detectModals), + errors: await executeScript(debugScripts.getResourceErrors) + }; + + // Test tracker requests if requested + if (compareTrackers) { + data.trackers = {}; + for (const trackerUrl of TRACKER_URLS) { + const result = await executeAsyncScript(` + const done = arguments[arguments.length - 1]; + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${trackerUrl}', true); + xhr.timeout = 5000; + xhr.onload = () => done({ blocked: false, status: xhr.status }); + xhr.onerror = () => done({ blocked: true, error: 'network' }); + xhr.ontimeout = () => done({ blocked: true, error: 'timeout' }); + try { xhr.send(); } catch(e) { done({ blocked: true, error: e.message }); } + `); + data.trackers[trackerUrl] = result; + } + } + + return data; + } finally { + // Clean up session if we created it + if (ownSession) { + await fetch(`${ddgServerUrl}/session/${sessionId}`, { method: 'DELETE' }); + } + } +} + +function compareBrowserResults(baselineData, ddgData, baselineName) { + const comparison = { + pageState: {}, + elements: {}, + trackers: {}, + differences: [] + }; + + // Compare page state + if (baselineData.pageState.title !== ddgData.pageState.title) { + comparison.differences.push({ + type: 'title', + [baselineName]: baselineData.pageState.title, + ddg: ddgData.pageState.title + }); + } + + // Compare element counts + const baselineButtons = baselineData.elements?.filter(e => e.tag !== 'a').length || 0; + const ddgButtons = ddgData.elements?.filter(e => e.tag !== 'a').length || 0; + const baselineLinks = baselineData.elements?.filter(e => e.tag === 'a').length || 0; + const ddgLinks = ddgData.elements?.filter(e => e.tag === 'a').length || 0; + + comparison.elements = { + [baselineName]: { buttons: baselineButtons, links: baselineLinks }, + ddg: { buttons: ddgButtons, links: ddgLinks } + }; + + if (Math.abs(baselineButtons - ddgButtons) > 5) { + comparison.differences.push({ + type: 'element_count', + description: `Button count differs significantly`, + [baselineName]: baselineButtons, + ddg: ddgButtons + }); + } + + // Compare tracker blocking + if (compareTrackers && baselineData.trackers && ddgData.trackers) { + for (const trackerUrl of Object.keys(baselineData.trackers)) { + const baselineResult = baselineData.trackers[trackerUrl]; + const ddgResult = ddgData.trackers[trackerUrl]; + + comparison.trackers[trackerUrl] = { + [baselineName]: baselineResult, + ddg: ddgResult, + ddgBlocked: ddgResult.blocked && !baselineResult.blocked + }; + + if (ddgResult.blocked && !baselineResult.blocked) { + comparison.differences.push({ + type: 'tracker_blocked', + url: trackerUrl, + description: `DDG blocked tracker that ${baselineName} allowed` + }); + } + } + } + + // Compare resource errors + const baselineErrors = baselineData.errors?.errors?.length || 0; + const ddgErrors = ddgData.errors?.errors?.length || 0; + + if (ddgErrors > baselineErrors) { + comparison.differences.push({ + type: 'resource_errors', + description: `DDG has more resource errors (likely blocked trackers)`, + [baselineName]: baselineErrors, + ddg: ddgErrors + }); + } + + // Compare modals + const baselineModals = baselineData.modals?.modals?.length || 0; + const ddgModals = ddgData.modals?.modals?.length || 0; + + if (baselineModals !== ddgModals) { + comparison.differences.push({ + type: 'modals', + description: `Modal count differs`, + [baselineName]: baselineModals, + ddg: ddgModals + }); + } + + return comparison; +} + +async function main() { + const baselineOnly = chromeOnly || safariOnly; + const comparisonDesc = baselineOnly + ? `${baselineBrowser} only` + : ddgOnly + ? 'DDG only' + : `${baselineBrowser} vs DDG`; + + if (!outputJson) { + console.log('🔄 Browser Comparison Tool'); + console.log(` URL: ${url}`); + console.log(` Comparing: ${comparisonDesc}\n`); + } + + try { + // Run baseline browser (Chrome or Safari) + if (!ddgOnly) { + if (useSafari) { + if (!outputJson) console.log('🧭 Running Safari...'); + results.safari = await runSafari(); + if (!outputJson) console.log(' ✓ Safari complete\n'); + } else { + if (!outputJson) console.log('🌐 Running Chrome (headless)...'); + results.chrome = await runChrome(); + if (!outputJson) console.log(' ✓ Chrome complete\n'); + } + } + + // Run DDG + if (!baselineOnly) { + if (!outputJson) console.log('🦆 Running DDG browser...'); + results.ddg = await runDDG(); + if (!outputJson) console.log(' ✓ DDG complete\n'); + } + + // Compare results + const baselineData = useSafari ? results.safari : results.chrome; + if (baselineData && results.ddg) { + results.comparison = compareBrowserResults(baselineData, results.ddg, baselineBrowser); + } + + if (outputJson) { + console.log(JSON.stringify(results, null, 2)); + } else { + // Print summary + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + console.log('📊 COMPARISON SUMMARY'); + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'); + + // Page info + const baselineResult = useSafari ? results.safari : results.chrome; + if (baselineResult) { + console.log(`${baselineBrowser.charAt(0).toUpperCase() + baselineBrowser.slice(1)}:`); + console.log(` Title: ${baselineResult.pageState.title}`); + console.log(` Elements: ${baselineResult.elements?.length || 0}`); + } + + if (results.ddg) { + console.log('\nDDG:'); + console.log(` Title: ${results.ddg.pageState.title}`); + console.log(` Elements: ${results.ddg.elements?.length || 0}`); + } + + // Tracker comparison + if (compareTrackers && results.comparison.trackers && Object.keys(results.comparison.trackers).length > 0) { + console.log('\n🛡️ Tracker Blocking:'); + for (const [trackerUrl, result] of Object.entries(results.comparison.trackers)) { + const domain = new URL(trackerUrl).hostname; + const baselineResult = result[baselineBrowser]; + const baselineIcon = baselineResult?.blocked ? '❌' : '✅'; + const ddgIcon = result.ddg?.blocked ? '🛡️' : '⚠️'; + console.log(` ${domain}`); + console.log(` ${baselineBrowser}: ${baselineIcon} ${baselineResult?.blocked ? 'blocked' : 'allowed'}`); + if (result.ddg) { + console.log(` DDG: ${ddgIcon} ${result.ddg.blocked ? 'blocked' : 'allowed'}`); + } + } + } + + // Differences + if (results.comparison.differences.length > 0) { + console.log('\n⚠️ Differences Found:'); + results.comparison.differences.forEach(diff => { + console.log(` • ${diff.type}: ${diff.description || ''}`); + if (diff[baselineBrowser] !== undefined) { + console.log(` ${baselineBrowser}: ${diff[baselineBrowser]}`); + console.log(` DDG: ${diff.ddg}`); + } + }); + } else if (baselineResult && results.ddg) { + console.log('\n✅ No significant differences found'); + } + + console.log('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + } + + } catch (err) { + if (outputJson) { + console.log(JSON.stringify({ error: err.message }, null, 2)); + } else { + console.error('❌ Error:', err.message); + } + process.exit(1); + } +} + +main(); diff --git a/scripts/config-validation-test.mjs b/scripts/config-validation-test.mjs new file mode 100644 index 0000000..25c406d --- /dev/null +++ b/scripts/config-validation-test.mjs @@ -0,0 +1,211 @@ +/** + * Quick test to validate if custom config is being applied + * Checks: blocked requests, protections status + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); +const { By } = selenium; + +const serverUrl = 'http://localhost:4444'; +const configUrl = process.argv[2] || null; + +async function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } + +async function runTest() { + const capabilities = { browserName: 'duckduckgo' }; + if (configUrl) { + capabilities['ddg:privacyConfigURL'] = configUrl; + console.log(`\n🔧 Using custom config: ${configUrl}`); + } else { + console.log(`\n🔧 Using DEFAULT config (no override)`); + } + + const driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities(capabilities) + .build(); + + try { + // Navigate to Nintendo + console.log('\n📍 Navigating to nintendo.com...'); + await driver.get('https://www.nintendo.com/us/'); + await sleep(5000); + + // Check if we can get protection status via privacy dashboard + // First, let's check console for blocked requests + const logs = await driver.executeScript(` + return new Promise((resolve) => { + const results = { + url: window.location.href, + blockedCount: 0, + allowedCount: 0, + trackers: [], + errors: [] + }; + + // Check for DDG-specific objects + if (window.__DDG_TRACKER_INFO__) { + results.trackerInfo = window.__DDG_TRACKER_INFO__; + } + + // Check content scope scripts + if (typeof ddg !== 'undefined') { + results.ddgDefined = true; + } + + // Look for any DDG-injected content + const ddgElements = document.querySelectorAll('[data-ddg-tracker], [data-ddg-tracking]'); + results.ddgElementCount = ddgElements.length; + + resolve(results); + }); + `); + + console.log('\n📊 Page state:'); + console.log(` URL: ${logs.url}`); + console.log(` DDG elements found: ${logs.ddgElementCount}`); + if (logs.ddgDefined) console.log(' DDG object defined: yes'); + if (logs.trackerInfo) console.log(` Tracker info: ${JSON.stringify(logs.trackerInfo)}`); + + // Try to access the privacy dashboard info via the native interface + const privacyInfo = await driver.executeScript(` + return new Promise((resolve) => { + // Try to get protection status from various sources + const info = { + documentDomain: document.domain, + cookies: document.cookie ? document.cookie.split(';').length : 0, + localStorage: Object.keys(localStorage).length, + scripts: document.querySelectorAll('script[src]').length, + iframes: document.querySelectorAll('iframe').length, + thirdPartyScripts: [], + possiblyBlocked: [] + }; + + // List all external scripts + document.querySelectorAll('script[src]').forEach(s => { + const src = s.src; + if (src && !src.includes('nintendo.com')) { + info.thirdPartyScripts.push(new URL(src).hostname); + } + }); + + // List all iframes + document.querySelectorAll('iframe[src]').forEach(f => { + const src = f.src; + if (src && !src.includes('nintendo.com')) { + try { + info.possiblyBlocked.push(new URL(src).hostname); + } catch(e) {} + } + }); + + resolve(info); + }); + `); + + console.log('\n📋 Resource analysis:'); + console.log(` Total scripts: ${privacyInfo.scripts}`); + console.log(` Iframes: ${privacyInfo.iframes}`); + console.log(` Cookies: ${privacyInfo.cookies}`); + console.log(` localStorage keys: ${privacyInfo.localStorage}`); + + if (privacyInfo.thirdPartyScripts.length > 0) { + const unique = [...new Set(privacyInfo.thirdPartyScripts)]; + console.log(` Third-party script domains (${unique.length}):`); + unique.forEach(d => console.log(` - ${d}`)); + } + + // Check for specific trackers that would normally be blocked + const trackerCheck = await driver.executeScript(` + return new Promise(async (resolve) => { + const trackers = { + googleAnalytics: false, + googleTagManager: false, + facebook: false, + doubleclick: false, + criteo: false + }; + + // Check if Google Analytics loaded + if (typeof ga !== 'undefined' || typeof gtag !== 'undefined') { + trackers.googleAnalytics = true; + } + if (typeof google_tag_manager !== 'undefined' || window.dataLayer) { + trackers.googleTagManager = true; + } + if (typeof fbq !== 'undefined') { + trackers.facebook = true; + } + + // Check for script elements + const scripts = Array.from(document.querySelectorAll('script[src]')); + scripts.forEach(s => { + const src = s.src.toLowerCase(); + if (src.includes('google-analytics') || src.includes('googletagmanager')) { + trackers.googleAnalytics = true; + } + if (src.includes('facebook') || src.includes('fbcdn')) { + trackers.facebook = true; + } + if (src.includes('doubleclick')) { + trackers.doubleclick = true; + } + if (src.includes('criteo')) { + trackers.criteo = true; + } + }); + + resolve(trackers); + }); + `); + + console.log('\n🔍 Tracker detection (loaded = not blocked):'); + console.log(` Google Analytics/GTM: ${trackerCheck.googleAnalytics ? '✓ LOADED' : '✗ blocked/not present'}`); + console.log(` Facebook Pixel: ${trackerCheck.facebook ? '✓ LOADED' : '✗ blocked/not present'}`); + console.log(` DoubleClick: ${trackerCheck.doubleclick ? '✓ LOADED' : '✗ blocked/not present'}`); + console.log(` Criteo: ${trackerCheck.criteo ? '✓ LOADED' : '✗ blocked/not present'}`); + + // Check for network errors that might indicate blocking + const performanceData = await driver.executeScript(` + const entries = performance.getEntriesByType('resource'); + const failed = []; + const loaded = []; + + entries.forEach(e => { + if (e.transferSize === 0 && e.decodedBodySize === 0 && !e.name.includes('nintendo')) { + failed.push(e.name); + } else if (!e.name.includes('nintendo')) { + loaded.push(e.name); + } + }); + + return { failed: failed.slice(0, 10), loaded: loaded.length, total: entries.length }; + `); + + console.log('\n📡 Network resources:'); + console.log(` Total loaded: ${performanceData.total}`); + console.log(` Third-party loaded: ${performanceData.loaded}`); + if (performanceData.failed.length > 0) { + console.log(` Possibly blocked (0 bytes):`); + performanceData.failed.forEach(f => { + try { + console.log(` - ${new URL(f).hostname}`); + } catch(e) { + console.log(` - ${f.substring(0, 60)}...`); + } + }); + } + + console.log('\n✅ Config validation complete'); + + } finally { + await driver.quit(); + } +} + +runTest().catch(e => { + console.error('Error:', e.message); + process.exit(1); +}); diff --git a/scripts/debug-page.mjs b/scripts/debug-page.mjs new file mode 100644 index 0000000..8a90f05 --- /dev/null +++ b/scripts/debug-page.mjs @@ -0,0 +1,303 @@ +#!/usr/bin/env node +/** + * Debug Page Inspector + * + * Connects to an existing WebDriver session and inspects the current page. + * Useful for debugging when tests fail or clicks don't work. + * + * Usage: + * node scripts/debug-page.mjs # Inspect current page + * node scripts/debug-page.mjs --links # Show link analysis + * node scripts/debug-page.mjs --inputs # Show form inputs + * node scripts/debug-page.mjs --modals # Detect modals + * node scripts/debug-page.mjs --console # Show captured console logs + * node scripts/debug-page.mjs --console-start # Start console capture + * node scripts/debug-page.mjs --console-stop # Stop capture and show logs + * node scripts/debug-page.mjs --errors # Show resource load errors + * node scripts/debug-page.mjs --find "download" # Find elements with text + * node scripts/debug-page.mjs --click "selector" # Debug a click + * node scripts/debug-page.mjs --all # Run all inspections + * + * Environment: + * WEBDRIVER_SERVER_URL: WebDriver server URL (default: http://localhost:4444) + */ + +import { createRequire } from 'node:module'; +import { debugScripts, runDebug, logActionableElements, logLinkAnalysis } from './debug-utils.mjs'; + +const localRequire = createRequire(import.meta.url); +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +// Parse args +const args = process.argv.slice(2); +const showLinks = args.includes('--links'); +const showInputs = args.includes('--inputs'); +const showModals = args.includes('--modals'); +const showConsole = args.includes('--console'); +const startConsole = args.includes('--console-start'); +const stopConsole = args.includes('--console-stop'); +const showErrors = args.includes('--errors'); +const showAll = args.includes('--all'); +const findText = args.includes('--find') ? args[args.indexOf('--find') + 1] : null; +const clickSelector = args.includes('--click') ? args[args.indexOf('--click') + 1] : null; + +async function getExistingSession() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + const sessions = data.value || (Array.isArray(data) ? data : []); + if (sessions.length > 0) { + return sessions[0].id || sessions[0].sessionId || sessions[0]; + } + } + } catch { + // Server not running + } + return null; +} + +async function main() { + console.log('🔍 Page Debug Inspector'); + console.log(` Server: ${serverUrl}\n`); + + // Find existing session + const sessionId = await getExistingSession(); + if (!sessionId) { + console.error('❌ No active WebDriver session found.'); + console.error(' Start a test script first, or run with --keep flag.'); + process.exit(1); + } + + console.log(` Session: ${sessionId}\n`); + + // Connect to existing session using the WebDriver HTTP API directly + // since selenium-webdriver doesn't support attaching to existing sessions easily + + async function executeScript(script, ...args) { + const response = await fetch(`${serverUrl}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script: `return (function() { ${script} })()`, + args + }) + }); + const data = await response.json(); + if (data.value?.error) { + throw new Error(data.value.message); + } + return data.value; + } + + // Get page state + const pageState = await executeScript(debugScripts.pageState); + console.log('📄 Page State:'); + console.log(` URL: ${pageState.url}`); + console.log(` Title: ${pageState.title}`); + console.log(` Ready: ${pageState.readyState}`); + console.log(` Viewport: ${pageState.viewport.width}x${pageState.viewport.height}`); + + // Show actionable elements (default) + if (!showLinks && !showInputs && !showModals && !findText && !clickSelector || showAll) { + console.log('\n🎯 Actionable Elements:'); + const elements = await executeScript(debugScripts.actionableElements); + + const links = elements.filter(e => e.tag === 'a'); + const buttons = elements.filter(e => e.tag !== 'a'); + + if (buttons.length > 0) { + console.log(`\n Buttons (${buttons.length}):`); + buttons.slice(0, 15).forEach(e => { + const status = e.disabled ? '🔒' : '✓'; + console.log(` ${status} [${e.selector}] "${e.text}"`); + }); + if (buttons.length > 15) console.log(` ... and ${buttons.length - 15} more`); + } + + if (links.length > 0) { + console.log(`\n Links (${links.length}):`); + links.slice(0, 15).forEach(e => { + const icon = e.hrefType === 'hash-only' ? '⚠️' : + e.hrefType === 'javascript' ? '⚠️' : '→'; + console.log(` ${icon} [${e.selector}] "${e.text}" ${e.href?.substring(0, 40) || ''}`); + }); + if (links.length > 15) console.log(` ... and ${links.length - 15} more`); + } + } + + // Link analysis + if (showLinks || showAll) { + console.log('\n🔗 Link Analysis:'); + const analysis = await executeScript(debugScripts.linkAnalysis); + + console.log(` Navigation: ${analysis.navigation.length}`); + console.log(` JS-triggered: ${analysis.jsTriggered.length}`); + console.log(` External: ${analysis.external.length}`); + + if (analysis.jsTriggered.length > 0) { + console.log('\n ⚠️ JS-triggered (href="#" or javascript:) - may need special handling:'); + analysis.jsTriggered.slice(0, 10).forEach(l => { + console.log(` "${l.text}"`); + }); + } + } + + // Form inputs + if (showInputs || showAll) { + console.log('\n📝 Form Inputs:'); + const inputs = await executeScript(debugScripts.formInputs); + + if (inputs.length === 0) { + console.log(' No visible inputs found'); + } else { + inputs.forEach(i => { + const status = i.disabled ? '🔒' : i.required ? '*' : ' '; + console.log(` ${status} [${i.selector}] type=${i.type} ${i.placeholder ? `"${i.placeholder}"` : ''}`); + }); + } + } + + // Modal detection + if (showModals || showAll) { + console.log('\n🪟 Modal Detection:'); + const modalInfo = await executeScript(debugScripts.detectModals); + + if (!modalInfo.hasModal) { + console.log(' No modals detected'); + } else { + console.log(` Found ${modalInfo.modals.length} modal(s):`); + modalInfo.modals.forEach(m => { + console.log(` [${m.selector}] "${m.text?.substring(0, 50)}"`); + if (m.hasCloseButton) console.log(' Has close button'); + }); + } + } + + // Find by text + if (findText) { + console.log(`\n🔎 Elements containing "${findText}":`); + const found = await executeScript(debugScripts.findByText, findText, false); + + if (found.length === 0) { + console.log(' No matching elements found'); + } else { + found.forEach(e => { + console.log(` <${e.tag}> [${e.selector}] "${e.text?.substring(0, 50)}"`); + if (e.href) console.log(` href: ${e.href}`); + }); + } + } + + // Console capture - start + if (startConsole) { + console.log('\n📋 Starting Console Capture...'); + const result = await executeScript(debugScripts.startConsoleCapture); + console.log(` Status: ${result.status}`); + if (result.cleared) console.log(' (Previous logs cleared)'); + console.log(' Run with --console or --console-stop to view logs'); + } + + // Console capture - show logs + if (showConsole || stopConsole || showAll) { + console.log('\n📋 Console Logs:'); + const result = await executeScript(debugScripts.getConsoleLogs, stopConsole); + + if (result.error) { + console.log(` ⚠️ ${result.error}`); + console.log(' Run with --console-start first to begin capturing'); + } else if (result.logs.length === 0) { + console.log(' (no logs captured)'); + } else { + const levelIcons = { + log: ' ', + info: 'ℹ️', + warn: '⚠️', + error: '❌', + debug: '🔍', + exception: '💥', + rejection: '💔' + }; + + result.logs.slice(-30).forEach(entry => { + const icon = levelIcons[entry.level] || ' '; + const msg = entry.message.substring(0, 150); + console.log(` ${icon} [${entry.level}] ${msg}`); + }); + + if (result.logs.length > 30) { + console.log(` ... and ${result.logs.length - 30} more`); + } + + if (stopConsole) { + console.log('\n ✓ Console capture stopped'); + } + } + } + + // Resource errors + if (showErrors || showAll) { + console.log('\n🔴 Resource Errors:'); + const result = await executeScript(debugScripts.getResourceErrors); + + if (result.errors.length === 0) { + console.log(' No resource errors detected'); + } else { + result.errors.forEach(e => { + console.log(` ❌ ${e.type}: ${e.name.substring(0, 80)}`); + }); + } + } + + // Debug click + if (clickSelector) { + console.log(`\n🖱️ Debug Click: ${clickSelector}`); + + // Start DOM tracking + await executeScript(debugScripts.domTracker, 'start'); + + // Execute click + const clickResult = await executeScript(debugScripts.debugClick, clickSelector); + + // Wait for effects + await new Promise(r => setTimeout(r, 500)); + + // Get DOM changes + const domChanges = await executeScript(debugScripts.domTracker, 'stop'); + + if (clickResult.error) { + console.log(` ❌ ${clickResult.error}`); + } else { + console.log(` Element: <${clickResult.element.tag}> "${clickResult.element.text}"`); + console.log(` Events: ${clickResult.events.map(e => e.type).join(', ') || 'none'}`); + console.log(` URL changed: ${clickResult.urlChanged}`); + if (clickResult.urlChanged) { + console.log(` New URL: ${clickResult.newUrl}`); + } + + if (domChanges.added?.length > 0) { + console.log(`\n DOM Added (${domChanges.added.length}):`); + domChanges.added.slice(0, 5).forEach(e => { + console.log(` + <${e.tag}> ${e.text?.substring(0, 40)}`); + }); + } + + if (domChanges.attributes?.length > 0) { + console.log(`\n Attributes Changed (${domChanges.attributes.length}):`); + domChanges.attributes.slice(0, 5).forEach(e => { + console.log(` ~ <${e.tag}> ${e.attr}=${e.newValue?.substring(0, 30)}`); + }); + } + } + } + + console.log('\n✅ Done'); +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/debug-utils.mjs b/scripts/debug-utils.mjs new file mode 100644 index 0000000..b76f68e --- /dev/null +++ b/scripts/debug-utils.mjs @@ -0,0 +1,942 @@ +/** + * WebDriver Debugging Utilities + * + * Provides injectable scripts for debugging page interactions. + * Import and use with driver.executeScript(). + * + * Usage: + * import { debugScripts, runDebug } from './debug-utils.mjs'; + * const elements = await runDebug(driver, 'actionableElements'); + */ + +/** + * Injectable debug scripts - raw JS strings for executeScript() + */ +export const debugScripts = { + /** + * Get all actionable elements (buttons, links) with their properties + * Returns: Array of { tag, text, href, type, hasClickHandler, selector, rect } + */ + actionableElements: ` + const results = []; + const seen = new WeakSet(); + + function getSelector(el) { + if (el.id) return '#' + el.id; + if (el.className && typeof el.className === 'string') { + const classes = el.className.trim().split(/\\s+/).slice(0, 2).join('.'); + if (classes) return el.tagName.toLowerCase() + '.' + classes; + } + return el.tagName.toLowerCase(); + } + + function hasClickHandler(el) { + // Check for onclick attribute + if (el.onclick || el.getAttribute('onclick')) return true; + // Check for common event listener patterns + if (el._events || el.__events || el.__zone_symbol__clickfalse) return true; + // Check React/Vue patterns + if (el.__reactFiber$ || el.__vue__) return true; + return false; + } + + // Links + document.querySelectorAll('a[href]').forEach(el => { + if (seen.has(el)) return; + seen.add(el); + const href = el.getAttribute('href') || ''; + const text = (el.textContent || '').trim().substring(0, 60); + if (!text && !href) return; + + results.push({ + tag: 'a', + text, + href, + hrefType: href === '#' ? 'hash-only' : + href.startsWith('javascript:') ? 'javascript' : + href.startsWith('http') ? 'absolute' : + href.startsWith('/') ? 'relative' : 'other', + hasClickHandler: hasClickHandler(el), + selector: getSelector(el), + visible: el.offsetParent !== null, + rect: el.getBoundingClientRect().toJSON() + }); + }); + + // Buttons + document.querySelectorAll('button, [role="button"], input[type="submit"], input[type="button"]').forEach(el => { + if (seen.has(el)) return; + seen.add(el); + const text = (el.textContent || el.value || '').trim().substring(0, 60); + + results.push({ + tag: el.tagName.toLowerCase(), + text, + href: null, + hrefType: null, + type: el.type || el.getAttribute('role'), + hasClickHandler: hasClickHandler(el), + selector: getSelector(el), + disabled: el.disabled || el.getAttribute('aria-disabled') === 'true', + visible: el.offsetParent !== null, + rect: el.getBoundingClientRect().toJSON() + }); + }); + + // Clickable divs/spans (role=button or tabindex with click styling) + document.querySelectorAll('[tabindex="0"], [onclick]').forEach(el => { + if (seen.has(el) || el.tagName === 'A' || el.tagName === 'BUTTON') return; + seen.add(el); + const text = (el.textContent || '').trim().substring(0, 60); + if (!text) return; + + results.push({ + tag: el.tagName.toLowerCase(), + text, + href: null, + hrefType: null, + hasClickHandler: true, + selector: getSelector(el), + visible: el.offsetParent !== null, + rect: el.getBoundingClientRect().toJSON() + }); + }); + + return results.filter(r => r.visible); + `, + + /** + * Find elements matching a text pattern + * Args: [searchText: string, caseSensitive?: boolean] + * Returns: Array of { tag, text, selector, href } + */ + findByText: ` + const [searchText, caseSensitive = false] = arguments; + const pattern = caseSensitive ? searchText : searchText.toLowerCase(); + const results = []; + + const walker = document.createTreeWalker( + document.body, + NodeFilter.SHOW_ELEMENT, + null + ); + + let node; + while (node = walker.nextNode()) { + const text = (node.textContent || '').trim(); + const matchText = caseSensitive ? text : text.toLowerCase(); + + if (matchText.includes(pattern)) { + // Only include if this element is the most specific container + const childWithText = Array.from(node.children).some(child => { + const childText = caseSensitive ? child.textContent : (child.textContent || '').toLowerCase(); + return childText.includes(pattern); + }); + + if (!childWithText || node.children.length === 0) { + results.push({ + tag: node.tagName.toLowerCase(), + text: text.substring(0, 100), + selector: node.id ? '#' + node.id : + node.className ? node.tagName.toLowerCase() + '.' + (node.className.split(' ')[0]) : + node.tagName.toLowerCase(), + href: node.getAttribute('href'), + visible: node.offsetParent !== null + }); + } + } + } + + return results.filter(r => r.visible).slice(0, 20); + `, + + /** + * Get all links grouped by type (navigation vs JS-triggered) + * Returns: { navigation: [...], jsTriggered: [...], other: [...] } + */ + linkAnalysis: ` + const links = Array.from(document.querySelectorAll('a[href]')); + const result = { + navigation: [], + jsTriggered: [], + external: [], + other: [] + }; + + links.forEach(link => { + const href = link.getAttribute('href') || ''; + const text = (link.textContent || '').trim().substring(0, 50); + if (!text && !link.querySelector('img, svg')) return; + if (link.offsetParent === null) return; // Not visible + + const entry = { text: text || '[icon]', href }; + + if (href === '#' || href.startsWith('javascript:') || href === '') { + result.jsTriggered.push(entry); + } else if (href.startsWith('http') && !href.includes(location.hostname)) { + result.external.push(entry); + } else if (href.startsWith('/') || href.startsWith('http')) { + result.navigation.push(entry); + } else { + result.other.push(entry); + } + }); + + return result; + `, + + /** + * Track DOM changes after an action (call before, then after action) + * Mode: 'start' to begin tracking, 'stop' to get results + * Returns on stop: { added: [...], removed: [...], changed: [...] } + */ + domTracker: ` + const mode = arguments[0]; + + if (mode === 'start') { + window.__domTracker = { + changes: [], + observer: new MutationObserver(mutations => { + mutations.forEach(m => { + if (m.type === 'childList') { + m.addedNodes.forEach(n => { + if (n.nodeType === 1) { + window.__domTracker.changes.push({ + type: 'added', + tag: n.tagName, + text: (n.textContent || '').substring(0, 50), + id: n.id, + classes: n.className + }); + } + }); + m.removedNodes.forEach(n => { + if (n.nodeType === 1) { + window.__domTracker.changes.push({ + type: 'removed', + tag: n.tagName, + text: (n.textContent || '').substring(0, 50) + }); + } + }); + } else if (m.type === 'attributes') { + window.__domTracker.changes.push({ + type: 'attribute', + tag: m.target.tagName, + attr: m.attributeName, + newValue: m.target.getAttribute(m.attributeName) + }); + } + }); + }) + }; + window.__domTracker.observer.observe(document.body, { + childList: true, + subtree: true, + attributes: true, + attributeFilter: ['class', 'style', 'hidden', 'aria-hidden', 'disabled'] + }); + return { status: 'tracking' }; + } + + if (mode === 'stop') { + if (!window.__domTracker) return { error: 'Tracker not started' }; + window.__domTracker.observer.disconnect(); + const changes = window.__domTracker.changes; + delete window.__domTracker; + return { + added: changes.filter(c => c.type === 'added'), + removed: changes.filter(c => c.type === 'removed'), + attributes: changes.filter(c => c.type === 'attribute') + }; + } + + return { error: 'Invalid mode. Use "start" or "stop"' }; + `, + + /** + * Debug a click - reports if handlers fired + * Args: [selector: string] - CSS selector of element to click + * Returns: { clicked: boolean, handlers: [...], urlChanged: boolean, newUrl: string } + */ + debugClick: ` + const selector = arguments[0]; + const el = document.querySelector(selector); + if (!el) return { error: 'Element not found: ' + selector }; + + const result = { + element: { + tag: el.tagName, + text: (el.textContent || '').trim().substring(0, 50), + href: el.getAttribute('href') + }, + originalUrl: location.href, + handlers: [], + events: [] + }; + + // Intercept and log events + const eventTypes = ['click', 'mousedown', 'mouseup', 'pointerdown', 'pointerup']; + const originalListeners = {}; + + eventTypes.forEach(type => { + const handler = (e) => { + result.events.push({ + type, + target: e.target.tagName, + defaultPrevented: e.defaultPrevented, + propagationStopped: e.cancelBubble + }); + }; + el.addEventListener(type, handler, true); + originalListeners[type] = handler; + }); + + // Dispatch a real click + el.click(); + + // Clean up listeners + eventTypes.forEach(type => { + el.removeEventListener(type, originalListeners[type], true); + }); + + // Check if URL changed + result.urlChanged = location.href !== result.originalUrl; + result.newUrl = location.href; + + return result; + `, + + /** + * Get form inputs on the page + * Returns: Array of { name, type, id, placeholder, value, selector } + */ + formInputs: ` + const inputs = Array.from(document.querySelectorAll('input, select, textarea')); + return inputs + .filter(el => el.offsetParent !== null) // visible only + .map(el => ({ + tag: el.tagName.toLowerCase(), + type: el.type, + name: el.name, + id: el.id, + placeholder: el.placeholder, + value: el.type === 'password' ? '[hidden]' : (el.value || '').substring(0, 30), + selector: el.id ? '#' + el.id : + el.name ? el.tagName.toLowerCase() + '[name="' + el.name + '"]' : + el.tagName.toLowerCase() + '[type="' + el.type + '"]', + required: el.required, + disabled: el.disabled + })); + `, + + /** + * Check if page has any modals/dialogs open + * Returns: { hasModal: boolean, modals: [...] } + */ + detectModals: ` + const modalSelectors = [ + '[role="dialog"]', + '[role="alertdialog"]', + '[aria-modal="true"]', + '.modal:not([hidden])', + '.Modal:not([hidden])', + '[class*="modal"]:not([hidden])', + '[class*="Modal"]:not([hidden])', + '[class*="dialog"]:not([hidden])', + '[class*="Dialog"]:not([hidden])', + '[class*="popup"]:not([hidden])', + '[class*="Popup"]:not([hidden])', + '[class*="overlay"]:not([hidden])' + ]; + + const modals = []; + const seen = new WeakSet(); + + modalSelectors.forEach(sel => { + try { + document.querySelectorAll(sel).forEach(el => { + if (seen.has(el) || el.offsetParent === null) return; + // Check if actually visible + const style = getComputedStyle(el); + if (style.display === 'none' || style.visibility === 'hidden') return; + + seen.add(el); + modals.push({ + selector: sel, + text: (el.textContent || '').trim().substring(0, 100), + hasCloseButton: !!el.querySelector('[aria-label*="close"], [aria-label*="Close"], button:has(svg), .close'), + rect: el.getBoundingClientRect().toJSON() + }); + }); + } catch {} + }); + + return { + hasModal: modals.length > 0, + modals + }; + `, + + /** + * Start capturing console logs + * Call before actions you want to monitor, then use 'getConsoleLogs' to retrieve + * Returns: { status: 'capturing' } + */ + startConsoleCapture: ` + if (window.__consoleCapture) { + // Already capturing, just clear + window.__consoleCapture.logs = []; + return { status: 'already_capturing', cleared: true }; + } + + window.__consoleCapture = { + logs: [], + original: { + log: console.log, + warn: console.warn, + error: console.error, + info: console.info, + debug: console.debug + } + }; + + ['log', 'warn', 'error', 'info', 'debug'].forEach(level => { + console[level] = function(...args) { + window.__consoleCapture.logs.push({ + level, + timestamp: Date.now(), + message: args.map(a => { + try { + if (typeof a === 'object') return JSON.stringify(a); + return String(a); + } catch { return '[Object]'; } + }).join(' ') + }); + window.__consoleCapture.original[level].apply(console, args); + }; + }); + + // Also capture unhandled errors + window.__consoleCapture.errorHandler = (event) => { + window.__consoleCapture.logs.push({ + level: 'exception', + timestamp: Date.now(), + message: event.message + ' at ' + event.filename + ':' + event.lineno + }); + }; + window.addEventListener('error', window.__consoleCapture.errorHandler); + + // Capture unhandled promise rejections + window.__consoleCapture.rejectionHandler = (event) => { + window.__consoleCapture.logs.push({ + level: 'rejection', + timestamp: Date.now(), + message: String(event.reason) + }); + }; + window.addEventListener('unhandledrejection', window.__consoleCapture.rejectionHandler); + + return { status: 'capturing' }; + `, + + /** + * Get captured console logs and optionally stop capturing + * Args: [stopCapture?: boolean] - if true, restores original console + * Returns: { logs: [...], count: number } + */ + getConsoleLogs: ` + const stopCapture = arguments[0] ?? false; + + if (!window.__consoleCapture) { + return { logs: [], count: 0, error: 'Capture not started' }; + } + + const logs = [...window.__consoleCapture.logs]; + + if (stopCapture) { + // Restore original console methods + Object.keys(window.__consoleCapture.original).forEach(level => { + console[level] = window.__consoleCapture.original[level]; + }); + window.removeEventListener('error', window.__consoleCapture.errorHandler); + window.removeEventListener('unhandledrejection', window.__consoleCapture.rejectionHandler); + delete window.__consoleCapture; + } + + return { logs, count: logs.length }; + `, + + /** + * Clear captured console logs without stopping capture + * Returns: { cleared: number } + */ + clearConsoleLogs: ` + if (!window.__consoleCapture) { + return { cleared: 0, error: 'Capture not started' }; + } + const count = window.__consoleCapture.logs.length; + window.__consoleCapture.logs = []; + return { cleared: count }; + `, + + /** + * Get browser console logs via WebDriver (if available) + * Note: This uses performance.getEntries() to find script errors + * Returns: { errors: [...], resources: [...] } + */ + getResourceErrors: ` + const entries = performance.getEntriesByType('resource'); + const errors = []; + const resources = []; + + entries.forEach(entry => { + const info = { + name: entry.name, + type: entry.initiatorType, + duration: Math.round(entry.duration), + size: entry.transferSize || 0 + }; + + // Check for failed resources (0 transfer size often indicates failure) + if (entry.transferSize === 0 && entry.duration > 0) { + errors.push({ ...info, error: 'possible_failure' }); + } else { + resources.push(info); + } + }); + + return { + errors: errors.slice(-20), + resources: resources.slice(-20), + total: entries.length + }; + `, + + /** + * Probe for blocked resources by attempting to fetch known tracker URLs + * Args: [urls?: string[]] - Optional array of URLs to test (defaults to common trackers) + * Returns: { blocked: [...], allowed: [...], errors: [...] } + */ + probeBlockedResources: ` + const urlsToTest = arguments[0] || [ + 'https://logx.optimizely.com/v1/events', + 'https://www.google-analytics.com/collect', + 'https://www.googletagmanager.com/gtm.js', + 'https://connect.facebook.net/en_US/fbevents.js', + 'https://bat.bing.com/bat.js', + 'https://pixel.advertising.com/pixel' + ]; + + const results = { + blocked: [], + allowed: [], + errors: [], + timestamp: new Date().toISOString(), + url: location.href + }; + + // Test each URL with a quick fetch probe + const probes = urlsToTest.map(async (url) => { + try { + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), 3000); + + const response = await fetch(url, { + method: 'HEAD', + mode: 'no-cors', // Allows blocked detection + signal: controller.signal + }); + + clearTimeout(timeoutId); + + // no-cors returns opaque response (type='opaque') if request went through + // Content blocker will cause network error before response + results.allowed.push({ url, status: 'reachable', type: response.type }); + } catch (e) { + // Blocked by content blocker or CORS + const isBlocked = e.message.includes('Failed to fetch') || + e.message.includes('NetworkError') || + e.message.includes('blocked') || + e.name === 'TypeError'; + + if (isBlocked) { + results.blocked.push({ url, error: e.message, likely: 'content_blocker' }); + } else if (e.name === 'AbortError') { + results.errors.push({ url, error: 'timeout' }); + } else { + results.errors.push({ url, error: e.message }); + } + } + }); + + await Promise.all(probes); + return results; + `, + + /** + * Monitor network requests using PerformanceObserver (needs to be started early) + * Mode: 'start' to begin, 'stop' to get results + * Returns on stop: { requests: [...], failed: [...] } + */ + networkMonitor: ` + const mode = arguments[0]; + + if (mode === 'start') { + window.__networkMonitor = { + requests: [], + observer: new PerformanceObserver((list) => { + for (const entry of list.getEntries()) { + window.__networkMonitor.requests.push({ + name: entry.name, + type: entry.initiatorType, + duration: Math.round(entry.duration), + size: entry.transferSize || 0, + status: entry.responseStatus || 'unknown', + failed: entry.transferSize === 0 && entry.duration > 0 + }); + } + }) + }; + window.__networkMonitor.observer.observe({ entryTypes: ['resource'] }); + return { status: 'monitoring' }; + } + + if (mode === 'stop') { + if (!window.__networkMonitor) return { error: 'Monitor not started' }; + window.__networkMonitor.observer.disconnect(); + const requests = window.__networkMonitor.requests; + delete window.__networkMonitor; + + return { + requests: requests.filter(r => !r.failed), + failed: requests.filter(r => r.failed), + total: requests.length + }; + } + + return { error: 'Invalid mode. Use "start" or "stop"' }; + `, + + /** + * Get page state summary + * Returns: { url, title, readyState, hasAlerts, scrollPosition, viewport } + */ + pageState: ` + return { + url: location.href, + title: document.title, + readyState: document.readyState, + scrollPosition: { x: window.scrollX, y: window.scrollY }, + viewport: { width: window.innerWidth, height: window.innerHeight }, + documentHeight: document.documentElement.scrollHeight, + cookies: document.cookie.split(';').length, + localStorage: Object.keys(localStorage).length, + sessionStorage: Object.keys(sessionStorage).length + }; + ` +}; + +/** + * Helper to run a debug script + * @param {import('selenium-webdriver').WebDriver} driver - Selenium WebDriver instance + * @param {keyof typeof debugScripts} scriptName - Name of script to run + * @param {...any} args - Arguments to pass to the script + * @returns {Promise} Script result + */ +export async function runDebug(driver, scriptName, ...args) { + const script = debugScripts[scriptName]; + if (!script) { + throw new Error(`Unknown debug script: ${scriptName}`); + } + return await driver.executeScript(script, ...args); +} + +/** + * Log actionable elements in a readable format + * @param {import('selenium-webdriver').WebDriver} driver + * @param {Object} options + * @param {string} [options.filter] - Filter by text content + * @param {boolean} [options.linksOnly] - Only show links + * @param {boolean} [options.buttonsOnly] - Only show buttons + */ +export async function logActionableElements(driver, options = {}) { + const elements = await runDebug(driver, 'actionableElements'); + + let filtered = elements; + if (options.filter) { + const pattern = options.filter.toLowerCase(); + filtered = elements.filter(e => (e.text || '').toLowerCase().includes(pattern)); + } + if (options.linksOnly) { + filtered = filtered.filter(e => e.tag === 'a'); + } + if (options.buttonsOnly) { + filtered = filtered.filter(e => e.tag !== 'a'); + } + + console.log(`\n🔍 Actionable elements (${filtered.length} found):`); + + const links = filtered.filter(e => e.tag === 'a'); + const buttons = filtered.filter(e => e.tag !== 'a'); + + if (links.length > 0) { + console.log('\n Links:'); + links.forEach(e => { + const hrefInfo = e.hrefType === 'hash-only' ? '⚠️ #' : + e.hrefType === 'javascript' ? '⚠️ js:' : + e.href?.substring(0, 50) || ''; + console.log(` [${e.selector}] "${e.text}" → ${hrefInfo}`); + }); + } + + if (buttons.length > 0) { + console.log('\n Buttons:'); + buttons.forEach(e => { + const status = e.disabled ? '🔒' : e.hasClickHandler ? '✓' : '?'; + console.log(` ${status} [${e.selector}] "${e.text}"`); + }); + } + + return filtered; +} + +/** + * Log link analysis in a readable format + * @param {import('selenium-webdriver').WebDriver} driver + */ +export async function logLinkAnalysis(driver) { + const analysis = await runDebug(driver, 'linkAnalysis'); + + console.log('\n🔗 Link Analysis:'); + console.log(` Navigation links: ${analysis.navigation.length}`); + console.log(` JS-triggered (href="#" or javascript:): ${analysis.jsTriggered.length}`); + console.log(` External links: ${analysis.external.length}`); + + if (analysis.jsTriggered.length > 0) { + console.log('\n ⚠️ JS-triggered links (may not work with WebDriver click):'); + analysis.jsTriggered.slice(0, 10).forEach(l => { + console.log(` "${l.text}" → ${l.href}`); + }); + } + + return analysis; +} + +/** + * Track DOM changes around an action + * @param {import('selenium-webdriver').WebDriver} driver + * @param {Function} action - Async function to execute + * @returns {Promise} DOM changes + */ +export async function trackDomChanges(driver, action) { + await runDebug(driver, 'domTracker', 'start'); + await action(); + // Small delay to let mutations settle + await new Promise((resolve) => setTimeout(resolve, 500)); + return await runDebug(driver, 'domTracker', 'stop'); +} + +/** + * Start capturing console logs + * @param {import('selenium-webdriver').WebDriver} driver + */ +export async function startConsoleCapture(driver) { + return await runDebug(driver, 'startConsoleCapture'); +} + +/** + * Get captured console logs + * @param {import('selenium-webdriver').WebDriver} driver + * @param {boolean} [stop=false] - Stop capturing after getting logs + */ +export async function getConsoleLogs(driver, stop = false) { + return await runDebug(driver, 'getConsoleLogs', stop); +} + +/** + * Log console output in a readable format + * @param {import('selenium-webdriver').WebDriver} driver + * @param {Object} options + * @param {boolean} [options.stop=false] - Stop capturing + * @param {string[]} [options.levels] - Filter by levels (log, warn, error, info, debug, exception, rejection) + */ +export async function logConsoleLogs(driver, options = {}) { + const { logs } = await getConsoleLogs(driver, options.stop); + + /** @type {Array<{level: string, message: string, timestamp: number}>} */ + let filtered = logs; + if (options.levels) { + filtered = logs.filter((/** @type {{level: string}} */ l) => options.levels?.includes(l.level)); + } + + if (filtered.length === 0) { + console.log('\n📋 Console: (empty)'); + return filtered; + } + + console.log(`\n📋 Console Logs (${filtered.length}):`); + + const levelIcons = { + log: ' ', + info: 'ℹ️', + warn: '⚠️', + error: '❌', + debug: '🔍', + exception: '💥', + rejection: '💔' + }; + + filtered.forEach(entry => { + const icon = levelIcons[entry.level] || ' '; + const msg = entry.message.substring(0, 200); + console.log(` ${icon} [${entry.level}] ${msg}`); + }); + + return filtered; +} + +/** + * Capture console logs around an action + * @param {import('selenium-webdriver').WebDriver} driver + * @param {Function} action - Async function to execute + * @returns {Promise<{logs: Array, result: any}>} + */ +export async function captureConsoleDuring(driver, action) { + await startConsoleCapture(driver); + const result = await action(); + await new Promise((resolve) => setTimeout(resolve, 300)); // Let async logs settle + const { logs } = await getConsoleLogs(driver, true); + return { logs, result }; +} + +/** + * Probe for blocked resources (Content Blocker detection) + * @param {import('selenium-webdriver').WebDriver} driver + * @param {string[]} [urls] - Optional custom URLs to test + * @returns {Promise<{blocked: Array, allowed: Array, errors: Array}>} + */ +export async function probeBlockedResources(driver, urls) { + const results = await runDebug(driver, 'probeBlockedResources', urls); + + console.log(`\n🛡️ Content Blocker Probe Results:`); + console.log(` Page: ${results.url}`); + + if (results.blocked.length > 0) { + console.log(` ❌ BLOCKED (${results.blocked.length}):`); + results.blocked.forEach(r => { + console.log(` - ${r.url}`); + }); + } + + if (results.allowed.length > 0) { + console.log(` ✅ ALLOWED (${results.allowed.length}):`); + results.allowed.forEach(r => { + console.log(` - ${r.url}`); + }); + } + + if (results.errors.length > 0) { + console.log(` ⚠️ ERRORS (${results.errors.length}):`); + results.errors.forEach(r => { + console.log(` - ${r.url}: ${r.error}`); + }); + } + + return results; +} + +/** + * Start network monitoring + * @param {import('selenium-webdriver').WebDriver} driver + */ +export async function startNetworkMonitor(driver) { + return await runDebug(driver, 'networkMonitor', 'start'); +} + +/** + * Stop network monitoring and get results + * @param {import('selenium-webdriver').WebDriver} driver + */ +export async function stopNetworkMonitor(driver) { + const results = await runDebug(driver, 'networkMonitor', 'stop'); + + console.log(`\n📡 Network Monitor Results:`); + console.log(` Total requests: ${results.total}`); + console.log(` Successful: ${results.requests?.length || 0}`); + console.log(` Failed/Blocked: ${results.failed?.length || 0}`); + + if (results.failed?.length > 0) { + console.log(`\n ❌ Failed requests:`); + results.failed.forEach(r => { + console.log(` - ${r.name} (${r.type})`); + }); + } + + return results; +} + +/** + * Debug a click and report what happened + * @param {import('selenium-webdriver').WebDriver} driver + * @param {string} selector - CSS selector + * @param {Object} [options] + * @param {boolean} [options.captureConsole=true] - Capture console logs during click + */ +export async function debugClickElement(driver, selector, options = {}) { + const { captureConsole = true } = options; + + console.log(`\n🖱️ Debug click on: ${selector}`); + + // Start DOM tracking + await runDebug(driver, 'domTracker', 'start'); + + // Start console capture if enabled + if (captureConsole) { + await runDebug(driver, 'startConsoleCapture'); + } + + // Execute click and capture events + const clickResult = await runDebug(driver, 'debugClick', selector); + + // Small delay for any async effects + await new Promise((resolve) => setTimeout(resolve, 500)); + + // Get DOM changes + const domChanges = await runDebug(driver, 'domTracker', 'stop'); + + // Get console logs + /** @type {{logs: Array<{level: string, message: string}>}} */ + let consoleLogs = { logs: [] }; + if (captureConsole) { + consoleLogs = await runDebug(driver, 'getConsoleLogs', true); + } + + console.log(` Element: <${clickResult.element?.tag}> "${clickResult.element?.text}"`); + console.log(` Events fired: ${clickResult.events?.map((/** @type {{type: string}} */ e) => e.type).join(', ') || 'none'}`); + console.log(` URL changed: ${clickResult.urlChanged}`); + + if (domChanges.added?.length > 0) { + console.log(` DOM added: ${domChanges.added.length} elements`); + domChanges.added.slice(0, 3).forEach((/** @type {{tag: string, text?: string}} */ e) => { + console.log(` + <${e.tag}> ${e.text?.substring(0, 30)}`); + }); + } + + if (domChanges.removed?.length > 0) { + console.log(` DOM removed: ${domChanges.removed.length} elements`); + } + + if (consoleLogs.logs.length > 0) { + console.log(` Console output: ${consoleLogs.logs.length} message(s)`); + const errors = consoleLogs.logs.filter((/** @type {{level: string}} */ l) => ['error', 'exception', 'rejection'].includes(l.level)); + if (errors.length > 0) { + console.log(` ❌ Errors during click:`); + errors.slice(0, 3).forEach((/** @type {{message: string}} */ e) => { + console.log(` ${e.message.substring(0, 80)}`); + }); + } + } + + return { click: clickResult, dom: domChanges, console: consoleLogs }; +} diff --git a/scripts/diagnose-site.mjs b/scripts/diagnose-site.mjs new file mode 100644 index 0000000..fa135bc --- /dev/null +++ b/scripts/diagnose-site.mjs @@ -0,0 +1,483 @@ +/** + * Site Diagnostic Mode + * + * Crawls and explores a site randomly using debug tools. + * Captures selectors clicked, console logs, DOM changes, and screenshots. + * + * Usage: + * npm run diagnose -- https://example.com + * npm run diagnose -- https://example.com --max-clicks 20 --screenshot + * + * Options: + * --max-clicks N Maximum number of clicks (default: 15) + * --max-depth N Maximum navigation depth (default: 3) + * --screenshot Take screenshots after each click + * --stay-on-domain Only follow links on the same domain (default: true) + * --no-stay-on-domain Allow navigation to external domains + * --keep Keep browser open after completion + * --report FILE Save report to file (default: stdout) + */ + +import { createRequire } from 'node:module'; +import { writeFile, mkdir } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { + runDebug, + startConsoleCapture, + getConsoleLogs, + trackDomChanges +} from './debug-utils.mjs'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); + +const localRequire = createRequire(import.meta.url); + +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); + +// Parse CLI arguments +const args = process.argv.slice(2); +const url = args.find((arg) => !arg.startsWith('--')) ?? 'https://duckduckgo.com'; +const maxClicks = parseInt(args.find((_, i, a) => a[i - 1] === '--max-clicks') ?? '15', 10); +const maxDepth = parseInt(args.find((_, i, a) => a[i - 1] === '--max-depth') ?? '3', 10); +const takeScreenshots = args.includes('--screenshot'); +const stayOnDomain = !args.includes('--no-stay-on-domain'); +const keepOpen = args.includes('--keep'); +const reportFile = args.find((_, i, a) => a[i - 1] === '--report'); + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +/** + * @typedef {Object} ClickRecord + * @property {string} selector - CSS selector of clicked element + * @property {string} text - Text content of element + * @property {string} tag - HTML tag name + * @property {string} url - URL where click happened + * @property {string} [targetUrl] - URL navigated to (if any) + * @property {number} timestamp - Unix timestamp + * @property {Object} domChanges - DOM mutations after click + * @property {Array} consoleLogs - Console logs during click + * @property {string} [screenshotPath] - Path to screenshot (if taken) + */ + +/** + * @typedef {Object} DiagnosticReport + * @property {string} startUrl - Starting URL + * @property {string} startTime - ISO timestamp + * @property {string} endTime - ISO timestamp + * @property {number} duration - Duration in ms + * @property {Array} clicks - All clicks performed + * @property {Set} visitedUrls - All URLs visited + * @property {Object} summary - Summary statistics + */ + +/** @type {DiagnosticReport} */ +const report = { + startUrl: url, + startTime: new Date().toISOString(), + endTime: '', + duration: 0, + clicks: [], + visitedUrls: new Set(), + summary: { + totalClicks: 0, + successfulClicks: 0, + failedClicks: 0, + pagesVisited: 0, + errorsLogged: 0, + warningsLogged: 0, + modalsEncountered: 0 + } +}; + +// Save screenshot +async function saveScreenshot(driver, name) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots', 'diagnose'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + const filename = `${name}-${timestamp}.png`; + const screenshotBase64 = await driver.takeScreenshot(); + const screenshotBuffer = Buffer.from(screenshotBase64, 'base64'); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, screenshotBuffer); + return filepath; + } catch (e) { + console.error('Failed to save screenshot:', e.message); + return null; + } +} + +// Wait for page to be ready +async function waitForPageReady(driver, timeout = 10000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + const readyState = await driver.executeScript('return document.readyState'); + if (readyState === 'complete') { + await new Promise((resolve) => setTimeout(resolve, 500)); + return true; + } + } catch (e) { + // Retry + } + await new Promise((resolve) => setTimeout(resolve, 200)); + } + return false; +} + +// Check if URL is on same domain +function isSameDomain(baseUrl, targetUrl) { + try { + const base = new URL(baseUrl); + const target = new URL(targetUrl, baseUrl); + return base.hostname === target.hostname; + } catch { + return false; + } +} + +// Select a random element to click +function selectRandomElement(elements, visitedSelectors) { + // Prefer elements we haven't clicked yet + const unclicked = elements.filter(e => !visitedSelectors.has(e.selector)); + const pool = unclicked.length > 0 ? unclicked : elements; + + if (pool.length === 0) return null; + + // Weight selection towards elements with click handlers and visible text + const weighted = pool.map(e => ({ + ...e, + weight: (e.hasClickHandler ? 3 : 1) * (e.text ? 2 : 1) * (e.tag === 'a' ? 2 : 1) + })); + + const totalWeight = weighted.reduce((sum, e) => sum + e.weight, 0); + let random = Math.random() * totalWeight; + + for (const element of weighted) { + random -= element.weight; + if (random <= 0) return element; + } + + return weighted[0]; +} + +// Main diagnostic crawl +async function diagnose(driver, startUrl) { + const visitedSelectors = new Set(); + let currentUrl = startUrl; + let clickCount = 0; + let depth = 0; + const startTime = Date.now(); + + console.log(`\n🔍 Starting site diagnosis: ${startUrl}`); + console.log(` Max clicks: ${maxClicks}, Max depth: ${maxDepth}`); + console.log(` Stay on domain: ${stayOnDomain}\n`); + + // Navigate to start URL + await driver.get(startUrl); + await waitForPageReady(driver); + report.visitedUrls.add(startUrl); + + // Start console capture for the session + await startConsoleCapture(driver); + + while (clickCount < maxClicks) { + currentUrl = await driver.getCurrentUrl(); + + console.log(`\n📍 Page ${report.visitedUrls.size}: ${currentUrl}`); + + // Get page state + const pageState = await runDebug(driver, 'pageState'); + console.log(` Title: ${pageState.title}`); + + // Check for modals + const modalCheck = await runDebug(driver, 'detectModals'); + if (modalCheck.hasModal) { + console.log(` ⚠️ Modal detected: ${modalCheck.modals.length} modal(s)`); + report.summary.modalsEncountered++; + + // Try to close modal by clicking close button or backdrop + for (const modal of modalCheck.modals) { + if (modal.hasCloseButton) { + try { + await driver.executeScript(` + const closeBtn = document.querySelector('[aria-label*="close"], [aria-label*="Close"], .close, [class*="close"]'); + if (closeBtn) closeBtn.click(); + `); + console.log(' Attempted to close modal'); + await new Promise((resolve) => setTimeout(resolve, 500)); + } catch (e) { + // Ignore + } + } + } + } + + // Get all actionable elements + const elements = await runDebug(driver, 'actionableElements'); + console.log(` Found ${elements.length} actionable element(s)`); + + if (elements.length === 0) { + console.log(' No elements to click, trying to go back...'); + try { + await driver.navigate().back(); + await waitForPageReady(driver); + depth = Math.max(0, depth - 1); + } catch { + console.log(' Cannot go back, stopping'); + break; + } + continue; + } + + // Filter elements based on domain constraint + let candidates = elements; + if (stayOnDomain) { + candidates = elements.filter(e => { + if (e.tag !== 'a' || !e.href) return true; + return isSameDomain(startUrl, e.href); + }); + } + + if (candidates.length === 0) { + console.log(' No valid candidates (all external), stopping'); + break; + } + + // Select random element + const target = selectRandomElement(candidates, visitedSelectors); + if (!target) { + console.log(' No element selected, stopping'); + break; + } + + visitedSelectors.add(target.selector); + clickCount++; + + console.log(`\n🖱️ Click ${clickCount}: [${target.selector}] "${target.text?.substring(0, 40) || '(no text)'}"`); + if (target.href) { + console.log(` Target: ${target.href}`); + } + + // Record click + /** @type {ClickRecord} */ + const clickRecord = { + selector: target.selector, + text: target.text || '', + tag: target.tag, + url: currentUrl, + timestamp: Date.now(), + domChanges: { added: [], removed: [], attributes: [] }, + consoleLogs: [] + }; + + // Clear console logs before click + await runDebug(driver, 'clearConsoleLogs'); + + // Track DOM changes during click + try { + const domChanges = await trackDomChanges(driver, async () => { + // Execute click via JavaScript (more reliable than WebDriver click) + await driver.executeScript(` + const el = document.querySelector(arguments[0]); + if (el) { + el.scrollIntoView({ behavior: 'instant', block: 'center' }); + el.click(); + } + `, target.selector); + }); + clickRecord.domChanges = domChanges; + + if (domChanges.added?.length > 0) { + console.log(` DOM: +${domChanges.added.length} elements`); + } + } catch (e) { + console.log(` Click error: ${e.message}`); + report.summary.failedClicks++; + } + + // Wait for any navigation/async effects + await new Promise((resolve) => setTimeout(resolve, 1000)); + await waitForPageReady(driver); + + // Get console logs from click + const logs = await getConsoleLogs(driver, false); + clickRecord.consoleLogs = logs.logs || []; + + const errors = clickRecord.consoleLogs.filter(l => ['error', 'exception', 'rejection'].includes(l.level)); + const warnings = clickRecord.consoleLogs.filter(l => l.level === 'warn'); + + if (errors.length > 0) { + console.log(` ❌ ${errors.length} error(s) during click`); + errors.slice(0, 2).forEach(e => console.log(` ${e.message.substring(0, 60)}`)); + report.summary.errorsLogged += errors.length; + } + if (warnings.length > 0) { + report.summary.warningsLogged += warnings.length; + } + + // Check if URL changed + const newUrl = await driver.getCurrentUrl(); + if (newUrl !== currentUrl) { + clickRecord.targetUrl = newUrl; + console.log(` → Navigated to: ${newUrl}`); + + if (!report.visitedUrls.has(newUrl)) { + report.visitedUrls.add(newUrl); + depth++; + } + + if (depth > maxDepth) { + console.log(` Max depth reached, going back...`); + await driver.navigate().back(); + await waitForPageReady(driver); + depth--; + } + } + + // Take screenshot if enabled + if (takeScreenshots) { + const screenshotPath = await saveScreenshot(driver, `click-${clickCount}`); + clickRecord.screenshotPath = screenshotPath; + if (screenshotPath) { + console.log(` 📸 ${screenshotPath}`); + } + } + + report.clicks.push(clickRecord); + report.summary.successfulClicks++; + } + + // Finalize report + report.endTime = new Date().toISOString(); + report.duration = Date.now() - startTime; + report.summary.totalClicks = clickCount; + report.summary.pagesVisited = report.visitedUrls.size; + + // Get final console logs + const finalLogs = await getConsoleLogs(driver, true); + + return report; +} + +// Print report summary +function printReport(report) { + console.log('\n' + '='.repeat(60)); + console.log('📊 DIAGNOSTIC REPORT'); + console.log('='.repeat(60)); + + console.log(`\nSite: ${report.startUrl}`); + console.log(`Duration: ${(report.duration / 1000).toFixed(1)}s`); + console.log(`Started: ${report.startTime}`); + console.log(`Ended: ${report.endTime}`); + + console.log(`\n📈 Summary:`); + console.log(` Total clicks: ${report.summary.totalClicks}`); + console.log(` Successful: ${report.summary.successfulClicks}`); + console.log(` Failed: ${report.summary.failedClicks}`); + console.log(` Pages visited: ${report.summary.pagesVisited}`); + console.log(` Errors logged: ${report.summary.errorsLogged}`); + console.log(` Warnings logged: ${report.summary.warningsLogged}`); + console.log(` Modals encountered: ${report.summary.modalsEncountered}`); + + console.log(`\n🔗 URLs Visited:`); + Array.from(report.visitedUrls).forEach((url, i) => { + console.log(` ${i + 1}. ${url}`); + }); + + console.log(`\n🖱️ Click Log:`); + report.clicks.forEach((click, i) => { + const nav = click.targetUrl ? ` → ${click.targetUrl}` : ''; + const errors = click.consoleLogs.filter(l => ['error', 'exception'].includes(l.level)).length; + const errStr = errors > 0 ? ` ❌${errors}` : ''; + console.log(` ${i + 1}. [${click.selector}] "${click.text.substring(0, 30)}"${nav}${errStr}`); + }); + + // Identify potential issues + const issues = []; + if (report.summary.errorsLogged > 0) { + issues.push(`${report.summary.errorsLogged} JavaScript errors detected`); + } + if (report.summary.failedClicks > 0) { + issues.push(`${report.summary.failedClicks} clicks failed`); + } + if (report.summary.modalsEncountered > 0) { + issues.push(`${report.summary.modalsEncountered} modals blocked interaction`); + } + + if (issues.length > 0) { + console.log(`\n⚠️ Potential Issues:`); + issues.forEach(issue => console.log(` - ${issue}`)); + } else { + console.log(`\n✅ No obvious issues detected`); + } + + console.log('\n' + '='.repeat(60)); +} + +// Save report to file +async function saveReport(report, filepath) { + const serializable = { + ...report, + visitedUrls: Array.from(report.visitedUrls) + }; + await writeFile(filepath, JSON.stringify(serializable, null, 2)); + console.log(`\n💾 Report saved to: ${filepath}`); +} + +// Cleanup existing sessions +async function cleanupExistingSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + const sessions = data.value || []; + for (const session of sessions) { + try { + const sessionId = session.id || session.sessionId || session; + await fetch(`${serverUrl}/session/${sessionId}`, { method: 'DELETE' }); + } catch { + // Ignore + } + } + } + } catch { + // Server not running + } +} + +// Main +await cleanupExistingSessions(); + +let driver; +try { + driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities({ browserName: 'duckduckgo' }) + .build(); + + const finalReport = await diagnose(driver, url); + printReport(finalReport); + + if (reportFile) { + await saveReport(finalReport, reportFile); + } + + if (keepOpen) { + console.log('\n✅ Browser staying open. Press Ctrl+C to quit.'); + await new Promise(() => {}); + } +} catch (error) { + console.error('\n❌ Error:', error.message); + process.exit(1); +} finally { + if (driver && !keepOpen) { + try { + await driver.quit(); + } catch { + // Ignore + } + } +} diff --git a/scripts/driver-port-cmd.mjs b/scripts/driver-port-cmd.mjs new file mode 100644 index 0000000..7fd11ef --- /dev/null +++ b/scripts/driver-port-cmd.mjs @@ -0,0 +1,95 @@ +#!/usr/bin/env node +/** + * Port-aware WebDriver commands + * + * Usage: + * node scripts/driver-port-cmd.mjs status + * node scripts/driver-port-cmd.mjs sessions + * node scripts/driver-port-cmd.mjs wait + * node scripts/driver-port-cmd.mjs cleanup + * + * Environment: + * WEBDRIVER_PORT - Port number (default: 4444) + */ + +const port = process.env.WEBDRIVER_PORT || '4444'; +const baseUrl = `http://localhost:${port}`; +const command = process.argv[2]; + +async function status() { + try { + const r = await fetch(`${baseUrl}/status`); + if (r.ok) { + const data = await r.json(); + console.log(`Driver running on port ${port}`); + console.log(JSON.stringify(data, null, 2)); + } else { + console.log(`Driver not responding on port ${port}`); + process.exit(1); + } + } catch { + console.log(`Driver not running on port ${port}`); + process.exit(1); + } +} + +async function sessions() { + try { + const r = await fetch(`${baseUrl}/sessions`); + const d = await r.json(); + const count = d.value?.length || 0; + console.log(`${count} session(s) on port ${port}`); + if (count > 0) { + d.value.forEach(s => console.log(` - ${s.id}`)); + } + } catch { + console.log(`0 session(s) - driver not running on port ${port}`); + } +} + +async function wait() { + const maxWait = 60; + for (let i = 0; i < maxWait; i++) { + try { + const r = await fetch(`${baseUrl}/status`); + if (r.ok) { + console.log(`Driver ready on port ${port}`); + process.exit(0); + } + } catch {} + await new Promise(r => setTimeout(r, 1000)); + } + console.error(`Driver timeout on port ${port} after ${maxWait}s`); + process.exit(1); +} + +async function cleanup() { + // Delete sessions + try { + const r = await fetch(`${baseUrl}/sessions`); + const d = await r.json(); + for (const s of d.value || []) { + console.log(`Deleting session: ${s.id}`); + await fetch(`${baseUrl}/session/${s.id}`, { method: 'DELETE' }); + } + } catch {} + console.log(`Sessions cleaned on port ${port}`); +} + +switch (command) { + case 'status': + await status(); + break; + case 'sessions': + await sessions(); + break; + case 'wait': + await wait(); + break; + case 'cleanup': + await cleanup(); + break; + default: + console.log('Usage: driver-port-cmd.mjs '); + process.exit(1); +} diff --git a/scripts/investigate-checkout-button.mjs b/scripts/investigate-checkout-button.mjs new file mode 100644 index 0000000..923802c --- /dev/null +++ b/scripts/investigate-checkout-button.mjs @@ -0,0 +1,541 @@ +/** + * Investigate why "To secure checkout" button is greyed out on iOS + * but works in Safari + */ + +import { createRequire } from 'node:module'; +import { writeFile, mkdir, readFile } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); + +// Load .env file if it exists +try { + const envPath = join(scriptsDir, '..', '.env'); + const envContent = await readFile(envPath, 'utf-8'); + for (const line of envContent.split('\n')) { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('#')) { + const [key, ...valueParts] = trimmed.split('='); + const value = valueParts.join('='); + if (key && value && !process.env[key]) { + process.env[key] = value; + } + } + } +} catch { + // .env file doesn't exist +} + +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); +const { By, until } = selenium; + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; +const platform = process.env.PLATFORM || process.env.TARGET_PLATFORM || 'unknown'; +const nintendoEmail = process.env.NINTENDO_EMAIL; +const nintendoPassword = process.env.NINTENDO_PASSWORD; + +async function saveScreenshot(driver, filename) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const screenshotBase64 = await driver.takeScreenshot(); + const screenshotBuffer = Buffer.from(screenshotBase64, 'base64'); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, screenshotBuffer); + console.log(`📸 Screenshot saved: ${filepath}`); + return filepath; + } catch (e) { + console.error('❌ Failed to take screenshot:', e.message); + return null; + } +} + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +async function waitForPageReady(driver, timeout = 15000) { + try { + await driver.wait(async () => { + const readyState = await driver.executeScript('return document.readyState'); + return readyState === 'complete'; + }, timeout); + await sleep(1000); + return true; + } catch { + return false; + } +} + +// ============ Main Investigation ============ + +let driver; +try { + console.log('\n🔍 Investigating "To secure checkout" button issue'); + console.log('================================================'); + console.log(`Platform: ${platform}`); + console.log(`WebDriver: ${serverUrl}`); + console.log(`Login: ${nintendoEmail ? nintendoEmail.substring(0, 3) + '***' : 'Not configured'}\n`); + + driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities({ browserName: 'duckduckgo' }) + .build(); + + // Start console capture early + await driver.executeScript(` + window.__consoleCapture = { logs: [], errors: [] }; + const origLog = console.log; + const origError = console.error; + const origWarn = console.warn; + console.log = (...args) => { window.__consoleCapture.logs.push({ level: 'log', msg: args.map(String).join(' ') }); origLog.apply(console, args); }; + console.error = (...args) => { window.__consoleCapture.errors.push({ level: 'error', msg: args.map(String).join(' ') }); origError.apply(console, args); }; + console.warn = (...args) => { window.__consoleCapture.logs.push({ level: 'warn', msg: args.map(String).join(' ') }); origWarn.apply(console, args); }; + window.onerror = (msg, src, line, col, err) => { window.__consoleCapture.errors.push({ level: 'error', msg: msg + ' at ' + src + ':' + line }); }; + `); + + // Step 0: Login to Nintendo Account + if (nintendoEmail && nintendoPassword) { + console.log('[Step 0] Logging in to Nintendo Account...'); + await driver.get('https://accounts.nintendo.com/login'); + await waitForPageReady(driver); + await sleep(2000); + + // Fill email + const emailInput = await driver.findElement(By.css('input[placeholder*="Email"], input[placeholder*="Sign-In"], input[name="loginId"], input#loginId')).catch(() => null); + if (emailInput) { + await emailInput.clear(); + await emailInput.sendKeys(nintendoEmail); + console.log(' ✓ Entered email'); + } + + // Fill password + const passwordInput = await driver.findElement(By.css('input[type="password"]')).catch(() => null); + if (passwordInput) { + await passwordInput.clear(); + await passwordInput.sendKeys(nintendoPassword); + console.log(' ✓ Entered password'); + } + + // Click login + const loginBtn = await driver.findElement(By.css('button[type="submit"]')).catch(() => null); + if (loginBtn) { + await loginBtn.click(); + console.log(' ✓ Clicked login'); + } + + await waitForPageReady(driver); + + // Wait for potential 2FA + let url = await driver.getCurrentUrl(); + if (url.includes('challenge')) { + console.log(' ⏳ Waiting for 2FA verification (manual)...'); + for (let i = 0; i < 120; i++) { + await sleep(2000); + url = await driver.getCurrentUrl(); + if (!url.includes('challenge')) { + console.log(' ✓ 2FA completed'); + break; + } + if (i % 15 === 0 && i > 0) console.log(` ⏳ Still waiting... (${i * 2}s)`); + } + } + console.log(' ✓ Login completed'); + } else { + console.log('[Step 0] Skipping login (no credentials)'); + } + + // Step 1: Navigate to product page and add to cart + console.log('\n[Step 1] Adding Alarmo to cart...'); + await driver.get('https://www.nintendo.com/us/store/products/nintendo-sound-clock-alarmo-121311/'); + await waitForPageReady(driver); + await sleep(3000); + + // Dismiss any regional modal + for (let i = 0; i < 5; i++) { + const dismissed = await driver.executeScript(` + const buttons = document.querySelectorAll('button'); + for (const btn of buttons) { + if (btn.textContent?.includes('Stay here')) { + btn.click(); + return true; + } + } + return false; + `); + if (!dismissed) break; + await sleep(1000); + } + + // Try to add to cart + const addResult = await driver.executeScript(` + const addBtn = Array.from(document.querySelectorAll('button')).find(b => + b.textContent?.toLowerCase().includes('add to cart') + ); + if (addBtn && !addBtn.disabled) { + addBtn.click(); + return { clicked: true, buttonText: addBtn.textContent?.trim() }; + } + return { clicked: false, allButtons: Array.from(document.querySelectorAll('button')).map(b => b.textContent?.trim()).filter(t => t).slice(0, 10) }; + `); + console.log(' Add to cart:', addResult); + await sleep(3000); + + // Step 2: Navigate to cart + console.log('\n[Step 2] Navigating to cart...'); + await driver.get('https://www.nintendo.com/us/cart/'); + await waitForPageReady(driver); + await sleep(3000); + + // Dismiss regional modal persistently + for (let i = 0; i < 10; i++) { + const dismissed = await driver.executeScript(` + const btn = Array.from(document.querySelectorAll('button')).find(b => + b.textContent?.trim() === 'Stay here' + ); + if (btn) { + btn.click(); + return true; + } + return false; + `); + if (!dismissed) break; + await sleep(800); + } + await sleep(2000); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `investigate-cart-${timestamp}.png`); + + // Step 3: Analyze the checkout button + console.log('\n[Step 3] Analyzing "To secure checkout" button...'); + + const buttonAnalysis = await driver.executeScript(` + // Find all buttons that might be the checkout button + const allButtons = Array.from(document.querySelectorAll('button')); + const checkoutButtons = allButtons.filter(b => { + const text = (b.textContent || b.innerText || '').toLowerCase(); + return text.includes('checkout') || text.includes('secure') || text.includes('payment'); + }); + + const results = checkoutButtons.map(btn => { + const computed = window.getComputedStyle(btn); + const rect = btn.getBoundingClientRect(); + + // Get the full button HTML for debugging + const outerHTML = btn.outerHTML.substring(0, 500); + + return { + text: btn.textContent?.trim(), + disabled: btn.disabled, + ariaDisabled: btn.getAttribute('aria-disabled'), + classList: Array.from(btn.classList), + id: btn.id, + name: btn.name, + type: btn.type, + // Visual state + opacity: computed.opacity, + pointerEvents: computed.pointerEvents, + cursor: computed.cursor, + backgroundColor: computed.backgroundColor, + color: computed.color, + filter: computed.filter, + // Position + visible: rect.width > 0 && rect.height > 0, + rect: { top: Math.round(rect.top), left: Math.round(rect.left), width: Math.round(rect.width), height: Math.round(rect.height) }, + // Data attributes + dataAttributes: Object.fromEntries( + Array.from(btn.attributes) + .filter(a => a.name.startsWith('data-')) + .map(a => [a.name, a.value]) + ), + // All attributes for debugging + allAttributes: Object.fromEntries( + Array.from(btn.attributes).map(a => [a.name, a.value.substring(0, 100)]) + ), + // Parent info + parentClasses: btn.parentElement?.className, + // Form validation + formId: btn.form?.id, + formValid: btn.form?.checkValidity?.(), + // HTML snippet + outerHTML + }; + }); + + // Also find all buttons with "To" in text (for "To secure checkout") + const toButtons = allButtons.filter(b => { + const text = (b.textContent || '').toLowerCase(); + return text.includes('to secure') || text.includes('to payment'); + }).map(btn => ({ + text: btn.textContent?.trim(), + disabled: btn.disabled, + classList: Array.from(btn.classList), + opacity: window.getComputedStyle(btn).opacity + })); + + return { + totalButtons: allButtons.length, + checkoutButtonsFound: checkoutButtons.length, + buttons: results, + toButtons, + allButtonTexts: allButtons.map(b => b.textContent?.trim()).filter(t => t && t.length < 50).slice(0, 30) + }; + `); + + console.log('\n📊 Button Analysis:'); + console.log(JSON.stringify(buttonAnalysis, null, 2)); + + // Step 4: Check for JavaScript errors and console logs + console.log('\n[Step 4] Checking for JavaScript errors...'); + + const jsErrors = await driver.executeScript(` + // Check for any error messages in the DOM + const errorElements = document.querySelectorAll('.error, .error-message, [class*="error"], [role="alert"]'); + const errors = Array.from(errorElements).map(el => ({ + text: el.textContent?.trim()?.substring(0, 200), + className: el.className, + visible: el.offsetParent !== null + })).filter(e => e.text && e.visible); + + // Check for validation messages + const validationMessages = []; + document.querySelectorAll('input, select, textarea').forEach(input => { + if (input.validationMessage) { + validationMessages.push({ + name: input.name || input.id, + message: input.validationMessage + }); + } + }); + + // Check localStorage/sessionStorage for any cart state + let cartState = {}; + try { + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + if (key?.toLowerCase().includes('cart') || key?.toLowerCase().includes('checkout')) { + cartState[key] = localStorage.getItem(key)?.substring(0, 500); + } + } + } catch {} + + return { + domErrors: errors, + validationMessages, + cartState, + documentReadyState: document.readyState, + url: window.location.href + }; + `); + + console.log('\n📋 Page State:'); + console.log(JSON.stringify(jsErrors, null, 2)); + + // Step 5: Check for any blocking overlays/modals + console.log('\n[Step 5] Checking for blocking elements...'); + + const blockingElements = await driver.executeScript(` + const blocking = []; + + // Check for modals + const modals = document.querySelectorAll('[role="dialog"], .modal, [class*="modal"], [class*="overlay"]'); + modals.forEach(modal => { + const style = window.getComputedStyle(modal); + if (style.display !== 'none' && style.visibility !== 'hidden') { + blocking.push({ + type: 'modal', + className: modal.className, + text: modal.textContent?.substring(0, 200), + zIndex: style.zIndex + }); + } + }); + + // Check for loading spinners + const spinners = document.querySelectorAll('[class*="loading"], [class*="spinner"], [aria-busy="true"]'); + spinners.forEach(spinner => { + const style = window.getComputedStyle(spinner); + if (style.display !== 'none') { + blocking.push({ + type: 'loading', + className: spinner.className + }); + } + }); + + return blocking; + `); + + console.log('\n🚧 Blocking Elements:'); + console.log(JSON.stringify(blockingElements, null, 2)); + + // Step 6: Check network/API state that might affect the button + console.log('\n[Step 6] Checking for cart items and validation requirements...'); + + const cartValidation = await driver.executeScript(` + // Look for cart items + const cartItems = document.querySelectorAll('[class*="cart-item"], [class*="line-item"], [data-testid*="cart"]'); + + // Look for any required fields that might be empty + const requiredFields = []; + document.querySelectorAll('[required], [aria-required="true"]').forEach(field => { + requiredFields.push({ + name: field.name || field.id || field.placeholder, + value: field.value ? '(has value)' : '(empty)', + type: field.type + }); + }); + + // Look for any checkout-related data attributes + const checkoutData = {}; + document.querySelectorAll('[data-checkout], [data-cart], [data-testid*="checkout"]').forEach(el => { + checkoutData[el.tagName + '.' + el.className] = Array.from(el.attributes) + .filter(a => a.name.startsWith('data-')) + .map(a => a.name + '=' + a.value); + }); + + // Check if there's a region mismatch warning + const regionWarnings = Array.from(document.querySelectorAll('*')).filter(el => { + const text = el.textContent?.toLowerCase() || ''; + return text.includes('region') && (text.includes('different') || text.includes('mismatch') || text.includes('select')); + }).map(el => el.textContent?.substring(0, 100)); + + return { + cartItemCount: cartItems.length, + requiredFields, + checkoutData, + regionWarnings: [...new Set(regionWarnings)].slice(0, 5), + bodyClasses: document.body.className + }; + `); + + console.log('\n🛒 Cart/Validation State:'); + console.log(JSON.stringify(cartValidation, null, 2)); + + // Step 7: Try clicking the button and capture any response + console.log('\n[Step 7] Attempting to click the checkout button...'); + + const clickResult = await driver.executeScript(` + const btn = Array.from(document.querySelectorAll('button')).find(b => + b.textContent?.toLowerCase().includes('secure checkout') + ); + + if (!btn) return { found: false }; + + // Capture any events that fire + const events = []; + const originalAlert = window.alert; + window.alert = (msg) => events.push({ type: 'alert', msg }); + + try { + btn.click(); + } catch (e) { + events.push({ type: 'error', msg: e.message }); + } + + window.alert = originalAlert; + + return { + found: true, + buttonDisabled: btn.disabled, + events, + urlAfter: window.location.href + }; + `); + + console.log('\n🖱️ Click Result:'); + console.log(JSON.stringify(clickResult, null, 2)); + + await sleep(2000); + await saveScreenshot(driver, `investigate-after-click-${timestamp}.png`); + + const finalUrl = await driver.getCurrentUrl(); + console.log('\n📍 Final URL:', finalUrl); + + // Step 8: Get captured console logs + console.log('\n[Step 8] Captured console logs...'); + const consoleLogs = await driver.executeScript(` + return window.__consoleCapture || { logs: [], errors: [] }; + `); + + if (consoleLogs.errors?.length > 0) { + console.log('\n🔴 JavaScript Errors:'); + consoleLogs.errors.slice(0, 20).forEach(e => console.log(` ${e.msg?.substring(0, 200)}`)); + } + if (consoleLogs.logs?.length > 0) { + console.log('\n📋 Console Logs (last 20):'); + consoleLogs.logs.slice(-20).forEach(l => console.log(` [${l.level}] ${l.msg?.substring(0, 200)}`)); + } + + // Summary + console.log('\n' + '='.repeat(60)); + console.log('📊 INVESTIGATION SUMMARY'); + console.log('='.repeat(60)); + + // Find the "To secure checkout" button specifically + const secureCheckoutBtn = buttonAnalysis.buttons?.find(b => + b.text?.toLowerCase().includes('to secure checkout') || + b.text?.toLowerCase().includes('secure checkout') + ) || buttonAnalysis.toButtons?.[0]; + + if (secureCheckoutBtn) { + console.log('\n"To secure checkout" button state:'); + console.log(` - text: "${secureCheckoutBtn.text}"`); + console.log(` - disabled attribute: ${secureCheckoutBtn.disabled}`); + console.log(` - aria-disabled: ${secureCheckoutBtn.ariaDisabled || 'null'}`); + console.log(` - opacity: ${secureCheckoutBtn.opacity}`); + console.log(` - pointer-events: ${secureCheckoutBtn.pointerEvents || 'n/a'}`); + console.log(` - cursor: ${secureCheckoutBtn.cursor || 'n/a'}`); + console.log(` - classes: ${secureCheckoutBtn.classList?.join(', ')}`); + console.log(` - background-color: ${secureCheckoutBtn.backgroundColor || 'n/a'}`); + + const isDisabled = secureCheckoutBtn.disabled || + secureCheckoutBtn.ariaDisabled === 'true' || + parseFloat(secureCheckoutBtn.opacity) < 0.6 || + secureCheckoutBtn.pointerEvents === 'none'; + + if (isDisabled) { + console.log('\n❌ BUTTON IS DISABLED/GREYED OUT - BUG CONFIRMED'); + console.log('\n🔍 Possible causes to investigate:'); + if (blockingElements.length > 0) { + console.log(' - Modal/overlay may be blocking interactions'); + } + if (cartValidation.regionWarnings?.length > 0) { + console.log(' - Region mismatch may be affecting the page'); + } + if (consoleLogs.errors?.length > 0) { + console.log(' - JavaScript errors may be preventing button activation'); + } + if (cartValidation.cartItemCount === 0) { + console.log(' - Cart may appear empty to the site'); + } + console.log('\n💡 Compare with Safari to identify the root cause:'); + console.log(' - Does Safari have the same console errors?'); + console.log(' - Does Safari receive different API responses?'); + console.log(' - Are cookies/storage being set differently?'); + } else { + console.log('\n✅ Button appears enabled'); + } + } else { + console.log('\n⚠️ Could not find "To secure checkout" button'); + console.log('Available buttons:', buttonAnalysis.allButtonTexts?.join(', ')); + } + + if (jsErrors.domErrors?.length > 0) { + console.log('\n🔴 DOM Errors found:'); + jsErrors.domErrors.forEach(e => console.log(` - ${e.text}`)); + } + + console.log('\n✅ Browser will stay open for manual inspection. Press Ctrl+C to quit.'); + await new Promise(() => {}); + +} catch (error) { + console.error('\n❌ Investigation Error:', error.message); + process.exit(1); +} finally { + // Don't quit - keep browser open +} diff --git a/scripts/investigate-checkout-modal.mjs b/scripts/investigate-checkout-modal.mjs new file mode 100644 index 0000000..df4d5dc --- /dev/null +++ b/scripts/investigate-checkout-modal.mjs @@ -0,0 +1,283 @@ +/** + * Investigate Nintendo checkout modal issue + * Specifically looking at the "Stay here" button behavior + */ +import { createRequire } from 'node:module'; +import { writeFile, mkdir } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); +const { By, until } = selenium; + +const serverUrl = 'http://localhost:4444'; +const timestamp = () => new Date().toISOString().replace(/[:.]/g, '-'); + +async function screenshot(driver, name) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const base64 = await driver.takeScreenshot(); + const filepath = join(screenshotsDir, `investigate-checkout-${name}-${timestamp()}.png`); + await writeFile(filepath, Buffer.from(base64, 'base64')); + console.log(`📸 ${filepath}`); + } catch (e) { + console.error(`Screenshot error: ${e.message}`); + } +} + +async function cleanup() { + try { + const res = await fetch(`${serverUrl}/sessions`); + const data = await res.json(); + const sessions = data.value || []; + for (const s of sessions) { + const id = s.id || s.sessionId || s; + await fetch(`${serverUrl}/session/${id}`, { method: 'DELETE' }); + } + } catch {} +} + +async function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } + +async function waitForPageReady(driver, timeout = 15000) { + try { + await driver.wait(async () => { + const rs = await driver.executeScript('return document.readyState'); + return rs === 'complete'; + }, timeout); + await sleep(1000); + return true; + } catch { return false; } +} + +await cleanup(); + +const driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities({ browserName: 'duckduckgo' }) + .build(); + +try { + console.log('\n=== Investigating Nintendo Checkout Modal ===\n'); + + // Go to cart page + console.log('1. Navigating to cart...'); + await driver.get('https://www.nintendo.com/us/cart/'); + await waitForPageReady(driver); + await sleep(2000); + await screenshot(driver, '1-cart-initial'); + + // Check for modal immediately + console.log('\n2. Checking initial page state...'); + const initialState = await driver.executeScript(` + const dialog = document.querySelector('[role="dialog"]'); + const allButtons = Array.from(document.querySelectorAll('button')).map(b => ({ + text: (b.textContent || '').trim().substring(0, 50), + visible: b.offsetParent !== null, + rect: b.getBoundingClientRect().toJSON() + })); + + return { + hasDialog: !!dialog, + dialogVisible: dialog ? window.getComputedStyle(dialog).display !== 'none' : false, + dialogText: dialog?.textContent?.substring(0, 500), + buttons: allButtons.filter(b => b.text && b.visible), + url: location.href + }; + `); + + console.log('Modal present:', initialState.hasDialog); + console.log('Modal visible:', initialState.dialogVisible); + console.log('Current URL:', initialState.url); + console.log('Visible buttons:'); + initialState.buttons.forEach(b => console.log(` - "${b.text}"`)); + + // Now click "To secure checkout" + console.log('\n3. Clicking "To secure checkout" button...'); + const clickResult = await driver.executeScript(` + const buttons = document.querySelectorAll('button'); + for (const btn of buttons) { + if (btn.textContent.includes('secure checkout')) { + const rect = btn.getBoundingClientRect(); + btn.click(); + return { clicked: true, text: btn.textContent.trim(), rect: rect.toJSON() }; + } + } + return { clicked: false }; + `); + console.log('Click result:', clickResult); + + await sleep(3000); + await screenshot(driver, '2-after-checkout-click'); + + // Check state after click + console.log('\n4. Checking state after checkout click...'); + const afterClick = await driver.executeScript(` + const dialog = document.querySelector('[role="dialog"]'); + const stayHereBtn = Array.from(document.querySelectorAll('button')) + .find(b => (b.textContent || '').toLowerCase().includes('stay here')); + const allBtns = Array.from(document.querySelectorAll('button')) + .filter(b => b.offsetParent !== null) + .map(b => (b.textContent || '').trim().substring(0, 50)); + + return { + url: location.href, + hasDialog: !!dialog, + dialogVisible: dialog ? window.getComputedStyle(dialog).display !== 'none' : false, + dialogHTML: dialog?.outerHTML?.substring(0, 3000), + stayHereButton: stayHereBtn ? { + text: stayHereBtn.textContent.trim(), + visible: stayHereBtn.offsetParent !== null + } : null, + allVisibleButtons: allBtns + }; + `); + + console.log('URL after click:', afterClick.url); + console.log('Dialog present:', afterClick.hasDialog); + console.log('Dialog visible:', afterClick.dialogVisible); + console.log('Stay here button:', afterClick.stayHereButton); + console.log('All visible buttons:', afterClick.allVisibleButtons); + + if (afterClick.dialogHTML) { + console.log('\n=== Dialog HTML ==='); + console.log(afterClick.dialogHTML); + console.log('=== End Dialog HTML ===\n'); + } + + // If there's a Stay here button, investigate what happens when we click it + if (afterClick.stayHereButton) { + console.log('\n5. Investigating "Stay here" button behavior...'); + const beforeUrl = await driver.getCurrentUrl(); + + // Get detailed button info before clicking + const buttonDetails = await driver.executeScript(` + const btn = Array.from(document.querySelectorAll('button')) + .find(b => (b.textContent || '').toLowerCase().includes('stay here')); + if (!btn) return null; + + const style = window.getComputedStyle(btn); + return { + text: btn.textContent.trim(), + type: btn.type, + disabled: btn.disabled, + onclick: btn.getAttribute('onclick'), + hasClickListeners: btn.onclick !== null, + classes: btn.className, + zIndex: style.zIndex, + position: style.position, + rect: btn.getBoundingClientRect().toJSON() + }; + `); + console.log('Button details:', buttonDetails); + + // Click the button + console.log('\n6. Clicking "Stay here"...'); + await driver.executeScript(` + const btn = Array.from(document.querySelectorAll('button')) + .find(b => (b.textContent || '').toLowerCase().includes('stay here')); + if (btn) { + console.log('[Debug] Clicking Stay here button'); + btn.click(); + } + `); + + await sleep(2000); + await screenshot(driver, '3-after-stay-here'); + + const afterStay = await driver.executeScript(` + const dialog = document.querySelector('[role="dialog"]'); + const stayBtn = Array.from(document.querySelectorAll('button')) + .find(b => (b.textContent || '').toLowerCase().includes('stay here')); + + return { + url: location.href, + hasDialog: !!dialog, + dialogVisible: dialog ? window.getComputedStyle(dialog).display !== 'none' : false, + stayBtnStillExists: !!stayBtn + }; + `); + + console.log('\nAfter clicking Stay here:'); + console.log(' URL:', afterStay.url); + console.log(' URL changed:', afterStay.url !== beforeUrl); + console.log(' Dialog still present:', afterStay.hasDialog); + console.log(' Dialog still visible:', afterStay.dialogVisible); + console.log(' Stay here button still exists:', afterStay.stayBtnStillExists); + + // If modal still visible, try different dismiss methods + if (afterStay.dialogVisible) { + console.log('\n7. Modal still visible - trying alternative dismiss methods...'); + + // Try pressing Escape + console.log(' 7a. Trying Escape key...'); + await driver.executeScript(`document.dispatchEvent(new KeyboardEvent('keydown', {key: 'Escape', bubbles: true}))`); + await sleep(1000); + + const afterEscape = await driver.executeScript(` + const dialog = document.querySelector('[role="dialog"]'); + return { visible: dialog ? window.getComputedStyle(dialog).display !== 'none' : false }; + `); + console.log(' After Escape - Modal visible:', afterEscape.visible); + + if (afterEscape.visible) { + // Try clicking backdrop + console.log(' 7b. Trying backdrop click...'); + await driver.executeScript(` + const backdrop = document.querySelector('[role="dialog"]')?.parentElement; + if (backdrop) { + backdrop.click(); + } + `); + await sleep(1000); + + const afterBackdrop = await driver.executeScript(` + const dialog = document.querySelector('[role="dialog"]'); + return { visible: dialog ? window.getComputedStyle(dialog).display !== 'none' : false }; + `); + console.log(' After backdrop click - Modal visible:', afterBackdrop.visible); + } + + await screenshot(driver, '4-after-dismiss-attempts'); + } + } + + // Try one more checkout click + console.log('\n8. Final checkout attempt...'); + await driver.executeScript(` + const btn = Array.from(document.querySelectorAll('button')) + .find(b => b.textContent.includes('secure checkout')); + if (btn) btn.click(); + `); + + await sleep(3000); + await screenshot(driver, '5-final-state'); + + const finalState = await driver.executeScript(` + return { + url: location.href, + title: document.title, + hasDialog: !!document.querySelector('[role="dialog"]'), + dialogVisible: document.querySelector('[role="dialog"]') + ? window.getComputedStyle(document.querySelector('[role="dialog"]')).display !== 'none' + : false + }; + `); + + console.log('\n=== Final State ==='); + console.log('URL:', finalState.url); + console.log('Title:', finalState.title); + console.log('Dialog present:', finalState.hasDialog); + console.log('Dialog visible:', finalState.dialogVisible); + + console.log('\n✅ Investigation complete - browser will stay open'); + await new Promise(() => {}); + +} catch (error) { + console.error('Error:', error.message); + await screenshot(driver, 'error'); + process.exit(1); +} diff --git a/scripts/investigate-hover-bug.mjs b/scripts/investigate-hover-bug.mjs new file mode 100644 index 0000000..31f7e9e --- /dev/null +++ b/scripts/investigate-hover-bug.mjs @@ -0,0 +1,834 @@ +/** + * Hover State Bug Investigation + * + * Investigates the macOS browser hover state bug where mouseover/hover + * interactions stop working across all web content. Tests event delivery, + * CSS :hover pseudo-class application, and user script interference. + * + * Usage: + * npm run investigate:hover -- --no-keep + * npm run investigate:hover -- --screenshot + * npm run investigate:hover -- --url https://example.com + */ + +import { createRequire } from 'node:module'; +import { writeFile, mkdir } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); +const localRequire = createRequire(import.meta.url); + +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); + +const args = process.argv.slice(2); +const keepOpen = args.includes('--keep') || !args.includes('--no-keep'); +const takeScreenshots = args.includes('--screenshot'); +const customUrl = args.find((_, i, a) => a[i - 1] === '--url'); +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function cleanupExistingSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + const sessions = data.value || (Array.isArray(data) ? data : []); + for (const session of sessions) { + const sessionId = session.id || session.sessionId || session; + await fetch(`${serverUrl}/session/${sessionId}`, { method: 'DELETE' }).catch(() => {}); + } + if (sessions.length > 0) await new Promise((resolve) => setTimeout(resolve, 500)); + } + } catch { + // Server not running + } +} + +async function waitForPageReady(driver, timeout = 10000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + const readyState = await driver.executeScript('return document.readyState'); + if (readyState === 'complete') { + await new Promise((resolve) => setTimeout(resolve, 300)); + return true; + } + } catch { + // retry + } + await new Promise((resolve) => setTimeout(resolve, 200)); + } + return false; +} + +async function saveScreenshot(driver, name) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots', 'hover-investigation'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + const filename = `${name}-${timestamp}.png`; + const screenshotBase64 = await driver.takeScreenshot(); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, Buffer.from(screenshotBase64, 'base64')); + console.log(` Screenshot: ${filepath}`); + return filepath; + } catch (e) { + console.error(` Failed to save screenshot: ${e.message}`); + return null; + } +} + +/** + * Safely run executeScript and return null on error instead of throwing + */ +async function safeExecute(driver, script, ...args) { + try { + return await driver.executeScript(script, ...args); + } catch (e) { + return { __error: e.message }; + } +} + +/** + * Inject test page HTML into the current about:blank page + */ +async function injectTestPage(driver) { + await safeExecute( + driver, + ` + document.open(); + document.write(\` + +Hover Bug Investigation + + +

Hover Bug Investigation

+
+
Box 1
+
Box 2Tooltip visible
+
Box 3
+
Hover this link + +
+
+\`); + document.close(); + `, + ); + await new Promise((resolve) => setTimeout(resolve, 500)); +} + +/** + * Test 1: Check if mouse events are being delivered to the page + */ +async function testEventDelivery(driver) { + console.log('\n--- Test 1: Mouse Event Delivery ---'); + + const results = await safeExecute( + driver, + ` + const events = []; + const box = document.getElementById('box1'); + if (!box) return { error: 'box1 not found' }; + + // Register listeners + ['mouseover','mouseenter','mousemove','mouseout','mouseleave', + 'pointerover','pointerenter','pointermove','pointerout','pointerleave'].forEach(type => { + box.addEventListener(type, (e) => { + events.push({ type: type, target: e.target?.id || e.target?.tagName, cx: e.clientX, cy: e.clientY }); + }, { once: true }); + }); + + const rect = box.getBoundingClientRect(); + const cx = rect.left + rect.width / 2; + const cy = rect.top + rect.height / 2; + + // Dispatch synthetic hover events + const types = ['pointerover','pointerenter','mouseover','mouseenter','pointermove','mousemove']; + for (const type of types) { + const isPointer = type.startsWith('pointer'); + const EC = isPointer ? PointerEvent : MouseEvent; + box.dispatchEvent(new EC(type, { + bubbles: !type.includes('enter'), cancelable: true, + clientX: cx, clientY: cy, view: window, + ...(isPointer ? { pointerId: 1, pointerType: 'mouse' } : {}) + })); + } + + return { eventsReceived: events.length, eventTypes: events.map(e => e.type) }; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: false, error: results.__error }; + } + if (results?.error) { + console.log(` FAIL: ${results.error}`); + return { pass: false, error: results.error }; + } + + const expectedTypes = ['pointerover', 'pointerenter', 'mouseover', 'mouseenter', 'mousemove']; + const received = new Set(results.eventTypes || []); + const missing = expectedTypes.filter((t) => !received.has(t)); + + console.log(` Events received: ${results.eventsReceived}`); + console.log(` Event types: ${(results.eventTypes || []).join(', ')}`); + if (missing.length > 0) console.log(` MISSING events: ${missing.join(', ')}`); + + const pass = missing.length === 0; + console.log(` Result: ${pass ? 'PASS' : 'FAIL'}`); + return { pass, received: results.eventTypes, missing, totalEvents: results.eventsReceived }; +} + +/** + * Test 2: Check if CSS :hover pseudo-class is in resting (unhovered) state + */ +async function testCSSHoverState(driver) { + console.log('\n--- Test 2: CSS :hover State ---'); + + const results = await safeExecute( + driver, + ` + const box = document.getElementById('box1'); + if (!box) return { error: 'box1 not found' }; + + const tooltip = document.querySelector('#box2 .tooltip'); + return { + defaultBg: getComputedStyle(box).backgroundColor, + matchesHover: box.matches(':hover'), + tooltipDisplay: tooltip ? getComputedStyle(tooltip).display : 'N/A' + }; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: false, error: results.__error }; + } + + console.log(` Default background: ${results.defaultBg}`); + console.log(` Matches :hover: ${results.matchesHover}`); + console.log(` Tooltip display: ${results.tooltipDisplay}`); + + const pass = !results.matchesHover && results.tooltipDisplay === 'none'; + console.log(` Result: ${pass ? 'PASS (resting state correct)' : 'UNEXPECTED (:hover stuck?)'}`); + return { pass, ...results }; +} + +/** + * Test 3: Check for event listener interference from user scripts + */ +async function testEventListenerInterference(driver) { + console.log('\n--- Test 3: Event Listener Interference ---'); + + const results = await safeExecute( + driver, + ` + const r = {}; + + // Check EventTarget methods are native + r.addEventListenerNative = EventTarget.prototype.addEventListener.toString().includes('[native code]'); + r.removeEventListenerNative = EventTarget.prototype.removeEventListener.toString().includes('[native code]'); + r.dispatchEventNative = EventTarget.prototype.dispatchEvent.toString().includes('[native code]'); + + // Check for proxied methods + try { + r.addEventListenerStr = EventTarget.prototype.addEventListener.toString().substring(0, 80); + } catch (e) { + r.addEventListenerStr = 'toString() threw: ' + e.message; + } + + // Check if custom events propagate correctly + let customReceived = false; + const h = () => { customReceived = true; }; + document.body.addEventListener('__test__', h); + document.body.dispatchEvent(new Event('__test__')); + document.body.removeEventListener('__test__', h); + r.customEventWorks = customReceived; + + // Test mouseover propagation through DOM + const parent = document.createElement('div'); + const child = document.createElement('div'); + parent.appendChild(child); + document.body.appendChild(parent); + const phases = []; + parent.addEventListener('mouseover', () => phases.push('parent-capture'), true); + child.addEventListener('mouseover', () => phases.push('child'), false); + parent.addEventListener('mouseover', () => phases.push('parent-bubble'), false); + child.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); + document.body.removeChild(parent); + r.bubblePhases = phases; + r.bubblingWorks = phases.includes('parent-bubble') && phases.includes('child'); + + // Check if stopPropagation or preventDefault is being called by anything + const probe = document.createElement('div'); + document.body.appendChild(probe); + let propagationStopped = false; + let defaultPrevented = false; + document.addEventListener('mouseover', (e) => { + propagationStopped = e.cancelBubble; + defaultPrevented = e.defaultPrevented; + }, { once: true }); + probe.dispatchEvent(new MouseEvent('mouseover', { bubbles: true, cancelable: true })); + document.body.removeChild(probe); + r.propagationStopped = propagationStopped; + r.defaultPrevented = defaultPrevented; + + return r; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: false, error: results.__error }; + } + + console.log(` addEventListener native: ${results.addEventListenerNative}`); + console.log(` removeEventListener native: ${results.removeEventListenerNative}`); + console.log(` dispatchEvent native: ${results.dispatchEventNative}`); + console.log(` addEventListener toString: ${results.addEventListenerStr}`); + console.log(` Custom event works: ${results.customEventWorks}`); + console.log(` Bubble phases: ${(results.bubblePhases || []).join(' -> ')}`); + console.log(` Bubbling works: ${results.bubblingWorks}`); + console.log(` Propagation stopped: ${results.propagationStopped}`); + console.log(` Default prevented: ${results.defaultPrevented}`); + + const pass = + results.addEventListenerNative && + results.customEventWorks && + results.bubblingWorks && + !results.propagationStopped && + !results.defaultPrevented; + console.log(` Result: ${pass ? 'PASS (no interference)' : 'FAIL (interference detected)'}`); + return { pass, ...results }; +} + +/** + * Test 4: Check for pointer-events CSS interference and overlays + */ +async function testPointerEventsCSS(driver) { + console.log('\n--- Test 4: Pointer Events CSS Interference ---'); + + const results = await safeExecute( + driver, + ` + const r = { + bodyPointerEvents: getComputedStyle(document.body).pointerEvents, + htmlPointerEvents: getComputedStyle(document.documentElement).pointerEvents, + blockedElements: [], + overlays: [] + }; + + for (const el of document.querySelectorAll('*')) { + const s = getComputedStyle(el); + if (s.pointerEvents === 'none') { + r.blockedElements.push({ tag: el.tagName, id: el.id, cls: (el.className||'').toString().substring(0,40) }); + } + const rect = el.getBoundingClientRect(); + if (rect.width > window.innerWidth * 0.5 && rect.height > window.innerHeight * 0.5 && + (parseInt(s.zIndex) > 100 || s.position === 'fixed' || s.position === 'absolute') && + el !== document.body && el !== document.documentElement && s.display !== 'none') { + r.overlays.push({ tag: el.tagName, id: el.id, z: s.zIndex, pos: s.position, opacity: s.opacity, pe: s.pointerEvents }); + } + } + return r; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: false, error: results.__error }; + } + + console.log(` body pointer-events: ${results.bodyPointerEvents}`); + console.log(` html pointer-events: ${results.htmlPointerEvents}`); + console.log(` Elements with pointer-events:none: ${results.blockedElements?.length || 0}`); + results.blockedElements?.forEach((el) => console.log(` <${el.tag}> #${el.id} .${el.cls}`)); + console.log(` Potential overlays: ${results.overlays?.length || 0}`); + results.overlays?.forEach((o) => console.log(` <${o.tag}> #${o.id} z:${o.z} opacity:${o.opacity} pe:${o.pe}`)); + + const pass = results.bodyPointerEvents !== 'none' && results.htmlPointerEvents !== 'none'; + console.log(` Result: ${pass ? 'PASS' : 'FAIL'}`); + return { pass, ...results }; +} + +/** + * Test 5: Enumerate user scripts and check for hover-related code + */ +async function testUserScriptEnumeration(driver) { + console.log('\n--- Test 5: User Script Enumeration ---'); + + const results = await safeExecute( + driver, + ` + const r = { scripts: [], ddgScripts: [], hoverRelated: [], handlers: null, globals: {}, ddgAttrs: [] }; + + document.querySelectorAll('script').forEach((s, i) => { + if (s.src) { + r.scripts.push({ i: i, src: s.src }); + if (s.src.includes('duckduckgo') || s.src.includes('ddg')) r.ddgScripts.push(s.src); + } else if (s.textContent && s.textContent.length > 10) { + const txt = s.textContent; + const preview = txt.substring(0, 100); + r.scripts.push({ i: i, len: txt.length, preview: preview }); + for (const p of ['mouseover','mouseenter','pointerover','pointerenter',':hover','onmouseover']) { + if (txt.includes(p)) r.hoverRelated.push({ pattern: p, script: i, ctx: txt.substring(Math.max(0,txt.indexOf(p)-30), txt.indexOf(p)+40) }); + } + } + }); + + // Webkit message handlers (DDG injection mechanism on macOS/iOS) + try { + if (window.webkit && window.webkit.messageHandlers) { + const keys = []; + // Proxy may block getOwnPropertyNames, so try-catch + try { keys.push(...Object.getOwnPropertyNames(window.webkit.messageHandlers)); } catch {} + try { keys.push(...Object.keys(window.webkit.messageHandlers)); } catch {} + r.handlers = [...new Set(keys)]; + } + } catch { r.handlers = 'inaccessible'; } + + // DDG globals + for (const g of ['__ddg_tds','__ddg_ext','duckduckgo','__DDG_CONTENT_SCOPE']) { + if (g in window) r.globals[g] = typeof window[g]; + } + + // DDG data attributes on + for (const attr of document.documentElement.attributes) { + if (attr.name.startsWith('data-ddg')) r.ddgAttrs.push({ name: attr.name, value: attr.value }); + } + + return r; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: true, error: results.__error }; + } + + console.log(` Total scripts: ${results.scripts?.length || 0}`); + console.log(` DDG scripts: ${results.ddgScripts?.length || 0}`); + console.log(` Hover-related code: ${results.hoverRelated?.length || 0}`); + results.hoverRelated?.forEach((h) => console.log(` "${h.pattern}" in script#${h.script}: ...${h.ctx}...`)); + console.log(` Webkit handlers: ${JSON.stringify(results.handlers)}`); + console.log(` DDG globals: ${JSON.stringify(results.globals)}`); + console.log(` DDG attrs: ${JSON.stringify(results.ddgAttrs)}`); + + return { pass: true, ...results }; +} + +/** + * Test 6: Document visibility and focus state + */ +async function testVisibilityState(driver) { + console.log('\n--- Test 6: Document Visibility & Focus State ---'); + + const results = await safeExecute( + driver, + ` + return { + visibilityState: document.visibilityState, + hidden: document.hidden, + hasFocus: document.hasFocus(), + activeElement: document.activeElement?.tagName + }; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: false, error: results.__error }; + } + + console.log(` Visibility state: ${results.visibilityState}`); + console.log(` Document hidden: ${results.hidden}`); + console.log(` Document has focus: ${results.hasFocus}`); + console.log(` Active element: ${results.activeElement}`); + + const pass = results.visibilityState === 'visible' && !results.hidden; + console.log(` Result: ${pass ? 'PASS' : 'FAIL'}`); + return { pass, ...results }; +} + +/** + * Test 7: Test hover on a real website + */ +async function testRealSiteHover(driver, url) { + console.log(`\n--- Test 7: Real Site Hover Test (${url}) ---`); + + await driver.get(url); + await waitForPageReady(driver); + await new Promise((resolve) => setTimeout(resolve, 2000)); + + const results = await safeExecute( + driver, + ` + const r = { + url: location.href, + title: document.title, + hoverCSSRules: 0, + eventTargetIntact: EventTarget.prototype.addEventListener.toString().includes('[native code]'), + bodyPointerEvents: getComputedStyle(document.body).pointerEvents, + overlays: 0, + scriptCount: document.querySelectorAll('script').length, + syntheticEventDelivered: false + }; + + // Count hover CSS rules + try { + for (const sheet of document.styleSheets) { + try { for (const rule of sheet.cssRules) { if (rule.selectorText?.includes(':hover')) r.hoverCSSRules++; } } + catch {} + } + } catch {} + + // Count overlays + for (const el of document.querySelectorAll('*')) { + const s = getComputedStyle(el); + const rect = el.getBoundingClientRect(); + if (rect.width > window.innerWidth * 0.8 && rect.height > window.innerHeight * 0.8 && + (parseInt(s.zIndex) > 100 || s.position === 'fixed') && + el !== document.body && el !== document.documentElement && s.display !== 'none') r.overlays++; + } + + // Test synthetic event delivery + const target = document.querySelector('a, button, [role="button"]'); + if (target) { + target.addEventListener('mouseover', () => { r.syntheticEventDelivered = true; }, { once: true }); + target.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); + r.testTarget = target.tagName; + } + + // Check for DDG content scope + r.hasWebkitHandlers = !!(window.webkit && window.webkit.messageHandlers); + r.ddgGlobals = {}; + for (const g of ['__ddg_tds','duckduckgo','__DDG_CONTENT_SCOPE']) { + if (g in window) r.ddgGlobals[g] = typeof window[g]; + } + + return r; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: false, error: results.__error }; + } + + console.log(` URL: ${results.url}`); + console.log(` Title: ${results.title}`); + console.log(` Hover CSS rules: ${results.hoverCSSRules}`); + console.log(` EventTarget intact: ${results.eventTargetIntact}`); + console.log(` body pointer-events: ${results.bodyPointerEvents}`); + console.log(` Large overlays: ${results.overlays}`); + console.log(` Scripts: ${results.scriptCount}`); + console.log(` Synthetic event delivered: ${results.syntheticEventDelivered}`); + console.log(` Webkit handlers present: ${results.hasWebkitHandlers}`); + console.log(` DDG globals: ${JSON.stringify(results.ddgGlobals)}`); + + if (takeScreenshots) await saveScreenshot(driver, 'real-site'); + + const pass = results.eventTargetIntact && results.bodyPointerEvents !== 'none' && results.syntheticEventDelivered; + console.log(` Result: ${pass ? 'PASS' : 'FAIL'}`); + return { pass, ...results }; +} + +/** + * Test 8: Multi-site comparison (test multiple sites for consistent behavior) + */ +async function testMultipleSites(driver) { + console.log('\n--- Test 8: Multi-Site Hover Comparison ---'); + + const sites = ['https://en.wikipedia.org/wiki/Main_Page', 'https://github.com', 'https://www.youtube.com']; + const siteResults = []; + + for (const site of sites) { + try { + await driver.get(site); + await waitForPageReady(driver); + await new Promise((resolve) => setTimeout(resolve, 1500)); + + const result = await safeExecute( + driver, + ` + const r = { url: location.href, ok: true }; + // EventTarget intact + r.eventTargetIntact = EventTarget.prototype.addEventListener.toString().includes('[native code]'); + // pointer-events + r.bodyPE = getComputedStyle(document.body).pointerEvents; + // Synthetic event test + const t = document.querySelector('a, button'); + if (t) { + let got = false; + t.addEventListener('mouseover', () => { got = true; }, { once: true }); + t.dispatchEvent(new MouseEvent('mouseover', { bubbles: true })); + r.eventDelivered = got; + } else { r.eventDelivered = 'no target'; } + // DuckPlayer specific: check for thumbnail overlays on YouTube + if (location.hostname.includes('youtube')) { + r.duckPlayerOverlay = !!document.querySelector('[class*="ddg"], [data-ddg]'); + r.thumbnailLinks = document.querySelectorAll('a#thumbnail').length; + } + return r; + `, + ); + + if (result?.__error) { + siteResults.push({ site, error: result.__error }); + console.log(` ${site}: ERROR - ${result.__error}`); + } else { + siteResults.push({ site, ...result }); + console.log(` ${site}: ET=${result.eventTargetIntact} PE=${result.bodyPE} Event=${result.eventDelivered}`); + if (result.duckPlayerOverlay !== undefined) { + console.log(` DuckPlayer overlay: ${result.duckPlayerOverlay}, Thumbnails: ${result.thumbnailLinks}`); + } + } + } catch (e) { + siteResults.push({ site, error: e.message }); + console.log(` ${site}: ERROR - ${e.message}`); + } + } + + const allPassed = siteResults.every((r) => !r.error && r.eventTargetIntact && r.eventDelivered === true); + console.log(` Result: ${allPassed ? 'PASS (all sites consistent)' : 'MIXED/FAIL'}`); + return { pass: allPassed, sites: siteResults }; +} + +/** + * Test 9: Check DuckPlayer thumbnail overlay specifically (YouTube hover listener) + */ +async function testDuckPlayerHover(driver) { + console.log('\n--- Test 9: DuckPlayer Thumbnail Hover (YouTube) ---'); + + await driver.get('https://www.youtube.com'); + await waitForPageReady(driver); + await new Promise((resolve) => setTimeout(resolve, 3000)); + + const results = await safeExecute( + driver, + ` + const r = { + url: location.href, + thumbnails: document.querySelectorAll('a#thumbnail, ytd-thumbnail').length, + ddgElements: document.querySelectorAll('[class*="ddg"], [data-ddg]').length, + mouseoverListenerCount: 0 + }; + + // Check for DuckPlayer-injected event listeners by looking for DDG overlay elements + const daxIcons = document.querySelectorAll('[class*="dax"], [class*="duck-player"], [class*="ddg-overlay"]'); + r.daxIcons = daxIcons.length; + + // Check if DuckPlayer thumbnails feature is active by looking for its CSS + const sheets = document.styleSheets; + let ddgStyles = 0; + try { + for (const sheet of sheets) { + try { + const href = sheet.href || ''; + if (href.includes('ddg') || href.includes('duckduckgo')) ddgStyles++; + for (const rule of sheet.cssRules) { + if (rule.selectorText?.includes('ddg') || rule.selectorText?.includes('dax')) ddgStyles++; + } + } catch {} + } + } catch {} + r.ddgStyleRules = ddgStyles; + + // Try to trigger a mouseover on a thumbnail to see if DuckPlayer responds + const thumb = document.querySelector('a#thumbnail'); + if (thumb) { + const rect = thumb.getBoundingClientRect(); + const events = []; + const handler = (e) => events.push(e.type); + thumb.addEventListener('mouseover', handler); + document.addEventListener('mouseover', (e) => events.push('doc:' + e.type), { once: true }); + + thumb.dispatchEvent(new MouseEvent('mouseover', { + bubbles: true, cancelable: true, + clientX: rect.left + 10, clientY: rect.top + 10, + view: window + })); + + // Wait for any async DuckPlayer handlers + await new Promise(res => setTimeout(res, 300)); + + thumb.removeEventListener('mouseover', handler); + r.thumbnailHoverEvents = events; + r.thumbnailHref = thumb.href; + } + + return r; + `, + ); + + if (results?.__error) { + console.log(` ERROR: ${results.__error}`); + return { pass: true, error: results.__error, note: 'YouTube may have loaded differently' }; + } + + console.log(` URL: ${results.url}`); + console.log(` Thumbnails found: ${results.thumbnails}`); + console.log(` DDG elements: ${results.ddgElements}`); + console.log(` Dax icons: ${results.daxIcons}`); + console.log(` DDG style rules: ${results.ddgStyleRules}`); + console.log(` Thumbnail hover events: ${JSON.stringify(results.thumbnailHoverEvents)}`); + console.log(` Thumbnail href: ${results.thumbnailHref}`); + + if (takeScreenshots) await saveScreenshot(driver, 'youtube-duckplayer'); + + return { pass: true, ...results }; +} + +// ---- Main ---- + +await cleanupExistingSessions(); + +let driver; +try { + driver = await new selenium.Builder().usingServer(serverUrl).withCapabilities({ browserName: 'duckduckgo' }).build(); + + console.log('='.repeat(60)); + console.log('HOVER STATE BUG INVESTIGATION'); + console.log('='.repeat(60)); + console.log(`Time: ${new Date().toISOString()}`); + + // Navigate to about:blank first, then inject test HTML + console.log('\nSetting up inline test page...'); + await driver.get('https://example.com'); + await waitForPageReady(driver); + await injectTestPage(driver); + await new Promise((resolve) => setTimeout(resolve, 500)); + + if (takeScreenshots) await saveScreenshot(driver, 'test-page-setup'); + + const allResults = {}; + + // Run tests on the injected test page + allResults.eventDelivery = await testEventDelivery(driver); + allResults.cssHover = await testCSSHoverState(driver); + allResults.listenerInterference = await testEventListenerInterference(driver); + allResults.pointerEventsCSS = await testPointerEventsCSS(driver); + allResults.userScripts = await testUserScriptEnumeration(driver); + allResults.visibilityState = await testVisibilityState(driver); + + // Test on real sites + const testUrl = customUrl || 'https://duckduckgo.com'; + allResults.realSite = await testRealSiteHover(driver, testUrl); + allResults.multiSite = await testMultipleSites(driver); + allResults.duckPlayer = await testDuckPlayerHover(driver); + + // Summary + console.log('\n' + '='.repeat(60)); + console.log('INVESTIGATION SUMMARY'); + console.log('='.repeat(60)); + + const tests = Object.entries(allResults); + let passCount = 0; + let failCount = 0; + + for (const [name, result] of tests) { + const status = result.pass ? 'PASS' : 'FAIL'; + if (result.pass) passCount++; + else failCount++; + console.log(` ${status} ${name}${result.error ? ` (${result.error.substring(0, 60)})` : ''}`); + } + + console.log(`\n Total: ${passCount} passed, ${failCount} failed out of ${tests.length}`); + + // Key findings + console.log('\n--- Key Findings ---'); + + if (allResults.listenerInterference && !allResults.listenerInterference.pass) { + console.log(' [!] EVENT LISTENER INTERFERENCE DETECTED'); + if (!allResults.listenerInterference.addEventListenerNative) { + console.log(' addEventListener has been overridden (not native code)'); + console.log(` toString: ${allResults.listenerInterference.addEventListenerStr}`); + } + if (allResults.listenerInterference.propagationStopped) { + console.log(' mouseover propagation is being stopped'); + } + if (allResults.listenerInterference.defaultPrevented) { + console.log(' mouseover default is being prevented'); + } + } + + if (allResults.pointerEventsCSS && !allResults.pointerEventsCSS.pass) { + console.log(' [!] POINTER EVENTS CSS INTERFERENCE DETECTED'); + } + + if (allResults.userScripts?.hoverRelated?.length > 0) { + console.log(' [!] USER SCRIPTS WITH HOVER CODE FOUND'); + allResults.userScripts.hoverRelated.forEach((h) => { + console.log(` Pattern "${h.pattern}" in script#${h.script}`); + }); + } + + if (allResults.visibilityState && !allResults.visibilityState.pass) { + console.log(' [!] DOCUMENT VISIBILITY STATE ISSUE'); + console.log(` visibilityState: ${allResults.visibilityState.visibilityState}`); + console.log(` hidden: ${allResults.visibilityState.hidden}`); + } + + if (allResults.duckPlayer?.daxIcons > 0 || allResults.duckPlayer?.ddgStyleRules > 0) { + console.log(' [i] DuckPlayer is active on YouTube'); + console.log(` Dax icons: ${allResults.duckPlayer.daxIcons}, DDG styles: ${allResults.duckPlayer.ddgStyleRules}`); + } + + if (allResults.multiSite?.sites?.some((s) => !s.eventTargetIntact)) { + console.log(' [!] EventTarget overridden on some sites'); + } + + console.log('\n--- Investigation Notes ---'); + console.log(' This test checks the JavaScript event delivery layer.'); + console.log(' The reported bug affects REAL mouse hardware events, not dispatchEvent.'); + console.log(' Synthetic events (dispatchEvent) bypass the browser compositing layer.'); + console.log(' The Zoom screen-sharing fix suggests a WKWebView/CALayer compositing issue.'); + console.log(' Key suspects:'); + console.log(' 1. WKWebView hit-testing state corruption (native, not JS)'); + console.log(' 2. User script installing a capturing listener that swallows events'); + console.log(' 3. Window/layer compositing issue with external displays'); + + console.log('\n' + '='.repeat(60)); + + // Save full report + const reportDir = join(scriptsDir, '..', 'reports'); + await mkdir(reportDir, { recursive: true }); + const reportFile = join(reportDir, `hover-investigation-${new Date().toISOString().replace(/[:.]/g, '-')}.json`); + await writeFile(reportFile, JSON.stringify({ timestamp: new Date().toISOString(), results: allResults }, null, 2)); + console.log(`\nReport saved: ${reportFile}`); + + if (keepOpen) { + console.log('\nBrowser staying open. Press Ctrl+C to quit.'); + await new Promise(() => {}); + } +} catch (error) { + console.error('\nError:', error.message); + if (error.message.includes('ECONNREFUSED')) { + console.error('Driver not running. Start with: npm run driver:macos'); + } + process.exit(1); +} finally { + if (driver && !keepOpen) { + try { + await driver.quit(); + } catch { + // Ignore + } + } +} diff --git a/scripts/investigate-js-blocking.mjs b/scripts/investigate-js-blocking.mjs new file mode 100644 index 0000000..241dcc2 --- /dev/null +++ b/scripts/investigate-js-blocking.mjs @@ -0,0 +1,329 @@ +#!/usr/bin/env node +/** + * Investigate JavaScript blocking on Nintendo.com + * + * Check if JavaScript is being blocked/prevented from executing. + */ + +import { createRequire } from 'node:module'; +import { writeFile, mkdir } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function executeScript(sessionId, script, ...args) { + const response = await fetch(`${serverUrl}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script: `return (function() { ${script} })()`, + args + }) + }); + const data = await response.json(); + if (data.value?.error) { + throw new Error(data.value.message); + } + return data.value; +} + +async function getCurrentUrl(sessionId) { + const response = await fetch(`${serverUrl}/session/${sessionId}/url`); + const data = await response.json(); + return data.value; +} + +async function navigateTo(sessionId, url) { + const response = await fetch(`${serverUrl}/session/${sessionId}/url`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ url }) + }); + return response.ok; +} + +async function takeScreenshot(sessionId, filename) { + const response = await fetch(`${serverUrl}/session/${sessionId}/screenshot`); + const data = await response.json(); + if (data.value) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + await mkdir(screenshotsDir, { recursive: true }); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, Buffer.from(data.value, 'base64')); + console.log(`📸 Screenshot: ${filepath}`); + return filepath; + } + return null; +} + +async function createSession() { + const response = await fetch(`${serverUrl}/session`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + capabilities: { + alwaysMatch: { browserName: 'duckduckgo' }, + firstMatch: [{}] + } + }) + }); + const data = await response.json(); + return data.value?.sessionId || data.sessionId; +} + +async function main() { + console.log('🔍 JavaScript Blocking Investigation'); + console.log(` Server: ${serverUrl}\n`); + + const sessionId = await createSession(); + if (!sessionId) { + console.error('Failed to create session'); + process.exit(1); + } + console.log(` Session: ${sessionId}\n`); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + // Navigate to Nintendo cart + console.log('📍 Navigating to Nintendo US cart...'); + await navigateTo(sessionId, 'https://www.nintendo.com/us/cart/'); + + // Wait for initial page load + console.log(' Waiting for page load...'); + await new Promise(r => setTimeout(r, 5000)); + + await takeScreenshot(sessionId, `js-investigation-1-${timestamp}.png`); + + // Check document state + console.log('\n📄 Document State:'); + const docState = await executeScript(sessionId, ` + return { + readyState: document.readyState, + url: document.URL, + title: document.title, + scripts: document.querySelectorAll('script').length, + bodyLength: document.body?.innerHTML?.length || 0, + hasReact: !!window.__NEXT_DATA__ || !!window.React || !!document.querySelector('[data-reactroot]'), + hasNextJs: !!window.__NEXT_DATA__, + nextData: window.__NEXT_DATA__ ? 'present' : 'missing' + }; + `); + console.log(` readyState: ${docState.readyState}`); + console.log(` title: ${docState.title || '(empty)'}`); + console.log(` body length: ${docState.bodyLength} chars`); + console.log(` scripts: ${docState.scripts}`); + console.log(` hasReact: ${docState.hasReact}`); + console.log(` hasNextJs: ${docState.hasNextJs}`); + console.log(` __NEXT_DATA__: ${docState.nextData}`); + + // Check for errors + console.log('\n🔴 JavaScript Errors:'); + const errors = await executeScript(sessionId, ` + // Check for React error boundaries + const errorBoundaries = document.querySelectorAll('[data-reactroot]'); + const results = { + errors: [], + warnings: [] + }; + + // Check for common error indicators + const errorText = document.body?.innerText || ''; + if (errorText.includes('Error') || errorText.includes('error')) { + results.errors.push('Error text found in page'); + } + + // Check console override for errors + if (window.__ddg_captured_errors) { + results.errors = results.errors.concat(window.__ddg_captured_errors); + } + + return results; + `); + + if (errors.errors.length === 0) { + console.log(' No obvious errors detected'); + } else { + for (const err of errors.errors) { + console.log(` ❌ ${err}`); + } + } + + // Check specifically for React hydration + console.log('\n⚛️ React/Next.js Hydration Check:'); + const reactCheck = await executeScript(sessionId, ` + const results = { + hasNextData: !!window.__NEXT_DATA__, + hasReactFiber: false, + rootElements: [], + textContentSample: '' + }; + + // Look for React fiber nodes + const rootEl = document.getElementById('__next'); + if (rootEl) { + results.rootElements.push('#__next'); + results.textContentSample = rootEl.textContent?.substring(0, 100) || ''; + + // Check for React internal properties + const keys = Object.keys(rootEl); + const fiberKey = keys.find(k => k.startsWith('__reactFiber') || k.startsWith('__reactInternalInstance')); + results.hasReactFiber = !!fiberKey; + } + + // Check for any hydration errors + const hydrationErrors = document.querySelectorAll('[data-hydration-error]'); + results.hydrationErrors = hydrationErrors.length; + + return results; + `); + console.log(` __NEXT_DATA__: ${reactCheck.hasNextData}`); + console.log(` React Fiber attached: ${reactCheck.hasReactFiber}`); + console.log(` Root elements: ${reactCheck.rootElements.join(', ') || 'none'}`); + console.log(` Text content sample: "${reactCheck.textContentSample}"`); + + // Check network requests that might be blocked + console.log('\n🌐 Checking for blocked resources (via Performance API):'); + const perfCheck = await executeScript(sessionId, ` + const resources = performance.getEntriesByType('resource'); + return resources.map(r => ({ + name: r.name.substring(0, 80), + type: r.initiatorType, + duration: Math.round(r.duration), + transferSize: r.transferSize || 0, + failed: r.transferSize === 0 && r.duration > 0 + })).filter(r => r.type === 'script'); + `); + + const failedScripts = perfCheck.filter(s => s.failed); + console.log(` Total scripts: ${perfCheck.length}`); + console.log(` Potentially blocked: ${failedScripts.length}`); + if (failedScripts.length > 0) { + console.log(' Blocked scripts:'); + failedScripts.slice(0, 5).forEach(s => { + console.log(` ❌ ${s.name}...`); + }); + } + + // Wait longer and check again + console.log('\n⏳ Waiting 10 seconds for late hydration...'); + await new Promise(r => setTimeout(r, 10000)); + + await takeScreenshot(sessionId, `js-investigation-2-${timestamp}.png`); + + // Re-check modal + console.log('\n🪟 Modal Check (after waiting):'); + const modalCheck = await executeScript(sessionId, ` + const dialogs = document.querySelectorAll('[role="dialog"]'); + const results = []; + + for (const dialog of dialogs) { + const style = window.getComputedStyle(dialog); + if (style.display !== 'none') { + const buttons = Array.from(dialog.querySelectorAll('button')); + results.push({ + visible: true, + text: dialog.textContent?.trim().substring(0, 300), + buttons: buttons.map(b => ({ + text: b.textContent?.trim(), + ariaLabel: b.getAttribute('aria-label'), + visible: window.getComputedStyle(b).display !== 'none' + })), + classList: dialog.className + }); + } + } + + return results; + `); + + if (modalCheck.length === 0) { + console.log(' No visible modals found'); + } else { + for (const m of modalCheck) { + console.log(` Modal class: ${m.classList}`); + console.log(` Text (${m.text?.length || 0} chars): "${m.text?.substring(0, 100)}..."`); + console.log(` Buttons (${m.buttons.length}):`); + for (const b of m.buttons) { + console.log(` - "${b.text || b.ariaLabel || '(empty)'}" visible: ${b.visible}`); + } + } + } + + // Check if any JavaScript globals exist that indicate the app loaded + console.log('\n🔧 JavaScript Globals Check:'); + const globalsCheck = await executeScript(sessionId, ` + return { + jQuery: typeof jQuery !== 'undefined', + React: typeof React !== 'undefined', + ReactDOM: typeof ReactDOM !== 'undefined', + next: typeof __NEXT_DATA__ !== 'undefined', + optimizely: typeof optimizely !== 'undefined', + dataLayer: typeof dataLayer !== 'undefined', + DDG: typeof DDG !== 'undefined' + }; + `); + console.log(` jQuery: ${globalsCheck.jQuery}`); + console.log(` React: ${globalsCheck.React}`); + console.log(` ReactDOM: ${globalsCheck.ReactDOM}`); + console.log(` __NEXT_DATA__: ${globalsCheck.next}`); + console.log(` Optimizely: ${globalsCheck.optimizely}`); + console.log(` dataLayer: ${globalsCheck.dataLayer}`); + console.log(` DDG: ${globalsCheck.DDG}`); + + // Get raw HTML to see if content is in SSR + console.log('\n📝 Server-Side Rendered Content Check:'); + const ssrCheck = await executeScript(sessionId, ` + const nextContainer = document.getElementById('__next'); + if (!nextContainer) return { found: false }; + + const html = nextContainer.innerHTML; + return { + found: true, + length: html.length, + hasButtons: html.includes('button') || html.includes('Button'), + hasStayHere: html.includes('Stay here') || html.includes('stay here'), + hasRegion: html.includes('region') || html.includes('Region'), + sample: html.substring(0, 500) + }; + `); + + if (!ssrCheck.found) { + console.log(' ❌ #__next container not found'); + } else { + console.log(` Container length: ${ssrCheck.length} chars`); + console.log(` Has "button": ${ssrCheck.hasButtons}`); + console.log(` Has "Stay here": ${ssrCheck.hasStayHere}`); + console.log(` Has "region": ${ssrCheck.hasRegion}`); + console.log(` Sample: "${ssrCheck.sample?.substring(0, 200)}..."`); + } + + console.log('\n' + '='.repeat(60)); + console.log('📊 SUMMARY'); + console.log('='.repeat(60)); + + if (!reactCheck.hasReactFiber && reactCheck.hasNextData) { + console.log('\n❌ React is NOT hydrating:'); + console.log(' - __NEXT_DATA__ is present (SSR worked)'); + console.log(' - React Fiber is NOT attached (client JS failed)'); + console.log(' - This indicates JavaScript is being blocked'); + } else if (reactCheck.hasReactFiber) { + console.log('\n✓ React appears to be hydrated'); + } + + if (modalCheck.length > 0 && modalCheck[0].text?.length === 0) { + console.log('\n⚠️ Modal exists but has empty content:'); + console.log(' - Modal HTML structure present'); + console.log(' - Text content not rendered'); + console.log(' - React components not mounting properly'); + } + + console.log('\n✅ Session kept open for manual inspection'); + console.log(' Browser should be visible in the Simulator'); +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/investigate-modal-deep.mjs b/scripts/investigate-modal-deep.mjs new file mode 100644 index 0000000..fa757b4 --- /dev/null +++ b/scripts/investigate-modal-deep.mjs @@ -0,0 +1,382 @@ +#!/usr/bin/env node +/** + * Deep investigation of the Nintendo modal + */ + +import { writeFile, mkdir } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function executeScript(sessionId, script, ...args) { + const response = await fetch(`${serverUrl}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script: `return (function() { ${script} })()`, + args + }) + }); + const data = await response.json(); + if (data.value?.error) { + throw new Error(data.value.message); + } + return data.value; +} + +async function navigateTo(sessionId, url) { + const response = await fetch(`${serverUrl}/session/${sessionId}/url`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ url }) + }); + return response.ok; +} + +async function takeScreenshot(sessionId, filename) { + const response = await fetch(`${serverUrl}/session/${sessionId}/screenshot`); + const data = await response.json(); + if (data.value) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + await mkdir(screenshotsDir, { recursive: true }); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, Buffer.from(data.value, 'base64')); + console.log(`📸 Screenshot: ${filepath}`); + return filepath; + } + return null; +} + +async function createSession() { + const response = await fetch(`${serverUrl}/session`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + capabilities: { + alwaysMatch: { browserName: 'duckduckgo' }, + firstMatch: [{}] + } + }) + }); + const data = await response.json(); + return data.value?.sessionId || data.sessionId; +} + +async function main() { + console.log('🔍 Deep Modal Investigation'); + console.log(` Server: ${serverUrl}\n`); + + const sessionId = await createSession(); + if (!sessionId) { + console.error('Failed to create session'); + process.exit(1); + } + console.log(` Session: ${sessionId}\n`); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + // Navigate to Nintendo cart + console.log('📍 Navigating to Nintendo US cart...'); + await navigateTo(sessionId, 'https://www.nintendo.com/us/cart/'); + + // Wait for page load + console.log(' Waiting for page load (10s)...'); + await new Promise(r => setTimeout(r, 10000)); + + await takeScreenshot(sessionId, `modal-deep-1-${timestamp}.png`); + + // Get ALL modals/dialogs HTML + console.log('\n📋 Getting modal HTML...'); + const modalHtml = await executeScript(sessionId, ` + const dialogs = document.querySelectorAll('[role="dialog"]'); + const results = []; + + for (const dialog of dialogs) { + const style = window.getComputedStyle(dialog); + results.push({ + outerHTML: dialog.outerHTML, + className: dialog.className, + id: dialog.id, + display: style.display, + visibility: style.visibility, + childCount: dialog.children.length, + textContent: dialog.textContent, + innerText: dialog.innerText + }); + } + + return results; + `); + + if (modalHtml.length === 0) { + console.log(' No modals found with [role="dialog"]'); + + // Try other modal selectors + const otherModals = await executeScript(sessionId, ` + const selectors = [ + '.modal', + '[class*="modal"]', + '[class*="Modal"]', + '[class*="dialog"]', + '[class*="Dialog"]', + '[class*="overlay"]', + '[class*="Overlay"]' + ]; + + for (const sel of selectors) { + const els = document.querySelectorAll(sel); + for (const el of els) { + const style = window.getComputedStyle(el); + if (style.display !== 'none' && style.visibility !== 'hidden') { + return { + selector: sel, + outerHTML: el.outerHTML.substring(0, 5000), + className: el.className, + textContent: el.textContent?.substring(0, 500) + }; + } + } + } + return null; + `); + + if (otherModals) { + console.log(` Found modal with selector: ${otherModals.selector}`); + console.log(` Class: ${otherModals.className}`); + console.log(` Text: "${otherModals.textContent}"`); + console.log('\n HTML (first 2000 chars):'); + console.log(otherModals.outerHTML?.substring(0, 2000)); + } + } else { + console.log(` Found ${modalHtml.length} dialog(s):\n`); + + for (let i = 0; i < modalHtml.length; i++) { + const m = modalHtml[i]; + console.log(` === Dialog ${i + 1} ===`); + console.log(` Class: ${m.className}`); + console.log(` ID: ${m.id || '(none)'}`); + console.log(` Display: ${m.display}`); + console.log(` Visibility: ${m.visibility}`); + console.log(` Children: ${m.childCount}`); + console.log(` textContent length: ${m.textContent?.length || 0}`); + console.log(` innerText length: ${m.innerText?.length || 0}`); + console.log(` textContent: "${m.textContent?.substring(0, 200)}"`); + console.log(` innerText: "${m.innerText?.substring(0, 200)}"`); + console.log('\n Full outerHTML:'); + console.log(' ' + '='.repeat(60)); + console.log(m.outerHTML); + console.log(' ' + '='.repeat(60)); + console.log(''); + } + } + + // Find ALL buttons on the page and their states + console.log('\n🔘 All buttons on the page:'); + const allButtons = await executeScript(sessionId, ` + const buttons = document.querySelectorAll('button'); + return Array.from(buttons).map((btn, idx) => { + const rect = btn.getBoundingClientRect(); + const style = window.getComputedStyle(btn); + return { + index: idx, + textContent: btn.textContent?.trim().substring(0, 100), + innerText: btn.innerText?.trim().substring(0, 100), + innerHTML: btn.innerHTML?.substring(0, 200), + className: btn.className, + id: btn.id, + disabled: btn.disabled, + visible: rect.width > 0 && rect.height > 0 && style.display !== 'none' && style.visibility !== 'hidden', + rect: { x: Math.round(rect.x), y: Math.round(rect.y), width: Math.round(rect.width), height: Math.round(rect.height) }, + ariaLabel: btn.getAttribute('aria-label'), + dataTestId: btn.getAttribute('data-testid') + }; + }); + `); + + console.log(` Total buttons: ${allButtons.length}`); + console.log(` Visible buttons: ${allButtons.filter(b => b.visible).length}`); + + // Find buttons that might be modal-related + const modalButtons = allButtons.filter(b => + b.visible && + (b.textContent?.length === 0 || + b.textContent?.toLowerCase().includes('stay') || + b.textContent?.toLowerCase().includes('close') || + b.textContent?.toLowerCase().includes('change') || + b.ariaLabel?.toLowerCase().includes('close') || + b.innerHTML?.includes('svg')) + ); + + console.log(`\n Potentially modal-related buttons (${modalButtons.length}):`); + for (const btn of modalButtons.slice(0, 10)) { + console.log(`\n Button #${btn.index}:`); + console.log(` textContent: "${btn.textContent}"`); + console.log(` innerText: "${btn.innerText}"`); + console.log(` className: ${btn.className}`); + console.log(` ariaLabel: ${btn.ariaLabel}`); + console.log(` disabled: ${btn.disabled}`); + console.log(` rect: ${JSON.stringify(btn.rect)}`); + console.log(` innerHTML: ${btn.innerHTML}`); + } + + // Find the dialog and get its buttons specifically + console.log('\n🎯 Buttons inside [role="dialog"]:'); + const dialogButtons = await executeScript(sessionId, ` + const dialog = document.querySelector('[role="dialog"]'); + if (!dialog) return { found: false }; + + const buttons = dialog.querySelectorAll('button'); + return { + found: true, + dialogHTML: dialog.outerHTML, + buttonCount: buttons.length, + buttons: Array.from(buttons).map((btn, idx) => { + const rect = btn.getBoundingClientRect(); + return { + index: idx, + textContent: btn.textContent, + innerText: btn.innerText, + outerHTML: btn.outerHTML, + className: btn.className, + rect: { x: Math.round(rect.x), y: Math.round(rect.y), width: Math.round(rect.width), height: Math.round(rect.height) }, + clickable: rect.width > 0 && rect.height > 0 + }; + }) + }; + `); + + if (!dialogButtons.found) { + console.log(' No dialog found'); + } else { + console.log(` Dialog button count: ${dialogButtons.buttonCount}`); + console.log(`\n Dialog full HTML:`); + console.log(' ' + '='.repeat(60)); + console.log(dialogButtons.dialogHTML); + console.log(' ' + '='.repeat(60)); + + for (const btn of dialogButtons.buttons) { + console.log(`\n Dialog Button #${btn.index}:`); + console.log(` textContent: "${btn.textContent}"`); + console.log(` innerText: "${btn.innerText}"`); + console.log(` outerHTML: ${btn.outerHTML}`); + console.log(` rect: ${JSON.stringify(btn.rect)}`); + console.log(` clickable: ${btn.clickable}`); + } + } + + // Try clicking any button inside the dialog + console.log('\n🖱️ Attempting to click buttons inside dialog...'); + + const clickResult = await executeScript(sessionId, ` + const dialog = document.querySelector('[role="dialog"]'); + if (!dialog) return { success: false, reason: 'No dialog found' }; + + const buttons = dialog.querySelectorAll('button'); + if (buttons.length === 0) return { success: false, reason: 'No buttons in dialog' }; + + const results = []; + + for (let i = 0; i < buttons.length; i++) { + const btn = buttons[i]; + const rect = btn.getBoundingClientRect(); + + // Record state before click + const before = { + dialogVisible: window.getComputedStyle(dialog).display !== 'none', + url: location.href + }; + + try { + // Try multiple click methods + btn.click(); + + // Also dispatch events + btn.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true })); + btn.dispatchEvent(new PointerEvent('pointerdown', { bubbles: true })); + btn.dispatchEvent(new PointerEvent('pointerup', { bubbles: true })); + + results.push({ + buttonIndex: i, + buttonText: btn.textContent, + buttonHTML: btn.outerHTML, + clicked: true, + rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height } + }); + } catch (e) { + results.push({ + buttonIndex: i, + buttonText: btn.textContent, + clicked: false, + error: e.message + }); + } + } + + return { success: true, clicks: results }; + `); + + console.log(' Click results:', JSON.stringify(clickResult, null, 2)); + + // Wait and check if dialog is still visible + await new Promise(r => setTimeout(r, 2000)); + + const afterClick = await executeScript(sessionId, ` + const dialog = document.querySelector('[role="dialog"]'); + if (!dialog) return { dialogFound: false }; + + const style = window.getComputedStyle(dialog); + return { + dialogFound: true, + display: style.display, + visibility: style.visibility, + stillVisible: style.display !== 'none' && style.visibility !== 'hidden', + textContent: dialog.textContent?.substring(0, 200) + }; + `); + + console.log('\n After click state:'); + console.log(` Dialog still visible: ${afterClick.stillVisible}`); + console.log(` Display: ${afterClick.display}`); + console.log(` Content: "${afterClick.textContent}"`); + + await takeScreenshot(sessionId, `modal-deep-2-after-click-${timestamp}.png`); + + // Try to click by coordinates if we found a button + if (dialogButtons.found && dialogButtons.buttons.length > 0) { + const firstButton = dialogButtons.buttons[0]; + if (firstButton.rect.width > 0 && firstButton.rect.height > 0) { + console.log('\n🎯 Attempting coordinate-based click...'); + const centerX = firstButton.rect.x + firstButton.rect.width / 2; + const centerY = firstButton.rect.y + firstButton.rect.height / 2; + console.log(` Clicking at (${centerX}, ${centerY})`); + + const coordClick = await executeScript(sessionId, ` + const x = ${centerX}; + const y = ${centerY}; + const el = document.elementFromPoint(x, y); + + if (!el) return { found: false, reason: 'No element at coordinates' }; + + return { + found: true, + element: el.tagName, + className: el.className, + text: el.textContent?.substring(0, 100), + outerHTML: el.outerHTML?.substring(0, 300) + }; + `); + + console.log(' Element at coordinates:', JSON.stringify(coordClick, null, 2)); + } + } + + console.log('\n✅ Investigation complete'); + console.log(' Session kept open for manual inspection'); +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/investigate-nintendo-modal.mjs b/scripts/investigate-nintendo-modal.mjs new file mode 100644 index 0000000..6652456 --- /dev/null +++ b/scripts/investigate-nintendo-modal.mjs @@ -0,0 +1,416 @@ +#!/usr/bin/env node +/** + * Investigate Nintendo Region Modal Issue + * + * This script investigates why the "Stay here" click isn't being persisted, + * focusing on cookies, localStorage, and tracking protection. + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function getExistingSession() { + try { + // Try /sessions endpoint first + const response = await fetch(`${serverUrl}/sessions`); + const text = await response.text(); + + // If it returns "HTTP method not allowed", try /status + if (text.includes('not allowed')) { + // Try to get session from /status + const statusResponse = await fetch(`${serverUrl}/status`); + const statusData = await statusResponse.json(); + console.log('Driver status:', statusData); + return null; + } + + const data = JSON.parse(text); + const sessions = data.value || (Array.isArray(data) ? data : []); + if (sessions.length > 0) { + return sessions[0].id || sessions[0].sessionId || sessions[0]; + } + } catch (e) { + console.error('Session check error:', e.message); + } + return null; +} + +async function executeScript(sessionId, script, ...args) { + const response = await fetch(`${serverUrl}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script: `return (function() { ${script} })()`, + args + }) + }); + const data = await response.json(); + if (data.value?.error) { + throw new Error(data.value.message); + } + return data.value; +} + +async function getCurrentUrl(sessionId) { + const response = await fetch(`${serverUrl}/session/${sessionId}/url`); + const data = await response.json(); + return data.value; +} + +async function navigateTo(sessionId, url) { + const response = await fetch(`${serverUrl}/session/${sessionId}/url`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ url }) + }); + return response.ok; +} + +async function takeScreenshot(sessionId, filename) { + const response = await fetch(`${serverUrl}/session/${sessionId}/screenshot`); + const data = await response.json(); + if (data.value) { + const { writeFile, mkdir } = await import('node:fs/promises'); + const { dirname, join } = await import('node:path'); + const { fileURLToPath } = await import('node:url'); + const scriptsDir = dirname(fileURLToPath(import.meta.url)); + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + await mkdir(screenshotsDir, { recursive: true }); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, Buffer.from(data.value, 'base64')); + console.log(`📸 Screenshot: ${filepath}`); + return filepath; + } + return null; +} + +async function main() { + console.log('🔍 Nintendo Region Modal Investigation'); + console.log(` Server: ${serverUrl}\n`); + + // Find existing session + const sessionId = await getExistingSession(); + if (!sessionId) { + console.log('No active session. Creating a new one...'); + + // Create new session + const response = await fetch(`${serverUrl}/session`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + capabilities: { + alwaysMatch: { browserName: 'duckduckgo' }, + firstMatch: [{}] + } + }) + }); + const data = await response.json(); + const newSessionId = data.value?.sessionId || data.sessionId; + if (!newSessionId) { + console.error('Failed to create session:', data); + process.exit(1); + } + console.log(` Created session: ${newSessionId}\n`); + return investigate(newSessionId); + } + + console.log(` Session: ${sessionId}\n`); + return investigate(sessionId); +} + +async function investigate(sessionId) { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + // Get current page + const currentUrl = await getCurrentUrl(sessionId); + console.log(`📄 Current URL: ${currentUrl}`); + + // Navigate to Nintendo US cart page to trigger the modal + if (!currentUrl.includes('nintendo.com')) { + console.log('\n Navigating to Nintendo US cart...'); + await navigateTo(sessionId, 'https://www.nintendo.com/us/cart/'); + await new Promise(r => setTimeout(r, 5000)); + } + + await takeScreenshot(sessionId, `investigate-modal-${timestamp}.png`); + + // 1. Check for the regional modal + console.log('\n🪟 Checking for Regional Modal...'); + const modalInfo = await executeScript(sessionId, ` + const modals = document.querySelectorAll('[role="dialog"], .modal, [class*="modal"]'); + const results = []; + for (const modal of modals) { + const style = window.getComputedStyle(modal); + if (style.display !== 'none' && style.visibility !== 'hidden') { + results.push({ + selector: modal.id ? '#' + modal.id : modal.className, + text: modal.textContent?.substring(0, 200), + display: style.display, + buttons: Array.from(modal.querySelectorAll('button')).map(b => ({ + text: b.textContent?.trim(), + disabled: b.disabled + })) + }); + } + } + return results; + `); + + if (modalInfo.length > 0) { + console.log(` Found ${modalInfo.length} visible modal(s):`); + for (const m of modalInfo) { + console.log(` - Selector: ${m.selector}`); + console.log(` Text: ${m.text?.substring(0, 100)}...`); + console.log(` Buttons: ${m.buttons.map(b => b.text).join(', ')}`); + } + } else { + console.log(' No visible modals found'); + } + + // 2. Check cookies + console.log('\n🍪 Checking Cookies...'); + const cookies = await executeScript(sessionId, ` + return document.cookie.split(';').map(c => { + const [name, value] = c.trim().split('='); + return { name, value: value?.substring(0, 50) }; + }); + `); + + if (cookies.length === 0) { + console.log(' ❌ No cookies found! Likely blocked by tracking protection.'); + } else { + console.log(` Found ${cookies.length} cookies:`); + const regionCookies = cookies.filter(c => + c.name?.toLowerCase().includes('region') || + c.name?.toLowerCase().includes('locale') || + c.name?.toLowerCase().includes('country') || + c.name?.toLowerCase().includes('geo') + ); + if (regionCookies.length > 0) { + console.log(' Region-related cookies:'); + for (const c of regionCookies) { + console.log(` - ${c.name}: ${c.value}`); + } + } else { + console.log(' ⚠️ No region-related cookies found'); + console.log(' All cookies:'); + for (const c of cookies.slice(0, 10)) { + console.log(` - ${c.name}: ${c.value}`); + } + if (cookies.length > 10) { + console.log(` ... and ${cookies.length - 10} more`); + } + } + } + + // 3. Check localStorage + console.log('\n📦 Checking localStorage...'); + const storageInfo = await executeScript(sessionId, ` + try { + const keys = Object.keys(localStorage); + return { + accessible: true, + count: keys.length, + keys: keys.slice(0, 20), + regionKeys: keys.filter(k => + k.toLowerCase().includes('region') || + k.toLowerCase().includes('locale') || + k.toLowerCase().includes('country') + ) + }; + } catch (e) { + return { accessible: false, error: e.message }; + } + `); + + if (!storageInfo.accessible) { + console.log(` ❌ localStorage not accessible: ${storageInfo.error}`); + } else { + console.log(` Found ${storageInfo.count} localStorage keys`); + if (storageInfo.regionKeys.length > 0) { + console.log(' Region-related keys:'); + for (const k of storageInfo.regionKeys) { + const value = await executeScript(sessionId, `return localStorage.getItem('${k}')`); + console.log(` - ${k}: ${value?.substring(0, 50)}`); + } + } else { + console.log(' ⚠️ No region-related localStorage keys found'); + } + } + + // 4. Check sessionStorage + console.log('\n📦 Checking sessionStorage...'); + const sessionStorageInfo = await executeScript(sessionId, ` + try { + const keys = Object.keys(sessionStorage); + return { + accessible: true, + count: keys.length, + keys: keys.slice(0, 20) + }; + } catch (e) { + return { accessible: false, error: e.message }; + } + `); + + if (!sessionStorageInfo.accessible) { + console.log(` ❌ sessionStorage not accessible: ${sessionStorageInfo.error}`); + } else { + console.log(` Found ${sessionStorageInfo.count} sessionStorage keys`); + } + + // 5. Try clicking "Stay here" and see what happens + console.log('\n🖱️ Attempting to click "Stay here" and observe...'); + + const beforeCookies = await executeScript(sessionId, `return document.cookie`); + const beforeStorage = await executeScript(sessionId, `return Object.keys(localStorage).length`); + + const clickResult = await executeScript(sessionId, ` + const buttons = document.querySelectorAll('button'); + for (const btn of buttons) { + const text = (btn.textContent || btn.innerText || '').trim(); + if (text === 'Stay here' || text.includes('Stay here')) { + // Watch for cookie changes + const cookiesBefore = document.cookie; + + btn.click(); + + return { + clicked: true, + buttonText: text, + cookiesBefore + }; + } + } + return { clicked: false, reason: 'Stay here button not found' }; + `); + + if (clickResult.clicked) { + console.log(` ✓ Clicked "${clickResult.buttonText}"`); + + // Wait and check for changes + await new Promise(r => setTimeout(r, 2000)); + + const afterCookies = await executeScript(sessionId, `return document.cookie`); + const afterStorage = await executeScript(sessionId, `return Object.keys(localStorage).length`); + + console.log(` Cookies before: ${clickResult.cookiesBefore.length} chars`); + console.log(` Cookies after: ${afterCookies.length} chars`); + console.log(` localStorage before: ${beforeStorage} keys`); + console.log(` localStorage after: ${afterStorage} keys`); + + if (beforeCookies === afterCookies) { + console.log(' ⚠️ No cookie changes after click - preference likely not persisted'); + } + + // Check if modal is still visible + const modalStillVisible = await executeScript(sessionId, ` + const modal = document.querySelector('[role="dialog"]'); + if (!modal) return false; + const style = window.getComputedStyle(modal); + return style.display !== 'none' && style.visibility !== 'hidden'; + `); + + console.log(` Modal still visible: ${modalStillVisible}`); + + await takeScreenshot(sessionId, `investigate-after-click-${timestamp}.png`); + } else { + console.log(` ${clickResult.reason}`); + } + + // 6. Check for third-party cookie blocking indicators + console.log('\n🔒 Checking for Tracking Protection Indicators...'); + + // Try to identify tracking-related scripts that might be blocked + const scriptInfo = await executeScript(sessionId, ` + const scripts = Array.from(document.querySelectorAll('script[src]')); + const trackerPatterns = [ + 'analytics', 'tracking', 'pixel', 'tag', 'gtm', 'segment', + 'facebook', 'google', 'doubleclick', 'adsense' + ]; + + return scripts.map(s => ({ + src: s.src, + blocked: s.readyState === 'error' || !s.complete, + isTracker: trackerPatterns.some(p => s.src.toLowerCase().includes(p)) + })).filter(s => s.isTracker || s.blocked); + `); + + if (scriptInfo.length > 0) { + console.log(` Found ${scriptInfo.length} tracker/blocked scripts:`); + for (const s of scriptInfo.slice(0, 5)) { + console.log(` - ${s.src.substring(0, 60)}... (blocked: ${s.blocked})`); + } + } + + // 7. Try setting a test cookie to verify if cookies work at all + console.log('\n🧪 Testing if cookies can be set...'); + const cookieTest = await executeScript(sessionId, ` + const testName = 'ddg_test_cookie'; + const testValue = Date.now().toString(); + + // Try to set a cookie + document.cookie = testName + '=' + testValue + '; path=/; max-age=3600'; + + // Read it back + const cookies = document.cookie.split(';'); + const found = cookies.find(c => c.trim().startsWith(testName + '=')); + + return { + set: !!found, + value: found ? found.split('=')[1] : null, + expected: testValue + }; + `); + + if (cookieTest.set) { + console.log(` ✓ First-party cookies CAN be set`); + } else { + console.log(` ❌ First-party cookies CANNOT be set - this might be the issue`); + } + + // 8. Summary and hypothesis + console.log('\n' + '='.repeat(60)); + console.log('📊 INVESTIGATION SUMMARY'); + console.log('='.repeat(60)); + + console.log('\nHypothesis: The Nintendo region modal persists because:'); + + if (cookies.length === 0) { + console.log(' 1. ❌ ALL cookies appear blocked - including first-party'); + } else if (!cookieTest.set) { + console.log(' 1. ❌ First-party cookies cannot be set dynamically'); + } else { + console.log(' 1. ✓ First-party cookies can be set'); + } + + if (storageInfo.accessible && storageInfo.count === 0) { + console.log(' 2. ⚠️ localStorage is empty - may be blocked or cleared'); + } else if (!storageInfo.accessible) { + console.log(' 2. ❌ localStorage is inaccessible'); + } else { + console.log(' 2. ✓ localStorage is accessible'); + } + + console.log('\n💡 Likely Root Cause:'); + console.log(' DuckDuckGo tracking protection is blocking the cookie or'); + console.log(' localStorage write that Nintendo uses to remember the'); + console.log(' user\'s region choice. Each page navigation causes the'); + console.log(' preference to be lost, triggering the modal again.'); + + console.log('\n🔧 Potential Fixes:'); + console.log(' 1. Add nintendo.com to a tracking protection allowlist'); + console.log(' 2. Check if a specific cookie domain is being blocked'); + console.log(' 3. Investigate if the "Stay here" button relies on'); + console.log(' third-party cookies (e.g., ec.nintendo.com)'); + + console.log('\n✅ Session kept open for further investigation'); + console.log(' Use debug-page.mjs for more exploration'); +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/investigate-nintendo-page.mjs b/scripts/investigate-nintendo-page.mjs new file mode 100644 index 0000000..dc6063f --- /dev/null +++ b/scripts/investigate-nintendo-page.mjs @@ -0,0 +1,245 @@ +#!/usr/bin/env node +/** + * Investigate Nintendo page state and try adding a product + */ + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +async function executeScript(sessionId, script) { + const response = await fetch(`${serverUrl}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + script: `return (function() { ${script} })()`, + args: [] + }) + }); + const data = await response.json(); + return data.value; +} + +async function navigateTo(sessionId, url) { + const response = await fetch(`${serverUrl}/session/${sessionId}/url`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ url }) + }); + return response.ok; +} + +async function createSession() { + const response = await fetch(`${serverUrl}/session`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + capabilities: { + alwaysMatch: { browserName: 'duckduckgo' }, + firstMatch: [{}] + } + }) + }); + const data = await response.json(); + return data.value?.sessionId || data.sessionId; +} + +async function main() { + console.log('🔍 Investigating Nintendo Page State\n'); + + const sessionId = await createSession(); + if (!sessionId) { + console.error('Failed to create session'); + process.exit(1); + } + console.log(`Session: ${sessionId}\n`); + + // Navigate to a product page directly + const productUrl = 'https://www.nintendo.com/us/store/products/the-legend-of-zelda-tears-of-the-kingdom-switch/'; + console.log(`📍 Navigating to product page: ${productUrl}`); + await navigateTo(sessionId, productUrl); + + console.log(' Waiting 10s for page load...'); + await new Promise(r => setTimeout(r, 10000)); + + // Check page state + console.log('\n📋 Page State:'); + const pageState = await executeScript(sessionId, ` + return { + url: location.href, + title: document.title, + readyState: document.readyState, + bodyLength: document.body?.innerHTML?.length || 0 + }; + `); + console.log(` URL: ${pageState.url}`); + console.log(` Title: ${pageState.title}`); + console.log(` Ready State: ${pageState.readyState}`); + console.log(` Body Length: ${pageState.bodyLength}`); + + // Check for modals + console.log('\n🔍 Checking for modals:'); + const modals = await executeScript(sessionId, ` + const dialogs = document.querySelectorAll('[role="dialog"]'); + return Array.from(dialogs).map(d => { + const style = window.getComputedStyle(d); + return { + className: d.className, + visible: style.display !== 'none' && style.visibility !== 'hidden', + ariaHidden: d.getAttribute('aria-hidden'), + hasInert: d.hasAttribute('inert'), + contentLength: d.textContent?.length || 0, + innerHTML: d.innerHTML.substring(0, 300) + }; + }); + `); + + for (let i = 0; i < modals.length; i++) { + const m = modals[i]; + console.log(` Modal ${i + 1}: class="${m.className}"`); + console.log(` visible=${m.visible}, aria-hidden=${m.ariaHidden}, inert=${m.hasInert}`); + console.log(` content length=${m.contentLength}`); + if (m.visible) { + console.log(` innerHTML: ${m.innerHTML}`); + } + } + + // Check for "Add to Cart" button + console.log('\n🛒 Looking for Add to Cart button:'); + const addToCart = await executeScript(sessionId, ` + // Try multiple selectors + const selectors = [ + 'button[data-testid*="add"]', + 'button[aria-label*="Add to Cart"]', + 'button[aria-label*="add to cart"]', + '[class*="AddToCart"]', + '[class*="add-to-cart"]', + 'button:has-text("Add to Cart")' + ]; + + // Also search by text content + const buttons = document.querySelectorAll('button'); + const addButtons = []; + + for (const btn of buttons) { + const text = (btn.textContent || '').toLowerCase(); + if (text.includes('add to cart') || text.includes('add to bag')) { + const rect = btn.getBoundingClientRect(); + const style = window.getComputedStyle(btn); + addButtons.push({ + text: btn.textContent?.trim(), + className: btn.className, + disabled: btn.disabled, + visible: rect.width > 0 && rect.height > 0 && style.display !== 'none', + rect: { x: Math.round(rect.x), y: Math.round(rect.y), width: Math.round(rect.width), height: Math.round(rect.height) } + }); + } + } + + return { addButtons, totalButtons: buttons.length }; + `); + + console.log(` Total buttons on page: ${addToCart.totalButtons}`); + console.log(` Add to Cart buttons found: ${addToCart.addButtons.length}`); + for (const btn of addToCart.addButtons) { + console.log(` - "${btn.text}" (visible=${btn.visible}, disabled=${btn.disabled})`); + console.log(` rect: ${JSON.stringify(btn.rect)}`); + } + + // Check page content + console.log('\n📄 Page Content Sample:'); + const content = await executeScript(sessionId, ` + const bodyText = document.body?.innerText || ''; + const productName = document.querySelector('h1')?.textContent; + const price = document.querySelector('[class*="price"], [class*="Price"]')?.textContent; + + return { + productName, + price, + bodyTextSample: bodyText.substring(0, 500), + hasStayHere: bodyText.includes('Stay here'), + hasSelectRegion: bodyText.includes('Select your region') || bodyText.includes('region'), + hasAddToCart: bodyText.toLowerCase().includes('add to cart') + }; + `); + + console.log(` Product Name: ${content.productName || '(not found)'}`); + console.log(` Price: ${content.price || '(not found)'}`); + console.log(` Has "Stay here": ${content.hasStayHere}`); + console.log(` Has "Select region": ${content.hasSelectRegion}`); + console.log(` Has "Add to Cart": ${content.hasAddToCart}`); + console.log(`\n Body text sample:\n ${content.bodyTextSample?.substring(0, 300)}`); + + // Try clicking the visible modal's close button if there is one + console.log('\n🖱️ Attempting to close visible modal:'); + const closeResult = await executeScript(sessionId, ` + const visibleModal = document.querySelector('.blG--[role="dialog"]'); + if (!visibleModal) { + // Try other visible modals + const dialogs = document.querySelectorAll('[role="dialog"]'); + for (const d of dialogs) { + const style = window.getComputedStyle(d); + if (style.display !== 'none' && style.visibility !== 'hidden') { + const closeBtn = d.querySelector('button[data-modalclosebutton], button[aria-label="Close"]'); + if (closeBtn) { + closeBtn.click(); + return { clicked: true, modalClass: d.className }; + } + } + } + return { clicked: false, reason: 'No visible modal with close button' }; + } + + const closeBtn = visibleModal.querySelector('button[data-modalclosebutton="true"]'); + if (closeBtn) { + closeBtn.click(); + return { clicked: true, modalClass: 'blG--' }; + } + return { clicked: false, reason: 'Close button not found' }; + `); + + console.log(` Result: ${JSON.stringify(closeResult)}`); + + // Wait and check again + await new Promise(r => setTimeout(r, 2000)); + + const afterClose = await executeScript(sessionId, ` + const dialogs = document.querySelectorAll('[role="dialog"]'); + const visible = Array.from(dialogs).filter(d => { + const style = window.getComputedStyle(d); + return style.display !== 'none' && style.visibility !== 'hidden'; + }); + return { + totalDialogs: dialogs.length, + visibleDialogs: visible.length, + visibleClasses: visible.map(d => d.className) + }; + `); + + console.log(` After close: ${afterClose.visibleDialogs} visible dialogs remaining`); + + // Check React/Next.js state + console.log('\n⚛️ React/Next.js State:'); + const reactState = await executeScript(sessionId, ` + return { + hasNextData: !!window.__NEXT_DATA__, + hasReact: !!window.React, + hasReactDOM: !!window.ReactDOM, + nextDataKeys: window.__NEXT_DATA__ ? Object.keys(window.__NEXT_DATA__) : [], + // Check if React has hydrated + hasReactRoot: !!document.querySelector('[data-reactroot]') || !!document.querySelector('#__next'), + reactRootHasChildren: document.querySelector('#__next')?.children?.length || 0 + }; + `); + + console.log(` __NEXT_DATA__: ${reactState.hasNextData}`); + console.log(` window.React: ${reactState.hasReact}`); + console.log(` window.ReactDOM: ${reactState.hasReactDOM}`); + console.log(` #__next children: ${reactState.reactRootHasChildren}`); + + console.log('\n✅ Investigation complete'); + console.log(' Session kept open for manual inspection'); +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/nintendo-basket-flow.mjs b/scripts/nintendo-basket-flow.mjs new file mode 100644 index 0000000..d1b7020 --- /dev/null +++ b/scripts/nintendo-basket-flow.mjs @@ -0,0 +1,1335 @@ +/** + * Nintendo Store Basket Flow Test + * + * Tests the e-commerce flow on nintendo.com: + * 1. Login to Nintendo Account (if credentials provided) + * 2. Navigate to Nintendo store + * 3. Search for a game + * 4. Select a game from results + * 5. Add to basket + * 6. Proceed toward checkout + * + * Works on both macOS and iOS platforms. + * + * Usage: + * node scripts/nintendo-basket-flow.mjs [--no-keep] [--screenshot] + * + * Environment: + * PLATFORM / TARGET_PLATFORM: 'macos' or 'ios' + * WEBDRIVER_SERVER_URL: WebDriver server URL (default: http://localhost:4444) + * NINTENDO_EMAIL: Nintendo Account email (required for digital purchases) + * NINTENDO_PASSWORD: Nintendo Account password + * NINTENDO_SKIP_LOGIN: Set to 'true' to skip login step + */ + +import { createRequire } from 'node:module'; +import { writeFile, mkdir, readFile } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { debugScripts, runDebug, trackDomChanges, startConsoleCapture, logConsoleLogs } from './debug-utils.mjs'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); + +// Load .env file if it exists +try { + const envPath = join(scriptsDir, '..', '.env'); + const envContent = await readFile(envPath, 'utf-8'); + for (const line of envContent.split('\n')) { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('#')) { + const [key, ...valueParts] = trimmed.split('='); + const value = valueParts.join('='); + if (key && value && !process.env[key]) { + process.env[key] = value; + } + } + } +} catch { + // .env file doesn't exist, that's fine +} + +const localRequire = createRequire(import.meta.url); + +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const { By, until } = selenium; + +// Parse CLI args +const args = process.argv.slice(2); +const keepOpen = args.includes('--keep') || !args.includes('--no-keep'); +const takeScreenshot = args.includes('--screenshot'); + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; +const platform = process.env.PLATFORM || process.env.TARGET_PLATFORM || 'unknown'; + +// Nintendo credentials +const nintendoEmail = process.env.NINTENDO_EMAIL; +const nintendoPassword = process.env.NINTENDO_PASSWORD; +const skipLogin = process.env.NINTENDO_SKIP_LOGIN === 'true'; + +// Config +const NINTENDO_STORE_URL = 'https://www.nintendo.com/en-gb/store/'; +const NINTENDO_LOGIN_URL = 'https://accounts.nintendo.com/login'; +const SEARCH_TERM = 'fallout shelter'; +const PAGE_LOAD_TIMEOUT = 15000; +const ELEMENT_WAIT_TIMEOUT = 10000; + +// Test state tracking +const testState = { + currentStep: '', + visitedUrls: [], + errors: [], +}; + +/** + * Save a screenshot to file + */ +async function saveScreenshot(driver, filename) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const screenshotBase64 = await driver.takeScreenshot(); + const screenshotBuffer = Buffer.from(screenshotBase64, 'base64'); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, screenshotBuffer); + console.log(`📸 Screenshot saved: ${filepath}`); + return filepath; + } catch (e) { + console.error('❌ Failed to take screenshot:', e.message); + return null; + } +} + +/** + * Clean up any existing WebDriver sessions + */ +async function cleanupExistingSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + const sessions = data.value || (Array.isArray(data) ? data : []); + if (Array.isArray(sessions) && sessions.length > 0) { + console.log(`Found ${sessions.length} existing session(s), cleaning up...`); + for (const session of sessions) { + try { + const sessionId = session.id || session.sessionId || session; + await fetch(`${serverUrl}/session/${sessionId}`, { method: 'DELETE' }); + console.log(` Deleted session: ${sessionId}`); + } catch { + // Ignore cleanup errors + } + } + await sleep(500); + } + } + } catch { + // Server might not be running + } +} + +/** + * Clear browser state (cookies, localStorage, sessionStorage) + * Call this at the start of each test run to ensure clean state + */ +async function clearBrowserState(driver) { + console.log('🧹 Clearing browser state...'); + try { + // Navigate to a page first so we can clear storage (can't clear on about:blank) + await driver.get(NINTENDO_STORE_URL); + await waitForPageReady(driver); + + // Delete all cookies + await driver.manage().deleteAllCookies(); + console.log(' ✓ Cleared cookies'); + + // Clear localStorage and sessionStorage + await driver.executeScript(` + try { + localStorage.clear(); + sessionStorage.clear(); + } catch (e) { + // Storage might be disabled or inaccessible + } + `); + console.log(' ✓ Cleared localStorage and sessionStorage'); + + // Also clear Nintendo-specific domains by navigating and clearing + const domains = [ + 'https://accounts.nintendo.com/', + 'https://ec.nintendo.com/', + ]; + + for (const domain of domains) { + try { + await driver.get(domain); + await driver.manage().deleteAllCookies(); + await driver.executeScript(` + try { + localStorage.clear(); + sessionStorage.clear(); + } catch (e) {} + `); + } catch { + // Domain might redirect or be inaccessible + } + } + console.log(' ✓ Cleared Nintendo account/eShop state'); + + return true; + } catch (e) { + console.warn(` ⚠️ Could not fully clear browser state: ${e.message}`); + return false; + } +} + +/** + * Sleep for specified milliseconds - use sparingly, prefer wait conditions + */ +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +/** + * Wait for page to be ready (document.readyState === 'complete' and no pending fetches) + */ +async function waitForPageReady(driver, timeout = PAGE_LOAD_TIMEOUT) { + try { + // Wait for document ready state + await driver.wait(async () => { + const readyState = await driver.executeScript('return document.readyState'); + return readyState === 'complete'; + }, timeout, 'Waiting for document.readyState === complete'); + + // Wait for React/dynamic content to settle (check for no pending mutations) + await driver.wait(async () => { + const isStable = await driver.executeScript(` + return new Promise((resolve) => { + // If no MutationObserver activity for 500ms, consider stable + let timeout = setTimeout(() => resolve(true), 500); + const observer = new MutationObserver(() => { + clearTimeout(timeout); + timeout = setTimeout(() => resolve(true), 500); + }); + observer.observe(document.body, { childList: true, subtree: true }); + // Max wait 3s for stability + setTimeout(() => { observer.disconnect(); resolve(true); }, 3000); + }); + `); + return isStable; + }, timeout, 'Waiting for DOM to stabilize'); + + return true; + } catch (e) { + console.warn(`⚠️ Page ready timeout: ${e.message}`); + return false; + } +} + +/** + * Wait for URL to change from current URL + */ +async function waitForUrlChange(driver, currentUrl, timeout = PAGE_LOAD_TIMEOUT) { + try { + await driver.wait(async () => { + const newUrl = await driver.getCurrentUrl(); + return newUrl !== currentUrl; + }, timeout, `Waiting for URL to change from ${currentUrl}`); + return true; + } catch { + return false; + } +} + +/** + * Wait for an element to appear in DOM + */ +async function waitForElementPresent(driver, locator, timeout = ELEMENT_WAIT_TIMEOUT) { + try { + return await driver.wait(until.elementLocated(locator), timeout); + } catch { + return null; + } +} + +/** + * Wait for an element to be present and visible + */ +async function waitForElement(driver, locator, timeout = ELEMENT_WAIT_TIMEOUT) { + try { + const element = await driver.wait(until.elementLocated(locator), timeout); + await driver.wait(until.elementIsVisible(element), timeout); + return element; + } catch { + return null; + } +} + +/** + * Wait for element text to contain a value + */ +async function waitForElementText(driver, locator, text, timeout = ELEMENT_WAIT_TIMEOUT) { + try { + const element = await driver.wait(until.elementLocated(locator), timeout); + await driver.wait(until.elementTextContains(element, text), timeout); + return element; + } catch { + return null; + } +} + +/** + * Try multiple selectors and return the first match + */ +async function findElementBySelectors(driver, selectors, description = 'element') { + for (const selector of selectors) { + try { + const elements = await driver.findElements(selector); + if (elements.length > 0) { + console.log(` ✓ Found ${description} with selector: ${selector.toString()}`); + return elements[0]; + } + } catch { + // Selector failed, try next + } + } + console.warn(` ✗ Could not find ${description}`); + return null; +} + +/** + * Log step progress + */ +function logStep(step, message) { + testState.currentStep = step; + console.log(`\n[${'Step ' + step}] ${message}`); +} + +/** + * Step 0: Login to Nintendo Account (if credentials provided) + */ +async function loginToNintendo(driver) { + if (skipLogin) { + console.log(' Skipping login (NINTENDO_SKIP_LOGIN=true)'); + return { success: true, skipped: true }; + } + + if (!nintendoEmail || !nintendoPassword) { + console.log(' No credentials provided - skipping login'); + console.log(' Set NINTENDO_EMAIL and NINTENDO_PASSWORD to enable login'); + return { success: true, skipped: true }; + } + + logStep(0, 'Logging in to Nintendo Account'); + + try { + // Navigate to Nintendo Account login + await driver.get(NINTENDO_LOGIN_URL); + await waitForPageReady(driver); + + // Take screenshot of login page + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-login-page-${timestamp}.png`); + + // Check if already logged in (redirected to account page) + const currentUrl = await driver.getCurrentUrl(); + if (currentUrl.includes('accounts.nintendo.com') && !currentUrl.includes('/login')) { + console.log(' ✓ Already logged in (session preserved)'); + testState.visitedUrls.push(currentUrl); + return { success: true, skipped: false, alreadyLoggedIn: true }; + } + + // Find and fill email - Nintendo uses placeholder "Email address/Sign-In ID" + const emailInput = await waitForElement( + driver, + By.css('input[placeholder*="Email"], input[placeholder*="Sign-In"], input[name="loginId"], input#loginId'), + ELEMENT_WAIT_TIMEOUT + ); + + if (!emailInput) { + console.log(' ✗ Could not find email input'); + return { success: false, reason: 'Email input not found' }; + } + + await emailInput.clear(); + await emailInput.sendKeys(nintendoEmail); + console.log(' ✓ Entered email'); + + // Find and fill password + const passwordInput = await waitForElement( + driver, + By.css('input[type="password"], input[name="password"], input#password'), + ELEMENT_WAIT_TIMEOUT + ); + + if (!passwordInput) { + console.log(' ✗ Could not find password input'); + return { success: false, reason: 'Password input not found' }; + } + + await passwordInput.clear(); + await passwordInput.sendKeys(nintendoPassword); + console.log(' ✓ Entered password'); + + // Find and click login button + const loginButton = await findElementBySelectors( + driver, + [ + By.css('button[type="submit"]'), + By.xpath('//button[contains(text(), "Sign in")]'), + By.xpath('//button[contains(text(), "Log in")]'), + By.css('#btn-signin'), + ], + 'login button' + ); + + if (!loginButton) { + console.log(' ✗ Could not find login button'); + return { success: false, reason: 'Login button not found' }; + } + + await loginButton.click(); + console.log(' ✓ Clicked login button'); + + // Wait for login to complete - either redirect or error + await waitForPageReady(driver); + + // Check if login was successful or needs 2FA + let postLoginUrl = await driver.getCurrentUrl(); + + // Check for 2FA/email challenge + if (postLoginUrl.includes('challenge/email') || postLoginUrl.includes('challenge/')) { + console.log(' ⏳ 2FA verification required - waiting for manual input...'); + console.log(' 📧 Please check your email and enter the verification code'); + + // Wait up to 5 minutes for 2FA to be completed + const maxWaitTime = 5 * 60 * 1000; // 5 minutes + const pollInterval = 2000; // Check every 2 seconds + const startTime = Date.now(); + + while (Date.now() - startTime < maxWaitTime) { + await sleep(pollInterval); + postLoginUrl = await driver.getCurrentUrl(); + + // Check if we've moved past the challenge page + if (!postLoginUrl.includes('challenge/')) { + console.log(' ✓ 2FA verification completed!'); + break; + } + + // Check if a code input exists and has been filled + try { + const codeInput = await driver.findElement(By.css('input[type="text"], input[type="number"], input[inputmode="numeric"]')); + const value = await codeInput.getAttribute('value'); + if (value && value.length >= 4) { + // Wait a moment for form submission + console.log(` ✓ Code entered (${value.length} digits), waiting for submission...`); + await sleep(3000); + } + } catch { + // Input not found or not accessible + } + + // Log waiting status every 30 seconds + const elapsed = Math.floor((Date.now() - startTime) / 1000); + if (elapsed % 30 === 0 && elapsed > 0) { + console.log(` ⏳ Still waiting for 2FA... (${elapsed}s elapsed)`); + } + } + + // Check final URL + postLoginUrl = await driver.getCurrentUrl(); + if (postLoginUrl.includes('challenge/')) { + console.log(' ⚠️ 2FA timeout - verification not completed within 5 minutes'); + return { success: false, reason: '2FA timeout' }; + } + } + + // If we're still on login page, check for errors + if (postLoginUrl.includes('accounts.nintendo.com/login')) { + const errorMessage = await findElementBySelectors( + driver, + [ + By.css('.error-message'), + By.css('[data-testid="error"]'), + By.xpath('//*[contains(@class, "error")]'), + ], + 'error message' + ); + + if (errorMessage) { + const errorText = await errorMessage.getText().catch(() => 'Unknown error'); + console.log(` ✗ Login failed: ${errorText}`); + return { success: false, reason: errorText }; + } + } + + // Take screenshot after login attempt + await saveScreenshot(driver, `nintendo-after-login-${timestamp}.png`); + + console.log(` ✓ Login completed, now at: ${postLoginUrl}`); + testState.visitedUrls.push(postLoginUrl); + + return { success: true, skipped: false }; + + } catch (e) { + console.error(` ✗ Login error: ${e.message}`); + return { success: false, reason: e.message }; + } +} + +/** + * Step 1: Navigate to Nintendo Store + */ +async function navigateToStore(driver) { + logStep(1, 'Navigating to Nintendo Store'); + + await driver.get(NINTENDO_STORE_URL); + await waitForPageReady(driver); + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` URL: ${currentUrl}`); + + const title = await driver.getTitle(); + console.log(` Title: ${title}`); + + return true; +} + +/** + * Step 2: Search for a game + */ +async function searchForGame(driver, searchTerm) { + logStep(2, `Searching for "${searchTerm}"`); + + // Nintendo uses different search UI for mobile vs desktop + // Try clicking search button first (mobile nav) + const searchButton = await findElementBySelectors( + driver, + [ + By.css('button[aria-label="Search"]'), + By.css('#search'), + By.css('[data-testid="MagnifyingGlassIcon"]'), + By.xpath('//svg[@data-testid="MagnifyingGlassIcon"]/..') + ], + 'search button' + ); + + if (searchButton) { + try { + await searchButton.click(); + // Wait for search input to appear after clicking search button + await waitForElementPresent(driver, By.css('input[name="q"], input[aria-label*="Search"], input[placeholder*="Search"]'), 5000); + } catch { + console.log(' Search button click failed, trying direct input'); + } + } + + // Find and fill search input + const searchInput = await findElementBySelectors( + driver, + [ + By.css('input[name="q"]'), + By.css('input[aria-label*="Search"]'), + By.css('input[placeholder*="Search"]'), + By.css('.sc-ax1lsj-1'), + ], + 'search input' + ); + + if (!searchInput) { + // Alternative: Navigate directly to search results + console.log(' Navigating directly to search results...'); + await driver.get(`https://www.nintendo.com/en-gb/Search/Search-702256.html?q=${encodeURIComponent(searchTerm)}`); + await waitForPageReady(driver); + return true; + } + + try { + const urlBeforeSearch = await driver.getCurrentUrl(); + await searchInput.clear(); + await searchInput.sendKeys(searchTerm); + + // Submit search + await searchInput.sendKeys(selenium.Key.ENTER); + + // Wait for URL to change (indicates search submitted) or for search results to appear + const urlChanged = await waitForUrlChange(driver, urlBeforeSearch, 10000); + if (urlChanged) { + await waitForPageReady(driver); + } else { + // URL didn't change, might be SPA - wait for results to appear + await waitForElementPresent(driver, By.css('a[href*="/store/products/"]'), 10000); + } + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` Search submitted, URL: ${currentUrl}`); + return true; + } catch (e) { + console.error(` ✗ Search failed: ${e.message}`); + // Fallback to direct URL + await driver.get(`https://www.nintendo.com/en-gb/Search/Search-702256.html?q=${encodeURIComponent(searchTerm)}`); + await waitForPageReady(driver); + return true; + } +} + +/** + * Step 3: Select a game and try to add to cart + * + * Nintendo digital games show "Direct download" which requires login. + * Some games have physical editions available which use "Add to Cart". + * We'll try to select a physical edition if available. + */ +async function selectGameFromResults(driver) { + logStep(3, 'Selecting a game'); + + // Go to Fallout Shelter - a free game that should have a simpler download flow + const gameUrl = 'https://www.nintendo.com/en-gb/Games/Nintendo-Switch-download-software/Fallout-Shelter-1387761.html'; + console.log(' Navigating to Fallout Shelter (free game)...'); + + await driver.get(gameUrl); + await waitForPageReady(driver); + + // Wait for the download link to appear (React hydration) + console.log(' Waiting for download button...'); + const purchaseButton = await waitForElement( + driver, + By.css('a[href*="title_purchase"]'), + 15000 + ); + + // Take screenshot after element appears + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-game-page-${timestamp}.png`); + + if (purchaseButton) { + const buttonText = await purchaseButton.getText().catch(() => 'unknown'); + console.log(` ✓ Found download button: "${buttonText}"`); + } else { + console.log(' ✗ Could not find download button on game page'); + } + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` Now at: ${currentUrl}`); + + return true; +} + +/** + * Step 4: Add game to basket + */ +async function addToBasket(driver) { + logStep(4, 'Adding game to basket'); + + // Wait for page to be ready first + console.log(' Waiting for page to be ready...'); + await waitForPageReady(driver); + + // === DIAGNOSTIC: Use debug-utils to analyze the page === + console.log('\n 📊 DEBUG: Running page diagnostics...'); + + // Check for any modals that might be blocking + try { + const modals = await runDebug(driver, 'detectModals'); + if (modals.hasModal) { + console.log(` ⚠️ Modal detected: ${modals.modals.length} modal(s) found`); + modals.modals.forEach(m => console.log(` - [${m.selector}] "${m.text?.substring(0, 50)}..."`)); + + // Try to dismiss cookie/GDPR modals + const dismissButtons = await driver.findElements(By.xpath( + '//button[contains(text(), "Accept") or contains(text(), "OK") or contains(text(), "Got it") or contains(text(), "Continue") or contains(text(), "Agree")]' + )); + if (dismissButtons.length > 0) { + console.log(' 🔄 Attempting to dismiss modal...'); + await dismissButtons[0].click(); + await sleep(1000); + await waitForPageReady(driver); + } + } else { + console.log(' ✓ No blocking modals detected'); + } + } catch (e) { + console.log(` Modal check error: ${e.message}`); + } + + // Get all actionable elements and find the download button + try { + const actionableElements = await runDebug(driver, 'actionableElements'); + const downloadButtons = actionableElements.filter(e => + e.text?.toLowerCase().includes('download') || + e.text?.toLowerCase().includes('free') + ); + console.log(`\n 📊 DEBUG: Found ${downloadButtons.length} download-related actionable element(s):`); + downloadButtons.forEach(e => { + console.log(` - <${e.tag}> [${e.selector}] "${e.text}" visible=${e.visible} disabled=${e.disabled || false}`); + if (e.href) console.log(` href: ${e.href}`); + console.log(` rect: ${JSON.stringify(e.rect)}`); + }); + } catch (e) { + console.log(` Actionable elements check error: ${e.message}`); + } + + // Find elements by text "Free download" + try { + const foundElements = await runDebug(driver, 'findByText', 'Free download', false); + console.log(`\n 📊 DEBUG: Elements containing "Free download": ${foundElements.length}`); + foundElements.forEach(e => console.log(` - <${e.tag}> [${e.selector}] "${e.text?.substring(0, 50)}" visible=${e.visible}`)); + } catch (e) { + console.log(` findByText error: ${e.message}`); + } + + // Start console capture to catch any JS errors during click + console.log('\n 📋 Starting console capture for click...'); + await startConsoleCapture(driver); + + // === END DIAGNOSTIC === + + // Debug: list all download-related elements (original debug) + try { + const downloadElements = await driver.executeScript(` + const results = []; + + // Check buttons + const buttons = document.querySelectorAll('button'); + buttons.forEach(b => { + const text = (b.textContent || '').trim(); + if (text.toLowerCase().includes('download') || text.toLowerCase().includes('cart')) { + results.push({ tag: 'button', text: text.substring(0, 50), href: null, outerHTML: b.outerHTML.substring(0, 200) }); + } + }); + + // Check links + const links = document.querySelectorAll('a'); + links.forEach(l => { + const text = (l.textContent || '').trim(); + if (text.toLowerCase().includes('download') || l.href?.includes('ec.nintendo') || l.href?.includes('title_purchase')) { + results.push({ tag: 'a', text: text.substring(0, 50), href: l.href, outerHTML: l.outerHTML.substring(0, 200) }); + } + }); + + return results; + `); + if (downloadElements && downloadElements.length > 0) { + console.log(`\n 📊 DEBUG: Raw download element scan - ${downloadElements.length} element(s):`); + downloadElements.forEach(e => { + console.log(` - <${e.tag}> "${e.text}" ${e.href || ''}`); + console.log(` HTML: ${e.outerHTML}`); + }); + } else { + console.log(' No download elements found on page'); + } + } catch { + // Debug failed, continue + } + + // Find the main purchase/download element + // UK Nintendo site uses buttons (not links) for "Free download" + // US site uses links to ec.nintendo.com with title_purchase + const purchaseButton = await findElementBySelectors( + driver, + [ + // PRIORITY 1: Button with download text (UK site) + By.xpath('//button[contains(normalize-space(), "Free download")]'), + By.xpath('//button[contains(normalize-space(), "Direct download")]'), + By.xpath('//a[contains(normalize-space(), "Free download") and not(contains(@href, "#"))]'), + // PRIORITY 2: Link to Nintendo eShop with title_purchase (US site) + By.css('a[href*="ec.nintendo.com"][href*="title_purchase"]'), + By.css('a[href*="title_purchase"]'), + // PRIORITY 3: Links with download icon + By.xpath('//a[.//svg[@data-testid="DownloadIcon"]]'), + // PRIORITY 4: Physical cart buttons + By.xpath('//button[contains(normalize-space(), "Add to cart")]'), + ], + 'purchase/download button' + ); + + // If standard selectors didn't work, try finding via executeScript + let buttonToUse = purchaseButton; + if (!buttonToUse) { + console.log(' Trying to find link/button via executeScript...'); + await sleep(1000); // Small delay to let WebDriver recover + try { + buttonToUse = await driver.executeScript(` + // PRIORITY 1: Button with download text (UK site uses buttons) + const buttons = document.querySelectorAll('button'); + for (const btn of buttons) { + const text = (btn.textContent || btn.innerText || '').toLowerCase(); + if (text.includes('free download') || text.includes('direct download')) { + return btn; + } + } + + // PRIORITY 2: Link to ec.nintendo.com with title_purchase (US site) + const purchaseLink = document.querySelector('a[href*="ec.nintendo.com"][href*="title_purchase"]'); + if (purchaseLink) return purchaseLink; + + // PRIORITY 3: Link with title_purchase in URL + const titlePurchaseLink = document.querySelector('a[href*="title_purchase"]'); + if (titlePurchaseLink) return titlePurchaseLink; + + // PRIORITY 4: Look for link with download icon + const downloadIconLink = document.querySelector('a svg[data-testid="DownloadIcon"]'); + if (downloadIconLink) return downloadIconLink.closest('a'); + + // PRIORITY 5: Add to cart buttons + for (const btn of buttons) { + const text = (btn.textContent || btn.innerText || '').toLowerCase(); + if (text.includes('add to cart')) { + return btn; + } + } + + // FALLBACK: Links with download text (excluding wishlist/support links) + const links = document.querySelectorAll('a'); + for (const link of links) { + const text = (link.textContent || link.innerText || '').toLowerCase(); + const href = link.getAttribute('href') || ''; + if ((text.includes('free download') || text.includes('direct download')) && + !href.includes('wishlist') && !href.includes('support')) { + return link; + } + } + return null; + `); + if (buttonToUse) { + console.log(' ✓ Found element via script'); + } + } catch (e) { + console.log(` Could not find via script: ${e.message}`); + } + } + + if (!buttonToUse) { + console.log(' ℹ️ No purchase button found'); + return { success: false, reason: 'No purchase button found' }; + } + + // Get button text (try executeScript first since getText() may not work) + let buttonText = ''; + try { + buttonText = await driver.executeScript('return (arguments[0].textContent || arguments[0].innerText || "").trim()', buttonToUse); + } catch { + buttonText = await buttonToUse.getText().catch(() => ''); + } + console.log(` Found button: "${buttonText}"`); + + // Check if this is a free or paid digital download + const isFreeDownload = buttonText.toLowerCase().includes('free'); + const isDigitalDownload = buttonText.toLowerCase().includes('download'); + + if (isFreeDownload) { + console.log(' ℹ️ This is a free game - may still require Nintendo Account'); + } else if (isDigitalDownload) { + console.log(' ℹ️ This is a paid digital game - requires Nintendo Account login'); + } + + try { + // Get the href from the link to navigate directly (clicks may open new windows) + let targetUrl = null; + try { + targetUrl = await buttonToUse.getAttribute('href'); + console.log(` Link href: ${targetUrl}`); + } catch { + // Not a link, will just click + } + + console.log(` Clicking "${buttonText}"...`); + + // === DIAGNOSTIC: Track DOM changes during click === + console.log('\n 📊 DEBUG: Starting DOM tracker before click...'); + await runDebug(driver, 'domTracker', 'start'); + + // Capture URL before click + const urlBeforeClick = await driver.getCurrentUrl(); + console.log(` URL before click: ${urlBeforeClick}`); + + // Try JavaScript click first (more reliable for JS-based buttons) + try { + await driver.executeScript('arguments[0].click()', buttonToUse); + console.log(' ✓ JavaScript click executed'); + } catch (jsClickErr) { + console.log(` JS click failed (${jsClickErr.message}), trying native click...`); + // Fallback to native WebDriver click + try { + await buttonToUse.click(); + console.log(' ✓ Native WebDriver click executed'); + } catch (nativeClickErr) { + console.log(` ✗ Native click also failed: ${nativeClickErr.message}`); + } + } + + // Wait a moment for any JavaScript to execute + await sleep(2000); + + // === DIAGNOSTIC: Capture what happened after click === + const urlAfterClickImmediate = await driver.getCurrentUrl(); + console.log(` URL immediately after click: ${urlAfterClickImmediate}`); + + // Get DOM changes + const domChanges = await runDebug(driver, 'domTracker', 'stop'); + console.log(`\n 📊 DEBUG: DOM Changes after click:`); + console.log(` - Added elements: ${domChanges.added?.length || 0}`); + console.log(` - Removed elements: ${domChanges.removed?.length || 0}`); + console.log(` - Attribute changes: ${domChanges.attributes?.length || 0}`); + + if (domChanges.added?.length > 0) { + console.log(' Added elements:'); + domChanges.added.slice(0, 5).forEach(e => console.log(` + <${e.tag}> ${e.id ? '#'+e.id : ''} ${e.classes ? '.'+e.classes.split(' ')[0] : ''} "${e.text?.substring(0, 30)}"`)); + } + if (domChanges.attributes?.length > 0) { + console.log(' Attribute changes:'); + domChanges.attributes.slice(0, 5).forEach(e => console.log(` ~ <${e.tag}> ${e.attr}=${e.newValue?.substring(0, 30)}`)); + } + + // Get console logs from during the click + await logConsoleLogs(driver, { stop: true, levels: ['error', 'warn', 'exception', 'rejection'] }); + + // === END DIAGNOSTIC === + + // If we have a direct href to ec.nintendo.com, navigate there + if (targetUrl && targetUrl.includes('ec.nintendo.com')) { + console.log(' Navigating directly to Nintendo eShop...'); + await driver.get(targetUrl); + await waitForPageReady(driver); + } + + // Take a debug screenshot to see what happened after clicking + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-after-add-to-cart-${timestamp}.png`); + + // Wait for one of these signals that add to cart worked: + // 1. A modal appears with cart options + // 2. Cart badge/count updates + // 3. Button text changes (e.g., to "Added" or "In Cart") + // 4. Login prompt appears (needs account) + + // Check if we were redirected to re-authentication or login page + const urlAfterClick = await driver.getCurrentUrl(); + if (urlAfterClick.includes('reauthenticate') || urlAfterClick.includes('Re-enter')) { + console.log(' ⏳ Re-authentication required - entering password...'); + + // Find and fill the password field + const reAuthPasswordInput = await waitForElement( + driver, + By.css('input[type="password"]'), + ELEMENT_WAIT_TIMEOUT + ); + + if (reAuthPasswordInput && nintendoPassword) { + await reAuthPasswordInput.clear(); + await reAuthPasswordInput.sendKeys(nintendoPassword); + console.log(' ✓ Entered password'); + + // Click OK/Submit button + const okButton = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(text(), "OK")]'), + By.xpath('//button[contains(text(), "Submit")]'), + By.css('button[type="submit"]'), + ], + 'OK button' + ); + + if (okButton) { + await okButton.click(); + console.log(' ✓ Clicked OK'); + await waitForPageReady(driver); + + // Check for regional modal and dismiss it + await sleep(2000); + const regionModal = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(text(), "Continue")]'), + By.xpath('//button[contains(text(), "OK")]'), + By.xpath('//button[contains(text(), "Accept")]'), + By.css('[data-testid="modal-close"]'), + By.css('button[aria-label="Close"]'), + ], + 'regional modal dismiss button' + ); + + if (regionModal) { + console.log(' ✓ Found regional modal, dismissing...'); + await regionModal.click(); + await waitForPageReady(driver); + } + + // Take screenshot of result + const ts = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-after-reauth-${ts}.png`); + + const finalUrl = await driver.getCurrentUrl(); + console.log(` Now at: ${finalUrl}`); + + // Check if we reached the eShop/confirmation + if (finalUrl.includes('ec.nintendo.com')) { + console.log(' ✓ Reached Nintendo eShop!'); + return { success: true, isDigital: true, reachedEshop: true }; + } + } + } + } + + if (urlAfterClick.includes('accounts.nintendo.com/login') || urlAfterClick.includes('signin')) { + console.log(' ✓ Redirected to Nintendo Account login page'); + console.log(` URL: ${urlAfterClick}`); + return { success: true, isDigital: true, requiresLogin: true }; + } + + // Check if a login modal/dialog appeared + const loginModal = await findElementBySelectors( + driver, + [ + By.xpath('//div[@role="dialog"]//*[contains(text(), "Sign in") or contains(text(), "Log in")]'), + By.xpath('//div[contains(@class, "modal") or contains(@class, "Modal")]//*[contains(text(), "Sign in") or contains(text(), "Log in")]'), + By.css('[data-testid="login-modal"]'), + By.css('[role="dialog"][aria-label*="Sign in"]'), + ], + 'login modal' + ); + + if (loginModal) { + console.log(' ✓ Login modal appeared - digital purchase requires Nintendo Account'); + return { success: true, isDigital: true, requiresLogin: true }; + } + + // Try to detect modal appearing + const modalSelectors = [ + By.xpath('//div[contains(@class, "modal") or contains(@class, "Modal") or contains(@class, "dialog") or contains(@class, "Dialog")]//button'), + By.xpath('//div[contains(@class, "modal") or contains(@class, "Modal")]//a[contains(@href, "cart")]'), + By.xpath('//*[contains(text(), "View cart") or contains(text(), "View Cart") or contains(text(), "added to cart") or contains(text(), "Added to cart")]'), + By.css('[role="dialog"] button'), + By.css('[role="dialog"] a[href*="cart"]'), + ]; + + let modalFound = false; + for (const selector of modalSelectors) { + const modalElement = await waitForElementPresent(driver, selector, 5000); + if (modalElement) { + modalFound = true; + console.log(' ✓ Cart confirmation detected'); + + // Try to find and click "View Cart" or similar + const viewCartButton = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(text(), "View cart") or contains(text(), "View Cart")]'), + By.xpath('//a[contains(text(), "View cart") or contains(text(), "View Cart")]'), + By.xpath('//a[contains(@href, "/cart")]'), + ], + 'View Cart button' + ); + + if (viewCartButton) { + console.log(' ✓ Found View Cart button, clicking...'); + try { + await viewCartButton.click(); + await waitForPageReady(driver); + } catch { + console.log(' View Cart click failed, will navigate directly'); + } + } + break; + } + } + + if (!modalFound) { + // Check if cart badge updated (indicates item was added) + const cartBadge = await findElementBySelectors( + driver, + [ + By.xpath('//a[@aria-label="Cart"]//span[string-length(text()) > 0]'), + By.css('[data-testid="cart-count"]'), + By.css('.cart-count'), + ], + 'cart badge' + ); + + if (cartBadge) { + try { + const badgeText = await cartBadge.getText(); + if (badgeText && badgeText !== '0') { + console.log(` ✓ Cart badge shows: ${badgeText}`); + } + } catch { + // Badge exists but couldn't get text + } + } else { + console.log(' No modal or cart badge detected - checking cart page directly'); + } + } + + // Check for cart confirmation or navigate to cart + const currentUrl = await driver.getCurrentUrl(); + console.log(` Current URL after click: ${currentUrl}`); + + // Try to verify item was added by checking cart badge/count + const cartBadge = await findElementBySelectors( + driver, + [ + By.css('[data-testid="cart-count"]'), + By.css('.cart-count'), + By.css('[aria-label*="Cart"] span'), + By.xpath('//a[@aria-label="Cart"]//span[number(text()) > 0]'), + ], + 'cart badge' + ); + + if (cartBadge) { + try { + const badgeText = await cartBadge.getText(); + console.log(` Cart badge shows: ${badgeText}`); + } catch { + // Badge exists but couldn't get text + } + } + + return { success: true, isDigital: false }; + } catch (e) { + console.error(` ✗ Failed to add to cart: ${e.message}`); + return { success: false, reason: e.message }; + } +} + +/** + * Step 5: Navigate to basket/cart + * Note: UK Nintendo site uses Nintendo eShop for digital purchases, no web cart + */ +async function navigateToCart(driver) { + logStep(5, 'Navigating to cart'); + + // UK Nintendo site doesn't have a web cart for digital games + // Digital purchases go directly through Nintendo eShop (ec.nintendo.com) + // Check if we're already on the eShop + const currentUrl = await driver.getCurrentUrl(); + if (currentUrl.includes('ec.nintendo.com')) { + console.log(' ✓ Already on Nintendo eShop'); + testState.visitedUrls.push(currentUrl); + return true; + } + + // Try clicking cart icon (physical store only) + const cartLink = await findElementBySelectors( + driver, + [ + By.css('a[aria-label="Cart"]'), + By.css('a[aria-label="Shopping cart"]'), + By.css('a[href*="/cart"]'), + By.xpath('//*[@data-testid="ShoppingCartIcon"]/..'), + ], + 'cart link' + ); + + if (cartLink) { + try { + const href = await cartLink.getAttribute('href'); + console.log(` Cart link: ${href}`); + await cartLink.click(); + await waitForPageReady(driver); + } catch { + console.log(' ℹ️ UK Nintendo site uses eShop for digital games (no web cart)'); + } + } else { + console.log(' ℹ️ UK Nintendo site uses eShop for digital games (no web cart)'); + } + + const finalUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(finalUrl); + console.log(` Now at: ${finalUrl}`); + + return true; +} + +/** + * Step 6: Proceed to checkout + */ +async function proceedToCheckout(driver) { + logStep(6, 'Proceeding to checkout'); + + // Wait for cart page to load - look for either cart items or empty cart message + await waitForElementPresent( + driver, + By.xpath('//*[contains(text(), "cart") or contains(text(), "Cart") or contains(text(), "Checkout")]'), + ELEMENT_WAIT_TIMEOUT + ); + + // Check if cart has items + const emptyCartMessage = await findElementBySelectors( + driver, + [ + By.xpath('//*[contains(text(), "cart is empty")]'), + By.xpath('//*[contains(text(), "Cart is empty")]'), + By.xpath('//*[contains(text(), "no items")]'), + ], + 'empty cart message' + ); + + if (emptyCartMessage) { + console.log(' ℹ️ Cart is empty - Add to Cart may have required login'); + return { success: false, reason: 'Cart is empty' }; + } + + // Look for checkout button + const checkoutButton = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(text(), "Checkout")]'), + By.xpath('//button[contains(text(), "Proceed")]'), + By.xpath('//a[contains(text(), "Checkout")]'), + By.css('button[data-testid="checkout"]'), + By.css('a[href*="checkout"]'), + ], + 'checkout button' + ); + + if (!checkoutButton) { + console.log(' ℹ️ No checkout button found'); + return { success: false, reason: 'No checkout button found' }; + } + + try { + console.log(' Clicking checkout...'); + await checkoutButton.click(); + await waitForPageReady(driver); + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` Now at: ${currentUrl}`); + + // Check if we hit a login wall + if (currentUrl.includes('login') || currentUrl.includes('signin') || currentUrl.includes('accounts')) { + console.log(' ℹ️ Reached login page (checkout requires authentication)'); + return { success: true, hitLogin: true }; + } + + return { success: true, hitLogin: false }; + } catch (e) { + console.error(` ✗ Failed to proceed to checkout: ${e.message}`); + return { success: false, reason: e.message }; + } +} + +/** + * Print test summary + */ +function printSummary() { + console.log('\n' + '='.repeat(50)); + console.log('📊 TEST SUMMARY'); + console.log('='.repeat(50)); + console.log(`Platform: ${platform}`); + console.log(`Last step: ${testState.currentStep}`); + console.log(`URLs visited: ${testState.visitedUrls.length}`); + testState.visitedUrls.forEach((url, idx) => { + console.log(` ${idx + 1}. ${url}`); + }); + if (testState.errors.length > 0) { + console.log(`Errors: ${testState.errors.length}`); + testState.errors.forEach((err) => console.log(` - ${err}`)); + } + console.log('='.repeat(50)); +} + +// ============ Main Test Flow ============ + +await cleanupExistingSessions(); + +let driver; +try { + console.log('\n🎮 Nintendo Store Basket Flow Test'); + console.log(`Platform: ${platform}`); + console.log(`WebDriver: ${serverUrl}`); + console.log(`Login: ${nintendoEmail ? `${nintendoEmail.substring(0, 3)}***` : 'Not configured (guest mode)'}\n`); + + driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities({ browserName: 'duckduckgo' }) + .build(); + + // Platform check for macOS + if (platform === 'macos') { + try { + const automationCheck = await fetch('http://localhost:8788/getUrl'); + if (!automationCheck.ok) { + console.warn('⚠️ Warning: macOS automation server (port 8788) not responding'); + } + } catch { + console.warn('⚠️ Warning: macOS automation server (port 8788) not accessible'); + } + } + + // Clear browser state before each run + await clearBrowserState(driver); + + // Run test steps + const loginResult = await loginToNintendo(driver); + if (!loginResult.success) { + console.log(`\n⚠️ Login failed: ${loginResult.reason}`); + console.log(' Continuing with guest flow (digital purchases will require login)'); + } + + await navigateToStore(driver); + await searchForGame(driver, SEARCH_TERM); + await selectGameFromResults(driver); + const addResult = await addToBasket(driver); + await navigateToCart(driver); + const checkoutResult = await proceedToCheckout(driver); + + // Take final screenshot + if (takeScreenshot) { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-basket-${timestamp}.png`); + } + + // Print summary + printSummary(); + + if (addResult.success && checkoutResult.success) { + console.log('\n✅ Test completed successfully!'); + if (checkoutResult.hitLogin) { + console.log(' (Stopped at login page as expected for guest checkout)'); + } + } else { + console.log('\n⚠️ Test completed with limitations:'); + if (!addResult.success) console.log(` - Add to cart: ${addResult.reason}`); + if (!checkoutResult.success) console.log(` - Checkout: ${checkoutResult.reason}`); + } + + if (keepOpen) { + console.log('\n✅ Browser will stay open. Press Ctrl+C to quit.'); + await new Promise(() => {}); + } else { + console.log('\n⚠️ Browser will close automatically. Use --keep to keep it open.'); + } +} catch (error) { + console.error('\n❌ Test Error:', error.message); + testState.errors.push(error.message); + + if (takeScreenshot && driver) { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-error-${timestamp}.png`); + } + + printSummary(); + + if (error.message.includes('Session is already started') || error.message.includes('SessionNotCreatedError')) { + console.error('\n💡 Tip: Restart the driver:'); + console.error(' 1. Stop WebDriver server (Ctrl+C)'); + console.error(' 2. Run: npm run driver:macos (or driver:ios)'); + console.error(' 3. Run this test again'); + } + process.exit(1); +} finally { + if (driver && !keepOpen) { + try { + await driver.quit(); + } catch { + // Ignore quit errors + } + } +} diff --git a/scripts/nintendo-unprotected-test.mjs b/scripts/nintendo-unprotected-test.mjs new file mode 100644 index 0000000..7086bc9 --- /dev/null +++ b/scripts/nintendo-unprotected-test.mjs @@ -0,0 +1,429 @@ +#!/usr/bin/env node +/** + * Nintendo Unprotected Test + * + * Tests Nintendo cart page with unprotectedTemporary config to verify: + * 1. Trackers are ALLOWED (not blocked) when nintendo.com is in unprotectedTemporary + * 2. The cart page loads correctly without protection interference + * + * Usage: + * node scripts/nintendo-unprotected-test.mjs [--compare] [--verbose] + * + * Options: + * --compare Run both protected and unprotected modes for comparison + * --verbose Show detailed output + * + * Environment: + * PLATFORM=macos|ios - Target platform (default: macos) + * WEBDRIVER_URL=http://localhost:4444 - WebDriver server URL + */ + +import { createRequire } from 'node:module'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { execSync } from 'node:child_process'; + +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +const VERBOSE = process.argv.includes('--verbose'); +const COMPARE_MODE = process.argv.includes('--compare'); + +const WEBDRIVER_URL = process.env.WEBDRIVER_URL || 'http://localhost:4444'; +const PLATFORM = process.env.PLATFORM || 'macos'; + +// Nintendo test URLs +const NINTENDO_CART_URL = 'https://www.nintendo.com/us/cart/'; +const NINTENDO_STORE_URL = 'https://www.nintendo.com/us/store/'; + +// Unprotected config path +const UNPROTECTED_CONFIG_PATH = path.resolve(__dirname, '../test-configs/nintendo-unprotected-full.json'); + +// Known trackers that Nintendo uses +const NINTENDO_TRACKERS = [ + 'https://logx.optimizely.com/v1/events', + 'https://www.google-analytics.com/collect', + 'https://www.googletagmanager.com/gtm.js', + 'https://connect.facebook.net/en_US/fbevents.js', + 'https://bat.bing.com/bat.js' +]; + +function log(...args) { + console.log(`[${new Date().toISOString()}]`, ...args); +} + +function verbose(...args) { + if (VERBOSE) console.log(` [verbose]`, ...args); +} + +/** + * Probe tracker URLs to determine blocking status + */ +async function probeTrackers(driver, trackerUrls) { + const results = { blocked: [], allowed: [], errors: [] }; + + for (const url of trackerUrls) { + const testScript = ` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); + xhr.timeout = 3000; + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `; + + try { + const result = await driver.executeScript(testScript); + if (result && result.status === 'allowed') { + results.allowed.push({ url, httpStatus: result.code }); + } else { + results.blocked.push({ url, error: result?.error || 'unknown' }); + } + } catch (e) { + results.errors.push({ url, error: e.message }); + } + } + + return results; +} + +/** + * Get console errors from the page + */ +async function getConsoleErrors(driver) { + try { + const logs = await driver.manage().logs().get('browser'); + return logs.filter(l => l.level.name === 'SEVERE' || l.level.name === 'WARNING'); + } catch { + return []; + } +} + +/** + * Save screenshot + */ +async function saveScreenshot(driver, filename) { + const screenshotDir = path.join(__dirname, '../screenshots'); + if (!fs.existsSync(screenshotDir)) { + fs.mkdirSync(screenshotDir, { recursive: true }); + } + + try { + const screenshot = await driver.takeScreenshot(); + const filepath = path.join(screenshotDir, filename); + fs.writeFileSync(filepath, screenshot, 'base64'); + log(`📸 Screenshot: ${filepath}`); + return filepath; + } catch (e) { + log(`Screenshot failed: ${e.message}`); + return null; + } +} + +/** + * Restart WebDriver server (needed because DDG WebDriver is single-session) + */ +async function restartWebDriver() { + try { + execSync('pkill -9 -f ddgdriver 2>/dev/null || true', { timeout: 5000 }); + } catch {} + + await new Promise(resolve => setTimeout(resolve, 1000)); + + const { spawn } = await import('node:child_process'); + const scriptPath = path.resolve(__dirname, 'apple-webdriver.sh'); + + const child = spawn('bash', [scriptPath, 'driver', 'macos'], { + detached: true, + stdio: 'ignore', + env: { + ...process.env, + DERIVED_DATA_PATH: path.resolve(__dirname, '../../apple-browsers/DerivedData'), + MACOS_APP_PATH: path.resolve(__dirname, '../../apple-browsers/DerivedData/Build/Products/Debug/DuckDuckGo.app'), + TARGET_PLATFORM: 'macos' + } + }); + child.unref(); + + // Wait for WebDriver to be ready + for (let i = 0; i < 30; i++) { + try { + const response = await fetch(`${WEBDRIVER_URL}/status`); + if (response.ok) { + verbose(`WebDriver ready after ${i + 1} attempts`); + return; + } + } catch {} + await new Promise(resolve => setTimeout(resolve, 500)); + } + + throw new Error('WebDriver failed to start'); +} + +/** + * Run a single test iteration + */ +async function runTest(useUnprotectedConfig, label) { + log(''); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log(`🧪 ${label}`); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + + const capabilities = { browserName: 'duckduckgo' }; + + if (useUnprotectedConfig) { + capabilities['ddg:privacyConfigPath'] = UNPROTECTED_CONFIG_PATH; + log(`Config: ${UNPROTECTED_CONFIG_PATH}`); + } else { + log(`Config: Default (protected)`); + } + + let driver; + const startTime = Date.now(); + + try { + driver = await new selenium.Builder() + .usingServer(WEBDRIVER_URL) + .withCapabilities(capabilities) + .build(); + + log(`✓ Session created in ${Date.now() - startTime}ms`); + + // Navigate to Nintendo store first (cart may redirect if empty) + log(`\n🌐 Navigating to ${NINTENDO_STORE_URL}...`); + await driver.get(NINTENDO_STORE_URL); + await driver.sleep(3000); + + const storeUrl = await driver.getCurrentUrl(); + log(` Current URL: ${storeUrl}`); + + // Take screenshot of store page + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + const modeLabel = useUnprotectedConfig ? 'unprotected' : 'protected'; + await saveScreenshot(driver, `nintendo-store-${modeLabel}-${timestamp}.png`); + + // Probe trackers on store page + log('\n🛡️ Probing tracker URLs...'); + const storeProbeResults = await probeTrackers(driver, NINTENDO_TRACKERS); + + log('\nStore page tracker status:'); + const blockedCount = storeProbeResults.blocked.length; + const allowedCount = storeProbeResults.allowed.length; + + storeProbeResults.blocked.forEach(t => log(` ❌ BLOCKED: ${t.url}`)); + storeProbeResults.allowed.forEach(t => log(` ✅ ALLOWED: ${t.url} (HTTP ${t.httpStatus})`)); + storeProbeResults.errors.forEach(t => log(` ⚠️ ERROR: ${t.url} - ${t.error}`)); + + log(`\nSummary: ${blockedCount} blocked, ${allowedCount} allowed`); + + // Expected behavior: + // - Protected mode: ALL trackers should be BLOCKED + // - Unprotected mode: ALL trackers should be ALLOWED + + let expectedBehavior; + let testPassed; + + if (useUnprotectedConfig) { + // With unprotectedTemporary, we expect trackers to be ALLOWED + expectedBehavior = 'Trackers should be ALLOWED'; + testPassed = allowedCount > 0; + + if (blockedCount === 0 && allowedCount === NINTENDO_TRACKERS.length) { + log(`\n✅ PERFECT: All trackers allowed - unprotectedTemporary is working!`); + } else if (allowedCount > 0) { + log(`\n✓ PARTIAL: Some trackers allowed (${allowedCount}/${NINTENDO_TRACKERS.length})`); + } else { + log(`\n❌ FAIL: All trackers still blocked - unprotectedTemporary not working`); + } + } else { + // Without unprotectedTemporary, we expect trackers to be BLOCKED + expectedBehavior = 'Trackers should be BLOCKED'; + testPassed = blockedCount > 0; + + if (allowedCount === 0 && blockedCount === NINTENDO_TRACKERS.length) { + log(`\n✅ PERFECT: All trackers blocked - protection is active!`); + } else if (blockedCount > 0) { + log(`\n✓ PARTIAL: Some trackers blocked (${blockedCount}/${NINTENDO_TRACKERS.length})`); + } else { + log(`\n❌ FAIL: No trackers blocked - protection not working`); + } + } + + // Now navigate to cart page + log(`\n🛒 Navigating to ${NINTENDO_CART_URL}...`); + await driver.get(NINTENDO_CART_URL); + await driver.sleep(3000); + + const cartUrl = await driver.getCurrentUrl(); + log(` Current URL: ${cartUrl}`); + + // Take screenshot of cart page + await saveScreenshot(driver, `nintendo-cart-${modeLabel}-${timestamp}.png`); + + // Probe trackers on cart page + const cartProbeResults = await probeTrackers(driver, NINTENDO_TRACKERS); + + log('\nCart page tracker status:'); + cartProbeResults.blocked.forEach(t => log(` ❌ BLOCKED: ${t.url}`)); + cartProbeResults.allowed.forEach(t => log(` ✅ ALLOWED: ${t.url} (HTTP ${t.httpStatus})`)); + + // Check for any page errors or issues + log('\n📋 Checking for page elements...'); + const pageInfo = await driver.executeScript(` + return { + title: document.title, + hasCart: !!document.querySelector('[class*="cart"], [class*="Cart"]'), + hasError: !!document.querySelector('[class*="error"], [class*="Error"]'), + hasModal: !!document.querySelector('[role="dialog"], [class*="modal"], [class*="Modal"]'), + bodyText: document.body?.innerText?.substring(0, 500) || '' + }; + `); + + log(` Title: ${pageInfo.title}`); + log(` Has cart element: ${pageInfo.hasCart}`); + log(` Has error: ${pageInfo.hasError}`); + log(` Has modal: ${pageInfo.hasModal}`); + verbose(` Body preview: ${pageInfo.bodyText.substring(0, 200)}...`); + + return { + mode: modeLabel, + storeUrl, + cartUrl, + storeTrackers: { + blocked: blockedCount, + allowed: allowedCount, + total: NINTENDO_TRACKERS.length + }, + cartTrackers: { + blocked: cartProbeResults.blocked.length, + allowed: cartProbeResults.allowed.length, + total: NINTENDO_TRACKERS.length + }, + pageInfo, + testPassed, + expectedBehavior + }; + + } finally { + if (driver) { + try { + await driver.quit(); + } catch {} + } + + // Kill the app to ensure clean state + try { + execSync('pkill -9 -f "DuckDuckGo.app" 2>/dev/null || true', { timeout: 5000 }); + } catch {} + } +} + +async function main() { + log('🎮 Nintendo Unprotected Test'); + log(`Platform: ${PLATFORM}`); + log(`WebDriver: ${WEBDRIVER_URL}`); + log(`Config file: ${UNPROTECTED_CONFIG_PATH}`); + log(''); + + // Verify config file exists + if (!fs.existsSync(UNPROTECTED_CONFIG_PATH)) { + log(`❌ Config file not found: ${UNPROTECTED_CONFIG_PATH}`); + process.exit(1); + } + + // Verify nintendo.com is in unprotectedTemporary + const config = JSON.parse(fs.readFileSync(UNPROTECTED_CONFIG_PATH, 'utf-8')); + const unprotectedDomains = (config.unprotectedTemporary || []).map(e => e.domain); + + if (!unprotectedDomains.includes('nintendo.com') && !unprotectedDomains.includes('www.nintendo.com')) { + log(`❌ nintendo.com not found in unprotectedTemporary!`); + log(` Found domains: ${unprotectedDomains.join(', ')}`); + process.exit(1); + } + + log(`✓ Config has nintendo.com in unprotectedTemporary`); + + const results = []; + + if (COMPARE_MODE) { + // Run both protected and unprotected modes + log('\n📊 Running comparison test (protected vs unprotected)...'); + + // First: Protected mode (default config) + const protectedResult = await runTest(false, 'PROTECTED MODE (default config)'); + results.push(protectedResult); + + // Restart WebDriver for clean session + log('\n🔄 Restarting WebDriver for next test...'); + await restartWebDriver(); + + // Second: Unprotected mode (custom config) + const unprotectedResult = await runTest(true, 'UNPROTECTED MODE (nintendo in unprotectedTemporary)'); + results.push(unprotectedResult); + + // Print comparison + log('\n'); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log('📊 COMPARISON RESULTS'); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log(''); + log('Store Page Trackers:'); + log(` Protected: ${protectedResult.storeTrackers.blocked} blocked, ${protectedResult.storeTrackers.allowed} allowed`); + log(` Unprotected: ${unprotectedResult.storeTrackers.blocked} blocked, ${unprotectedResult.storeTrackers.allowed} allowed`); + log(''); + log('Cart Page Trackers:'); + log(` Protected: ${protectedResult.cartTrackers.blocked} blocked, ${protectedResult.cartTrackers.allowed} allowed`); + log(` Unprotected: ${unprotectedResult.cartTrackers.blocked} blocked, ${unprotectedResult.cartTrackers.allowed} allowed`); + log(''); + + // Determine if unprotectedTemporary made a difference + const storeBlockedDiff = protectedResult.storeTrackers.blocked - unprotectedResult.storeTrackers.blocked; + const storeAllowedDiff = unprotectedResult.storeTrackers.allowed - protectedResult.storeTrackers.allowed; + + if (storeAllowedDiff > 0 || storeBlockedDiff > 0) { + log(`✅ unprotectedTemporary IS working!`); + log(` ${storeAllowedDiff} more trackers allowed in unprotected mode`); + } else if (unprotectedResult.storeTrackers.allowed === 0 && protectedResult.storeTrackers.blocked > 0) { + log(`❌ unprotectedTemporary NOT working - trackers still blocked`); + } else { + log(`⚠️ Unclear - both modes have same behavior`); + } + + } else { + // Just run unprotected mode + const result = await runTest(true, 'UNPROTECTED MODE TEST'); + results.push(result); + } + + // Save results + const resultsDir = path.join(__dirname, '../test-results'); + if (!fs.existsSync(resultsDir)) { + fs.mkdirSync(resultsDir, { recursive: true }); + } + + const resultsFile = path.join(resultsDir, `nintendo-unprotected-test-${Date.now()}.json`); + fs.writeFileSync(resultsFile, JSON.stringify({ + timestamp: new Date().toISOString(), + platform: PLATFORM, + compareMode: COMPARE_MODE, + configPath: UNPROTECTED_CONFIG_PATH, + results + }, null, 2)); + + log(`\nResults saved to: ${resultsFile}`); + + // Exit with appropriate code + const allPassed = results.every(r => r.testPassed); + process.exit(allPassed ? 0 : 1); +} + +main().catch(e => { + console.error('Test failed:', e); + process.exit(1); +}); diff --git a/scripts/nintendo-us-checkout-flow.mjs b/scripts/nintendo-us-checkout-flow.mjs new file mode 100644 index 0000000..1ef5612 --- /dev/null +++ b/scripts/nintendo-us-checkout-flow.mjs @@ -0,0 +1,1246 @@ +/** + * Nintendo US Store Checkout Flow Test + * + * Tests the e-commerce checkout flow on nintendo.com/us: + * 1. Navigate to US Nintendo store + * 2. Create/login to Nintendo Account (US region) + * 3. Go to Nintendo Sound Clock: Alarmo product page + * 4. Add to cart + * 5. Go to basket + * 6. Proceed to secure checkout + * 7. Fill out address info + * 8. Verify "Continue to payment" button state + * + * BUG BEING TESTED: + * - In DuckDuckGo browser: "Continue to payment" button is greyed out after filling address + * - In Safari: "Continue to payment" button works correctly + * + * Usage: + * node scripts/nintendo-us-checkout-flow.mjs [--no-keep] [--screenshot] + * + * Environment: + * PLATFORM / TARGET_PLATFORM: 'macos' or 'ios' + * WEBDRIVER_SERVER_URL: WebDriver server URL (default: http://localhost:4444) + * NINTENDO_EMAIL: Nintendo Account email + * NINTENDO_PASSWORD: Nintendo Account password + * NINTENDO_SKIP_LOGIN: Set to 'true' to skip login step + */ + +import { createRequire } from 'node:module'; +import { writeFile, mkdir, readFile } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { debugScripts, runDebug, trackDomChanges, startConsoleCapture, logConsoleLogs } from './debug-utils.mjs'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); + +// Load .env file if it exists +try { + const envPath = join(scriptsDir, '..', '.env'); + const envContent = await readFile(envPath, 'utf-8'); + for (const line of envContent.split('\n')) { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('#')) { + const [key, ...valueParts] = trimmed.split('='); + const value = valueParts.join('='); + if (key && value && !process.env[key]) { + process.env[key] = value; + } + } + } +} catch { + // .env file doesn't exist, that's fine +} + +const localRequire = createRequire(import.meta.url); + +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const { By, until } = selenium; + +// Parse CLI args +const args = process.argv.slice(2); +const keepOpen = args.includes('--keep') || !args.includes('--no-keep'); +const takeScreenshot = args.includes('--screenshot'); + +// Parse --config= argument for custom privacy config (uses cache write) +const configArg = args.find(a => a.startsWith('--config=')); +const privacyConfigURL = configArg ? configArg.split('=').slice(1).join('=') : null; + +// Parse --config-path= argument for custom privacy config (uses TEST_PRIVACY_CONFIG_PATH env var) +const configPathArg = args.find(a => a.startsWith('--config-path=')); +const privacyConfigPath = configPathArg ? configPathArg.split('=').slice(1).join('=') : null; + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; +const platform = process.env.PLATFORM || process.env.TARGET_PLATFORM || 'unknown'; + +// Nintendo credentials +const nintendoEmail = process.env.NINTENDO_EMAIL; +const nintendoPassword = process.env.NINTENDO_PASSWORD; +const skipLogin = process.env.NINTENDO_SKIP_LOGIN === 'true'; + +// Config - US Store +const NINTENDO_US_STORE_URL = 'https://www.nintendo.com/us/'; +const NINTENDO_LOGIN_URL = 'https://accounts.nintendo.com/login'; +const ALARMO_PRODUCT_URL = 'https://www.nintendo.com/us/store/products/nintendo-sound-clock-alarmo-121311/'; +const PAGE_LOAD_TIMEOUT = 15000; +const ELEMENT_WAIT_TIMEOUT = 10000; + +// Test address info for checkout (US address) +const TEST_ADDRESS = { + firstName: 'Test', + lastName: 'User', + address1: '123 Test Street', + address2: 'Apt 1', + city: 'Seattle', + state: 'WA', + zip: '98101', + phone: '2065551234', +}; + +// Test state tracking +const testState = { + currentStep: '', + visitedUrls: [], + errors: [], + continueToPaymentEnabled: null, +}; + +/** + * Save a screenshot to file + */ +async function saveScreenshot(driver, filename) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const screenshotBase64 = await driver.takeScreenshot(); + const screenshotBuffer = Buffer.from(screenshotBase64, 'base64'); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, screenshotBuffer); + console.log(`📸 Screenshot saved: ${filepath}`); + return filepath; + } catch (e) { + console.error('❌ Failed to take screenshot:', e.message); + return null; + } +} + +/** + * Clean up any existing WebDriver sessions + */ +async function cleanupExistingSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + const sessions = data.value || (Array.isArray(data) ? data : []); + if (Array.isArray(sessions) && sessions.length > 0) { + console.log(`Found ${sessions.length} existing session(s), cleaning up...`); + for (const session of sessions) { + try { + const sessionId = session.id || session.sessionId || session; + await fetch(`${serverUrl}/session/${sessionId}`, { method: 'DELETE' }); + console.log(` Deleted session: ${sessionId}`); + } catch { + // Ignore cleanup errors + } + } + await sleep(500); + } + } + } catch { + // Server might not be running + } +} + +/** + * Clear browser state (cookies, localStorage, sessionStorage) + */ +async function clearBrowserState(driver) { + console.log('🧹 Clearing browser state...'); + try { + await driver.get(NINTENDO_US_STORE_URL); + await waitForPageReady(driver); + + await driver.manage().deleteAllCookies(); + console.log(' ✓ Cleared cookies'); + + await driver.executeScript(` + try { + localStorage.clear(); + sessionStorage.clear(); + } catch (e) {} + `); + console.log(' ✓ Cleared localStorage and sessionStorage'); + + // Clear Nintendo-specific domains + const domains = [ + 'https://accounts.nintendo.com/', + 'https://ec.nintendo.com/', + ]; + + for (const domain of domains) { + try { + await driver.get(domain); + await driver.manage().deleteAllCookies(); + await driver.executeScript(` + try { + localStorage.clear(); + sessionStorage.clear(); + } catch (e) {} + `); + } catch { + // Domain might redirect or be inaccessible + } + } + console.log(' ✓ Cleared Nintendo account/eShop state'); + + return true; + } catch (e) { + console.warn(` ⚠️ Could not fully clear browser state: ${e.message}`); + return false; + } +} + +/** + * Sleep for specified milliseconds + */ +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +/** + * Wait for page to be ready + */ +async function waitForPageReady(driver, timeout = PAGE_LOAD_TIMEOUT) { + try { + await driver.wait(async () => { + const readyState = await driver.executeScript('return document.readyState'); + return readyState === 'complete'; + }, timeout, 'Waiting for document.readyState === complete'); + + await driver.wait(async () => { + const isStable = await driver.executeScript(` + return new Promise((resolve) => { + let timeout = setTimeout(() => resolve(true), 500); + const observer = new MutationObserver(() => { + clearTimeout(timeout); + timeout = setTimeout(() => resolve(true), 500); + }); + observer.observe(document.body, { childList: true, subtree: true }); + setTimeout(() => { observer.disconnect(); resolve(true); }, 3000); + }); + `); + return isStable; + }, timeout, 'Waiting for DOM to stabilize'); + + return true; + } catch (e) { + console.warn(`⚠️ Page ready timeout: ${e.message}`); + return false; + } +} + +/** + * Wait for URL to change from current URL + */ +async function waitForUrlChange(driver, currentUrl, timeout = PAGE_LOAD_TIMEOUT) { + try { + await driver.wait(async () => { + const newUrl = await driver.getCurrentUrl(); + return newUrl !== currentUrl; + }, timeout, `Waiting for URL to change from ${currentUrl}`); + return true; + } catch { + return false; + } +} + +/** + * Wait for an element to appear in DOM + */ +async function waitForElementPresent(driver, locator, timeout = ELEMENT_WAIT_TIMEOUT) { + try { + return await driver.wait(until.elementLocated(locator), timeout); + } catch { + return null; + } +} + +/** + * Wait for an element to be present and visible + */ +async function waitForElement(driver, locator, timeout = ELEMENT_WAIT_TIMEOUT) { + try { + const element = await driver.wait(until.elementLocated(locator), timeout); + await driver.wait(until.elementIsVisible(element), timeout); + return element; + } catch { + return null; + } +} + +/** + * Try multiple selectors and return the first match + */ +async function findElementBySelectors(driver, selectors, description = 'element') { + for (const selector of selectors) { + try { + const elements = await driver.findElements(selector); + if (elements.length > 0) { + console.log(` ✓ Found ${description} with selector: ${selector.toString()}`); + return elements[0]; + } + } catch { + // Selector failed, try next + } + } + console.warn(` ✗ Could not find ${description}`); + return null; +} + +/** + * Log step progress + */ +function logStep(step, message) { + testState.currentStep = step; + console.log(`\n[${'Step ' + step}] ${message}`); +} + +/** + * Step 0: Login to Nintendo Account + */ +async function loginToNintendo(driver) { + if (skipLogin) { + console.log(' Skipping login (NINTENDO_SKIP_LOGIN=true)'); + return { success: true, skipped: true }; + } + + if (!nintendoEmail || !nintendoPassword) { + console.log(' No credentials provided - skipping login'); + console.log(' Set NINTENDO_EMAIL and NINTENDO_PASSWORD to enable login'); + return { success: true, skipped: true }; + } + + logStep(0, 'Logging in to Nintendo Account'); + + try { + await driver.get(NINTENDO_LOGIN_URL); + await waitForPageReady(driver); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-login-page-${timestamp}.png`); + + const currentUrl = await driver.getCurrentUrl(); + if (currentUrl.includes('accounts.nintendo.com') && !currentUrl.includes('/login')) { + console.log(' ✓ Already logged in (session preserved)'); + testState.visitedUrls.push(currentUrl); + return { success: true, skipped: false, alreadyLoggedIn: true }; + } + + // Find and fill email + const emailInput = await waitForElement( + driver, + By.css('input[placeholder*="Email"], input[placeholder*="Sign-In"], input[name="loginId"], input#loginId'), + ELEMENT_WAIT_TIMEOUT + ); + + if (!emailInput) { + console.log(' ✗ Could not find email input'); + return { success: false, reason: 'Email input not found' }; + } + + await emailInput.clear(); + await emailInput.sendKeys(nintendoEmail); + console.log(' ✓ Entered email'); + + // Find and fill password + const passwordInput = await waitForElement( + driver, + By.css('input[type="password"], input[name="password"], input#password'), + ELEMENT_WAIT_TIMEOUT + ); + + if (!passwordInput) { + console.log(' ✗ Could not find password input'); + return { success: false, reason: 'Password input not found' }; + } + + await passwordInput.clear(); + await passwordInput.sendKeys(nintendoPassword); + console.log(' ✓ Entered password'); + + // Find and click login button + const loginButton = await findElementBySelectors( + driver, + [ + By.css('button[type="submit"]'), + By.xpath('//button[contains(text(), "Sign in")]'), + By.xpath('//button[contains(text(), "Log in")]'), + By.css('#btn-signin'), + ], + 'login button' + ); + + if (!loginButton) { + console.log(' ✗ Could not find login button'); + return { success: false, reason: 'Login button not found' }; + } + + await loginButton.click(); + console.log(' ✓ Clicked login button'); + + await waitForPageReady(driver); + + let postLoginUrl = await driver.getCurrentUrl(); + + // Check for 2FA/email challenge + if (postLoginUrl.includes('challenge/email') || postLoginUrl.includes('challenge/')) { + console.log(' ⏳ 2FA verification required - waiting for manual input...'); + console.log(' 📧 Please check your email and enter the verification code'); + + const maxWaitTime = 5 * 60 * 1000; + const pollInterval = 2000; + const startTime = Date.now(); + + while (Date.now() - startTime < maxWaitTime) { + await sleep(pollInterval); + postLoginUrl = await driver.getCurrentUrl(); + + if (!postLoginUrl.includes('challenge/')) { + console.log(' ✓ 2FA verification completed!'); + break; + } + + const elapsed = Math.floor((Date.now() - startTime) / 1000); + if (elapsed % 30 === 0 && elapsed > 0) { + console.log(` ⏳ Still waiting for 2FA... (${elapsed}s elapsed)`); + } + } + + postLoginUrl = await driver.getCurrentUrl(); + if (postLoginUrl.includes('challenge/')) { + console.log(' ⚠️ 2FA timeout - verification not completed within 5 minutes'); + return { success: false, reason: '2FA timeout' }; + } + } + + if (postLoginUrl.includes('accounts.nintendo.com/login')) { + const errorMessage = await findElementBySelectors( + driver, + [ + By.css('.error-message'), + By.css('[data-testid="error"]'), + By.xpath('//*[contains(@class, "error")]'), + ], + 'error message' + ); + + if (errorMessage) { + const errorText = await errorMessage.getText().catch(() => 'Unknown error'); + console.log(` ✗ Login failed: ${errorText}`); + return { success: false, reason: errorText }; + } + } + + await saveScreenshot(driver, `nintendo-us-after-login-${timestamp}.png`); + + console.log(` ✓ Login completed, now at: ${postLoginUrl}`); + testState.visitedUrls.push(postLoginUrl); + + return { success: true, skipped: false }; + + } catch (e) { + console.error(` ✗ Login error: ${e.message}`); + return { success: false, reason: e.message }; + } +} + +/** + * Step 1: Navigate to US Nintendo Store + */ +async function navigateToUSStore(driver) { + logStep(1, 'Navigating to US Nintendo Store'); + + await driver.get(NINTENDO_US_STORE_URL); + await waitForPageReady(driver); + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` URL: ${currentUrl}`); + + const title = await driver.getTitle(); + console.log(` Title: ${title}`); + + return true; +} + +/** + * Step 2: Navigate to Alarmo product page + */ +async function navigateToProduct(driver) { + logStep(2, 'Navigating to Nintendo Sound Clock: Alarmo product page'); + + await driver.get(ALARMO_PRODUCT_URL); + await waitForPageReady(driver); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-alarmo-product-${timestamp}.png`); + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` URL: ${currentUrl}`); + + // Wait for product page to load - look for Add to Cart button + const addToCartButton = await waitForElement( + driver, + By.xpath('//button[contains(text(), "Add to cart") or contains(text(), "Add to Cart")]'), + 15000 + ); + + if (addToCartButton) { + console.log(' ✓ Product page loaded - Add to Cart button found'); + } else { + console.log(' ⚠️ Could not find Add to Cart button on product page'); + } + + return true; +} + +/** + * Step 3: Add product to cart + */ +async function addToCart(driver) { + logStep(3, 'Adding product to cart'); + + await waitForPageReady(driver); + + // Find Add to Cart button + const addToCartButton = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(normalize-space(), "Add to cart")]'), + By.xpath('//button[contains(normalize-space(), "Add to Cart")]'), + By.css('button[data-testid="add-to-cart"]'), + By.css('button.add-to-cart'), + ], + 'Add to Cart button' + ); + + if (!addToCartButton) { + console.log(' ✗ Could not find Add to Cart button'); + return { success: false, reason: 'Add to Cart button not found' }; + } + + try { + const buttonText = await addToCartButton.getText().catch(() => 'Add to Cart'); + console.log(` Found button: "${buttonText}"`); + + // Start console capture + await startConsoleCapture(driver); + + // Click Add to Cart + console.log(' Clicking Add to Cart...'); + await driver.executeScript('arguments[0].click()', addToCartButton); + + await sleep(2000); + await waitForPageReady(driver); + + // Check for cart confirmation modal or redirect + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-after-add-to-cart-${timestamp}.png`); + + // Look for confirmation (cart modal, updated cart count, etc.) + const cartConfirmation = await findElementBySelectors( + driver, + [ + By.xpath('//*[contains(text(), "Added to cart") or contains(text(), "added to cart")]'), + By.xpath('//*[contains(text(), "View cart") or contains(text(), "View Cart")]'), + By.css('[role="dialog"]'), + By.css('.cart-modal'), + ], + 'cart confirmation' + ); + + if (cartConfirmation) { + console.log(' ✓ Item added to cart (confirmation detected)'); + } else { + console.log(' ℹ️ No explicit confirmation - checking cart count'); + } + + // Get console logs + await logConsoleLogs(driver, { stop: true, levels: ['error', 'warn'] }); + + return { success: true }; + + } catch (e) { + console.error(` ✗ Failed to add to cart: ${e.message}`); + return { success: false, reason: e.message }; + } +} + +/** + * Dismiss any regional/cookie modals that appear + * Specifically handles the Nintendo "Select your region" modal + */ +async function dismissModals(driver, maxAttempts = 3) { + for (let attempt = 0; attempt < maxAttempts; attempt++) { + console.log(` Checking for modals to dismiss (attempt ${attempt + 1})...`); + + // First, try to click "Stay here" button on the regional modal + // This is the correct way to proceed with US store + try { + const dismissed = await driver.executeScript(` + // Check if the regional modal is visible by looking for "Stay here" button + // Note: The search overlay also has role="dialog" but has inert="inert" + // so we specifically look for the "Stay here" button presence + const buttons = document.querySelectorAll('button'); + for (const btn of buttons) { + const text = (btn.textContent || btn.innerText || '').trim(); + if (text === 'Stay here' || text.includes('Stay here')) { + // Regional modal is visible - click the button + console.log('Found Stay here button, clicking...'); + btn.click(); + return 'stay-here'; + } + } + + // No "Stay here" button found - regional modal is not visible + return null; + `); + + if (dismissed === 'stay-here') { + console.log(` ✓ Clicked "Stay here" button`); + await sleep(2000); + await waitForPageReady(driver); + + // Check if "Stay here" button is still present (meaning modal didn't close) + // Don't use [role="dialog"] - the search overlay always has that + const modalStillThere = await driver.executeScript(` + const buttons = document.querySelectorAll('button'); + for (const btn of buttons) { + const text = (btn.textContent || btn.innerText || '').trim(); + if (text === 'Stay here' || text.includes('Stay here')) { + return true; + } + } + return false; + `); + if (!modalStillThere) { + console.log(` ✓ Modal dismissed successfully`); + return true; + } + console.log(` Modal still visible, retrying...`); + } else { + console.log(' No regional modal found (no "Stay here" button)'); + return false; + } + } catch (e) { + console.log(` Modal dismiss error: ${e.message}`); + } + + await sleep(1000); + } + + return false; +} + +/** + * Step 4: Navigate to cart/basket + */ +async function navigateToCart(driver) { + logStep(4, 'Navigating to cart'); + + // Try clicking cart icon or View Cart button + const cartLink = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(text(), "View cart") or contains(text(), "View Cart")]'), + By.xpath('//a[contains(text(), "View cart") or contains(text(), "View Cart")]'), + By.css('a[aria-label="Cart"]'), + By.css('a[aria-label="Shopping cart"]'), + By.css('a[href*="/cart"]'), + By.xpath('//*[@data-testid="ShoppingCartIcon"]/..'), + By.css('[data-testid="cart-icon"]'), + ], + 'cart link' + ); + + if (cartLink) { + try { + await cartLink.click(); + await waitForPageReady(driver); + } catch (e) { + console.log(` Click failed: ${e.message}, navigating directly to cart`); + await driver.get('https://www.nintendo.com/us/cart/'); + await waitForPageReady(driver); + } + } else { + console.log(' Navigating directly to cart page...'); + await driver.get('https://www.nintendo.com/us/cart/'); + await waitForPageReady(driver); + } + + // Dismiss any regional modals that appear + await sleep(2000); // Wait for modal to appear + await dismissModals(driver); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-cart-${timestamp}.png`); + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` Now at: ${currentUrl}`); + + return true; +} + +/** + * Step 5: Proceed to secure checkout + */ +async function proceedToCheckout(driver) { + logStep(5, 'Proceeding to secure checkout'); + + await waitForPageReady(driver); + + // Check if cart has items + const emptyCartMessage = await findElementBySelectors( + driver, + [ + By.xpath('//*[contains(text(), "cart is empty")]'), + By.xpath('//*[contains(text(), "Cart is empty")]'), + By.xpath('//*[contains(text(), "no items")]'), + ], + 'empty cart message' + ); + + if (emptyCartMessage) { + console.log(' ⚠️ Cart is empty'); + return { success: false, reason: 'Cart is empty' }; + } + + // Dismiss any modals that might be blocking + await dismissModals(driver); + + // Look for checkout button + const checkoutButton = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(normalize-space(), "secure checkout")]'), + By.xpath('//button[contains(normalize-space(), "Secure checkout")]'), + By.xpath('//button[contains(normalize-space(), "To secure checkout")]'), + By.xpath('//button[contains(normalize-space(), "Checkout")]'), + By.xpath('//a[contains(normalize-space(), "secure checkout")]'), + By.xpath('//a[contains(normalize-space(), "Secure checkout")]'), + By.xpath('//a[contains(normalize-space(), "Checkout")]'), + By.css('button[data-testid="checkout"]'), + By.css('a[href*="checkout"]'), + ], + 'checkout button' + ); + + if (!checkoutButton) { + console.log(' ✗ Could not find checkout button'); + return { success: false, reason: 'Checkout button not found' }; + } + + try { + const buttonText = await checkoutButton.getText().catch(() => 'Checkout'); + console.log(` Found button: "${buttonText}"`); + + console.log(' Clicking checkout...'); + await driver.executeScript('arguments[0].click()', checkoutButton); + + await sleep(3000); + await waitForPageReady(driver); + + // Dismiss any modal that appears after clicking checkout + await dismissModals(driver, 5); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-checkout-page-${timestamp}.png`); + + const currentUrl = await driver.getCurrentUrl(); + testState.visitedUrls.push(currentUrl); + console.log(` Now at: ${currentUrl}`); + + // Check if we hit a login wall + if (currentUrl.includes('login') || currentUrl.includes('signin') || currentUrl.includes('accounts')) { + console.log(' ⚠️ Reached login page (checkout requires authentication)'); + return { success: true, hitLogin: true }; + } + + return { success: true, hitLogin: false }; + + } catch (e) { + console.error(` ✗ Failed to proceed to checkout: ${e.message}`); + return { success: false, reason: e.message }; + } +} + +/** + * Step 6: Fill out address information + */ +async function fillAddressInfo(driver) { + logStep(6, 'Filling out address information'); + + await waitForPageReady(driver); + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + try { + // Wait for address form to appear + const addressForm = await waitForElementPresent( + driver, + By.xpath('//form | //input[@name="firstName"] | //input[@id="firstName"] | //input[contains(@placeholder, "First")]'), + 15000 + ); + + if (!addressForm) { + console.log(' ⚠️ Address form not found - may need to select shipping option first'); + await saveScreenshot(driver, `nintendo-us-no-address-form-${timestamp}.png`); + } + + // Helper to fill input field + async function fillInput(selectors, value, fieldName) { + const input = await findElementBySelectors(driver, selectors, fieldName); + if (input) { + try { + await input.clear(); + await input.sendKeys(value); + console.log(` ✓ Filled ${fieldName}: ${value}`); + return true; + } catch (e) { + console.log(` ⚠️ Could not fill ${fieldName}: ${e.message}`); + } + } + return false; + } + + // Fill first name + await fillInput( + [ + By.css('input[name="firstName"]'), + By.css('input#firstName'), + By.css('input[placeholder*="First"]'), + By.xpath('//label[contains(text(), "First")]/following-sibling::input | //label[contains(text(), "First")]/..//input'), + ], + TEST_ADDRESS.firstName, + 'First Name' + ); + + // Fill last name + await fillInput( + [ + By.css('input[name="lastName"]'), + By.css('input#lastName'), + By.css('input[placeholder*="Last"]'), + By.xpath('//label[contains(text(), "Last")]/following-sibling::input | //label[contains(text(), "Last")]/..//input'), + ], + TEST_ADDRESS.lastName, + 'Last Name' + ); + + // Fill address line 1 + await fillInput( + [ + By.css('input[name="address1"]'), + By.css('input[name="addressLine1"]'), + By.css('input#address1'), + By.css('input[placeholder*="Address"]'), + By.xpath('//label[contains(text(), "Address")]/following-sibling::input | //label[contains(text(), "Street")]/..//input'), + ], + TEST_ADDRESS.address1, + 'Address Line 1' + ); + + // Fill address line 2 (optional) + await fillInput( + [ + By.css('input[name="address2"]'), + By.css('input[name="addressLine2"]'), + By.css('input#address2'), + By.css('input[placeholder*="Apt"]'), + ], + TEST_ADDRESS.address2, + 'Address Line 2' + ); + + // Fill city + await fillInput( + [ + By.css('input[name="city"]'), + By.css('input#city'), + By.css('input[placeholder*="City"]'), + By.xpath('//label[contains(text(), "City")]/following-sibling::input | //label[contains(text(), "City")]/..//input'), + ], + TEST_ADDRESS.city, + 'City' + ); + + // Fill state (might be a dropdown) + const stateInput = await findElementBySelectors( + driver, + [ + By.css('select[name="state"]'), + By.css('select#state'), + By.css('select[name="region"]'), + By.css('input[name="state"]'), + By.css('input#state'), + ], + 'State' + ); + + if (stateInput) { + const tagName = await stateInput.getTagName(); + if (tagName.toLowerCase() === 'select') { + // It's a dropdown - select by value or visible text + try { + await driver.executeScript(` + const select = arguments[0]; + for (const option of select.options) { + if (option.value === '${TEST_ADDRESS.state}' || option.text.includes('${TEST_ADDRESS.state}') || option.text.includes('Washington')) { + option.selected = true; + select.dispatchEvent(new Event('change', { bubbles: true })); + break; + } + } + `, stateInput); + console.log(` ✓ Selected State: ${TEST_ADDRESS.state}`); + } catch (e) { + console.log(` ⚠️ Could not select state: ${e.message}`); + } + } else { + await stateInput.clear(); + await stateInput.sendKeys(TEST_ADDRESS.state); + console.log(` ✓ Filled State: ${TEST_ADDRESS.state}`); + } + } + + // Fill ZIP code + await fillInput( + [ + By.css('input[name="zip"]'), + By.css('input[name="postalCode"]'), + By.css('input#zip'), + By.css('input#postalCode'), + By.css('input[placeholder*="ZIP"]'), + By.css('input[placeholder*="Postal"]'), + ], + TEST_ADDRESS.zip, + 'ZIP Code' + ); + + // Fill phone number + await fillInput( + [ + By.css('input[name="phone"]'), + By.css('input[name="phoneNumber"]'), + By.css('input#phone'), + By.css('input[type="tel"]'), + By.css('input[placeholder*="Phone"]'), + ], + TEST_ADDRESS.phone, + 'Phone Number' + ); + + await sleep(1000); + await saveScreenshot(driver, `nintendo-us-address-filled-${timestamp}.png`); + + console.log(' ✓ Address form filled'); + return { success: true }; + + } catch (e) { + console.error(` ✗ Failed to fill address: ${e.message}`); + await saveScreenshot(driver, `nintendo-us-address-error-${timestamp}.png`); + return { success: false, reason: e.message }; + } +} + +/** + * Step 7: Check "Continue to payment" button state + * This is the key test - the button should be enabled after filling address info + */ +async function checkContinueToPaymentButton(driver) { + logStep(7, 'Checking "Continue to payment" button state'); + + await waitForPageReady(driver); + await sleep(2000); // Wait for any validation to complete + + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + + try { + // Find the Continue to payment button + const continueButton = await findElementBySelectors( + driver, + [ + By.xpath('//button[contains(normalize-space(), "Continue to payment")]'), + By.xpath('//button[contains(normalize-space(), "Continue to Payment")]'), + By.xpath('//button[contains(normalize-space(), "continue to payment")]'), + By.css('button[data-testid="continue-to-payment"]'), + By.css('button.continue-to-payment'), + By.xpath('//button[contains(@class, "payment")]'), + ], + 'Continue to payment button' + ); + + if (!continueButton) { + console.log(' ✗ Could not find "Continue to payment" button'); + await saveScreenshot(driver, `nintendo-us-no-continue-button-${timestamp}.png`); + return { success: false, reason: 'Continue to payment button not found' }; + } + + // Check if button is enabled or disabled + const isDisabled = await driver.executeScript(` + const btn = arguments[0]; + const disabled = btn.disabled; + const ariaDisabled = btn.getAttribute('aria-disabled') === 'true'; + const hasDisabledClass = btn.classList.contains('disabled') || btn.classList.contains('is-disabled'); + const computedStyle = window.getComputedStyle(btn); + const pointerEventsNone = computedStyle.pointerEvents === 'none'; + const opacity = parseFloat(computedStyle.opacity); + const looksDisabled = opacity < 0.6; + + return { + disabled, + ariaDisabled, + hasDisabledClass, + pointerEventsNone, + opacity, + looksDisabled, + isEffectivelyDisabled: disabled || ariaDisabled || hasDisabledClass || pointerEventsNone + }; + `, continueButton); + + const buttonText = await continueButton.getText().catch(() => 'Continue to payment'); + + console.log(` Button text: "${buttonText}"`); + console.log(` Button state analysis:`); + console.log(` - disabled attribute: ${isDisabled.disabled}`); + console.log(` - aria-disabled: ${isDisabled.ariaDisabled}`); + console.log(` - has disabled class: ${isDisabled.hasDisabledClass}`); + console.log(` - pointer-events: none: ${isDisabled.pointerEventsNone}`); + console.log(` - opacity: ${isDisabled.opacity}`); + console.log(` - looks disabled (opacity < 0.6): ${isDisabled.looksDisabled}`); + + const isButtonEnabled = !isDisabled.isEffectivelyDisabled && !isDisabled.looksDisabled; + testState.continueToPaymentEnabled = isButtonEnabled; + + await saveScreenshot(driver, `nintendo-us-continue-button-${isButtonEnabled ? 'enabled' : 'disabled'}-${timestamp}.png`); + + if (isButtonEnabled) { + console.log(' ✅ "Continue to payment" button is ENABLED (expected in Safari)'); + } else { + console.log(' ❌ "Continue to payment" button is GREYED OUT/DISABLED'); + console.log(' 🐛 BUG CONFIRMED: Button should be enabled after filling address info'); + } + + // Also try to click the button to see what happens + if (!isButtonEnabled) { + console.log('\n 📊 Additional diagnostics:'); + + // Check for validation errors + const validationErrors = await driver.executeScript(` + const errors = []; + document.querySelectorAll('.error, .invalid, [aria-invalid="true"], .validation-error, .field-error').forEach(el => { + const text = el.textContent?.trim(); + if (text) errors.push(text); + }); + return errors; + `); + + if (validationErrors && validationErrors.length > 0) { + console.log(' Validation errors found:'); + validationErrors.forEach(err => console.log(` - ${err}`)); + } else { + console.log(' No visible validation errors found'); + } + + // Check for required fields that might be empty + const emptyRequiredFields = await driver.executeScript(` + const empty = []; + document.querySelectorAll('input[required], input[aria-required="true"]').forEach(input => { + if (!input.value) { + const label = document.querySelector('label[for="' + input.id + '"]')?.textContent || + input.placeholder || input.name || input.id; + empty.push(label); + } + }); + return empty; + `); + + if (emptyRequiredFields && emptyRequiredFields.length > 0) { + console.log(' Empty required fields:'); + emptyRequiredFields.forEach(field => console.log(` - ${field}`)); + } else { + console.log(' All required fields appear to be filled'); + } + } + + return { + success: true, + buttonEnabled: isButtonEnabled, + buttonState: isDisabled + }; + + } catch (e) { + console.error(` ✗ Failed to check button state: ${e.message}`); + await saveScreenshot(driver, `nintendo-us-button-check-error-${timestamp}.png`); + return { success: false, reason: e.message }; + } +} + +/** + * Print test summary + */ +function printSummary() { + console.log('\n' + '='.repeat(60)); + console.log('📊 TEST SUMMARY - Nintendo US Checkout Flow'); + console.log('='.repeat(60)); + console.log(`Platform: ${platform}`); + console.log(`Last step: ${testState.currentStep}`); + console.log(`URLs visited: ${testState.visitedUrls.length}`); + testState.visitedUrls.forEach((url, idx) => { + console.log(` ${idx + 1}. ${url}`); + }); + + console.log('\n' + '-'.repeat(60)); + console.log('🎯 KEY RESULT: "Continue to payment" button state'); + console.log('-'.repeat(60)); + + if (testState.continueToPaymentEnabled === null) { + console.log(' ⚠️ Could not determine button state'); + } else if (testState.continueToPaymentEnabled) { + console.log(' ✅ Button is ENABLED - working correctly'); + } else { + console.log(' ❌ Button is DISABLED/GREYED OUT - BUG CONFIRMED'); + console.log(' 📝 Expected: Button should be enabled after filling address'); + console.log(' 📝 Note: This works correctly in Safari'); + } + + if (testState.errors.length > 0) { + console.log('\nErrors:'); + testState.errors.forEach((err) => console.log(` - ${err}`)); + } + console.log('='.repeat(60)); +} + +// ============ Main Test Flow ============ + +await cleanupExistingSessions(); + +let driver; +try { + console.log('\n🛒 Nintendo US Store Checkout Flow Test'); + console.log('========================================'); + console.log(`Platform: ${platform}`); + console.log(`WebDriver: ${serverUrl}`); + console.log(`Login: ${nintendoEmail ? `${nintendoEmail.substring(0, 3)}***` : 'Not configured (guest mode)'}`); + console.log(`Product: Nintendo Sound Clock: Alarmo`); + console.log(`Test: Verify "Continue to payment" button is enabled after filling address`); + if (privacyConfigURL) { + console.log(`Custom Config (URL): ${privacyConfigURL}`); + } + if (privacyConfigPath) { + console.log(`Custom Config (Path): ${privacyConfigPath}`); + } + console.log(''); + + // Build capabilities - optionally include custom privacy config + const capabilities = { browserName: 'duckduckgo' }; + if (privacyConfigURL) { + // URL-based: WebDriver fetches and writes to cache + capabilities['ddg:privacyConfigURL'] = privacyConfigURL; + } + if (privacyConfigPath) { + // Path-based: WebDriver passes TEST_PRIVACY_CONFIG_PATH env var to app + capabilities['ddg:privacyConfigPath'] = privacyConfigPath; + } + + driver = await new selenium.Builder() + .usingServer(serverUrl) + .withCapabilities(capabilities) + .build(); + + // Platform check for macOS + if (platform === 'macos') { + try { + const automationCheck = await fetch('http://localhost:8788/getUrl'); + if (!automationCheck.ok) { + console.warn('⚠️ Warning: macOS automation server (port 8788) not responding'); + } + } catch { + console.warn('⚠️ Warning: macOS automation server (port 8788) not accessible'); + } + } + + // Clear browser state before each run + await clearBrowserState(driver); + + // Run test steps + const loginResult = await loginToNintendo(driver); + if (!loginResult.success) { + console.log(`\n⚠️ Login failed: ${loginResult.reason}`); + console.log(' Continuing - checkout may require login'); + } + + await navigateToUSStore(driver); + await navigateToProduct(driver); + const addResult = await addToCart(driver); + + if (!addResult.success) { + console.log(`\n⚠️ Add to cart failed: ${addResult.reason}`); + } + + await navigateToCart(driver); + const checkoutResult = await proceedToCheckout(driver); + + if (checkoutResult.hitLogin) { + console.log('\n⚠️ Test stopped at login page - need valid Nintendo account credentials'); + } else if (checkoutResult.success) { + await fillAddressInfo(driver); + await checkContinueToPaymentButton(driver); + } + + // Take final screenshot + if (takeScreenshot) { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-checkout-final-${timestamp}.png`); + } + + // Print summary + printSummary(); + + if (keepOpen) { + console.log('\n✅ Browser will stay open. Press Ctrl+C to quit.'); + await new Promise(() => {}); + } else { + console.log('\n⚠️ Browser will close automatically. Use --keep to keep it open.'); + } +} catch (error) { + console.error('\n❌ Test Error:', error.message); + testState.errors.push(error.message); + + if (takeScreenshot && driver) { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `nintendo-us-error-${timestamp}.png`); + } + + printSummary(); + + if (error.message.includes('Session is already started') || error.message.includes('SessionNotCreatedError')) { + console.error('\n💡 Tip: Restart the driver:'); + console.error(' 1. Stop WebDriver server (Ctrl+C)'); + console.error(' 2. Run: npm run driver:macos (or driver:ios)'); + console.error(' 3. Run this test again'); + } + process.exit(1); +} finally { + if (driver && !keepOpen) { + try { + await driver.quit(); + } catch { + // Ignore quit errors + } + } +} diff --git a/scripts/probe-blocker.mjs b/scripts/probe-blocker.mjs new file mode 100644 index 0000000..71fd17a --- /dev/null +++ b/scripts/probe-blocker.mjs @@ -0,0 +1,82 @@ +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const configPath = process.argv[2]; +console.log(`Using config: ${configPath || 'default (no test config)'}`); + +const capabilities = { browserName: 'duckduckgo' }; +if (configPath) { + capabilities['ddg:privacyConfigPath'] = configPath; +} + +const driver = await new selenium.Builder() + .usingServer('http://localhost:4444') + .withCapabilities(capabilities) + .build(); + +console.log('Session started'); +await driver.get('https://www.nintendo.com/us/'); +await driver.sleep(3000); +console.log('Navigated to Nintendo'); + +// Test each URL individually using synchronous XHR (since async doesn't work well with our driver) +const urlsToTest = [ + 'https://logx.optimizely.com/v1/events', + 'https://cdn.optimizely.com/js/test.js', + 'https://www.google-analytics.com/collect', + 'https://www.googletagmanager.com/gtm.js', + 'https://connect.facebook.net/en_US/fbevents.js' +]; + +const results = { blocked: [], allowed: [], errors: [], url: '' }; + +// Get current page URL +results.url = await driver.executeScript('return location.href'); + +// Test each URL +for (const url of urlsToTest) { + const testScript = ` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); // synchronous + xhr.timeout = 3000; + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `; + + try { + const result = await driver.executeScript(testScript); + if (result.status === 'allowed') { + results.allowed.push({ url, httpStatus: result.code }); + } else { + results.blocked.push({ url, error: result.error }); + } + } catch (e) { + results.errors.push({ url, error: e.message }); + } +} + +console.log('\n🛡️ Content Blocker Probe Results:'); +console.log(` Page: ${results.url}`); + +if (results.blocked.length > 0) { + console.log(`\n ❌ BLOCKED (${results.blocked.length}):`); + results.blocked.forEach(r => console.log(` - ${r.url}`)); +} + +if (results.allowed.length > 0) { + console.log(`\n ✅ ALLOWED (${results.allowed.length}):`); + results.allowed.forEach(r => console.log(` - ${r.url}`)); +} + +if (results.errors.length > 0) { + console.log(`\n ⚠️ ERRORS (${results.errors.length}):`); + results.errors.forEach(r => console.log(` - ${r.url}: ${r.error}`)); +} + +await driver.quit(); +console.log('\nDone'); diff --git a/scripts/protection-toggle-reliability-test.mjs b/scripts/protection-toggle-reliability-test.mjs new file mode 100644 index 0000000..de359d5 --- /dev/null +++ b/scripts/protection-toggle-reliability-test.mjs @@ -0,0 +1,525 @@ +#!/usr/bin/env node +/** + * Protection Toggle Reliability Test + * + * Tests Content Blocker consistency across multiple browser loads. + * Validates there's no race condition in Content Blocker rule compilation. + * + * IMPORTANT ARCHITECTURAL NOTE: + * - `unprotectedTemporary` only disables INJECTED SCRIPT protections (fingerprinting, GPC, etc.) + * - Safari Content Blocker operates INDEPENDENTLY and blocks tracker domains regardless + * - This test verifies Content Blocker consistency, not unprotectedTemporary behavior + * + * Test flow: + * 1. Spin up browser N times, optionally alternating between: + * - Protected mode (default config - trackers SHOULD be blocked by Content Blocker) + * - Unprotected mode (custom config with unprotectedTemporary - trackers STILL blocked by Content Blocker) + * 2. Navigate to https://www.publisher-company.site/product.html?p=12 + * 3. Probe tracker URLs via XHR to verify Content Blocker blocking is active + * 4. Report consistency across all runs (detect race conditions) + * + * Usage: + * node scripts/protection-toggle-reliability-test.mjs [options] + * + * Options: + * --iterations=N Number of test iterations (default: 10) + * --verbose Show detailed output + * --protected-only Only test protected mode (recommended for Content Blocker testing) + * --unprotected-only Only test with unprotectedTemporary config + * --parallel=N Run N sessions in parallel (default: 1) + * + * Environment: + * PLATFORM=macos|ios Target platform (default: macos) + * WEBDRIVER_URL WebDriver server URL (default: http://localhost:4444) + */ + +import { createRequire } from 'node:module'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { execSync } from 'node:child_process'; + +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +// Parse CLI arguments +const args = process.argv.slice(2); +const getArg = (name, defaultValue) => { + const arg = args.find(a => a.startsWith(`--${name}=`)); + return arg ? arg.split('=')[1] : defaultValue; +}; + +const ITERATIONS = parseInt(getArg('iterations', '10'), 10); +const VERBOSE = args.includes('--verbose'); +const PROTECTED_ONLY = args.includes('--protected-only'); +const UNPROTECTED_ONLY = args.includes('--unprotected-only'); +const PARALLEL = parseInt(getArg('parallel', '1'), 10); + +const TEST_URL = 'https://www.publisher-company.site/product.html?p=12'; +const WEBDRIVER_URL = process.env.WEBDRIVER_URL || 'http://localhost:4444'; +const PLATFORM = process.env.PLATFORM || 'macos'; + +// Unprotected config path (has publisher-company.site in unprotectedTemporary) +const UNPROTECTED_CONFIG_PATH = path.resolve(__dirname, '../test-configs/nintendo-unprotected-full.json'); + +// Tracker URLs to probe - these are the ones the test page loads +const PAGE_TRACKERS = [ + 'https://convert.ad-company.site/convert.js', + 'https://www.ad-company.site/track.js' +]; + +// Additional common trackers for comprehensive testing +const COMMON_TRACKERS = [ + 'https://www.google-analytics.com/collect', + 'https://www.googletagmanager.com/gtm.js' +]; + +const ALL_TRACKERS = [...PAGE_TRACKERS, ...COMMON_TRACKERS]; + +function log(...args) { + console.log(`[${new Date().toISOString()}]`, ...args); +} + +function verbose(...args) { + if (VERBOSE) console.log(` [verbose]`, ...args); +} + +/** + * Probe tracker URLs to determine blocking status + * @param {selenium.WebDriver} driver + * @returns {Promise<{blocked: string[], allowed: string[], errors: string[]}>} + */ +async function probeTrackers(driver) { + const results = { blocked: [], allowed: [], errors: [] }; + + for (const url of ALL_TRACKERS) { + const testScript = ` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); // synchronous + xhr.timeout = 3000; + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `; + + try { + const result = await driver.executeScript(testScript); + if (result && result.status === 'allowed') { + results.allowed.push(url); + } else { + results.blocked.push(url); + } + } catch (e) { + results.errors.push(url); + } + } + + return results; +} + +/** + * Run a single test iteration + * @param {number} iteration - Iteration number + * @param {boolean} useProtected - Whether to use protected mode + * @returns {Promise<{success: boolean, mode: string, blockedCount: number, allowedCount: number, duration: number, error?: string}>} + */ +async function runIteration(iteration, useProtected) { + const mode = useProtected ? 'protected' : 'unprotected'; + const startTime = Date.now(); + + verbose(`Iteration ${iteration}: Starting ${mode} mode test`); + + // Ensure no stale sessions exist + await ensureCleanSession(); + + const capabilities = { browserName: 'duckduckgo' }; + + // Add custom config path for unprotected mode + if (!useProtected) { + capabilities['ddg:privacyConfigPath'] = UNPROTECTED_CONFIG_PATH; + } + + let driver; + let result; + + try { + driver = await new selenium.Builder() + .usingServer(WEBDRIVER_URL) + .withCapabilities(capabilities) + .build(); + + verbose(` Session created in ${Date.now() - startTime}ms`); + + // Navigate to test page + await driver.get(TEST_URL); + await driver.sleep(2000); // Allow page to fully load + + verbose(` Page loaded: ${await driver.getCurrentUrl()}`); + + // Probe trackers + const probeResults = await probeTrackers(driver); + + const duration = Date.now() - startTime; + + // Determine if the result matches expectations + const blockedCount = probeResults.blocked.length; + const allowedCount = probeResults.allowed.length; + + // Expected behavior: + // - Protected mode: ALL trackers should be blocked (blockedCount == total, allowedCount == 0) + // - Unprotected mode: ALL trackers should be allowed (blockedCount == 0, allowedCount == total) + + let success; + let expectation; + + // Content Blocker should ALWAYS block trackers regardless of unprotectedTemporary + // (unprotectedTemporary only affects injected script protections, not Content Blocker) + success = blockedCount === ALL_TRACKERS.length && allowedCount === 0; + expectation = `Expected ALL blocked (${ALL_TRACKERS.length}), got blocked=${blockedCount}, allowed=${allowedCount}`; + + if (!useProtected && !success) { + // This is actually expected - unprotectedTemporary doesn't disable Content Blocker + verbose(` Note: unprotectedTemporary doesn't disable Content Blocker (expected behavior)`); + } + + verbose(` Result: ${success ? 'PASS' : 'FAIL'} - ${expectation}`); + + result = { + iteration, + success, + mode, + blockedCount, + allowedCount, + duration, + error: success ? undefined : expectation, + details: probeResults + }; + + } catch (e) { + result = { + iteration, + success: false, + mode, + blockedCount: 0, + allowedCount: 0, + duration: Date.now() - startTime, + error: e.message + }; + } + + // Cleanup: always run this after try/catch + if (driver) { + try { + await driver.quit(); + } catch {} + } + + // Force kill the DuckDuckGo app to ensure clean state for next iteration + try { + execSync('pkill -9 -f "DuckDuckGo.app" 2>/dev/null || true', { timeout: 5000 }); + } catch {} + + // The DDG WebDriver only supports one session - must restart the server + verbose(` Restarting WebDriver for next iteration...`); + await restartWebDriver(); + + return result; +} + +/** + * Restart the WebDriver server to allow a new session + */ +async function restartWebDriver() { + try { + // Kill existing WebDriver + execSync('pkill -9 -f ddgdriver 2>/dev/null || true', { timeout: 5000 }); + } catch {} + + // Wait for port to be released + await new Promise(resolve => setTimeout(resolve, 1000)); + + // Start new WebDriver in background + const { spawn } = await import('node:child_process'); + const scriptPath = path.resolve(__dirname, '../scripts/apple-webdriver.sh'); + + const child = spawn('bash', [scriptPath, 'driver', 'macos'], { + detached: true, + stdio: 'ignore', + env: { + ...process.env, + DERIVED_DATA_PATH: path.resolve(__dirname, '../../apple-browsers/DerivedData'), + MACOS_APP_PATH: path.resolve(__dirname, '../../apple-browsers/DerivedData/Build/Products/Debug/DuckDuckGo.app'), + TARGET_PLATFORM: 'macos' + } + }); + child.unref(); + + // Wait for WebDriver to be ready + for (let i = 0; i < 30; i++) { + try { + const response = await fetch(`${WEBDRIVER_URL}/status`); + if (response.ok) { + verbose(` WebDriver ready after ${i + 1} attempts`); + return; + } + } catch {} + await new Promise(resolve => setTimeout(resolve, 500)); + } + + throw new Error('WebDriver failed to start'); +} + +/** + * Ensure WebDriver has no active sessions and app is closed + */ +async function ensureCleanSession() { + try { + // First, try to delete any existing sessions via WebDriver API + const response = await fetch(`${WEBDRIVER_URL}/sessions`); + const data = await response.json(); + const sessions = data.value || []; + + for (const session of sessions) { + verbose(` Cleaning up stale session: ${session.id}`); + try { + await fetch(`${WEBDRIVER_URL}/session/${session.id}`, { method: 'DELETE' }); + } catch {} + } + + // Kill the DuckDuckGo app to ensure clean state + try { + execSync('osascript -e \'tell application "DuckDuckGo" to quit\' 2>/dev/null', { timeout: 5000 }); + } catch {} + + // Wait for cleanup to complete + await new Promise(resolve => setTimeout(resolve, 2000)); + } catch {} +} + +/** + * Run all test iterations + */ +async function runTests() { + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log('🧪 Protection Toggle Reliability Test'); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log(''); + log(`Configuration:`); + log(` Platform: ${PLATFORM}`); + log(` WebDriver URL: ${WEBDRIVER_URL}`); + log(` Test URL: ${TEST_URL}`); + log(` Iterations: ${ITERATIONS}`); + log(` Mode: ${PROTECTED_ONLY ? 'protected only' : UNPROTECTED_ONLY ? 'unprotected only' : 'alternating'}`); + log(` Parallel sessions: ${PARALLEL}`); + log(` Unprotected config: ${UNPROTECTED_CONFIG_PATH}`); + log(''); + log(`Tracker URLs to probe: ${ALL_TRACKERS.length}`); + ALL_TRACKERS.forEach(url => log(` - ${url}`)); + log(''); + + // Verify config file exists + if (!PROTECTED_ONLY && !fs.existsSync(UNPROTECTED_CONFIG_PATH)) { + log(`❌ ERROR: Unprotected config file not found: ${UNPROTECTED_CONFIG_PATH}`); + process.exit(1); + } + + const results = []; + const startTime = Date.now(); + + // Generate test plan + const testPlan = []; + for (let i = 0; i < ITERATIONS; i++) { + if (PROTECTED_ONLY) { + testPlan.push({ iteration: i + 1, protected: true }); + } else if (UNPROTECTED_ONLY) { + testPlan.push({ iteration: i + 1, protected: false }); + } else { + // Alternate between protected and unprotected + testPlan.push({ iteration: i + 1, protected: i % 2 === 0 }); + } + } + + log(`Running ${testPlan.length} iterations...`); + log(''); + + // Run tests (sequentially or in parallel) + if (PARALLEL > 1) { + // Parallel execution + for (let i = 0; i < testPlan.length; i += PARALLEL) { + const batch = testPlan.slice(i, i + PARALLEL); + const batchPromises = batch.map(t => runIteration(t.iteration, t.protected)); + const batchResults = await Promise.all(batchPromises); + results.push(...batchResults); + + // Log batch progress + batchResults.forEach(r => { + const icon = r.success ? '✓' : '✗'; + const modeIcon = r.mode === 'protected' ? '🛡️' : '🔓'; + log(` ${icon} Iteration ${r.iteration} ${modeIcon} ${r.mode}: blocked=${r.blockedCount}, allowed=${r.allowedCount}, ${r.duration}ms`); + }); + } + } else { + // Sequential execution + for (const test of testPlan) { + const result = await runIteration(test.iteration, test.protected); + results.push(result); + + const icon = result.success ? '✓' : '✗'; + const modeIcon = result.mode === 'protected' ? '🛡️' : '🔓'; + log(` ${icon} Iteration ${result.iteration} ${modeIcon} ${result.mode}: blocked=${result.blockedCount}, allowed=${result.allowedCount}, ${result.duration}ms`); + + if (!result.success && result.error) { + log(` ⚠️ ${result.error}`); + } + } + } + + const totalDuration = Date.now() - startTime; + + // Analyze results + log(''); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log('📊 RESULTS SUMMARY'); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log(''); + + const protectedResults = results.filter(r => r.mode === 'protected'); + const unprotectedResults = results.filter(r => r.mode === 'unprotected'); + + const protectedPass = protectedResults.filter(r => r.success).length; + const protectedFail = protectedResults.filter(r => !r.success).length; + const unprotectedPass = unprotectedResults.filter(r => r.success).length; + const unprotectedFail = unprotectedResults.filter(r => !r.success).length; + + const totalPass = results.filter(r => r.success).length; + const totalFail = results.filter(r => !r.success).length; + + if (protectedResults.length > 0) { + const protectedRate = ((protectedPass / protectedResults.length) * 100).toFixed(1); + log(`🛡️ Protected Mode:`); + log(` Pass: ${protectedPass}/${protectedResults.length} (${protectedRate}%)`); + log(` Fail: ${protectedFail}/${protectedResults.length}`); + log(` Avg duration: ${Math.round(protectedResults.reduce((sum, r) => sum + r.duration, 0) / protectedResults.length)}ms`); + log(''); + } + + if (unprotectedResults.length > 0) { + const unprotectedRate = ((unprotectedPass / unprotectedResults.length) * 100).toFixed(1); + log(`🔓 Unprotected Mode:`); + log(` Pass: ${unprotectedPass}/${unprotectedResults.length} (${unprotectedRate}%)`); + log(` Fail: ${unprotectedFail}/${unprotectedResults.length}`); + log(` Avg duration: ${Math.round(unprotectedResults.reduce((sum, r) => sum + r.duration, 0) / unprotectedResults.length)}ms`); + log(''); + } + + const overallRate = ((totalPass / results.length) * 100).toFixed(1); + log(`📈 Overall:`); + log(` Pass: ${totalPass}/${results.length} (${overallRate}%)`); + log(` Fail: ${totalFail}/${results.length}`); + log(` Total duration: ${Math.round(totalDuration / 1000)}s`); + log(''); + + // Race condition analysis + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log('🔍 RACE CONDITION ANALYSIS'); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log(''); + + // Check for inconsistencies within same mode + const protectedConsistent = protectedResults.every(r => + r.blockedCount === protectedResults[0]?.blockedCount && + r.allowedCount === protectedResults[0]?.allowedCount + ); + const unprotectedConsistent = unprotectedResults.every(r => + r.blockedCount === unprotectedResults[0]?.blockedCount && + r.allowedCount === unprotectedResults[0]?.allowedCount + ); + + if (protectedResults.length > 0) { + if (protectedConsistent && protectedFail === 0) { + log(`✅ Protected mode: CONSISTENT - All ${protectedResults.length} iterations identical`); + } else if (protectedConsistent) { + log(`⚠️ Protected mode: CONSISTENT but FAILING - All identical but wrong behavior`); + } else { + log(`❌ Protected mode: INCONSISTENT - Race condition detected!`); + const blockedCounts = [...new Set(protectedResults.map(r => r.blockedCount))]; + const allowedCounts = [...new Set(protectedResults.map(r => r.allowedCount))]; + log(` Blocked counts seen: ${blockedCounts.join(', ')}`); + log(` Allowed counts seen: ${allowedCounts.join(', ')}`); + } + } + + if (unprotectedResults.length > 0) { + if (unprotectedConsistent && unprotectedFail === 0) { + log(`✅ Unprotected mode: CONSISTENT - All ${unprotectedResults.length} iterations identical`); + } else if (unprotectedConsistent) { + log(`⚠️ Unprotected mode: CONSISTENT but FAILING - All identical but wrong behavior`); + } else { + log(`❌ Unprotected mode: INCONSISTENT - Race condition detected!`); + const blockedCounts = [...new Set(unprotectedResults.map(r => r.blockedCount))]; + const allowedCounts = [...new Set(unprotectedResults.map(r => r.allowedCount))]; + log(` Blocked counts seen: ${blockedCounts.join(', ')}`); + log(` Allowed counts seen: ${allowedCounts.join(', ')}`); + } + } + + log(''); + + // Final verdict + const noRaceCondition = (protectedConsistent || protectedResults.length === 0) && + (unprotectedConsistent || unprotectedResults.length === 0); + const allPassing = totalFail === 0; + + if (allPassing && noRaceCondition) { + log('✅ VERDICT: No race condition detected - Configuration switching is reliable'); + } else if (noRaceCondition && !allPassing) { + log('⚠️ VERDICT: Consistent but incorrect behavior - Check config or Content Blocker readiness'); + } else { + log('❌ VERDICT: Race condition detected - Results vary between identical configurations'); + } + + log(''); + + // Save detailed results + const resultsDir = path.join(process.cwd(), 'test-results'); + if (!fs.existsSync(resultsDir)) { + fs.mkdirSync(resultsDir, { recursive: true }); + } + + const resultsFile = path.join(resultsDir, `protection-toggle-test-${Date.now()}.json`); + const reportData = { + timestamp: new Date().toISOString(), + platform: PLATFORM, + testUrl: TEST_URL, + iterations: ITERATIONS, + mode: PROTECTED_ONLY ? 'protected-only' : UNPROTECTED_ONLY ? 'unprotected-only' : 'alternating', + totalDuration, + summary: { + protected: { pass: protectedPass, fail: protectedFail, total: protectedResults.length, consistent: protectedConsistent }, + unprotected: { pass: unprotectedPass, fail: unprotectedFail, total: unprotectedResults.length, consistent: unprotectedConsistent }, + overall: { pass: totalPass, fail: totalFail, total: results.length } + }, + raceConditionDetected: !noRaceCondition, + allPassing, + results + }; + + fs.writeFileSync(resultsFile, JSON.stringify(reportData, null, 2)); + log(`Results saved to: ${resultsFile}`); + + // Exit with appropriate code + return allPassing && noRaceCondition ? 0 : 1; +} + +// Run the tests +runTests() + .then(exitCode => process.exit(exitCode)) + .catch(e => { + console.error('Test failed with error:', e); + process.exit(1); + }); diff --git a/scripts/race-condition-test.mjs b/scripts/race-condition-test.mjs new file mode 100644 index 0000000..984c3c6 --- /dev/null +++ b/scripts/race-condition-test.mjs @@ -0,0 +1,273 @@ +#!/usr/bin/env node +/** + * Race Condition Test Script + * + * Tests the Content Blocker race condition fix using a simple page with trackers. + * This verifies that: + * 1. WebDriver waits for Content Blocker to be ready before starting session + * 2. Trackers are blocked from the very first page load + * 3. The race condition fix is working (not just timeout fallback) + * + * Usage: + * node scripts/race-condition-test.mjs [--verbose] + * + * Environment: + * PLATFORM=macos|ios - Target platform (default: macos) + * WEBDRIVER_URL=http://localhost:4444 - WebDriver server URL + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); +// Using synchronous XHR probing instead of debug-utils async version +import fs from 'node:fs'; +import path from 'node:path'; + +const VERBOSE = process.argv.includes('--verbose'); +const TEST_URL = 'https://www.publisher-company.site/product.html?p=12'; + +// The test page loads trackers from ad-company.site domains +// The page UI shows the blocking status of each resource +const PAGE_TRACKERS = [ + 'https://convert.ad-company.site/convert.js', + 'https://www.ad-company.site/track.js' +]; + +// Additional common tracker URLs to probe +const COMMON_TRACKERS = [ + 'https://www.google-analytics.com/collect', + 'https://www.googletagmanager.com/gtm.js', + 'https://connect.facebook.net/en_US/fbevents.js' +]; + +function log(...args) { + console.log(`[${new Date().toISOString()}]`, ...args); +} + +function verbose(...args) { + if (VERBOSE) console.log(`[DEBUG]`, ...args); +} + +async function runTest() { + log('🧪 Race Condition Test'); + log(` Test URL: ${TEST_URL}`); + log(` Expected: Trackers should be blocked immediately`); + log(''); + + const webdriverUrl = process.env.WEBDRIVER_URL || 'http://localhost:4444'; + const platform = process.env.PLATFORM || 'macos'; + + log(`Platform: ${platform}`); + log(`WebDriver URL: ${webdriverUrl}`); + log(''); + + // Record timing + const timings = { + sessionStart: Date.now(), + sessionReady: null, + pageLoad: null, + probeComplete: null + }; + + // Create WebDriver session + log('📱 Creating WebDriver session...'); + const capabilities = { browserName: 'duckduckgo' }; + + let driver; + try { + driver = await new selenium.Builder() + .usingServer(webdriverUrl) + .withCapabilities(capabilities) + .build(); + + timings.sessionReady = Date.now(); + log(`✓ Session ready in ${timings.sessionReady - timings.sessionStart}ms`); + log(' (This includes Content Blocker compilation time)'); + log(''); + } catch (e) { + log(`❌ Failed to create session: ${e.message}`); + log(''); + log('Make sure WebDriver is running:'); + log(` PLATFORM=${platform} ./webdriver/target/release/ddgdriver --port 4444`); + process.exit(1); + } + + try { + // Navigate to test page + log(`🌐 Navigating to ${TEST_URL}...`); + await driver.get(TEST_URL); + await driver.sleep(2000); // Allow page to fully load + + timings.pageLoad = Date.now(); + const currentUrl = await driver.getCurrentUrl(); + log(`✓ Page loaded in ${timings.pageLoad - timings.sessionReady}ms`); + log(` Current URL: ${currentUrl}`); + log(''); + + // Read the page's built-in tracker status display + log('📊 Reading page tracker status display...'); + const pageTrackerStatus = await driver.executeScript(` + // Open the Resources details element + const details = document.querySelector('details'); + if (details) details.open = true; + + // Read all list items showing tracker status + const items = document.querySelectorAll('li'); + return Array.from(items).map(li => { + const text = li.textContent.trim(); + const url = li.querySelector('a')?.href || text.split(' ')[0]; + const isBlocked = text.includes('blocked'); + return { text, url, blocked: isBlocked }; + }); + `); + + if (pageTrackerStatus && pageTrackerStatus.length > 0) { + log('Page reports the following tracker status:'); + pageTrackerStatus.forEach(t => { + const icon = t.blocked ? '❌' : '✅'; + log(` ${icon} ${t.text}`); + }); + } + + // Probe for blocked resources using synchronous XHR + log(''); + log('🛡️ Probing Content Blocker via XHR...'); + const probeResults = { blocked: [], allowed: [], errors: [], url: '', pageStatus: pageTrackerStatus }; + + probeResults.url = await driver.executeScript('return location.href'); + + // Combine page trackers and common trackers + const allTrackers = [...PAGE_TRACKERS, ...COMMON_TRACKERS]; + + for (const url of allTrackers) { + const testScript = ` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); // synchronous + xhr.timeout = 3000; + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `; + + try { + const result = await driver.executeScript(testScript); + if (result && result.status === 'allowed') { + probeResults.allowed.push({ url, httpStatus: result.code }); + } else { + probeResults.blocked.push({ url, error: result?.error || 'unknown' }); + } + } catch (e) { + probeResults.errors.push({ url, error: e.message }); + } + } + + timings.probeComplete = Date.now(); + + log(''); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log('📊 RESULTS'); + log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + log(''); + + const blockedCount = probeResults.blocked?.length || 0; + const allowedCount = probeResults.allowed?.length || 0; + const totalTrackers = PAGE_TRACKERS.length + COMMON_TRACKERS.length; + + // Determine test result + const raceConditionFixed = blockedCount > 0; + const allBlocked = blockedCount === totalTrackers && allowedCount === 0; + + if (allBlocked) { + log('✅ ALL TRACKERS BLOCKED'); + log(` Blocked: ${blockedCount}/${totalTrackers}`); + log(' Race condition fix: VERIFIED ✓'); + log(''); + log(' The Content Blocker was ready before page load.'); + } else if (raceConditionFixed) { + log('⚠️ PARTIAL BLOCKING'); + log(` Blocked: ${blockedCount}/${totalTrackers}`); + log(` Allowed: ${allowedCount}/${totalTrackers}`); + log(' Race condition fix: PARTIAL'); + log(''); + log(' Some trackers were blocked. The Content Blocker may have been'); + log(' ready for some rules but not others, or some URLs may not be in our tracker list.'); + } else { + log('❌ NO TRACKERS BLOCKED'); + log(` Allowed: ${allowedCount}/${totalTrackers}`); + log(' Race condition fix: NOT WORKING'); + log(''); + log(' The Content Blocker rules were not applied before the test ran.'); + log(' This indicates the race condition fix is not working properly.'); + } + + log(''); + log('Timing Summary:'); + log(` Session startup: ${timings.sessionReady - timings.sessionStart}ms`); + log(` Page load: ${timings.pageLoad - timings.sessionReady}ms`); + log(` Total test time: ${timings.probeComplete - timings.sessionStart}ms`); + log(''); + + // Save results to file for documentation + const results = { + timestamp: new Date().toISOString(), + testUrl: TEST_URL, + platform, + timings: { + sessionStartup: timings.sessionReady - timings.sessionStart, + pageLoad: timings.pageLoad - timings.sessionReady, + totalTest: timings.probeComplete - timings.sessionStart + }, + blocking: { + blocked: blockedCount, + allowed: allowedCount, + total: totalTrackers, + allBlocked, + raceConditionFixed + }, + probeDetails: probeResults + }; + + const resultsDir = path.join(process.cwd(), 'test-results'); + if (!fs.existsSync(resultsDir)) { + fs.mkdirSync(resultsDir, { recursive: true }); + } + + const resultsFile = path.join(resultsDir, `race-condition-test-${Date.now()}.json`); + fs.writeFileSync(resultsFile, JSON.stringify(results, null, 2)); + log(`Results saved to: ${resultsFile}`); + + // Take screenshot for documentation + try { + const screenshot = await driver.takeScreenshot(); + const screenshotDir = path.join(process.cwd(), 'screenshots'); + if (!fs.existsSync(screenshotDir)) { + fs.mkdirSync(screenshotDir, { recursive: true }); + } + const screenshotFile = path.join(screenshotDir, `race-condition-test-${Date.now()}.png`); + fs.writeFileSync(screenshotFile, screenshot, 'base64'); + log(`Screenshot saved to: ${screenshotFile}`); + } catch (e) { + verbose('Screenshot failed:', e.message); + } + + // Return exit code based on result + return allBlocked ? 0 : (raceConditionFixed ? 0 : 1); + + } finally { + log(''); + log('Cleaning up...'); + await driver.quit(); + log('Done.'); + } +} + +// Run the test +runTest() + .then(exitCode => process.exit(exitCode)) + .catch(e => { + console.error('Test failed with error:', e); + process.exit(1); + }); diff --git a/scripts/run-server.mjs b/scripts/run-server.mjs index ab6f7c7..7ea8229 100644 --- a/scripts/run-server.mjs +++ b/scripts/run-server.mjs @@ -4,6 +4,6 @@ fork('./scripts/server.mjs', { env: { ...process.env, SERVER_DIR: 'build/', - SERVER_PORT: '8383', + SERVER_PORT: '8484', }, -}); \ No newline at end of file +}); diff --git a/scripts/safari-control-test.mjs b/scripts/safari-control-test.mjs new file mode 100644 index 0000000..3027e0a --- /dev/null +++ b/scripts/safari-control-test.mjs @@ -0,0 +1,78 @@ +#!/usr/bin/env node +/** + * Safari Control Test (No Content Blocking) + * + * Runs the same tracker probe in Safari to verify that: + * 1. Trackers are NOT blocked in Safari (control case) + * 2. The publisher-company.site page correctly reports tracker status + * + * This validates the race condition test isn't giving false positives. + */ + +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const TEST_URL = 'https://www.publisher-company.site/product.html?p=12'; + +// The actual trackers the page loads (visible in page UI) +const PAGE_TRACKERS = [ + 'https://convert.ad-company.site/convert.js', + 'https://www.ad-company.site/track.js' +]; + +console.log('🧪 Safari Control Test (No Content Blocking)'); +console.log(` URL: ${TEST_URL}`); +console.log(''); + +const driver = await new selenium.Builder() + .forBrowser('safari') + .build(); + +try { + await driver.get(TEST_URL); + await driver.sleep(3000); + + console.log('Current URL:', await driver.getCurrentUrl()); + + // Check what the page reports + const pageReport = await driver.executeScript(` + const details = document.querySelector('details'); + if (details) details.open = true; + const items = document.querySelectorAll('li'); + return Array.from(items).map(li => li.textContent.trim()); + `); + + console.log(''); + console.log('📊 Page tracker status (from page UI):'); + pageReport.forEach(r => console.log(' ', r)); + + // Probe the same trackers + console.log(''); + console.log('🔍 Probing trackers via XHR:'); + for (const url of PAGE_TRACKERS) { + const result = await driver.executeScript(` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); + xhr.timeout = 3000; + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `); + const statusIcon = result.status === 'allowed' ? '✅' : '❌'; + console.log(` ${statusIcon} ${url}: ${result.status}${result.code ? ' (HTTP '+result.code+')' : ''}`); + } + + console.log(''); + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + console.log('Expected: Trackers should be ALLOWED in Safari (no Content Blocker)'); + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + +} finally { + await driver.quit(); +} +console.log(''); +console.log('Done'); diff --git a/scripts/safari-debug-page.mjs b/scripts/safari-debug-page.mjs new file mode 100644 index 0000000..3db1b96 --- /dev/null +++ b/scripts/safari-debug-page.mjs @@ -0,0 +1,210 @@ +#!/usr/bin/env node +/** + * Safari Debug Page Inspector + * + * Runs the same debug inspections as debug-page.mjs but in Safari. + * Useful for comparing page state between Safari (no DDG protection) and DDG browser. + * + * Prerequisites: + * - Enable "Allow Remote Automation" in Safari > Develop menu + * - Run: safaridriver --enable (once, requires sudo) + * + * Usage: + * node scripts/safari-debug-page.mjs # Inspect page + * node scripts/safari-debug-page.mjs --links # Show link analysis + * node scripts/safari-debug-page.mjs --inputs # Show form inputs + * node scripts/safari-debug-page.mjs --modals # Detect modals + * node scripts/safari-debug-page.mjs --errors # Show resource errors + * node scripts/safari-debug-page.mjs --all # Run all inspections + * node scripts/safari-debug-page.mjs --json # Output as JSON + */ + +import { createRequire } from 'node:module'; +import { debugScripts } from './debug-utils.mjs'; + +const localRequire = createRequire(import.meta.url); +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const safari = localRequire('selenium-webdriver/safari'); + +// Parse args +const args = process.argv.slice(2); +const url = args.find(arg => !arg.startsWith('--')) || 'https://duckduckgo.com'; +const showLinks = args.includes('--links'); +const showInputs = args.includes('--inputs'); +const showModals = args.includes('--modals'); +const showErrors = args.includes('--errors'); +const showAll = args.includes('--all'); +const outputJson = args.includes('--json'); + +const results = { + browser: 'safari', + url, + timestamp: new Date().toISOString(), + pageState: null, + elements: null, + links: null, + inputs: null, + modals: null, + errors: null +}; + +async function main() { + if (!outputJson) { + console.log('🔍 Safari Debug Inspector'); + console.log(` URL: ${url}\n`); + } + + const options = new safari.Options(); + + let driver; + try { + driver = await new selenium.Builder() + .forBrowser('safari') + .setSafariOptions(options) + .build(); + } catch (err) { + if (err.message.includes('safaridriver')) { + console.error('❌ Safari WebDriver not enabled.'); + console.error(' Run: sudo safaridriver --enable'); + console.error(' Then enable "Allow Remote Automation" in Safari > Develop menu'); + process.exit(1); + } + throw err; + } + + try { + await driver.get(url); + await driver.sleep(2000); // Allow page to settle + + // Get page state + const pageState = await driver.executeScript(`return (function() { ${debugScripts.pageState} })()`); + results.pageState = pageState; + + if (!outputJson) { + console.log('📄 Page State:'); + console.log(` URL: ${pageState.url}`); + console.log(` Title: ${pageState.title}`); + console.log(` Ready: ${pageState.readyState}`); + console.log(` Viewport: ${pageState.viewport.width}x${pageState.viewport.height}`); + } + + // Actionable elements (default) + if (!showLinks && !showInputs && !showModals || showAll) { + const elements = await driver.executeScript(`return (function() { ${debugScripts.actionableElements} })()`); + results.elements = elements; + + if (!outputJson) { + const links = elements.filter(e => e.tag === 'a'); + const buttons = elements.filter(e => e.tag !== 'a'); + + console.log('\n🎯 Actionable Elements:'); + if (buttons.length > 0) { + console.log(`\n Buttons (${buttons.length}):`); + buttons.slice(0, 15).forEach(e => { + const status = e.disabled ? '🔒' : '✓'; + console.log(` ${status} [${e.selector}] "${e.text}"`); + }); + if (buttons.length > 15) console.log(` ... and ${buttons.length - 15} more`); + } + + if (links.length > 0) { + console.log(`\n Links (${links.length}):`); + links.slice(0, 15).forEach(e => { + const icon = e.hrefType === 'hash-only' ? '⚠️' : + e.hrefType === 'javascript' ? '⚠️' : '→'; + console.log(` ${icon} [${e.selector}] "${e.text}" ${e.href?.substring(0, 40) || ''}`); + }); + if (links.length > 15) console.log(` ... and ${links.length - 15} more`); + } + } + } + + // Link analysis + if (showLinks || showAll) { + const analysis = await driver.executeScript(`return (function() { ${debugScripts.linkAnalysis} })()`); + results.links = analysis; + + if (!outputJson) { + console.log('\n🔗 Link Analysis:'); + console.log(` Navigation: ${analysis.navigation.length}`); + console.log(` JS-triggered: ${analysis.jsTriggered.length}`); + console.log(` External: ${analysis.external.length}`); + + if (analysis.jsTriggered.length > 0) { + console.log('\n ⚠️ JS-triggered links:'); + analysis.jsTriggered.slice(0, 10).forEach(l => { + console.log(` "${l.text}"`); + }); + } + } + } + + // Form inputs + if (showInputs || showAll) { + const inputs = await driver.executeScript(`return (function() { ${debugScripts.formInputs} })()`); + results.inputs = inputs; + + if (!outputJson) { + console.log('\n📝 Form Inputs:'); + if (inputs.length === 0) { + console.log(' No visible inputs found'); + } else { + inputs.forEach(i => { + const status = i.disabled ? '🔒' : i.required ? '*' : ' '; + console.log(` ${status} [${i.selector}] type=${i.type} ${i.placeholder ? `"${i.placeholder}"` : ''}`); + }); + } + } + } + + // Modal detection + if (showModals || showAll) { + const modalInfo = await driver.executeScript(`return (function() { ${debugScripts.detectModals} })()`); + results.modals = modalInfo; + + if (!outputJson) { + console.log('\n🪟 Modal Detection:'); + if (!modalInfo.hasModal) { + console.log(' No modals detected'); + } else { + console.log(` Found ${modalInfo.modals.length} modal(s):`); + modalInfo.modals.forEach(m => { + console.log(` [${m.selector}] "${m.text?.substring(0, 50)}"`); + }); + } + } + } + + // Resource errors + if (showErrors || showAll) { + const errorInfo = await driver.executeScript(`return (function() { ${debugScripts.getResourceErrors} })()`); + results.errors = errorInfo; + + if (!outputJson) { + console.log('\n🔴 Resource Errors:'); + if (errorInfo.errors.length === 0) { + console.log(' No resource errors detected'); + } else { + errorInfo.errors.forEach(e => { + console.log(` ❌ ${e.type}: ${e.name.substring(0, 80)}`); + }); + } + } + } + + if (outputJson) { + console.log(JSON.stringify(results, null, 2)); + } else { + console.log('\n✅ Done'); + } + + } finally { + await driver.quit(); + } +} + +main().catch(err => { + console.error('❌ Error:', err.message); + process.exit(1); +}); diff --git a/scripts/search-company-flow.mjs b/scripts/search-company-flow.mjs new file mode 100644 index 0000000..c8c4de3 --- /dev/null +++ b/scripts/search-company-flow.mjs @@ -0,0 +1,326 @@ +import { createRequire } from 'node:module'; +import { writeFile, mkdir } from 'node:fs/promises'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); + +const localRequire = createRequire(import.meta.url); + +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const { By } = selenium; + +const args = process.argv.slice(2); +const keepOpen = args.includes('--keep') || !args.includes('--no-keep'); +const takeScreenshot = args.includes('--screenshot'); +const url = args.find((arg) => !arg.startsWith('--')) ?? 'https://www.search-company.site/'; + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; +const expectedPlatform = process.env.PLATFORM || process.env.TARGET_PLATFORM; + +// Save a screenshot to file +async function saveScreenshot(driver, filename) { + const screenshotsDir = join(scriptsDir, '..', 'screenshots'); + try { + await mkdir(screenshotsDir, { recursive: true }); + const screenshotBase64 = await driver.takeScreenshot(); + const screenshotBuffer = Buffer.from(screenshotBase64, 'base64'); + const filepath = join(screenshotsDir, filename); + await writeFile(filepath, screenshotBuffer); + console.log(`📸 Screenshot saved: ${filepath}`); + return filepath; + } catch (e) { + console.error('❌ Failed to take screenshot:', e.message); + return null; + } +} + +// Helper to clean up any existing sessions +async function cleanupExistingSessions() { + try { + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + const sessions = data.value || (Array.isArray(data) ? data : []); + if (Array.isArray(sessions) && sessions.length > 0) { + console.log(`Found ${sessions.length} existing session(s), cleaning up...`); + for (const session of sessions) { + try { + const sessionId = session.id || session.sessionId || session; + await fetch(`${serverUrl}/session/${sessionId}`, { method: 'DELETE' }); + console.log(` Deleted session: ${sessionId}`); + } catch (e) { + // Ignore errors during cleanup + } + } + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } + } catch (e) { + // Server might not be running or might not support /sessions endpoint + } +} + +// Fill out the checkout form +async function fillCheckoutForm(driver) { + console.log('\n📝 Filling out checkout form...'); + + const fields = [ + { id: 'cc-name', value: 'John Test', label: 'Cardholder Name' }, + { id: 'cc-number', value: '4111111111111111', label: 'Card Number' }, + { id: 'cc-exp-month', value: '12', label: 'Expiry Month' }, + { id: 'cc-exp-year', value: '2028', label: 'Expiry Year' }, + { id: 'cc-csc', value: '123', label: 'CSC' }, + ]; + + for (const field of fields) { + try { + const input = await driver.findElement(By.id(field.id)); + await input.clear(); + await input.sendKeys(field.value); + console.log(` ✓ ${field.label}: ${field.value}`); + } catch (e) { + console.warn(` ✗ Failed to fill ${field.label}:`, e.message); + } + } + + // Click the Pay button + try { + const payButton = await driver.findElement(By.id('pay-button')); + console.log(' Clicking Pay button...'); + await payButton.click(); + await waitForPageReady(driver); + const newUrl = await driver.getCurrentUrl(); + console.log(` ✓ Form submitted! Now at: ${newUrl}`); + return true; + } catch (e) { + console.warn(' ✗ Failed to submit form:', e.message); + return false; + } +} + +// Wait for page to be ready (document.readyState === 'complete') +async function waitForPageReady(driver, timeout = 10000) { + const start = Date.now(); + while (Date.now() - start < timeout) { + try { + const readyState = await driver.executeScript('return document.readyState'); + if (readyState === 'complete') { + // Small extra wait for dynamic JS content + await new Promise((resolve) => setTimeout(resolve, 1000)); + return true; + } + } catch (e) { + // Script execution failed, wait and retry + } + await new Promise((resolve) => setTimeout(resolve, 200)); + } + console.warn('Page ready timeout'); + return false; +} + +// Find all link elements on the page +async function findLinks(driver) { + const clickables = []; + + try { + const links = await driver.findElements(By.css('a[href]')); + + for (const link of links) { + try { + const href = await link.getAttribute('href'); + const text = await link.getText(); + + // Filter out javascript: and # links + if (href && !href.startsWith('javascript:') && !href.startsWith('#')) { + clickables.push({ element: link, type: 'link', href, text: text || href }); + } + } catch (e) { + // Element became stale, skip it + } + } + } catch (e) { + console.warn('Error finding links:', e.message); + } + + return clickables; +} + +// Click through pages until completion +async function clickThroughFlow(driver, startUrl) { + const visitedUrls = new Set(); + const maxPages = 20; // Safety limit + let currentUrl = startUrl; + let pageCount = 0; + + console.log(`\nStarting flow from: ${startUrl}\n`); + + while (pageCount < maxPages) { + pageCount++; + console.log(`\nPage ${pageCount}: ${currentUrl}`); + + // Navigate to current URL + try { + await driver.get(currentUrl); + await waitForPageReady(driver); + } catch (e) { + console.error(`Failed to load ${currentUrl}:`, e.message); + break; + } + + // Get current URL after navigation (may have changed) + try { + currentUrl = await driver.getCurrentUrl(); + visitedUrls.add(currentUrl); + } catch (e) { + console.error('Failed to get current URL:', e.message); + break; + } + + // Get page title + try { + const title = await driver.getTitle(); + console.log(` Title: ${title}`); + } catch (e) { + // Ignore title errors + } + + // Find links on the page + const links = await findLinks(driver); + console.log(` Found ${links.length} link(s)`); + + if (links.length === 0) { + console.log('No links found. Flow complete!'); + break; + } + + // List available links + for (const link of links) { + console.log(` - ${link.text || '(no text)'}: ${link.href}`); + } + + // Find a link that leads to a new page (not already visited) + let clicked = false; + for (const link of links) { + try { + const targetUrl = new URL(link.href, currentUrl).href; + const normalizedTarget = targetUrl.split('#')[0]; + const normalizedCurrent = currentUrl.split('#')[0]; + + if (normalizedTarget !== normalizedCurrent && !visitedUrls.has(normalizedTarget)) { + console.log(` Clicking: "${link.text || link.href}"`); + + // Check for target="_blank" which opens in new tab + let linkTarget = null; + try { + linkTarget = await link.element.getAttribute('target'); + } catch (e) { + // Ignore attribute errors + } + + if (linkTarget === '_blank') { + // Navigate directly instead of clicking (new tab links won't work) + console.log(` (target="_blank" detected, navigating directly)`); + await driver.get(targetUrl); + } else { + await link.element.click(); + } + await waitForPageReady(driver); + + // Verify navigation + const newUrl = await driver.getCurrentUrl(); + const normalizedNew = newUrl.split('#')[0]; + if (normalizedNew !== normalizedCurrent) { + currentUrl = newUrl; + visitedUrls.add(normalizedNew); + clicked = true; + console.log(` Navigated to: ${currentUrl}`); + break; + } + } + } catch (e) { + console.warn(` Failed to click "${link.text}":`, e.message); + continue; + } + } + + if (!clicked) { + // Check if we're on checkout page and should fill the form + if (currentUrl.includes('checkout')) { + const formFilled = await fillCheckoutForm(driver); + if (formFilled) { + // Update current URL after form submission + currentUrl = await driver.getCurrentUrl(); + visitedUrls.add(currentUrl.split('#')[0]); + } + } + console.log('No new pages to visit. Flow complete!'); + break; + } + } + + if (pageCount >= maxPages) { + console.log(`\nReached maximum page limit (${maxPages}). Stopping.`); + } + + console.log(`\nSummary:`); + console.log(` Pages visited: ${visitedUrls.size}`); + console.log(` URLs:`); + Array.from(visitedUrls).forEach((url, idx) => { + console.log(` ${idx + 1}. ${url}`); + }); +} + +await cleanupExistingSessions(); + +let driver; +try { + driver = await new selenium.Builder().usingServer(serverUrl).withCapabilities({ browserName: 'duckduckgo' }).build(); + + if (expectedPlatform === 'macos') { + try { + const automationCheck = await fetch('http://localhost:8788/getUrl'); + if (!automationCheck.ok) { + console.warn('⚠️ Warning: Expected macOS but automation server (port 8788) is not responding.'); + console.warn(' Make sure you ran: npm run driver:macos'); + } + } catch (e) { + console.warn('⚠️ Warning: Expected macOS but automation server (port 8788) is not accessible.'); + console.warn(' Make sure you ran: npm run driver:macos (not driver:ios)'); + } + } + + await clickThroughFlow(driver, url); + + // Take screenshot at end of flow + if (takeScreenshot) { + const timestamp = new Date().toISOString().replace(/[:.]/g, '-'); + await saveScreenshot(driver, `search-company-final-${timestamp}.png`); + } + + if (keepOpen) { + console.log('\n✅ Browser will stay open. Press Ctrl+C to quit.'); + await new Promise(() => {}); + } else { + console.log('\n⚠️ Browser will close automatically. Use --keep to keep it open.'); + } +} catch (error) { + console.error('Error:', error.message); + if (error.message.includes('Session is already started') || error.message.includes('SessionNotCreatedError')) { + console.error('\n💡 Tip: There may be an existing session. Try one of these:'); + console.error(' Option 1 - Restart the driver:'); + console.error(' 1. Stop the WebDriver server (Ctrl+C in the driver terminal)'); + console.error(' 2. Restart it with: npm run driver:macos (or driver:ios)'); + console.error(' 3. Run this command again'); + } + process.exit(1); +} finally { + if (driver && !keepOpen) { + try { + await driver.quit(); + } catch (e) { + // Ignore errors during quit + } + } +} diff --git a/scripts/selenium-navigate-example.mjs b/scripts/selenium-navigate-example.mjs new file mode 100644 index 0000000..0d2b41d --- /dev/null +++ b/scripts/selenium-navigate-example.mjs @@ -0,0 +1,102 @@ +import { createRequire } from 'node:module'; + +const localRequire = createRequire(import.meta.url); + +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); + +const args = process.argv.slice(2); +const keepOpen = args.includes('--keep') || !args.includes('--no-keep'); // Default to keeping open unless --no-keep is specified +const url = args.find((arg) => !arg.startsWith('--')) ?? 'https://example.com'; + +const serverUrl = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; +const expectedPlatform = process.env.PLATFORM || process.env.TARGET_PLATFORM; + +// Helper to clean up any existing sessions +async function cleanupExistingSessions() { + try { + // Try to get list of sessions (WebDriver standard endpoint) + const response = await fetch(`${serverUrl}/sessions`); + if (response.ok) { + const data = await response.json(); + // Handle both standard WebDriver format and custom format + const sessions = data.value || (Array.isArray(data) ? data : []); + if (Array.isArray(sessions) && sessions.length > 0) { + console.log(`Found ${sessions.length} existing session(s), cleaning up...`); + for (const session of sessions) { + try { + const sessionId = session.id || session.sessionId || session; + await fetch(`${serverUrl}/session/${sessionId}`, { method: 'DELETE' }); + console.log(` Deleted session: ${sessionId}`); + } catch (e) { + // Ignore errors during cleanup + } + } + // Give the server a moment to clean up + await new Promise((resolve) => setTimeout(resolve, 500)); + } + } + } catch (e) { + // Server might not be running or might not support /sessions endpoint + // That's okay, we'll try to create a session anyway + } +} + +// Clean up any existing sessions before creating a new one +await cleanupExistingSessions(); + +let driver; +try { + driver = await new selenium.Builder().usingServer(serverUrl).withCapabilities({ browserName: 'duckduckgo' }).build(); + + // Try to detect platform by checking if we can access automation server directly + // (macOS automation server runs on port 8788, iOS uses simulator logs) + if (expectedPlatform === 'macos') { + try { + const automationCheck = await fetch('http://localhost:8788/getUrl'); + if (!automationCheck.ok) { + console.warn('⚠️ Warning: Expected macOS but automation server (port 8788) is not responding.'); + console.warn(' Make sure you ran: npm run driver:macos'); + } + } catch (e) { + console.warn('⚠️ Warning: Expected macOS but automation server (port 8788) is not accessible.'); + console.warn(' Make sure you ran: npm run driver:macos (not driver:ios)'); + } + } + + await driver.get(url); + const title = await driver.getTitle(); + console.log(JSON.stringify({ ok: true, url, title })); + + if (keepOpen) { + console.log('\n✅ Browser will stay open. Press Ctrl+C to quit.'); + // Keep the process alive + await new Promise(() => {}); + } else { + console.log('\n⚠️ Browser will close automatically. Use --keep to keep it open.'); + } +} catch (error) { + console.error('Error:', error.message); + if (error.message.includes('Session is already started') || error.message.includes('SessionNotCreatedError')) { + console.error('\n💡 Tip: There may be an existing session. Try one of these:'); + console.error(' Option 1 - Restart the driver:'); + console.error(' 1. Stop the WebDriver server (Ctrl+C in the driver terminal)'); + console.error(' 2. Restart it with: npm run driver:macos (or driver:ios)'); + console.error(' 3. Run this command again'); + console.error(''); + console.error(' Option 2 - Use the existing session:'); + console.error(' If a browser is already open from a previous test,'); + console.error(' you can interact with it directly via the automation server:'); + console.error(' curl "http://localhost:8788/getUrl"'); + console.error(' curl "http://localhost:8788/navigate?url=https://example.com"'); + } + process.exit(1); +} finally { + if (driver && !keepOpen) { + try { + await driver.quit(); + } catch (e) { + // Ignore errors during quit + } + } +} diff --git a/scripts/serve-test-config.mjs b/scripts/serve-test-config.mjs new file mode 100644 index 0000000..dc74d2b --- /dev/null +++ b/scripts/serve-test-config.mjs @@ -0,0 +1,257 @@ +#!/usr/bin/env node +/** + * Test Config Server + * + * Serves a modified privacy configuration via HTTP for testing. + * The macOS browser can fetch this during config refresh cycles. + * + * Usage: + * node scripts/serve-test-config.mjs [--port=8899] [--config=path/to/config.json] + * + * Default port: 8899 + * Default config: Uses base config from remote-config with Nintendo fix applied + * + * To use with macOS browser: + * 1. Start this server + * 2. Set custom config URL in UserDefaults: + * defaults write HKE973VLUW.com.duckduckgo.macos.browser.app-configuration.debug \ + * "CustomConfigurationURL.privacyConfiguration" "http://localhost:8899/v4/macos-config.json" + * 3. Restart the browser + * + * Note: For startup testing, use `npm run build:macos-with-fix` instead to bake the config + * into the app binary. + */ + +import http from 'node:http'; +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const projectRoot = path.resolve(__dirname, '..'); +const metaRoot = path.resolve(projectRoot, '..'); + +// Parse CLI args +const args = process.argv.slice(2); +const portArg = args.find((a) => a.startsWith('--port=')); +const configArg = args.find((a) => a.startsWith('--config=')); + +const PORT = portArg ? parseInt(portArg.split('=')[1], 10) : 8899; +const customConfigPath = configArg ? configArg.split('=')[1] : null; + +/** + * Load the base macOS config and apply the Nintendo fix + */ +function loadConfigWithFix() { + // Try to load from remote-config generated output first + const generatedConfigPath = path.join(metaRoot, 'remote-config/generated/v4/macos-config.json'); + const bundledConfigPath = path.join( + metaRoot, + 'apple-browsers/macOS/DuckDuckGo/ContentBlocker/Resources/macos-config.json' + ); + + let baseConfig; + let sourceUsed; + + if (fs.existsSync(generatedConfigPath)) { + baseConfig = JSON.parse(fs.readFileSync(generatedConfigPath, 'utf-8')); + sourceUsed = 'remote-config/generated'; + } else if (fs.existsSync(bundledConfigPath)) { + baseConfig = JSON.parse(fs.readFileSync(bundledConfigPath, 'utf-8')); + sourceUsed = 'apple-browsers bundled'; + } else { + throw new Error('No base config found. Run `npm run build` in remote-config first.'); + } + + console.log(`📦 Base config loaded from: ${sourceUsed}`); + + // Apply Nintendo fix - add to unprotectedTemporary + const nintendoEntry = { + domain: 'nintendo.com', + reason: 'Testing - checkout flow breakage investigation', + }; + + // Ensure unprotectedTemporary exists + if (!baseConfig.unprotectedTemporary) { + baseConfig.unprotectedTemporary = []; + } + + // Check if Nintendo is already in the list + const alreadyExists = baseConfig.unprotectedTemporary.some( + (entry) => entry.domain === 'nintendo.com' || entry === 'nintendo.com' + ); + + if (!alreadyExists) { + baseConfig.unprotectedTemporary.push(nintendoEntry); + console.log('🔧 Added nintendo.com to unprotectedTemporary'); + } else { + console.log('ℹ️ nintendo.com already in unprotectedTemporary'); + } + + // Also add to feature exceptions for complete protection disabling + const featuresToExcept = [ + 'contentBlocking', + 'autoconsent', + 'gpc', + 'cookie', + 'trackerAllowlist', + 'fingerprintingCanvas', + 'fingerprintingHardware', + 'fingerprintingScreenSize', + ]; + + for (const featureName of featuresToExcept) { + if (baseConfig.features[featureName]) { + if (!baseConfig.features[featureName].exceptions) { + baseConfig.features[featureName].exceptions = []; + } + const featureHasNintendo = baseConfig.features[featureName].exceptions.some( + (e) => e.domain === 'nintendo.com' + ); + if (!featureHasNintendo) { + baseConfig.features[featureName].exceptions.push({ + domain: 'nintendo.com', + reason: 'Testing checkout flow', + }); + } + } + } + + // Update version timestamp so the app thinks it's a new config + baseConfig.version = Date.now(); + + return baseConfig; +} + +/** + * Load custom config file + */ +function loadCustomConfig(configPath) { + const absolutePath = path.isAbsolute(configPath) ? configPath : path.resolve(process.cwd(), configPath); + if (!fs.existsSync(absolutePath)) { + throw new Error(`Config file not found: ${absolutePath}`); + } + return JSON.parse(fs.readFileSync(absolutePath, 'utf-8')); +} + +// Load the config +let config; +try { + if (customConfigPath) { + config = loadCustomConfig(customConfigPath); + console.log(`📄 Custom config loaded from: ${customConfigPath}`); + } else { + config = loadConfigWithFix(); + } +} catch (error) { + console.error(`❌ Failed to load config: ${error.message}`); + process.exit(1); +} + +// Calculate ETag +const configJson = JSON.stringify(config); +const etag = `"${Buffer.from(configJson).length}-${config.version}"`; + +// Create HTTP server +const server = http.createServer((req, res) => { + const url = new URL(req.url, `http://localhost:${PORT}`); + console.log(`${new Date().toISOString()} ${req.method} ${url.pathname}`); + + // CORS headers for debugging + res.setHeader('Access-Control-Allow-Origin', '*'); + res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS'); + res.setHeader('Access-Control-Allow-Headers', 'Content-Type, If-None-Match'); + + if (req.method === 'OPTIONS') { + res.writeHead(204); + res.end(); + return; + } + + // Serve config at /v4/macos-config.json (matching production URL structure) + if (url.pathname === '/v4/macos-config.json' || url.pathname === '/macos-config.json' || url.pathname === '/') { + // Check If-None-Match for caching + const clientEtag = req.headers['if-none-match']; + if (clientEtag === etag) { + res.writeHead(304); + res.end(); + return; + } + + res.writeHead(200, { + 'Content-Type': 'application/json', + ETag: etag, + 'Cache-Control': 'no-cache', + }); + res.end(configJson); + return; + } + + // Health check + if (url.pathname === '/health') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end( + JSON.stringify({ + status: 'ok', + config: { + version: config.version, + features: Object.keys(config.features).length, + unprotectedTemporary: config.unprotectedTemporary?.length || 0, + nintendoProtected: + !config.unprotectedTemporary?.some( + (e) => e.domain === 'nintendo.com' || e === 'nintendo.com' + ), + }, + }) + ); + return; + } + + // 404 for everything else + res.writeHead(404, { 'Content-Type': 'application/json' }); + res.end( + JSON.stringify({ + error: 'Not found', + availableEndpoints: ['/v4/macos-config.json', '/macos-config.json', '/', '/health'], + }) + ); +}); + +server.listen(PORT, () => { + console.log(` +🌐 Test Config Server Running +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + + Config URL: http://localhost:${PORT}/v4/macos-config.json + Health: http://localhost:${PORT}/health + + Config version: ${config.version} + Features: ${Object.keys(config.features).length} + Nintendo unprotected: ${config.unprotectedTemporary?.some((e) => e.domain === 'nintendo.com' || e === 'nintendo.com') ? 'YES ✓' : 'NO ✗'} + +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ + +To use with macOS browser (for refresh-based testing): + + defaults write HKE973VLUW.com.duckduckgo.macos.browser.app-configuration.debug \\ + isInternalUser -bool true + + defaults write HKE973VLUW.com.duckduckgo.macos.browser.app-configuration.debug \\ + "CustomConfigurationURL.privacyConfiguration" \\ + "http://localhost:${PORT}/v4/macos-config.json" + +Note: For startup testing, the config must be baked into the build. +See: npm run build:macos-with-fix + +Press Ctrl+C to stop. +`); +}); + +server.on('error', (err) => { + if (err.code === 'EADDRINUSE') { + console.error(`❌ Port ${PORT} is already in use. Try --port=`); + } else { + console.error(`❌ Server error: ${err.message}`); + } + process.exit(1); +}); diff --git a/scripts/server.mjs b/scripts/server.mjs index 88ba05f..13d401a 100644 --- a/scripts/server.mjs +++ b/scripts/server.mjs @@ -7,4 +7,4 @@ server.server.on('listening', () => { }); server.server.on('error', () => { process.exit(1); -}); \ No newline at end of file +}); diff --git a/scripts/test-download-csv.mjs b/scripts/test-download-csv.mjs new file mode 100644 index 0000000..5634e66 --- /dev/null +++ b/scripts/test-download-csv.mjs @@ -0,0 +1,413 @@ +#!/usr/bin/env node +/** + * Test CSV Download across browsers + * + * Tests the programmatic download at: + * https://privacy-test-pages.site/features/download/download-csv.html + * + * Usage: + * node scripts/test-download-csv.mjs --chrome # Test in Chrome + * node scripts/test-download-csv.mjs --safari # Test in Safari + * node scripts/test-download-csv.mjs --ddg # Test in DDG (requires driver running) + * node scripts/test-download-csv.mjs --all # Test all browsers + */ + +import { createRequire } from 'node:module'; + +const localRequire = createRequire(import.meta.url); +/** @type {typeof import('selenium-webdriver')} */ +const selenium = localRequire('selenium-webdriver'); +const chrome = localRequire('selenium-webdriver/chrome'); +const safari = localRequire('selenium-webdriver/safari'); + +const TEST_URL = 'https://privacy-test-pages.site/features/download/download-csv.html'; +const DDG_SERVER_URL = process.env.WEBDRIVER_SERVER_URL ?? 'http://localhost:4444'; + +// Parse args +const args = process.argv.slice(2); +const testChrome = args.includes('--chrome') || args.includes('--all'); +const testSafari = args.includes('--safari') || args.includes('--all'); +const testDDG = args.includes('--ddg') || args.includes('--all'); + +// Script to inject that monitors download attempts +const downloadMonitorScript = ` + return (function() { + const result = { + anchorCreated: false, + anchorClicked: false, + blobUrlCreated: false, + downloadAttribute: null, + blobUrl: null, + errors: [], + consoleMessages: [] + }; + + // Capture console + const origLog = console.log; + const origError = console.error; + const origWarn = console.warn; + console.log = (...args) => { result.consoleMessages.push({level: 'log', msg: args.join(' ')}); origLog(...args); }; + console.error = (...args) => { result.consoleMessages.push({level: 'error', msg: args.join(' ')}); origError(...args); }; + console.warn = (...args) => { result.consoleMessages.push({level: 'warn', msg: args.join(' ')}); origWarn(...args); }; + + // Intercept anchor creation + const origCreateElement = document.createElement.bind(document); + document.createElement = function(tagName) { + const el = origCreateElement(tagName); + if (tagName.toLowerCase() === 'a') { + result.anchorCreated = true; + // Track when click is called + const origClick = el.click.bind(el); + el.click = function() { + result.anchorClicked = true; + result.downloadAttribute = el.download; + result.blobUrl = el.href; + if (el.href && el.href.startsWith('blob:')) { + result.blobUrlCreated = true; + } + return origClick(); + }; + } + return el; + }; + + // Capture errors + window.addEventListener('error', (e) => { + result.errors.push({ type: 'error', message: e.message, filename: e.filename }); + }); + + window.__downloadMonitor = result; + return { status: 'monitoring' }; + })(); +`; + +const getDownloadResult = ` + return window.__downloadMonitor || { error: 'Monitor not initialized' }; +`; + +const clickDownloadLink = ` + const link = document.querySelector('a[href="#"]') || + Array.from(document.querySelectorAll('a')).find(a => + a.textContent.toLowerCase().includes('download csv')); + if (!link) { + return { error: 'Download link not found' }; + } + link.click(); + return { clicked: true, linkText: link.textContent.trim() }; +`; + +async function testChromeDownload() { + console.log('\n🌐 CHROME TEST'); + console.log('=' .repeat(50)); + + const options = new chrome.Options(); + options.addArguments('--headless=new'); + options.addArguments('--window-size=1280,1024'); + options.addArguments('--disable-gpu'); + options.addArguments('--no-sandbox'); + // Enable downloads in headless mode + options.setUserPreferences({ + 'download.prompt_for_download': false, + 'download.default_directory': '/tmp/chrome-downloads' + }); + + const driver = await new selenium.Builder() + .forBrowser('chrome') + .setChromeOptions(options) + .build(); + + try { + console.log(` Navigating to: ${TEST_URL}`); + await driver.get(TEST_URL); + await driver.sleep(1000); + + // Get page title + const title = await driver.getTitle(); + console.log(` Page title: ${title}`); + + // Inject download monitor + console.log(' Setting up download monitor...'); + await driver.executeScript(downloadMonitorScript); + + // Click the download link + console.log(' Clicking download link...'); + const clickResult = await driver.executeScript(clickDownloadLink); + console.log(` Click result: ${JSON.stringify(clickResult)}`); + + // Wait for any async operations + await driver.sleep(1000); + + // Get download monitor results + const downloadResult = await driver.executeScript(getDownloadResult); + console.log('\n 📊 Download Monitor Results:'); + console.log(` Anchor created: ${downloadResult.anchorCreated}`); + console.log(` Anchor clicked: ${downloadResult.anchorClicked}`); + console.log(` Blob URL created: ${downloadResult.blobUrlCreated}`); + console.log(` Download attribute: ${downloadResult.downloadAttribute}`); + console.log(` Blob URL: ${downloadResult.blobUrl ? downloadResult.blobUrl.substring(0, 50) + '...' : 'none'}`); + + if (downloadResult.errors.length > 0) { + console.log(`\n ❌ Errors:`); + downloadResult.errors.forEach(e => console.log(` - ${e.message}`)); + } + + if (downloadResult.consoleMessages.length > 0) { + console.log(`\n 📋 Console messages:`); + downloadResult.consoleMessages.forEach(m => console.log(` [${m.level}] ${m.msg}`)); + } + + // Check if download actually worked + const downloadSuccess = downloadResult.anchorCreated && + downloadResult.anchorClicked && + downloadResult.blobUrlCreated; + + console.log(`\n ${downloadSuccess ? '✅' : '❌'} Chrome Download: ${downloadSuccess ? 'SUCCESS' : 'FAILED'}`); + + return { browser: 'chrome', success: downloadSuccess, details: downloadResult }; + + } finally { + await driver.quit(); + } +} + +async function testSafariDownload() { + console.log('\n🧭 SAFARI TEST'); + console.log('=' .repeat(50)); + + const options = new safari.Options(); + + let driver; + try { + driver = await new selenium.Builder() + .forBrowser('safari') + .setSafariOptions(options) + .build(); + } catch (err) { + if (err.message.includes('safaridriver')) { + console.log(' ❌ Safari WebDriver not enabled.'); + console.log(' Run: sudo safaridriver --enable'); + return { browser: 'safari', success: false, error: 'WebDriver not enabled' }; + } + throw err; + } + + try { + console.log(` Navigating to: ${TEST_URL}`); + await driver.get(TEST_URL); + await driver.sleep(1000); + + // Get page title + const title = await driver.getTitle(); + console.log(` Page title: ${title}`); + + // Inject download monitor + console.log(' Setting up download monitor...'); + await driver.executeScript(downloadMonitorScript); + + // Click the download link + console.log(' Clicking download link...'); + const clickResult = await driver.executeScript(clickDownloadLink); + console.log(` Click result: ${JSON.stringify(clickResult)}`); + + // Wait for any async operations + await driver.sleep(1000); + + // Get download monitor results + const downloadResult = await driver.executeScript(getDownloadResult); + console.log('\n 📊 Download Monitor Results:'); + console.log(` Anchor created: ${downloadResult.anchorCreated}`); + console.log(` Anchor clicked: ${downloadResult.anchorClicked}`); + console.log(` Blob URL created: ${downloadResult.blobUrlCreated}`); + console.log(` Download attribute: ${downloadResult.downloadAttribute}`); + console.log(` Blob URL: ${downloadResult.blobUrl ? downloadResult.blobUrl.substring(0, 50) + '...' : 'none'}`); + + if (downloadResult.errors.length > 0) { + console.log(`\n ❌ Errors:`); + downloadResult.errors.forEach(e => console.log(` - ${e.message}`)); + } + + if (downloadResult.consoleMessages.length > 0) { + console.log(`\n 📋 Console messages:`); + downloadResult.consoleMessages.forEach(m => console.log(` [${m.level}] ${m.msg}`)); + } + + // Check if download actually worked + const downloadSuccess = downloadResult.anchorCreated && + downloadResult.anchorClicked && + downloadResult.blobUrlCreated; + + console.log(`\n ${downloadSuccess ? '✅' : '❌'} Safari Download: ${downloadSuccess ? 'SUCCESS' : 'FAILED'}`); + + return { browser: 'safari', success: downloadSuccess, details: downloadResult }; + + } finally { + await driver.quit(); + } +} + +async function testDDGDownload() { + console.log('\n🦆 DDG BROWSER TEST'); + console.log('=' .repeat(50)); + + // Check if DDG driver is running + try { + const response = await fetch(`${DDG_SERVER_URL}/status`); + if (!response.ok) throw new Error('Driver not ready'); + } catch { + console.log(` ❌ DDG driver not running at ${DDG_SERVER_URL}`); + console.log(' Start with: npm run driver:macos'); + return { browser: 'ddg', success: false, error: 'Driver not running' }; + } + + // Get or create session + const sessionsResponse = await fetch(`${DDG_SERVER_URL}/sessions`); + const sessionsData = await sessionsResponse.json(); + const sessions = sessionsData.value || []; + + let sessionId; + let ownSession = false; + + if (sessions.length > 0) { + sessionId = sessions[0].id; + console.log(` Using existing session: ${sessionId}`); + } else { + const createResponse = await fetch(`${DDG_SERVER_URL}/session`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ capabilities: {} }) + }); + const createData = await createResponse.json(); + sessionId = createData.value?.sessionId || createData.sessionId; + ownSession = true; + console.log(` Created new session: ${sessionId}`); + } + + async function executeScript(script) { + const response = await fetch(`${DDG_SERVER_URL}/session/${sessionId}/execute/sync`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ script, args: [] }) + }); + const data = await response.json(); + if (data.value?.error) throw new Error(data.value.message); + return data.value; + } + + try { + console.log(` Navigating to: ${TEST_URL}`); + await fetch(`${DDG_SERVER_URL}/session/${sessionId}/url`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ url: TEST_URL }) + }); + + // Wait for page load + await new Promise(r => setTimeout(r, 2000)); + + // Get page title + const titleResponse = await fetch(`${DDG_SERVER_URL}/session/${sessionId}/title`); + const titleData = await titleResponse.json(); + console.log(` Page title: ${titleData.value}`); + + // Inject download monitor + console.log(' Setting up download monitor...'); + await executeScript(downloadMonitorScript); + + // Click the download link + console.log(' Clicking download link...'); + const clickResult = await executeScript(clickDownloadLink); + console.log(` Click result: ${JSON.stringify(clickResult)}`); + + // Wait for any async operations + await new Promise(r => setTimeout(r, 1500)); + + // Get download monitor results + const downloadResult = await executeScript(getDownloadResult); + console.log('\n 📊 Download Monitor Results:'); + console.log(` Anchor created: ${downloadResult.anchorCreated}`); + console.log(` Anchor clicked: ${downloadResult.anchorClicked}`); + console.log(` Blob URL created: ${downloadResult.blobUrlCreated}`); + console.log(` Download attribute: ${downloadResult.downloadAttribute}`); + console.log(` Blob URL: ${downloadResult.blobUrl ? downloadResult.blobUrl.substring(0, 50) + '...' : 'none'}`); + + if (downloadResult.errors && downloadResult.errors.length > 0) { + console.log(`\n ❌ Errors:`); + downloadResult.errors.forEach(e => console.log(` - ${e.message}`)); + } + + if (downloadResult.consoleMessages && downloadResult.consoleMessages.length > 0) { + console.log(`\n 📋 Console messages:`); + downloadResult.consoleMessages.forEach(m => console.log(` [${m.level}] ${m.msg}`)); + } + + // Check if download actually worked + const downloadSuccess = downloadResult.anchorCreated && + downloadResult.anchorClicked && + downloadResult.blobUrlCreated; + + console.log(`\n ${downloadSuccess ? '✅' : '❌'} DDG Download: ${downloadSuccess ? 'SUCCESS' : 'FAILED'}`); + + return { browser: 'ddg', success: downloadSuccess, details: downloadResult }; + + } finally { + // Clean up session if we created it + if (ownSession) { + await fetch(`${DDG_SERVER_URL}/session/${sessionId}`, { method: 'DELETE' }); + } + } +} + +async function main() { + console.log('🧪 CSV Download Test'); + console.log(` URL: ${TEST_URL}`); + console.log(` Testing programmatic anchor click download\n`); + + const results = []; + + if (!testChrome && !testSafari && !testDDG) { + console.log('No browsers selected. Use --chrome, --safari, --ddg, or --all'); + process.exit(1); + } + + try { + if (testChrome) { + const result = await testChromeDownload(); + results.push(result); + } + + if (testSafari) { + const result = await testSafariDownload(); + results.push(result); + } + + if (testDDG) { + const result = await testDDGDownload(); + results.push(result); + } + + // Summary + console.log('\n' + '=' .repeat(50)); + console.log('📊 SUMMARY'); + console.log('=' .repeat(50)); + results.forEach(r => { + const icon = r.success ? '✅' : '❌'; + const status = r.error || (r.success ? 'SUCCESS' : 'FAILED'); + console.log(` ${icon} ${r.browser.toUpperCase()}: ${status}`); + }); + + // Detailed comparison + const successCount = results.filter(r => r.success).length; + const failCount = results.filter(r => !r.success).length; + + if (failCount > 0 && successCount > 0) { + console.log('\n⚠️ BROWSER INCONSISTENCY DETECTED'); + console.log(' Some browsers handle the download differently.'); + } + + } catch (err) { + console.error('\n❌ Fatal error:', err.message); + process.exit(1); + } +} + +main(); diff --git a/scripts/test-runner.mjs b/scripts/test-runner.mjs new file mode 100644 index 0000000..e9ad05e --- /dev/null +++ b/scripts/test-runner.mjs @@ -0,0 +1,210 @@ +#!/usr/bin/env node +/** + * Unified WebDriver Test Runner + * + * Composes npm scripts: cleanup → driver:macos → driver:wait → test → cleanup + * + * Usage: + * node scripts/test-runner.mjs # Run search-company test + * node scripts/test-runner.mjs --check # Check environment only (no test) + * node scripts/test-runner.mjs --script my-test # Run custom test script + */ + +import { spawn, spawnSync } from 'node:child_process'; +import { existsSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { dirname, join } from 'node:path'; + +const scriptsDir = dirname(fileURLToPath(import.meta.url)); +const rootDir = join(scriptsDir, '..'); + +// Parse args +const args = process.argv.slice(2); +const checkOnly = args.includes('--check'); +const verbose = args.includes('--verbose') || args.includes('-v'); +const noKeep = args.includes('--no-keep'); +const keep = args.includes('--keep'); +const scriptArg = args.find((_, i, arr) => arr[i - 1] === '--script'); +const testScript = scriptArg || 'search-company-flow.mjs'; + +const DRIVER_PORT = 4444; + +// ============ Utility Functions ============ + +function log(msg, ...rest) { + console.log(`[runner] ${msg}`, ...rest); +} + +function sleep(ms) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +function npmRun(script, options = {}) { + const { silent = false, background = false } = options; + const stdio = silent ? 'ignore' : verbose ? 'inherit' : 'pipe'; + + if (background) { + const child = spawn('npm', ['run', script], { + cwd: rootDir, + stdio: 'ignore', + detached: true, + env: { ...process.env, TARGET_PLATFORM: 'macos' }, + }); + child.unref(); + return { status: 0 }; + } + + const result = spawnSync('npm', ['run', script], { + cwd: rootDir, + stdio, + env: { ...process.env, TARGET_PLATFORM: 'macos' }, + }); + return result; +} + +async function isDriverReady() { + try { + const response = await fetch(`http://localhost:${DRIVER_PORT}/status`, { + signal: AbortSignal.timeout(1000), + }); + return response.ok; + } catch { + return false; + } +} + +function isProcessRunning(pattern) { + try { + const result = spawnSync('pgrep', ['-f', pattern], { encoding: 'utf-8' }); + return result.status === 0; + } catch { + return false; + } +} + +// ============ Environment Checks ============ + +async function checkEnvironment() { + const status = { + driverRunning: false, + driverPort: DRIVER_PORT, + appRunning: false, + driverBinaryExists: false, + macosAppExists: false, + }; + + // Check driver binary + const driverBinary = join(rootDir, 'webdriver/target/debug/ddgdriver'); + status.driverBinaryExists = existsSync(driverBinary); + + // Check macOS app (DerivedData is the default build output location) + const appleBrowsersDir = join(rootDir, '../apple-browsers'); + const derivedDataPath = process.env.DERIVED_DATA_PATH || join(appleBrowsersDir, 'DerivedData'); + const macosAppPath = join(derivedDataPath, 'Build/Products/Debug/DuckDuckGo.app'); + status.macosAppExists = existsSync(macosAppPath); + + // Check driver port + status.driverRunning = await isDriverReady(); + + // Check app process + status.appRunning = isProcessRunning('DuckDuckGo.app'); + + return status; +} + +function printStatus(status) { + console.log('\n📋 Environment Status:'); + console.log(` Driver binary: ${status.driverBinaryExists ? '✅ exists' : '❌ missing (run: npm run build-rust)'}`); + console.log(` macOS app: ${status.macosAppExists ? '✅ exists' : '❌ missing (run: npm run build:macos)'}`); + console.log(` Driver (4444): ${status.driverRunning ? '✅ running' : '⚪ not running'}`); + console.log(` DuckDuckGo: ${status.appRunning ? '✅ running' : '⚪ not running'}`); + console.log(''); +} + +// ============ Main ============ + +async function main() { + console.log('\n🔧 WebDriver Test Runner\n'); + + // Always check environment first + const status = await checkEnvironment(); + + if (checkOnly) { + printStatus(status); + + if (!status.driverBinaryExists || !status.macosAppExists) { + console.log('⚠️ Missing prerequisites. Build with:'); + if (!status.driverBinaryExists) console.log(' npm run build-rust'); + if (!status.macosAppExists) console.log(' npm run build:macos'); + process.exit(1); + } + + process.exit(0); + } + + // Check prerequisites + if (!status.driverBinaryExists) { + log('❌ Driver binary not found. Run: npm run build-rust'); + process.exit(1); + } + if (!status.macosAppExists) { + log('❌ macOS app not found. Run: npm run build:macos'); + process.exit(1); + } + + // Step 1: Cleanup any existing state + log('Running driver:cleanup...'); + npmRun('driver:cleanup', { silent: !verbose }); + + await sleep(500); + + // Step 2: Start driver in background + log('Starting driver:macos...'); + npmRun('driver:macos', { background: true }); + + // Step 3: Wait for driver to be ready + log('Running driver:wait...'); + const waitResult = npmRun('driver:wait', { silent: !verbose }); + if (waitResult.status !== 0) { + log('❌ Driver failed to start'); + npmRun('driver:kill', { silent: true }); + process.exit(1); + } + log('Driver ready!'); + + // Step 4: Run test + const testScriptPath = join(rootDir, 'scripts', testScript); + if (!existsSync(testScriptPath)) { + log(`❌ Test script not found: ${testScriptPath}`); + npmRun('driver:cleanup', { silent: true }); + process.exit(1); + } + + log(`Running test: ${testScript}`); + const testArgs = []; + if (noKeep) testArgs.push('--no-keep'); + else if (!keep) testArgs.push('--no-keep'); // Default to --no-keep for automation + + const testResult = spawnSync('node', [testScriptPath, ...testArgs], { + cwd: rootDir, + stdio: 'inherit', + env: { ...process.env, PLATFORM: 'macos' }, + }); + + // Step 5: Cleanup after test + await sleep(500); + npmRun('driver:cleanup', { silent: true }); + + if (testResult.status === 0) { + console.log('\n✅ Test completed successfully\n'); + process.exit(0); + } else { + console.log('\n❌ Test failed\n'); + process.exit(1); + } +} + +main().catch((err) => { + console.error('Fatal error:', err); + process.exit(1); +}); diff --git a/scripts/test-unprotected.mjs b/scripts/test-unprotected.mjs new file mode 100644 index 0000000..c48477a --- /dev/null +++ b/scripts/test-unprotected.mjs @@ -0,0 +1,28 @@ +import { createRequire } from 'node:module'; +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const configPath = process.argv[2]; +console.log(`Config: ${configPath}`); + +const driver = await new selenium.Builder() + .usingServer('http://localhost:4444') + .withCapabilities({ + browserName: 'duckduckgo', + 'ddg:privacyConfigPath': configPath + }) + .build(); + +await driver.get('https://www.publisher-company.site/product.html?p=12'); +await driver.sleep(3000); +console.log(`Page: ${await driver.executeScript('return location.href')}`); +console.log(''); + +// Check page content for blocked status +const pageContent = await driver.executeScript('return document.body.innerText'); +console.log('Page tracker status:'); +const lines = pageContent.split('\n').filter(l => l.includes('blocked') || l.includes('ad-company')); +lines.forEach(l => console.log(` ${l}`)); + +await driver.quit(); +console.log('\nDone'); diff --git a/scripts/unprotected-config-test.mjs b/scripts/unprotected-config-test.mjs new file mode 100644 index 0000000..f0beb3f --- /dev/null +++ b/scripts/unprotected-config-test.mjs @@ -0,0 +1,128 @@ +#!/usr/bin/env node +/** + * Unprotected Config Test + * + * Tests with ddg:privacyConfigPath set to unprotected-all.json + * to verify that: + * 1. The config is being applied + * 2. Trackers ARE allowed when unprotected + * + * If trackers are still blocked, the config injection race condition isn't fixed. + */ + +import { createRequire } from 'node:module'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const localRequire = createRequire(import.meta.url); +const selenium = localRequire('selenium-webdriver'); + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const configPath = path.resolve(__dirname, '../test-configs/unprotected-all.json'); + +const TEST_URL = 'https://www.publisher-company.site/product.html?p=12'; + +console.log('🧪 Unprotected Config Test'); +console.log(` URL: ${TEST_URL}`); +console.log(` Config: ${configPath}`); +console.log(''); + +const capabilities = { + browserName: 'duckduckgo', + 'ddg:privacyConfigPath': configPath +}; + +console.log('📱 Creating WebDriver session with unprotected config...'); +const startTime = Date.now(); + +const driver = await new selenium.Builder() + .usingServer('http://localhost:4444') + .withCapabilities(capabilities) + .build(); + +const sessionTime = Date.now() - startTime; +console.log(`✓ Session ready in ${sessionTime}ms`); +console.log(''); + +try { + console.log(`🌐 Navigating to ${TEST_URL}...`); + await driver.get(TEST_URL); + await driver.sleep(3000); + + const currentUrl = await driver.getCurrentUrl(); + console.log(`✓ Page loaded: ${currentUrl}`); + console.log(''); + + // Read the page's tracker status display + const pageStatus = await driver.executeScript(` + const details = document.querySelector('details'); + if (details) details.open = true; + const items = document.querySelectorAll('li'); + return Array.from(items).map(li => li.textContent.trim()); + `); + + console.log('📊 Page tracker status display:'); + if (pageStatus && pageStatus.length > 0) { + pageStatus.forEach(s => console.log(' ', s)); + } else { + console.log(' (no status items - trackers may have loaded successfully)'); + } + + // Probe trackers + console.log(''); + console.log('🔍 XHR Probe:'); + const trackers = [ + 'https://convert.ad-company.site/convert.js', + 'https://www.ad-company.site/track.js' + ]; + + let blockedCount = 0; + let allowedCount = 0; + + for (const url of trackers) { + const r = await driver.executeScript(` + try { + const xhr = new XMLHttpRequest(); + xhr.open('HEAD', '${url}', false); + xhr.send(); + return { status: 'allowed', code: xhr.status }; + } catch (e) { + return { status: 'blocked', error: e.message }; + } + `); + const icon = r.status === 'allowed' ? '✅' : '❌'; + console.log(` ${icon} ${url}: ${r.status}${r.code ? ' (HTTP '+r.code+')' : ''}`); + + if (r.status === 'allowed') allowedCount++; + else blockedCount++; + } + + console.log(''); + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + + if (allowedCount === trackers.length) { + console.log('✅ CONFIG INJECTION WORKING'); + console.log(' All trackers allowed with unprotected config.'); + console.log(' Race condition fix verified for config injection.'); + } else if (blockedCount === trackers.length) { + console.log('❌ CONFIG INJECTION NOT WORKING'); + console.log(' Trackers still blocked despite unprotected config.'); + console.log(' The TEST_PRIVACY_CONFIG_PATH is not being applied.'); + console.log(''); + console.log(' Possible causes:'); + console.log(' - Content Blocker compiled from bundled config before custom config loaded'); + console.log(' - trackerAllowlist not being processed correctly'); + console.log(' - Config cache still being used'); + } else { + console.log('⚠️ PARTIAL RESULT'); + console.log(` Blocked: ${blockedCount}, Allowed: ${allowedCount}`); + } + + console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'); + +} finally { + console.log(''); + console.log('Cleaning up...'); + await driver.quit(); + console.log('Done.'); +} diff --git a/test-configs/nintendo-disabled.json b/test-configs/nintendo-disabled.json new file mode 100644 index 0000000..ede22fd --- /dev/null +++ b/test-configs/nintendo-disabled.json @@ -0,0 +1,64 @@ +{ + "features": { + "contentBlocking": { + "state": "enabled", + "exceptions": [ + { + "domain": "nintendo.com", + "reason": "Testing checkout flow" + } + ] + }, + "cookie": { + "state": "enabled", + "exceptions": [ + { + "domain": "nintendo.com", + "reason": "Testing checkout flow" + } + ] + }, + "trackerAllowlist": { + "state": "enabled", + "settings": { + "allowlistedTrackers": {} + } + }, + "gpc": { + "state": "enabled", + "exceptions": [ + { + "domain": "nintendo.com", + "reason": "Testing checkout flow" + } + ] + }, + "referrer": { + "state": "disabled" + }, + "autofill": { + "state": "enabled", + "exceptions": [ + { + "domain": "nintendo.com", + "reason": "Testing checkout flow" + } + ] + }, + "autoconsent": { + "state": "enabled", + "exceptions": [ + { + "domain": "nintendo.com", + "reason": "Testing checkout flow" + } + ] + } + }, + "unprotectedTemporary": [ + { + "domain": "nintendo.com", + "reason": "Testing checkout flow - disables all protections" + } + ] +} diff --git a/test-configs/nintendo-unprotected-full.json b/test-configs/nintendo-unprotected-full.json new file mode 100644 index 0000000..8dee418 --- /dev/null +++ b/test-configs/nintendo-unprotected-full.json @@ -0,0 +1,107547 @@ +{ + "readme": "https://github.com/duckduckgo/privacy-configuration", + "version": 1769090580820, + "features": { + "adAttributionReporting": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "adBlockExtension": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "adClickAttribution": { + "readme": "https://help.duckduckgo.com/duckduckgo-help-pages/privacy/web-tracking-protections/#3rd-party-tracker-loading-protection", + "state": "enabled", + "exceptions": [], + "settings": { + "linkFormats": [ + { + "url": "duckduckgo.com/y.js", + "adDomainParameterName": "ad_domain", + "desc": "SERP Ads" + }, + { + "url": "www.search-company.site/y.js", + "adDomainParameterName": "ad_domain", + "desc": "Test Domain" + }, + { + "url": "www.search-company.example/y.js", + "adDomainParameterName": "ad_domain", + "desc": "Test Domain" + }, + { + "url": "links.duckduckgo.com/m.js", + "adDomainParameterName": "ad_domain", + "desc": "Shopping Ads" + }, + { + "url": "www.search-company.site/m.js", + "adDomainParameterName": "ad_domain", + "desc": "Test Domain" + }, + { + "url": "www.search-company.example/m.js", + "adDomainParameterName": "ad_domain", + "desc": "Test Domain" + } + ], + "allowlist": [ + { + "blocklistEntry": "bing.com", + "host": "bat.bing.com" + }, + { + "blocklistEntry": "ad-company.site", + "host": "convert.ad-company.site" + }, + { + "blocklistEntry": "ad-company.example", + "host": "convert.ad-company.example" + } + ], + "navigationExpiration": 1800, + "totalExpiration": 604800, + "heuristicDetection": "enabled", + "domainDetection": "enabled" + }, + "hash": "b813ade8472a097ffbd43a3331116fe1" + }, + "additionalCampaignPixelParams": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "addressBarTldNavOrSearch": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "aiChat": { + "state": "enabled", + "exceptions": [], + "features": { + "toolbarShortcut": { + "state": "enabled" + }, + "pageContext": { + "state": "internal", + "minSupportedVersion": "1.157.0" + }, + "applicationMenuShortcut": { + "state": "enabled" + }, + "sidebar": { + "state": "enabled", + "minSupportedVersion": "1.148.0" + }, + "textSummarization": { + "state": "enabled", + "minSupportedVersion": "1.150.0" + }, + "textTranslation": { + "state": "enabled", + "minSupportedVersion": "1.157.0" + }, + "globalToggle": { + "state": "enabled", + "minSupportedVersion": "1.157.0" + }, + "improvements": { + "state": "enabled", + "minSupportedVersion": "1.161.0" + }, + "omnibarToggle": { + "state": "enabled", + "minSupportedVersion": "1.171.0" + }, + "keepSession": { + "state": "enabled", + "minSupportedVersion": "1.161.0", + "settings": { + "sessionTimeoutMinutes": 60 + } + }, + "standaloneMigration": { + "state": "disabled" + }, + "showHideAiGeneratedImages": { + "state": "enabled" + } + }, + "settings": { + "aiChatURL": "https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=2", + "onboardingCookieName": "dcm", + "onboardingCookieDomain": "duckduckgo.com", + "aiChatURLIdentifiableQuery": "ia", + "aiChatURLIdentifiableQueryValue": "chat" + }, + "hash": "a9e925b5e44eab07a0ae0ed0af6c3e97" + }, + "ampLinks": { + "exceptions": [ + { + "domain": "asana.com" + }, + { + "domain": "freecodecamp.org" + }, + { + "domain": "www.audiosciencereview.com" + }, + { + "domain": "thehustle.co" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "publicmediasignin.org" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "deepExtractionEnabled": true, + "deepExtractionTimeout": 1500, + "linkFormats": [ + "^https?:\\/\\/(?:w{3}\\.)?google\\.\\S{2,}\\/amp\\/s\\/(\\S+)$", + "^https?:\\/\\/\\S+ampproject\\.org\\/\\S\\/s\\/(\\S+)$" + ], + "keywords": [ + "amp=", + "=amp", + "&", + "amp&", + "/amp", + "amp/", + ".amp", + "amp.", + "%amp", + "amp%", + "_amp", + "amp_", + "?amp" + ] + }, + "state": "enabled", + "hash": "2395fb930bd4fdf9eb8fb34d9aa456e8" + }, + "androidBrowserConfig": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "androidNewStateKillSwitch": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "apiManipulation": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "appHealth": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "attributedMetrics": { + "state": "enabled", + "exceptions": [], + "features": { + "emitAllMetrics": { + "state": "enabled" + }, + "retention": { + "state": "enabled" + }, + "canEmitRetention": { + "state": "enabled" + }, + "searchDaysAvg": { + "state": "enabled" + }, + "canEmitSearchDaysAvg": { + "state": "enabled" + }, + "searchCountAvg": { + "state": "enabled" + }, + "canEmitSearchCountAvg": { + "state": "enabled" + }, + "adClickCountAvg": { + "state": "enabled" + }, + "canEmitAdClickCountAvg": { + "state": "enabled" + }, + "aiUsageAvg": { + "state": "enabled" + }, + "canEmitAIUsageAvg": { + "state": "enabled" + }, + "subscriptionRetention": { + "state": "enabled" + }, + "canEmitSubscriptionRetention": { + "state": "enabled" + }, + "syncDevices": { + "state": "enabled" + }, + "canEmitSyncDevices": { + "state": "enabled" + }, + "sendOriginParam": { + "state": "enabled", + "settings": { + "originCampaignSubstrings": [ + "paid" + ] + } + } + }, + "settings": { + "attributed_metric_retention_week": { + "buckets": [ + 1, + 2, + 3 + ], + "version": 1 + }, + "attributed_metric_retention_month": { + "buckets": [ + 2, + 3, + 4, + 5 + ], + "version": 1 + }, + "attributed_metric_active_past_week": { + "buckets": [ + 2, + 4 + ], + "version": 1 + }, + "attributed_metric_average_searches_past_week_first_month": { + "buckets": [ + 5, + 9 + ], + "version": 1 + }, + "attributed_metric_average_searches_past_week": { + "buckets": [ + 5, + 9 + ], + "version": 1 + }, + "attributed_metric_average_ad_clicks_past_week": { + "buckets": [ + 2, + 5 + ], + "version": 1 + }, + "attributed_metric_average_duck_ai_usage_past_week": { + "buckets": [ + 5, + 9 + ], + "version": 1 + }, + "attributed_metric_subscribed": { + "buckets": [ + 0, + 1 + ], + "version": 1 + }, + "attributed_metric_synced_device": { + "buckets": [ + 1 + ], + "version": 1 + } + }, + "minSupportedVersion": "1.168.0", + "hash": "e29deec76b07789eac7f7d5d5fc9bb5a" + }, + "auraExperiment": { + "exceptions": [], + "settings": { + "packages": [] + }, + "state": "disabled", + "hash": "527fd2e156c7669f001516ee2d3d7c0e" + }, + "autocompleteTabs": { + "state": "enabled", + "exceptions": [], + "minSupportedVersion": "1.134.0", + "hash": "86c203133cbe1785c0cf1391e9c54af2" + }, + "autoconsent": { + "exceptions": [ + { + "domain": "allocine.fr" + }, + { + "domain": "aufeminin.com" + }, + { + "domain": "bild.de" + }, + { + "domain": "distrelec.ch" + }, + { + "domain": "derstandard.de" + }, + { + "domain": "duden.de" + }, + { + "domain": "eleconomista.es" + }, + { + "domain": "elindependiente.com" + }, + { + "domain": "eurostar.com" + }, + { + "domain": "events.com" + }, + { + "domain": "geo.fr" + }, + { + "domain": "ksta.de" + }, + { + "domain": "larazon.es" + }, + { + "domain": "nationalgrid.co.uk" + }, + { + "domain": "t-online.de" + }, + { + "domain": "tomsguide.com" + }, + { + "domain": "welt.de" + }, + { + "domain": "zeitraum-moebel.de" + }, + { + "domain": "focus.de" + }, + { + "domain": "computerbild.de" + }, + { + "domain": "techtarget.com" + }, + { + "domain": "n-tv.de" + }, + { + "domain": "spiegel.de" + }, + { + "domain": "derstandard.at" + }, + { + "domain": "concursolutions.com" + }, + { + "domain": "swm.de" + }, + { + "domain": "heise.de" + }, + { + "domain": "voici.fr" + }, + { + "domain": "kicker.de" + }, + { + "domain": "epojisteni.cz" + }, + { + "domain": "nhm.ac.uk" + }, + { + "domain": "virginmoney.com" + }, + { + "domain": "shellenergy.co.uk" + }, + { + "domain": "castorama.pl" + }, + { + "domain": "bugatti-fashion.com" + }, + { + "domain": "hl.co.uk" + }, + { + "domain": "jesus.de" + }, + { + "domain": "linux-praxis.de" + }, + { + "domain": "gfds.de" + }, + { + "domain": "motorsport.com" + }, + { + "domain": "elmundotoday.com" + }, + { + "domain": "yum.com" + }, + { + "domain": "capital.fr" + }, + { + "domain": "metro.co.uk" + }, + { + "domain": "newsmax.com" + }, + { + "domain": "meneame.net" + }, + { + "domain": "usaa.com" + }, + { + "domain": "publico.es" + }, + { + "domain": "www.ffbb.com" + }, + { + "domain": "hello-hossy.com" + }, + { + "domain": "bitsofwar.com" + }, + { + "domain": "disneyplus.com" + }, + { + "domain": "condell-ltd.com" + }, + { + "domain": "leefgemeenschapzilt.nl" + }, + { + "domain": "healthline.com" + }, + { + "domain": "sporthoj.com" + }, + { + "domain": "www.michelinman.com" + }, + { + "domain": "malmostadsteater.se" + }, + { + "domain": "hertz.co.uk" + }, + { + "domain": "hertz.com" + }, + { + "domain": "lotusbakeries.com" + }, + { + "domain": "harley-davidson.com" + }, + { + "domain": "dailymail.co.uk" + }, + { + "domain": "headphonecheck.com" + }, + { + "domain": "lehmannaudio.com" + }, + { + "domain": "rivergrandrapids.com" + }, + { + "domain": "97x.com" + }, + { + "domain": "la-becanerie.com" + }, + { + "domain": "thrifty.com" + }, + { + "domain": "dollar.com" + }, + { + "domain": "ethicalconsumer.org" + }, + { + "domain": "arbeitsagentur.de" + }, + { + "domain": "melawear.de" + }, + { + "domain": "dnb.com" + }, + { + "domain": "bookings.ltmuseum.co.uk" + }, + { + "domain": "famillemary.fr" + }, + { + "domain": "manoloblahnik.com" + }, + { + "domain": "outlet46.de" + }, + { + "domain": "mytolino.de" + }, + { + "domain": "serif.com" + }, + { + "domain": "collectcheckout.com" + }, + { + "domain": "wunderground.com" + }, + { + "domain": "lecreuset.co.uk" + }, + { + "domain": "sueddeutsche.de" + }, + { + "domain": "mapquest.com" + }, + { + "domain": "ib3.org" + }, + { + "domain": "bergwelten.com" + }, + { + "domain": "volcanoteide.com" + }, + { + "domain": "dwaalzin.nu" + }, + { + "domain": "omegawatches.com" + }, + { + "domain": "russafasingluten.com" + }, + { + "domain": "capita.com" + }, + { + "domain": "capita.co.uk" + }, + { + "domain": "katieloxton.com" + }, + { + "domain": "servustv.com" + }, + { + "domain": "xxlmag.com" + }, + { + "domain": "tfl.gov.uk" + }, + { + "domain": "jomajewellery.com" + }, + { + "domain": "stooq.pl" + }, + { + "domain": "schadefonds.nl" + }, + { + "domain": "bsrzepin.pl" + }, + { + "domain": "carry.pl" + }, + { + "domain": "pap.pl" + }, + { + "domain": "hobbies.co.uk" + }, + { + "domain": "fairlawns.co.uk" + }, + { + "domain": "royalmail.com" + }, + { + "domain": "schrodersgreencoat.com" + }, + { + "domain": "deinepflege.de" + }, + { + "domain": "ground.news" + }, + { + "domain": "schroders.com" + }, + { + "domain": "monetaaurea.com" + }, + { + "domain": "gartenbauverein-refrath.de" + }, + { + "domain": "galeriebedarf.de" + }, + { + "domain": "medscape.com" + }, + { + "domain": "telekom.de" + }, + { + "domain": "homeoffice.gov.uk" + }, + { + "domain": "istore.co.za" + }, + { + "domain": "visiter-cinque-terre.com" + }, + { + "domain": "nu.nl" + }, + { + "domain": "williamhill.com" + }, + { + "domain": "stiga.com" + }, + { + "domain": "service.gov.uk" + }, + { + "domain": "istore.co.za" + }, + { + "domain": "sofiebadet.dk" + }, + { + "domain": "servus.com" + }, + { + "domain": "mirror.co.uk" + }, + { + "domain": "isfo.it" + }, + { + "domain": "ævognmand.dk" + }, + { + "domain": "delayrepaycompensation.com" + }, + { + "domain": "telenor.no" + }, + { + "domain": "dwp.gov.uk" + }, + { + "domain": "socram-banque.fr" + }, + { + "domain": "sportmedizin-rheuma.de" + }, + { + "domain": "commsbrief.com" + }, + { + "domain": "dhbbank.nl" + }, + { + "domain": "thinkimmo.com" + }, + { + "domain": "sava.co.uk" + }, + { + "domain": "truckerstraining.com" + }, + { + "domain": "hotel-restaurant-erbprinz.de" + }, + { + "domain": "kleinezeitung.at" + }, + { + "domain": "musiciansfriend.com" + }, + { + "domain": "delayrepay.eastmidlandsrailway.co.uk" + }, + { + "domain": "hsbc.pl" + }, + { + "domain": "tuttoandroid.net" + }, + { + "domain": "leonpaul.com" + }, + { + "domain": "lalanalu.com" + }, + { + "domain": "simon42.com" + }, + { + "domain": "firstdirect.com" + }, + { + "domain": "bax-shop.be" + }, + { + "domain": "bahntickets.de" + }, + { + "domain": "community.samsung.com" + }, + { + "domain": "wheeloffortune.com" + }, + { + "domain": "paypal.com" + }, + { + "domain": "snyk.io" + }, + { + "domain": "cazenovecapital.com" + }, + { + "domain": "guitarcenter.com" + }, + { + "domain": "povr.com" + }, + { + "domain": "redlionchelwood.co.uk" + }, + { + "domain": "sweetgreen.com" + }, + { + "domain": "zoocity.hr" + }, + { + "domain": "mizuno.com" + }, + { + "domain": "film.at" + }, + { + "domain": "nottinghampost.com" + }, + { + "domain": "gegen-hartz.de" + }, + { + "domain": "epoznan.pl" + }, + { + "domain": "quizlet.com" + }, + { + "domain": "elektramat.nl" + }, + { + "domain": "bank.marksandspencer.com" + }, + { + "domain": "the-race.com" + }, + { + "domain": "membersuite.com" + }, + { + "domain": "brocardi.it" + }, + { + "domain": "rugbyrama.fr" + }, + { + "domain": "mypremiercreditcard.com" + }, + { + "domain": "ciwf.nl" + }, + { + "domain": "lucrin.com.au" + }, + { + "domain": "aroma-zone.com" + }, + { + "domain": "artifexmundi.com" + }, + { + "domain": "siebeljuweliers.nl" + }, + { + "domain": "xrayhours.com" + }, + { + "domain": "err.ch" + }, + { + "domain": "ala.org" + }, + { + "domain": "makerworld.com" + }, + { + "domain": "ariat.com" + }, + { + "domain": "evenue.net" + }, + { + "domain": "lecreuset.com.au" + }, + { + "domain": "atresplayer.com" + }, + { + "domain": "admiral.com" + }, + { + "domain": "milieucentraal.nl" + }, + { + "domain": "speedweek.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "disabledCMPs": [ + "healthline-media", + "cookie-notice", + "notice-cookie" + ], + "filterlistExceptions": [], + "compactRuleList": { + "v": 1, + "s": [ + "#cookie-consent-banner #deny-button", + "#cookie-consent-banner #manage-settings-button", + "#manage-cookies #save-button", + "#pubtech-cmp", + "dialog.cookie-consent", + "dialog.cookie-consent form.cookie-consent__form", + "dialog.cookie-consent form.cookie-consent__form button[value=no]", + "dialog.cookie-consent form.cookie-consent__form button.cookie-consent__options-toggle", + "dialog.cookie-consent form.cookie-consent__form button[value=\"save_options\"]", + "div.acris-cookie-consent", + "[data-acris-cookie-consent]", + ".acris-cookie-consent.is--modal", + "#ccAcceptOnlyFunctional", + "#pubtech-cmp #pt-actions", + "#pubtech-cmp #pt-close", + "#qc-cmp2-main,#qc-cmp2-container", + "#qc-cmp2-container", + "#qc-cmp2-ui", + "#cookie-banner", + "#adopt-controller-button", + "#adopt-reject-all-button", + "#adroll_consent_container", + "#adroll_consent_reject", + "__adroll_fpc", + ".qc-cmp2-summary-buttons > button[mode=\"secondary\"]", + ".qc-cmp2-summary-buttons > button[mode=\"secondary\"]:nth-of-type(2)", + ".qc-cmp2-summary-buttons > button[mode=\"secondary\"]:nth-of-type(1)", + ".c-cookie-notice button[data-qa='allow-all-cookies']", + ".c-cookie-notice", + "button[data-qa=\"reject-non-essentials\"]", + "serif_manage_cookies_viewed", + "serif_allow_analytics", + "#qc-cmp2-ui .qc-cmp2-consent-info", + ".qc-cmp2-toggle-switch > button[aria-checked=\"true\"]", + ".qc-cmp2-buttons-desktop > button[mode=primary]", + ".consent-banner .consent-banner-copy", + ".consent-banner .consent--manage", + ".consent-modal .consent-bucket", + ".consent-modal input[type=checkbox]:checked", + ".consent-modal .consent-save", + ".cookies-consent", + ".cookies-consent .cookies-inner", + "s4s-privacy-module", + "s4s-privacy-module button.decline", + "_cookieanalytics", + "#shopify-pc__banner", + "#sp-cc-wrapper,[data-action=sp-cc],span[data-action=\"sp-cc\"][data-sp-cc*=\"rejectAllAction\"]", + "#sp-cc-rejectall-link", + "#user-consent-management-granular-banner-overlay", + "[data-testid=granular-banner-button-decline-all]", + "div:has(> p > a[href='https://www.anthropic.com/legal/cookies'])", + "div:has(> p > a[href='https://www.anthropic.com/legal/cookies']) button:nth-child(2)", + "anthropic-consent-preferences", + "#consent-tracking", + "#consent-tracking .decline.btn", + ".modal-open bahf-cookie-disclaimer-dpl3", + "bahf-cookie-disclaimer-dpl3", + "bahf-cookie-disclaimer-dpl3:not([aria-hidden=true])", + "cookie_consent=denied", + "#cookie-policy-info,#cookie-policy-info-bg", + "#cookie-policy-info button", + "#cookie-policy-info .btn-reject", + "#cookie-policy-info .btn-setting", + "#cookie-policy-info .btn-ok", + "#shopify-pc__banner__btn-decline", + "sibbo-cmp-layout", + "#disagree-btn", + "form[class*=\"cookie-banner\"][method=\"post\"]", + "form[class*=\"cookie-banner\"] div[class*=\"simple-options\"] a[class*=\"customize-button\"]", + "input[type=checkbox][checked]:not([disabled])", + "a[class*=\"accept-selection-button\"]", + "#awsccc-cb-content", + "#awsccc-cs-container", + "#awsccc-cs-modalOverlay", + "#awsccc-cs-container-inner", + "button[data-id=awsccc-cb-btn-customize]", + "input[aria-checked]", + "input[aria-checked=true]", + "button[data-id=awsccc-cs-btn-save]", + ".axeptio_widget,.axeptio_mount", + ".axeptio-widget--open", + ".axeptio_mount .axeptio_widget", + "axeptio_authorized_vendors=%2C%2C", + ".b-cookie.is-open", + ".cookie-alert.t-dark", + ".cookies-message", + ".cookies-message [name='allow-all']", + ".cookies-message button.bds-button-unstyled", + ".cookies-policy-dialog[open]", + ".cookies-policy-dialog fieldset input[type=radio][value=false]:not(:checked)", + ".cookies-policy-dialog button.bds-button", + ".cookies-message button.bds-button:not([name])", + "#rejectAllMain", + "#sd-cmp", + ".snigel-cmp-framework", + "#sn-b-custom", + "#consent-manager", + "#consent-manager button", + "#consent-manager button:nth-child(2)", + "tracking-preferences", + "#bnp_container", + "#bnp_cookie_banner", + "#bnp_btn_accept,#bnp_btn_reject", + "#bnp_btn_reject", + "AD=0", + ".cookie-notification", + "#blocksy-ext-cookies-consent-styles-css", + ".cookie-notification .ct-cookies-decline-button", + "blocksy_cookies_consent_accepted=no", + "#BorlabsCookieBox", + "._brlbs-block-content,.brlbs-cmpnt-dialog", + "._brlbs-bar-wrap,._brlbs-box-wrap,.brlbs-cmpnt-dialog", + ".brlbs-btn-accept-only-essential,a[data-cookie-refuse]", + "a[data-cookie-individual]", + ".cookie-preference", + "input[data-borlabs-cookie-checkbox]:checked", + "#CookiePrefSave", + ".dsgvoaio-checkbox > input:checked", + "#bsw-consentCookie", + "#bsw-consentCookie .accept-btn", + "#bsw-consentCookie .manage-cookies-btn", + "#bsw-consentCookie .config-banner_section", + "#bsw-consentCookie input[type=checkbox]:checked:not(:disabled)", + "x-bsw-consentCookie", + ".bpa-cookie-banner", + ".bpa-cookie-banner .bpa-module-full-hero", + ".bpa-close-button", + "cookie-allow-tracking=0", + ".cookie-modal", + "#notice-cookie-block", + "#html-body #notice-cookie-block", + "#btn-cookie-manage", + "#notice-cookie-block input:checked", + "#btn-cookie-save", + "#html-body #notice-cookie-block, #notice-cookie", + "#sn-b-save", + "snconsent", + "#cookie-consent-banner #accept-cdp-cookie", + "#reject-cdp-cookie", + "squiz.cdp.consent", + ".cookiepreferences_popup", + "#rejectAllButton", + ".cookies-reminder", + ".cookies-reminder .cookies-reminder__content", + ".cookies-reminder .cookies-reminder__manage-button", + ".cf_modal_container", + ".cassie-cookie-module", + ".cassie-pre-banner", + "#cassie_pre_banner_text", + ".cassie-reject-all", + ".cc-banner[data-cc-banner]", + ".cc-banner[data-cc-banner] button[data-cc-action=reject]", + ".cc-banner[data-cc-banner] button[data-cc-action=preferences]", + ".cc-preferences[data-cc-preferences]", + ".cc-preferences[data-cc-preferences] input[type=radio][data-cc-action=toggle-category][value=off]", + ".cc-preferences[data-cc-preferences] button[data-cc-action=reject]", + ".cc-preferences[data-cc-preferences] button[data-cc-action=save]", + ".cc_banner-wrapper", + ".cc_banner", + "[data-modal-content]:has([data-toggle-target^='cookie'])", + "[data-toggle-target^='cookie']", + "[data-cookie-dismiss-all]", + "#cp-gdpr-choices", + ".gdpr-top-content > button", + ".gdpr-top-back", + ".gdpr-btm__right > button:nth-child(1)", + "#ccc-module,#ccc-overlay,#ccc", + "#ccc-module,#ccc-notify", + "#ccc", + ".ccc-reject-button", + "#ccc-module", + "#ccc-dismiss-button", + ".cc-individual-cookie-settings", + ".cc-individual-cookie-settings #cookie-settings-reject-all", + "ckies_cookielaw", + "#cl-consent", + "#cl-consent [data-role=\"b_options\"]", + ".cl-consent-popup.cl-consent-visible [data-role=\"alloff\"]", + "[data-role=\"b_save\"]", + "__lxG__consent__v2_daisybit=", + ".consent-modal[role=dialog]", + "#consent_reject", + "#manage_cookie_preferences", + "#cookie_consent_preferences input:checked", + "#consent_save", + "ctc_rejected=1", + "dialog[open] .cookies-select-modal .cookies-select-modal__buttons .ds-btn-apply-2-ds", + " c=%7B%22essential", + "#CookieConsentBannerPlaceholder", + "#CookieConsentBannerPlaceholder .cookies-banner-container", + ".syno_cookie_element", + "#cmplz-cookiebanner-container", + "#cmplz-cookiebanner-container .cmplz-cookiebanner", + ".cmplz-cookiebanner .cmplz-deny", + "cmplz_banner-status=dismissed", + ".cc-type-categories[aria-describedby=\"cookieconsent:desc\"]", + ".cc-type-categories[aria-describedby=\"cookieconsent:desc\"] .cc-dismiss", + ".cc-dismiss", + ".cc-type-categories input[type=checkbox]:not([disabled]):checked", + ".cc-save", + ".cc-type-info[aria-describedby=\"cookieconsent:desc\"]", + ".cc-type-info[aria-describedby=\"cookieconsent:desc\"] .cc-compliance .cc-btn", + ".cc-deny", + "[aria-describedby=\"cookieconsent:desc\"]", + "[aria-describedby=\"cookieconsent:desc\"] .cc-type-opt-both", + "[aria-describedby=\"cookieconsent:desc\"].cc-type-opt-out", + ".cmp-pref-link", + ".cmp-body [id*=rejectAll]", + ".cmp-body .cmp-save-btn", + ".cc-type-opt-in[aria-describedby=\"cookieconsent:desc\"]", + ".cc-settings", + ".cc-settings-view", + ".cc-settings-view input[type=checkbox]:not([disabled]):checked", + ".cc-settings-view .cc-btn-accept-selected", + ".spicy-consent-wrapper", + ".spicy-consent-bar", + ".js-decline-all-cookies", + "#cookie-law-info-bar, #cookie-law-bg, .cli-popupbar-overlay", + "#cookie-law-info-bar", + "cookielawinfo-checkbox-non-necessary=yes", + "#btn-cookie-settings", + "#notice-cookie-block #allow-functional-cookies, #notice-cookie-block #btn-cookie-settings", + "#allow-functional-cookies", + ".modal-body", + ".modal-body input:checked, .switch[data-switch=\"on\"]", + "[role=\"dialog\"] .modal-footer button", + "div[consent-skip-blocker=\"1\"][id][data-bg]", + "div[consent-skip-blocker=\"1\"][id][data-bg] > dialog > div > div > div > div > div > a[role=button][id]", + "#cookiescript_injected", + "#cookiescript_reject", + "#cookiescript_manage", + ".cookiescript_fsd_main", + "#cookieAcceptBar.cookieAcceptBar", + ".cookie-alert-extended", + ".cookie-alert-extended-modal", + "a[data-controller='cookie-alert/extended/detail-link']", + ".cookie-alert-configuration-input:checked", + "button[data-controller='cookie-alert/extended/button/configuration']", + "#cc--main", + "#cm", + "#s-all-bn", + "#s-rall-bn", + "cc_cookie=", + "#cc-main", + "#cc-main .cm-wrapper", + ".cm__btn[data-role=necessary]", + ".cc-cookies", + ".cc-cookies .cc-cookie-accept", + ".cc-cookies .cc-cookie-decline", + "#cookiefirst-root,.cookiefirst-root,[aria-labelledby=cookie-preference-panel-title]", + "#cookiefirst-root,.cookiefirst-root", + "button[data-cookiefirst-action=adjust]", + "[data-cookiefirst-widget=modal]", + "button[data-cookiefirst-action=save]", + "button[data-cookiefirst-action=reject]", + ".ch2-container", + ".ch2-dialog", + ".ch2-open-settings-btn, .ch2-open-personal-data-btn", + ".ch2-settings", + ".ch2-deny-all-btn", + ".ch2-settings input[type=checkbox]:not([disabled]):checked", + ".ch2-save-settings-btn", + "cookiehub=", + "#cookie-information-template-wrapper", + "CookieInformationConsent=", + ".cookiejs-banner-wrapper", + ".cookiejs-banner-wrapper:not(.modal)", + ".cookiejs-banner-wrapper button.cookiejs-button", + ".cookiejs-banner-wrapper #reject-cookies-btn", + "analytics_cookies=false", + ".cookiejs-banner-wrapper.modal", + ".cookiejs-banner-wrapper .cookiejs-banner-text", + ".cookiejs-banner-wrapper .cookiejs-banner-li:nth-of-type(2) button", + "cookiejs_preferences", + ".cky-overlay,.cky-consent-container", + ".cky-consent-container", + ".cky-consent-container [data-cky-tag=reject-button]", + ".cky-consent-container [data-cky-tag=settings-button]", + ".cky-modal-open input[type=checkbox],.cky-consent-bar-expand input[type=checkbox]", + ".cky-modal-open input[type=checkbox]:checked,.cky-consent-bar-expand input[type=checkbox]:checked", + ".cky-modal [data-cky-tag=detail-save-button],.cky-consent-bar-expand [data-cky-tag=detail-save-button]", + ".cky-consent-container,.cky-overlay,.cky-consent-bar-expand", + "advertisement:no", + ".cookiealert", + ".configurecookies", + ".confirmcookies", + "#tarteaucitronPersonalize", + ".syno_cookie_element .btn_option", + ".syno_cookie_element .scb_dialog_body", + "#ct-ultimate-gdpr-cookie-popup", + "#ct_ultimate-gdpr-cookie-reject a,#ct-ultimate-gdpr-cookie-reject", + "#ct-ultimate-gdpr-cookie-change-settings", + "#ct-ultimate-gdpr-cookie-modal-slider-form input[type=radio][value=\"1\"], #ct-ultimate-gdpr-cookie-modal-slider-form input[type=radio][value=\"2\"]", + "#ct-ultimate-gdpr-cookie-modal-body .save", + "ct-ultimate-gdpr-cookie=", + "#cookiebar", + "#cookiebar .cookiebar-content", + "div[class*=\"CookiePopup__desktopContainer\"]:has(div[class*=\"CookiePopup\"])", + "div[class*=\"CookiePopup__desktopContainer\"]", + ".syno_cookie_element.scb_dialog input[type=checkbox]:checked:not(:disabled):not([readonly])", + ".syno_cookie_element.scb_dialog .scb_btn_save", + "syno_confirm_v5_answer", + "\"targeting\":false", + "div[class^=\"cookies-banner-module_\"]", + ".cookie-banner.show .cookie-banner__content-all-btn", + ".cookie-banner__content-essential-btn", + "*[data-testid='dl-cookieBanner']", + "[data-testid='dl-cookieBanner']", + "button[data-testid='cookie-banner-strict-accept-selected']", + "div[class^=\"cookies-banner-module_cookie-banner_\"]", + "div[class^=\"cookies-banner-module_small-cookie-banner_\"]", + "#tarteaucitronRoot", + "#tarteaucitronAllDenied2", + "#tarteaucitronCloseAlert", + ".dsgvoaio-checkbox", + "#taunton-user-consent__overlay", + "#taunton-user-consent__overlay:not([aria-hidden=true])", + "#taunton-user-consent__toolbar input[type=checkbox]:checked", + "#taunton-user-consent__toolbar button[type=submit]", + "taunton_user_consent_submitted=true", + "#tccCmpAlert", + "#mol-ads-cmp-iframe, div.mol-ads-cmp > form > div", + "div.mol-ads-cmp > form > div", + "div.mol-ads-ccpa--message > u > a", + ".mol-ads-cmp--modal-dialog", + "a.mol-ads-cmp-footer-privacy", + "button.mol-ads-cmp--btn-secondary", + "[data-project=\"mol-fe-cmp\"]", + "[data-project=\"mol-fe-cmp\"] [class*=footer]", + "[data-project=\"mol-fe-cmp\"] button[class*=basic]", + "[data-project=\"mol-fe-cmp\"] div[class*=\"tabContent\"]", + "[data-project=\"mol-fe-cmp\"] div[class*=\"toggle\"][class*=\"enabled\"]", + "xpath///span[contains(.,'Accetta solo cookie necessari')]", + "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs,#__tealiumImplicitmodal,#consent-layer", + "#__tealiumGDPRecModal *,#__tealiumGDPRcpPrefs *,#__tealiumImplicitmodal *", + "#pg-root-shadow-host", + "#drupalorg-crosssite-gdpr", + ".no", + ".sp-dsgvo", + ".sp-dsgvo.sp-dsgvo-popup-overlay", + ".sp-dsgvo-privacy-btn-accept-nothing", + "sp_dsgvo_cookie_settings", + "div[data-testid=cookie-consent-modal-backdrop]", + "div[data-testid=cookie-consent-message-contents]", + "button[data-testid=cookie-consent-adjust-settings]", + "button[data-testid=cookie-consent-preferences-save]", + "cc_functional=0", + "cc_targeting=0", + "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs,#__tealiumImplicitmodal", + "#cm-acceptNone,.js-accept-essential-cookies,#continueWithoutAccepting,#no_consent", + "#__tealiumGDPRecModal,#__tealiumGDPRcpPrefs", + "#termly-code-snippet-support", + "#termly-code-snippet-support div", + "[data-tid=\"banner-decline\"]", + ".t-preference-button,[data-testid=\"preferences-link\"]", + ".ensModal", + "#ensModalWrapper[style*=block]", + ".ensCheckbox:checked", + "#ensSave", + "#ensNotifyBanner", + "#ensNotifyBanner[style*=block]", + "#ensRejectAll,#rejectAll,#ensRejectBanner,.rejectAll,#ensCloseBanner", + ".t-declineAllButton", + ".t-preference-modal input[type=checkbox][checked]:not([disabled])", + ".t-saveButton", + "#gdpr-single-choice-overlay", + "#gdpr-privacy-settings", + "button[data-gdpr-open-full-settings]", + ".gdpr-overlay-body input", + "body.eu-cookie-compliance-popup-open", + ".eu-cookie-compliance-banner .decline-button, .eu-cookie-compliance-banner .accept-necessary, .eu-cookie-compliance-save-preferences-button", + "cookie-agreed=2", + ".pea_cook_wrapper,.pea_cook_more_info_popover", + ".pea_cook_wrapper", + "euCookie", + "#cookie-consent-banner", + ".termsfeed-com---nb", + ".cc-nb-reject", + "#ez-cookie-dialog-wrapper", + "#ez-manage-settings", + "#ez-cookie-dialog input[type=checkbox]", + "#ez-cookie-dialog input[type=checkbox]:checked", + "#ez-save-settings", + "ez-consent-tcf", + ".cc-nb-changep", + "#CcpaWrapper", + "#fast-cmp-root", + "iframe#fast-cmp-iframe", + "fastCMP-", + "fedex-gdpr", + "fedex-gdpr div", + "fedex-gdpr .fxg-gdpr__reject-all-btn", + "_svs=", + "#fides-overlay, #fides-overlay-wrapper", + "#fides-overlay-wrapper #fides-banner", + ".fides-banner-button", + "#fides-banner .fides-reject-all-button", + "#fides-banner .fides-manage-preferences-button", + ".fides-reject-all-button", + "input[cookie_consent_toggler=\"true\"]", + "[fs-consent-element=banner]", + "[fs-consent-element=banner] [fs-consent-element=allow]", + "[fs-consent-element=banner] [fs-consent-element=deny]", + ".fc-consent-root,.fc-dialog-container,.fc-dialog-overlay,.fc-dialog-content", + ".fc-consent-root", + ".fc-dialog-container", + ".fc-cta-do-not-consent,.fc-cta-manage-options", + ".fc-preference-consent:checked,.fc-preference-legitimate-interest:checked", + ".fc-confirm-choices", + ".overlay_bc_banner", + "a[href=\"https://gdpr-legal-cookie.myshopify.com/\"]", + ".overlay_bc_banner .banner-body", + ".overlay_bc_banner *[data-cookie-save]", + "input[cookie_consent_toggler=\"true\"]:checked", + ".cookie-notify-anchor", + ".cookie-notify-anchor .cookie-notify", + ".cc-cp-foot-save", + ".cc_dialog.cc_css_reboot,.cc_overlay_lock", + ".cc_dialog.cc_css_reboot", + "a[href^=\"https://policies.google.com/technologies/cookies\"", + "form[action^=\"https://consent.google.\"][action$=\"/save\"],form[action^=\"https://consent.youtube.\"][action$=\"/save\"]", + "form[action^=\"https://consent.google.\"][action$=\"/save\"]:has(input[name=set_eom][value=true]) button,form[action^=\"https://consent.youtube.\"][action$=\"/save\"]:has(input[name=set_eom][value=true]) button", + ".glue-cookie-notification-bar", + ".glue-cookie-notification-bar__reject", + ".HTjtHe#xe7COe", + ".HTjtHe#xe7COe a[href^=\"https://policies.google.com/technologies/cookies\"]", + ".HTjtHe#xe7COe button#W0wltc", + "SOCS=CAE", + ".govuk-cookie-banner__message", + ".govuk-cookie-banner__message .govuk-button", + ".gravitoCMP-background-overlay", + "#modalSettingBtn.gravitoCMP-button", + "#allRejectBtn", + ".gravitoCMP-content-section", + ".gravitoCMP-content input[type=checkbox]:checked", + "gravitoData", + ".cc_dialog.cc_css_reboot .cc_b_cp", + ".cookie-consent-preferences-dialog .cc_cp_f_save button", + "#reject-all", + "#privacy-test-page-cmp-test", + "#modal-host > div.no-hash > div.window-wrapper", + "#modal-host > div.no-hash > div.window-wrapper, div[data-testid=qualtrics-container]", + "#modal-host > div.no-hash > div.window-wrapper > div:last-child a[href=\"/privacy-settings\"]", + "div#__next", + "#__next div:nth-child(1) > button:first-child", + ".cookie-modal .cookie-accept-btn", + ".cookie-modal .js-cookie-reject-btn", + "cookies_rejected=1", + "#privacy-test-page-cmp-test-prehide", + "#privacy-test-page-cmp-test-banner", + ".cookieModalContent", + "#cookie-banner-overlay", + "#manageCookie", + ".cookieSettingsModal", + "#AOCookieToggle", + "#AOCookieToggle[aria-pressed=true]", + "#TPCookieToggle", + "#TPCookieToggle[aria-pressed=true]", + "#updateCookieButton", + "dialog[data-cookie-consent]", + "a[data-cookie-accept=\"functional\"]", + "#hu.hu-wrapper", + "#hu.hu-visible", + "#hu-cookies-save", + "#hs-eu-cookie-confirmation", + "#hs-eu-decline-button", + ".consent-banner-box", + "#tarteaucitronAllDenied", + "#tarteaucitronClosePanel", + "consent-banner[component=consent-banner]", + ".accept-cookie", + ".accept-cookie > .accept-cookie-inner", + "xpath///*[contains(@class, 'accept-cookie')]//*[contains(text(), 'Decline')]", + "cookie-pref=rejected", + "button[data-consent=disagree]", + "#cmpBanner", + ".privacy-consent--backdrop", + ".privacy-consent--modal", + ".footer-config-link", + "#confirmSelection", + "#cookie-banner.visible", + "#iubenda-cs-banner", + ".iubenda-cs-accept-btn", + ".iubenda-cs-customize-btn", + "#iubFooterBtn", + "body.cookies-request #cookie-bar", + "body.cookies-request #cookie-bar .disallow-cookies", + "cookie_permission_granted=no", + "#cookie-banner.visible .cookie-banner__container .cookie-banner__accept", + "#cookie-banner.visible .cookie-banner__container .cookie-banner__reject", + "TOYOTANATIONAL_ENSIGHTEN_PRIVACY_TargetingCookies", + ".tp-dialog.cookie-dialog", + ".widget_eu_cookie_law_widget", + "div[class^=pecr-cookie-banner-]", + "button[data-test^=manage-cookies]", + "label[data-test^=toggle][class*=checked]:not([class*=disabled])", + "button[data-test=save-preferences]", + ".cookie-bar", + ".cookie-bar .cookie-bar__message,.cookie-bar .cookie-bar__buttons", + "cookies-state=accepted", + ".consent-banner", + ".consent-banner .consent-banner__actions", + ".consent-banner__actions button.basic-button.secondary", + ".consent-modal__footer button.basic-button.secondary", + ".consent-modal ion-content > div > a:nth-child(9)", + "label.consent-switch input[type=checkbox]:checked", + ".consent-modal__footer button.basic-button.primary", + ".kc-overlay", + "#kconsent", + ".kc-dialog", + "#kc-denyAndHide", + "#lanyard_root div[role='dialog']", + "#lanyard_root [aria-describedby=banner-description]", + "#lanyard_root div[class*=buttons] > button[class*=secondaryButton], #lanyard_root button[class*=buttons-secondary]", + "#lanyard_root [aria-describedby=preference-description],#lanyard_root [aria-describedby=modal-description], #ketch-preferences", + "#lanyard_root button[class*=rejectButton], #lanyard_root button[class*=rejectAllButton]", + "#lanyard_root button[class*=confirmButton],#lanyard_root div[class*=actions_] > button:nth-child(1), #lanyard_root button[class*=actionButton]", + "_ketch_consent_v1_", + ".tp-dialog.cookie-dialog button", + ".iubenda-cs-reject-btn", + ".iub-btn-reject", + ".tp-dialog-box .checkbox.clickable:not(.checked)", + "div[class*=cookieBanner].pencraft", + ".tp-dialog-box .tp-cookie-save", + ".lia-cookie-banner-alert", + ".lia-cookie-banner-alert .AjaxFeedback", + ".lia-cookie-banner-alert a.lia-cookie-banner-alert-reject", + ".darken-layer.open,.lightbox.lightbox--cookie-consent", + "body.cookie-consent-is-active div.lightbox--cookie-consent > div.lightbox__content > div.cookie-consent[data-jsb]", + ".cookie-consent__footer > button[type='submit']:not([data-button='selectAll'])", + "#lgcookieslaw_banner,#lgcookieslaw_modal,.lgcookieslaw-overlay", + ".artdeco-global-alert[type=COOKIE_CONSENT]", + ".artdeco-global-alert[type=COOKIE_CONSENT] button[action-type=DENY]", + "#macaron_cookie_box", + "#macaron_cookie_box .macaronbtn", + ".macaronbtn.refuse", + ".macaronbtn.letmechoose", + ".macaronbtn.letmechoose.open", + "#cookie_description .paragraph", + "#cookie_description input[type=checkbox]:checked:not(:disabled)", + ".macaronbtn.confirmselection", + "_deCookiesConsent", + "tp_privacy_base", + "div.aem-page > div[class^=\"CookiesAlert_cookiesAlert__\"]", + "div[aria-labelledby=pwa-consent-layer-title]", + "div[class^=StyledConsentLayerWrapper-]", + "div[aria-labelledby^=pwa-consent-layer-title]", + "button[data-test^=pwa-consent-layer-deny-all]", + "[data-name=\"mediavine-gdpr-cmp\"]", + "[data-name=\"mediavine-gdpr-cmp\"] [data-view=\"manageSettings\"]", + "[data-name=\"mediavine-gdpr-cmp\"] input[type=checkbox]", + "[data-name=\"mediavine-gdpr-cmp\"] [format=\"secondary\"]", + "#transcend-consent-manager", + "#wcpConsentBannerCtrl", + "#shopify-section-cookies-controller", + "#shopify-section-cookies-controller #cookies-controller-main-pane", + "dialog[data-testid=accept-our-cookies-dialog]", + "#banner-manage", + "#pc-confirm", + "#cookies-controller-main-pane a[data-tab-target=manage-cookies]", + "#manage-cookies-pane.active", + "#manage-cookies-pane.active input[type=checkbox][checked]:not([disabled])", + "#manage-cookies-pane.active button[type=submit]", + "#truyo-consent-module", + "#moove_gdpr_cookie_info_bar", + "#moove_gdpr_cookie_info_bar:not(.moove-gdpr-info-bar-hidden)", + "#moove_gdpr_cookie_info_bar .change-settings-button", + "#moove_gdpr_cookie_modal", + ".moove-gdpr-modal-save-settings", + ".cuk_cookie_consent", + ".cuk_cookie_consent_manage_pref", + ".cuk_cookie_consent_save_pref", + ".cuk_cookie_consent_close", + "#truyo-cookieBarContent", + "button#declineAllCookieButton", + "#twcc__mechanism", + ".moove-gdpr-infobar-reject-btn", + "#twcc__mechanism .twcc__notice", + "#twcc__decline-button", + "twCookieConsent=", + ".u12-data-protection-notice", + ".u12-data-protection-notice button", + "#nhsuk-cookie-banner", + "#nhsuk-cookie-banner__link_accept", + ".u12-data-protection-notice button.js-decline", + "dialog.cookie-policy", + "dialog.cookie-policy header", + "xpath///*[@id=\"modal\"]/div/header", + "dialog header", + "button.js-manage", + "xpath///*[@id=\"cookie-policy-content\"]/p[4]/button[2]", + "dialog.cookie-policy .p-switch__input:checked", + ".disc-cp--active", + ".disc-cp-modal__modal", + ".js-disc-cp-deny-all", + "dialog.cookie-policy .js-save-preferences", + "xpath///*[@id=\"modal\"]/div/button", + "_cookies_accepted=essential", + "#catapult-cookie-bar", + ".has-cookie-bar #catapult-cookie-bar", + "catAccCookies", + ".tx-om-cookie-consent", + ".tx-om-cookie-consent .active[data-omcookie-panel]", + "[data-omcookie-panel-save=min]", + "input[data-omcookie-panel-grp]:checked:not(:disabled)", + "[data-omcookie-panel-save=save]", + "#usercentrics-root,#usercentrics-cmp-ui", + "#usercentrics-cmp-ui", + "#usercentrics-root", + "#usercentrics-button", + "#usercentrics-button #uc-btn-accept-banner", + "#usercentrics-button #uc-btn-deny-banner", + "div[aria-labelledby=CookieAlertModalHeading]", + "section[data-test=initial-waitrose-cookie-consent-banner]", + ".legalmonster-cleanslate", + ".legalmonster-cleanslate #lm-cookie-wall-container", + "#lm-accept-necessary", + "section[data-test=cookie-consent-modal]", + "button[data-test=manage-cookies]", + "button[data-test=submit]", + "wtr_cookies_advertising=0", + "wtr_cookies_analytics=0", + ".fs-cc-components,[fs-cc=banner]", + ".osano-cm-window,.osano-cm-dialog", + ".osano-cm-window", + ".osano-cm-dialog:not(.osano-cm-dialog--hidden)", + ".osano-cm-denyAll,.osano-cm-deny", + ".cookieBanner--visibility", + ".cookieBanner__wrapper", + ".js_cookieBannerProhibitionButton", + ".fs-cc-components,[fs-cc=banner] [fs-cc=allow]", + "[fs-cc=banner] [fs-cc=deny]", + "[fs-cc=banner]", + "fs-cc", + ".mw-cookiewarning-container", + "[data-comp-type=cookie-banner-root-wix],[data-hook=ccsu-banner-wrapper]", + ".cookie-banner:has([data-ol-cookie-banner-set-consent])", + "[data-ol-cookie-banner-set-consent]", + "[data-ol-cookie-banner-set-consent=essential]", + "oa", + ".js-cookie-notice:has(#cookie_settings-form)", + ".js-cookie-notice #cookie_settings-form", + ".js-cookie-notice button[value=disable]", + "#pandectes-banner", + "#pandectes-banner .cc-deny", + "#pandectes-banner .cc-settings", + ".pd-cp-ui-rejectAll", + ".pd-cp-ui-save", + "[data-hook=ccsu-banner-decline-all]", + "#ccpaCookieContent_wrapper, article.ppvx_modal--overpanel", + "#ccpaCookieBanner, .privacy-sheet-content", + "#bannerDeclineButton", + "a#manageCookiesLink", + ".privacy-sheet-content #formContent", + "#formContent .cookiepref-11m2iee-checkbox_base input:checked", + ".cookieAction.saveCookie,.confirmCookie #submitCookiesBtn", + "#gdprCookieBanner", + "#gdprCookieContent_wrapper", + "hideCookieBanner=", + "cookie_prefs", + "[data-hook=ccsu-banner-wrapper]", + ".wccom-comp-privacy-banner .wccom-privacy-banner", + ".wccom-privacy-banner__content-buttons button.is-secondary", + "div.wccom-modal__footer > button", + "#gdpr-cookie-consent-bar", + "#gdpr-cookie-consent-bar #cookie_action_reject", + "wpl_viewed_cookie=no", + ".wpcc-container", + "#pmc-pp-tou--notice", + ".cookiesBanner", + ".cookiesBanner .wrapper-cookies", + ".wpcc-container .wpcc-message", + ".cookie_warn", + ".cookie_warn .cookie_warn_inner", + "div[class^=cookie-consent-CookieConsent]", + "#consent-settings-button", + ".consent-banner-button-accept-overlay", + "userConsent=%7B%22marketing%22%3Afalse", + "#cookies-use-alert", + ".euCookieModal, #js_euCookieModal", + ".euCookieModal", + "tp-yt-iron-overlay-backdrop.opened", + "ytd-consent-bump-v2-lightbox", + ".gdpr-wrapper", + ".gdpr-wrapper .gdpr-cookie-wrapper", + "#cookie-bar", + "#cookie-bar .cb-enable,#cookie-bar .cb-disable,#cookie-bar .cb-policy", + "#cookie-bar .cb-disable", + "cb-enabled=accepted", + "ytd-consent-bump-v2-lightbox tp-yt-paper-dialog", + "ytd-consent-bump-v2-lightbox tp-yt-paper-dialog a[href^=\"https://consent.youtube.com/\"]", + "ytd-consent-bump-v2-lightbox .eom-buttons .eom-button-row:first-child ytd-button-renderer:first-child #button,ytd-consent-bump-v2-lightbox .eom-buttons .eom-button-row:first-child ytd-button-renderer:first-child button", + ".consent-bump-v2-lightbox", + "ytm-consent-bump-v2-renderer", + "ytm-consent-bump-v2-renderer .privacy-terms + .one-col-dialog-buttons c3-material-button:nth-child(2) button, ytm-consent-bump-v2-renderer .privacy-terms + .one-col-dialog-buttons ytm-button-renderer:nth-child(2) button", + "#zdf-cmp-banner-sdk", + "#zdf-cmp-main.zdf-cmp-show", + "#zdf-cmp-main #zdf-cmp-deny-btn", + "#cookie-consent-banner #accept-button", + "#sp-cc-wrapper *,[data-action=sp-cc],span[data-action=\"sp-cc\"][data-sp-cc*=\"rejectAllAction\"]", + ".axeptio_mount .needsclick", + "button#axeptio_btn_dismiss,button.ax-discardButton", + "body > div#banner-0 > div:nth-child(1)#grouped-pageload-Banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#root > div#ccpa-iframe-theme-provider[data-testid=\"ccpa-iframe-theme-provider\"] > div#ccpa-iframe[data-testid=\"ccpa-iframe\"] > div#ccpa_consent_banner[data-testid=\"ccpa_consent_banner\"] > div:not([id]) > div:nth-child(3):not([id]) > span:not([id]) > span:not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id]) > button#decline_cookies_button[data-testid=\"decline_cookies_button\"]", + "body:not([id]) > div#banner-0 > div:nth-child(1)#grouped-pageload-Banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#iubenda-cs-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#banner-0 > div:nth-child(1)#grouped-pageload-Banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div#clym-app-layout > div:nth-child(2)#clym-notice-layout > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div#clym-app-layout > div:nth-child(2)#clym-notice-layout > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div#clym-app-layout > div:nth-child(2)#clym-notice-layout > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#handle-reject-all", + "body > div#banner-0 > div:nth-child(1)#grouped-pageload-Banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1)#dashboard > div:not([id]) > div:nth-child(2)#dashboard-body-container > div:nth-child(2):not([id]) > button:nth-child(4)#decline-text", + "body > div:not([id]) > div:nth-child(4):not([id]) > button#cookie_all_reject", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie_all_reject", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#noCookies", + "body > div:not([id]) > div#clym-app-layout > div:nth-child(2)#clym-notice-layout > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#handle-reject-all", + "button#cookies_few_accept_btn", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1)#dashboard > div:not([id]) > div:nth-child(1):not([id]) > button#decline-text", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1)#dashboard > div:not([id]) > div:nth-child(2)#dashboard-body-container > div:nth-child(2):not([id]) > button:nth-child(4)#decline-text", + "body:not([id]) > div#root > div#ccpa-iframe-theme-provider > div#ccpa-iframe > div#ccpa_consent_banner > div:not([id]) > div:nth-child(3):not([id]) > span:not([id]) > span:not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id]) > button#decline_cookies_button", + "body#moneyinvesting > div#top > div#content > div:nth-child(4):not([id]) > a:nth-child(11):not([id])", + "body > section > form > article:nth-child(3) > nav:nth-child(3) > span:nth-child(1) > button", + "body:not([id]) > div#gdpr-new-container > div:not([id]) > div#gdpr-new-container > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div#app > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(1):not([id]) > div:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > div:not([id]) > a:nth-child(1)#ipoclick-btn-cookiebar-ik_ga_niet_akkoord_var_a", + "body > div[id] > div > div > div > div > div:nth-child(3) > span > span > div:nth-child(2) > span:nth-child(1) > button", + "div[class^=CookieBannerContent__Container]", + "button[class^=CookieBannerContent__Settings]", + "div[class^=CookiePreferencesModal__CategoryContainer] input:checked", + "div[class^=CookiePreferencesModal__ButtonContainer] > button", + "#gdpr-consent-tool-wrapper", + "iframe[src^=\"https://cmp-consent-tool.privacymanager.io\"]", + "button#save", + "#denyAll", + ".okButton", + "#manageSettings", + ".purposes-overview-list", + "button#saveAndExit", + "span[role=checkbox][aria-checked=true]", + "#save-all-pur", + "#reminder", + "#cookie-policy-info", + "div.cookie-btn-box > div[aria-label=\"Reject\"]", + ".cookie-policy-lightbox-bottom > div[aria-label=\"Save Settings\"]", + "#m-cookienotice", + "#manage-cookies", + "#accept-selected", + ".cookies-banner-shown", + "#cookie-popup-with-overlay", + "#cookie-popup-with-overlay [data-ref='cookie.no-thanks']", + "RY_COOKIE_CONSENT", + "div.cookie-bar", + "[data-component=CookieBanner]", + "[data-component=CookieBanner] [data-component=CookieBanner_AcceptAll]", + "[data-component=CookieBanner] [data-component=CookieBanner_AcceptABCRequired]", + "trackingconsent", + "aside#cookies,.overlay-cookies", + "[data-testid=\"PrivacyPreferenceCenterWithConsentCookieSwitch\"]:checked", + "#cookies .cookies-btn", + "#cookies #submitCookies", + "#cookies #rejectCookies", + ".fullpageCover", + "[data-testid=\"PrivacyPreferenceCenterWithConsentCookieContent\"] > [data-testid=\"ButtonStyledButton\"]", + "is_personalized_content_consent_given=0", + ".fullpageCover a[href*='/go/page/privacy.html']", + "#cookieBannerContent", + "[data-tracking-element-id=cookie_banner_essential_only]", + ".fullpageCover div.rounded-full:nth-child(2)", + "#decline-cookies", + "#aag-cookie-consent", + "#gdpr-new-container", + "#gdpr-new-container,#voyager-gdpr > div", + "#voyager-gdpr > div", + "#voyager-gdpr > div > div > button:nth-child(2)", + "#gdpr-new-container .btn-more", + "#gdpr-new-container .gdpr-dialog-switcher", + ".consent__wrapper", + ".consent", + "button.consentSettings", + "button#consentSubmit", + "#gdpr-new-container .switcher-on", + "#gdpr-new-container .btn-save", + "div:has(> div > button[allytmln=ally-cookie-consent])", + "button[allytmln=ally-cookie-consent]", + "#footer-container ~ div", + "#footer-container > div", + "body > div#cookie_fade > div#cookie_light > div:not([id]) > form:not([id]) > div:nth-child(1)#g-cookie-buttons > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "[class*=CookieConsent__root___]", + "[class*=CookieConsent__modal___]", + "[class*=CookieConsent__modal___] > div > button[class*=secondary]:nth-child(2)", + "cookie-consent-1={\"optedIn\":true,\"functionality\":false,\"statistics\":false}", + "body > div:not([id]) > main:nth-child(2):not([id]) > footer:nth-child(3):not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#userAgreePopup > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > noindex:not([id]) > div#gdpr-alert > div:nth-child(2):not([id]) > button:nth-child(1)#close-gdpr-reject", + "body > div#BannerRegion > div:nth-child(1)#Banner_cookie_0 > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#rejectAllBtn", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-policy-info > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:nth-child(2):not([id]) > div:not([id]) > main:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body:not([id]) > div#__next > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div.show_cookie > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#page-wrapper > footer:nth-child(6):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2)#block-cookiesui > div:not([id]) > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#consent-banner > div:not([id]) > div:nth-child(4):not([id]) > form:nth-child(1)#email-form > a:nth-child(3)#decline-btn", + "body > div:not([id]) > footer:nth-child(3):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id])", + "body > div#wrapper > div:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div#frame-modals > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#message-banner > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#cookiemodal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(5)#footer-cookie-buttons > a:nth-child(2)#footer-cookie-close", + "body > aside:not([id]) > div:nth-child(2)#cookie-consent-modal > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-consent-container > div#cookie-consent-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#btn-reject-all", + "body > div#app > div:nth-child(1)#__nuxt > div#__layout > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div#hulk_cookie_bar > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "[data-testid=\"PrivacyPreferenceCenterWithConsentCookieContent\"]", + ".over-18__manage-cookies-link", + "[data-testid=\"PrivacyPreferenceCenterWithConsentCookieSwitch\"]", + "div > div > div > div > span[href*=\"/cookie-and-similar-technologies-policy.html\"]", + "xpath///span[contains(., 'Alle afwijzen') or contains(., 'Reject all') or contains(., 'Tümünü reddet') or contains(., 'Odrzuć wszystko')]", + "div > div > div:has(> div > span[href*=\"/cookie-and-similar-technologies-policy.html\"]) > [role=button]:nth-child(2)", + "body > div#doc > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#component-0b0eedb5-0632-4762-96e7-53f11da6f3f8 > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id]) > p:not([id])", + "*[aria-labelledby=\"consent-banner-title\"]", + "#consent-banner-title", + "button[data-testid=\"reject-button\"]", + "ckns_explicit=1", + "div.modal.cookiesModal.is-open", + "div.cookiesModal__buttonWrapper > button[data-closecause=\"close-by-manage-cookies\"]", + "button#js-manage-data-privacy-save-button", + "#gdpr-cookie-message", + "#cookie-disclaimer", + "#cookiesel", + "div[class*=\"Overlay__container\"]:has(div[class*=\"TCF2Popup\"])", + "div[class*=\"TCF2Popup\"]", + "[class*=\"TCF2Popup\"] a[href^=\"https://www.dailymotion.com/legal/cookiemanagement\"]", + "button[class*=\"TCF2ContinueWithoutAcceptingButton\"]", + "dm-euconsent-v2", + "[class*=CookieBanner__Sizer]", + "[aria-label=consent-banner]", + "xpath///button[contains(., 'Reject all')]", + "#cookie_banner", + "#tsla-reject-cookie", + "tsla-cookie-consent=rejected", + "ngc-cookie-banner", + "div.cookie-footer-container", + "[data-testid=cookieBanner]", + "[data-testid=cookieBanner] button", + "[data-testid=cookieBanner__manageCookiesButton]", + "[data-testid=cookieModal] input[type=radio][value=false]:not(:checked):not(:disabled)", + "[data-testid=cookieModal__acceptButton]", + "gdpr__", + ".duet--cta--cookie-banner", + ".duet--cta--cookie-banner button.tracking-12 > span", + "_duet_gdpr_acknowledged=1", + "[data-test-id=cookies_section]", + ".cc-window.cc-visible", + ".cc-window .cc-dialog", + ".cc-window.cc-visible .cc-consent-require-only", + "dji_consentmanager", + "[id^=cookie-consent-banner]", + "#cookie-consent-denied", + "cookie-consent=denied", + "#gdpr-banner", + "#gdpr-banner-decline", + "body > div#ppms_cm_consent_popup_d0bd516e-280a-44ef-bf9b-de66419ba0f0 > div#ppms_cm_popup_overlay > div#ppms_cm_popup > div:nth-child(3)#ppms_cm_centered_buttons > button:nth-child(2)#ppms_cm_disagree", + ".cookie-wrapper", + ".cookie-wrapper > .cookie-notice", + "#consent-modal", + "#privacy-settings-content", + "button[type=\"submit\"]", + "div.one-modal__action-footer-column--secondary > a", + "[data-test-id=cookie-notice-reject]", + "#ef-ccpa", + "#ef-button-ccpa-decline", + ".cdk-overlay-container", + ".cdk-overlay-container app-esaa-cookie-component", + ".btn-cookie-refuser", + "body > div#ppms_cm_consent_popup_4abb1e4c-f063-4207-8488-64f5e44dc7cf > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-c5578703-0386-4f6a-adac-b60b97d64768 > div:nth-child(2)#ppms-11c5795d-8223-468c-aa09-9889bb5ef03a > button:nth-child(2)#ppms_cm_reject-all", + ".fixed.bottom-0:has([data-test=cookieBannerButton])", + ".fixed.bottom-0 [data-test=cookieBannerButton]", + "body > main:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > aside:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + ".cck-container", + ".cck-actions-button[href=\"#refuse\"]", + "div[data-testid=\"cookie-policy-manage-dialog\"]", + "#gdrp", + ".cookie-consent", + ".cookies-modal", + ".show-cookies-modal .cookies-modal #cookies-accept", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div#ch2-dialog > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "div:has(> .consent-banner .consent-banner__content--gdpr-v2),.ReactModalPortal:has([data-a-target=consent-modal-save])", + ".consent-banner .consent-banner__content--gdpr-v2", + "div:has(> .consent-banner .consent-banner__content--gdpr-v2)", + "button[data-a-target=\"consent-banner-manage-preferences\"]", + "input[type=checkbox][data-a-target=tw-checkbox]", + "input[type=checkbox][data-a-target=tw-checkbox][checked]:not([disabled])", + "[data-a-target=consent-modal-save]", + ".ReactModalPortal:has([data-a-target=consent-modal-save])", + "[data-testid=\"BottomBar\"]", + "[data-testid=\"BottomBar\"] div", + "[data-testid=\"BottomBar\"] > div:has(>div:first-child>div:last-child>button[role=button]>span) > div:last-child > button[role=button]:last-child", + ".show-cookies-modal .cookies-modal #cookies-reject", + ".fixed [data-testid=closeCookieBanner]", + "[data-testid=consent-banner]", + "[data-testid=manage-preferences]", + "[data-testid=consent-mgr-dialog] [data-ga-button=save-preferences]", + "#CookieConsent", + "#CookieConsentDeclined", + "[data-testid=consent-banner] [data-testid=reject-button]", + "xpath///div[contains(., \"Vill du tillåta användningen av cookies från Instagram i den här webbläsaren?\") or contains(., \"Allow the use of cookies from Instagram on this browser?\") or contains(., \"Povolit v prohlížeči použití souborů cookie z Instagramu?\") or contains(., \"Dopustiti upotrebu kolačića s Instagrama na ovom pregledniku?\") or contains(., \"Разрешить использование файлов cookie от Instagram в этом браузере?\") or contains(., \"Vuoi consentire l'uso dei cookie di Instagram su questo browser?\") or contains(., \"Povoliť používanie cookies zo služby Instagram v tomto prehliadači?\") or contains(., \"Die Verwendung von Cookies durch Instagram in diesem Browser erlauben?\") or contains(., \"Sallitaanko Instagramin evästeiden käyttö tällä selaimella?\") or contains(., \"Engedélyezed az Instagram cookie-jainak használatát ebben a böngészőben?\") or contains(., \"Het gebruik van cookies van Instagram toestaan in deze browser?\") or contains(., \"Bu tarayıcıda Instagram'dan çerez kullanımına izin verilsin mi?\") or contains(., \"Permitir o uso de cookies do Instagram neste navegador?\") or contains(., \"Permiţi folosirea modulelor cookie de la Instagram în acest browser?\") or contains(., \"Autoriser l’utilisation des cookies d’Instagram sur ce navigateur ?\") or contains(., \"¿Permitir el uso de cookies de Instagram en este navegador?\") or contains(., \"Zezwolić na użycie plików cookie z Instagramu w tej przeglądarce?\") or contains(., \"Να επιτρέπεται η χρήση cookies από τo Instagram σε αυτό το πρόγραμμα περιήγησης;\") or contains(., \"Разрешавате ли използването на бисквитки от Instagram на този браузър?\") or contains(., \"Vil du tillade brugen af cookies fra Instagram i denne browser?\") or contains(., \"Vil du tillate bruk av informasjonskapsler fra Instagram i denne nettleseren?\")]", + "xpath///button[contains(., 'Отклонить необязательные файлы cookie') or contains(., 'Decline optional cookies') or contains(., 'Refuser les cookies optionnels') or contains(., 'Hylkää valinnaiset evästeet') or contains(., 'Afvis valgfrie cookies') or contains(., 'Odmietnuť nepovinné cookies') or contains(., 'Απόρριψη προαιρετικών cookies') or contains(., 'Neka valfria cookies') or contains(., 'Optionale Cookies ablehnen') or contains(., 'Rifiuta cookie facoltativi') or contains(., 'Odbij neobavezne kolačiće') or contains(., 'Avvis valgfrie informasjonskapsler') or contains(., 'İsteğe bağlı çerezleri reddet') or contains(., 'Recusar cookies opcionais') or contains(., 'Optionele cookies afwijzen') or contains(., 'Rechazar cookies opcionales') or contains(., 'Odrzuć opcjonalne pliki cookie') or contains(., 'Отхвърляне на бисквитките по избор') or contains(., 'Odmítnout volitelné soubory cookie') or contains(., 'Refuză modulele cookie opţionale') or contains(., 'A nem kötelező cookie-k elutasítása')]", + ".pop-cookie", + ".miniConsent,#PrivacyPolicyBanner", + "#PrivacyPolicyBanner", + "#cookie-settings", + "#reject-all-cookies", + "#gdpr-banner-container", + "body > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#privacy-reject", + "#gdpr-banner-container #gdpr-banner [data-testid=gdpr-banner-decline-button]", + "div:has(> div > a[href*='/privacy-policy'])", + "div:has(> div > div > div[role=alert] > a[href^=\"https://policy.medium.com/medium-privacy-policy-\"])", + "#cookie-container", + "div[aria-label=\"Cookie Policy Banner\"]", + "#onetrust-banner-sdk", + ".ucb", + ".ucb-banner", + ".ucb-banner .ucb-btn-save", + ".dip-consent,.dip-consent-container", + ".dip-consent-container", + ".dip-consent-content", + ".dip-consent-btn[tabindex=\"2\"]", + "div#cookieWarning", + "a#btnCookiesDenyAll", + "[class*=ConsentManager]", + "[class*=ConsentManager_row] input[type=radio][id$=no]", + "[class*=ConsentManager_continue]", + "[data-testid=cookie-dialog-root]", + "input[type=radio][id$=-declineLabel]", + "[data-testid=confirm-choice-button]", + "ccm-notification", + "gdpr-banner", + ".cookies-agreement-notification,.modal-new:has([data-module=SetupCookies])", + ".cookies-agreement-notification", + ".cookies-agreement-notification .cb_setup", + "[data-module=SetupCookies]", + "body > div#root > div:not([id]) > div:nth-child(8):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > span:nth-child(3):not([id]) > button:not([id])", + "[data-module=SetupCookies] input[type=checkbox]:checked:not(:disabled)", + "[class^=cookie_wrapper]", + "[name=button_save_choice]", + "div.b-cookies-informer", + "div.b-cookies-informer__nav > button:nth-child(1)", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > span:nth-child(2):not([id]) > button:not([id])", + "[status=open]:has([aria-label=\"Privacy Disclosure\"])", + "div.b-cookies-informer__switchers", + "div.b-cookies-informer__switchers input:not([disabled])", + "div.b-cookies-informer__nav > button", + "[aria-labelledby=cookieConsentTitle]", + "xpath///button[contains(., 'Reject non-essential')]", + "consent=rejected", + "#cookie-consent", + "#cookie-consent .cookie-all__btn", + "[class*=ConsentBanner]", + "[class*=ConsentBanner] .frDWEu", + "[class*=ConsentBanner] .hXIpFU", + "xeConsentState={%22performance%22:false%2C%22marketing%22:false%2C%22compliance%22:false}", + "#cookie-consent .cookie-consent__switch:not(.always_on)", + "#cookie-consent .cookie-selection__btn", + "[class*=modal]", + "[class*=modal] a[href*='/cookie-policy']", + "[class*=modal]:has(a[href*='/cookie-policy']) button:nth-child(2)", + "[class*=cookiesAnnounce]", + "[class*=cookiesAnnounce] [class*=announceText]", + "cookie_consent_essential=true", + "cookie_consent_marketing=true", + "[data-cy=\"consent-manager-banner\"]", + "[data-cy=\"manage_cookies\"]", + "[data-cy=\"consent-manager-preferences-deny-all\"]", + ".disclaimer-opened #disclaimer-cookies", + "#disclaimer-reject_cookies", + "#consent-page", + "#consent-page button[value=reject]", + ".cookie-manager", + ".cookie-manager .cookie-notice.open", + ".cookie-notice [data-test=reject]", + "footer .ccpabanner", + ".BusinessCookieConsent", + ".BusinessCookieConsent [data-id=cookie-consent-banner-buttons]", + "[data-id=cookie-consent-banner-buttons] > div:nth-child(2) button", + "#cookie-consent button", + "#cookie-consent input[type=checkbox]:checked:not(:disabled)", + "plosCookieConsentStatus=false", + "#cookieBanner #cookieBannerContent", + "#cookieBanner [data-label=accept_essential]", + "pnl-cookie-wall-widget", + "#cookie_modal_wrapper", + "#cookie_modal_wrapper #cookie_modal_button_choose", + "#consent-init", + "#consent-init #consent-configure", + "#consent-update #consent-configuration-save", + "zinio-cookie-consent", + "body:not([id]) > div#didomi-host > div:not([id]) > div#didomi-popup > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id])", + "body > astro-island:not([id]) > div#consent-popup > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:nth-child(1)#reject", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#hpealertcomp_container > div#hpealertcomp > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#GDPR-alert > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body#customcss > div#root > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#__nuxt > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#skel-layers-wrapper > div:nth-child(19)#cookie-banner > a:nth-child(3)#accept-essential", + "body > div#cookieConsent > div:nth-child(2)#cookiesBannerMain > div:nth-child(6):not([id]) > a:not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > div#gdpr_notification_container > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > a#gdpr_reject_button", + "body:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div#cdk-overlay-1 > modal-bottom-container:nth-child(2)#modal-1 > cookie-bar-modal:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div#__layout > div#app > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookiescript_injected_wrapper > div#cookiescript_injected > div:nth-child(4)#cookiescript_buttons > div:nth-child(3)#cookiescript_reject", + "body > div#__next > div:nth-child(5)#cookies-popup > div:nth-child(2):not([id]) > button:nth-child(1)#essential_cookies_allowed", + "body:not([id]) > div#ppms_cm_consent_popup_41c35535-a0f0-40c6-8b4f-81749e4c584f > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-a6a62119-1ec7-4283-a44a-97861a542f46 > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn[data-testid=\"only-required-cookie-button\"]", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body#homepage > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > button:nth-child(2)#onetrust-reject-all-handler", + "body:not([id]) > div#cmpStart > div#cmpStartx > div:nth-child(2)#cmpStartModal > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1)#uc-btn-deny-banner", + "body:not([id]) > div#cc--main > div#cc_div > div:nth-child(1)#cm > div#c-inr > div:nth-child(2)#c-bns > button:nth-child(2)#c-s-bn", + "body:not([id]) > div#termly-code-snippet-support > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > aside:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div#modal-content-11 > div#pr-cookie-notice > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-banner-deezer > div#gdpr-dir-tag > div:not([id])[data-testid=\"cookie-banner\"] > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button#gdpr-btn-refuse-all[data-testid=\"gdpr-btn-refuse-all\"]", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-cookie-banner", + "body > div#cookiescript_injected > div:nth-child(2)#cookiescript_toppart > div:nth-child(2)#cookiescript_rightpart > div#cookiescript_buttons > div:nth-child(3)#cookiescript_reject", + "body:not([id]) > div#cookieConsent > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookiescript_injected_wrapper > div#cookiescript_injected > div:nth-child(3)#cookiescript_bottompart > div#cookiescript_cookietablewrap > div:nth-child(3)#cookiescript_tabscontent > div:nth-child(1)#cookiescript_declarationwrap > div:nth-child(1)#cookiescript_categories > div:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id]) > span:not([id])", + "body:not([id]) > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > button:nth-child(2)#onetrust-reject-all-handler", + "body#collection-59d726c7f6576e961db44d2c > div:not([id]) > section:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id])[data-testid=\"CookieBanner\"] > div:nth-child(3):not([id]) > button:nth-child(2):not([id])[data-testid=\"CookieBanner\\.DeclineButton\"]", + "body > main#app > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#freeprivacypolicy-com---nb > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-consent > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-decline", + "body > div#didomi-host > div:not([id]) > div#didomi-popup > div:nth-child(2):not([id]) > div:not([id])[data-testid=\"notice\"] > div:nth-child(2):not([id]) > span:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:not([id]) > section:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "CookiePermissionInfo", + "body > div#elGuestTerms > div:not([id]) > div:nth-child(2):not([id]) > form:not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > ul:not([id]) > li:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id]) > span:not([id])", + "body > div#js-blp-cookie-notice > div:not([id]) > article:nth-child(2):not([id]) > footer:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookieConsentBanner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#acceptEssentials", + "body > main#main-content > div:nth-child(1)#banner-messages > form:nth-child(2)#analytics-prompt > footer:nth-child(5):not([id]) > button:nth-child(2):not([id])", + ".alert .accept-cookies,form.js-cookies", + "body > dialog:not([id]) > article:not([id]) > footer:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body > aside:not([id]) > dialog:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > footer:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button.cookieconsent__buttonAcceptNecessary", + "body > section:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#reject-btn", + "body:not([id]) > dialog:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookieConsent > div:nth-child(2)#cookiesBannerMain > div:nth-child(6):not([id]) > a:not([id])", + "body:not([id]) > div:not([id]) > div#cookieConsentBanner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#bw-cookie-banner > div:not([id]) > div#bw-cookie-banner-container > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookieConsent > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#gtmCookieConsentDialog > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + ".alert:has(.accept-cookies)", + "body > div#cookieConsent > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "form.js-cookies button", + "body > div#tc-privacy-wrapper > div#footer_tc_privacy > div:nth-child(1)#footer_tc_privacy_container_text > div#footer_tc_privacy_text > h2:nth-child(1):not([id]) > button#footer_tc_privacy_button_2", + "body > div#cmp-modal > div:not([id]) > div#gravitoCMP-modal-layer1 > div:nth-child(4):not([id]) > div:nth-child(4):not([id]) > button:nth-child(1)#modalRejectAllFirstLayerBtn", + "body:not([id]) > div#c-footerBrandV1 > footer:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div#ez-cookie-notification > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#ez-cookie-notification__decline", + "body:not([id]) > div#redim-cookiehint-modal > div#redim-cookiehint > div:nth-child(3):not([id]) > a:nth-child(2)#cookiehintsubmitno", + "body > div#popups > dialog#cookiesModal > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__next > main#root > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#mm-0 > div:nth-child(1):not([id]) > div:not([id]) > footer:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > section:nth-child(2)#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > div:nth-child(2):not([id]) > button:nth-child(1)#onetrust-reject-all-handler", + "body > div:not([id]) > div:nth-child(1)#csm-wrapper > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > ul:not([id]) > li:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id]) > span:not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > div > div > div:nth-child(4) > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(1)", + "body#top > div:not([id]) > form:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#wrapper > header:nth-child(1)#abe-top > div:nth-child(1)#abe-gdpr-banner > div:not([id]) > div#gdpr-banner-component > div:not([id]) > div:not([id]) > button:nth-child(4)#gdpr-banner-component-decline-btn", + "body > div#qc-cmp2-container > div#qc-cmp2-main > div:not([id]) > div#qc-cmp2-ui > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#disagree-btn", + "body:not([id]) > div#cookiePrompt > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#privacy_pref_optout", + "body:not([id]) > div:not([id]) > div:nth-child(1)#account-identifier-root > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > section:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > ul:not([id]) > li:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id]) > span:not([id])", + "body:not([id]) > div#cookie_fade > div#cookie_light > div:not([id]) > form:not([id]) > div:nth-child(1)#g-cookie-buttons > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#gnar-consent-popup-outer > div:not([id]) > div#gnar-consent-popup > div:nth-child(5):not([id]) > button:nth-child(1)#deny-cookies", + "body > div > div:nth-child(2) > div > div:nth-child(1) > div > div:nth-child(2) > div > button:nth-child(2)", + "form.js-cookies input[type=checkbox]", + "body:not([id]) > div#BannerRegion > div:nth-child(1)#Banner_cookie_0 > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#rejectAllBtn", + "body#html-body > aside:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body:not([id]) > div#elGuestTerms > div:not([id]) > div:nth-child(2):not([id]) > form:not([id]) > button:nth-child(3):not([id])", + "body:not([id]) > div#tc-privacy-wrapper > div#footer_tc_privacy > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(2)#footer_tc_privacy_button_2", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookie-notice-container > div:nth-child(1)#cookie-notice > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookies-reject-all", + "body:not([id]) > div#cookiebar > div:nth-child(2):not([id]) > a:nth-child(2)#decline-cookies", + "body > div:not([id]) > section:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#pageMountNode > div:nth-child(24):not([id]) > dialog:nth-child(7):not([id]) > div:not([id]) > footer:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div#container-8ee478ce7e > div:nth-child(4):not([id]) > div#experiencefragment-4b657be6a8 > div:not([id]) > div#container-216749502c > div:not([id]) > div:not([id]) > div#dynamicContainer-eb1e113116 > div:not([id]) > div#cookie-mask > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(3)#saveNecessCookie", + "body:not([id]) > astro-island:not([id]) > div#consent-popup > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:nth-child(1)#reject", + "body > div#__nuxt > div#__layout > div#app > div:nth-child(1):not([id]) > div:nth-child(6):not([id]) > div:not([id]) > footer:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body#dhig > div#adsk-gdpr-footer-wrapper > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > form:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__nuxt > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#Avada-CookiesBar > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > privacy-banner:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div > div:nth-child(3) > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > div:nth-child(1):not([id]) > button:nth-child(1)#onetrust-reject-all-handler", + "body > div > div > div:nth-child(4) > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(4)", + "body > app-root:not([id]) > app-cookie-consent:nth-child(1):not([id]) > div:not([id]) > section:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > ul:not([id]) > li:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id]) > span:not([id])", + "body:not([id]) > div#bs-cookie-settings > div#bs-cookie-wrapper > div:nth-child(1)#bs-cookie-bar > div:not([id]) > div#c-inr > div:nth-child(2)#c-bns > button:nth-child(2)#c-s-bn", + "body > div:not([id]) > form:nth-child(2)#aspnetForm > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(4)#declineCookies", + "body:not([id]) > div#cookieModal > div:not([id]) > div#modal-content > button:nth-child(6)#essentialCookies", + "body#html-body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#portal-cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#portal-cookie-banner__wrapper > aside#portal-cookie-banner__content > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cc--main > div#cc_div > div:nth-child(1)#cm > div#c-inr > div:nth-child(2)#c-bns > button:nth-child(2)#c-s-bn", + "body:not([id]) > div#__next > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body:not([id]) > div#modal-root > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id]) > div:not([id])", + "body > div:not([id]) > div:nth-child(2)#tracking-consent-dialog > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#tracking-consent-dialog-reject", + "body:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#sliding-popup > div:not([id]) > div:not([id]) > div:nth-child(2)#popup-buttons > button:nth-child(1):not([id])", + "body > div:not([id]) > aside:nth-child(1):not([id]) > div:nth-child(2):not([id]) > footer:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#root > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#bss-cookie-notice > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookie_banner > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#save_settings", + "body > div#on1-cookie-banner > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:not([id]) > span:nth-child(4):not([id]) > a:nth-child(2):not([id])", + "body > div#__next > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > div#__next > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#CookieMessage > div#CookieBox > div:nth-child(4):not([id]) > button:nth-child(2)#DenyButton", + "body > div#cookiebar > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button#cc-decline", + "body > div#_psaihm_main_div > div:nth-child(5)#_psaihm_1_top > a#_psaihm_continue_without_accepting", + "body > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > div:nth-child(2):not([id]) > button:nth-child(1)#onetrust-reject-all-handler", + "body > div > div > div > div > div > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > div#silktide-wrapper > div:nth-child(3)#silktide-banner > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#__next > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#root > div:not([id]) > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__tealiumGDPRecModal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#consent_prompt_decline", + "body:not([id]) > div#_evidon_banner > button:nth-child(3)#_evidon-decline-button", + "body:not([id]) > div#root > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div#glowCookies-banner > div:nth-child(3):not([id]) > button:nth-child(2)#rejectCookies", + "body > div#cookie-notice > a:nth-child(3)#cookie-notice-deny", + "body > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body[data-wh-webp=\"true\"] > div:not([id])[data-sentry-component=\"CookieBanner\"][data-sentry-source-file=\"CookieBanner\\.tsx\"] > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#consent-manager > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__next > div:not([id]) > div:nth-child(6)#cw-footer-container > footer:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id]) > span:nth-child(2):not([id]) > span:nth-child(1):not([id])", + "body:not([id]) > div#rootApp > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie_alert > div:nth-child(2)#cookie_alert_container > div#cookie_alert_text > div:nth-child(2):not([id]) > div:nth-child(2)#js-cookie_alert_button_decline > a#cookie_alert_decline", + "body > div > div > div:nth-child(2) > div:nth-child(3)", + "body:not([id]) > div#cookiebanner > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "a[data-form=\".eprivacy_optin_decline\"]", + "body > div#__next > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#hpealertcomp_container > div#hpealertcomp > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body:not([id]) > dialog:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div > div > div:nth-child(3) > div > div:nth-child(2) > div:nth-child(2) > button:nth-child(2)", + "body > div:not([id]) > div:not([id]) > button:nth-child(5):not([id])", + "body > div#consent-widget-container > div:not([id])[data-testid=\"consent-widget-view\"] > div:nth-child(2):not([id]) > button:nth-child(2)#widget-button-reject[data-testid=\"consent-widget-reject-all\"]", + "body:not([id]) > div#__nuxt > div#__layout > div#app > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "form.js-cookies input[type=checkbox]:checked:not(:disabled)", + "body > div#shopify-section-sections--18523644756187__ae721dda-d94a-4267-887e-55888f578a11 > sys-cookies:nth-child(2):not([id]) > hdt-drawer#drawerCookies > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cck_here > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div > div > div > div:nth-child(2) > button:nth-child(2)", + "body > div#consent-popup > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#decline-all", + "body#top > div#cookiescript_injected_wrapper > div#cookiescript_injected > div:nth-child(6)#cookiescript_cookietablewrap > div:nth-child(3)#cookiescript_tabscontent > div:nth-child(1)#cookiescript_declarationwrap > div:nth-child(1)#cookiescript_categories > div:nth-child(1):not([id])", + "body > div > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div#__next > div:nth-child(5)#cookies-popup > div:nth-child(2):not([id]) > button:nth-child(1)#essential_cookies_allowed", + "body > div#cookie-popup > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#CCManager_wrapper > div#CCManager_modal > div:not([id]) > div:nth-child(2)#CCManager_modal_buttons > button:nth-child(2)#CCManager_modal_decline", + "body > div#notice-cookie-block > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > dialog:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > button:nth-child(2)#onetrust-reject-all-handler", + "body > div#CookieReportsPanel > div:nth-child(2)#CookieReportsBanner > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > aside#cookies-policy > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > form:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body:not([id]) > div#cookieBanner > div#cookieBannerWrapper > button:nth-child(3):not([id])", + "body:not([id]) > div#tc-privacy-wrapper > div#footer_tc_privacy > div:nth-child(1)#footer_tc_privacy_container_text > div#footer_tc_privacy_text > h2:nth-child(1):not([id]) > button#footer_tc_privacy_button_2", + "body#unlogged-body > div#cookie-banner-deezer > div#gdpr-dir-tag > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button#gdpr-btn-refuse-all", + "body > div > div > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > div#cookiescript_injected > div:nth-child(2)#cookiescript_toppart > div:nth-child(2)#cookiescript_rightpart > div#cookiescript_buttons > div:nth-child(3)#cookiescript_reject", + "body > div#cookie-consent-popup > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-reject", + "body#what_is_gradle > div:not([id]) > main:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#analytics-consent-div > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#reject", + "body:not([id]) > div#__next > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > main > div:nth-child(2) > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(2)", + "form.js-cookies button[type=submit]", + "body:not([id]) > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(3)#popin_tc_privacy_button_3", + "body > hathi-cookie-consent-banner:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + ".alert:has(.accept-cookies) a[href='/account/cookies']", + "body > div#layui-layer1 > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div > div > div:nth-child(2) > div:nth-child(1) > button:nth-child(2)", + "body > div:not([id]) > div:nth-child(2)#cookie-modal > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-btn", + "body > main:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#didomi-host > div:not([id]) > div:not([id]) > div#didomi-notice > div:not([id]) > div:nth-child(2)#buttons > button:nth-child(2)#didomi-notice-disagree-button", + "body:not([id]) > header:not([id]) > div:not([id]) > nav:nth-child(2)#navbar > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#decline-cookies", + "body:not([id]) > div#ivcb-overlay > div#ivcb-banner > div:nth-child(1)#ivcb-welcome > p:nth-child(4):not([id]) > a:nth-child(3):not([id])", + "body:not([id]) > div:not([id]) > dialog:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body#html-body > div#ppms_cm_consent_popup_aa2675b4-35d1-4c66-8c52-887d40d15592 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div > div > div > div > div > div > div:nth-child(1) > div:nth-child(4) > a:nth-child(2)", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#didomi-host > div:not([id]) > div#didomi-popup > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3)#buttons > button:nth-child(2)#didomi-notice-disagree-button", + "body > div > form:nth-child(1) > div:nth-child(43) > div:nth-child(2) > div > div > button:nth-child(5)", + "body > div#react-application > div:not([id]) > div:not([id])[data-testid=\"linaria-injector\"] > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id])[data-testid=\"main-cookies-banner-container\"] > section:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body#splash > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > section#cookie-policy > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cc--main > div#cc_div > div:nth-child(1)#cm > div#c-inr > div:nth-child(2)#c-bns > button:nth-child(1)#c-s-bn", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(9):not([id]) > div:nth-child(1)#global-footer > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookie-wall > div#cwi > div:nth-child(4)#cw-controls > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#cwc-reject > span:not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(2)#disclaimer", + "body > div > div:nth-child(2) > p:nth-child(4) > a:nth-child(2)", + "body:not([id]) > div#root > section:nth-child(7):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#pageMountNode > div:not([id]) > dialog:nth-child(6):not([id]) > div:not([id]) > footer:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div#__next > section:nth-child(1)#cookieConsent > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#cookies-modal > div:nth-child(2)#consent-modal > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id]) > span#consent-modal-refuse", + "body > div#cookieConsentBanner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#acceptEssentials", + "body > div#root > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > div:nth-child(9) > div > div:nth-child(3) > a:nth-child(2)", + "body > div#__next > div:not([id]) > div:nth-child(10):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#body-wrapper > section:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div > div:nth-child(4) > div > div > div:nth-child(1) > div:nth-child(3) > button:nth-child(2)", + "body > div#cookie-alert > div:nth-child(2)#btnChoix > a:nth-child(2)#choixNon", + "body:not([id]) > main#main-content > div:nth-child(1)#banner-messages > form:nth-child(2)#analytics-prompt > footer:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#customise-cookies-main-bottom-notification > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(2):not([id]) > button:nth-child(1)#customise-cookies-required-cookies-btn", + "body:not([id]) > div#consent-box > p:not([id]) > span:not([id]) > button:nth-child(2)#decline-cookies", + "body:not([id]) > div#cookiescript_injected_wrapper > div#cookiescript_injected > div:nth-child(3)#cookiescript_bottompart > div#cookiescript_cookietablewrap > div:nth-child(2)#cookiescript_tabscontent > div:nth-child(1)#cookiescript_declarationwrap > div:nth-child(1)#cookiescript_categories > div:nth-child(1):not([id])", + "body > div#mayo-privacy-consent-banner > div:nth-child(3)#privacy-popup-controls-div > div:not([id]) > button:nth-child(2)#mayo-privacy-opt-out", + "body > div#dk-cookie-message > div:not([id]) > button:nth-child(3):not([id])", + ".c-modal.is-active", + "body:not([id]) > div:not([id]) > div:nth-child(1)#cookie-banner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#btn-reject-all", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#page-wrap > div:nth-child(7)#cookie-notice > div:not([id]) > div:not([id]) > div:nth-child(3)#decline-cookies > button#cookie-decline-button", + "body > div:not([id]) > div:nth-child(1)#page > div:not([id]) > main:nth-child(4)#main > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1)#block-mila-v1-cookiesui > div#cookies > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(3):not([id])", + "body > div#cookieInfo > div:nth-child(2):not([id]) > div:nth-child(6):not([id]) > button:not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id]) > span:nth-child(2):not([id])", + "body > div > div > div:nth-child(3) > button:nth-child(2)", + "body#html-body > div:not([id]) > div:nth-child(7)#gdprCookieBar > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(5):not([id])", + "body > div > div > div:nth-child(1) > div > h2:nth-child(1) > button", + "body > div > div > div > div:nth-child(2) > ul > li:nth-child(2) > button > span", + "body:not([id]) > header#header > div:nth-child(1)#InitModal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#DeclineCookies", + "body:not([id]) > div:not([id]) > section:nth-child(1):not([id]) > article:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > section:not([id]).privacy-banner > div:not([id]).privacy-banner__wrap > div:not([id]).privacy-content > div:not([id]).privacy-banner__grid-wrap > div:not([id]).privacy-banner__grid-col.privacy-banner__inner > div:nth-child(3):not([id]).privacy-banner__actions.privacy-banner__set.privacy-banner__btn-wrapper--stacked > button:nth-child(2):not([id]).privacy-banner__btn.privacy-banner__btn--secondary.privacy-banner__reject", + "body:not([id]) > div#cmp-modal > div:not([id]) > div#gravitoCMP-modal-layer1 > div:nth-child(4):not([id]) > div:nth-child(4):not([id]) > button:nth-child(1)#modalRejectAllFirstLayerBtn", + "body > div#__next > div:not([id]) > div:nth-child(2)#cookie-banner > div#cookie-banner-content-wrapper > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > main#content > div:nth-child(4):not([id]) > div:not([id]) > span:nth-child(2):not([id]) > button:nth-child(3)#cookieBannerRejectBtn", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(12):not([id]) > div:nth-child(4)#cookie_notices > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div#__nuxt > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id]) > span:nth-child(2):not([id])", + "body > div#modal-root > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id])[data-testid=\"modal-backdrop\"] > div:not([id])[data-testid=\"cookie-modal-root\"] > section:not([id])[data-testid=\"cookie-modal\"] > div:nth-child(2):not([id])[data-testid=\"modal-actions\"] > div:not([id]) > button:nth-child(2):not([id])[data-testid=\"modal-decline-button\"]", + "body:not([id]) > div#hrw-cookie-dialog > div:nth-child(3)#hrw-cookie-dialog__buttons > button:nth-child(2)#hrw-cookie-dialog__decline", + "body:not([id]) > div#infocookie_modal > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-button2", + "body:not([id]) > div#didomi-host > div:not([id]) > div:not([id]) > div#didomi-notice > div:not([id]) > span:nth-child(1):not([id])", + ".c-modal.is-active .is-dismiss", + "body > div#page > section:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie_banner > div:nth-child(2):not([id]) > button:nth-child(2)#cookie_discent", + "body > div#cookie-banner > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#accept-essential", + "body#mid1011200 > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > footer:not([id]) > div:nth-child(4)#cookie-bar > button:nth-child(3)#cookiesc", + "body:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div > div:nth-child(1) > div:nth-child(3) > div:nth-child(2)", + "body:not([id]) > div:not([id]) > div#cookies-bar > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body#hgcBody > div#cookies-banner > a:nth-child(6)#btnCookieBannerNo", + "body#home-page > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(1)#popin_tc_privacy_button", + "body > div#site-wrapper > div:nth-child(1)#site-canvas > div#wrapper1 > main:nth-child(2)#mainSection1 > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > dialog#biccy-banner > div#biccy-prompt > div:nth-child(2):not([id]) > button:nth-child(2)#biccy-reject-button", + ".DialogHandlerContainer.visible:has(.cookie-dialog)", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#oax-dialog-main > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > div > div:nth-child(3) > div:nth-child(2) > button", + "body > div#consent-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#decline-consent", + "body:not([id]) > app-root:not([id]) > app-cookie-consent:nth-child(1):not([id]) > div:not([id]) > section:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > ul:not([id]) > li:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id]) > span:not([id])", + "span.cookie-option-large>div>span.link-no-decoration.gui-text", + "body:not([id]) > div#portal-cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#portal-cookie-banner__wrapper > aside#portal-cookie-banner__content > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body#siteCorePage > div#root > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-btn", + "body:not([id]) > div#__next > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + ".cookie-dialog form .CookieConsentOption input[type='checkbox']:not([name='permanent']):checked", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#gdprCookieBar > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#shopify-section-popups > div:nth-child(1):not([id]) > modal-box#modal-popups-0 > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body#outerContainer > div#didomi-host > div:not([id]) > div#didomi-popup > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#buttons > button:nth-child(2)#didomi-notice-disagree-button", + "body > main#main > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > a:not([id])", + "body:not([id]) > div#cookie-consent > div:nth-child(3):not([id]) > button:nth-child(1)#reject-cookies", + "body > div > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > button:nth-child(3)", + "body > aou-root:not([id]) > solidify-cookie-consent-banner-container:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id]) > span:nth-child(2):not([id])", + "body > div#privacy_modal > div:nth-child(2)#privacy__modal__only > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#privacy__modal__close", + "body:not([id]) > nkd-cookie-banner:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > span:not([id]) > button:not([id])", + "body > div:not([id]) > div#ez-cookie-notification > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#ez-cookie-notification__decline", + "body > div#main > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body:not([id]) > div#cookie_banner > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#save_settings", + "body > div > div:nth-child(1) > button:nth-child(2)", + "body:not([id]) > div#consent-widget-container > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#widget-button-reject", + "body > div > div > div:nth-child(1) > div:nth-child(2) > button:nth-child(1)", + "body > div:not([id]) > div:not([id]) > div#ch2-dialog > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#page > section:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__tealiumGDPRecModal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#consent_prompt_submitNo", + "body > div#__nuxt > div#__layout > div#app > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#app > div:nth-child(1)#container > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2)#reject-all", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1)#ch2-dialog > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > div:nth-child(2) > button:nth-child(2)", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#af12bfa19-03da-4966-8f06-728111ae3aa9 > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#main > div:not([id]) > div#layout > header:nth-child(1)#site-header > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div#cookieconsent-banner > div#cookieconsent-container > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookies > div:nth-child(1)#cookies-popup > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(3)#cookies-deny-all-btn", + "body > div#privacy-cookie-banners-root > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div#oax-dialog-main > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > span > div > div:nth-child(2) > a:nth-child(1)", + "body > div#__nuxt > div#__layout > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id])[data-testid=\"elem_v_000310\"] > div:nth-child(7):not([id])[data-testid=\"elem_v_002593\"] > div:not([id])[data-testid=\"elem_v_002594\"] > div:nth-child(2):not([id])[data-testid=\"elem_v_002596\"] > button:nth-child(2):not([id])[data-testid=\"app_link_button_elem_v_002598\"]", + "body > div:not([id])[data-testid=\"CookieBanner\"] > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookies > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button#cookiesReject", + "body > div#freeprivacypolicy-com---nb > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div > aside.pr-cookie-modal > div:nth-of-type(2) > div > div > div > div:nth-of-type(2) > button:nth-of-type(2)", + "body > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(93)#cookie-bar > div#cookie-bar-eu > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#deny_cookie", + "body > div:not([id]) > form:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > base-popup#gpuAupTMRHO > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > menu:not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id])", + "body > div > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2)", + "body > div#orejime > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div#__nuxt > div#__layout > div:not([id]) > div:nth-child(7):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div > div > div:nth-child(2) > div:nth-child(2) > button:nth-child(1)", + "body:not([id]) > pi-cookie-policy-modal:not([id]) > pi-modal#manageCookieModal > modal-dialog:nth-child(2):not([id]) > modal-body:nth-child(2):not([id]) > div:not([id]) > pi-modal-cookie-intro:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#necessary-only-cookies-button", + "body:not([id]) > div#gdpr-consent-banner > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#denyAll", + "body > div#__next > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(18)#cookiebarNew > div:not([id]) > div:not([id]) > div:not([id]) > div#cookie-container > div#cookie-id > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(2)#rejectAll", + "body:not([id]) > div#modal-region-select > div#modal-overlay-region-select > div:not([id]) > div:nth-child(2):not([id]) > div#regions-roles > footer:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn", + "body > div#cookieNotice > div#cookieNoticeInner > div:not([id]) > section:nth-child(2):not([id]) > div:not([id]) > button:nth-child(5)#cookieNoticeDeclineCloser", + "body > div:not([id]) > aside#cmp-banner > form:not([id]) > div:nth-child(4):not([id]) > section:not([id]) > div:not([id]) > button:nth-child(1)#cmp-deny-all", + "body:not([id]) > div#cookie > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-rejected", + "body:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#consentDecline", + "body > div#cookieWarning > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#root > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie_consent_wrapper > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#consent_accept_essential", + "body:not([id]) > div#app > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div#wrapper > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > span:nth-child(1):not([id]) > a:not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div > div > div:nth-child(2) > a:nth-child(1)", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])[data-testid=\"s-r-bu\"]", + "body > div#consent_manager-background > div:nth-child(1)#consent_manager-wrapper > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#consent_manager-accept-none", + "body:not([id]) > div#__next > div:not([id]) > div:nth-child(9):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#badge-container > div#seers-cmp-cookie-data-hol > div:nth-child(2)#SeersCMPBannerMainBar > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div#__tealiumGDPRecModal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#consent_prompt_decline", + "body:not([id]) > div#uniccmp > div#unic-b > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#ampsandConsentElement > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div > div:nth-child(8) > div > div:nth-child(6) > a:nth-child(1)", + "body:not([id]) > div#udp-footer > section:nth-child(4):not([id]) > div:nth-child(1)#push-information > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#combinedBanner > div:nth-child(2)#cookieBanner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#popups > dialog:nth-child(2)#cookiesModal > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > div > div > div > button[data-testid=\"micro-cookie-decline\"]", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > span:not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > privacy-banner:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div#ch2-dialog > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#site-wrapper > div:nth-child(1)#site-canvas > div#wrapper1 > main:nth-child(2)#mainSection1 > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div#glowCookies-banner > div:nth-child(3):not([id]) > button:nth-child(2)#rejectCookies", + "body > div:not([id]) > div:nth-child(4)#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#dux-privacy > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#shop_table > div:nth-child(2)#cookiewarning > div:nth-child(3):not([id]) > button:nth-child(1)#decline_cookies", + "body:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div > div:nth-child(3) > div > div:nth-child(2) > button:nth-child(2)", + "body#smarkets > div#content > div:nth-child(3)#app > div:nth-child(2)#app-content-wrapper > div#header-wrapper > div:nth-child(2)#content-wrapper > div:nth-child(2)#cookies-notice > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookieConsent > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div#consentPopup > button:nth-child(3)#consentReject", + "body > div#all > div:nth-child(4)#footer > footer:not([id]) > div:nth-child(3)#c3087 > div:nth-child(1)#cookieConsentBanner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div > footer:nth-child(6) > div:nth-child(1) > div > div > div:nth-child(3) > div > div > div > div:nth-child(2) > div > div > div > div:nth-child(2) > button:nth-child(1)", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookieoverlay > div:nth-child(1)#cookiebanner > div:nth-child(2)#cookiebuttoncontainer > a:nth-child(2):not([id])", + "body > div:not([id]) > dialog:nth-child(1):not([id]) > div:nth-child(7):not([id]) > button:nth-child(3):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2)#gdpr-popup-v3-button-mandatory", + "body > div > div:nth-child(3) > div:nth-child(1) > div:nth-child(2) > div:nth-child(1) > div > button:nth-child(2)", + "body > div#root > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#cookieCardBg > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#consentBanner > form:nth-child(3)#consentBannerForm > button:nth-child(5):not([id])", + "body > div:not([id]) > div:nth-child(36)#am-cookie-bar > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__nuxt > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__next > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div#cookie_alert > div#cookie_alert_container > div#cookie_alert_text > div:nth-child(2):not([id]) > div:nth-child(2)#js-cookie_alert_button_decline > a#cookie_alert_decline", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#layout-fea-0-bd-5-e-e-723-4027-aa-78-dbcc-846073-a-6 > div#page-62928 > div:not([id]) > div:nth-child(8)#\\31 e9783d2-3575-4c86-b6e8-bc0fd6b17307 > div#\\31 e9783d2-3575-4c86-b6e8-bc0fd6b17307-banner > div:nth-child(3):not([id]) > a:nth-child(1)#\\31 e9783d2-3575-4c86-b6e8-bc0fd6b17307-decline", + "body:not([id]) > div#__next > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#vs-cc-wrapper > div#vs-cc > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#hw-cc-notice-deny-btn", + "body:not([id]) > div#cookieConsentBanner > div#cookieConsentContent > button:nth-child(4)#closeConsentBanner", + "body > div#ppms_cm_consent_popup_ebe2c144-a500-4a10-9f42-5376f7e6fe82 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-b48cd1ca-fbb6-4e69-8101-76d5a2f12ab1 > div:nth-child(2)#ppms-4cf660ff-36d2-4634-84cc-3ab59d55df9a > button:nth-child(2)#ppms_cm_reject-all", + "body > div > div:nth-child(10) > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2)", + "body > div > div > p > button:nth-child(2)", + "body > div#app > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#truendo_container > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > button:nth-child(2)#tru_deselect_btn", + "body:not([id]) > div#cookies-modal > div:nth-child(2)#consent-modal > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id]) > span#consent-modal-refuse", + "body > div#a52a380d7-7829-4b5e-8585-b929383da38e > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > p:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > app-root:not([id]) > app-wrapper:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > app-cookie-hint:nth-child(3):not([id]) > div#cookie-hint > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-hint-btn-decline", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section#cookiesettings > section:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > span:not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(2)#popin_tc_privacy_button_2", + "body > div#ppms_cm_consent_popup_3d7a866f-d272-4134-894c-be7d33152399 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div > dialog > div > div > div:nth-child(3) > div:nth-child(1) > div:nth-child(2) > a:nth-child(2)", + "body > div#view > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#biskoui-mount > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__nuxt > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#pp-consent-manager-banner-container > div#pp-consent-manager-banner-container-inner > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > a#cookie-banner-button-save-essentials", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(1)#popin_tc_privacy_button", + "body > div#root > div:not([id]) > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:not([id]) > div#privacy-cookie-banners-root > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:nth-child(7):not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > app-root:not([id]) > app-login:nth-child(2):not([id]) > p-sidebar:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > header#header > div:nth-child(1)#CookiesConsent > div:not([id]) > div:nth-child(2):not([id]) > form:nth-child(2):not([id]) > div:nth-child(5):not([id]) > button:not([id])[data-testid=\"AcceptRequiredCookies\"]", + "body > div#tc-privacy-wrapper > div#footer_tc_privacy > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(1)#footer_tc_privacy_button_3", + "body:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2)#disconfirm", + "body > div > div:nth-child(2) > button:nth-child(7)", + "body > div:not([id]) > div:not([id]) > div:not([id])[data-testid=\"Modal-component\"] > div:not([id]) > div:not([id]) > div:not([id])[data-testid=\"CookieNotice-main-wrapper\"] > div:nth-child(3):not([id]) > button:nth-child(1):not([id])[data-testid=\"reject-cookies-pvh-button\"] > div:not([id])", + "body:not([id]) > div#cookiebot__body > div:not([id]) > div#cookiebot__modal-wrapper > div:nth-child(3):not([id]) > div:not([id]) > a:nth-child(1)#CybotCookiebotDialogBodyLevelButtonLevelOptinAllowallSelection", + "body > div#cookieChoiceInfo > div:nth-child(2)#cookieButtonBar > a:nth-child(2)#cookieChoiceRefuse", + ".cookie-dialog button[type='submit']", + "body:not([id]) > div:not([id]) > form:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#mainContentWrapper > div:nth-child(11):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:nth-child(4):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-notice > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-cookies", + "body:not([id]) > div:not([id]) > section:nth-child(7):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div > div > div:nth-child(4) > div:nth-child(3) > button:nth-child(3)", + "body[data-testid=\"body-hydrated\"] > div#root > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])[data-testid=\"cookie-banner-reject-all\"]", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body > div#__next > div:nth-child(3):not([id]) > dialog:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#abedcfbae-7589-497a-bf0e-a5e627359ac0 > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookieBannerAcceptEssential", + "body:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn", + "body > div#CookieAcceptance > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body:not([id]) > div#app > div#app > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cornelsen-consent-manager > section:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > section:not([id]) > p:nth-child(2):not([id]) > a:not([id])", + "body > div#tc-privacy-wrapper > div:nth-child(2)#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(3)#popin_tc_privacy_button_3", + "body:not([id]) > div#consent-banner > div:nth-child(2)#truste-consent-track > div:nth-child(3)#truste-consent-content > div:nth-child(3):not([id]) > div#truste-consent-buttons > button:nth-child(3)#truste-consent-required", + "body > div#lightbox_page > div:nth-child(8)#cookieLB > div:nth-child(2)#cookieModal > div:nth-child(1):not([id]) > p:nth-child(1):not([id]) > a:not([id])", + "body > astro-island[uid][prefix][component-url][component-export][renderer-url][props][client][opts][await-children] > div > div > div:nth-child(2) > div:nth-child(2) > a:nth-child(1)", + "body > div[id] > div:nth-child(3) > div:nth-child(2) > button:nth-child(2)", + "body > dialog#cookieconsent-container > section:not([id]) > div:nth-child(2):not([id]) > form:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > div#kick-kcm-content-overlay > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > section:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div[id] > div > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > button", + "body > div#wrapper > div:nth-child(6)#js-cu-action-bar > div:not([id]) > form:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body > div[class] > div:nth-child(2) > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > div#cmpbox > div:not([id]) > div:nth-child(1)#cmpboxcontent > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#accelerator-page > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > p:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div[id][cookie-banner-data-theme] > div > div > div > div:nth-child(2) > div:nth-child(2) > button", + "body > div#cookieBanner > div#cookieBannerWrapper > button:nth-child(3):not([id])", + "body > div[id][tabindex][role][aria-live][data-nosnippet][class][style] > div:nth-child(2) > div:nth-child(2) > div > div:nth-child(3)", + "body#collection-5d5226193cfb38000127fdfd > div#siteWrapper > div:nth-child(1):not([id]) > section:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div[id] > div:nth-child(3) > div > div:nth-child(2) > button:nth-child(2)", + "[bundlename=reddit_cookie_banner]", + "body > main[id][data-v-app] > div:nth-child(4) > div:nth-child(2) > button:nth-child(2)", + "body > footer:not([id]) > div:nth-child(2):not([id]) > cookie-notice:nth-child(1):not([id]) > div#cookie-notice > div:not([id]) > div#cookie-notice-inner > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button#cookie-notice-decline", + "body > div[id][class] > div:nth-child(4) > div > div > div:nth-child(1) > div:nth-child(3) > button:nth-child(2)", + "body > div[id][class] > div > div:nth-child(4) > div > div:nth-child(4) > button:nth-child(2) > span", + "body > div[id][class][data-role][data-controller][style] > div > div:nth-child(2) > form > button:nth-child(3)", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div[class][tabindex] > div > div > div:nth-child(2) > div:nth-child(2) > button:nth-child(2)", + "body > main[class][id] > div:nth-child(1) > form:nth-child(2) > footer:nth-child(5) > button:nth-child(2)", + "body > div[id] > div > div > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > div#cookie-law-info-bar > span:not([id]) > a:nth-child(2)#cookie_action_close_header_reject", + "body > div[id] > div:nth-child(3) > div:nth-child(2) > div > div > div:nth-child(5) > button:nth-child(2)", + "body > div[class][role][aria-label][style] > div > div:nth-child(3) > button:nth-child(2)", + "body > div#cookie_consent_wrapper > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#consent_accept_essential", + "button[data-t=rejectAll]", + "body > div[id][name][role][aria-modal][aria-labelledby][tabindex][lang][dir][ng-non-bindable][style][data-template][class] > div > div:nth-child(4) > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(1)", + "body > div[id][class] > div > div:nth-child(1) > div > h2:nth-child(1) > button", + "body > div[class] > div > div:nth-child(2) > div > div > div:nth-child(3) > button:nth-child(2)", + "body > div[class] > ul > li > div > div > div:nth-child(2) > a:nth-child(2) > span", + "body > div[class][id][tabindex][role][aria-labelledby][aria-modal][style] > div > div > div:nth-child(3) > div > div > p > button:nth-child(3)", + "body > div#meru-cc--main > div#meru-cc > div:nth-child(1)#meru-cm > div:nth-child(2)#meru-cm__cnt-inr > div:nth-child(2)#meru-cm__bns > button:nth-child(2)#c-rall-bn", + "body > div[id][name][role][aria-modal][aria-labelledby][tabindex][lang][dir][ng-non-bindable][style][data-template][class] > div > div:nth-child(4) > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(4)", + "body > div[class][style] > div > div:nth-child(3) > button:nth-child(2)", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(3):not([id])[data-testid=\"dl-cookieBanner\"] > div:not([id])[data-testid=\"cookie-banner-strict\"] > div:nth-child(3):not([id]) > button:nth-child(1)#cookie-banner-strict-accept-selected[data-testid=\"cookie-banner-strict-accept-selected\"]", + "body > div[class] > div > div:nth-child(3) > button:nth-child(2)", + "body:not([id]) > div#consentWidget > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#denyBtn", + "body > app-root:not([id]) > pages-page:nth-child(2):not([id]) > megacms-cookie-banner-component:nth-child(6):not([id]) > aside:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id]) > span:nth-child(2):not([id])", + "body > div[class] > form > div > div:nth-child(2) > button:nth-child(2)", + "body > div[id] > div:nth-child(2) > div:nth-child(4) > div > div:nth-child(2) > button:nth-child(2)", + "body > app-root[ng-version][_nghost-ng-c1385255947][aria-hidden] > app-cookie-consent:nth-child(1) > div > section:nth-child(2) > button:nth-child(1)", + "body:not([id]) > div#ppms_cm_consent_popup_e5f9b35a-6679-48b0-9aca-685630f5a919 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-b2431db8-970e-4204-a7f2-83be58cc11cc > div:nth-child(2)#ppms-617076d4-f7f5-41c1-9dce-3ed8c3be988f > button:nth-child(2)#ppms_cm_reject-all", + "body > div[id][data-nosnippet][data-cli-type][style] > span > a:nth-child(3)", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div#cookiebanner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > p:not([id]) > button:nth-child(2):not([id])", + "body > footer:not([id]) > div:nth-child(4)#cookiePopup > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div[id] > dialog:nth-child(2) > div:nth-child(2) > div:nth-child(2) > div:nth-child(2) > button:nth-child(2)", + "body > div#blocCookies > button:nth-child(3):not([id])", + "body > div[id][class] > div:nth-child(3) > button:nth-child(1)", + "body > div#cookie-notice > ul:nth-child(2):not([id]) > li:nth-child(1):not([id]) > button#accept-min-cookie-notice", + "body > div:not([id]) > div:not([id]) > a:nth-child(5):not([id])", + "body > div:not([id]) > main:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#analytics-consent-div > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#reject", + "body:not([id]) > div#__next > div:not([id]) > main:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(27):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn", + "body > div#__next > main#root > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div[id] > section:nth-child(1) > div:nth-child(2) > button:nth-child(2)", + "body > div[id] > div:nth-child(2) > button:nth-child(2)", + "body#index_landing > div#consent-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#cookiebanner > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > a:nth-child(2):not([id])", + "body > div[class] > div > div > div:nth-child(2) > div:nth-child(2) > button:nth-child(2)", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(3)#popin_tc_privacy_button_3", + "body:not([id]) > div#cookieBanner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div[id] > div > div:nth-child(4) > div:nth-child(2) > button:nth-child(2)", + "body > div[id][class] > div:nth-child(2) > button:nth-child(1)", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id]) > span:nth-child(1):not([id])", + "body > div[] > div > div:nth-child(3) > button:nth-child(2)", + "body > div[id] > div:nth-child(2) > div > div:nth-child(1) > div > div:nth-child(2) > div > button:nth-child(2)", + "body > div[id][data-nosnippet][style] > span > a:nth-child(2)", + "body > div[class] > div > div > ul:nth-child(3) > li:nth-child(2) > button", + "body > div[class][role][aria-labelledby][aria-live][lang] > div:nth-child(1) > div:nth-child(3) > div:nth-child(2)", + "body > div[id] > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(2)", + "body > div[class][id] > div > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > bellroy-cookie-dialog:not([id]) > dialog:nth-child(2)#cookie-dialog > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#consent-popup > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#decline-all", + "body > div[id][aria-hidden][style] > div > div > div > div:nth-child(2) > button:nth-child(2)", + "body > div[id][name][role][aria-modal][aria-labelledby][tabindex][lang][dir][ng-non-bindable][data-template][class][style] > div > div:nth-child(4) > div:nth-child(1) > div > div:nth-child(2) > button:nth-child(4)", + "body:not([id]) > bellroy-cookie-dialog:not([id]) > dialog:nth-child(2)#cookie-dialog > div:not([id]) > a:nth-child(2):not([id])", + "body#g6-index-page-7bede839ee > div:not([id]) > div:nth-child(92)#cookie-bar > div#cookie-bar-eu > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div[id][lang][dir][ng-non-bindable][name][class][style] > div:nth-child(2) > div:nth-child(1) > div:nth-child(2) > div:nth-child(2) > a:nth-child(2)", + "body > div[id] > div > div:nth-child(1) > div > div > div > div:nth-child(2) > button:nth-child(2)", + "body:not([id]) > header#header > div:nth-child(1)#CookiesConsent > div:not([id]) > div:nth-child(2):not([id]) > form:nth-child(2):not([id]) > div:nth-child(5):not([id]) > button:not([id])", + "body > div#c-container > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#tinyurl > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(1):not([id]) > span:not([id])", + "body > div#sliding-popup > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div#manage-cookies-modal > div:nth-child(3):not([id]) > div#popup-buttons > button:nth-child(2):not([id])", + "body > div[class][id][role][aria-modal][aria-labelledby][aria-describedby] > div > div:nth-child(3) > button:nth-child(2)", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div[aria-label][class][role][style] > div:nth-child(3) > button:nth-child(2)", + "body > div#cck_here > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#wrapper > div:nth-child(5)#main > div:nth-child(2)#cookie-banner > div:not([id]) > div#js-cookie-banner-content > div:nth-child(2):not([id]) > button:nth-child(2)#js-cookie-banner-close-disagree", + "body > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#cookie-banner-strict-accept-selected", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-cookie-banner", + "body:not([id]) > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body#oe-back-to-top > div#cck_here > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > aside:not([id]) > form:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#consent-manager > div:nth-child(1)#consent-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button#consent-banner-btn-close", + "body > div:not([id]) > div:nth-child(2)#cookie-consent-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > section#cookie-policy > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#termsfeed-pc1-notice-banner > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2)#termsfeed_privacy_consent_banner_button_reject_all", + "body > div#tf-modal-container > div#tf-modal-container__modal > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > div#cookieNotice > div#cookieNoticeInner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(4)#cookieNoticeDeclineCloser", + "body > div#SgCookieOptin > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div#wpca_banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(3)#gdpr_cookie_info_bar-wr > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie-consent-shadow-bg > div#cookie-consent-cookie-bar-center > div:nth-child(1)#cookie-consent-io-main > div:nth-child(5):not([id]) > button:nth-child(3)#CookieConsentIOReject", + "body > div#ppms_cm_consent_popup_258615d2-0186-42d9-80ea-1ed519aaa971 > div#ppms_cm_popup_overlay > div#ppms_cm_popup > div:nth-child(3)#ppms_cm_centered_buttons > button:nth-child(2)#ppms_cm_disagree", + "body:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2)#cookiebanner-decline-btn", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body:not([id]) > div#__next > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > stk-cookie-preferences:nth-child(10):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#__nuxt > div#__layout > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div:nth-child(2)#cookieModal__dialog > footer:nth-child(3)#cookieModal__dialog-footer > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#root > section:nth-child(7):not([id])[data-testid=\"gdpr-callout-notification-desktop\"] > div:nth-child(3):not([id]) > button:nth-child(1):not([id])[data-testid=\"necessary_only_cookies_cta\"]", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(4)#popin_tc_privacy_container_button > button:nth-child(3)#popin_tc_privacy_button_3", + "body:not([id]) > div#cookies-banner > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(1):not([id])", + "body:not([id]) > div#__next > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#cbgccp-cookies-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#cbg_ccp_cookie_refuse_optional_btn", + "body > div > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(1)#fd-unCheckAll", + "body:not([id]) > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > div:not([id]) > div#csm-wrapper > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie_container-id > div:nth-child(2):not([id]) > a:nth-child(1):not([id]) > span:not([id])", + "body > div:not([id]) > div:nth-child(26)#cookie-consent > div:not([id]) > div:nth-child(2):not([id]) > form:nth-child(2):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#seers-cmp-cookie-data-hol > div:nth-child(2)#SeersCMPBannerMainBar > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(3)#gdprCookie > div:nth-child(3):not([id]) > span:not([id]) > span:nth-child(2):not([id])", + "body > div#didomi-host > div:not([id]) > div#didomi-popup > div:nth-child(2):not([id]) > div:not([id])[data-testid=\"notice\"] > div:nth-child(2):not([id]) > div:nth-child(3)#buttons > button:nth-child(2)#didomi-notice-disagree-button", + "body > div#root > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#c-pop > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#ctl07_declinebtn", + "body > div#__next > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#entry > div:nth-child(2)#main > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div:not([id]) > div#cookie-settings > small:nth-child(1):not([id]) > form#manage-cookie-settings > div:nth-child(2):not([id]) > button:nth-child(1)#declinecookies", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > a:not([id])", + "body > div#cookieConsentWidgetDiv > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#banner-cookie-consent-reject-all", + "body:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div[class*=_shein_privacy]", + "body > div[class*=_shein_privacy] > div:nth-of-type(2) > div:nth-of-type(4) > div:nth-of-type(3)", + "body > div:not([id]) > div:nth-child(3)#cookie-consent-banner > button:nth-child(3)#cookie-decline-button", + "#on1-cookie-banner", + "#on1-cookie-banner a[onclick=\"declineCookieBanner();\"]", + "body > div:not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body > div#cookiebanner-wrapper > div#cookiebanner-container > div:nth-child(4):not([id]) > div:nth-child(3)#cookiebanner-button-accept-necessary > button:not([id])", + "body > aside#cookies-policy > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > form:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > div#cookie-banner > div:not([id]) > div#cookie-info > div:nth-child(2)#cookie-decline > a:not([id])", + "body > div#cb-cookie-warning > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cb-cookie-warning__button--decline", + "body > div#siteWrapper > div:nth-child(1):not([id]) > section:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > form:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > section:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#shop_table > div:nth-child(3)#cookiewarning > div:nth-child(3):not([id]) > button:nth-child(1)#decline_cookies", + "body > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > ul:not([id]) > li:nth-child(2):not([id]) > button:not([id]) > span:not([id])", + "body > header#header > div:nth-child(1)#InitModal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#DeclineCookies", + "body > div#mmenu > div:nth-child(1)#page-container > div#cookie-bar > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div#cms-container-1602 > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > p:nth-child(1):not([id]) > a:nth-child(3)#deny-all-2", + "body > div#mmenu > div:nth-child(1)#page-container > div#cookie-bar > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#deny-all", + "body > p:not([id]) > a:nth-child(4):not([id])", + "body > div#tygh_container > div:nth-child(5)#hw_cookie_law > a:nth-child(2):not([id])", + "body > div#wrapper > div:nth-child(25)#Cookie_content > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div#infocookie_modal > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-button2", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookies-banner > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(5)#cookies-eu-banner > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > nobr:not([id]) > button:nth-child(2)#cookies-eu-reject", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > footer:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2)#block-cookiesui > div:nth-child(1)#cookiesjsr > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > form:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(3):not([id]) > div:not([id]) > div:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > a:nth-child(1)#reject_marketing", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2)#gdpr-popup-v3-button-mandatory", + "body > div:not([id]) > dialog#whCookieManager > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > button:nth-child(1)#whcookiemanager_decline_all", + "body > div#bw-cookie-banner > div:not([id]) > div#bw-cookie-banner-container > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id])[data-testid=\"privacy-banner\"] > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#react-aria491930105-\\:r29\\:[data-testid=\"privacy-banner-decline-all-btn-desktop\"]", + "body > main#page > footer:nth-child(4)#footer > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4)#acb-banner > div:nth-child(2)#acb-action > button:nth-child(1)#acb-deny-all-button", + "body > div#gdrp-cookieoverlay > div:nth-child(3)#cs2gdpr-cookiebanner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#btn-accept-required-banner", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#gdrp-cookieoverlay > div:nth-child(4)#cs2gdpr-cookiebanner > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#btn-accept-required-banner", + "body > div:not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(5):not([id]) > a#CookieBoxSaveButton", + "body > div#tc-privacy-wrapper > div#footer_tc_privacy > div:not([id]) > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(2)#footer_tc_privacy_button_2", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieConsentBanner > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button#cookieConsentRefuseButton", + "body > div#tc-privacy-wrapper > div:nth-child(2)#footer_tc_privacy > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(3)#footer_tc_privacy_button_3", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#sell-root > div:nth-child(2)#appRoot > div:nth-child(7):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#root > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-btn", + "body > div#fancybox-1 > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div#bmg-gdpr-wrapper > div:nth-child(3):not([id]) > form:not([id]) > button:nth-child(5):not([id])", + "body > div:not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(6):not([id]) > a:not([id])", + "body > div#cookie > div:nth-child(1)#cookieBanner-noplugins > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#shop_table > div:nth-child(1)#cookiewarning > div:nth-child(3):not([id]) > button:nth-child(1)#decline_cookies", + "body > div:not([id]) > dialog:nth-child(2):not([id])[data-testid=\"modal-dialog\"] > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])[data-testid=\"uc-button-decline\"]", + "body > mk-root:not([id]) > mk-cookie-modal:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > mk-button:nth-child(1):not([id]) > button:not([id]) > span:not([id])", + "body > div:not([id]) > form:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button#cookie_consent_use_only_functional_cookies", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookieNoticePro > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookieReject", + "body > div#exponea-cookie-compliance > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > form:nth-child(2)#aspnetForm > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(5)#declineCookies", + "body > div#privacywire-wrapper > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#tracking-consent-dialog > div:not([id]) > button:nth-child(4)#tracking-consent-dialog-reject", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > p:nth-child(1):not([id]) > a:not([id])", + "body > div#didomi-host > div:not([id]) > div:not([id]) > div#didomi-notice[data-testid=\"notice\"] > div:not([id]) > div:nth-child(2)#buttons > button:nth-child(2)#didomi-notice-disagree-button", + "body > div#wrapper > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > span#\\33 ", + "body > div#mm-0 > div:nth-child(1)#tygh_container > div:nth-child(5)#hw_cookie_law > a:nth-child(2):not([id])", + "body > div#root > div:nth-child(2):not([id]) > div:not([id]) > div:not([id])[data-testid=\"cookie-consent-banner\"] > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(3)#gdpr_cookie_info_bar-wr > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > pi-cookie-policy-modal:not([id]) > pi-modal#manageCookieModal > modal-dialog:nth-child(2):not([id]) > modal-body:nth-child(2):not([id]) > div:not([id]) > pi-modal-cookie-intro:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#necessary-only-cookies-button", + "body > div#gdpr-consent-banner > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#denyAll", + "body > div#shop_table > div:nth-child(4)#cookiewarning > div:nth-child(3):not([id]) > button:nth-child(1)#decline_cookies", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > ul:not([id]) > li:nth-child(1):not([id]) > button#popin_tc_privacy_button", + "body > div#consentModal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div#cookie-banner > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#biskoui-mount > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > a:not([id])", + "body > header#pageHeader > div:nth-child(4)#cookieConsentHolder > div:not([id]) > div:nth-child(3):not([id]) > form#ccForm > button:nth-child(1)#cookiedeny", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > span:nth-child(1):not([id]) > a:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(5):not([id])", + "body > div:not([id]) > div#cookie-banner > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#p_p_id_com_liferay_cookies_banner_web_portlet_CookiesBannerPortlet_ > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button#_com_liferay_cookies_banner_web_portlet_CookiesBannerPortlet_declineAllButton", + "body > div#cookieNotice > div#cookieNoticeInner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(5)#cookieNoticeDeclineCloser", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#seeGdprCookieConsent > div:not([id]) > p:nth-child(2):not([id]) > a:nth-child(2)#seeGdprReject", + "body > div#site-wrapper > div:nth-child(1)#site-canvas > div#wrapper1 > main:nth-child(2)#mainSection1 > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#disclaimerCtn > div:nth-child(1):not([id]) > a:nth-child(4):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#mm-0 > div:nth-child(3):not([id]) > section#cookiesettings > div:not([id]) > form:not([id]) > div:nth-child(6):not([id]) > button:nth-child(1):not([id])", + "body > div#gdrp-cookieoverlay > div:nth-child(3)#cs2gdpr-cookiebanner > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(1)#btn-accept-required-banner", + "body > div#app > div:nth-child(3)#cookie-banner > div#cookie-banner-container > div#cookie-banner-inlay > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-0 > mat-dialog-container:nth-child(2)#mat-mdc-dialog-0 > div:not([id]) > div:not([id]) > ng-component:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#gdrp-cookieoverlay > div:nth-child(3)#cs2gdpr-cookiebanner > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#btn-accept-required-banner", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(7):not([id]) > div:nth-child(1):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#SgCookieOptin > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > dialog#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#fd-unCheckAll", + "body > div#lkrl-wrapper > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > span:not([id]) > button:not([id])", + "body > div#gdpr-cookie-message > p:nth-child(4):not([id]) > button:nth-child(2)#reject-all-cookie-btn", + "body > app-root:not([id]) > pages:nth-child(2):not([id]) > megacms-cookie-banner-component:nth-child(5):not([id]) > aside:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id]) > span:nth-child(2):not([id])", + "body > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieman-modal > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(6):not([id])", + "body > div#__next > div:not([id]) > footer:nth-child(7):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > ul:nth-child(1):not([id]) > li:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#c20343 > div:nth-child(1)#ikanos-privacy-cookielayer > div:nth-child(2):not([id]) > form:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div#__layout > div:not([id]) > main:nth-child(2):not([id]) > div:nth-child(1)#myPanel1 > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#gdrp-cookieoverlay > div:nth-child(3)#cs2gdpr-cookiebanner > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#btn-accept-required-banner", + "body > div#accn-cookie-consent-wrapper > div#accn-cookie-consent > div:nth-child(2)#accn-statement-scroller > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:not([id])", + "body > amp-consent#notification > div:nth-child(2)#notification-box > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1)#cookielaw-reject", + "body > div#consent-manager > div:nth-child(1)#consent-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#consent-banner-btn-close", + "body > div:not([id]) > button:nth-child(1):not([id])", + "body[data-testid=\"hydrated\"] > div#didomi-host > div:not([id]) > div#didomi-popup > div:nth-child(2):not([id]) > div:not([id])[data-testid=\"notice\"] > div:nth-child(2):not([id]) > span:nth-child(1):not([id])", + "body > dialog#cookieDialog > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#novosales-app > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > form#consent-cooookie-form > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#consent-manager-container > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#cookiemodal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#consent-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1)#mainView > form:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > a:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id])", + "body > div#privacypolicies-com---nb > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(5):not([id])[data-testid=\"modalBackground\"] > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])[data-testid=\"cmp-revoke-all\"]", + "body > div#app > div#app > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookies-essential", + "body > div#__next > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > a:not([id]) > button:not([id])", + "body > div#mm-2 > div:nth-child(2)#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_d7af8589-379d-45b3-bb93-30be5f8c4639 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-36d307ae-b162-42cb-8cc5-5b5147f204c4 > div:nth-child(2)#ppms-ce4df904-8654-41d2-a7a1-ca7ffa6ab749 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#tc-privacy-wrapper > div:nth-child(2)#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(2)#popin_tc_privacy_button_2", + "body > div#__next > div:nth-child(1):not([id]) > section:nth-child(3):not([id]) > div:not([id]) > div:not([id])[data-testid=\"mwp-cookie-landing-screen\"] > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_8cf81d25-2866-41cd-9aae-76c888e5bff7 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-a28c9881-6f32-4276-b820-273f7cfec5c6 > div:nth-child(2)#ppms-8171a867-495e-4d2f-9aec-1b92cbbfb895 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#cookieBackdrop > div#cookieNoticePro > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookieReject", + "body > div#application > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(5):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div#cookie-consent > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > a:nth-child(4):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:not([id])", + "eu_cookie={%22opted%22:true%2C%22nonessential%22:false}", + "body > div#__tealiumGDPRecModal > div:not([id]) > div:not([id]) > div:nth-child(2)#gdpr_btn_container > div:nth-child(2)#consent_prompt_reject", + "body > div#myMessageBox > div:nth-child(2)#message > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#SgCookieOptin > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#ws_eu-cookie-container > div:not([id]) > aside:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id])[data-testid=\"cookie_notice_reject_all_button\"]", + "body > dialog:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id])[data-testid=\"cookie-consent\"] > div:not([id]) > div:not([id]) > form:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"reject-button\"]", + "body > div:not([id]) > div#cookieman-modal > div:nth-child(6):not([id]) > button:nth-child(1)#cookieman-accept-mandatory", + "body > div#main > footer:nth-child(3)#footer > div:nth-child(2):not([id]) > div:nth-child(1)#footer-teasers > div:not([id]) > div:nth-child(7)#cookie-banner > button:nth-child(5):not([id])", + "body > div#bcConsentWrapper > div:nth-child(2)#bcConsentDialog > div:not([id]) > div:not([id]) > div:nth-child(4)#bcStickyFooter > div:nth-child(1)#bcFooterButtons > button:nth-child(1)#bcConsentAblehnen", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(2):not([id]) > button:not([id])", + "body > div#cookieConsentOverlay > div:nth-child(1)#cookieConsentDescription > div:nth-child(3):not([id]) > button:nth-child(1)#cookieConsentNecessaryOnlyButton", + "body > div:not([id]) > div#csm-wrapper > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-0 > mat-dialog-container:nth-child(2)#mat-mdc-dialog-0 > div:not([id]) > div:not([id]) > hra-consent-layer-ui:not([id]) > hra-cookie-buttons:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id]) > span:nth-child(2):not([id])", + "body > div#ip_page_wrapper > div#ip_content_wrapper > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(19):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > header:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div#privacymodal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > form:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button#approve_all_nothing", + "body > div#cookie-note-main > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-accept-required", + "body > div:not([id]) > div:nth-child(17):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > aside:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(3):not([id])", + "body > div#JOISH987_bar_holder > div:nth-child(2)#JOISH987_bar > div:nth-child(3)#JOISH987_bar__bottom__info > span#JOISH987_inlineRejectBar_btn", + "body > div#__nuxt > div:nth-child(4):not([id]) > aside:nth-child(9):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button#allow-necessary", + "body > div:not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > form:not([id]) > button:nth-child(1):not([id])", + "body > div#cc > div#cc_banner > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-banner > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body > div#vue-app > div:nth-child(7):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(4):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div#cookiebanner > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div#cookiebanner-body > div:nth-child(1)#cookiebanner > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > app-root:not([id]) > app-footer:nth-child(4):not([id]) > app-cookie:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookie_popup_reject", + "body > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > a:nth-child(3):not([id])", + "body > div#rootApp > div:nth-child(3):not([id])[data-testid=\"cookie-wall-modal\"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])[data-testid=\"cookie-wall-reject\"]", + "body > div#_psaihm_main_div > div:nth-child(5)#_psaihm_text_div > div:nth-child(3)#_psaihm_cta_container > a:nth-child(3)#_psaihm_refuse_all", + "body > div#__tealiumGDPRecModal > div#privacy_manager > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#decline_cookies", + "body > div#portal-footer > div:nth-child(3):not([id]) > div:nth-child(2)#footer-analytics > div#CookieConsent > div:not([id]) > p:nth-child(2):not([id]) > span:nth-child(3):not([id]) > button:not([id])", + "body > div#document > div:nth-child(1)#cookie-info > a:nth-child(4):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > section:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#container-ccb95b6c01 > div:nth-child(1):not([id]) > div#container-2f6c7973bc > div:not([id]) > div:not([id]) > section#cookie-modal-d381c70fca > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:not([id]) > span:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#eh-page > section:nth-child(2):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div:not([id]) > div#ibu-cookie-banner-ref > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#ibu-cookie-banner-btn-decline", + "body > div#__nuxt > div#__layout > div:not([id]) > section:not([id]) > div:nth-child(2):not([id]) > section:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div#chakra-modal-«r8» > div#chakra-modal--body-«r8» > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieman-modal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > form:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > span:nth-child(1):not([id]) > span:not([id]) > button:not([id])", + "body > div#__nuxt > div#app > aside:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > section#cookie-popup > div:not([id]) > div:not([id]) > div#cookieman-modal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(2):not([id])", + "body > div#matomo-popup > button:nth-child(8)#matomo-popup-btn-cancel", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#consent-manager > div:nth-child(1)#consent-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#consent-banner-btn-close", + "body > div#consent-modal > div#consent-modal-body > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#hofff-consent-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:not([id])[data-testid=\"cookiesOnlyRequiredButton\"]", + "body > div#cookieman-modal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-wall > div#cwi > div:nth-child(4)#cw-controls > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#cwc-reject[data-testid=\"cwc-reject\"] > span:not([id])", + "body > div#modal-wrap > section#modal-content > div:not([id]) > div:nth-child(2)#cookie-banner > div:not([id]) > div:nth-child(1)#s1 > p:nth-child(5):not([id]) > a:nth-child(4)#button_reject", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button#accept-essential-kekse", + "body > div#cc-dialog-container > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2)#cc-dialog > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id])", + "body > div#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-consent-banner > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#btn-reject-all", + "body > div:not([id]) > div#cookieConsentNotification > div:not([id]) > div:nth-child(4):not([id]) > span:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > aside:nth-child(2):not([id]) > div:nth-child(4):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body > div#dip-consent > div:nth-child(1)#dip-consent-container > div#dip-consent-summary > div:nth-child(5):not([id]) > button:nth-child(3)#dip-consent-summary-reject-all", + "body:nth-child(2).lia-user-status-anonymous.CommunityPage.lia-body > div:nth-child(20):not([id]).adsk-gdpr-footer-wrapper > div:nth-child(1):not([id]).adsk-gdpr-content > div:nth-child(2):not([id]).adsk-gdpr-confirm > button:nth-child(1)#adsk-eprivacy-privacy-decline-all-button[data-trigger-close=\"true\"][data-yesno=\"false\"][data-slim-trigger=\"true\"].adsk-eprivacy-no-to-all--trigger", + "body > div:not([id]) > div#cookieModal > button:nth-child(9)#btnCookiesAcceptMandatory", + "body > div#__nuxt > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > form#form1 > div:nth-child(3)#jive-cookie-overlay > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > a:nth-child(2):not([id])", + "body > div#et-consent-overlay > div:nth-child(5):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > base-popup#gpuAupTMRHO > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + ".overlay-cookies", + "body > div#pirvate_policy > div:not([id]) > div:not([id]) > p:not([id]) > span:nth-child(1):not([id]) > button:nth-child(2)#functional_cookies", + "body > div:not([id]) > div:nth-child(7)#consent > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#tc-privacy-wrapper > div:nth-child(2)#footer_tc_privacy > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(2)#footer_tc_privacy_button_2", + "body > div:not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(6):not([id]) > a:not([id])", + "body > div#__nuxt > div:nth-child(8)#cookie-banner > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#consentBanner > div:not([id]) > div#gdpr-banner-container[data-testid=\"gdpr-banner-container\"] > dialog#gdpr-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#gdpr-banner-cmp-button[data-testid=\"gdpr-banner-decline-button\"]", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(1):not([id])", + "body > div#consentWidget > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#denyBtn", + "body > div#cookies > div:not([id]) > button:nth-child(4)#consent-no", + "body > div:not([id]) > div:nth-child(16)#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > main:not([id]) > section:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > smc-consent-banner:not([id]) > s-dialog:not([id]) > dialog:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > s-button:not([id])[data-testid=\"button--einstellungen-speichern\"] > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > form:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + ".overlay-cookies,#cookieBar-button", + "body > div#app > div:nth-child(13)#cookieOptinBar > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div#orejime > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(3):not([id]) > button:not([id])", + "body > div#ppms_cm_consent_popup_49328673-4289-4f6c-80e3-772ed82aa514 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-41de98ff-8337-40a7-a0ae-dcb0d5eeb442 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#ww_bzga_matomo_cookiebanner > div:not([id]) > p:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#modal-cookie-slim > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > a:not([id])", + "body:nth-child(2) > div:nth-child(12):not([id]).adsk-gdpr-footer-wrapper > div:nth-child(1):not([id]).adsk-gdpr-content > div:nth-child(2):not([id]).adsk-gdpr-confirm > button:nth-child(1)#adsk-eprivacy-privacy-decline-all-button[data-trigger-close=\"true\"][data-yesno=\"false\"][data-slim-trigger=\"true\"].adsk-eprivacy-no-to-all--trigger", + "body > div#__next > div:nth-child(2):not([id]) > article:nth-child(2)#modal-content-id > div:nth-child(3):not([id]) > button:nth-child(2)#cm-btnRejectAll", + "body > div:not([id]) > div#PrivacyCategoryAlert > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#DenyAll", + "body > div#ddt-M1 > div:not([id]) > div:nth-child(1)#ddt-Seite1 > div:nth-child(2)#ddt-sectionFirst > p:nth-child(4):not([id]) > a:nth-child(2):not([id])", + "body > div#SP-Top > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div#cookies-bar > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(7):not([id]) > button:nth-child(2):not([id])", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > privacy-settings-form:nth-child(2):not([id]) > div:not([id]) > fieldset:nth-child(2):not([id]) > div:nth-child(4):not([id]) > button:nth-child(4):not([id])", + "body > div:not([id]) > section:nth-child(7):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(18):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#mm-0 > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(5):not([id]) > a:nth-child(3):not([id])", + "body > div#ucl-privacy-banner > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > section:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > section#wrap > section:nth-child(5):not([id]) > div:nth-child(1)#mms-cookie-layer > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(1)#reject-all-cookies", + "body > div#__next > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#mm-0 > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#_evidon-barrier-wrapper > div:nth-child(2)#_evidon-banner > div:nth-child(1)#_evidon-banner-content > div:nth-child(5):not([id]) > button:nth-child(2)#_evidon-barrier-declinebutton", + "body > div#cookie_banner_container > div:not([id]) > div:not([id]) > div:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > a:not([id])", + "body > div#cookieconsent\\:window > div#cookieconsent\\:body > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id])[data-testid=\"modalBackground\"] > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])[data-testid=\"cmp-revoke-all\"]", + "body > div#ppms_cm_consent_popup_441c7312-6ae9-4bf3-b0c4-744c7b47c147 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-9e6c3a8f-209e-4713-ac3e-9cef19ae483e > button:nth-child(2)#ppms_cm_reject-all", + "body > app-shell:not([id]) > website-popup-feature-popup-stack:nth-child(10):not([id]) > website-popup-feature-popup:nth-child(2):not([id]) > website-popup-feature-sheet-and-overlay-wrapper:not([id]) > ca-overlay:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > ca-generic-button:nth-child(2):not([id]) > button:not([id]) > ca-ripple-effect:not([id]) > div:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id]) > button:not([id])", + "body > div#cookieman-modal > dialog:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(1)#ccm-widget > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > aside#CookielawBanner > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(16):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#__nuxt > section:nth-child(19):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-note > div:nth-child(2):not([id]) > button:nth-child(1)#cookie-note-hide", + "body > div#modal-ck > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body.scroll-smooth.bg-light.antialiased.transition-colors.dark\\:bg-dark > div:not([id]).fixed.bottom-0.left-0.right-0.z-\\[300\\].transition-all.duration-500.ease-out.translate-y-0.opacity-100 > div:not([id]).mx-auto.max-w-7xl.px-4.pb-4.sm\\:px-6.lg\\:px-8 > div:not([id]).overflow-hidden.rounded-xl.border.border-gray-200.bg-white.shadow-xl.dark\\:border-zinc-700.dark\\:bg-\\[rgb\\(0\\,11\\,37\\)\\] > div:not([id]).p-5.sm\\:p-6 > div:not([id]).flex.flex-col.gap-4.sm\\:flex-row.sm\\:items-center.sm\\:justify-between.sm\\:gap-6 > div:nth-child(2):not([id]).flex.flex-col.gap-2.sm\\:flex-row.sm\\:flex-shrink-0.sm\\:gap-2\\.5 > button:nth-child(2):not([id]).order-2.rounded-lg.border.border-gray-300.bg-white.px-5.py-3.text-sm.font-semibold.text-gray-700.shadow-sm.transition-colors.hover\\:bg-gray-50.dark\\:border-zinc-600.dark\\:bg-zinc-800.dark\\:text-zinc-300.dark\\:hover\\:bg-zinc-700.sm\\:py-2\\.5", + "body > div#page > div:nth-child(9)#privacy-alert > div#privacy-message > div:nth-child(3)#privacy-buttons > div:not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#privacy-container > div:nth-child(4)#privacy-buttons > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(9)#alert-cookie > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#wrapper > footer:nth-child(3):not([id]) > div#footer > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#acris--page-wrap--cookie-permission > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-permission--accept-only-functional-button", + "body > div#cookieModalOverlay > div#cookieModalContent > div:nth-child(6):not([id]) > a:nth-child(2)#justneededcookie", + "body > div:not([id]) > div:nth-child(1)#matomoCookieNotification > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#disallowMatomoCookieNotification", + "#cookieBar-button", + "body > div#cconsent-bar > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#app > form:nth-child(5)#cookie-settings-form > div#cookie-settings-content > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline", + "body > div#mbmcookie > a:nth-child(2):not([id])", + "body > cookie-consent-dialog#cookie-consent-dialog > dialog:not([id]) > footer:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > article:not([id]) > form:not([id]) > div:nth-child(7):not([id]) > ul:not([id]) > li:nth-child(3):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(5)#netl-gdpr-decline", + "body > div#page > div:nth-child(8):not([id]) > div:nth-child(2):not([id]) > form:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(5):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#app > div:nth-child(1):not([id]) > main:nth-child(4):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-notice > p:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > div#pascoeconsentmanager-container > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > a:not([id])", + "body > div#wrapper > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > span:nth-child(1)#\\33 ", + "body > div#BootstrapVueNext__ID__v-0__modal___ > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(19):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(18)#cookiebarNew > div:not([id]) > div:not([id]) > div:not([id]) > div#cookie-container > div#cookie-id > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(2)#rejectAll", + "body > div:not([id]) > div#qPrivacyBanner > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookieNotice > div:not([id]) > div:not([id]) > p:nth-child(3):not([id]) > a:nth-child(3):not([id])", + "body > div#dialog1 > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > p:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > ul:not([id]) > li:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div#wrapper > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#mmenu-wrap-target > div:nth-child(18)#gdprCookieConsentManagedSummary > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(3)#declineAllConsentSummary", + "body > div#__nuxt > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#optInId > div:nth-child(4):not([id]) > button:nth-child(2)#Ablehnen", + "body > div#vue-app > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#drdsgvo_div > div#drdsgvo_popup > div:not([id]) > div:nth-child(1):not([id]) > div#drdsgvo_show1 > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#cpnb > div#w357_cpnb_outer > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(2)#cpnb-decline-btn", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#a-page > div:nth-child(5)#sc-content-container > div:nth-child(1):not([id]) > div:nth-child(12):not([id]) > div:nth-child(1) > div:nth-child(2)#cookie-consent-window > div:not([id]) > div:nth-child(2) > div:nth-child(1)#cookie-consent-continue > div:not([id]) > a:not([id])", + "body > div#app > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#page > div:nth-child(2):not([id]) > div:nth-child(8)#layer_cookie > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > a:nth-child(1)#btn_cookie_decline", + "body > div#gcms_cookie_manager > div#gcms_cookie_main > div:nth-child(1):not([id]) > div#gcms_cookie_tblock > div:nth-child(2)#gcms_cookie_tblock2 > div:not([id]) > div:not([id]) > a:nth-child(3)#gcms_cookie_deny", + "body > dialog#MasterPageDialogsPartialViewModel_CookieDialogPartialViewModel_cookieModal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_4cd48388-34db-43b6-b9fa-585f915a2ed6 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-b44413cd-63c1-40e3-8034-a9a44ec12300 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#__next > div:nth-child(4):not([id]) > div:not([id]) > footer:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"decline-cookie-button\"]", + "body > div#__nuxt > div#__layout > div:not([id]) > section:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#page > div:nth-child(1)#cookie-law > div#cookie-banner > div:nth-child(2)#cookie-buttons > span:nth-child(2):not([id]) > a:not([id])", + "body > div#vue-app > footer:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section#hofff-consent-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieLayer > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > a#tmart-cookie-layer-only-necessary", + "body > div#lightboximgct > div:nth-child(2):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(20):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#consentContainer > div:nth-child(3)#consentButtons > button:nth-child(3):not([id])", + "body > div#vue-app > div:nth-child(5):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(3):not([id])", + "body > div#ppms_cm_consent_popup_3e1a4c83-32a1-4406-b526-47a5e1bfb5b4 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-36d307ae-b162-42cb-8cc5-5b5147f204c4 > div:nth-child(2)#ppms-ce4df904-8654-41d2-a7a1-ca7ffa6ab749 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#__nuxt > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > aside:not([id]) > div:nth-child(1):not([id]) > form#amgdprcookie-form > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-essentials", + "body > div#wrapper > main:nth-child(2)#swdd-mainbody > div:nth-child(7)#cookieconsent > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#cookieconsent_essentiell", + "body > header:not([id]) > div:nth-child(2)#cookie-hint-display > div:not([id]) > button:nth-child(3)#cookie-hint-decline-button", + "body > div#cookie-consent > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(3):not([id])", + "body > div#__next > div:nth-child(2):not([id]) > main#app-root > div:nth-child(7):not([id]) > div:not([id]) > div:not([id]) > aside:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body > div#cookies-eu-wrapper > div#cookies-eu-banner > div:nth-child(2)#cookies-eu-buttons > button:nth-child(1)#cookies-eu-reject", + "body > div:not([id]) > div#CookieBox > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(6):not([id]) > a#data-cookie-refuse", + "body > section:not([id])[data-testid=\"cookiePopup\"] > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a#trox_consent_manager_select_functional", + "body > div#cookieConsent > button:nth-child(5):not([id])", + "body > div#cookie-banner > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#ccbox > div#ccbox-inner > div:nth-child(2):not([id]) > a:nth-child(6)#ccbox-deny", + "body > div#privacywire-wrapper > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(11):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#cookieBanner > div#ubfBanner > div#bannerContent > button:nth-child(4)#cookieModalBanner__deny", + "body > section#page > div#scrollable-area > footer:nth-child(10):not([id]) > div:nth-child(2)#cookie_banner_footer > button:nth-child(6)#btnCookieFunctions", + "body > div#mm-0 > div:nth-child(2)#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-notice > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookie-notice-reject", + "body > div#matomo-cookie-consent > p:nth-child(3):not([id]) > button:nth-child(1)#mcc-deny", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(5):not([id])", + "body > div#cookieman-modal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(1):not([id])", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > form:not([id]) > p:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie_consent_container > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(2):not([id]) > span:not([id]) > a:not([id])", + "body > div#popup-root > div:not([id])[data-testid=\"overlay\"] > div#popup-1 > section:not([id]) > header:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:not([id]) > a:nth-child(3):not([id])", + "body > up-modal:not([id]) > up-modal-viewport:nth-child(2):not([id]) > up-modal-box:nth-child(2):not([id]) > up-modal-content:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#vrn-cookie > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#cookie-disclaimer-wrap-sticky-wrapper > div#cookie-disclaimer-wrap > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#consent_manager-background > div:nth-child(1)#consent_manager-wrapper > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1)#consent_manager-accept-none", + "body > div:not([id]) > section:nth-child(7):not([id])[data-testid=\"cookieBar\"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])[data-testid=\"cookieBarRejectButton\"]", + "body > div#root > div:not([id]) > div:nth-child(3):not([id]) > div > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#OVERLAY-REJECT", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > form:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id]) > span:not([id]) > button:not([id])", + "body > div:not([id]) > div#cookiebanner > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#mco-consent > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > span:not([id]) > div#plugin-consent > section:nth-child(1):not([id]) > div:nth-child(5):not([id])", + "body > div#cookieman-modal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > main:nth-child(2)#main-content > div:nth-child(2)#block-cookies > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > button:nth-child(6):not([id])", + "body > div#cookie-box > div:not([id]) > div:not([id]) > div:nth-child(6)#buttonDefaultSelection > button:nth-child(1)#cookiesDisabled", + "body > div#modalTpl > div:not([id]) > div:not([id]) > main#modalTpl-content-container > div:nth-child(2)#modalTpl-content > div#template-rgpd-index > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(1)#rgpd-btn-index-continue", + "body > div:not([id]) > div:nth-child(1)#account-identifier-root > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > section:nth-child(3):not([id]) > div:not([id]) > div:not([id])[data-testid=\"mwp-cookie-landing-screen\"] > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#CkC > div:not([id]) > a:nth-child(3):not([id])", + "body > div#banner-wrap > div#cookie-banner > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#refuse-consent", + "body > div#orejime > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div#ppms_cm_consent_popup_aef5e651-55b8-4a48-9201-158cb3fd96e7 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-a0ef14ad-388f-411b-b3ff-bd67525ec4df > div:nth-child(2)#ppms-7946a939-f53a-44d2-932e-6a74f54e9780 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#tc-privacy-wrapper > div#footer_tc_privacy > button:nth-child(1)#footer_tc_privacy_button_3", + "body > div:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > amundi-consent-disclaimer:not([id]) > amundi-minimized-disclaimer:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button#CookiesDisclaimerRibbonV1-AllOff", + "body > div#fr-gdpr-cookie-consent-banner > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button#gdpr-cookie-consent-declineall", + "body > div#root > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > section:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_0a9c67dc-c346-412b-9156-234d036e1851 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-9e6c3a8f-209e-4713-ac3e-9cef19ae483e > button:nth-child(2)#ppms_cm_reject-all > span:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > aside:nth-child(4):not([id]) > div:not([id]) > div#block-eclydre-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#analytics-container > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cconsent-bar > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div#cookie-info > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(3)#popin_tc_privacy_container_button > button:nth-child(3)#popin_tc_privacy_button_3", + "body > div#globalHeaderWrapper > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6)#widgets-placeholder > div:nth-child(1):not([id]) > section:nth-child(2)#gdpr-banner > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#gdpr-banner-decline", + "body > div#cookie-consent-background > div#cookie-consent-window > div:nth-child(4)#cookie-consent-button-container > button:nth-child(2)#cookie-consent-button-refuse", + "body > div#tc-privacy-wrapper > div#footer_tc_privacy > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(3)#footer_tc_privacy_button", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > footer:not([id]) > div:nth-child(5)#bloc-bm-cookies-consent > div:nth-child(1)#modal-bm-cookies-consent > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div#modal-bm-cookies-consent-content > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div#orejime > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#cookies-popup > div:not([id]) > form:nth-child(2)#form-accept-cookies > button:nth-child(5):not([id])", + "body > aside#js-gateaux-secs > div:not([id]) > div:nth-child(1)#gateaux-secs-landing > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1)#js-gateaux-secs-deny", + "div:has(> button#cookieBar-button)", + "body > div#maincontainer > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > main:nth-child(2):not([id]) > div:nth-child(6):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > aside:not([id]) > div:nth-child(2):not([id]) > header:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(9):not([id]) > article:not([id]) > div:nth-child(2):not([id]) > button:nth-child(5):not([id])", + "body > div#ModalCookiePrivacyHome > div:nth-child(3)#ModalCookiePrivacy > div:not([id]) > div:not([id]) > div:nth-child(1) > div:nth-child(1)#BlockInfoCookie > div:nth-child(3):not([id]) > div:nth-child(4):not([id]) > a#BtnApplyRefused", + "body > div#cookieWidget > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#__nuxt > div#__layout > div#main-body-container > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(1)#refuseCookie", + "body > div#id_cookie-alert > button:nth-child(6):not([id])", + "body > div#app > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookies > div:nth-child(1):not([id]) > button:nth-child(3)#cookieRefuse", + "body > div#cookie-banner > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#reject-cookies", + "body > div#PopupCookieContent > div#cookieAdvice > div:not([id]) > div:not([id]) > div:nth-child(1)#cookie-advice-general > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#btn-popupCookies-refuse", + "body > div#cookieLB > div:nth-child(2)#cookieModal > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1)#cookieLBmainbuttons > span:nth-child(1):not([id]) > span:nth-child(2):not([id]) > a:not([id])", + "body > div#cookieLB > div:nth-child(2)#cookieModal > div:nth-child(1):not([id]) > p:nth-child(1):not([id]) > a:not([id])", + "body > div#orejime-csi > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(1):not([id]) > a:nth-child(3):not([id])", + "body > div#ppms_cm_consent_popup_7a8e4f13-52de-496c-9239-96129f02cf08 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-124c44a9-52c6-4136-9964-9a6be955271a > button:nth-child(2)#ppms_cm_disagree", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#ckieBnr_wall > div#ckieBnr_footer > div:nth-child(2)#ckieBnr_footer_button_container > button:nth-child(1)#ckieBnr_footer_button_deny", + "body > div#cookie > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id]) > span:not([id]) > span:not([id])", + "body > div#modal-bg > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookies-banner > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#cookie-banner-decline", + "body > div#gdpr-cookie-message > button:nth-child(1)#gdpr-skip-cookies", + "body > div:not([id]) > div#container-ccb95b6c01 > div:nth-child(1):not([id]) > div#container-5410e67f0b > div:not([id]) > div:not([id]) > section#cookie-modal-257be74257 > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:not([id]) > span:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#gdpr-reject", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#hw-cc-notice-continue-without-accepting-btn", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#tc-privacy-wrapper > div#footer_tc_privacy > div:nth-child(2)#footer_tc_privacy_container_button > button:nth-child(2)#footer_tc_privacy_button_2", + "body > div#app > div:nth-child(2):not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-0 > mat-dialog-container:nth-child(2)#mat-dialog-0 > app-cookies-dialog:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id]) > span:nth-child(1):not([id])", + "body > div#cookie-message > a:nth-child(2):not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(1)#popin_tc_privacy_container_text > div#popin_tc_privacy_text > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#refuse_all", + "body > div#tc-privacy-wrapper > div:nth-child(2)#footer_tc_privacy > div:nth-child(1)#footer_tc_privacy_container_text > div:nth-child(1):not([id]) > button#footer_tc_privacy_button", + "body > div:not([id]) > div:nth-child(2):not([id]) > main:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#block-es-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#new-consent-container > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#new-consent-refuse-all", + "body > div#body > div:nth-child(8)#widget-cookies > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookieBanner > a:nth-child(4):not([id])", + "body > section:not([id]) > article:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + ".overlay-cookies .ark-button--tertiary-neutral", + "body > div#cookies-banner > button:nth-child(2):not([id])", + "body:nth-child(2).lia-user-status-anonymous.CommunityPage.lia-body > div:nth-child(21):not([id]).adsk-gdpr-footer-wrapper > div:nth-child(1):not([id]).adsk-gdpr-content > div:nth-child(2):not([id]).adsk-gdpr-confirm > button:nth-child(1)#adsk-eprivacy-privacy-decline-all-button[data-trigger-close=\"true\"][data-yesno=\"false\"][data-slim-trigger=\"true\"].adsk-eprivacy-no-to-all--trigger", + "body > div#__next > div:nth-child(8):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(9):not([id]) > div:nth-child(1):not([id]) > span:not([id]) > button:not([id])", + "body > form#form > div:nth-child(9)#react_956F165BF7ED8A277F34A314FF9F1276 > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookie-onetrust-only-necessary", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#cf_cookiesconsent > div#bandeau_cookies > div#bandeau_cookies_conteneur > a:nth-child(5)#lienrefusecookie", + "body > div#rgpd-popup > div:nth-child(3):not([id]) > span:nth-child(1):not([id]) > button:nth-child(3):not([id])", + "body > div#ppms_cm_consent_popup_a08bcce4-5c93-4e4d-897f-ca885cfe9e53 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div#main > div:nth-child(11)#cookbar_overlay > div#cookbar > span:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > form:nth-child(3):not([id]) > button:nth-child(4)#cookie_consent_use_only_functional_cookies", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#consent-manager > div:nth-child(1)#consent-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button#consent-banner-btn-close", + "body > aside#discreto > div:nth-child(2):not([id]) > form:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_4abe60ee-b684-4dd1-bd31-4cd3e6ae1709 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-afca48e8-c3ca-4e2c-9d08-149f9e8339fe > button:nth-child(2)#ppms_cm_reject-all", + "body > div#tna-cookie-prompt-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-cookie", + "body > div#PrivacyBox > button:nth-child(3)#No", + "body > app-root:not([id]) > app-cookies:nth-child(6):not([id]) > div#cookie-consent-banner > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:nth-child(6)#kiecoosentconroot > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-modal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#cookie-refuse-all", + "body > form#form1 > div:nth-child(4)#Panel_Cookies > div:not([id]) > div:not([id]) > a:nth-child(4)#aAgreeCookieFunctionality", + "body > div:not([id]) > div:nth-child(1):not([id])[data-testid=\"privacy-banner\"] > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#react-aria526766221-\\:r0\\:[data-testid=\"privacy-banner-decline-all-btn-desktop\"]", + "body > div:not([id]) > div#trackers-ask-consent-gdpr > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookieRefuse", + "body > div#page > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(9)#acb-banner > div:nth-child(2)#acb-action > button:nth-child(1)#acb-deny-all-button", + "body > div#modalCookieConsent > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > form:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button#cookie_consent_use_only_functional_cookies", + "body > div#container > div:nth-child(2)#pinned-bottom > div#cookies > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookies-no", + "body > div:not([id]) > div:nth-child(2):not([id]) > footer:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1)#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__cc-lexbase > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#__button-accept-min-cookies", + "body > div#conteneur-simple > div:nth-child(6)#band-cookies > form:nth-child(6):not([id]) > right:nth-child(1):not([id]) > a:not([id])", + "body > div#mm-0 > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#cnil_banner_consent > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#cookiesplus-modal-container > div:not([id]) > div:nth-child(1)#cookiesplus-modal > div:nth-child(3)#cookiesplus-content > div:not([id]) > form#cookiesplus-form > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#grpd-consent > div:nth-child(2):not([id]) > footer:nth-child(3):not([id]) > button:nth-child(2)#set-all-no-cookie", + "body > main:not([id]) > footer:nth-child(4)#footer > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3)#acb-banner > div:nth-child(2)#acb-action > button:nth-child(1)#acb-deny-all-button", + "body > div#tc-privacy-wrapper > div#header_tc_privacy > div:nth-child(2)#header_tc_privacy_container_button > button:nth-child(3)#header_tc_privacy_button", + "body > div#st-cmp-v2 > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > span:not([id]) > div:not([id])", + "body > div#ppms_cm_consent_popup_1ea6e12f-4d22-4da5-a3c9-4f4177a1d3c8 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div#cookieConsentBanner > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > button#cookieConsentRefuseButton", + "body > div#cookie-consent > div:nth-child(1):not([id]) > button:nth-child(1)#cookie-deny-button", + "body > div:not([id]) > div:not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body > dialog:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookies-consent > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(1)#popin_tc_privacy_container_text > div#popin_tc_privacy_text > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#rgpd > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#wrapper > footer:nth-child(3):not([id]) > div#footer > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#cc-interstitial-panel > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#ember3 > div:nth-child(1):not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > aside:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#close-modal", + "body > div:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div#__nuxt > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#wrapper > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > span:nth-child(1)#\\33 ", + "body > div:not([id]) > div#freeprivacypolicy-com---nb > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-consent > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#js-cookie-policy-popup > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#consent > user-consent:nth-child(1):not([id]) > consent-dialog:not([id]) > consent-content:not([id]) > consent-message:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#cookies-banner > div:not([id]) > div:nth-child(4):not([id]) > a:nth-child(2)#pi_tracking_opt_in_no", + "body > main#main-page-content > footer:nth-child(3)#footer > div:nth-child(2)#footer-container-main > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(6):not([id]) > div:nth-child(1):not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-0 > mat-bottom-sheet-container:nth-child(2)#cdk-dialog-0 > mcf-cm-banner:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > ul:not([id]) > li:nth-child(2):not([id]) > button:not([id]) > span:nth-child(3):not([id])", + "body > div#__nuxt > div#__layout > div:not([id]) > section:nth-child(2)#app > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(1):not([id]) > button:not([id])", + "body > div#st-container > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1)#body_wrapper > footer:nth-child(3)#footer > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > section#footer-primary > div:nth-child(6)#acb-banner > div:nth-child(2)#acb-action > button:nth-child(1)#acb-deny-all-button", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div#CMP_PV > div:nth-child(1)#step1 > div:nth-child(2):not([id]) > p:nth-child(6):not([id]) > a:not([id])", + "body > div#root > div:nth-child(12):not([id]) > div:not([id])[data-testid=\"modal\"] > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookiesrejectAll > div:not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > span:nth-child(3):not([id])", + "body > div#bandeau-gestion_des_cookies > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button#bouton-tout_refuser-bandeau-gestion_des_cookies", + "body > div#cookiesInfo > a:nth-child(5):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#bottom-banner > div:nth-child(3):not([id]) > div:nth-child(1)#cookies-win > button:nth-child(2):not([id])", + "body > div#wrapper > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > span#\\33 ", + "body > div#consent > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > span:nth-child(1):not([id]) > button:nth-child(1)#not_accept_button", + "body > div:not([id]) > div:nth-child(2)#BorlabsCookieBox > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(8):not([id]) > a:not([id])", + "body > div#page > div:nth-child(6)#rgpd > div:not([id]) > div#cookies > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > a:not([id])", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > section:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie > div:not([id]) > div:nth-child(2)#Buttondivanalytic > button:nth-child(2):not([id])", + "body > footer#footer > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2)#cookie-show-div > div:nth-child(1):not([id]) > div:not([id]) > button#cookie-deny", + "body > div#cc-card > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2)#cc-dismiss-btn", + "body > div#cconsent-bar > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > app-root:not([id]) > app-hybris-container:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(17)#mmenu-wrap-target > div:nth-child(12)#gdprCookieConsentManagedSummary > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(3)#declineAllConsentSummary", + "body > div#cookieConsentBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookieConsentRefuseButton", + "body > div#page > div:nth-child(10)#cookies > div:nth-child(2):not([id]) > p:not([id]) > button:nth-child(8)#refuser", + "div#cookie-banner > div#content > div:nth-child(2)#options > button:nth-child(2)#ga-cancel-button", + "body > div:not([id]) > div#cookieDisclaimerPopup > div:nth-child(2):not([id]) > div:nth-child(2)#wookiesDisclaimer > div:nth-child(1)#divCookiesGeneral > div:nth-child(1):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(5):not([id]) > div#m-cookienotice > div:nth-child(3)#action-custom-css > a:nth-child(2)#decline-cookies", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > section:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > main:not([id]) > div:nth-child(12)#acb-banner > div:not([id]) > div:nth-child(2)#acb-action > button:nth-child(1)#acb-deny-all-button", + "body > div:not([id]) > div:not([id]) > p:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1)#popin-cookies-banner > div:not([id]) > div:not([id]) > div#popin-cookies__modal > div:not([id]) > div:not([id]) > button:nth-child(1)#popin-cookies-btn-refuse", + "body > div#trackers-ask-consent-gdpr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > aside:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#cb-frame > div:not([id]) > div:nth-child(1):not([id]) > a#cookie-decline", + "body > div#hagreed > div:not([id]) > button:nth-child(1):not([id])", + "body > div#sliding-popup > div:not([id]) > div:not([id]) > div:nth-child(2)#popup-buttons > button:nth-child(2):not([id])", + "body > div#moodal-consent > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#myModalCookieConsent > div:not([id]) > div:nth-child(1)#myModalCookieConsentPart1 > div:nth-child(1):not([id]) > button:nth-child(1)#myModalCookieConsentBtnContinueWithoutAccepting", + "body > div#cookie-banner > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > div#consent-manager-container > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:not([id])", + "body > div#cookieBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id])", + "body:nth-child(2).home.wp-singular.page-template.page-template-page_full-width-nosidebar-notitle.page-template-page_full-width-nosidebar-notitle-php.page.page-id-349710.wp-embed-responsive.wp-theme-velocity > div:nth-child(28)#mayo-privacy-consent-banner[data-nosnippet=\"true\"].mayo-privacy-popup > div:nth-child(3)#privacy-popup-controls-div > div:nth-child(1):not([id]).mayo-button-container > button:nth-child(2)#mayo-privacy-opt-out.mayo-primary-button", + "body > div#cookieConsentModal > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#__nuxt > div#__layout > div#default > div:nth-child(5)#cookie-consent-app > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#mm-16 > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#aa-cookie > div#cookieBannerBox > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > button:nth-child(2)#aa-cookie-reject-btn", + "body > aside:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > sf-root:not([id]) > kb-cookie-consent:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-notice-container > div:nth-child(1)#cookie-notice > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookies-reject-all", + "body > astro-island:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#accept-necessary-cookies", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#shopui-cookie-popup-container > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#root > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > header#header-content[data-testid=\"header-content\"] > section:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"reject-button\"]", + "body > div#app > div#framework7-root > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3)#yc-card-component\\:7ef3a3b5-d042-4a69-99fe-48cfbee28f3a > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div#eeb08196-e58b-426f-a69e-105a887fa45a > div:not([id]) > div#yc-card-component\\:eeb08196-e58b-426f-a69e-105a887fa45a > div:nth-child(2):not([id]) > div:nth-child(9)#yc-card-component\\:b8abb9b0-75bc-4aba-b46a-62d6f97c2ded > div:not([id]) > div#yc-card-component\\:c99f6c1f-84f5-4fed-a84c-4f239af3c6f0 > div:not([id]) > div:not([id]) > div#yc-card-component\\:aa3f7adc-0a16-49a8-9b52-bf7d70a7c191 > div:not([id]) > div#yc-card-component\\:54240ef0-efa8-483d-9b05-f2e3cfb7812c > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#app > div#framework7-root > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3)#yc-card-component\\:7ef3a3b5-d042-4a69-99fe-48cfbee28f3a > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div#eeb08196-e58b-426f-a69e-105a887fa45a > div:not([id]) > div#yc-card-component\\:eeb08196-e58b-426f-a69e-105a887fa45a > div:nth-child(2):not([id]) > div:nth-child(9)#yc-card-component\\:b8abb9b0-75bc-4aba-b46a-62d6f97c2ded > div:not([id]) > div#yc-card-component\\:c99f6c1f-84f5-4fed-a84c-4f239af3c6f0 > div:not([id]) > div:not([id]) > div#yc-card-component\\:aa3f7adc-0a16-49a8-9b52-bf7d70a7c191 > div:not([id]) > div#yc-card-component\\:54240ef0-efa8-483d-9b05-f2e3cfb7812c > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#silktide-wrapper > div:nth-child(4)#silktide-banner > div:not([id]) > button:nth-child(2):not([id])", + "body > div#body-container > div:nth-child(41)#cookie-settings-modal-container > div#modal-cookie-settings[data-testid=\"dialog-container-cookie-settings-modal\"] > div:not([id]) > div:not([id])[data-testid=\"modal-content\"] > div:nth-child(2):not([id])[data-testid=\"modal-body\"] > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])[data-testid=\"cookie-reject-all\"]", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#CookieReportsPanel > div:nth-child(2)#CookieReportsBanner > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > div#consensemsg > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > a#denyall > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#cookie-form > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(5)#btn-necessary-cookie", + "body > div#CookieMessage > div#CookieBox > div:nth-child(4):not([id]) > button:nth-child(2)#DenyButton", + "body > div#cookies-eu-banner > button:nth-child(2)#cookies-eu-reject", + "body > div#lbganalyticsCookies > footer:nth-child(8):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(12):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > aside:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#modal-content-14 > div#pr-cookie-notice > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline", + "body[data-testid=\"body-hydrated\"] > div#root > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])[data-testid=\"cookie-banner-reject-all\"]", + "body > div#cookie_alert > div:nth-child(2)#cookie_alert_container > div#cookie_alert_text > div:nth-child(2):not([id]) > div:nth-child(2)#js-cookie_alert_button_decline > a#cookie_alert_decline", + "body > div > div:not([id]) > div:nth-child(1) > div:nth-child(2)#cookieDisclaimer > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:not([id])", + "body > div:not([id]) > div#cookie-bar > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#gdprCookieBar > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject_consent_options", + "body > div#GDPR-alert > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > main:not([id]) > div:nth-child(2)#main-content > div:not([id]) > div:nth-child(1):not([id]) > div#block-cookiesui > div:not([id]) > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookiePrompt > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#privacy_pref_optout", + "body > div#consent-cookie-banner > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > section:nth-child(11):not([id]) > div:not([id]) > button:nth-child(4)#button-essential-only", + "body > div#__cookieWrapper > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cc-reject-Btn", + "body > main:not([id]) > sip-header:nth-child(1):not([id]) > header:nth-child(4):not([id]) > div:nth-child(6):not([id]) > sip-sip-gdpr-options-component:not([id]) > div#gdprMessage > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#footer > div:nth-child(5):not([id]) > div:nth-child(3)#CookieConsentBanner > form:not([id]) > div:nth-child(1)#CookieConsentBannerContent > span:nth-child(3)#CookieConsent-Buttons > span:nth-child(2)#CookieConsent-HollowButtons", + "body > div#cookie-bar > div:not([id]) > button:nth-child(2):not([id])", + "body > div#content > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > button:nth-child(3):not([id]) > div:not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#reject-cookies", + "body > main#app-root > div:nth-child(1)#app-parent > div#app-app > div:nth-child(1):not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > button:not([id])", + "body > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > div:nth-child(2):not([id]) > button#onetrust-reject-all-handler", + "body > div:not([id]) > div#container-ccb95b6c01 > div:nth-child(1):not([id]) > div#container-d47199b033 > div:not([id]) > div:not([id]) > section#cookie-modal-39c257092c > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:not([id]) > span:not([id])", + "body > div#renderPage > header:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div#cookieBanner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#consent-manager > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(2)#cookie-reject-button", + "body > div:not([id]) > aside:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#g-page-surround > section:nth-child(13)#g-cookies > div:not([id]) > div:nth-child(2):not([id]) > div#cookie-tabs > div#tabs-3280-particle > div#tabs-3280 > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div#er-cookie-placeholder-settings > div:not([id]) > a:nth-child(5):not([id])", + "body > header:not([id]) > div:nth-child(2)#cookie-consent-prompt > div:not([id]) > div:nth-child(2):not([id]) > form:nth-child(2)#cookie-consent-form > button:nth-child(2):not([id])", + "body > div#consent-manager > div:nth-child(5):not([id]) > div:nth-child(2)#one-panel > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie_banner > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > button:nth-child(2)#cookie_deny", + "body > div#sliding-popup > div#cookiepopup > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#lhsc-overlay > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(2)#fc-reject-settings", + "body > div#cky-consent > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#cky-btn-reject", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > p:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div#accelerator-page > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > p:nth-child(4):not([id]) > a:nth-child(2):not([id])", + "body > div#cookie-consent > button:nth-child(5):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#outershell > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3)#reject-accept-cookiewrapper > button:nth-child(1)#cookie-reject", + "body > div:not([id]) > div:nth-child(1)#cookieBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookieBannerRejectAllButton", + "body > div#page-wrap > div:nth-child(7)#cookie-notice > div:not([id]) > div:not([id]) > div:nth-child(3)#decline-cookies > button#cookie-decline-button", + "body > div#cookiescript_injected_wrapper > div#cookiescript_injected > div:nth-child(4)#cookiescript_buttons > div:nth-child(3)#cookiescript_reject", + "body > div#cookie-consent-prompt > div:not([id]) > div:nth-child(2):not([id]) > form:nth-child(2)#cookie-consent-form > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > form:nth-child(2):not([id]) > button:nth-child(2)#cookieConsentRejectAll", + "body > div:not([id]) > div#CookieManager > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div#radix-\\:R2j9db\\: > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > form#cookie-banner > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#cookiebanner > div > div:nth-child(3)#button-test > ul:not([id]) > li:nth-child(3):not([id]) > a#c-essential-btn", + "body > div#cookie-container-id > div:nth-child(1)#cookie-partial-div > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#rejectPolicy", + "body > main#main > div:nth-child(5):not([id]) > div:nth-child(4)#pageContent > div:nth-child(4)#app > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > section:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > ul:not([id]) > li:nth-child(1):not([id]) > button:nth-child(1)#acc-btn-951749864375", + "body > aside#cookie-consent-layer > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > span:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-law-info-bar > span:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1)#cookie_action_close_header_reject", + "#cookie-overlay", + "body > div:not([id]) > div:not([id]) > div:nth-child(1)#ch2-dialog > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#lv-c-b > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > main:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#react-aria-\\:Rlamkq\\:", + "body > div#__nuxt > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#privacy-choices > div:not([id]) > div:nth-child(3):not([id]) > div#privacy-choices-banner > div:nth-child(2)#privacy-choices-prompt > div:nth-child(2)#privacy-choices-prompt-buttons > button:nth-child(2):not([id])", + "body > div#cookies_notice > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookies_notice_reject", + "body > div:not([id]) > div:nth-child(2):not([id]) > dialog:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#banner-reject > span:nth-child(1):not([id])", + "body > div#__nuxt > main#root > div:nth-child(4)#cookieNotice > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(3)#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div#cookieOptions > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > a:nth-child(2):not([id])", + "body > div#root > div:nth-child(1):not([id])[data-testid=\"pcf-cookie\"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"cookie-button-reject\"] > div:nth-child(1):not([id])", + "body > div#nhs-cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#nhs-reject-cookies", + "body > div#__next > div:nth-child(1):not([id])[data-testid=\"CookieBanner\"] > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > section#shopify-pc__banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3)#shopify-pc__banner__btn-decline", + "body > div#silktide-wrapper > div:nth-child(3)#silktide-banner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > aside:not([id]) > div:not([id]) > div:not([id]) > form:nth-child(3):not([id]) > button:not([id])", + "body > div:not([id]) > button:nth-child(3)#btn-cookie-policy-decline", + "body > div#nb-cookie-consent-modal > div#nb-cookie-consent-modal-dialog > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#nb-cookie-consent-button-left", + "body > div#consentPopup > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#consent-reject", + "body > div:not([id]) > div:nth-child(11):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > aside:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#modal-content-17 > div#pr-cookie-notice > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline", + "body > div#__nuxt > div:not([id]) > aside:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#gdprCookieBar > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#adopt-reject-all-button", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div#tqc-modal-9 > footer:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#psref_cookie_consent_panel > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#psref_cookie_decline", + "body > div#cky-consent > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cky-btn-reject", + "body > div#cookieman-modal > div#bannercontent > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieModal > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > p:not([id]) > a#reject-all-cookies-modal", + "body > div:not([id]) > div:nth-child(1)#cookieConsent > div:nth-child(3):not([id]) > button:nth-child(2)#st-cookie-accept-essential", + "body > div#__nuxt > div#__layout > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-consent-modal > div#cookie-consent-modal-dialog > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#cookie-consent-button-left", + "body > div#js-client-storage-consent__popup > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#js-client-storage-consent__reject", + "body > div#cookie-compliance > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#page-wrapper > div#page > header:nth-child(1)#header > nav:nth-child(1)#navbar-top > div:not([id]) > div:nth-child(2)#block-sp2024-cookiesui > div:not([id]) > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:nth-child(11):not([id]) > button:nth-child(4):not([id])", + "body > footer:not([id]) > div:nth-child(2)#seeGdprCookieConsent > div:not([id]) > p:nth-child(2):not([id]) > a:nth-child(2)#seeGdprReject", + "body > div:not([id]) > div:nth-child(6)#widgets-placeholder > div:nth-child(1):not([id]) > section:nth-child(2)#gdpr-banner > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#gdpr-banner-decline", + "body > div#__nuxt > div#__layout > div:not([id]) > div:not([id]) > div#default-layout > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#rcc-decline-button", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > span:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#geotargetlygeoconsent1740635347323container > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie_alert > div#cookie_alert_container > div#cookie_alert_text > div:nth-child(2):not([id]) > div:nth-child(2)#js-cookie_alert_button_decline > a#cookie_alert_decline", + "body > footer#site-footer > div:nth-child(3)#gdprPopup > div:nth-child(2):not([id]) > button:nth-child(2)#gdprDecline", + "body > dialog#cookie-consent-dialog > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-consent-reject-button", + "body > div#cookies > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1)#declineCookies", + "body > div#cookie-consent-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(6):not([id])", + "body > div:not([id]) > div:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(4):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:nth-child(4):not([id]) > div:not([id])[data-testid=\"cookie-banner\"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])[data-testid=\"cookie-banner-reject\"]", + "body > div#CookieBar > form:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#silktide-wrapper > div:nth-child(4)#silktide-banner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > main:nth-child(3):not([id]) > div:nth-child(18):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id])", + "body > div#app > div:nth-child(1)#cookie-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-banner-reject", + "body > section:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(5):not([id])", + "body > section:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > section:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > section:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookiesck > div:not([id]) > span:nth-child(2)#cookiesck_buttons > a:nth-child(2)#cookiesck_decline", + "body > app-root:not([id]) > cx-storefront:nth-child(1):not([id]) > footer:nth-child(6):not([id]) > cx-page-layout:not([id]) > cx-page-slot:nth-child(3):not([id]) > app-gg-cookie-consent-management-banner:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#popout > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#saveCookies", + "body > div#cookies_overlay > div#cookies_banner > div:nth-child(2)#cookies_decision > button:nth-child(2)#cookies_read_declined", + ".overlay-cookies #cookie-group-control-necessary", + "body > div#consent-manager-container > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#content > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > section:not([id])[data-testid=\"initial-waitrose-cookie-consent-banner\"] > div:nth-child(3):not([id]) > button:nth-child(2):not([id])[data-testid=\"reject-all\"]", + "body > div#cookie-consent-banner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#btn-reject-all", + "body > section:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > section:not([id]) > div#preferences-banner__content > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-modal > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-essential", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > p:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#page > main:nth-child(2)#index > div:nth-child(3)#cookie-settings-modal > div:not([id]) > div#cookie-settings > div:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3):not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > div#experience-fragment-3e7c4c10db > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1)#onload-modal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:not([id]) > span:not([id])", + "body > div#__next > div:nth-child(1)#BodyWrapper_wrapper__767Lq > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#page-wrapper > div#page > div:nth-child(2)#hkhContent > div:nth-child(2)#main-wrapper > div#main > div:not([id]) > main#content > section:not([id]) > div:nth-child(4)#block-hkh-barrio-cookiesui > div:not([id]) > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#dytmpl-104029088 > section:nth-child(1)#firstbox > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > aside#cookie-consent-banner > div:not([id]) > form:not([id]) > div:nth-child(2):not([id]) > fieldset:nth-child(3):not([id]) > ul:not([id]) > li:nth-child(1):not([id]) > button:not([id])", + "body > main#main > section:nth-child(3):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > section#cookie-card > div:nth-child(3):not([id]) > a:nth-child(3)#cookies-no", + "body > div#__next > div:nth-child(11):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#CookieBar > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > header:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > nav:not([id]) > div:not([id]) > div:nth-child(8):not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > dialog#r42CookieBar > section:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cwall > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > a:nth-child(2)#cookie-not-consent", + "body > div:not([id]) > div:nth-child(3)#offCanvasCookie > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > p:not([id]) > a:nth-child(2)#cookie-consent-decline", + "body > div#cookie_banner > div#js_privacy_banner > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div#cookieWallOverlay > div:not([id]) > section:nth-child(2):not([id]) > a:nth-child(1)#not-ok-cookies", + "body > div#__next > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#rcc-decline-button", + "body > via-modal:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id]) > span:not([id]) > span:not([id])", + "body > div#_ec-dialog > div:not([id]) > div:nth-child(2)#_ec-default > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-bar-2019 > div:nth-child(4):not([id]) > a#declineLink", + "body > div#__nuxt > div:not([id]) > div:nth-child(6)#cookieBar[data-testid=\"cookie-bar\"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])[data-testid=\"required-btn\"]", + "body > div#__next > div:not([id]) > div:nth-child(6):not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div#Cookies_question > div:nth-child(4):not([id]) > form:nth-child(3)#cookies_allowed_false > button:nth-child(2):not([id])", + "body > div#fancybox-container-1 > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div#cookie-modal-consent > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "button[data-gtm-id=consent_functional]", + "body > div#__next > div:nth-child(2)#cookieBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"refuse-all-cookies\"]", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > form:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > footer:nth-child(3):not([id]) > div:nth-child(3):not([id]) > span:not([id])", + "body > div#cookie-popup > div:nth-child(2):not([id]) > button:nth-child(2)#reject-cookies", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section#si-cookie-notice > div:nth-child(3):not([id]) > button:nth-child(4)#si-cookie-notice-reject-button", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:not([id])", + "body > div:not([id]) > div > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#__next > div:nth-child(2):not([id]) > div:nth-child(1)#cookieBanner[data-testid=\"cookie-banner\"] > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(2):not([id]) > button:not([id])[data-testid=\"cookie-banner-decline\"]", + "body > section:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div#container-ccb95b6c01 > div:nth-child(1):not([id]) > div#container-6b2b8386fd > div:not([id]) > div:not([id]) > section#cookie-modal-01f3c5e3da > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:not([id]) > span:not([id])", + "body > div#cookie-popup > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(4)#cookie-popup-footer > a:nth-child(1)#denyCookies", + "body > div#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(7):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#consent-plugin > div:nth-child(2)#consent-plugin-layout > div:nth-child(4)#consent-plugin-buttons-wrapper > div#consent-plugin-buttons-container > div#consent-plugin-buttons > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#react-content > div:nth-child(7):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > footer:not([id]) > div:nth-child(4)#PiwikPROConsentForm-container > div#PiwikPROConsentForm-container-inner > div#PiwikPROConsentForm-content > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3)#PiwikPROConsentForm-reject-all", + "body > div#consent-modal > div:not([id]) > div:nth-child(1)#consent-intro > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button#consent-deny-all", + "body > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#wpca-lay-out-wrapper > div:nth-child(1)#wpca-bar > div:nth-child(2)#wpca-bar-meta > button:nth-child(3):not([id])", + "body > main#main > div:nth-child(6):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section#cookieBanner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookielaw_banner > div:nth-child(2):not([id]) > a:nth-child(2)#cookielaw_reject", + "body > div:not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div#uxm > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div#ez-cookie-notification > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ez-cookie-notification__decline", + "body > div:not([id]) > p:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div#radix-«R9l6» > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(3):not([id]) > span:not([id])", + "body > ngb-modal-window:not([id]) > div:not([id]) > div:not([id]) > wl-cookiewall:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > crnt-button:nth-child(2):not([id])", + "body > mini-profiler:not([id]) > div:nth-child(1)#nlportal > div:nth-child(2)#nlportal-cookie-consent > div:not([id]) > div:nth-child(1):not([id]) > section:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(5):not([id]) > div:not([id])", + "body > div#__nuxt > div:nth-child(5):not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#js-cookie-notice > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#js-decline-cookies", + "body > dialog:not([id]) > section:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#_app > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(3):not([id])", + "body > dialog:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > button:nth-child(3):not([id])", + "body > div#futurumClient > header:nth-child(1)#header > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#cookie-bar > a:nth-child(2)#cookie-bar-button-no", + "body > div:not([id]) > div:nth-child(2)#jr-cookie-modal > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > a#functionalCookiesBtn", + "body > div#nimbu-consent > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > section:nth-child(1):not([id]) > div:not([id]) > div#block-mumc-network-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-notice-consent > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2)#cookie-notice-consent__reject-button", + "body > div:not([id]) > div#biscuit_modal > div:not([id]) > div:not([id]) > div:nth-child(2)#modal-description-biscuit_modal > p:not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"cookiebar__disagree\"]", + "body > div#cookie-dialog-wrapper > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#ipsLayout > div:not([id]) > div:nth-child(6)#elGuestTerms > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > form:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div#__layout > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_a9048a5b-3b67-4fde-9b06-426ace6332db > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:not([id]) > button:nth-child(4):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:not([id]) > span:nth-child(3):not([id])", + "body > div#uncinc-cookie-compliance > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#only-necessary-agree", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id]) > span:not([id])", + "body > div#cookiecontrol > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > web-overlay:not([id]) > web-cookie-consent:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieconsent > section:not([id]) > div:not([id]) > p:nth-child(6):not([id]) > a:not([id])", + ".overlay-cookies .ark-button--secondary", + "body > div#udtCookiebox > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2)#udtFullBig > div:nth-child(1)#AcceptB-custom", + "body > div#r281671-0-0 > dialog#r281672-0-0 > div:nth-child(2)#r281673-0-0 > div:nth-child(2)#r281674-0-0 > button:nth-child(2)#r281676-0-0", + "body > form:not([id]) > div:not([id]) > button:nth-child(8):not([id])", + "body > div#cookie-consent > form#cookie-consent__form > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#cookie-consent__accept-none", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookiebanner-decline[data-testid=\"button-cookie-decline\"]", + "body > div#abeb59e00-7cf7-4308-96ee-810b58fe3d7b > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body > div#cookiebanner > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > span:nth-child(2):not([id]) > a:nth-child(2)#cookie-niet-akkoord", + "body > div:not([id]) > div#cookieConsentBanner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-notification > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#cookie_decline", + "body > div#diffuse-cookie-notice > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieConsent > div:nth-child(3)#cookieConsent__popup > div:nth-child(2)#cookieConsent__popupContent > div:nth-child(3)#cookieConsent__popupAccept > button:nth-child(2)#cookieConsent__popupDenyBtn", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div#cookies > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div#app > div:nth-child(1)#cookie-bar > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > a:nth-child(4):not([id])", + "body > div#cookieNotification > div#cookieNotificationCenter > div:nth-child(4)#cookieNotificationButtons > a:nth-child(2):not([id])", + "body > div#diffuse-cookie-notice > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#ppms_cm_consent_popup_4b57564c-6697-4c5b-a0ab-fdf94dcce169 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div#wrapper > footer:nth-child(3):not([id]) > div#footer > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > section:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#csm-wrapper > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > form:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > footer:nth-child(3)#footer > div:nth-child(3)#ism-consent-box > div:nth-child(2)#ism-consent-body > div:nth-child(2)#ism-consent-buttons > button:nth-child(2)#ism-reject", + "body > div#cookie-bar > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#cookie-consent-banner > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1)#btn-reject-all", + "body > div#ppms_cm_consent_popup_24129fdb-4727-4ab4-8370-84a2b75337f2 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-40b10109-2583-4a05-9541-2c4de2b0af5c > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:nth-child(3)#container > section:nth-child(1):not([id]) > div:not([id]) > div#block-mumc-default-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > a:not([id])", + "body > div#CNID_4eb59999-7a35-450d-a08f-1661b81e5bc4 > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#refuseAll", + "body > div#__nuxt > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(8)#modals > div:not([id]) > dialog:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookieConsentBanner > div#cookieConsentContent > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(3)#rejectAll", + "body > div#cookieConsentModal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#cookie-consent-modal__reject-button", + "body > div#ecom2-spa-root > div:nth-child(4)#layout-grid > div:nth-child(4)#main-content-v2 > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"cookie-btn-deny\"]", + "body > section#shopify-section-up-cookie-banner > section:nth-child(2)#up-pc__banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#root > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id]) > span:not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > span:nth-child(3):not([id]) > button:not([id])", + "body > div#cookie-disclaimer > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookie-disclaimer-reject-all", + "body > div:not([id]) > dialog:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > span:nth-child(2):not([id])", + "body > div#radix-«Rdqunb» > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:nth-child(3):not([id])[data-testid=\"consent-manager-banner\"] > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])[data-testid=\"consent-manager-reject-btn\"]", + "body > div#senna_surface1-default > div:nth-child(3)#ounl > div:nth-child(2)#layout__wrapper > div#layout__wrapper__inner > div#layout__container > div:nth-child(3)#p_p_id_cookieDisplay_WAR_corpcookieportlet_ > div:nth-child(3)#_cookieDisplay_WAR_corpcookieportlet_privacy-info-message > div:not([id]) > div:nth-child(2) > div:not([id]) > button:nth-child(1)#_cookieDisplay_WAR_corpcookieportlet_necessaryCookiesButton", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(15)#mod-cookieacceptatie > div:not([id]) > div:nth-child(1):not([id]) > a:nth-child(1):not([id])", + "body > div#_rootSiteLayout > aside:nth-child(5):not([id]) > div:nth-child(3):not([id]) > aside:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(8):not([id])", + "body > dialog:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookieBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#ppms_cm_consent_popup_749af3c4-a547-4f05-97bd-59ab389c5e59 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-249d9ad3-8487-4c6c-ab1d-41f2f0736b30 > div:nth-child(2)#ppms-0baae0f8-5c3f-47c5-89ef-46cb010bb0a3 > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > form#mainForm > div:nth-child(2)#cookieBar > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > section:not([id]) > div:nth-child(2):not([id]) > p:not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-consent-shadow-bg > div#cookie-consent-cookie-bar-center > div:nth-child(1)#cookie-consent-io-main > div:nth-child(5):not([id]) > button:nth-child(3)#CookieConsentIOReject", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#denyCookie", + "body > div:not([id]) > div:not([id]) > div:nth-child(19):not([id]) > main#maincontent > div:nth-child(24)#eweb-cc-banner > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])[data-testid=\"Cookie-Banner-Btn-Reject\"]", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#bcSubmitConsentToNone", + "body > div#cookie-notification > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#root > section:nth-child(1)#cookiebar > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id]) > span:not([id])", + "body > div#cookieRKApolicy > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id])[data-testid=\"privacy-banner\"] > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#react-aria6842953369-\\:r0\\:[data-testid=\"privacy-banner-decline-all-btn-desktop\"]", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > wainclude:not([id]) > div:nth-child(4):not([id]) > div#cookie-notification > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#cookie_component_emea > div:not([id]) > div#cookiePopupForm > button:nth-child(2):not([id])", + "body > div#cookiebanner > div:not([id]) > div:not([id]) > div:not([id]) > div#content > span:nth-child(1):not([id]) > span:nth-child(2):not([id]) > a:not([id])", + "body > div#canvas > footer:nth-child(3):not([id]) > div:nth-child(2)#Cookies_question > div:nth-child(4):not([id]) > form:nth-child(3)#cookies_allowed_false > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(7)#modals > div:not([id]) > dialog:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > header:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > section:nth-child(1)#consentLayerOne > div:nth-child(2):not([id]) > button:nth-child(1)#consentDisagreeButton", + "body > div#modal-eudataprotection > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > form#eudataprotection-modal > div:nth-child(6):not([id]) > button:nth-child(1)#btn-reject-all", + "body > div#stravaCookieBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_8db45789-8d6b-4fa9-bd2b-5042da448581 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-8595573b-a1df-4663-b8f7-6792a15e8cff > div:nth-child(2)#ppms-dbc9bd36-1899-4fa6-a81b-5c894db67328 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#consent > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#btn-consent-deny-all", + "body > div#__next > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > aside:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > ticketswap-portal:not([id]) > ul:not([id]) > div:not([id]) > div:not([id]) > span:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_1a1ec43b-059b-4a78-ba48-8f833800b51a > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-522996a0-08f1-440c-97bf-3a208d31a4b4 > div:nth-child(2)#ppms-8de5ee23-cf1f-4b04-9477-820bc4e493d0 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#app > div:not([id]) > header:nth-child(1):not([id]) > div:nth-child(3):not([id]) > section:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#refuse-cookie-consent", + "body > div#_ec-dialog > div:nth-child(1)#_ec-default > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#eiS3ai > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#btn-eiS3ai-deny-all", + "body > div:not([id]) > div:nth-child(2)#ez-cookie-notification > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ez-cookie-notification__decline", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(1)#cookies-minimal", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1)#rnd27 > form:not([id]) > article:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#cookieConsentDecline", + "body > section:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > section#cookie-consent-container > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > p:not([id]) > a:nth-child(2)#rejectBtn", + "body > div#cookie > div:not([id]) > p:nth-child(4):not([id]) > button:nth-child(2)#btn-cookie-deny", + "body > aside:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > consented-cookie-block:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > a:nth-child(5):not([id])", + "body > div#__nuxt > div:nth-child(2)#__layout > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2)#cookie-consent > div:not([id]) > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div#cookie-consent-modal-description > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#r604336-0-0 > dialog#r604337-0-0 > div:nth-child(2)#r604338-0-0 > div:nth-child(2)#r604339-0-0 > button:nth-child(2)#r604341-0-0", + "body > div:not([id]) > main:nth-child(2):not([id]) > div:nth-child(3)#cookie-wrapper > div:nth-child(1)#cookie-consent > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cookiebar__optout", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > section#chakra-modal-\\:rd\\: > div#chakra-modal--body-\\:rd\\: > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > p:nth-child(3):not([id]) > a:not([id])", + "body > div#scms-cc-cookie-bar > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > p:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > form:not([id]) > button:nth-child(2)#cookie_settings_disallowed", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > a:nth-child(1):not([id])", + "body > form#cookie-modal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#pd_cookies_banner > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#_ec-dialog > div:not([id]) > div:nth-child(1)#_ec-default > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > main#maincontent > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > section:nth-child(1):not([id]) > div:not([id]) > div#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#svid10_17c33ae315e94c3ae6647bf > div:nth-child(1)#svid12_3f29801717d5618f8df9bf4 > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(4)#afCookieDecline", + ".site-modals__modal--cookies", + "body > div#__next > div:nth-child(2):not([id]) > main:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > g2g-bootstrap:not([id]) > g2g-app:nth-child(2):not([id]) > div:not([id]) > div:nth-child(8):not([id]) > div:nth-child(2)#cookies-settings > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_f3a3ad51-d361-468a-96ef-d47dde62ac47 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_fee05144-a41c-4f5d-9e57-bebbd52cc841 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-e04a4cb3-12fb-449d-be11-23d59a47756f > div:nth-child(2)#ppms-41269120-7ff2-461a-93c0-cc74822dedc8 > button:nth-child(2)#ppms_cm_reject-all", + "body > footer:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#reject", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#shopify-section-sections--20055816765655__privacy-banner > cookie-bar:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-modal-container > section:nth-child(3):not([id])[data-testid=\"sdsm-motif-root\"] > section:not([id]) > div:not([id]) > div:not([id])[data-testid=\"mwp-cookie-landing-screen\"] > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#page-container > div:nth-child(13):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > form#samtykke-banner > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#gtmCookieConsentDialog > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-consent-modal > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(4):not([id])", + "body > div#pb_cookie_consent > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button#coco_reject", + "body > div#ppms_cm_consent_popup_90acf0a3-53f4-491a-9350-5d93be9e0b24 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-08d2a263-880a-44d7-ba9f-d38d14b83c17 > div:nth-child(2)#ppms-9d08f907-3e32-4027-a3ba-f3446f9cbe8c > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:not([id]) > p:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#__docusaurus > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > div#CookieConsent > dialog:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button#cc-b-custom", + "body > div#siteWrapper > div:nth-child(1):not([id]) > section:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#_cookiebanner-opt-in-out > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#root > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + ".site-modals__modal-decline", + "body > div#radix-_r_2_ > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#Body > main:nth-child(1)#MainContent > div:not([id]) > div#frontPage > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:not([id]) > div:nth-child(2)#CookieDisclaimerBanner > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > section#component-cookie-banner > div:nth-child(1):not([id]) > footer:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#cookie-banner-accept-essentials", + "body > div#cookie-consent-banner > div:nth-child(4):not([id]) > button:nth-child(2)#cookie-reject", + "body > div#ccg-cookie-consent-banner > div:nth-child(4)#ccg-btns > div:not([id]) > button:nth-child(2)#ccg-btn-reject-all", + "div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > aside#wpmagus-consent-manager-dialog-wrapper > div#wpmagus-consent-manager-dialog > footer:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_c6cddf7e-9773-4bee-a9f9-7749f23dde15 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-cb3586b8-9476-4bd2-b56a-154e325a2276 > div:nth-child(2)#ppms-151546c7-7b4d-4c17-85b3-03a19891a6ae > button:nth-child(2)#ppms_cm_reject-all", + "body > div#CookieConsent > dialog:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cc-b-custom", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn", + "body > div#cookie-banner > div:nth-child(4):not([id]) > button:nth-child(2)#cookie-decline", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > container:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div#versionized-cookie-banner > div:nth-child(2):not([id]) > ul:not([id]) > li:nth-child(2):not([id]) > button#btn-reject-cookies", + "body > div#cmpbox > div:not([id]) > div:nth-child(1)#cmpboxcontent > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_d111231e-62ac-483b-bacd-b9421c18f29f > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-a28c9881-6f32-4276-b820-273f7cfec5c6 > div:nth-child(2)#ppms-8171a867-495e-4d2f-9aec-1b92cbbfb895 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#__tealiumGDPRecModal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#consent_prompt_submitNo", + "body > div:not([id]) > div:not([id]) > div:nth-child(10):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookieModal > div:not([id]) > div#modal-content > button:nth-child(6)#essentialCookies", + "body > div#mm-1 > div:nth-child(2)#cookie-consent-container > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#__nuxt > div:nth-child(2):not([id]) > aside:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cc-modal > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2)#cc-necessary", + "body > div:not([id]) > div:nth-child(2)#\\33 0a2c122-d37e-493a-9cb3-02f3cd929157 > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#bb81bcb0-4bdf-40f4-bf8a-9eb709e2ebbd > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#main > div:nth-child(3):not([id]) > div:nth-child(10):not([id]) > button:nth-child(3):not([id])", + "body > div#cookieConsent > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_a27d2fb5-8255-4f15-94c7-cd1f4ffb0436 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-59442d7f-1516-40e2-bbd7-12ad4b9a353e > div:nth-child(2)#ppms-3cde0edc-dff1-4c19-939f-15c95f4382d6 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#zcb-banner > div#zcb-info > span:nth-child(2):not([id]) > a:nth-child(1)#zc-decline", + "body > div#wrapper > main:nth-child(3):not([id]) > div:nth-child(6)#cookie-consent-banner > div:nth-child(2):not([id]) > button:nth-child(1)#cookie-deny-btn", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookieadmin_reject_button", + "body > div#consent_modal[data-testid=\"Over18ModalVariant1Modal\"] > div:nth-child(2):not([id])[data-testid=\"Over18ModalVariant1Content\"] > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1)#reject-all-cookies-btn", + "body > header:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > p:nth-child(3):not([id]) > a#denyCookiePolicyAndSetHash", + "body > div#cookie-consent-banner > div:not([id]) > div:not([id]) > p:not([id]) > span:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > astro-island:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#decline-consent", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:not([id])", + "body > div#root > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#app > div:nth-child(7):not([id])[data-testid=\"cookieBanner\"] > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])[data-testid=\"onlyNecessaryCookies\"]", + "body > div:not([id]) > aside:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > section#cookieControl > a:nth-child(5):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div#c-cookiebanner > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > p:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(1):not([id]) > li:nth-child(2):not([id]) > label:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div#cdk-overlay-0 > mat-bottom-sheet-container:nth-child(2)#cdk-dialog-0 > ng-component:not([id]) > div:nth-child(2):not([id]) > button:nth-child(5):not([id])", + "body > div#cookieAreaBase > div#cookieArea > p:nth-child(1):not([id]) > a:nth-child(3):not([id])", + "body > div#cookieAreaBase > div#cookieArea > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#cookie-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > span:nth-child(1):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#page > header:nth-child(1)#masthead > div:nth-child(3)#cookie-alert-1 > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-banner > p:nth-child(3):not([id]) > button:nth-child(2)#cookie-reject", + "body > div#cookie-notice > div:nth-child(2):not([id]) > button:nth-child(1)#cookie-notice-decline", + "body > div:not([id]) > div#wrapper > div:nth-child(7)#cookiesPortletDiv > div#p_p_id_es_indra_ibe_saa_CookiesPortlet_ > section:nth-child(2)#portlet_es_indra_ibe_saa_CookiesPortlet > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > form:nth-child(2)#_es_indra_ibe_saa_CookiesPortlet_cookiesForm > fieldset:nth-child(3):not([id]) > div:nth-child(2)#Content > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(4):not([id])", + "body > div#cookieoverlay > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(3)#cookies-decline", + "body > div#ccokies > div:not([id]) > span:nth-child(5):not([id])", + "body > div#__next > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > div#cookie-consent > div:nth-child(2):not([id]) > form:nth-child(3)#cookieHandling > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4)#cookies-dialog > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > pnp-root:not([id]) > div:not([id]) > ui-storefront:not([id]) > footer:nth-child(8):not([id]) > cx-page-layout:not([id]) > cx-page-slot:not([id]) > cms-popia-component:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(7)#headerPanel > div:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(2):not([id]) > button:not([id])", + "body > div#navigationBar > div#qccomponent-header > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div#page > div:nth-child(7):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#shopify-section-sections--24340958675320__footer > div:nth-child(11)#cookiesModal > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div#cookie-banner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#rejectCookies", + "body > div#novosales-app > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > form#consent-cooookie-form > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieNotice > span:not([id])", + "body > div:not([id]) > article:nth-child(3):not([id]) > footer:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#cookieBanner-accept", + "body > div#app > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > div#cookieConsentModal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > aside#cookie-banner > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-policy > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:nth-child(7):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-bar > p:nth-child(2):not([id]) > button:nth-child(1)#reject-all", + "body > div#page > div:nth-child(11)#pum-128427 > div#popmake-128427 > div:nth-child(1):not([id]) > form:nth-child(1):not([id]) > div:nth-child(11):not([id]) > button:nth-child(1)#btn-reject-all", + "body > div#messages > div:nth-child(1)#shopify-section-cookie-banner > section#shopify-section-cookie-banner > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#messages > div:nth-child(2)#shopify-section-newsletter-banner > section:nth-child(1):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > form#trackingConsent > button:nth-child(2):not([id])", + "body > div#page > div:nth-child(10):not([id]) > div:nth-child(2):not([id]) > form:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > article:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > main:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > app-root:not([id]) > app-cookie-banner:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#af16d6f54-6008-4e41-9298-e0f254792285 > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + ".cookie-banner-wrapper", + "div:has(> button#accept-button):has(> button#decline-button)", + "body > div:not([id]) > div:nth-child(1)#cookies-eu-banner > div:not([id]) > div:not([id]) > button:nth-child(4)#cookies-eu-reject", + "body > div#acris--page-wrap--cookie-permission > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookie-permission--accept-only-functional-button", + "body > div#a33c1b67a-151b-4dad-ba6c-e3c4a500d51d > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(7)#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2)#cookiebanner-decline-btn", + "body > div#ctl00_PageWrapperElement > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(19):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:not([id]) > div:not([id]) > main:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id])", + "body > main:not([id]) > div:nth-child(5):not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div#radix-«R16» > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#privacy-settings-background > div#privacy-settings > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(2):not([id])", + "body > section:not([id]) > div:not([id]) > button:nth-child(3)#accept-required-cookies", + "body > div:not([id]) > div#dcCookieHelper--bg > div:not([id]) > div:not([id]) > div#dcCookieHelper > div:nth-child(1):not([id]) > div:nth-child(2)#dcCookieHelper--body > div:nth-child(1):not([id])", + "body > section:not([id]) > div#CookieBox > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(5):not([id]) > a#data-cookie-refuse", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > span:nth-child(1)#\\33 ", + "body > div#__next > div:nth-child(2)#app > div:nth-child(11):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id])", + "body > div#cookiebar > div:not([id]) > span:nth-child(3)#declineCookie > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > span:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn", + "body > main#content > aside:nth-child(10):not([id]) > div:not([id]) > wm-stack:nth-child(2):not([id]) > wm-button:nth-child(1):not([id]) > button:not([id])", + "body > div#a227a3618-31b4-4d59-a7cb-0e1ac2b4d6e7 > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > dialog:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2)#banner-reject-btn", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-0 > mat-dialog-container:nth-child(2)#mat-mdc-dialog-0 > div:not([id]) > div:not([id]) > app-cookie-dialog:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id]) > span:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(1):not([id]) > a:not([id])", + "body > div#bandeau_cgv > div:not([id]) > div:not([id]) > a:nth-child(1)#dismiss-cookies", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > form:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div#wrapper > div:nth-child(6)#ajc-sheet > div#ajc-wrap > div:nth-child(3)#ajc-actions > button:nth-child(2)#ajc-deny", + "body > div#root > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div#radix-\\:Rh6\\: > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookies-iclick > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > form:nth-child(2):not([id]) > p:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > button:nth-child(3):not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(1)#popin_tc_privacy_container_text > div#popin_tc_privacy_text > p:nth-child(4)#paragraph2 > a#optout_link", + "body > div#ppms_cm_consent_popup_7ad20af5-64ad-4cab-a680-a3cd31d15f6a > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-b421324e-89a8-4164-86be-43eb3a791105 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2)#decline-cookies", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div#cookie-consent-banner > div:nth-child(1):not([id]) > div:nth-child(2):not([id])", + "body > div#app > div:nth-child(1):not([id]) > button:nth-child(4):not([id])", + "body > cd-modal-dialog:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > cd-consent-gdpr-container:not([id]) > div:not([id]) > cd-dialog:not([id]) > cd-dialog-footer:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#___gatsby > div:nth-child(1)#gatsby-focus-wrapper > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-law-info-bar > span:not([id]) > a:nth-child(2)#cookie_action_close_header_reject", + "body > div#__next > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id])[data-testid=\"cookie-banner\"] > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"reject-all-cookies-button\"]", + "body > div#__PWS_ROOT__ > div:nth-child(2):not([id]) > header:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2)#cookie-consent > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#fr-gdpr-cookie-consent--banner > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button#gdpr-cookie-consent--decline-all", + "body > div#app > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > main#main > dialog:nth-child(24):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div#gdpr-cookie-message > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > p:not([id]) > button:nth-child(1)#gdpr-cookie-ignore", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(1)#popin_tc_privacy_container_text > div#popin_tc_privacy_text > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-banner > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > ds-modal:nth-child(7):not([id]) > dialog#cookie-dialog > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:nth-child(1)#cookie-refuse", + "body > div#consent-loader-component > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > form:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > aside:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div#modal-content-7 > div#pr-cookie-notice > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline", + "body > div#appContainer > div:nth-child(2)#cookiesLightbox > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1)#js_cookie_refuse", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#root > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#orejime > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div#advencyRgpd > button:nth-child(3)#refuseAll", + "body > div#tc-privacy-wrapper > div:nth-child(2)#popin_tc_privacy > div:nth-child(1)#popin_tc_privacy_container_text > div#popin_tc_privacy_text > div:not([id]) > p:nth-child(6):not([id]) > a:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_0946a2c6-0c1d-4382-b0e8-6f92746b6105 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-20099cd8-9623-4b81-8514-154249708ca8 > div:nth-child(2)#ppms-09db68df-722c-4a5f-950e-32f2ddaa4d71 > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:nth-child(4):not([id]) > div#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > footer:not([id]) > div:nth-child(13)#cookiesModal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#refuse_cookies_consent", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div#toastconsent > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#btnDeny", + "body > div:not([id])[data-popup=\"\"][data-popup-cookies=\"\"][data-terms-cookies-popup=\"\"][data-terms-cookies-popup-common=\"\"][data-popup-need-overlay=\"true\"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])[data-popup-close=\"\"][data-cookies=\"disallow_all_cookies\"][data-cookies-refuse=\"\"]", + "body > div#mgdpr-mainpopup > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > a:nth-child(2)#mgdpr-refuseall", + "body > section:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#privacy-banner > div:nth-child(3):not([id]) > button:nth-child(1)#privacy-rejected", + "body > div:not([id]) > p:nth-child(2):not([id]) > button:nth-child(2)#seopress-user-consent-close", + "body > div#orejime > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > a:nth-child(1):not([id])", + "body > main:not([id]) > section:nth-child(3):not([id])[data-testid=\"sdsm-motif-root\"] > section:nth-child(5):not([id]) > div:not([id]) > div:not([id])[data-testid=\"mwp-cookie-landing-screen\"] > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-banner > a:nth-child(1):not([id])", + "body > div#ckieBnr_wall > div#ckieBnr_footer > div:nth-child(1)#close_footer > button#ckieBnr_footer_button_deny", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#notice-consents-block > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(1)#notice-consents-block-deny", + "body > div:not([id]) > div#mc-consents-container > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:nth-child(1)#layer-root-modal > div:not([id]) > div:not([id])[data-testid=\"We_Care_About_Your_Privacy_dialog\"] > div:not([id]) > section:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#redim-cookiehint-modal > div#redim-cookiehint > div:nth-child(3):not([id]) > a:nth-child(2)#cookiehintsubmitno", + "body > div#eu-cookie-disclaimer > div:not([id]) > form#new-cookie-form > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#required-only-btn", + "body > div#cookie-banner-container > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > a:not([id])", + "body > div#cookie-law > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(12):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#full-page-cookie-banner > div:not([id]) > div:nth-child(2)#modal-container-full-page-cookie-banner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])", + "body > div#CookieSettings > div:not([id]) > div:nth-child(1)#CookieSettingsInfo > div:nth-child(3):not([id]) > button:nth-child(2)#btnCookieSettingsReject", + "body > form#form > div:nth-child(16):not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > a:nth-child(2)#btnRejectAllOptionalCookies", + "body > div:not([id]) > div:nth-child(1)#cookie-consent-prompt > div:not([id]) > div:nth-child(3):not([id]) > form#cookie-consent-form > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(5):not([id]) > a:nth-child(2)#disallowAllCookies", + "body > div#__next > main:nth-child(4)#main-content > div:nth-child(12):not([id]) > div#cookie-banner[data-testid=\"cookie-banner\"] > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-testid=\"decline\"]", + "body > div:not([id]) > div:nth-child(1)#cpnb > div#w357_cpnb_outer > div:not([id]) > div:nth-child(3):not([id]) > span:nth-child(2)#cpnb-decline-btn", + "body > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(20):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#cookie-bar > a:nth-child(4):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)[id]", + "body > div#__next > div:nth-child(3)#cookieBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#site-cookies-notice > div:not([id]) > form:nth-child(3)#cookies-1 > ul:nth-child(2):not([id]) > li:nth-child(3):not([id]) > button:not([id])", + "body > div:not([id]) > footer:nth-child(6):not([id]) > div:nth-child(3)#ctl00_ctl30_cmpCookiePolicy > div:nth-child(1)#cookie-policy-popup > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > p:not([id]) > p:nth-child(1):not([id]) > button:nth-child(4)#confirmSelection", + "body > div:not([id]) > div:nth-child(1):not([id])[data-testid=\"privacy-banner\"] > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#react-aria5019014405-\\:r0\\:[data-testid=\"privacy-banner-decline-all-btn-desktop\"]", + "body > div#chem-cookie-banner > button:nth-child(3):not([id])", + "body > main:not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2)#cookieConsentAccept > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2)#declineAll", + "body > div#wrapper > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > span#\\33 ", + "body > form#form > div:nth-child(15)#site-container > div:nth-child(1)#cookie-consent > div:not([id]) > span:nth-child(2):not([id]) > button:nth-child(2)#essential-cookies", + "body > div:not([id]) > div:not([id]) > div:nth-child(2)#tp-cookie-banner-ref > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1)#tp-cookie-banner-btn-decline", + "body > div#on-main > div:nth-child(3):not([id]) > div:nth-child(2)#on-app-container > div:nth-child(1)#on-map > div:nth-child(1)#on-privacy-info > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:not([id])", + "body > aside#cookies-policy > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > form:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > main:not([id]) > div:nth-child(9):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > section:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#consent-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#consent-reject-all", + "body > app-root:not([id]) > div#application-outer-container > div:nth-child(1):not([id]) > app-cookie-banner:not([id]) > div#cookie-banner > div:nth-child(1)#inner-container > div:nth-child(3)#button-container > div#buttons > button:nth-child(2):not([id])", + "body > div#sapper > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(14):not([id]) > div#m-cookienotice > div:not([id]) > div:nth-child(3)#action-custom-css > a:nth-child(2):not([id])", + "body > amp-consent#cookie-consent > div:nth-child(2)#consent-ui > div#c-box > button:nth-child(2)#reject-btn", + "body > div#root > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-consent > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body:not([id]) > div#cookie_consent_wrapper > div:not([id]) > div > button#consent_accept_essential", + "body > div#outer-container > div:nth-child(1)#inner-container > div:nth-child(5)#zoom-win > div:nth-child(7)#cookie-consent > aside:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(5):not([id])", + "body > div#cookie-consent > div:not([id]) > a:nth-child(1):not([id])", + "body > div#app > dialog:nth-child(1)#spa-dialog > div:nth-child(2)#spa-dialog-footer > dialog#cookie-consent-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#notification-2 > div:not([id]) > form:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div#container-d3fa4bc94c > div:not([id]) > div#container-586a0cef17 > div:nth-child(3):not([id]) > div#experiencefragment-9bfc8a501f > div#container-aa35fde130 > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > header:nth-child(5):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a#cookie-reject", + "body > div#cookie-consent-banner > div:nth-child(4):not([id]) > button:nth-child(2)#declineCookies", + "body > div#__next > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(7):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#mm-0 > div:nth-child(1)#__cookieWrapper > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#cc-reject-Btn", + "body > header:not([id]) > div:not([id]) > nav:nth-child(2)#navbar > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#decline-cookies", + "body > div#__nuxt > div#__layout > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#reject-cookies-btn", + "body > div#portal-root > div:nth-child(2)#radix-_r_0_ > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])[data-testid=\"cmp-revoke-all\"]", + "body > div#consent-page > div:not([id]) > div:not([id]) > div:not([id]) > form:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(6):not([id])", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > form:not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(78)#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > dialog:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#cookie-consent > div:not([id]) > form:not([id]) > div:nth-child(7):not([id]) > button:nth-child(3):not([id])", + "body > air-root:not([id]) > ion-app:not([id]) > air-layout:not([id]) > air-cookie-banner:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#\\:re\\: > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id]) > span:not([id]) > span:not([id])", + "body > div#diffuse-cookie-notice > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookiebanner > div:nth-child(2):not([id]) > button:nth-child(2)#cookiebanner_reject", + "body > div#root > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id])", + "body > div:not([id]) > section:nth-child(2):not([id]) > div:not([id]) > div#block-curio-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_ee9d8006-22b9-46cd-898b-50ce43a64086 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-444ca1c2-922f-4549-acb0-da3314683636 > div:nth-child(2)#ppms-b717bd56-83b5-43af-b16d-96f3072b3f60 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#ppms_cm_consent_popup_4ca856df-af0a-4db2-a706-ceb1ae1da32f > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > dialog:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_5ef3b96e-e36b-4b17-b70a-17cae056a2f2 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-ae38e496-09cd-4af4-b701-ed5bddf30c1f > div:nth-child(2)#ppms-f920f923-3ce1-43fb-8f92-d30c430af8f4 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#cookie-control > a:nth-child(1)#cookie-control-decline", + "body > div#headlessui-portal-root > div:not([id]) > div:nth-child(2):not([id]) > div#headlessui-dialog-_r_4l_ > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div#headlessui-dialog-panel-_r_4r_ > div:not([id]) > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > button:not([id])", + "body > div#ppms_cm_consent_popup_90fcb88c-40cf-4ab4-bae8-7ec43e28013d > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-e6ed7e98-47b2-47a2-abef-742abeb23c9c > div:nth-child(2)#ppms-9cbb9100-738f-4a6c-97b5-4a7f398dceb3 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#__nuxt > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > a:nth-child(5):not([id])", + "body > div#anwb-cookie-module > div#anwb-cookie-modal > div:nth-child(1)#anwb-cookie-card > div:nth-child(3):not([id]) > button:nth-child(1)#anwb-cookie-refuse", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div#chakra-modal-\\:R5mcrbq6\\: > div#chakra-modal--body-\\:R5mcrbq6\\: > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#cookies-decline", + "button#accept-button,button#decline-button", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body:nth-child(2).lia-user-status-anonymous.CommunityPage.lia-body > div:nth-child(22):not([id]).adsk-gdpr-footer-wrapper > div:nth-child(1):not([id]).adsk-gdpr-content > div:nth-child(2):not([id]).adsk-gdpr-confirm > button:nth-child(1)#adsk-eprivacy-privacy-decline-all-button[data-trigger-close=\"true\"][data-yesno=\"false\"][data-slim-trigger=\"true\"].adsk-eprivacy-no-to-all--trigger", + "body > div#radix-_r_9_ > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#cookiesplus-modal-container > div:not([id]) > div:nth-child(1)#cookiesplus-modal > div:nth-child(3)#cookiesplus-content > div:not([id]) > form#cookiesplus-form > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#cc-consent-banner > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1)#cc-reject-all", + "body > div:not([id]) > noindex:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div#hrw-cookie-dialog > div:nth-child(3)#hrw-cookie-dialog__buttons > button:nth-child(2)#hrw-cookie-dialog__decline", + "body > div#\\:r9\\: > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div#chakra-modal-\\:R5qcrbq6\\: > div#chakra-modal--body-\\:R5qcrbq6\\: > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#cookies-decline", + "body > div:not([id]) > div#container > section:nth-child(1):not([id]) > div:not([id]) > div#block-mumc-info-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#staticBackdrop > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(9):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:not([id])", + "body > div#cookie_consent > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cookie_consent_deny", + "body > div:not([id]) > div:nth-child(18):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > form:not([id]) > button:nth-child(3):not([id])", + "body > div#cookieModal > div:not([id]) > div:not([id]) > div:nth-child(2)#cookieAccordion > div:nth-child(1):not([id]) > div#cookieInfoCollapse > div:nth-child(2):not([id]) > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > button#btnCookieNecessary", + "body > dialog#cookies-dialog > div:not([id]) > button:nth-child(3)#reject-cookies-button", + "body > div:not([id]) > div:nth-child(23):not([id]) > div:not([id]) > span:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id])[data-testid=\"privacy-banner\"] > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#react-aria7028971373-\\:r0\\:[data-testid=\"privacy-banner-decline-all-btn-desktop\"]", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > section#cookie-consent > div:nth-child(7):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1)#button-«r0»", + "body > div:not([id]) > div:nth-child(2)#cookies-wrapper > div:nth-child(2)#ot-cookie-banner > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#cookies-dismiss", + "body > div#root > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id]) > span:not([id]) > span:not([id])", + "body > div#ppms_cm_consent_popup_3928277b-40cd-4c31-ab8d-a25c10dd1c91 > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-acbe7d0b-0320-48f9-b8ee-c0e7cf9780b8 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#__nuxt > div:not([id]) > div:nth-child(3):not([id]) > section#modal > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div:not([id]) > div:nth-child(1)#cookie-banner > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(6)#cookie-options > div:nth-child(2):not([id]) > button:nth-child(2)#btn-reject-all", + "body > div#app > aside:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookieconsent > section#geom_inter_1759502054905_2_1 > div:not([id]) > p:nth-child(5):not([id]) > a:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2)#block-reactapp > div:nth-child(3)#ssr-root > div:nth-child(2)#root > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#only-necessary-agree", + "body > div#consent-container > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > section#consent-settings > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#cookiebar > p:not([id]) > a:nth-child(3):not([id])", + "body > div#container > section:nth-child(1):not([id]) > div:not([id]) > div#block-nro-cookiesui--9MQ2RSW0j4Y > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#container > section:nth-child(1):not([id]) > div:not([id]) > div#block-nwo-cookiesui--sRhqi9qg0s0 > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#usAsGIACDHEsEFsvIEHHsttsCrEHAsvt > div:not([id]) > form:not([id]) > div:nth-child(5):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#Row1_Column1_Cell1_CookieSettings_AdvancedSaveCancel", + "body > div#container > section:nth-child(1):not([id]) > div:not([id]) > div#block-onderwijskennis-cookiesui--osnDGe1EtkY > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_a5cc4655-83d8-461c-af8a-0659597000bc > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-acbe7d0b-0320-48f9-b8ee-c0e7cf9780b8 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#consent-plugin > div:nth-child(2)#consent-plugin-layout > div:nth-child(4)#consent-plugin-buttons-wrapper > div#consent-plugin-buttons-container > div#consent-plugin-buttons > div#geom_inter_1759502156882_21_3 > button:nth-child(2):not([id])", + "body > div#scms-cc-cookie-bar > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > a:nth-child(2):not([id])", + "body > footer:not([id]) > div:nth-child(2)#cookieParent > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#noCookies", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div#b43-\\$b1 > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2)#b43-b1-FooterRightButtom > button:nth-child(1):not([id])", + "body > div#__nuxt > div:not([id]) > div:not([id]) > div:nth-child(9)#cookie-bar > div:not([id]) > div:not([id]) > div:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#\\:r6\\: > section:nth-child(3)#\\:R0H1\\: > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > form:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div#cc-accept > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#cc-reject-all", + "body > section#cookie-banner > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(1)#deny-cookies", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > p:not([id]) > a:nth-child(1):not([id])", + "body > shn-dialog#firstTimeVisitorCookieDialog > dialog:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section#cc-window-overlay > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(39)#cookie-bar-modal > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#cookie-bar-decline", + "body > div#ppms_cm_consent_popup_e1b032d5-e42b-42b5-8b73-ea4347239c3d > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-e591b42a-ca70-46c6-ba58-6040944ae056 > div:nth-child(2)#ppms-49d04449-0f4f-4446-99cf-e595115b2979 > button:nth-child(2)#ppms_cm_reject-all", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > form:nth-child(2):not([id]) > button:nth-child(4):not([id])", + "body > section#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > div#app > main:not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body:nth-child(2).__className_f367f3 > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id])[data-testid=\"consent-dialog\"] > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)", + "body > div:not([id]) > div:nth-child(12):not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > form:nth-child(3)#consent-form > div:nth-child(3):not([id]) > button:nth-child(2)#submit-button", + "body > div#app > div:not([id]) > div:nth-child(10):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:nth-child(1)#cookie-banner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(3)#cookie-banner-reject", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div#cookie-dialog > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#mdt_banner > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#mdt_banner_btn_declineall", + "body > aza-app:not([id]) > aza-shell:not([id]) > div:nth-child(2):not([id]) > aza-cookie-message:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#geotargetlygeoconsent1749551372435container > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2)#cookie-reject-all", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-dmarket0 > mat-dialog-container:nth-child(2)#mat-mdc-dialog-dmarket0 > div:not([id]) > div:not([id]) > cookies-dialog:not([id]) > form:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_d0973bf6-9332-4ce3-bc7c-09678b958daf > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2)#ppms-4ad6f5ba-7508-4caa-bd23-e8e9a4bd64b2 > div:nth-child(2)#ppms-85b001a4-b886-4f7e-82d5-bd34f50f3266 > button:nth-child(2)#ppms_cm_reject-all", + "body > div#cookie-banner > button:nth-child(3)#only-necessary", + "body > div#__nuxt > div:nth-child(2)#main-wrapper > div:nth-child(5):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#page-default > div:nth-child(29):not([id]) > div#cookie-modal > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > section#cookie_consent > div:not([id]) > div:not([id]) > div:not([id]) > section:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id]) > div:not([id])", + "body > div#CookieConsent > dialog:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#cc-b-custom", + "body > div#cookieSnackbar > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#root > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > dialog:nth-child(1)#cookie-consent-modal > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > form#cookieConsentForm > div#cookie-consent-modal > div:not([id]) > div#cookie-consent-modal-content > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#jsCookieModal > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > form:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#rcc-decline-button", + "body > div#__next > div:not([id]) > div:nth-child(3):not([id]) > header:nth-child(1):not([id]) > div:nth-child(2)#cookie-consent-banner > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#btn_privacy_reject", + "body > div#policyBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#cookies-politics[data-testid=\"cookies-politics--dialog\"] > div#cookies-politics--dialog__body[data-testid=\"cookies-politics--dialog__body\"] > div:not([id])[data-testid=\"cookies-politics--dialog__content\"] > div:not([id]) > div:not([id]) > div:not([id]) > section:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookies-politics-reject-button[data-testid=\"cookies-politics-reject-button--button\"]", + "body > div#meru-cc--main > div#meru-cc > div:nth-child(1)#meru-cm > div#meru-cm__cnt-inr > div:nth-child(2)#meru-cm__bns > button:nth-child(2)#c-rall-bn", + "body > div#cassie-widget > div:nth-child(4)#cassie_cookie_module > div:nth-child(2)#cassie_pre_banner > div:nth-child(3)#cassie_pre_banner__footer > button:nth-child(2)#cassie_reject_all_pre_banner", + "body > main:not([id]) > div:nth-child(21)#modal_cookie_preference > div:nth-child(3):not([id]) > button:nth-child(3)#btn_cookie_preference_reject", + "body > div:not([id]) > div#ez-cookie-notification > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1)#ez-cookie-notification__decline", + "body > div#mf-root > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1)#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(1)#accept-necessary-button", + "body > div:not([id]) > div:nth-child(17):not([id]) > div:not([id]) > a:nth-child(3):not([id])", + "body > div#consent > div:nth-child(1):not([id]) > div:nth-child(2)#consent-buttons > button:nth-child(1)#consent-button-nope", + "body > div#site-wrapper > div:nth-child(1)#site-canvas > div#wrapper1 > main:nth-child(2)#mainSection1 > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(2)#\\30 b94133b-8573-43fe-8d37-771c47a4d616 > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "button#decline-button", + "body > div#located-in-eu-ca-quebec > section:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#gdpr-dismiss", + ".cookie-banner-wrapper .cookie-banner", + "body > div#__next > div:nth-child(4):not([id]) > div:nth-child(2)#\\:rh\\: > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])[data-testid=\"modalRejectButton\"]", + "body > div:not([id]) > div:nth-child(11):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1):not([id])", + "#cookieBanner #cookieBannerContent, #globalCookieBanner", + "#globalCookieBanner .js-customizeGlobalCookies", + "#cookieBanner button.cbSecondaryCTA", + ".cookie-banner-wrapper button.btn-secondary-lg", + "RBXcb", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div:not([id]) > div > div[data-cy=cookie-modal] > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#__next > div#app-content-id > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(4)#portal > div:not([id]) > div:not([id]) > aside:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "#data-protection-consent-dialog rpl-modal-card > button.button-primary", + "#data-protection-consent-dialog rpl-modal-card > button.button-secondary", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2)#cookie-banner-reject", + "body > main:not([id]) > div:nth-child(7):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id])[data-popup=\"\"][data-popup-cookies=\"\"][data-terms-cookies-popup-common=\"\"][data-popup-need-overlay=\"true\"] > div:not([id])[data-terms-cookies-popup=\"\"][data-terms-cookies-popup-common=\"\"] > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])[data-cookies=\"disallow_all_cookies\"]", + "body > div:not([id])[data-popup=\"\"][data-popup-cookies=\"\"][data-terms-cookies-popup=\"\"][data-terms-cookies-popup-common=\"\"][data-popup-need-overlay=\"true\"][data-gtm-vis-recent-on-screen30941244_769=\"\\32 146\"][data-gtm-vis-first-on-screen30941244_769=\"\\32 146\"][data-gtm-vis-total-visible-time30941244_769=\"\\31 00\"][data-gtm-vis-has-fired30941244_769=\"\\31 \"] > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])[data-popup-close=\"\"][data-cookies=\"disallow_all_cookies\"][data-cookies-refuse=\"\"]", + "body > div#CookieMessage > div:nth-child(2)#button_wrapper > button:nth-child(1)#SaveBtnnn-Rejected", + "body > div:not([id]) > div:nth-child(1):not([id]) > section:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > a#cookie-accept-technical", + "body > div#mm-0 > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > span:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > section:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div:not([id]) > div:nth-child(2):not([id])[data-testid=\"page-layout-component\"] > section:nth-child(4):not([id]) > section:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#cookieconsent > div#cookieconsent-bar > div:nth-child(3):not([id]) > a:nth-child(2)#decline", + "body > div#root > div:not([id]) > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "#pop-up_cookie_button_decline", + "body > div#cookie_consent_wrapper > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(2)#consent_accept_essential", + "body > div:not([id]) > div:nth-child(4)#gdprCookieBar > div:nth-child(1)#gdprCookieBarContent > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > form#form1 > div:nth-child(3):not([id]) > div:nth-child(7)#ffzh-cookie-banner > button:nth-child(4):not([id])", + "body > div:not([id]) > div#radix-_R_4ivatb_[data-testid=\"user-consent-dialog\"] > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])[data-testid=\"user-consent-decline\"]", + "body > div#app > div:nth-child(3)#cookie-banner > div#cookie-banner-inlay > div:nth-child(3):not([id]) > button:nth-child(2)#decline-button", + "body > div#__nuxt > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#__next > div#page-layout > div:nth-child(4):not([id]) > div:nth-child(3):not([id]) > button:nth-child(1)#decline-all", + "body > div#__nuxt > div:not([id]) > aside:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#consent-manager > footer:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#tc-privacy-wrapper > div#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(1)#popin_tc_privacy_button_2", + "body > div#consent_blackbar > div:nth-child(3)#truste-consent-track > div#truste-consent-content > div:nth-child(1)#truste-consent-text > a:nth-child(3)#truste-consent-required", + "body > dialog:not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > div#haas-cookie-dialog > div#cookie-dialog-container > div:nth-child(2)#cookie-buttons > button:nth-child(1)#haas-cookie-dialog-decline-button", + "body > div:not([id]) > div:nth-child(70)#cookie-banner > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#ppms_cm_consent_popup_ad550b69-68dc-4ce4-a8e8-a85d175e8bad > div#ppms_cm_popup_overlay > div#ppms_cm_popup_wrapper > div:nth-child(1)#ppms_cm_popup > div:nth-child(3)#ppms_cm_popup_main_id > div:nth-child(2)#ppms-807a2912-2817-4ab9-8153-1823459be08f > button:nth-child(2)#ppms_cm_reject-all", + "body > dialog#ai-hinweis > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > center:not([id]) > button:nth-child(1)#policy_notwendig", + "body > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(3):not([id]) > span:not([id]) > span:not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(3):not([id])", + "body > comply-consent-manager:not([id]) > div#comply-consent-manager > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "[data-cookies=\"disallow_all_cookies\"][data-cookies-refuse=\"\"]", + "body > div:not([id]) > div#CookieBox > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(5):not([id]) > span:nth-child(2):not([id]) > button#data-cookie-refuse", + "body > div:not([id]) > div:nth-child(94)#cookie-bar > div#cookie-bar-eu > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(8)#cookie-banner > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "#cookie-consent-banner > div:nth-child(3):not([id]) > button:nth-child(2)#cookie-accept-required", + "body > div:not([id]) > div:nth-child(29)#cookie-consent-banner > div:nth-child(3):not([id]) > button:nth-child(1)#cookie-deny", + "body > div:not([id]) > toujou-consent-widget:nth-child(14):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#consentDenyAllButton", + "body > div#wrapper > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-consent > div:not([id]) > form:nth-child(3):not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div#CookieBox > div:not([id]) > div:nth-child(2)#ConsentDialogText > div:nth-child(2):not([id]) > p:nth-child(5):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id]) > span:not([id]) > span:not([id])", + "body > dialog#PrivacyProtectionBanner > form:nth-child(3):not([id]) > menu:not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div#experiencefragment-proxy-8938fc465d > div:not([id]) > div:not([id]) > div:not([id]) > div#preferences-cookie-consent > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#app > div:nth-child(1)#header > div:nth-child(2)#cookie_banner > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#__nuxt > div#__layout > div#app > div:nth-child(6):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#askForCookiesBackground > div:nth-child(2):not([id]) > div:nth-child(1)#askForCookies > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > a:not([id]) > button#customButtonAccept", + "body > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > p:nth-child(2):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#cookie-notice > div:not([id]) > span:nth-child(2)#cn-notice-buttons > button:nth-child(2)#cn-refuse-cookie", + "body > div:not([id]) > div:nth-child(2):not([id]) > div#cdk-overlay-0 > app-modal-confirm-cookies-unsubscribe:not([id]) > gc-dialog-box:not([id]) > gc-dialog-footer:nth-child(3):not([id]) > uikit-grid-columns:not([id]) > uikit-button:nth-child(2):not([id]) > button:not([id])", + "body > div#cookie-notice > div:nth-child(1):not([id]) > span:nth-child(2)#cn-notice-buttons > button:nth-child(2)#cn-refuse-cookie", + "body > div:not([id]) > div:nth-child(2)#cookie-consent[data-testid=\"cookie-consent-banner\"] > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#mm-0 > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#app > dialog:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(1):not([id])", + "body > div#askForCookiesBackground > div:not([id]) > div:nth-child(1)#askForCookies > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > a:not([id]) > button#customButtonAccept", + "body > main#main > div:nth-child(5)#cookie-notice > div:not([id]) > span:nth-child(2)#cn-notice-buttons > a:nth-child(2)#cn-refuse-cookie", + "body > div#cookieConsentBanner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#consentMinimal", + "body > div#main > div:nth-child(5)#gdpr-popup > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:not([id]) > span:not([id]) > span:not([id]) > span:not([id]) > div:nth-child(8):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(9):not([id]) > div:nth-child(1):not([id]) > div:not([id]) > button:not([id])", + "body > div#cookies > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#cookiesplus-modal-container > div:not([id]) > div:nth-child(1)#cookiesplus-modal > div:nth-child(2)#cookiesplus-content > div:not([id]) > form#cookiesplus-form > div:nth-child(1):not([id]) > button:not([id])", + "body > section#mm-0 > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > aside:nth-child(3):not([id]) > div#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > article:not([id]) > header:nth-child(2)#header > div:nth-child(1)#cookie-modal > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#ppms_cm_consent_popup_a514f139-d30e-4faf-817e-fe5149e17ba6 > div#ppms_cm_popup_overlay > div:nth-child(2)#ppms_cm_popup_wrapper > div#ppms_cm_popup > div#ppms_cm_popup_main_id > div#ppms_cm_popup_responsive_wrapper_id > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#ppms_cm_reject-all", + "body > div#root > div#app-wrapper > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#root > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:not([id])", + "body > div#app-vue > div:not([id]) > div:nth-child(5):not([id]) > div#cookiesStrip > div:not([id]) > div:nth-child(3)#cookiesStrip_buttons > div:not([id]) > button:nth-child(2)#cookiesStrip_content_skip", + "body > div#app > div:nth-child(5):not([id]) > div:nth-child(1):not([id]) > p:nth-child(2)#my-consent > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > section#fr-consent-banner > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button#fr-button-_r_1_", + "body > div:not([id]) > div:nth-child(10):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#root > div:nth-child(2)#fr-consent-banner > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button#fr-consent-banner-button-refuse-app", + "body > div:not([id]) > div#warning_popup > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > a:nth-child(3):not([id])", + "body > div#am-cookie-bar > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie_consent_wrapper > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(1)#consent_accept_essential", + "body > div#root > section:nth-child(1):not([id]) > div:nth-child(1)#fr-consent-banner > ul:nth-child(3):not([id]) > li:nth-child(2):not([id]) > button#fr-consent-banner-button-refuse-app", + "body > div#__next > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > app-root:not([id]) > div:not([id]) > app-cookie-banner:nth-child(3):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2)#reject-cookie-link > button#reject-cookie", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div#P0-0 > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > ul:nth-child(2):not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div:not([id]) > div:not([id])[data-testid=\"cookie-consent-banner\"] > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div#tc-privacy-wrapper > div:nth-child(2)#popin_tc_privacy > div:nth-child(2)#popin_tc_privacy_container_button > button:nth-child(1)#popin_tc_privacy_button", + "body > div:not([id]) > div:nth-child(2):not([id]) > p:nth-child(2):not([id]) > button:nth-child(2)#seopress-user-consent-close", + "body > div:not([id]) > footer:nth-child(5):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1)#block-cookiesui > div#cookiesjsr > div:not([id]) > div:not([id]) > div:nth-child(1):not([id]) > span:nth-child(1):not([id]) > p:not([id]) > a:nth-child(1):not([id])", + "body > div#lbganalyticsCookies > footer:nth-child(8):not([id]) > button:nth-child(2)#decline", + "body > div#bergzeit-app > div:nth-child(9)#cookie-disclaimer > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#body-container > div:nth-child(40)#cookie-settings-modal-container > div#modal-cookie-settings[data-testid=\"dialog-container-cookie-settings-modal\"] > div:not([id]) > div:not([id])[data-testid=\"modal-content\"] > div:nth-child(2):not([id])[data-testid=\"modal-body\"] > div:nth-child(1):not([id]) > div:nth-child(4):not([id]) > button:nth-child(1):not([id])[data-testid=\"cookie-reject-all\"]", + "body > div#root > main:nth-child(4):not([id]) > div:nth-child(5):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#system-ialert > div#system-imessage > div:nth-child(2):not([id]) > button:nth-child(2)#system-ialert-reject-button", + "body > div#root > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#ivcb-overlay > div#ivcb-banner > div:nth-child(1)#ivcb-welcome > p:nth-child(4):not([id]) > a:nth-child(3):not([id])", + "body > div#headlessui-portal-root > div:not([id]) > div:nth-child(2):not([id]) > div#headlessui-dialog-_r_0_ > div:nth-child(2):not([id]) > div#headlessui-dialog-panel-_r_6_ > div:nth-child(3):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > button:nth-child(1):not([id])", + "body > div#__next > div:nth-child(1):not([id]) > div:nth-child(5):not([id]) > div:not([id])[data-testid=\"cookies-banner-container\"] > div:not([id]) > div:nth-child(2):not([id])[data-testid=\"cookies-banner-actions\"] > button:nth-child(2):not([id])[data-testid=\"cookies-reject-button\"]", + "body > div#notices_wrapper > div:nth-child(1)#notices > section:not([id]) > section:not([id]) > button:nth-child(8):not([id])", + "body > div#__next > div:nth-child(6):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#app-root > div:nth-child(7)#notification-stack > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(5):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3)#cookie-notice > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(4):not([id]) > button:nth-child(3):not([id])", + "body > div#__next > div:nth-child(7):not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#cookie-consent-banner > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > header#header > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#reject-button[data-testid=\"reject-button\"]", + "body > main:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > aside:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#cookiebar > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2)#cookie-decline", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > form:not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > form:not([id]) > button:nth-child(3):not([id])", + "body > div#_ec-dialog > div:nth-child(2):not([id]) > div:nth-child(2)#_ec-default > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#root > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(5):not([id]) > button:nth-child(1):not([id])", + "body > div#cribbon > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2)#select-only-necessary > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > form:nth-child(2)#decline > button:not([id])", + "body > div#__next > main:not([id]) > div:nth-child(24)#Cookies > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#app > div:nth-child(3):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#__nuxt > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > header:nth-child(1):not([id]) > div:nth-child(3):not([id]) > div:not([id]) > nav:not([id]) > div:not([id]) > div:nth-child(7):not([id]) > div:nth-child(1):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1):not([id]) > a:not([id])", + "body > div:not([id]) > div:nth-child(1)#react-content > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div#cookieConsent > div:nth-child(2)#cookieConsent > div:nth-child(2):not([id]) > div:nth-child(4):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie-wall > div:not([id]) > slot:not([id]) > slot:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > slot:nth-child(2):not([id]) > button#cookie-reject-all-button", + "body > via-modal:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:not([id]) > button:nth-child(2):not([id]) > span:not([id]) > span:not([id])", + "body > div#cookiedialog > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button#cookie-essential-btn", + "body > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > div:not([id]) > button:nth-child(2):not([id])", + "body > div#cookieConsent > div:not([id]) > form:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#cookiebanner > div:nth-child(1)#cookies-content > div:nth-child(3):not([id]) > a:nth-child(2)#DeclineAll", + "body > div:not([id]) > div:nth-child(3)#cookie-consent[data-testid=\"cookie-consent-banner\"] > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div#CLID_f936e33c-24b9-4899-9b6e-e4a3ad8cee96 > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1)#refuseAll", + "body > div:not([id]) > div:not([id]) > form:nth-child(3)#cookie-options > button:nth-child(2)#declineCookies", + "body > div#phx-GIn5MHbgOXmqdCPi > div:nth-child(2)#cookie-consent-footer > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:not([id]) > button:nth-child(2):not([id]) > div:not([id])", + "body > div:not([id]) > div:nth-child(6):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:nth-child(5)#gdprCookieBar > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(3):not([id])", + "body > div#__next > div:nth-child(2):not([id]) > div:not([id]) > div:nth-child(3)#cookie-banner > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(1):not([id])[data-testid=\"cookie-banner-accept\"]", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "[data-testid=cookie-popup]", + "[data-testid=decline-cookies]", + "[data-testid=cookiepopup]", + "body > div#custom-wrapper > div:nth-child(4)#custom-banner > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id])", + "body > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > span:nth-child(2):not([id])", + "body > section:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > button:nth-child(4):not([id])", + "body > div#CookieBanner > div:nth-child(2)#CookieBannerNotice > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > ul:not([id]) > li:nth-child(2):not([id]) > button:not([id])", + "body > div#cookiebanner > a:nth-child(3):not([id])", + "body > div#app > div:not([id]) > div:not([id]) > div:nth-child(4):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > section#cookiebar > div:nth-child(1):not([id]) > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(1):not([id]) > span:not([id])", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(2):not([id]) > button:not([id])", + "body > div#cw-cookie-banner > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2):not([id]) > a:nth-child(1)#cw-btn-reject-all", + "body > div#__next > div:nth-child(1):not([id]) > div:nth-child(6):not([id]) > div:not([id])[data-testid=\"cookies-banner-container\"] > div:not([id]) > div:nth-child(2):not([id])[data-testid=\"cookies-banner-actions\"] > button:nth-child(2):not([id])[data-testid=\"cookies-reject-button\"]", + "body > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:not([id]) > div:nth-child(2):not([id]) > div:nth-child(1):not([id]) > button:nth-child(2):not([id])", + "body > div#cookie_banner > div:not([id]) > button:nth-child(2):not([id])", + "body > region#cx_banner_container > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > div:nth-child(1)#cookie-law-info-bar > div:not([id]) > span:nth-child(2)#wt-cli-cookie-banner > div:not([id]) > div:nth-child(1):not([id]) > div:nth-child(5):not([id]) > a:not([id])", + "body > div#onetrust-consent-sdk > div:nth-child(2)#onetrust-banner-sdk > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:nth-child(2)#onetrust-button-group-parent > div#onetrust-button-group > button:nth-child(1)#onetrust-pc-btn-handler", + "body > div#__next > div:not([id]) > div:nth-child(1):not([id]) > div:not([id]) > div:not([id]) > div:nth-child(3):not([id]) > button:nth-child(2):not([id])", + "body > div:not([id]) > aside:nth-child(4):not([id]) > div:nth-child(2):not([id]) > div#modal-content-24 > div#pr-cookie-notice > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline", + "body > div:not([id]) > div:nth-child(2)#\\38 2816c67-b70a-4101-b4af-56f5172dc018 > div:nth-child(2):not([id]) > button:nth-child(2):not([id])", + "body > div#root > div:not([id]) > div:nth-child(5):not([id])[data-testid=\"cookies-banner\"] > div:nth-child(3):not([id]) > button:nth-child(3):not([id])", + "body > div:not([id]) > aside:nth-child(1):not([id]) > div:nth-child(2):not([id]) > div#modal-content-110 > div#pr-cookie-notice > div:nth-child(1):not([id]) > div:nth-child(2):not([id]) > button:nth-child(2)#btn-cookie-decline" + ], + "r": [ + [ + 1, + "abconcerts.be", + 2, + "", + 22, + [ + 4 + ], + [ + { + "e": 5 + } + ], + [ + { + "v": 5 + } + ], + [ + { + "if": { + "e": 6 + }, + "then": [ + { + "k": 6 + } + ], + "else": [ + { + "k": 7 + }, + { + "c": 8 + } + ] + } + ], + [], + { + "intermediate": false + } + ], + [ + 1, + "acris", + 2, + "", + 22, + [ + 9 + ], + [ + { + "e": 10 + } + ], + [ + { + "v": 11 + } + ], + [ + { + "check": "any", + "wv": 12 + }, + { + "wait": 500 + }, + { + "c": 12 + } + ], + [], + {} + ], + [ + 1, + "adopt", + 2, + "", + 22, + [ + 18 + ], + [ + { + "e": 19 + } + ], + [ + { + "v": 18 + } + ], + [ + { + "c": 20 + } + ], + [ + { + "eval": "EVAL_ADOPT_TEST" + } + ], + {} + ], + [ + 1, + "Adroll", + 2, + "", + 22, + [ + 21 + ], + [ + { + "e": 21 + } + ], + [ + { + "v": 21 + } + ], + [ + { + "c": 22 + } + ], + [ + { + "negated": true, + "cc": 23 + } + ], + {} + ], + [ + 1, + "affinity.serif.com", + 2, + "", + 22, + [], + [ + { + "e": 27 + } + ], + [ + { + "v": 28 + } + ], + [ + { + "k": 29 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 30 + }, + { + "negated": true, + "cc": 31 + } + ], + {} + ], + [ + 1, + "amazon.com", + 2, + "", + 22, + [ + 46 + ], + [ + { + "e": 46 + } + ], + [ + { + "check": "any", + "v": 699 + } + ], + [ + { + "wv": 47 + }, + { + "wait": 5000 + }, + { + "k": 47 + } + ], + [], + {} + ], + [ + 1, + "amex", + 0, + "", + 22, + [ + 48 + ], + [ + { + "e": 48 + } + ], + [ + { + "v": 48 + } + ], + [ + { + "c": 49 + } + ], + [], + {} + ], + [ + 1, + "anthropic", + 2, + "", + 22, + [], + [ + { + "e": 50 + } + ], + [ + { + "v": 50 + } + ], + [ + { + "c": 51 + } + ], + [ + { + "cc": 52 + } + ], + {} + ], + [ + 1, + "aquasana.com", + 2, + "", + 22, + [ + 53 + ], + [ + { + "e": 53 + } + ], + [ + { + "e": 53 + } + ], + [ + { + "if": { + "e": 54 + }, + "then": [ + { + "k": 54 + } + ], + "else": [ + { + "h": 53 + } + ] + } + ], + [], + {} + ], + [ + 1, + "arbeitsagentur", + 2, + "", + 22, + [ + 55 + ], + [ + { + "e": 56 + } + ], + [ + { + "e": 57 + } + ], + [ + { + "waitForThenClick": [ + "bahf-cookie-disclaimer-dpl3", + "#bahf-cookie-disclaimer-modal .ba-btn-contrast" + ] + } + ], + [ + { + "cc": 58 + } + ], + {} + ], + [ + 1, + "asus", + 2, + "", + 22, + [ + 59 + ], + [ + { + "e": 60 + } + ], + [ + { + "v": 60 + } + ], + [ + { + "if": { + "e": 61 + }, + "then": [ + { + "k": 61 + } + ], + "else": [ + { + "c": 62 + }, + { + "c": 63 + } + ] + } + ], + [], + {} + ], + [ + 1, + "automattic-cmp-optout", + 2, + "", + 22, + [ + 67 + ], + [ + { + "e": 67 + } + ], + [ + { + "v": 67 + } + ], + [ + { + "k": 68 + }, + { + "all": true, + "c": 69 + }, + { + "k": 70 + } + ], + [], + {} + ], + [ + 1, + "aws.amazon.com", + 2, + "", + 22, + [ + 71, + 72, + 73, + 74 + ], + [ + { + "e": 71 + } + ], + [ + { + "v": 71 + } + ], + [ + { + "k": 75 + }, + { + "w": 76 + }, + { + "all": true, + "optional": true, + "k": 77 + }, + { + "k": 78 + } + ], + [], + {} + ], + [ + 1, + "axeptio", + 2, + "", + 22, + [ + 79 + ], + [ + { + "e": 79 + } + ], + [ + { + "any": [ + { + "e": 80 + }, + { + "v": 81 + }, + { + "visible": [ + ".axeptio_mount .needsclick", + ".axeptio_widget" + ] + } + ] + } + ], + [ + { + "if": { + "e": 700 + }, + "then": [ + { + "waitForVisible": [ + ".axeptio_mount .needsclick", + "button#axeptio_btn_dismiss,button.ax-discardButton" + ] + }, + { + "wait": 300 + }, + { + "click": [ + ".axeptio_mount .needsclick", + "button#axeptio_btn_dismiss,button.ax-discardButton" + ] + } + ], + "else": [ + { + "wv": 701 + }, + { + "wait": 300 + }, + { + "k": 701 + } + ] + } + ], + [ + { + "cc": 82 + } + ], + {} + ], + [ + 1, + "b-cookie", + 1, + "", + 22, + [ + 83 + ], + [ + { + "e": 83 + } + ], + [ + { + "v": 83 + } + ], + [ + { + "h": 83 + } + ], + [], + {} + ], + [ + 1, + "baden-wuerttemberg.de", + 1, + "", + 22, + [ + 84 + ], + [ + { + "e": 84 + } + ], + [ + { + "v": 84 + } + ], + [ + { + "h": 84 + } + ], + [], + {} + ], + [ + 1, + "bbb.org", + 0, + "", + 22, + [ + 85 + ], + [ + { + "e": 85 + } + ], + [ + { + "v": 86 + } + ], + [ + { + "wv": 87 + }, + { + "wait": 500 + }, + { + "k": 87 + }, + { + "w": 88 + }, + { + "all": true, + "optional": true, + "k": 89 + }, + { + "k": 90 + }, + { + "c": 91 + } + ], + [], + {} + ], + [ + 1, + "bigcommerce-consent-manager", + 0, + "", + 22, + [ + 96 + ], + [ + { + "e": 96 + }, + { + "eval": "EVAL_BIGCOMMERCE_CONSENT_MANAGER_DETECT" + } + ], + [ + { + "v": 97 + } + ], + [ + { + "c": 98 + } + ], + [ + { + "cc": 99 + } + ], + {} + ], + [ + 1, + "bing.com", + 2, + "", + 22, + [ + 100 + ], + [ + { + "e": 101 + } + ], + [ + { + "v": 101 + }, + { + "v": 102 + } + ], + [ + { + "wait": 500 + }, + { + "c": 103 + } + ], + [ + { + "cc": 104 + } + ], + {} + ], + [ + 1, + "blocksy", + 0, + "", + 10, + [ + 105 + ], + [ + { + "e": 106 + } + ], + [ + { + "v": 105 + } + ], + [ + { + "c": 107 + } + ], + [ + { + "cc": 108 + } + ], + { + "intermediate": false + } + ], + [ + 1, + "borlabs", + 2, + "", + 22, + [ + 109 + ], + [ + { + "e": 110 + } + ], + [ + { + "v": 111 + } + ], + [ + { + "if": { + "e": 112 + }, + "then": [ + { + "k": 112 + } + ], + "else": [ + { + "k": 113 + }, + { + "wv": 114 + }, + { + "all": true, + "optional": true, + "k": 115 + }, + { + "k": 116 + }, + { + "wait": 500 + } + ] + } + ], + [ + { + "eval": "EVAL_BORLABS_0" + } + ], + {} + ], + [ + 1, + "bswhealth", + 0, + "", + 22, + [ + 118 + ], + [ + { + "e": 118 + } + ], + [ + { + "v": 119 + } + ], + [ + { + "c": 120 + }, + { + "wv": 121 + }, + { + "all": true, + "optional": true, + "c": 122 + }, + { + "c": 119 + } + ], + [ + { + "cc": 123 + } + ], + {} + ], + [ + 1, + "bundesregierung.de", + 2, + "", + 22, + [ + 124 + ], + [ + { + "e": 124 + } + ], + [ + { + "v": 125 + } + ], + [ + { + "wait": 500 + }, + { + "c": 126 + } + ], + [ + { + "cc": 127 + } + ], + {} + ], + [ + 1, + "burpee.com", + 2, + "", + 22, + [ + 128, + 129 + ], + [ + { + "e": 129 + } + ], + [ + { + "v": 130 + } + ], + [ + { + "if": { + "e": 131 + }, + "then": [ + { + "c": 131 + }, + { + "all": true, + "k": 132 + }, + { + "k": 133 + } + ], + "else": [ + { + "h": 134 + } + ] + } + ], + [], + {} + ], + [ + 1, + "cassie", + 0, + "", + 10, + [ + 146 + ], + [ + { + "e": 147 + } + ], + [ + { + "v": 148 + } + ], + [ + { + "c": 149 + } + ], + [], + {} + ], + [ + 1, + "cc_banner", + 1, + "", + 22, + [ + 157 + ], + [ + { + "e": 157 + } + ], + [ + { + "v": 158 + } + ], + [ + { + "h": 157 + } + ], + [], + {} + ], + [ + 1, + "cc-banner-springer", + 2, + "", + 22, + [ + 150 + ], + [ + { + "e": 150 + } + ], + [ + { + "v": 150 + } + ], + [ + { + "if": { + "e": 151 + }, + "then": [ + { + "k": 151 + } + ], + "else": [ + { + "c": 152 + }, + { + "w": 153 + }, + { + "all": true, + "optional": true, + "k": 154 + }, + { + "if": { + "e": 155 + }, + "then": [ + { + "k": 155 + } + ], + "else": [ + { + "k": 156 + } + ] + } + ] + } + ], + [ + { + "eval": "EVAL_CC_BANNER2_0" + } + ], + {} + ], + [ + 1, + "check24-partnerprogramm-de", + 2, + "", + 22, + [ + 159 + ], + [ + { + "e": 160 + } + ], + [ + { + "check": "any", + "v": 160 + } + ], + [ + { + "c": 161 + } + ], + [], + {} + ], + [ + 1, + "ciaopeople.it", + 2, + "", + 22, + [ + 162 + ], + [ + { + "e": 162 + } + ], + [ + { + "v": 162 + } + ], + [ + { + "c": 163 + }, + { + "w": 164 + }, + { + "c": 165 + } + ], + [ + { + "check": "none", + "v": 162 + } + ], + {} + ], + [ + 1, + "civic-cookie-control", + 2, + "", + 22, + [ + 166 + ], + [ + { + "e": 167 + } + ], + [ + { + "v": 168 + }, + { + "v": 167 + } + ], + [ + { + "if": { + "v": 169 + }, + "then": [ + { + "c": 169 + } + ], + "else": [ + { + "if": { + "exists": [ + "#ccc #ccc-notify .ccc-notify-buttons", + "xpath///button[contains(., 'Settings') or contains(., 'Cookie Preferences') or contains(., 'Einstellungen️')]" + ] + }, + "then": [ + { + "waitForThenClick": [ + "#ccc #ccc-notify .ccc-notify-buttons", + "xpath///button[contains(., 'Settings') or contains(., 'Cookie Preferences') or contains(., 'Einstellungen️')]" + ] + }, + { + "wv": 170 + } + ] + }, + { + "if": { + "v": 169 + }, + "then": [ + { + "c": 169 + } + ], + "else": [ + { + "c": 171 + } + ] + } + ] + } + ], + [], + {} + ], + [ + 1, + "ckies", + 2, + "", + 22, + [ + 172 + ], + [ + { + "e": 172 + } + ], + [ + { + "v": 172 + } + ], + [ + { + "c": 173 + } + ], + [ + { + "cc": 174 + } + ], + {} + ], + [ + 1, + "click.io", + 2, + "", + 22, + [ + 175 + ], + [ + { + "e": 175 + } + ], + [ + { + "v": 175 + } + ], + [ + { + "w": 176 + }, + { + "wait": 500 + }, + { + "k": 176 + }, + { + "w": 177 + }, + { + "all": true, + "k": 177 + }, + { + "k": 178 + } + ], + [ + { + "cc": 179 + } + ], + {} + ], + [ + 1, + "clinch", + 2, + "", + 10, + [ + 180 + ], + [ + { + "e": 180 + } + ], + [ + { + "v": 180 + } + ], + [ + { + "if": { + "e": 181 + }, + "then": [ + { + "k": 181 + } + ], + "else": [ + { + "k": 182 + }, + { + "all": true, + "optional": true, + "k": 183 + }, + { + "k": 184 + } + ] + } + ], + [ + { + "cc": 185 + } + ], + { + "intermediate": false + } + ], + [ + 1, + "cloudflare-zaraz", + 2, + "", + 22, + [ + 145 + ], + [ + { + "exists": [ + ".cf_modal_container", + ".cf_consent-buttons" + ] + } + ], + [ + { + "visible": [ + ".cf_modal_container", + ".cf_consent-buttons" + ] + } + ], + [ + { + "waitForThenClick": [ + ".cf_modal_container", + ".cf_consent-buttons #cf_consent-buttons__reject-all" + ] + } + ], + [], + {} + ], + [ + 1, + "Complianz banner", + 2, + "", + 22, + [ + 191 + ], + [ + { + "e": 192 + } + ], + [ + { + "check": "any", + "v": 192 + } + ], + [ + { + "c": 193 + } + ], + [ + { + "cc": 194 + } + ], + {} + ], + [ + 1, + "Complianz categories", + 2, + "", + 22, + [ + 195 + ], + [ + { + "e": 195 + } + ], + [ + { + "v": 195 + } + ], + [ + { + "if": { + "e": 196 + }, + "then": [ + { + "k": 197 + } + ], + "else": [ + { + "all": true, + "optional": true, + "k": 198 + }, + { + "k": 199 + } + ] + } + ], + [], + {} + ], + [ + 1, + "Complianz notice", + 1, + "", + 22, + [ + 200 + ], + [ + { + "e": 201 + } + ], + [ + { + "v": 201 + } + ], + [ + { + "if": { + "e": 202 + }, + "then": [ + { + "k": 202 + } + ], + "else": [ + { + "h": 203 + } + ] + } + ], + [], + {} + ], + [ + 1, + "Complianz opt-both", + 2, + "", + 22, + [ + 204 + ], + [ + { + "e": 204 + } + ], + [ + { + "v": 204 + } + ], + [ + { + "c": 202 + } + ], + [], + {} + ], + [ + 1, + "Complianz opt-out", + 2, + "", + 22, + [ + 205 + ], + [ + { + "e": 205 + } + ], + [ + { + "v": 205 + } + ], + [ + { + "if": { + "e": 202 + }, + "then": [ + { + "k": 202 + } + ], + "else": [ + { + "if": { + "e": 206 + }, + "then": [ + { + "k": 206 + }, + { + "c": 207 + }, + { + "c": 208 + } + ] + } + ] + } + ], + [], + {} + ], + [ + 1, + "Complianz optin", + 2, + "", + 22, + [ + 209 + ], + [ + { + "e": 209 + } + ], + [ + { + "v": 209 + } + ], + [ + { + "if": { + "v": 202 + }, + "then": [ + { + "k": 202 + } + ], + "else": [ + { + "if": { + "v": 210 + }, + "then": [ + { + "c": 210 + }, + { + "wv": 211 + }, + { + "all": true, + "optional": true, + "k": 212 + }, + { + "k": 213 + } + ], + "else": [ + { + "k": 197 + } + ] + } + ] + } + ], + [], + {} + ], + [ + 1, + "Cookie Information Banner", + 2, + "", + 22, + [ + 263 + ], + [ + { + "e": 263 + } + ], + [ + { + "v": 263 + } + ], + [ + { + "eval": "EVAL_COOKIEINFORMATION_0" + }, + { + "wait": 1000 + }, + { + "if": { + "v": 385 + }, + "then": [ + { + "h": 263 + } + ] + } + ], + [ + { + "cc": 264 + } + ], + {} + ], + [ + 1, + "cookie-consent-spice", + 0, + "", + 10, + [ + 214, + 215 + ], + [ + { + "e": 215 + } + ], + [ + { + "v": 215 + } + ], + [ + { + "c": 216 + } + ], + [], + {} + ], + [ + 1, + "cookie-law-info", + 2, + "", + 22, + [ + 217 + ], + [ + { + "e": 218 + }, + { + "eval": "EVAL_COOKIE_LAW_INFO_DETECT" + } + ], + [ + { + "v": 218 + } + ], + [ + { + "h": 217 + }, + { + "eval": "EVAL_COOKIE_LAW_INFO_0" + } + ], + [ + { + "negated": true, + "cc": 219 + } + ], + {} + ], + [ + 1, + "cookie-manager-popup", + 0, + "", + 10, + [ + 220 + ], + [ + { + "e": 221 + } + ], + [ + { + "v": 129 + } + ], + [ + { + "if": { + "e": 222 + }, + "then": [ + { + "k": 222 + } + ], + "else": [ + { + "c": 220 + }, + { + "wv": 223 + }, + { + "all": true, + "optional": true, + "k": 224 + }, + { + "k": 225 + } + ] + } + ], + [ + { + "eval": "EVAL_COOKIE_MANAGER_POPUP_0" + } + ], + { + "intermediate": false + } + ], + [ + 1, + "cookie-script", + 2, + "", + 22, + [ + 228 + ], + [ + { + "e": 228 + } + ], + [ + { + "v": 228 + } + ], + [ + { + "if": { + "e": 229 + }, + "then": [ + { + "wait": 100 + }, + { + "k": 229 + } + ], + "else": [ + { + "k": 230 + }, + { + "wv": 231 + }, + { + "c": 229 + } + ] + } + ], + [], + {} + ], + [ + 1, + "cookieacceptbar", + 1, + "", + 22, + [ + 232 + ], + [ + { + "e": 232 + } + ], + [ + { + "v": 232 + } + ], + [ + { + "h": 232 + } + ], + [], + {} + ], + [ + 1, + "cookieconsent2", + 2, + "", + 22, + [ + 238 + ], + [ + { + "e": 238 + } + ], + [ + { + "v": 239 + }, + { + "e": 240 + } + ], + [ + { + "c": 241 + } + ], + [ + { + "cc": 242 + } + ], + {} + ], + [ + 1, + "cookieconsent3", + 2, + "", + 22, + [ + 243 + ], + [ + { + "e": 243 + } + ], + [ + { + "v": 244 + } + ], + [ + { + "c": 245 + } + ], + [ + { + "cc": 242 + } + ], + {} + ], + [ + 1, + "cookiecuttr", + 0, + "", + 10, + [ + 246 + ], + [ + { + "e": 247 + } + ], + [ + { + "v": 247 + } + ], + [ + { + "if": { + "e": 248 + }, + "then": [ + { + "k": 248 + } + ], + "else": [ + { + "h": 246 + } + ] + } + ], + [], + {} + ], + [ + 1, + "cookiefirst.com", + 2, + "", + 22, + [ + 249 + ], + [ + { + "e": 250 + } + ], + [ + { + "v": 250 + } + ], + [ + { + "if": { + "e": 251 + }, + "then": [ + { + "k": 251 + }, + { + "timeout": 1000, + "wv": 252 + }, + { + "eval": "EVAL_COOKIEFIRST_1" + }, + { + "wait": 1000 + }, + { + "k": 253 + } + ], + "else": [ + { + "k": 254 + } + ] + } + ], + [ + { + "eval": "EVAL_COOKIEFIRST_0" + } + ], + {} + ], + [ + 1, + "cookiehub", + 2, + "", + 22, + [ + 255 + ], + [ + { + "e": 256 + } + ], + [ + { + "v": 256 + } + ], + [ + { + "if": { + "e": 257 + }, + "then": [ + { + "k": 257 + }, + { + "wv": 258 + }, + { + "if": { + "e": 259 + }, + "then": [ + { + "k": 259 + } + ], + "else": [ + { + "all": true, + "optional": true, + "k": 260 + }, + { + "k": 261 + } + ] + } + ], + "else": [ + { + "h": 255 + } + ] + } + ], + [ + { + "cc": 262 + } + ], + {} + ], + [ + 1, + "cookiejs-banner", + 2, + "", + 22, + [ + 265 + ], + [ + { + "e": 266 + } + ], + [ + { + "v": 267 + } + ], + [ + { + "c": 268 + } + ], + [ + { + "cc": 269 + } + ], + {} + ], + [ + 1, + "cookiejs-modal", + 2, + "", + 22, + [ + 265 + ], + [ + { + "e": 270 + } + ], + [ + { + "v": 271 + } + ], + [ + { + "c": 272 + } + ], + [ + { + "cc": 273 + } + ], + {} + ], + [ + 1, + "cookieyes", + 2, + "", + 22, + [ + 274 + ], + [ + { + "e": 275 + } + ], + [ + { + "v": 275 + } + ], + [ + { + "if": { + "e": 276 + }, + "then": [ + { + "c": 276 + } + ], + "else": [ + { + "if": { + "e": 277 + }, + "then": [ + { + "k": 277 + }, + { + "w": 278 + }, + { + "all": true, + "optional": true, + "k": 279 + }, + { + "c": 280 + } + ], + "else": [ + { + "h": 281 + } + ] + } + ] + } + ], + [ + { + "cc": 282 + } + ], + {} + ], + [ + 1, + "corona-in-zahlen.de", + 2, + "", + 22, + [ + 283 + ], + [ + { + "e": 283 + } + ], + [ + { + "v": 283 + } + ], + [ + { + "k": 284 + }, + { + "k": 285 + } + ], + [], + {} + ], + [ + 1, + "ct-ultimate-gdpr", + 2, + "", + 22, + [ + 289 + ], + [ + { + "e": 289 + } + ], + [ + { + "timeout": 30000, + "wv": 289 + } + ], + [ + { + "if": { + "v": 290 + }, + "then": [ + { + "k": 290 + } + ], + "else": [ + { + "if": { + "v": 291 + }, + "then": [ + { + "k": 291 + }, + { + "c": 292 + }, + { + "k": 293 + } + ], + "else": [ + { + "h": 289 + } + ] + } + ] + } + ], + [ + { + "wait": 500 + }, + { + "cc": 294 + } + ], + {} + ], + [ + 1, + "curseforge", + 1, + "", + 22, + [ + 295 + ], + [ + { + "e": 296 + } + ], + [ + { + "v": 296 + } + ], + [ + { + "h": 295 + } + ], + [], + {} + ], + [ + 1, + "dailymotion-us", + 1, + "", + 22, + [ + 297 + ], + [ + { + "e": 298 + } + ], + [ + { + "v": 298 + } + ], + [ + { + "h": 298 + } + ], + [], + {} + ], + [ + 1, + "dan-com", + 2, + "", + 10, + [], + [ + { + "e": 304 + } + ], + [ + { + "v": 304 + } + ], + [ + { + "c": 305 + } + ], + [], + {} + ], + [ + 1, + "deepl.com", + 2, + "", + 22, + [ + 306 + ], + [ + { + "e": 307 + } + ], + [ + { + "v": 307 + } + ], + [ + { + "if": { + "e": 308 + }, + "then": [ + { + "k": 308 + } + ], + "else": [ + { + "h": 307 + } + ] + } + ], + [], + {} + ], + [ + 1, + "dmgmedia", + 2, + "", + 22, + [ + 327 + ], + [ + { + "e": 328 + } + ], + [ + { + "v": 328 + } + ], + [ + { + "c": 329 + }, + { + "wv": 330 + }, + { + "all": true, + "c": 331 + }, + { + "waitForThenClick": [ + "[data-project=\"mol-fe-cmp\"] [class*=footer]", + "xpath///button[contains(., 'Save & Exit')]" + ] + } + ], + [], + {} + ], + [ + 1, + "dmgmedia-us", + 2, + "", + 22, + [ + 321 + ], + [ + { + "e": 322 + } + ], + [ + { + "wv": 322 + } + ], + [ + { + "c": 323 + }, + { + "wv": 324 + }, + { + "c": 325 + }, + { + "c": 326 + } + ], + [], + {} + ], + [ + 1, + "dpgmedia-nl", + 2, + "", + 22, + [ + 335 + ], + [ + { + "e": 335 + } + ], + [ + { + "visible": [ + "#pg-root-shadow-host", + "#pg-modal" + ] + } + ], + [ + { + "waitForThenClick": [ + "#pg-root-shadow-host", + "#pg-configure-btn" + ] + }, + { + "waitForThenClick": [ + "#pg-root-shadow-host", + "#pg-reject-btn" + ] + } + ], + [], + {} + ], + [ + 1, + "Drupal", + 2, + "", + 22, + [], + [ + { + "e": 336 + } + ], + [ + { + "v": 336 + } + ], + [ + { + "k": 337 + } + ], + [], + {} + ], + [ + 1, + "dunelm.com", + 2, + "", + 22, + [ + 342 + ], + [ + { + "e": 343 + } + ], + [ + { + "v": 343 + } + ], + [ + { + "k": 344 + }, + { + "k": 345 + } + ], + [ + { + "cc": 346 + }, + { + "cc": 347 + } + ], + {} + ], + [ + 1, + "Ensighten ensModal", + 2, + "", + 22, + [ + 355 + ], + [ + { + "e": 355 + }, + { + "v": 356 + } + ], + [ + { + "v": 356 + } + ], + [ + { + "wait": 500 + }, + { + "v": 356 + }, + { + "all": true, + "c": 357 + }, + { + "c": 358 + } + ], + [], + {} + ], + [ + 1, + "Ensighten ensNotifyBanner", + 2, + "", + 22, + [ + 359 + ], + [ + { + "e": 359 + } + ], + [ + { + "v": 360 + } + ], + [ + { + "wait": 500 + }, + { + "v": 360 + }, + { + "timeout": 2000, + "c": 361 + } + ], + [], + {} + ], + [ + 1, + "etsy", + 2, + "", + 22, + [ + 365, + 366 + ], + [ + { + "e": 365 + } + ], + [ + { + "v": 365 + } + ], + [ + { + "k": 367 + }, + { + "timeout": 3000, + "wv": 368 + }, + { + "wait": 1000 + }, + { + "eval": "EVAL_ETSY_0" + }, + { + "eval": "EVAL_ETSY_1" + } + ], + [], + {} + ], + [ + 1, + "EU Cookie Law", + 1, + "", + 22, + [ + 372 + ], + [ + { + "e": 373 + } + ], + [ + { + "wait": 500 + }, + { + "v": 373 + } + ], + [ + { + "h": 373 + } + ], + [ + { + "negated": true, + "cc": 374 + } + ], + {} + ], + [ + 1, + "eu-cookie-compliance-banner", + 2, + "", + 22, + [], + [ + { + "e": 369 + } + ], + [ + { + "e": 369 + } + ], + [ + { + "k": 370 + } + ], + [ + { + "negated": true, + "cc": 371 + } + ], + {} + ], + [ + 1, + "EZoic", + 2, + "", + 22, + [ + 378 + ], + [ + { + "e": 378 + } + ], + [ + { + "v": 378 + } + ], + [ + { + "wait": 500 + }, + { + "k": 379 + }, + { + "w": 380 + }, + { + "all": true, + "k": 381 + }, + { + "k": 382 + } + ], + [ + { + "cc": 383 + } + ], + {} + ], + [ + 1, + "fastcmp", + 0, + "", + 22, + [ + 386 + ], + [ + { + "e": 387 + } + ], + [ + { + "v": 387 + } + ], + [ + { + "waitForThenClick": [ + "iframe#fast-cmp-iframe", + ".fast-cmp-home-refuse button" + ] + } + ], + [ + { + "cc": 388 + } + ], + {} + ], + [ + 1, + "fedex", + 0, + "", + 22, + [ + 389 + ], + [ + { + "e": 389 + } + ], + [ + { + "v": 390 + } + ], + [ + { + "c": 391 + } + ], + [ + { + "cc": 392 + } + ], + {} + ], + [ + 1, + "fides", + 2, + "", + 22, + [ + 393 + ], + [ + { + "e": 394 + } + ], + [ + { + "v": 394 + }, + { + "eval": "EVAL_FIDES_DETECT_POPUP" + } + ], + [ + { + "w": 395 + }, + { + "if": { + "v": 396 + }, + "then": [ + { + "k": 396 + } + ], + "else": [ + { + "k": 397 + }, + { + "c": 398 + } + ] + } + ], + [], + {} + ], + [ + 1, + "finsweet", + 0, + "", + 22, + [ + 400 + ], + [ + { + "e": 400 + } + ], + [ + { + "v": 401 + } + ], + [ + { + "wait": 500 + }, + { + "if": { + "e": 402 + }, + "then": [ + { + "k": 402 + } + ], + "else": [ + { + "h": 400 + } + ] + } + ], + [], + {} + ], + [ + 1, + "funding-choices", + 2, + "", + 22, + [ + 403 + ], + [ + { + "e": 404 + } + ], + [ + { + "e": 405 + } + ], + [ + { + "k": 406 + }, + { + "all": true, + "optional": true, + "k": 407 + }, + { + "optional": true, + "k": 408 + } + ], + [], + {} + ], + [ + 1, + "gdpr-legal-cookie", + 2, + "", + 22, + [ + 409 + ], + [ + { + "any": [ + { + "eval": "EVAL_GDPR_LEGAL_COOKIE_DETECT_CMP" + }, + { + "e": 410 + } + ] + } + ], + [ + { + "check": "any", + "v": 411 + } + ], + [ + { + "c": 412 + } + ], + [ + { + "eval": "EVAL_GDPR_LEGAL_COOKIE_TEST" + } + ], + {} + ], + [ + 1, + "geni.com", + 1, + "", + 22, + [ + 414 + ], + [ + { + "e": 415 + } + ], + [ + { + "v": 415 + } + ], + [ + { + "h": 414 + } + ], + [], + {} + ], + [ + 1, + "google-consent-standalone", + 2, + "", + 22, + [], + [ + { + "e": 419 + }, + { + "e": 420 + } + ], + [ + { + "v": 419 + } + ], + [ + { + "c": 421 + } + ], + [], + {} + ], + [ + 1, + "google-cookiebar", + 0, + "", + 22, + [ + 422 + ], + [ + { + "e": 422 + } + ], + [ + { + "v": 422 + } + ], + [ + { + "if": { + "e": 423 + }, + "then": [ + { + "k": 423 + } + ], + "else": [ + { + "h": 422 + } + ] + } + ], + [], + {} + ], + [ + 1, + "google.com", + 2, + "", + 22, + [ + 424 + ], + [ + { + "e": 424 + }, + { + "e": 425 + } + ], + [ + { + "v": 426 + } + ], + [ + { + "c": 426 + } + ], + [ + { + "cc": 427 + } + ], + {} + ], + [ + 1, + "gov.uk", + 2, + "", + 22, + [], + [ + { + "e": 428 + } + ], + [ + { + "e": 429 + } + ], + [ + { + "wait": 300 + }, + { + "if": { + "visible": [ + ".govuk-cookie-banner__message", + "xpath///button[contains(., 'Reject')] | //a[contains(., 'Reject')] | //input[contains(@value, 'Reject')] | //button[contains(., 'do not use analytics cookies')]" + ] + }, + "then": [ + { + "click": [ + ".govuk-cookie-banner__message", + "xpath///button[contains(., 'Reject')] | //a[contains(., 'Reject')] | //input[contains(@value, 'Reject')] | //button[contains(., 'do not use analytics cookies')]" + ] + } + ] + }, + { + "waitForVisible": [ + ".govuk-cookie-banner__message", + "xpath///button[contains(., 'Hide')] | //a[contains(., 'Hide')] | //input[contains(@value, 'Hide')]" + ] + }, + { + "click": [ + ".govuk-cookie-banner__message", + "xpath///button[contains(., 'Hide')] | //a[contains(., 'Hide')] | //input[contains(@value, 'Hide')]" + ] + } + ], + [], + {} + ], + [ + 1, + "gravito", + 2, + "", + 22, + [ + 430 + ], + [ + { + "e": 430 + } + ], + [ + { + "v": 430 + } + ], + [ + { + "c": 431 + }, + { + "w": 432 + }, + { + "w": 433 + }, + { + "all": true, + "optional": true, + "k": 434 + }, + { + "c": 432 + } + ], + [ + { + "cc": 435 + } + ], + {} + ], + [ + 1, + "healthline-media", + 2, + "", + 22, + [ + 440 + ], + [ + { + "e": 441 + } + ], + [ + { + "e": 441 + } + ], + [ + { + "if": { + "e": 442 + }, + "then": [ + { + "k": 442 + } + ], + "else": [ + { + "wv": 443 + }, + { + "k": 444 + } + ] + } + ], + [], + {} + ], + [ + 1, + "hema", + 2, + "", + 22, + [ + 128 + ], + [ + { + "v": 445 + } + ], + [ + { + "v": 445 + } + ], + [ + { + "c": 446 + } + ], + [ + { + "cc": 447 + } + ], + {} + ], + [ + 1, + "hl.co.uk", + 2, + "", + 22, + [ + 450, + 451 + ], + [ + { + "e": 451 + } + ], + [ + { + "e": 451 + } + ], + [ + { + "k": 452 + }, + { + "h": 453 + }, + { + "w": 454 + }, + { + "optional": true, + "k": 455 + }, + { + "w": 456 + }, + { + "optional": true, + "k": 457 + }, + { + "k": 458 + } + ], + [], + {} + ], + [ + 1, + "holidaymedia", + 2, + "", + 22, + [ + 459 + ], + [ + { + "e": 459 + } + ], + [ + { + "v": 459 + } + ], + [ + { + "timeout": 2000, + "c": 460 + } + ], + [], + {} + ], + [ + 1, + "hu-manity", + 2, + "", + 22, + [ + 461 + ], + [ + { + "e": 462 + } + ], + [ + { + "v": 462 + } + ], + [ + { + "c": 463 + } + ], + [], + {} + ], + [ + 1, + "hubspot", + 2, + "", + 22, + [], + [ + { + "e": 464 + } + ], + [ + { + "v": 464 + } + ], + [ + { + "k": 465 + } + ], + [], + {} + ], + [ + 1, + "inmobi", + 2, + "", + 22, + [ + 470 + ], + [ + { + "e": 471 + } + ], + [ + { + "v": 471 + } + ], + [ + { + "c": 472 + } + ], + [ + { + "cc": 473 + } + ], + {} + ], + [ + 1, + "ionos.de", + 2, + "", + 22, + [ + 476, + 477 + ], + [ + { + "e": 477 + } + ], + [ + { + "v": 477 + } + ], + [ + { + "k": 478 + }, + { + "k": 479 + } + ], + [], + {} + ], + [ + 1, + "iubenda", + 2, + "", + 22, + [ + 481 + ], + [ + { + "e": 481 + } + ], + [ + { + "v": 482 + } + ], + [ + { + "if": { + "e": 519 + }, + "then": [ + { + "k": 519 + } + ], + "else": [ + { + "c": 483 + }, + { + "c": 520 + }, + { + "c": 484 + } + ] + } + ], + [ + { + "eval": "EVAL_IUBENDA_1" + } + ], + {} + ], + [ + 1, + "iWink", + 2, + "", + 22, + [ + 485 + ], + [ + { + "e": 485 + } + ], + [ + { + "v": 485 + } + ], + [ + { + "c": 486 + } + ], + [ + { + "cc": 487 + } + ], + {} + ], + [ + 1, + "jetpack-eu-cookie-law", + 1, + "", + 22, + [ + 492 + ], + [ + { + "e": 492 + } + ], + [ + { + "v": 492 + } + ], + [ + { + "h": 492 + } + ], + [], + {} + ], + [ + 1, + "johnlewis.com", + 2, + "", + 22, + [ + 493 + ], + [ + { + "e": 493 + } + ], + [ + { + "e": 493 + } + ], + [ + { + "k": 494 + }, + { + "wait": 500 + }, + { + "all": true, + "optional": true, + "k": 495 + }, + { + "k": 496 + } + ], + [], + {} + ], + [ + 1, + "jquery.cookieBar", + 1, + "", + 22, + [ + 497 + ], + [ + { + "e": 498 + } + ], + [ + { + "check": "any", + "v": 498 + } + ], + [ + { + "h": 497 + } + ], + [ + { + "check": "none", + "v": 498 + }, + { + "negated": true, + "cc": 499 + } + ], + {} + ], + [ + 1, + "justwatch.com", + 2, + "", + 22, + [ + 500 + ], + [ + { + "e": 501 + } + ], + [ + { + "v": 501 + } + ], + [ + { + "k": 502 + }, + { + "c": 503 + }, + { + "c": 504 + }, + { + "all": true, + "optional": true, + "k": 505 + }, + { + "wv": 506 + }, + { + "k": 506 + } + ], + [], + {} + ], + [ + 1, + "kconsent", + 0, + "", + 10, + [ + 507 + ], + [ + { + "e": 508 + } + ], + [ + { + "v": 509 + } + ], + [ + { + "c": 510 + } + ], + [], + {} + ], + [ + 1, + "ketch", + 2, + "", + 10, + [ + 511 + ], + [ + { + "e": 511 + } + ], + [ + { + "v": 511 + } + ], + [ + { + "if": { + "e": 512 + }, + "then": [ + { + "c": 513 + } + ] + }, + { + "timeout": 1000, + "optional": true, + "w": 514 + }, + { + "if": { + "e": 514 + }, + "then": [ + { + "c": 515 + }, + { + "k": 516 + } + ] + } + ], + [ + { + "cc": 517 + } + ], + { + "intermediate": false + } + ], + [ + 1, + "lia", + 2, + "", + 22, + [ + 524 + ], + [ + { + "e": 524 + } + ], + [ + { + "e": 525 + }, + { + "v": 524 + } + ], + [ + { + "c": 526 + } + ], + [], + {} + ], + [ + 1, + "lightbox", + 2, + "", + 22, + [ + 527 + ], + [ + { + "e": 528 + } + ], + [ + { + "v": 528 + } + ], + [ + { + "k": 529 + } + ], + [], + {} + ], + [ + 1, + "lineagrafica", + 1, + "", + 22, + [ + 530 + ], + [ + { + "e": 530 + } + ], + [ + { + "e": 530 + } + ], + [ + { + "h": 530 + } + ], + [], + {} + ], + [ + 1, + "linkedin.com", + 2, + "", + 22, + [ + 531 + ], + [ + { + "e": 531 + } + ], + [ + { + "v": 531 + } + ], + [ + { + "wv": 532 + }, + { + "wait": 500 + }, + { + "c": 532 + } + ], + [ + { + "check": "none", + "wv": 531 + } + ], + {} + ], + [ + 1, + "macaron", + 2, + "", + 22, + [ + 533 + ], + [ + { + "e": 533 + } + ], + [ + { + "v": 534 + } + ], + [ + { + "if": { + "e": 535 + }, + "then": [ + { + "k": 535 + } + ], + "else": [ + { + "c": 536 + }, + { + "w": 537 + }, + { + "wv": 538 + }, + { + "all": true, + "optional": true, + "c": 539 + }, + { + "c": 540 + } + ] + } + ], + [ + { + "cc": 541 + } + ], + {} + ], + [ + 1, + "mediamarkt.de", + 2, + "", + 22, + [ + 544, + 545 + ], + [ + { + "e": 546 + } + ], + [ + { + "e": 546 + } + ], + [ + { + "k": 547 + } + ], + [], + {} + ], + [ + 1, + "Mediavine", + 2, + "", + 22, + [ + 548 + ], + [ + { + "e": 548 + } + ], + [ + { + "wait": 500 + }, + { + "v": 548 + } + ], + [ + { + "c": 549 + }, + { + "w": 550 + }, + { + "eval": "EVAL_MEDIAVINE_0", + "optional": true + }, + { + "k": 551 + } + ], + [], + {} + ], + [ + 1, + "microsoft.com", + 2, + "", + 22, + [ + 553 + ], + [ + { + "e": 553 + } + ], + [ + { + "e": 553 + } + ], + [ + { + "eval": "EVAL_MICROSOFT_0" + } + ], + [ + { + "eval": "EVAL_MICROSOFT_2" + } + ], + {} + ], + [ + 1, + "moneysavingexpert.com", + 2, + "", + 22, + [], + [ + { + "e": 556 + } + ], + [ + { + "v": 556 + } + ], + [ + { + "k": 557 + }, + { + "k": 558 + } + ], + [], + {} + ], + [ + 1, + "Moove", + 2, + "", + 22, + [ + 564 + ], + [ + { + "e": 564 + } + ], + [ + { + "v": 565 + } + ], + [ + { + "if": { + "e": 576 + }, + "then": [ + { + "k": 576 + } + ], + "else": [ + { + "if": { + "e": 566 + }, + "then": [ + { + "k": 566 + }, + { + "wv": 567 + }, + { + "eval": "EVAL_MOOVE_0" + }, + { + "k": 568 + } + ], + "else": [ + { + "h": 564 + } + ] + } + ] + } + ], + [ + { + "check": "none", + "v": 564 + } + ], + {} + ], + [ + 1, + "national-lottery.co.uk", + 2, + "", + 22, + [], + [ + { + "e": 569 + } + ], + [ + { + "check": "any", + "v": 569 + } + ], + [ + { + "k": 570 + }, + { + "k": 571 + }, + { + "k": 572 + } + ], + [], + {} + ], + [ + 1, + "nhs.uk", + 2, + "", + 22, + [ + 582 + ], + [ + { + "e": 582 + } + ], + [ + { + "e": 582 + } + ], + [ + { + "k": 583 + } + ], + [], + {} + ], + [ + 1, + "obi.de", + 2, + "", + 22, + [ + 592 + ], + [ + { + "e": 593 + } + ], + [ + { + "v": 593 + } + ], + [ + { + "k": 594 + } + ], + [], + {} + ], + [ + 1, + "om", + 2, + "", + 22, + [ + 601 + ], + [ + { + "e": 602 + } + ], + [ + { + "e": 602 + } + ], + [ + { + "if": { + "e": 603 + }, + "then": [ + { + "c": 603 + } + ], + "else": [ + { + "all": true, + "optional": true, + "k": 604 + }, + { + "c": 605 + } + ] + } + ], + [], + {} + ], + [ + 1, + "openli", + 2, + "", + 22, + [ + 614 + ], + [ + { + "e": 614 + } + ], + [ + { + "check": "any", + "v": 615 + } + ], + [ + { + "c": 616 + } + ], + [], + {} + ], + [ + 1, + "osano", + 2, + "", + 22, + [ + 623 + ], + [ + { + "e": 624 + } + ], + [ + { + "eval": "EVAL_OSANO_DETECT" + }, + { + "v": 625 + } + ], + [ + { + "if": { + "e": 626 + }, + "then": [ + { + "k": 626 + } + ], + "else": [ + { + "h": 623 + } + ] + } + ], + [], + {} + ], + [ + 1, + "otto.de", + 2, + "", + 22, + [ + 627 + ], + [ + { + "e": 627 + } + ], + [ + { + "v": 628 + } + ], + [ + { + "k": 629 + } + ], + [], + {} + ], + [ + 1, + "overleaf", + 2, + "", + 22, + [ + 636 + ], + [ + { + "e": 637 + } + ], + [ + { + "v": 637 + } + ], + [ + { + "c": 638 + } + ], + [ + { + "cc": 639 + } + ], + {} + ], + [ + 1, + "pabcogypsum", + 2, + "", + 22, + [ + 640 + ], + [ + { + "e": 641 + } + ], + [ + { + "v": 641 + } + ], + [ + { + "c": 642 + } + ], + [], + {} + ], + [ + 1, + "pandectes", + 2, + "", + 22, + [ + 643 + ], + [ + { + "e": 643 + } + ], + [ + { + "v": 643 + } + ], + [ + { + "if": { + "v": 644 + }, + "then": [ + { + "k": 644 + } + ], + "else": [ + { + "k": 645 + }, + { + "c": 646 + }, + { + "k": 647 + } + ] + } + ], + [ + { + "wait": 500 + }, + { + "eval": "EVAL_PANDECTES_TEST" + } + ], + {} + ], + [ + 1, + "paypal-us", + 2, + "", + 22, + [ + 649 + ], + [ + { + "e": 650 + } + ], + [ + { + "v": 650 + } + ], + [ + { + "if": { + "e": 651 + }, + "then": [ + { + "k": 651 + } + ], + "else": [ + { + "if": { + "e": 652 + }, + "then": [ + { + "k": 652 + } + ], + "else": [ + { + "wv": 653 + }, + { + "all": true, + "optional": true, + "k": 654 + }, + { + "k": 655 + } + ] + } + ] + } + ], + [], + {} + ], + [ + 1, + "paypal.com", + 2, + "", + 22, + [ + 656 + ], + [ + { + "e": 656 + } + ], + [ + { + "v": 657 + } + ], + [ + { + "c": 651 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 659 + } + ], + {} + ], + [ + 1, + "pmc", + 1, + "", + 22, + [ + 668 + ], + [ + { + "e": 668 + } + ], + [ + { + "v": 668 + } + ], + [ + { + "h": 668 + } + ], + [], + {} + ], + [ + 1, + "pornhat", + 1, + "", + 22, + [ + 669 + ], + [ + { + "v": 670 + } + ], + [ + { + "v": 670 + } + ], + [ + { + "h": 669 + } + ], + [], + {} + ], + [ + 1, + "pride.com", + 1, + "", + 22, + [ + 683 + ], + [ + { + "e": 684 + } + ], + [ + { + "v": 684 + } + ], + [ + { + "h": 683 + } + ], + [], + {} + ], + [ + 1, + "PrimeBox CookieBar", + 2, + "", + 22, + [ + 685 + ], + [ + { + "e": 686 + } + ], + [ + { + "check": "any", + "v": 686 + } + ], + [ + { + "optional": true, + "k": 687 + }, + { + "h": 685 + } + ], + [ + { + "negated": true, + "cc": 688 + } + ], + {} + ], + [ + 1, + "privado", + 0, + "", + 10, + [ + 375 + ], + [ + { + "e": 698 + } + ], + [ + { + "v": 698 + } + ], + [ + { + "if": { + "e": 0 + }, + "then": [ + { + "c": 0 + } + ], + "else": [ + { + "c": 1 + }, + { + "wv": 2 + }, + { + "c": 2 + } + ] + } + ], + [], + {} + ], + [ + 1, + "pubtech", + 2, + "", + 22, + [ + 3 + ], + [ + { + "e": 3 + } + ], + [ + { + "v": 13 + } + ], + [ + { + "k": 14 + } + ], + [ + { + "eval": "EVAL_PUBTECH_0" + } + ], + {} + ], + [ + 1, + "quantcast", + 2, + "", + 22, + [ + 15 + ], + [ + { + "e": 16 + } + ], + [ + { + "v": 17 + } + ], + [ + { + "if": { + "e": 66 + }, + "then": [ + { + "k": 66 + } + ], + "else": [ + { + "timeout": 2000, + "w": 24 + }, + { + "if": { + "e": 25 + }, + "then": [ + { + "k": 25 + } + ], + "else": [ + { + "k": 26 + }, + { + "wv": 32 + }, + { + "all": true, + "optional": true, + "k": 33 + }, + { + "click": [ + ".qc-cmp2-main", + "xpath///button[contains(., 'REJECT ALL') or contains(., 'ALLE VERWERPEN') or contains(., 'ΑΠΟΡΡΙΠΤΩ ΤΑ ΠΑΝΤΑ') or contains(., 'RESPINGERE TOTALĂ') or contains(., 'ALLE ABLEHNEN') or contains(., 'ODRZUCENIE') or contains(., 'BLOQUEAR TODO') or contains(., 'REJEITAR TODOS') or contains(., 'RIFIUTA TUTTO') or contains(., 'TOUT REFUSER') or contains(., 'ОТКЛОНИТЬ ВСЕХ')]" + ], + "optional": true + }, + { + "wait": 500 + }, + { + "if": { + "e": 34 + }, + "then": [ + { + "k": 34 + } + ], + "else": [ + { + "waitForThenClick": [ + ".qc-cmp2-main", + "xpath///button[contains(.,'SAVE & EXIT') or contains(.,'SALVA ED ESCI') or contains(.,'GUARDAR Y SALIR') or contains(.,'SPEICHERN & VERLASSEN')" + ], + "timeout": 5000 + } + ] + } + ] + } + ] + } + ], + [], + {} + ], + [ + 1, + "real-cookie-banner", + 0, + "", + 10, + [ + 226 + ], + [ + { + "e": 227 + } + ], + [ + { + "v": 227 + } + ], + [ + { + "waitForThenClick": [ + "div[consent-skip-blocker=\"1\"][id][data-bg] > dialog > div > div > div > div > div > a[role=button]:not([id])", + "xpath///span[contains(., ' ohne ') or contains(., 'without')]" + ] + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 227 + } + ], + {} + ], + [ + 1, + "ring", + 2, + "", + 22, + [], + [ + { + "e": 35 + } + ], + [ + { + "v": 35 + } + ], + [ + { + "c": 36 + }, + { + "wv": 37 + }, + { + "all": true, + "optional": true, + "k": 38 + }, + { + "c": 39 + } + ], + [], + {} + ], + [ + 1, + "sandhills", + 1, + "", + 22, + [ + 40 + ], + [ + { + "e": 41 + } + ], + [ + { + "v": 41 + } + ], + [ + { + "h": 40 + } + ], + [], + {} + ], + [ + 1, + "sas", + 2, + "", + 22, + [ + 42 + ], + [ + { + "e": 42 + } + ], + [ + { + "v": 42 + } + ], + [ + { + "c": 43 + } + ], + [ + { + "cc": 44 + } + ], + {} + ], + [ + 1, + "shopify", + 0, + "", + 22, + [ + 45 + ], + [ + { + "e": 45 + } + ], + [ + { + "v": 45 + } + ], + [ + { + "c": 64 + } + ], + [ + { + "eval": "EVAL_SHOPIFY_TEST" + } + ], + {} + ], + [ + 1, + "sibbo", + 2, + "", + 22, + [ + 65 + ], + [ + { + "e": 65 + } + ], + [ + { + "v": 92 + } + ], + [ + { + "k": 92 + } + ], + [], + {} + ], + [ + 1, + "Sirdata", + 0, + "", + 22, + [ + 93 + ], + [ + { + "e": 93 + } + ], + [ + { + "v": 93 + } + ], + [ + { + "waitForThenClick": [ + "#sd-cmp", + "xpath///span[contains(., 'Do not accept') or contains(., 'Acceptera inte') or contains(., 'No aceptar') or contains(., 'Ikke acceptere') or contains(., 'Nicht akzeptieren') or contains(., 'Не приемам') or contains(., 'Να μην γίνει αποδοχή') or contains(., 'Niet accepteren') or contains(., 'Nepřijímat') or contains(., 'Nie akceptuj') or contains(., 'Nu acceptați') or contains(., 'Não aceitar') or contains(., 'Continuer sans accepter') or contains(., 'Non accettare') or contains(., 'Nem fogad el')]" + ] + } + ], + [], + {} + ], + [ + 1, + "snigel", + 2, + "", + 22, + [], + [ + { + "e": 94 + } + ], + [ + { + "v": 94 + } + ], + [ + { + "k": 95 + }, + { + "k": 135 + } + ], + [ + { + "cc": 136 + } + ], + {} + ], + [ + 1, + "squiz", + 0, + "", + 10, + [ + 375 + ], + [ + { + "e": 137 + } + ], + [ + { + "v": 137 + } + ], + [ + { + "c": 138 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 139 + } + ], + {} + ], + [ + 1, + "steampowered.com", + 2, + "", + 22, + [], + [ + { + "e": 140 + }, + { + "v": 140 + } + ], + [ + { + "v": 140 + } + ], + [ + { + "k": 141 + } + ], + [ + { + "wait": 1000 + }, + { + "eval": "EVAL_STEAMPOWERED_0" + } + ], + {} + ], + [ + 1, + "stripchat.com", + 0, + "", + 22, + [ + 142 + ], + [ + { + "e": 143 + } + ], + [ + { + "v": 143 + } + ], + [ + { + "c": 144 + }, + { + "c": 186 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 187 + } + ], + {} + ], + [ + 1, + "substack", + 0, + "", + 12, + [], + [ + { + "e": 522 + } + ], + [ + { + "v": 522 + } + ], + [ + { + "waitForThenClick": [ + ".pencraft", + "xpath///button[contains(., 'Only Necessary') or contains(., 'Reject')]" + ] + } + ], + [ + { + "cc": 658 + } + ], + {} + ], + [ + 1, + "summitracing", + 1, + "", + 10, + [ + 188 + ], + [ + { + "e": 189 + } + ], + [ + { + "v": 189 + } + ], + [ + { + "h": 188 + } + ], + [], + {} + ], + [ + 1, + "synology", + 0, + "", + 22, + [ + 190 + ], + [ + { + "e": 190 + } + ], + [ + { + "v": 190 + } + ], + [ + { + "c": 287 + }, + { + "wv": 288 + }, + { + "all": true, + "optional": true, + "k": 299 + }, + { + "c": 300 + } + ], + [ + { + "cc": 301 + }, + { + "cc": 302 + } + ], + {} + ], + [ + 1, + "takealot.com", + 1, + "", + 22, + [ + 303 + ], + [ + { + "e": 309 + } + ], + [ + { + "e": 309 + } + ], + [ + { + "h": 303 + }, + { + "if": { + "e": 310 + }, + "then": [ + { + "eval": "EVAL_TAKEALOT_0" + } + ], + "else": [] + } + ], + [], + {} + ], + [ + 1, + "tarteaucitron deny", + 2, + "", + 22, + [ + 311 + ], + [ + { + "e": 311 + } + ], + [ + { + "v": 312 + } + ], + [ + { + "k": 312 + } + ], + [ + { + "eval": "EVAL_TARTEAUCITRON_2" + } + ], + {} + ], + [ + 1, + "tarteaucitron.js", + 2, + "", + 22, + [ + 311 + ], + [ + { + "e": 311 + } + ], + [ + { + "v": 313 + }, + { + "negated": true, + "e": 312 + } + ], + [ + { + "if": { + "e": 314 + }, + "then": [ + { + "all": true, + "optional": true, + "k": 117 + }, + { + "k": 313 + } + ], + "else": [ + { + "k": 286 + }, + { + "c": 467 + }, + { + "k": 468 + } + ] + } + ], + [ + { + "eval": "EVAL_TARTEAUCITRON_2" + } + ], + {} + ], + [ + 1, + "taunton", + 2, + "", + 22, + [ + 315 + ], + [ + { + "e": 315 + } + ], + [ + { + "e": 316 + } + ], + [ + { + "optional": true, + "all": true, + "k": 317 + }, + { + "k": 318 + } + ], + [ + { + "cc": 319 + } + ], + {} + ], + [ + 1, + "tccCmpAlert", + 2, + "", + 22, + [ + 320 + ], + [ + { + "e": 320 + } + ], + [ + { + "v": 320 + } + ], + [ + { + "c": 332 + } + ], + [], + {} + ], + [ + 1, + "Tealium", + 2, + "", + 22, + [ + 333 + ], + [ + { + "e": 334 + }, + { + "eval": "EVAL_TEALIUM_0" + } + ], + [ + { + "check": "any", + "v": 334 + } + ], + [ + { + "eval": "EVAL_TEALIUM_1" + }, + { + "eval": "EVAL_TEALIUM_DONOTSELL" + }, + { + "h": 348 + }, + { + "timeout": 1000, + "optional": true, + "c": 349 + } + ], + [ + { + "eval": "EVAL_TEALIUM_3" + }, + { + "eval": "EVAL_TEALIUM_DONOTSELL_CHECK" + }, + { + "check": "none", + "v": 350 + } + ], + {} + ], + [ + 1, + "Termly", + 2, + "", + 22, + [ + 351 + ], + [ + { + "e": 351 + } + ], + [ + { + "v": 352 + } + ], + [ + { + "if": { + "e": 353 + }, + "then": [ + { + "k": 353 + } + ], + "else": [ + { + "c": 354 + }, + { + "timeout": 700, + "w": 362 + }, + { + "if": { + "e": 362 + }, + "then": [ + { + "k": 362 + } + ], + "else": [ + { + "all": true, + "c": 363 + }, + { + "c": 364 + } + ] + } + ] + } + ], + [], + {} + ], + [ + 1, + "termsfeed", + 2, + "", + 22, + [ + 376 + ], + [ + { + "e": 376 + } + ], + [ + { + "v": 376 + } + ], + [ + { + "if": { + "e": 377 + }, + "then": [ + { + "c": 377 + } + ], + "else": [ + { + "c": 384 + }, + { + "w": 399 + }, + { + "all": true, + "optional": true, + "k": 413 + }, + { + "k": 416 + } + ] + } + ], + [], + {} + ], + [ + 1, + "termsfeed3", + 2, + "", + 22, + [ + 417 + ], + [ + { + "e": 418 + } + ], + [ + { + "v": 418 + } + ], + [ + { + "if": { + "e": 436 + }, + "then": [ + { + "k": 436 + }, + { + "wv": 437 + }, + { + "c": 437 + } + ], + "else": [ + { + "h": 417 + } + ] + } + ], + [], + {} + ], + [ + 1, + "Test page CMP", + 2, + "", + 22, + [ + 438 + ], + [ + { + "e": 439 + } + ], + [ + { + "v": 439 + } + ], + [ + { + "w": 438 + }, + { + "eval": "EVAL_TESTCMP_STEP" + }, + { + "k": 438 + } + ], + [ + { + "eval": "EVAL_TESTCMP_0" + } + ], + {} + ], + [ + 1, + "Test page cosmetic CMP", + 1, + "", + 22, + [ + 448 + ], + [ + { + "e": 449 + } + ], + [ + { + "v": 449 + } + ], + [ + { + "h": 449 + } + ], + [ + { + "wait": 500 + }, + { + "eval": "EVAL_TESTCMP_COSMETIC_0" + } + ], + {} + ], + [ + 1, + "thalia.de", + 2, + "", + 22, + [ + 466 + ], + [ + { + "e": 469 + } + ], + [ + { + "v": 466 + } + ], + [ + { + "k": 474 + } + ], + [], + {} + ], + [ + 1, + "thefreedictionary.com", + 2, + "", + 22, + [ + 475 + ], + [ + { + "e": 475 + } + ], + [ + { + "v": 475 + } + ], + [ + { + "eval": "EVAL_THEFREEDICTIONARY_0" + } + ], + [], + {} + ], + [ + 1, + "toyota", + 0, + "", + 10, + [ + 480 + ], + [ + { + "e": 488 + } + ], + [ + { + "v": 488 + } + ], + [ + { + "c": 489 + } + ], + [ + { + "cc": 490 + } + ], + {} + ], + [ + 1, + "tplink", + 0, + "", + 22, + [ + 491 + ], + [ + { + "e": 491 + } + ], + [ + { + "v": 518 + } + ], + [ + { + "all": true, + "optional": true, + "k": 521 + }, + { + "c": 523 + } + ], + [ + { + "cc": 542 + } + ], + {} + ], + [ + 1, + "trader-joes-com", + 1, + "", + 22, + [ + 543 + ], + [ + { + "e": 543 + } + ], + [ + { + "v": 543 + } + ], + [ + { + "h": 543 + } + ], + [], + {} + ], + [ + 1, + "transcend", + 1, + "", + 22, + [ + 552 + ], + [ + { + "e": 552 + } + ], + [ + { + "v": 552 + } + ], + [ + { + "h": 552 + } + ], + [], + {} + ], + [ + 1, + "tropicfeel-com", + 2, + "", + 22, + [ + 554 + ], + [ + { + "e": 554 + } + ], + [ + { + "check": "any", + "v": 555 + } + ], + [ + { + "k": 559 + }, + { + "w": 560 + }, + { + "all": true, + "k": 561 + }, + { + "k": 562 + } + ], + [], + {} + ], + [ + 1, + "truyo", + 2, + "", + 22, + [ + 563 + ], + [ + { + "e": 573 + } + ], + [ + { + "v": 563 + } + ], + [ + { + "k": 574 + } + ], + [], + {} + ], + [ + 1, + "twcc", + 0, + "", + 10, + [ + 575 + ], + [ + { + "e": 577 + } + ], + [ + { + "v": 577 + } + ], + [ + { + "c": 578 + } + ], + [ + { + "cc": 579 + } + ], + {} + ], + [ + 1, + "u12-data-protection-notice", + 2, + "", + 22, + [ + 580 + ], + [ + { + "e": 580 + } + ], + [ + { + "v": 581 + } + ], + [ + { + "c": 584 + } + ], + [], + {} + ], + [ + 1, + "ubuntu.com", + 2, + "", + 22, + [ + 585 + ], + [ + { + "any": [ + { + "e": 586 + }, + { + "e": 587 + } + ] + } + ], + [ + { + "any": [ + { + "v": 588 + }, + { + "v": 587 + } + ] + } + ], + [ + { + "any": [ + { + "c": 589 + }, + { + "c": 590 + } + ] + }, + { + "optional": true, + "all": true, + "timeout": 500, + "c": 591 + }, + { + "any": [ + { + "c": 595 + }, + { + "c": 596 + } + ] + } + ], + [ + { + "cc": 597 + } + ], + {} + ], + [ + 1, + "UK Cookie Consent", + 1, + "", + 22, + [ + 598 + ], + [ + { + "e": 598 + } + ], + [ + { + "e": 599 + } + ], + [ + { + "h": 598 + } + ], + [ + { + "negated": true, + "cc": 600 + } + ], + {} + ], + [ + 1, + "usercentrics-api", + 2, + "", + 22, + [], + [ + { + "e": 606 + } + ], + [ + { + "eval": "EVAL_USERCENTRICS_API_0" + }, + { + "if": { + "e": 607 + }, + "then": [ + { + "timeout": 2000, + "wv": 607 + } + ], + "else": [ + { + "exists": [ + "#usercentrics-root", + "[data-testid=uc-container]" + ] + }, + { + "timeout": 2000, + "wv": 608 + } + ] + } + ], + [ + { + "eval": "EVAL_USERCENTRICS_API_1" + }, + { + "eval": "EVAL_USERCENTRICS_API_2" + } + ], + [ + { + "eval": "EVAL_USERCENTRICS_API_6" + } + ], + {} + ], + [ + 1, + "usercentrics-button", + 2, + "", + 22, + [], + [ + { + "e": 609 + } + ], + [ + { + "v": 610 + } + ], + [ + { + "k": 611 + } + ], + [ + { + "eval": "EVAL_USERCENTRICS_BUTTON_0" + } + ], + {} + ], + [ + 1, + "waitrose.com", + 2, + "", + 22, + [ + 612, + 613, + 617 + ], + [ + { + "e": 613 + } + ], + [ + { + "v": 613 + } + ], + [ + { + "k": 618 + }, + { + "wait": 200 + }, + { + "eval": "EVAL_WAITROSE_0" + }, + { + "k": 619 + } + ], + [ + { + "cc": 620 + }, + { + "cc": 621 + } + ], + {} + ], + [ + 1, + "webflow", + 2, + "", + 22, + [ + 622 + ], + [ + { + "v": 622 + } + ], + [ + { + "v": 622 + }, + { + "v": 630 + } + ], + [ + { + "if": { + "e": 631 + }, + "then": [ + { + "wait": 500 + }, + { + "c": 631 + } + ], + "else": [ + { + "h": 632 + } + ] + } + ], + [ + { + "cc": 633 + } + ], + {} + ], + [ + 1, + "wiki.gg", + 1, + "", + 22, + [ + 634 + ], + [ + { + "e": 634 + } + ], + [ + { + "v": 634 + } + ], + [ + { + "h": 634 + } + ], + [], + {} + ], + [ + 1, + "wix", + 0, + "", + 22, + [], + [ + { + "e": 635 + } + ], + [ + { + "v": 635 + } + ], + [ + { + "if": { + "e": 648 + }, + "then": [ + { + "k": 648 + } + ], + "else": [ + { + "h": 660 + } + ] + } + ], + [], + {} + ], + [ + 1, + "woo-commerce-com", + 2, + "", + 22, + [ + 661 + ], + [ + { + "e": 661 + } + ], + [ + { + "e": 661 + } + ], + [ + { + "k": 662 + }, + { + "all": true, + "c": 69 + }, + { + "k": 663 + } + ], + [], + {} + ], + [ + 1, + "WP Cookie Notice for GDPR", + 2, + "", + 22, + [ + 664 + ], + [ + { + "e": 664 + } + ], + [ + { + "v": 664 + } + ], + [ + { + "c": 665 + } + ], + [ + { + "cc": 666 + } + ], + {} + ], + [ + 1, + "WP DSGVO Tools", + 2, + "", + 22, + [ + 338 + ], + [ + { + "e": 339 + } + ], + [ + { + "check": "any", + "v": 339 + } + ], + [ + { + "c": 340 + } + ], + [ + { + "negated": true, + "cc": 341 + } + ], + {} + ], + [ + 1, + "wpcc", + 1, + "", + 22, + [ + 667 + ], + [ + { + "e": 667 + } + ], + [ + { + "e": 671 + } + ], + [ + { + "h": 667 + } + ], + [], + {} + ], + [ + 1, + "xgroovy", + 1, + "", + 22, + [ + 672 + ], + [ + { + "e": 673 + } + ], + [ + { + "v": 673 + } + ], + [ + { + "h": 672 + } + ], + [], + {} + ], + [ + 1, + "xing.com", + 2, + "", + 22, + [], + [ + { + "e": 674 + } + ], + [ + { + "e": 674 + } + ], + [ + { + "k": 675 + }, + { + "k": 676 + } + ], + [ + { + "cc": 677 + } + ], + {} + ], + [ + 1, + "xnxx-com", + 1, + "", + 22, + [ + 678 + ], + [ + { + "e": 678 + } + ], + [ + { + "v": 678 + } + ], + [ + { + "h": 678 + } + ], + [], + {} + ], + [ + 1, + "youporn.com", + 1, + "", + 22, + [ + 679 + ], + [ + { + "e": 680 + } + ], + [ + { + "e": 679 + } + ], + [ + { + "h": 680 + } + ], + [], + {} + ], + [ + 1, + "youtube-desktop", + 2, + "", + 22, + [ + 681, + 682 + ], + [ + { + "e": 689 + }, + { + "e": 690 + } + ], + [ + { + "v": 689 + } + ], + [ + { + "c": 691 + }, + { + "wait": 500 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 427 + } + ], + {} + ], + [ + 1, + "youtube-mobile", + 2, + "", + 22, + [ + 692 + ], + [ + { + "e": 693 + } + ], + [ + { + "v": 693 + } + ], + [ + { + "c": 694 + }, + { + "wait": 500 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 427 + } + ], + {} + ], + [ + 1, + "zdf", + 2, + "", + 22, + [ + 695 + ], + [ + { + "e": 695 + } + ], + [ + { + "v": 696 + } + ], + [ + { + "c": 697 + } + ], + [], + {} + ], + [ + 1, + "cookiealert", + 2, + "", + 11, + [], + [ + { + "e": 233 + } + ], + [ + { + "v": 234 + } + ], + [ + { + "k": 235 + }, + { + "all": true, + "optional": true, + "k": 236 + }, + { + "k": 237 + }, + { + "eval": "EVAL_COOKIEALERT_0" + } + ], + [ + { + "eval": "EVAL_COOKIEALERT_2" + } + ], + { + "intermediate": false + } + ], + [ + 1, + "auto_AU_fullertonhotels.com_y46_+2", + 0, + "^https?://(www\\.)?fullertonhotels\\.com/|^https?://(www\\.)?theoriginalshotels\\.com/|^https?://(www\\.)?village-hotels\\.co\\.uk/", + 1, + [], + [ + { + "e": 702 + } + ], + [ + { + "v": 702 + } + ], + [ + { + "wait": 500 + }, + { + "c": 702 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 702 + } + ], + {} + ], + [ + 1, + "auto_AU_help.dropbox.com_4ad_+1", + 0, + "^https?://(www\\.)?dropbox\\.com/|^https?://(www\\.)?dropbox\\.com/", + 1, + [], + [ + { + "e": 703 + } + ], + [ + { + "v": 703 + } + ], + [ + { + "wait": 500 + }, + { + "c": 703 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 703 + } + ], + {} + ], + [ + 1, + "auto_CA_coasthotels.com_f8m", + 0, + "^https?://(www\\.)?coasthotels\\.com/", + 1, + [], + [ + { + "e": 704 + } + ], + [ + { + "v": 704 + } + ], + [ + { + "c": 704 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_epihunter.eu_hd4", + 0, + "^https?://(www\\.)?combell\\.com/", + 1, + [], + [ + { + "e": 705 + } + ], + [ + { + "v": 705 + } + ], + [ + { + "wait": 500 + }, + { + "c": 705 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 705 + } + ], + {} + ], + [ + 1, + "auto_CA_natureconservancy.ca_3pp", + 0, + "^https?://(www\\.)?natureconservancy\\.ca/", + 1, + [], + [ + { + "e": 706 + } + ], + [ + { + "v": 706 + } + ], + [ + { + "wait": 500 + }, + { + "c": 706 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 706 + } + ], + {} + ], + [ + 1, + "auto_CA_ontariospca.ca_k32", + 0, + "^https?://(www\\.)?widget-next\\.clym-sdk\\.net/", + 1, + [], + [ + { + "e": 707 + } + ], + [ + { + "v": 707 + } + ], + [ + { + "wait": 500 + }, + { + "c": 707 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 707 + } + ], + {} + ], + [ + 1, + "auto_CA_phoenixnap.com_hrb", + 0, + "^https?://(www\\.)?widget-next\\.clym-sdk\\.net/", + 1, + [], + [ + { + "e": 708 + } + ], + [ + { + "v": 708 + } + ], + [ + { + "wait": 500 + }, + { + "c": 708 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 708 + } + ], + {} + ], + [ + 1, + "auto_CH_phoenixnap.com_lx5", + 0, + "^https?://(www\\.)?widget-next\\.clym-sdk\\.net/", + 1, + [], + [ + { + "e": 709 + } + ], + [ + { + "v": 709 + } + ], + [ + { + "wait": 500 + }, + { + "c": 709 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 709 + } + ], + {} + ], + [ + 1, + "auto_CH_swisscare.com_arx", + 0, + "^https?://(www\\.)?swisscare\\.com/", + 1, + [], + [ + { + "e": 710 + } + ], + [ + { + "v": 710 + } + ], + [ + { + "wait": 500 + }, + { + "c": 710 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 710 + } + ], + {} + ], + [ + 1, + "auto_DE_alfaromeo.de_gvg_+2", + 0, + "^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/|^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/|^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/", + 1, + [], + [ + { + "e": 711 + } + ], + [ + { + "v": 711 + } + ], + [ + { + "wait": 500 + }, + { + "c": 711 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 711 + } + ], + {} + ], + [ + 1, + "auto_DE_huss-licht-ton.de_jj0", + 0, + "^https?://(www\\.)?huss-licht-ton\\.de/", + 1, + [], + [ + { + "e": 712 + } + ], + [ + { + "v": 712 + } + ], + [ + { + "wait": 500 + }, + { + "c": 712 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 712 + } + ], + {} + ], + [ + 1, + "auto_DE_modellbau-berlinski.de_8vm", + 0, + "^https?://(www\\.)?modellbau-berlinski\\.de/", + 1, + [], + [ + { + "e": 713 + } + ], + [ + { + "v": 713 + } + ], + [ + { + "wait": 500 + }, + { + "c": 713 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 713 + } + ], + {} + ], + [ + 1, + "auto_DE_phase-6.de_jkj", + 0, + "^https?://(www\\.)?phase-6\\.de/", + 1, + [], + [ + { + "e": 714 + } + ], + [ + { + "v": 714 + } + ], + [ + { + "wait": 500 + }, + { + "c": 714 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 714 + } + ], + {} + ], + [ + 1, + "auto_DE_phoenixnap.com_xq7", + 0, + "^https?://(www\\.)?widget-next\\.clym-sdk\\.net/", + 1, + [], + [ + { + "e": 715 + } + ], + [ + { + "v": 715 + } + ], + [ + { + "wait": 500 + }, + { + "c": 715 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 715 + } + ], + {} + ], + [ + 1, + "auto_FR_bnpparibasfortis.be_02b", + 0, + "^https?://(www\\.)?bnpparibasfortis\\.be/", + 1, + [], + [ + { + "e": 716 + } + ], + [ + { + "v": 716 + } + ], + [ + { + "wait": 500 + }, + { + "c": 716 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 716 + } + ], + {} + ], + [ + 1, + "auto_FR_fiat.fr_3fh", + 0, + "^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/", + 1, + [], + [ + { + "e": 717 + } + ], + [ + { + "v": 717 + } + ], + [ + { + "wait": 500 + }, + { + "c": 717 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 717 + } + ], + {} + ], + [ + 1, + "auto_FR_stellantis.com_67q", + 0, + "^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/", + 1, + [], + [ + { + "e": 717 + } + ], + [ + { + "v": 717 + } + ], + [ + { + "wait": 500 + }, + { + "c": 717 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 717 + } + ], + {} + ], + [ + 1, + "auto_GB_alfaromeo.co.uk_0_+1", + 0, + "^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/|^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/", + 1, + [], + [ + { + "e": 718 + } + ], + [ + { + "v": 718 + } + ], + [ + { + "c": 718 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_dropbox.com_0_+1", + 0, + "^https?://(www\\.)?dropbox\\.com/|^https?://(www\\.)?dropbox\\.com/", + 1, + [], + [ + { + "e": 719 + } + ], + [ + { + "v": 719 + } + ], + [ + { + "c": 719 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_fiat.co.uk_cwa_+1", + 0, + "^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/|^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/", + 1, + [], + [ + { + "e": 711 + } + ], + [ + { + "v": 711 + } + ], + [ + { + "wait": 500 + }, + { + "c": 711 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 711 + } + ], + {} + ], + [ + 1, + "auto_GB_investing.thisismoney.co.uk_0", + 0, + "^https?://(www\\.)?thisismoney\\.co\\.uk/", + 1, + [], + [ + { + "e": 720 + } + ], + [ + { + "v": 720 + } + ], + [ + { + "c": 720 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_lse.co.uk_0_+1", + 0, + "^https?://(www\\.)?lse\\.co\\.uk/|^https?://(www\\.)?nigella\\.com/", + 1, + [], + [ + { + "e": 721 + } + ], + [ + { + "v": 721 + } + ], + [ + { + "text": "Decline", + "c": 721 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_vintage-erotica-forum.com_0", + 0, + "^https?://(www\\.)?best\\.aliexpress\\.com/", + 1, + [], + [ + { + "e": 722 + } + ], + [ + { + "v": 722 + } + ], + [ + { + "c": 722 + } + ], + [], + {} + ], + [ + 1, + "auto_NL_fiat.nl_trv_+1", + 0, + "^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/|^https?://(www\\.)?cookielaw\\.emea\\.fcagroup\\.com/", + 1, + [], + [ + { + "e": 717 + } + ], + [ + { + "v": 717 + } + ], + [ + { + "wait": 500 + }, + { + "c": 717 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 717 + } + ], + {} + ], + [ + 1, + "auto_NL_flitsmeister.nl_ws8", + 0, + "^https?://(www\\.)?cookies\\.flitsmeister\\.com/", + 1, + [], + [ + { + "e": 723 + } + ], + [ + { + "v": 723 + } + ], + [ + { + "wait": 500 + }, + { + "c": 723 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 723 + } + ], + {} + ], + [ + 1, + "auto_NL_interpolis.nl_jk9", + 0, + "^https?://(www\\.)?interpolis\\.nl/", + 1, + [], + [ + { + "e": 724 + } + ], + [ + { + "v": 724 + } + ], + [ + { + "wait": 500 + }, + { + "c": 724 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 724 + } + ], + {} + ], + [ + 1, + "auto_US_dropbox.com_0_+1", + 0, + "^https?://(www\\.)?dropbox\\.com/|^https?://(www\\.)?dropbox\\.com/", + 1, + [], + [ + { + "e": 725 + } + ], + [ + { + "v": 725 + } + ], + [ + { + "text": "Decline", + "c": 725 + } + ], + [], + {} + ], + [ + 1, + "coinbase", + 2, + "^https://(www|help)\\.coinbase\\.com", + 11, + [], + [ + { + "e": 726 + } + ], + [ + { + "v": 726 + } + ], + [ + { + "k": 727 + }, + { + "all": true, + "optional": true, + "k": 728 + }, + { + "k": 729 + } + ], + [ + { + "eval": "EVAL_COINBASE_0" + } + ], + { + "intermediate": false + } + ], + [ + 1, + "privacymanager.io", + 2, + "^https://cmp-consent-tool\\.privacymanager\\.io/", + 1, + [ + 730, + 731 + ], + [ + { + "e": 732 + } + ], + [ + { + "v": 732 + } + ], + [ + { + "if": { + "e": 733 + }, + "then": [ + { + "k": 733 + }, + { + "c": 734 + } + ], + "else": [ + { + "c": 735 + }, + { + "w": 736 + }, + { + "w": 737 + }, + { + "all": true, + "optional": true, + "k": 738 + }, + { + "k": 737 + } + ] + } + ], + [], + {} + ], + [ + 1, + "web.de", + 2, + "^https://([a-z]*\\.)?web\\.de/|^https://([a-z]*\\.)?gmx\\.net/", + 1, + [], + [ + { + "e": 739 + }, + { + "e": 740 + } + ], + [ + { + "v": 740 + } + ], + [ + { + "c": 740 + } + ], + [], + {} + ], + [ + 1, + "abc", + 2, + "^https://([a-z0-9-]+\\.)?abc\\.net\\.au/", + 22, + [], + [ + { + "e": 752 + } + ], + [ + { + "v": 753 + } + ], + [ + { + "c": 754 + } + ], + [ + { + "cc": 755 + } + ], + {} + ], + [ + 1, + "activobank.pt", + 2, + "^https://(www\\.)?activobank\\.pt", + 22, + [ + 756 + ], + [ + { + "e": 758 + } + ], + [ + { + "v": 759 + } + ], + [ + { + "c": 760 + } + ], + [], + {} + ], + [ + 1, + "adultfriendfinder", + 2, + "^https://(www\\.)?adultfriendfinder\\.com/", + 22, + [ + 761 + ], + [ + { + "e": 764 + } + ], + [ + { + "v": 764 + } + ], + [ + { + "c": 767 + } + ], + [ + { + "eval": "EVAL_ADULTFRIENDFINDER_TEST" + } + ], + {} + ], + [ + 1, + "ah.nl", + 0, + "^https?://(www\\.)?ah\\.nl/", + 10, + [], + [ + { + "e": 2249 + } + ], + [ + { + "v": 2249 + } + ], + [ + { + "c": 768 + } + ], + [], + {} + ], + [ + 1, + "alaskaair", + 1, + "^https://(www\\.)?alaskaair\\.com/", + 22, + [ + 769 + ], + [ + { + "e": 769 + } + ], + [ + { + "v": 769 + } + ], + [ + { + "h": 769 + } + ], + [], + {} + ], + [ + 1, + "aliexpress", + 2, + "^https://([a-z]*\\.)?aliexpress\\.com/", + 22, + [ + 770 + ], + [ + { + "e": 771 + } + ], + [ + { + "v": 771 + } + ], + [ + { + "if": { + "e": 772 + }, + "then": [ + { + "c": 773 + } + ], + "else": [ + { + "c": 774 + }, + { + "w": 775 + }, + { + "all": true, + "optional": true, + "k": 780 + }, + { + "k": 781 + } + ] + } + ], + [], + {} + ], + [ + 1, + "ally", + 1, + "^https://(www\\.)?ally\\.com/", + 22, + [ + 782 + ], + [ + { + "e": 783 + } + ], + [ + { + "v": 783 + } + ], + [ + { + "h": 782 + } + ], + [], + {} + ], + [ + 1, + "app.discuss.io", + 2, + "^https?://app\\.discuss\\.io/", + 10, + [], + [ + { + "e": 0 + } + ], + [ + { + "v": 0 + } + ], + [ + { + "c": 0 + } + ], + [ + { + "cc": 99 + } + ], + {} + ], + [ + 1, + "athlinks-com", + 1, + "^https://(www\\.)?athlinks\\.com/", + 22, + [ + 784 + ], + [ + { + "e": 784 + } + ], + [ + { + "v": 785 + } + ], + [ + { + "h": 784 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_24h-lemans.com_2ab_+9", + 0, + "^https?://(www\\.)?24h-lemans\\.com/|^https?://(www\\.)?conjugator\\.reverso\\.net/|^https?://(www\\.)?euronews\\.com/|^https?://(www\\.)?europcar\\.co\\.uk/|^https?://(www\\.)?guide\\.michelin\\.com/|^https?://(www\\.)?netmums\\.com/|^https?://(www\\.)?reverso\\.net/|^https?://(www\\.)?societe\\.com/|^https?://(www\\.)?the-shops\\.co\\.uk/|^https?://(www\\.)?viamichelin\\.com/", + 10, + [], + [ + { + "e": 1000 + } + ], + [ + { + "v": 1000 + } + ], + [ + { + "c": 1000 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_account.ubisoft.com_93p_+1", + 0, + "^https?://(www\\.)?account\\.ubisoft\\.com/|^https?://(www\\.)?redirection\\.ubisoft\\.com/", + 10, + [], + [ + { + "e": 1305 + } + ], + [ + { + "v": 1305 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1305 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1305 + } + ], + {} + ], + [ + 1, + "auto_AU_acetool.com_n0w_+1", + 0, + "^https?://(www\\.)?acetool\\.com/|^https?://(www\\.)?unclewiener\\.com/", + 10, + [], + [ + { + "e": 1299 + } + ], + [ + { + "v": 1299 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1299 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1299 + } + ], + {} + ], + [ + 1, + "auto_AU_adelaideairport.com.au_pxj", + 0, + "^https?://(www\\.)?adelaideairport\\.com\\.au/", + 10, + [], + [ + { + "e": 819 + } + ], + [ + { + "v": 819 + } + ], + [ + { + "wait": 500 + }, + { + "c": 819 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 819 + } + ], + {} + ], + [ + 1, + "auto_AU_adultwork.com_942", + 0, + "^https?://(www\\.)?adultwork\\.com/", + 10, + [], + [ + { + "e": 786 + } + ], + [ + { + "v": 786 + } + ], + [ + { + "wait": 500 + }, + { + "c": 786 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 786 + } + ], + {} + ], + [ + 1, + "auto_AU_aelfie.com_chb", + 0, + "^https?://(www\\.)?aelfie\\.com/", + 10, + [], + [ + { + "e": 2618 + } + ], + [ + { + "v": 2618 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2618 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2618 + } + ], + {} + ], + [ + 1, + "auto_AU_airlineratings.com_c0a", + 0, + "^https?://(www\\.)?airlineratings\\.com/", + 10, + [], + [ + { + "e": 791 + } + ], + [ + { + "v": 791 + } + ], + [ + { + "wait": 500 + }, + { + "c": 791 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 791 + } + ], + {} + ], + [ + 1, + "auto_AU_alt.com_ue4", + 0, + "^https?://(www\\.)?alt\\.com/", + 10, + [], + [ + { + "e": 792 + } + ], + [ + { + "v": 792 + } + ], + [ + { + "wait": 500 + }, + { + "c": 792 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 792 + } + ], + {} + ], + [ + 1, + "auto_AU_amayama.com_kw8", + 0, + "^https?://(www\\.)?amayama\\.com/", + 10, + [], + [ + { + "e": 793 + } + ], + [ + { + "v": 793 + } + ], + [ + { + "wait": 500 + }, + { + "c": 793 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 793 + } + ], + {} + ], + [ + 1, + "auto_AU_amiunique.org_x24", + 0, + "^https?://(www\\.)?amiunique\\.org/", + 10, + [], + [ + { + "e": 1316 + } + ], + [ + { + "v": 1316 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1316 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1316 + } + ], + {} + ], + [ + 1, + "auto_AU_ancestry.co.uk_zw1_+1", + 0, + "^https?://(www\\.)?ancestry\\.co\\.uk/|^https?://(www\\.)?ancestry\\.com/", + 10, + [], + [ + { + "e": 794 + } + ], + [ + { + "v": 794 + } + ], + [ + { + "wait": 500 + }, + { + "c": 794 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 794 + } + ], + {} + ], + [ + 1, + "auto_AU_aptouring.com_rxi", + 0, + "^https?://(www\\.)?aptouring\\.com/", + 10, + [], + [ + { + "e": 1079 + } + ], + [ + { + "v": 1079 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1079 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1079 + } + ], + {} + ], + [ + 1, + "auto_AU_arthurbanana.com_b24", + 0, + "^https?://(www\\.)?arthurbanana\\.com/", + 10, + [], + [ + { + "e": 1611 + } + ], + [ + { + "v": 1611 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1611 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1611 + } + ], + {} + ], + [ + 1, + "auto_AU_arubanetworking.hpe.com_232_+2", + 0, + "^https?://(www\\.)?arubanetworking\\.hpe\\.com/|^https?://(www\\.)?hpe\\.com/|^https?://(www\\.)?support\\.hpe\\.com/", + 10, + [], + [ + { + "e": 1003 + } + ], + [ + { + "v": 1003 + } + ], + [ + { + "c": 1003 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_asiointi.oikeus.fi_mmx", + 0, + "^https?://(www\\.)?asiointi\\.oikeus\\.fi/", + 10, + [], + [ + { + "e": 2595 + } + ], + [ + { + "v": 2595 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2595 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2595 + } + ], + {} + ], + [ + 1, + "auto_AU_askpython.com_3e7", + 0, + "^https?://(www\\.)?askpython\\.com/", + 10, + [], + [ + { + "e": 795 + } + ], + [ + { + "v": 795 + } + ], + [ + { + "wait": 500 + }, + { + "c": 795 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 795 + } + ], + {} + ], + [ + 1, + "auto_AU_asus.com_ony", + 0, + "^https?://(www\\.)?asus\\.com/", + 10, + [], + [ + { + "e": 796 + } + ], + [ + { + "v": 796 + } + ], + [ + { + "c": 796 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 796 + } + ], + {} + ], + [ + 1, + "auto_AU_atlantafed.org_o3l", + 0, + "^https?://(www\\.)?atlantafed\\.org/", + 10, + [], + [ + { + "e": 2619 + } + ], + [ + { + "v": 2619 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2619 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2619 + } + ], + {} + ], + [ + 1, + "auto_AU_audacityteam.org_oth", + 0, + "^https?://(www\\.)?audacityteam\\.org/", + 10, + [], + [ + { + "e": 1001 + } + ], + [ + { + "v": 1001 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1001 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1001 + } + ], + {} + ], + [ + 1, + "auto_AU_autodoc.co.uk_pr1_+1", + 0, + "^https?://(www\\.)?autodoc\\.co\\.uk/|^https?://(www\\.)?autodoc\\.parts/", + 10, + [], + [ + { + "e": 1002 + } + ], + [ + { + "v": 1002 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1002 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1002 + } + ], + {} + ], + [ + 1, + "auto_AU_azgames.io_ur8", + 0, + "^https?://(www\\.)?azgames\\.io/", + 10, + [], + [ + { + "e": 1165 + } + ], + [ + { + "v": 1165 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1165 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1165 + } + ], + {} + ], + [ + 1, + "auto_AU_bbc.destination-x-game.com_sys", + 0, + "^https?://(www\\.)?bbc\\.destination-x-game\\.com/", + 10, + [], + [ + { + "e": 797 + } + ], + [ + { + "v": 797 + } + ], + [ + { + "wait": 500 + }, + { + "c": 797 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 797 + } + ], + {} + ], + [ + 1, + "auto_AU_beanwealth.com_avt_+1", + 0, + "^https?://(www\\.)?beanwealth\\.com/|^https?://(www\\.)?trendlinehq\\.com/", + 10, + [], + [ + { + "e": 1608 + } + ], + [ + { + "v": 1608 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1608 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1608 + } + ], + {} + ], + [ + 1, + "auto_AU_bet365.com.au_njh", + 0, + "^https?://(www\\.)?bet365\\.com\\.au/", + 10, + [], + [ + { + "e": 1004 + } + ], + [ + { + "v": 1004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1004 + } + ], + {} + ], + [ + 1, + "auto_AU_bp.com_r69_+1", + 0, + "^https?://(www\\.)?bp\\.com/|^https?://(www\\.)?castrol\\.com/", + 10, + [], + [ + { + "e": 1005 + } + ], + [ + { + "v": 1005 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1005 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1005 + } + ], + {} + ], + [ + 1, + "auto_AU_bricklink.com_z77", + 0, + "^https?://(www\\.)?bricklink\\.com/", + 10, + [], + [ + { + "e": 1052 + } + ], + [ + { + "v": 1052 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1052 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1052 + } + ], + {} + ], + [ + 1, + "auto_AU_businessclass.com_5sf", + 0, + "^https?://(www\\.)?businessclass\\.com/", + 10, + [], + [ + { + "e": 1009 + } + ], + [ + { + "v": 1009 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1009 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1009 + } + ], + {} + ], + [ + 1, + "auto_AU_cam.start.canon_3x5", + 0, + "^https?://(www\\.)?cam\\.start\\.canon/", + 10, + [], + [ + { + "e": 2596 + } + ], + [ + { + "v": 2596 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2596 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2596 + } + ], + {} + ], + [ + 1, + "auto_AU_cam.start.canon_z06", + 0, + "^https?://(www\\.)?cam\\.start\\.canon/", + 10, + [], + [ + { + "e": 2597 + } + ], + [ + { + "v": 2597 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2597 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2597 + } + ], + {} + ], + [ + 1, + "auto_AU_cam4.com_cyv", + 0, + "^https?://(www\\.)?cam4\\.com/", + 10, + [], + [ + { + "e": 944 + } + ], + [ + { + "v": 944 + } + ], + [ + { + "wait": 500 + }, + { + "c": 944 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 944 + } + ], + {} + ], + [ + 1, + "auto_AU_camp2.gophoto.pro_npj", + 0, + "^https?://(www\\.)?camp2\\.gophoto\\.pro/", + 10, + [], + [ + { + "e": 2620 + } + ], + [ + { + "v": 2620 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2620 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2620 + } + ], + {} + ], + [ + 1, + "auto_AU_candaceowens.com_vwh", + 0, + "^https?://(www\\.)?candaceowens\\.com/", + 10, + [], + [ + { + "e": 1014 + } + ], + [ + { + "v": 1014 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1014 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1014 + } + ], + {} + ], + [ + 1, + "auto_AU_capitoltrades.com_ak9", + 0, + "^https?://(www\\.)?capitoltrades\\.com/", + 10, + [], + [ + { + "e": 1488 + } + ], + [ + { + "v": 1488 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1488 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1488 + } + ], + {} + ], + [ + 1, + "auto_AU_caremetix.mahle.com_vgt_+1", + 0, + "^https?://(www\\.)?mahle-aftermarket\\.com/|^https?://(www\\.)?mahle\\.com/", + 10, + [], + [ + { + "e": 2583 + } + ], + [ + { + "v": 2583 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2583 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2583 + } + ], + {} + ], + [ + 1, + "auto_AU_chicagobooth.edu_ikx", + 0, + "^https?://(www\\.)?chicagobooth\\.edu/", + 10, + [], + [ + { + "e": 2584 + } + ], + [ + { + "v": 2584 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2584 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2584 + } + ], + {} + ], + [ + 1, + "auto_AU_classiccars.com_8lp_+1", + 0, + "^https?://(www\\.)?classiccars\\.com/|^https?://(www\\.)?everquest\\.allakhazam\\.com/", + 10, + [], + [ + { + "e": 1038 + } + ], + [ + { + "v": 1038 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1038 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1038 + } + ], + {} + ], + [ + 1, + "auto_AU_classicjoy.games_8ii", + 0, + "^https?://(www\\.)?classicjoy\\.games/", + 10, + [], + [ + { + "e": 1004 + } + ], + [ + { + "v": 1004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1004 + } + ], + {} + ], + [ + 1, + "auto_AU_cloudairy.com_5vw", + 0, + "^https?://(www\\.)?cloudairy\\.com/", + 10, + [], + [ + { + "e": 2598 + } + ], + [ + { + "v": 2598 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2598 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2598 + } + ], + {} + ], + [ + 1, + "auto_AU_club.autodoc.co.uk_7ut", + 0, + "^https?://(www\\.)?club\\.autodoc\\.co\\.uk/", + 10, + [], + [ + { + "e": 1017 + } + ], + [ + { + "v": 1017 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1017 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1017 + } + ], + {} + ], + [ + 1, + "auto_AU_codeweavers.com_clm", + 0, + "^https?://(www\\.)?codeweavers\\.com/", + 10, + [], + [ + { + "e": 1007 + } + ], + [ + { + "v": 1007 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1007 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1007 + } + ], + {} + ], + [ + 1, + "auto_AU_community.dyson.com_lek", + 0, + "^https?://(www\\.)?community\\.dyson\\.com/", + 10, + [], + [ + { + "e": 1008 + } + ], + [ + { + "v": 1008 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1008 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1008 + } + ], + {} + ], + [ + 1, + "auto_AU_communityforums.atmeta.com_kez_+1", + 0, + "^https?://(www\\.)?communityforums\\.atmeta\\.com/|^https?://(www\\.)?community\\.goodsam\\.com/", + 10, + [], + [ + { + "e": 798 + } + ], + [ + { + "v": 798 + } + ], + [ + { + "wait": 500 + }, + { + "c": 798 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 798 + } + ], + {} + ], + [ + 1, + "auto_AU_conference-board.org_dce", + 0, + "^https?://(www\\.)?conference-board\\.org/", + 10, + [], + [ + { + "e": 2599 + } + ], + [ + { + "v": 2599 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2599 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2599 + } + ], + {} + ], + [ + 1, + "auto_AU_connect.mayoclinic.org_kdf_+2", + 0, + "^https?://(www\\.)?connect\\.mayoclinic\\.org/|^https?://(www\\.)?mayoclinichealthsystem\\.org/|^https?://(www\\.)?mcpress\\.mayoclinic\\.org/", + 10, + [], + [ + { + "e": 1238 + } + ], + [ + { + "v": 1238 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1238 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1238 + } + ], + {} + ], + [ + 1, + "auto_AU_core.ac.uk_pyc", + 0, + "^https?://(www\\.)?core\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1019 + } + ], + [ + { + "v": 1019 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1019 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1019 + } + ], + {} + ], + [ + 1, + "auto_AU_cos.com_ded", + 0, + "^https?://(www\\.)?cos\\.com/", + 10, + [], + [ + { + "e": 1021 + } + ], + [ + { + "v": 1021 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1021 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1021 + } + ], + {} + ], + [ + 1, + "auto_AU_coverworld.com.au_884", + 0, + "^https?://(www\\.)?coverworld\\.com\\.au/", + 10, + [], + [ + { + "e": 1027 + } + ], + [ + { + "v": 1027 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1027 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1027 + } + ], + {} + ], + [ + 1, + "auto_AU_critrole.com_e5n_+8", + 0, + "^https?://(www\\.)?critrole\\.com/|^https?://(www\\.)?queerty\\.com/|^https?://(www\\.)?forum\\.prusa3d\\.com/|^https?://(www\\.)?canarywharf\\.com/|^https?://(www\\.)?theabsolutesound\\.com/|^https?://(www\\.)?ersnet\\.org/|^https?://(www\\.)?pestor\\.nl/|^https?://(www\\.)?frontlinewildfire\\.com/|^https?://(www\\.)?parchment\\.com/", + 10, + [], + [ + { + "e": 1145 + } + ], + [ + { + "v": 1145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1145 + } + ], + {} + ], + [ + 1, + "auto_AU_cryptonews.com_sr2", + 0, + "^https?://(www\\.)?cryptonews\\.com/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_AU_cutterbuck.com_ko7", + 0, + "^https?://(www\\.)?cutterbuck\\.com/", + 10, + [], + [ + { + "e": 2621 + } + ], + [ + { + "v": 2621 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2621 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2621 + } + ], + {} + ], + [ + 1, + "auto_AU_dahuasecurity.com_j0i", + 0, + "^https?://(www\\.)?dahuasecurity\\.com/", + 10, + [], + [ + { + "e": 1010 + } + ], + [ + { + "v": 1010 + } + ], + [ + { + "c": 1010 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_deezer.com_tmf", + 0, + "^https?://(www\\.)?deezer\\.com/", + 10, + [], + [ + { + "e": 1029 + } + ], + [ + { + "v": 1029 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1029 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1029 + } + ], + {} + ], + [ + 1, + "auto_AU_degruyterbrill.com_vix", + 0, + "^https?://(www\\.)?degruyterbrill\\.com/", + 10, + [], + [ + { + "e": 1030 + } + ], + [ + { + "v": 1030 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1030 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1030 + } + ], + {} + ], + [ + 1, + "auto_AU_dequeuniversity.com_thg", + 0, + "^https?://(www\\.)?dequeuniversity\\.com/", + 10, + [], + [ + { + "e": 2600 + } + ], + [ + { + "v": 2600 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2600 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2600 + } + ], + {} + ], + [ + 1, + "auto_AU_dietdoctor.com_klo", + 0, + "^https?://(www\\.)?dietdoctor\\.com/", + 10, + [], + [ + { + "e": 1031 + } + ], + [ + { + "v": 1031 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1031 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1031 + } + ], + {} + ], + [ + 1, + "auto_AU_discover.utas.edu.au_k2n_+6", + 0, + "^https?://(www\\.)?discover\\.utas\\.edu\\.au/|^https?://(www\\.)?experts\\.deakin\\.edu\\.au/|^https?://(www\\.)?experts\\.griffith\\.edu\\.au/|^https?://(www\\.)?profiles\\.uts\\.edu\\.au/|^https?://(www\\.)?scholars\\.latrobe\\.edu\\.au/|^https?://(www\\.)?discover\\.research\\.utoronto\\.ca/|^https?://(www\\.)?profiles\\.ucl\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1034 + } + ], + [ + { + "v": 1034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1034 + } + ], + {} + ], + [ + 1, + "auto_AU_docs.portainer.io_hn5", + 0, + "^https?://(www\\.)?docs\\.portainer\\.io/", + 10, + [], + [ + { + "e": 1185 + } + ], + [ + { + "v": 1185 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1185 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1185 + } + ], + {} + ], + [ + 1, + "auto_AU_docs.streamlit.io_baq", + 0, + "^https?://(www\\.)?docs\\.streamlit\\.io/", + 10, + [], + [ + { + "e": 1076 + } + ], + [ + { + "v": 1076 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1076 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1076 + } + ], + {} + ], + [ + 1, + "auto_AU_dofe.org_ooo", + 0, + "^https?://(www\\.)?dofe\\.org/", + 10, + [], + [ + { + "e": 799 + } + ], + [ + { + "v": 799 + } + ], + [ + { + "wait": 500 + }, + { + "c": 799 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 799 + } + ], + {} + ], + [ + 1, + "auto_AU_drjoedispenza.com_ku0", + 0, + "^https?://(www\\.)?drjoedispenza\\.com/", + 10, + [], + [ + { + "e": 1037 + } + ], + [ + { + "v": 1037 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1037 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1037 + } + ], + {} + ], + [ + 1, + "auto_AU_dropboxforum.com_2qu_+1", + 0, + "^https?://(www\\.)?dropboxforum\\.com/|^https?://(www\\.)?community\\.smarty\\.co\\.uk/", + 10, + [], + [ + { + "e": 1040 + } + ], + [ + { + "v": 1040 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1040 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1040 + } + ], + {} + ], + [ + 1, + "auto_AU_e-chords.com_087", + 0, + "^https?://(www\\.)?e-chords\\.com/", + 10, + [], + [ + { + "e": 1041 + } + ], + [ + { + "v": 1041 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1041 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1041 + } + ], + {} + ], + [ + 1, + "auto_AU_eandt.theiet.org_6zf", + 0, + "^https?://(www\\.)?eandt\\.theiet\\.org/", + 10, + [], + [ + { + "e": 800 + } + ], + [ + { + "v": 800 + } + ], + [ + { + "wait": 500 + }, + { + "c": 800 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 800 + } + ], + {} + ], + [ + 1, + "auto_AU_earpros.com_3x3", + 0, + "^https?://(www\\.)?earpros\\.com/", + 10, + [], + [ + { + "e": 1013 + } + ], + [ + { + "v": 1013 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1013 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1013 + } + ], + {} + ], + [ + 1, + "auto_AU_elekta.com_qht", + 0, + "^https?://(www\\.)?elekta\\.com/", + 10, + [], + [ + { + "e": 2601 + } + ], + [ + { + "v": 2601 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2601 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2601 + } + ], + {} + ], + [ + 1, + "auto_AU_en.community.sonos.com_0kp_+3", + 0, + "^https?://(www\\.)?en\\.community\\.sonos\\.com/|^https?://(www\\.)?community\\.jamf\\.com/|^https?://(www\\.)?community\\.safe\\.com/|^https?://(www\\.)?forum\\.figma\\.com/", + 10, + [], + [ + { + "e": 1043 + } + ], + [ + { + "v": 1043 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1043 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1043 + } + ], + {} + ], + [ + 1, + "auto_AU_en.pdfdrive.to_1lm_+1", + 0, + "^https?://(www\\.)?en\\.pdfdrive\\.to/|^https?://(www\\.)?pdfdrive\\.to/", + 10, + [], + [ + { + "e": 1136 + } + ], + [ + { + "v": 1136 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1136 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1136 + } + ], + {} + ], + [ + 1, + "auto_AU_epoch.ai_2pl", + 0, + "^https?://(www\\.)?epoch\\.ai/", + 10, + [], + [ + { + "e": 2602 + } + ], + [ + { + "v": 2602 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2602 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2602 + } + ], + {} + ], + [ + 1, + "auto_AU_espboards.dev_kya", + 0, + "^https?://(www\\.)?espboards\\.dev/", + 10, + [], + [ + { + "e": 1044 + } + ], + [ + { + "v": 1044 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1044 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1044 + } + ], + {} + ], + [ + 1, + "auto_AU_euronews.com_swc_+7", + 0, + "^https?://(www\\.)?euronews\\.com/|^https?://(www\\.)?conjugator\\.reverso\\.net/|^https?://(www\\.)?guide\\.michelin\\.com/|^https?://(www\\.)?societe\\.com/|^https?://(www\\.)?atseuromaster\\.co\\.uk/|^https?://(www\\.)?context\\.reverso\\.net/|^https?://(www\\.)?manomano\\.co\\.uk/|^https?://(www\\.)?opodo\\.co\\.uk/", + 10, + [], + [ + { + "e": 1045 + } + ], + [ + { + "v": 1045 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1045 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1045 + } + ], + {} + ], + [ + 1, + "auto_AU_evernote.com_jed", + 0, + "^https?://(www\\.)?evernote\\.com/", + 10, + [], + [ + { + "e": 1046 + } + ], + [ + { + "v": 1046 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1046 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1046 + } + ], + {} + ], + [ + 1, + "auto_AU_fanatical.com_nth", + 0, + "^https?://(www\\.)?fanatical\\.com/", + 10, + [], + [ + { + "e": 1047 + } + ], + [ + { + "v": 1047 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1047 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1047 + } + ], + {} + ], + [ + 1, + "auto_AU_fareham.gov.uk_x1a", + 0, + "^https?://(www\\.)?fareham\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2592 + } + ], + [ + { + "v": 2592 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2592 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2592 + } + ], + {} + ], + [ + 1, + "auto_AU_ferragamo.com_tj1", + 0, + "^https?://(www\\.)?ferragamo\\.com/", + 10, + [], + [ + { + "e": 2899 + } + ], + [ + { + "v": 2899 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2899 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2899 + } + ], + {} + ], + [ + 1, + "auto_AU_finimize.com_90i", + 0, + "^https?://(www\\.)?finimize\\.com/", + 10, + [], + [ + { + "e": 2900 + } + ], + [ + { + "v": 2900 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2900 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2900 + } + ], + {} + ], + [ + 1, + "auto_AU_fleshbot.com_9w7", + 0, + "^https?://(www\\.)?fleshbot\\.com/", + 10, + [], + [ + { + "e": 1068 + } + ], + [ + { + "v": 1068 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1068 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1068 + } + ], + {} + ], + [ + 1, + "auto_AU_flinders.edu.au_7en_+1", + 0, + "^https?://(www\\.)?flinders\\.edu\\.au/|^https?://(www\\.)?students\\.flinders\\.edu\\.au/", + 10, + [], + [ + { + "e": 1015 + } + ], + [ + { + "v": 1015 + } + ], + [ + { + "c": 1015 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_flysaa.com_qsm", + 0, + "^https?://(www\\.)?flysaa\\.com/", + 10, + [], + [ + { + "e": 2603 + } + ], + [ + { + "v": 2603 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2603 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2603 + } + ], + {} + ], + [ + 1, + "auto_AU_foliosociety.com_j08", + 0, + "^https?://(www\\.)?foliosociety\\.com/", + 10, + [], + [ + { + "e": 1016 + } + ], + [ + { + "v": 1016 + } + ], + [ + { + "c": 1016 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_forum.affinity.serif.com_mqg_+12", + 0, + "^https?://(www\\.)?forum\\.affinity\\.serif\\.com/|^https?://(www\\.)?vintagestory\\.at/|^https?://(www\\.)?celiac\\.com/|^https?://(www\\.)?forums\\.malwarebytes\\.com/|^https?://(www\\.)?stargazerslounge\\.com/|^https?://(www\\.)?oly-forum\\.com/|^https?://(www\\.)?forum\\.waffen-online\\.de/|^https?://(www\\.)?nas-forum\\.com/|^https?://(www\\.)?webastro\\.net/|^https?://(www\\.)?arbtalk\\.co\\.uk/|^https?://(www\\.)?canalworld\\.net/|^https?://(www\\.)?thesilverforum\\.com/|^https?://(www\\.)?pc-helpforum\\.be/", + 10, + [], + [ + { + "e": 1050 + } + ], + [ + { + "v": 1050 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1050 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1050 + } + ], + {} + ], + [ + 1, + "auto_AU_forum.proxmox.com_6xl_+1", + 0, + "^https?://(www\\.)?forum\\.proxmox\\.com/|^https?://(www\\.)?hearth\\.com/", + 10, + [], + [ + { + "e": 1051 + } + ], + [ + { + "v": 1051 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1051 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1051 + } + ], + {} + ], + [ + 1, + "auto_AU_foundryvtt.com_2jv", + 0, + "^https?://(www\\.)?foundryvtt\\.com/", + 10, + [], + [ + { + "e": 1054 + } + ], + [ + { + "v": 1054 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1054 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1054 + } + ], + {} + ], + [ + 1, + "auto_AU_frostbrowntodd.com_j2w", + 0, + "^https?://(www\\.)?frostbrowntodd\\.com/", + 10, + [], + [ + { + "e": 2622 + } + ], + [ + { + "v": 2622 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2622 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2622 + } + ], + {} + ], + [ + 1, + "auto_AU_fruugoaustralia.com_ifq_+2", + 0, + "^https?://(www\\.)?fruugoaustralia\\.com/|^https?://(www\\.)?fruugo\\.ca/|^https?://(www\\.)?fruugo\\.co\\.uk/", + 10, + [], + [ + { + "e": 1056 + } + ], + [ + { + "v": 1056 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1056 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1056 + } + ], + {} + ], + [ + 1, + "auto_AU_gamer-choice.com_cbo", + 0, + "^https?://(www\\.)?gamer-choice\\.com/", + 10, + [], + [ + { + "e": 1153 + } + ], + [ + { + "v": 1153 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1153 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1153 + } + ], + {} + ], + [ + 1, + "auto_AU_gayporn.com_ana_+1", + 0, + "^https?://(www\\.)?gayporn\\.com/|^https?://(www\\.)?porno\\.fm/", + 10, + [], + [ + { + "e": 1057 + } + ], + [ + { + "v": 1057 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1057 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1057 + } + ], + {} + ], + [ + 1, + "auto_AU_gayseniordating.com_bdr", + 0, + "^https?://(www\\.)?gayseniordating\\.com/", + 10, + [], + [ + { + "e": 2623 + } + ], + [ + { + "v": 2623 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2623 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2623 + } + ], + {} + ], + [ + 1, + "auto_AU_getteal.com_y3e", + 0, + "^https?://(www\\.)?getteal\\.com/", + 10, + [], + [ + { + "e": 801 + } + ], + [ + { + "v": 801 + } + ], + [ + { + "wait": 500 + }, + { + "c": 801 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 801 + } + ], + {} + ], + [ + 1, + "auto_AU_ghd.com_aj8", + 0, + "^https?://(www\\.)?ghd\\.com/", + 10, + [], + [ + { + "e": 1060 + } + ], + [ + { + "v": 1060 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1060 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1060 + } + ], + {} + ], + [ + 1, + "auto_AU_giant-bicycles.com_z55", + 0, + "^https?://(www\\.)?giant-bicycles\\.com/", + 10, + [], + [ + { + "e": 1034 + } + ], + [ + { + "v": 1034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1034 + } + ], + {} + ], + [ + 1, + "auto_AU_gibson.com_8bu", + 0, + "^https?://(www\\.)?gibson\\.com/", + 10, + [], + [ + { + "e": 1120 + } + ], + [ + { + "v": 1120 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1120 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1120 + } + ], + {} + ], + [ + 1, + "auto_AU_gitmind.com_4qd", + 0, + "^https?://(www\\.)?gitmind\\.com/", + 10, + [], + [ + { + "e": 2585 + } + ], + [ + { + "v": 2585 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2585 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2585 + } + ], + {} + ], + [ + 1, + "auto_AU_goodmoodprints.com_9fy", + 0, + "^https?://(www\\.)?goodmoodprints\\.com/", + 10, + [], + [ + { + "e": 2624 + } + ], + [ + { + "v": 2624 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2624 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2624 + } + ], + {} + ], + [ + 1, + "auto_AU_gramophone.co.uk_3af", + 0, + "^https?://(www\\.)?gramophone\\.co\\.uk/", + 10, + [], + [ + { + "e": 1018 + } + ], + [ + { + "v": 1018 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1018 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1018 + } + ], + {} + ], + [ + 1, + "auto_AU_guggenheim.org_m1o", + 0, + "^https?://(www\\.)?guggenheim\\.org/", + 10, + [], + [ + { + "e": 2586 + } + ], + [ + { + "v": 2586 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2586 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2586 + } + ], + {} + ], + [ + 1, + "auto_AU_hackarcana.com_0ru", + 0, + "^https?://(www\\.)?hackarcana\\.com/", + 10, + [], + [ + { + "e": 2625 + } + ], + [ + { + "v": 2625 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2625 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2625 + } + ], + {} + ], + [ + 1, + "auto_AU_help.solidworks.com_ehm_+3", + 0, + "^https?://(www\\.)?help\\.solidworks\\.com/|^https?://(www\\.)?solidworks\\.com/|^https?://(www\\.)?3ds\\.com/|^https?://(www\\.)?home\\.by\\.me/", + 10, + [], + [ + { + "e": 1070 + } + ], + [ + { + "v": 1070 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1070 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1070 + } + ], + {} + ], + [ + 1, + "auto_AU_hmd.com_uv4", + 0, + "^https?://(www\\.)?hmd\\.com/", + 10, + [], + [ + { + "e": 1071 + } + ], + [ + { + "v": 1071 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1071 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1071 + } + ], + {} + ], + [ + 1, + "auto_AU_honeybirdette.com_7g5", + 0, + "^https?://(www\\.)?honeybirdette\\.com/", + 10, + [], + [ + { + "e": 1080 + } + ], + [ + { + "v": 1080 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1080 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1080 + } + ], + {} + ], + [ + 1, + "auto_AU_hpm.com.au_hbc", + 0, + "^https?://(www\\.)?hpm\\.com\\.au/", + 10, + [], + [ + { + "e": 1020 + } + ], + [ + { + "v": 1020 + } + ], + [ + { + "c": 1020 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_hqporner.com_l5k", + 0, + "^https?://(www\\.)?hqporner\\.com/", + 10, + [], + [ + { + "e": 1011 + } + ], + [ + { + "v": 1011 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1011 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1011 + } + ], + {} + ], + [ + 1, + "auto_AU_hub.jw.org_urj_+2", + 0, + "^https?://(www\\.)?login\\.jw\\.org/|^https?://(www\\.)?jw\\.org/|^https?://(www\\.)?wol\\.jw\\.org/", + 10, + [], + [ + { + "e": 1101 + } + ], + [ + { + "v": 1101 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1101 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1101 + } + ], + {} + ], + [ + 1, + "auto_AU_humanrights.gov.au_k7k", + 0, + "^https?://(www\\.)?humanrights\\.gov\\.au/", + 10, + [], + [ + { + "e": 2705 + } + ], + [ + { + "v": 2705 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2705 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2705 + } + ], + {} + ], + [ + 1, + "auto_AU_hypixel.net_cmk_+3", + 0, + "^https?://(www\\.)?hypixel\\.net/|^https?://(www\\.)?symptome\\.ch/|^https?://(www\\.)?adisc\\.org/|^https?://(www\\.)?forums\\.mbclub\\.co\\.uk/", + 10, + [], + [ + { + "e": 1081 + } + ], + [ + { + "v": 1081 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1081 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1081 + } + ], + {} + ], + [ + 1, + "auto_AU_hyprnote.com_5ti_+1", + 0, + "^https?://(www\\.)?hyprnote\\.com/|^https?://(www\\.)?kirkusreviews\\.com/", + 10, + [], + [ + { + "e": 1034 + } + ], + [ + { + "v": 1034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1034 + } + ], + {} + ], + [ + 1, + "auto_AU_hytale.com_rw6", + 0, + "^https?://(www\\.)?hytale\\.com/", + 10, + [], + [ + { + "e": 1308 + } + ], + [ + { + "v": 1308 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1308 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1308 + } + ], + {} + ], + [ + 1, + "auto_AU_ikmultimedia.com_9ha", + 0, + "^https?://(www\\.)?ikmultimedia\\.com/", + 10, + [], + [ + { + "e": 1012 + } + ], + [ + { + "v": 1012 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1012 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1012 + } + ], + {} + ], + [ + 1, + "auto_AU_jamieoliver.com_7ma", + 0, + "^https?://(www\\.)?jamieoliver\\.com/", + 10, + [], + [ + { + "e": 1086 + } + ], + [ + { + "v": 1086 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1086 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1086 + } + ], + {} + ], + [ + 1, + "auto_AU_jlcpcb.com_3h9", + 0, + "^https?://(www\\.)?jlcpcb\\.com/", + 10, + [], + [ + { + "e": 1342 + } + ], + [ + { + "v": 1342 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1342 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1342 + } + ], + {} + ], + [ + 1, + "auto_AU_johnlewis.com_1rt", + 0, + "^https?://(www\\.)?johnlewis\\.com/", + 10, + [], + [ + { + "e": 1022 + } + ], + [ + { + "v": 1022 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1022 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1022 + } + ], + {} + ], + [ + 1, + "auto_AU_karenmillen.com_4fo", + 0, + "^https?://(www\\.)?karenmillen\\.com/", + 10, + [], + [ + { + "e": 1023 + } + ], + [ + { + "v": 1023 + } + ], + [ + { + "c": 1023 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_komoot.com_9b3", + 0, + "^https?://(www\\.)?komoot\\.com/", + 10, + [], + [ + { + "e": 1102 + } + ], + [ + { + "v": 1102 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1102 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1102 + } + ], + {} + ], + [ + 1, + "auto_AU_kwm.com_1r9", + 0, + "^https?://(www\\.)?kwm\\.com/", + 10, + [], + [ + { + "e": 1103 + } + ], + [ + { + "v": 1103 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1103 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1103 + } + ], + {} + ], + [ + 1, + "auto_AU_lcsc.com_cdx", + 0, + "^https?://(www\\.)?lcsc\\.com/", + 10, + [], + [ + { + "e": 1105 + } + ], + [ + { + "v": 1105 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1105 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1105 + } + ], + {} + ], + [ + 1, + "auto_AU_learn.ligonier.org_nlk", + 0, + "^https?://(www\\.)?learn\\.ligonier\\.org/", + 10, + [], + [ + { + "e": 1108 + } + ], + [ + { + "v": 1108 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1108 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1108 + } + ], + {} + ], + [ + 1, + "auto_AU_lehmannaudio.com_b7i", + 0, + "^https?://(www\\.)?lehmannaudio\\.com/", + 10, + [], + [ + { + "e": 2604 + } + ], + [ + { + "v": 2604 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2604 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2604 + } + ], + {} + ], + [ + 1, + "auto_AU_lemonde.fr_jgt", + 0, + "^https?://(www\\.)?lemonde\\.fr/", + 10, + [], + [ + { + "e": 1614 + } + ], + [ + { + "v": 1614 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1614 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1614 + } + ], + {} + ], + [ + 1, + "auto_AU_lgbtqia2s.org_t7c", + 0, + "^https?://(www\\.)?lgbtqia2s\\.org/", + 10, + [], + [ + { + "e": 2605 + } + ], + [ + { + "v": 2605 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2605 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2605 + } + ], + {} + ], + [ + 1, + "auto_AU_liebherr.com_b9q", + 0, + "^https?://(www\\.)?liebherr\\.com/", + 10, + [], + [ + { + "e": 1024 + } + ], + [ + { + "v": 1024 + } + ], + [ + { + "c": 1024 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_lifespan.io_nhm", + 0, + "^https?://(www\\.)?lifespan\\.io/", + 10, + [], + [ + { + "e": 2626 + } + ], + [ + { + "v": 2626 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2626 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2626 + } + ], + {} + ], + [ + 1, + "auto_AU_lloydsbank.com_fsh_+6", + 0, + "^https?://(www\\.)?lloydsbank\\.com/|^https?://(www\\.)?branches\\.halifax\\.co\\.uk/|^https?://(www\\.)?halifax\\.co\\.uk/|^https?://(www\\.)?iweb-sharedealing\\.co\\.uk/|^https?://(www\\.)?lloydsbankinggroup\\.com/|^https?://(www\\.)?mbna\\.co\\.uk/|^https?://(www\\.)?scottishwidows\\.co\\.uk/", + 10, + [], + [ + { + "e": 2193 + } + ], + [ + { + "v": 2193 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2193 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2193 + } + ], + {} + ], + [ + 1, + "auto_AU_lockweb.com.au_yzb", + 0, + "^https?://(www\\.)?lockweb\\.com\\.au/", + 10, + [], + [ + { + "e": 1114 + } + ], + [ + { + "v": 1114 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1114 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1114 + } + ], + {} + ], + [ + 1, + "auto_AU_lostincult.co.uk_9dy", + 0, + "^https?://(www\\.)?lostincult\\.co\\.uk/", + 10, + [], + [ + { + "e": 1620 + } + ], + [ + { + "v": 1620 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1620 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1620 + } + ], + {} + ], + [ + 1, + "auto_AU_loyalfans.com_nvp", + 0, + "^https?://(www\\.)?loyalfans\\.com/", + 10, + [], + [ + { + "e": 1116 + } + ], + [ + { + "v": 1116 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1116 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1116 + } + ], + {} + ], + [ + 1, + "auto_AU_lpsg.com_70w", + 0, + "^https?://(www\\.)?lpsg\\.com/", + 10, + [], + [ + { + "e": 1117 + } + ], + [ + { + "v": 1117 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1117 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1117 + } + ], + {} + ], + [ + 1, + "auto_AU_lush.com_bdf", + 0, + "^https?://(www\\.)?lush\\.com/", + 10, + [], + [ + { + "e": 1122 + } + ], + [ + { + "v": 1122 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1122 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1122 + } + ], + {} + ], + [ + 1, + "auto_AU_makerworld.com_4l4", + 0, + "^https?://(www\\.)?makerworld\\.com/", + 10, + [], + [ + { + "e": 1123 + } + ], + [ + { + "v": 1123 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1123 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1123 + } + ], + {} + ], + [ + 1, + "auto_AU_mastersintime.com_q6g", + 0, + "^https?://(www\\.)?mastersintime\\.com/", + 10, + [], + [ + { + "e": 2587 + } + ], + [ + { + "v": 2587 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2587 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2587 + } + ], + {} + ], + [ + 1, + "auto_AU_mercedesbenzstadium.com_wzc", + 0, + "^https?://(www\\.)?mercedesbenzstadium\\.com/", + 10, + [], + [ + { + "e": 2892 + } + ], + [ + { + "v": 2892 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2892 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2892 + } + ], + {} + ], + [ + 1, + "auto_AU_metronomeonline.com_mco", + 0, + "^https?://(www\\.)?metronomeonline\\.com/", + 10, + [], + [ + { + "e": 1026 + } + ], + [ + { + "v": 1026 + } + ], + [ + { + "c": 1026 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_miles-and-more.com_hqi", + 0, + "^https?://(www\\.)?miles-and-more\\.com/", + 10, + [], + [ + { + "e": 1059 + } + ], + [ + { + "v": 1059 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1059 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1059 + } + ], + {} + ], + [ + 1, + "auto_AU_milvus.io_j4n", + 0, + "^https?://(www\\.)?milvus\\.io/", + 10, + [], + [ + { + "e": 2606 + } + ], + [ + { + "v": 2606 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2606 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2606 + } + ], + {} + ], + [ + 1, + "auto_AU_monkeytype.com_kz9", + 0, + "^https?://(www\\.)?monkeytype\\.com/", + 10, + [], + [ + { + "e": 1374 + } + ], + [ + { + "v": 1374 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1374 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1374 + } + ], + {} + ], + [ + 1, + "auto_AU_motorinsel.uk_lsx", + 0, + "^https?://(www\\.)?motorinsel\\.uk/", + 10, + [], + [ + { + "e": 2607 + } + ], + [ + { + "v": 2607 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2607 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2607 + } + ], + {} + ], + [ + 1, + "auto_AU_msf.org.au_j95", + 0, + "^https?://(www\\.)?msf\\.org\\.au/", + 10, + [], + [ + { + "e": 1129 + } + ], + [ + { + "v": 1129 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1129 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1129 + } + ], + {} + ], + [ + 1, + "auto_AU_my.armadale.wa.gov.au_f1i", + 0, + "^https?://(www\\.)?my\\.armadale\\.wa\\.gov\\.au/", + 10, + [], + [ + { + "e": 1098 + } + ], + [ + { + "v": 1098 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1098 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1098 + } + ], + {} + ], + [ + 1, + "auto_AU_nativeunion.com_eey_+1", + 0, + "^https?://(www\\.)?nativeunion\\.com/|^https?://(www\\.)?sissymarket\\.com/", + 10, + [], + [ + { + "e": 1110 + } + ], + [ + { + "v": 1110 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1110 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1110 + } + ], + {} + ], + [ + 1, + "auto_AU_naturitas.com.au_7m0", + 0, + "^https?://(www\\.)?naturitas\\.com\\.au/", + 10, + [], + [ + { + "e": 1130 + } + ], + [ + { + "v": 1130 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1130 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1130 + } + ], + {} + ], + [ + 1, + "auto_AU_navman.com.au_zsn", + 0, + "^https?://(www\\.)?navman\\.com\\.au/", + 10, + [], + [ + { + "e": 1132 + } + ], + [ + { + "v": 1132 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1132 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1132 + } + ], + {} + ], + [ + 1, + "auto_AU_newyork.doverstreetmarket.com_j5q", + 0, + "^https?://(www\\.)?newyork\\.doverstreetmarket\\.com/", + 10, + [], + [ + { + "e": 2627 + } + ], + [ + { + "v": 2627 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2627 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2627 + } + ], + {} + ], + [ + 1, + "auto_AU_newyork.doverstreetmarket.com_k2q", + 0, + "^https?://(www\\.)?newyork\\.doverstreetmarket\\.com/", + 10, + [], + [ + { + "e": 2628 + } + ], + [ + { + "v": 2628 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2628 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2628 + } + ], + {} + ], + [ + 1, + "auto_AU_nextcloud.com_f8e", + 0, + "^https?://(www\\.)?nextcloud\\.com/", + 10, + [], + [ + { + "e": 1133 + } + ], + [ + { + "v": 1133 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1133 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1133 + } + ], + {} + ], + [ + 1, + "auto_AU_niwaki.com_w41", + 0, + "^https?://(www\\.)?niwaki\\.com/", + 10, + [], + [ + { + "e": 2629 + } + ], + [ + { + "v": 2629 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2629 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2629 + } + ], + {} + ], + [ + 1, + "auto_AU_odb.org_fju", + 0, + "^https?://(www\\.)?odb\\.org/", + 10, + [], + [ + { + "e": 2588 + } + ], + [ + { + "v": 2588 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2588 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2588 + } + ], + {} + ], + [ + 1, + "auto_AU_on1.com_0na", + 0, + "^https?://(www\\.)?on1\\.com/", + 10, + [], + [ + { + "e": 1134 + } + ], + [ + { + "v": 1134 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1134 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1134 + } + ], + {} + ], + [ + 1, + "auto_AU_onlyoffice.com_nsw", + 0, + "^https?://(www\\.)?onlyoffice\\.com/", + 10, + [], + [ + { + "e": 1119 + } + ], + [ + { + "v": 1119 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1119 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1119 + } + ], + {} + ], + [ + 1, + "auto_AU_orpheum.com.au_kdl", + 0, + "^https?://(www\\.)?orpheum\\.com\\.au/", + 10, + [], + [ + { + "e": 1135 + } + ], + [ + { + "v": 1135 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1135 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1135 + } + ], + {} + ], + [ + 1, + "auto_AU_peugeot.com.au_ja7", + 0, + "^https?://(www\\.)?peugeot\\.com\\.au/", + 10, + [], + [ + { + "e": 1139 + } + ], + [ + { + "v": 1139 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1139 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1139 + } + ], + {} + ], + [ + 1, + "auto_AU_pewresearch.org_g4c", + 0, + "^https?://(www\\.)?pewresearch\\.org/", + 10, + [], + [ + { + "e": 802 + } + ], + [ + { + "v": 802 + } + ], + [ + { + "wait": 500 + }, + { + "c": 802 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 802 + } + ], + {} + ], + [ + 1, + "auto_AU_picdetective.com_4ku", + 0, + "^https?://(www\\.)?picdetective\\.com/", + 10, + [], + [ + { + "e": 1399 + } + ], + [ + { + "v": 1399 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1399 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1399 + } + ], + {} + ], + [ + 1, + "auto_AU_pichunter.com_zhf", + 0, + "^https?://(www\\.)?pichunter\\.com/", + 10, + [], + [ + { + "e": 1032 + } + ], + [ + { + "v": 1032 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1032 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1032 + } + ], + {} + ], + [ + 1, + "auto_AU_pjspub.com_5tt", + 0, + "^https?://(www\\.)?pjspub\\.com/", + 10, + [], + [ + { + "e": 2608 + } + ], + [ + { + "v": 2608 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2608 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2608 + } + ], + {} + ], + [ + 1, + "auto_AU_pnp.co.za_9lg", + 0, + "^https?://(www\\.)?pnp\\.co\\.za/", + 10, + [], + [ + { + "e": 2609 + } + ], + [ + { + "v": 2609 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2609 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2609 + } + ], + {} + ], + [ + 1, + "auto_AU_poolwerx.com.au_dwe", + 0, + "^https?://(www\\.)?poolwerx\\.com\\.au/", + 10, + [], + [ + { + "e": 1125 + } + ], + [ + { + "v": 1125 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1125 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1125 + } + ], + {} + ], + [ + 1, + "auto_AU_portstephens.nsw.gov.au_62v", + 0, + "^https?://(www\\.)?portstephens\\.nsw\\.gov\\.au/", + 10, + [], + [ + { + "e": 1033 + } + ], + [ + { + "v": 1033 + } + ], + [ + { + "c": 1033 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_postman.com_yvc", + 0, + "^https?://(www\\.)?postman\\.com/", + 10, + [], + [ + { + "e": 1140 + } + ], + [ + { + "v": 1140 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1140 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1140 + } + ], + {} + ], + [ + 1, + "auto_AU_powerofpositivity.com_sm5_+1", + 0, + "^https?://(www\\.)?powerofpositivity\\.com/|^https?://(www\\.)?dassault-aviation\\.com/", + 10, + [], + [ + { + "e": 1145 + } + ], + [ + { + "v": 1145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1145 + } + ], + {} + ], + [ + 1, + "auto_AU_publicdomainreview.org_7fg", + 0, + "^https?://(www\\.)?publicdomainreview\\.org/", + 10, + [], + [ + { + "e": 2589 + } + ], + [ + { + "v": 2589 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2589 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2589 + } + ], + {} + ], + [ + 1, + "auto_AU_qldnaturistassoc.org_k53", + 0, + "^https?://(www\\.)?qldnaturistassoc\\.org/", + 10, + [], + [ + { + "e": 1408 + } + ], + [ + { + "v": 1408 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1408 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1408 + } + ], + {} + ], + [ + 1, + "auto_AU_quantamagazine.org_4lo", + 0, + "^https?://(www\\.)?quantamagazine\\.org/", + 10, + [], + [ + { + "e": 2610 + } + ], + [ + { + "v": 2610 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2610 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2610 + } + ], + {} + ], + [ + 1, + "auto_AU_queerty.com_uxh_+1", + 0, + "^https?://(www\\.)?queerty\\.com/|^https?://(www\\.)?theabsolutesound\\.com/", + 10, + [], + [ + { + "e": 1036 + } + ], + [ + { + "v": 1036 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1036 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1036 + } + ], + {} + ], + [ + 1, + "auto_AU_quintacarrascal.com_f1h", + 0, + "^https?://(www\\.)?quintacarrascal\\.com/", + 10, + [], + [ + { + "e": 2907 + } + ], + [ + { + "v": 2907 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2907 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2907 + } + ], + {} + ], + [ + 1, + "auto_AU_rewardflightfinder.com_bgu", + 0, + "^https?://(www\\.)?rewardflightfinder\\.com/", + 10, + [], + [ + { + "e": 1599 + } + ], + [ + { + "v": 1599 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1599 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1599 + } + ], + {} + ], + [ + 1, + "auto_AU_rightpaw.com.au_fmv", + 0, + "^https?://(www\\.)?rightpaw\\.com\\.au/", + 10, + [], + [ + { + "e": 1410 + } + ], + [ + { + "v": 1410 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1410 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1410 + } + ], + {} + ], + [ + 1, + "auto_AU_rki.de_tp5", + 0, + "^https?://(www\\.)?rki\\.de/", + 10, + [], + [ + { + "e": 2593 + } + ], + [ + { + "v": 2593 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2593 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2593 + } + ], + {} + ], + [ + 1, + "auto_AU_royalmail.com_07a", + 0, + "^https?://(www\\.)?royalmail\\.com/", + 10, + [], + [ + { + "e": 1147 + } + ], + [ + { + "v": 1147 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1147 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1147 + } + ], + {} + ], + [ + 1, + "auto_AU_screen.studio_z0u", + 0, + "^https?://(www\\.)?screen\\.studio/", + 10, + [], + [ + { + "e": 803 + } + ], + [ + { + "v": 803 + } + ], + [ + { + "wait": 500 + }, + { + "c": 803 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 803 + } + ], + {} + ], + [ + 1, + "auto_AU_shemalestardb.com_ufp_+1", + 0, + "^https?://(www\\.)?shemalestardb\\.com/|^https?://(www\\.)?eropaste\\.net/", + 10, + [], + [ + { + "e": 1150 + } + ], + [ + { + "v": 1150 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1150 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1150 + } + ], + {} + ], + [ + 1, + "auto_AU_siberoloji.com_4l8", + 0, + "^https?://(www\\.)?siberoloji\\.com/", + 10, + [], + [ + { + "e": 1151 + } + ], + [ + { + "v": 1151 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1151 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1151 + } + ], + {} + ], + [ + 1, + "auto_AU_solesavy.com_8q6", + 0, + "^https?://(www\\.)?solesavy\\.com/", + 10, + [], + [ + { + "e": 804 + } + ], + [ + { + "v": 804 + } + ], + [ + { + "wait": 500 + }, + { + "c": 804 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 804 + } + ], + {} + ], + [ + 1, + "auto_AU_south32.net_qkk", + 0, + "^https?://(www\\.)?south32\\.net/", + 10, + [], + [ + { + "e": 1127 + } + ], + [ + { + "v": 1127 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1127 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1127 + } + ], + {} + ], + [ + 1, + "auto_AU_spark.worldstrides.com_7j4", + 0, + "^https?://(www\\.)?spark\\.worldstrides\\.com/", + 10, + [], + [ + { + "e": 2901 + } + ], + [ + { + "v": 2901 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2901 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2901 + } + ], + {} + ], + [ + 1, + "auto_AU_spark.worldstrides.com_qbl", + 0, + "^https?://(www\\.)?spark\\.worldstrides\\.com/", + 10, + [], + [ + { + "e": 2902 + } + ], + [ + { + "v": 2902 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2902 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2902 + } + ], + {} + ], + [ + 1, + "auto_AU_sqlservercentral.com_bmw", + 0, + "^https?://(www\\.)?sqlservercentral\\.com/", + 10, + [], + [ + { + "e": 1152 + } + ], + [ + { + "v": 1152 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1152 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1152 + } + ], + {} + ], + [ + 1, + "auto_AU_sskm.de_nbi", + 0, + "^https?://(www\\.)?sskm\\.de/", + 10, + [], + [ + { + "e": 1160 + } + ], + [ + { + "v": 1160 + } + ], + [ + { + "c": 1160 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1160 + } + ], + {} + ], + [ + 1, + "auto_AU_staff.flinders.edu.au_cpu", + 0, + "^https?://(www\\.)?staff\\.flinders\\.edu\\.au/", + 10, + [], + [ + { + "e": 1015 + } + ], + [ + { + "v": 1015 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1015 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1015 + } + ], + {} + ], + [ + 1, + "auto_AU_sto.qantas.com_1n6", + 0, + "^https?://(www\\.)?sto\\.qantas\\.com/", + 10, + [], + [ + { + "e": 1438 + } + ], + [ + { + "v": 1438 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1438 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1438 + } + ], + {} + ], + [ + 1, + "auto_AU_strava.com_k42", + 0, + "^https?://(www\\.)?strava\\.com/", + 10, + [], + [ + { + "e": 1161 + } + ], + [ + { + "v": 1161 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1161 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1161 + } + ], + {} + ], + [ + 1, + "auto_AU_sugarlab.ai_t1m", + 0, + "^https?://(www\\.)?sugarlab\\.ai/", + 10, + [], + [ + { + "e": 1208 + } + ], + [ + { + "v": 1208 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1208 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1208 + } + ], + {} + ], + [ + 1, + "auto_AU_sunbeam.com.au_tbw", + 0, + "^https?://(www\\.)?sunbeam\\.com\\.au/", + 10, + [], + [ + { + "e": 1209 + } + ], + [ + { + "v": 1209 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1209 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1209 + } + ], + {} + ], + [ + 1, + "auto_AU_support.eset.com_ehu", + 0, + "^https?://(www\\.)?support\\.eset\\.com/", + 10, + [], + [ + { + "e": 1138 + } + ], + [ + { + "v": 1138 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1138 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1138 + } + ], + {} + ], + [ + 1, + "auto_AU_support.hpe.com_t5g", + 0, + "^https?://(www\\.)?support\\.hpe\\.com/", + 10, + [], + [ + { + "e": 1162 + } + ], + [ + { + "v": 1162 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1162 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1162 + } + ], + {} + ], + [ + 1, + "auto_AU_support.lenovo.com_bse_+1", + 0, + "^https?://(www\\.)?support\\.lenovo\\.com/|^https?://(www\\.)?pcsupport\\.lenovo\\.com/", + 10, + [], + [ + { + "e": 1165 + } + ], + [ + { + "v": 1165 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1165 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1165 + } + ], + {} + ], + [ + 1, + "auto_AU_support.nordvpn.com_qu8_+3", + 0, + "^https?://(www\\.)?support\\.nordvpn\\.com/|^https?://(www\\.)?nordvpn\\.com/|^https?://(www\\.)?saily\\.com/|^https?://(www\\.)?nordpass\\.com/", + 10, + [], + [ + { + "e": 1166 + } + ], + [ + { + "v": 1166 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1166 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1166 + } + ], + {} + ], + [ + 1, + "auto_AU_suppsworld.com.au_z8q", + 0, + "^https?://(www\\.)?suppsworld\\.com\\.au/", + 10, + [], + [ + { + "e": 1169 + } + ], + [ + { + "v": 1169 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1169 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1169 + } + ], + {} + ], + [ + 1, + "auto_AU_synapse.org_o14", + 0, + "^https?://(www\\.)?synapse\\.org/", + 10, + [], + [ + { + "e": 2611 + } + ], + [ + { + "v": 2611 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2611 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2611 + } + ], + {} + ], + [ + 1, + "auto_AU_systoolsgroup.com_3if", + 0, + "^https?://(www\\.)?systoolsgroup\\.com/", + 10, + [], + [ + { + "e": 1273 + } + ], + [ + { + "v": 1273 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1273 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1273 + } + ], + {} + ], + [ + 1, + "auto_AU_taronga.org.au_f6n", + 0, + "^https?://(www\\.)?taronga\\.org\\.au/", + 10, + [], + [ + { + "e": 1035 + } + ], + [ + { + "v": 1035 + } + ], + [ + { + "c": 1035 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_tecadmin.net_llp", + 0, + "^https?://(www\\.)?tecadmin\\.net/", + 10, + [], + [ + { + "e": 1172 + } + ], + [ + { + "v": 1172 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1172 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1172 + } + ], + {} + ], + [ + 1, + "auto_AU_telekom.hu_4lu", + 0, + "^https?://(www\\.)?telekom\\.hu/", + 10, + [], + [ + { + "e": 805 + } + ], + [ + { + "v": 805 + } + ], + [ + { + "wait": 500 + }, + { + "c": 805 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 805 + } + ], + {} + ], + [ + 1, + "auto_AU_tencentcloud.com_94g", + 0, + "^https?://(www\\.)?tencentcloud\\.com/", + 10, + [], + [ + { + "e": 2612 + } + ], + [ + { + "v": 2612 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2612 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2612 + } + ], + {} + ], + [ + 1, + "auto_AU_thepackengers.com_92o", + 0, + "^https?://(www\\.)?thepackengers\\.com/", + 10, + [], + [ + { + "e": 2613 + } + ], + [ + { + "v": 2613 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2613 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2613 + } + ], + {} + ], + [ + 1, + "auto_AU_theperfectmatch-lufthansagroup.com_6kv_+2", + 0, + "^https?://(www\\.)?theperfectmatch-lufthansagroup\\.com/|^https?://(www\\.)?globus\\.de/|^https?://(www\\.)?produkte\\.globus\\.de/", + 10, + [], + [ + { + "e": 1831 + } + ], + [ + { + "v": 1831 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1831 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1831 + } + ], + {} + ], + [ + 1, + "auto_AU_timsweather.au_35p", + 0, + "^https?://(www\\.)?timsweather\\.au/", + 10, + [], + [ + { + "e": 1450 + } + ], + [ + { + "v": 1450 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1450 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1450 + } + ], + {} + ], + [ + 1, + "auto_AU_tina.io_pzt", + 0, + "^https?://(www\\.)?tina\\.io/", + 10, + [], + [ + { + "e": 1274 + } + ], + [ + { + "v": 1274 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1274 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1274 + } + ], + {} + ], + [ + 1, + "auto_AU_tinder.com_415", + 0, + "^https?://(www\\.)?tinder\\.com/", + 10, + [], + [ + { + "e": 1174 + } + ], + [ + { + "v": 1174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1174 + } + ], + {} + ], + [ + 1, + "auto_AU_tinyurl.com_jdq", + 0, + "^https?://(www\\.)?tinyurl\\.com/", + 10, + [], + [ + { + "e": 1552 + } + ], + [ + { + "v": 1552 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1552 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1552 + } + ], + {} + ], + [ + 1, + "auto_AU_tourismnewbrunswick.ca_bjd", + 0, + "^https?://(www\\.)?tourismnewbrunswick\\.ca/", + 10, + [], + [ + { + "e": 806 + } + ], + [ + { + "v": 806 + } + ], + [ + { + "wait": 500 + }, + { + "c": 806 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 806 + } + ], + {} + ], + [ + 1, + "auto_AU_tradersunion.com_8h0", + 0, + "^https?://(www\\.)?tradersunion\\.com/", + 10, + [], + [ + { + "e": 1177 + } + ], + [ + { + "v": 1177 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1177 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1177 + } + ], + {} + ], + [ + 1, + "auto_AU_trafficjunky.com_uy2", + 0, + "^https?://(www\\.)?trafficjunky\\.com/", + 10, + [], + [ + { + "e": 2614 + } + ], + [ + { + "v": 2614 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2614 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2614 + } + ], + {} + ], + [ + 1, + "auto_AU_transfercar.com.au_h96", + 0, + "^https?://(www\\.)?transfercar\\.com\\.au/", + 10, + [], + [ + { + "e": 1178 + } + ], + [ + { + "v": 1178 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1178 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1178 + } + ], + {} + ], + [ + 1, + "auto_AU_tripcentral.ca_v7v", + 0, + "^https?://(www\\.)?tripcentral\\.ca/", + 10, + [], + [ + { + "e": 807 + } + ], + [ + { + "v": 807 + } + ], + [ + { + "wait": 500 + }, + { + "c": 807 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 807 + } + ], + {} + ], + [ + 1, + "auto_AU_u-buy.com.au_rg0", + 0, + "^https?://(www\\.)?u-buy\\.com\\.au/", + 10, + [], + [ + { + "e": 1179 + } + ], + [ + { + "v": 1179 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1179 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1179 + } + ], + {} + ], + [ + 1, + "auto_AU_under-dogs.net_fkv", + 0, + "^https?://(www\\.)?under-dogs\\.net/", + 10, + [], + [ + { + "e": 2615 + } + ], + [ + { + "v": 2615 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2615 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2615 + } + ], + {} + ], + [ + 1, + "auto_AU_unihosted.com_bnt", + 0, + "^https?://(www\\.)?unihosted\\.com/", + 10, + [], + [ + { + "e": 1180 + } + ], + [ + { + "v": 1180 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1180 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1180 + } + ], + {} + ], + [ + 1, + "auto_AU_uniquephotiquebychristygraham.zenfoliosite.com_eh6", + 0, + "^https?://(www\\.)?uniquephotiquebychristygraham\\.zenfoliosite\\.com/", + 10, + [], + [ + { + "e": 2903 + } + ], + [ + { + "v": 2903 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2903 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2903 + } + ], + {} + ], + [ + 1, + "auto_AU_unitedrugby.com_6q6", + 0, + "^https?://(www\\.)?unitedrugby\\.com/", + 10, + [], + [ + { + "e": 2616 + } + ], + [ + { + "v": 2616 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2616 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2616 + } + ], + {} + ], + [ + 1, + "auto_AU_unity.com_gvp_+4", + 0, + "^https?://(www\\.)?unity\\.com/|^https?://(www\\.)?everquest\\.allakhazam\\.com/|^https?://(www\\.)?slate\\.com/|^https?://(www\\.)?groupon\\.co\\.uk/|^https?://(www\\.)?burpee\\.com/", + 10, + [], + [ + { + "e": 1183 + } + ], + [ + { + "v": 1183 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1183 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1183 + } + ], + {} + ], + [ + 1, + "auto_AU_urallawoolroom.com.au_3ng", + 0, + "^https?://(www\\.)?urallawoolroom\\.com\\.au/", + 10, + [], + [ + { + "e": 1039 + } + ], + [ + { + "v": 1039 + } + ], + [ + { + "c": 1039 + } + ], + [], + {} + ], + [ + 1, + "auto_AU_viewsonic.com_0nq", + 0, + "^https?://(www\\.)?viewsonic\\.com/", + 10, + [], + [ + { + "e": 1332 + } + ], + [ + { + "v": 1332 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1332 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1332 + } + ], + {} + ], + [ + 1, + "auto_AU_vinos.de_w6h_+1", + 0, + "^https?://(www\\.)?vinos\\.de/|^https?://(www\\.)?vinos\\.ch/", + 10, + [], + [ + { + "e": 1728 + } + ], + [ + { + "v": 1728 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1728 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1728 + } + ], + {} + ], + [ + 1, + "auto_AU_visa.com.au_j3q_+2", + 0, + "^https?://(www\\.)?visa\\.com\\.au/|^https?://(www\\.)?visa\\.ca/|^https?://(www\\.)?usa\\.visa\\.com/", + 10, + [], + [ + { + "e": 1184 + } + ], + [ + { + "v": 1184 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1184 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1184 + } + ], + {} + ], + [ + 1, + "auto_AU_visitballarat.com.au_891", + 0, + "^https?://(www\\.)?visitballarat\\.com\\.au/", + 10, + [], + [ + { + "e": 1363 + } + ], + [ + { + "v": 1363 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1363 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1363 + } + ], + {} + ], + [ + 1, + "auto_AU_vosan.co_d7y_+1", + 0, + "^https?://(www\\.)?vosan\\.co/|^https?://(www\\.)?ddw\\.nl/", + 10, + [], + [ + { + "e": 1186 + } + ], + [ + { + "v": 1186 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1186 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1186 + } + ], + {} + ], + [ + 1, + "auto_AU_vrporn.com_7j8", + 0, + "^https?://(www\\.)?vrporn\\.com/", + 10, + [], + [ + { + "e": 1193 + } + ], + [ + { + "v": 1193 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1193 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1193 + } + ], + {} + ], + [ + 1, + "auto_AU_wavlink.com_co5", + 0, + "^https?://(www\\.)?wavlink\\.com/", + 10, + [], + [ + { + "e": 1201 + } + ], + [ + { + "v": 1201 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1201 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1201 + } + ], + {} + ], + [ + 1, + "auto_AU_whitepages.co.com_4cs", + 0, + "^https?://(www\\.)?whitepages\\.co\\.com/", + 10, + [], + [ + { + "e": 1570 + } + ], + [ + { + "v": 1570 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1570 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1570 + } + ], + {} + ], + [ + 1, + "auto_AU_wikifeet.com_rm1_+6", + 0, + "^https?://(www\\.)?wikifeet\\.com/|^https?://(www\\.)?wikifeetx\\.com/|^https?://(www\\.)?frenchestateagents\\.com/|^https?://(www\\.)?counciltax\\.info/|^https?://(www\\.)?fanger\\.no/|^https?://(www\\.)?ices\\.dk/|^https?://(www\\.)?newsinenglish\\.no/", + 10, + [], + [ + { + "e": 1331 + } + ], + [ + { + "v": 1331 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1331 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1331 + } + ], + {} + ], + [ + 1, + "auto_AU_wikifeetx.com_lw4", + 0, + "^https?://(www\\.)?wikifeetx\\.com/", + 10, + [], + [ + { + "e": 1042 + } + ], + [ + { + "v": 1042 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1042 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1042 + } + ], + {} + ], + [ + 1, + "auto_AU_y4kconvert.com_5p1", + 0, + "^https?://(www\\.)?y4kconvert\\.com/", + 10, + [], + [ + { + "e": 1143 + } + ], + [ + { + "v": 1143 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1143 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1143 + } + ], + {} + ], + [ + 1, + "auto_AU_yourusabiz.tech_jli_+1", + 0, + "^https?://(www\\.)?yourusabiz\\.tech/|^https?://(www\\.)?streamingthe\\.net/", + 10, + [], + [ + { + "e": 2581 + } + ], + [ + { + "v": 2581 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2581 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2581 + } + ], + {} + ], + [ + 1, + "auto_CA_123ink.ca_uhb", + 0, + "^https?://(www\\.)?123ink\\.ca/", + 10, + [], + [ + { + "e": 1203 + } + ], + [ + { + "v": 1203 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1203 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1203 + } + ], + {} + ], + [ + 1, + "auto_CA_211ontario.ca_zg3", + 0, + "^https?://(www\\.)?211ontario\\.ca/", + 10, + [], + [ + { + "e": 1618 + } + ], + [ + { + "v": 1618 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1618 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1618 + } + ], + {} + ], + [ + 1, + "auto_CA_407etr.com_wrd", + 0, + "^https?://(www\\.)?407etr\\.com/", + 10, + [], + [ + { + "e": 1204 + } + ], + [ + { + "v": 1204 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1204 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1204 + } + ], + {} + ], + [ + 1, + "auto_CA_admission.umontreal.ca_vi5_+3", + 0, + "^https?://(www\\.)?admission\\.umontreal\\.ca/|^https?://(www\\.)?registraire\\.umontreal\\.ca/|^https?://(www\\.)?ti\\.umontreal\\.ca/|^https?://(www\\.)?umontreal\\.ca/", + 10, + [], + [ + { + "e": 1211 + } + ], + [ + { + "v": 1211 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1211 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1211 + } + ], + {} + ], + [ + 1, + "auto_CA_airbnb.ca_d52_+1", + 0, + "^https?://(www\\.)?airbnb\\.ca/|^https?://(www\\.)?airbnb\\.co\\.uk/", + 10, + [], + [ + { + "e": 1214 + } + ], + [ + { + "v": 1214 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1214 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1214 + } + ], + {} + ], + [ + 1, + "auto_CA_algonquincollege.com_o8v", + 0, + "^https?://(www\\.)?algonquincollege\\.com/", + 10, + [], + [ + { + "e": 1722 + } + ], + [ + { + "v": 1722 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1722 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1722 + } + ], + {} + ], + [ + 1, + "auto_CA_arte.tv_7nv", + 0, + "^https?://(www\\.)?arte\\.tv/", + 10, + [], + [ + { + "e": 1048 + } + ], + [ + { + "v": 1048 + } + ], + [ + { + "c": 1048 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_babel.hathitrust.org_i6g", + 0, + "^https?://(www\\.)?babel\\.hathitrust\\.org/", + 10, + [], + [ + { + "e": 1199 + } + ], + [ + { + "v": 1199 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1199 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1199 + } + ], + {} + ], + [ + 1, + "auto_CA_bahia-principe.com_nll", + 0, + "^https?://(www\\.)?bahia-principe\\.com/", + 10, + [], + [ + { + "e": 1752 + } + ], + [ + { + "v": 1752 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1752 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1752 + } + ], + {} + ], + [ + 1, + "auto_CA_banfflakelouise.com_4eg", + 0, + "^https?://(www\\.)?banfflakelouise\\.com/", + 10, + [], + [ + { + "e": 1225 + } + ], + [ + { + "v": 1225 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1225 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1225 + } + ], + {} + ], + [ + 1, + "auto_CA_belairdirect.com_wic", + 0, + "^https?://(www\\.)?belairdirect\\.com/", + 10, + [], + [ + { + "e": 1226 + } + ], + [ + { + "v": 1226 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1226 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1226 + } + ], + {} + ], + [ + 1, + "auto_CA_bestreviews.guide_5qu", + 0, + "^https?://(www\\.)?bestreviews\\.guide/", + 10, + [], + [ + { + "e": 1758 + } + ], + [ + { + "v": 1758 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1758 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1758 + } + ], + {} + ], + [ + 1, + "auto_CA_bet365.bet.br_kkx", + 0, + "^https?://(www\\.)?bet365\\.bet\\.br/", + 10, + [], + [ + { + "e": 1004 + } + ], + [ + { + "v": 1004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1004 + } + ], + {} + ], + [ + 1, + "auto_CA_bitget.com_55j", + 0, + "^https?://(www\\.)?bitget\\.com/", + 10, + [], + [ + { + "e": 1375 + } + ], + [ + { + "v": 1375 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1375 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1375 + } + ], + {} + ], + [ + 1, + "auto_CA_blackdiamondequipment.com_dwp_+6", + 0, + "^https?://(www\\.)?blackdiamondequipment\\.com/|^https?://(www\\.)?facetofacegames\\.com/|^https?://(www\\.)?suzyshier\\.com/|^https?://(www\\.)?urban-planet\\.com/|^https?://(www\\.)?eu\\.blackdiamondequipment\\.com/|^https?://(www\\.)?bushwear\\.co\\.uk/|^https?://(www\\.)?shop\\.panasonic\\.com/", + 10, + [], + [ + { + "e": 1764 + } + ], + [ + { + "v": 1764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1764 + } + ], + {} + ], + [ + 1, + "auto_CA_blsindia-canada.com_qqp", + 0, + "^https?://(www\\.)?blsindia-canada\\.com/", + 10, + [], + [ + { + "e": 1218 + } + ], + [ + { + "v": 1218 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1218 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1218 + } + ], + {} + ], + [ + 1, + "auto_CA_bluemountain.com_i7b", + 0, + "^https?://(www\\.)?bluemountain\\.com/", + 10, + [], + [ + { + "e": 1790 + } + ], + [ + { + "v": 1790 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1790 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1790 + } + ], + {} + ], + [ + 1, + "auto_CA_boatdealers.ca_wpl_+1", + 0, + "^https?://(www\\.)?boatdealers\\.ca/|^https?://(www\\.)?rvdealers\\.ca/", + 10, + [], + [ + { + "e": 1227 + } + ], + [ + { + "v": 1227 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1227 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1227 + } + ], + {} + ], + [ + 1, + "auto_CA_brazzers.com_kik", + 0, + "^https?://(www\\.)?brazzers\\.com/", + 10, + [], + [ + { + "e": 1228 + } + ], + [ + { + "v": 1228 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1228 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1228 + } + ], + {} + ], + [ + 1, + "auto_CA_busbud.com_0sh", + 0, + "^https?://(www\\.)?busbud\\.com/", + 10, + [], + [ + { + "e": 1835 + } + ], + [ + { + "v": 1835 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1835 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1835 + } + ], + {} + ], + [ + 1, + "auto_CA_caainsurancecompany.ca_n0d", + 0, + "^https?://(www\\.)?caainsurancecompany\\.ca/", + 10, + [], + [ + { + "e": 1230 + } + ], + [ + { + "v": 1230 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1230 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1230 + } + ], + {} + ], + [ + 1, + "auto_CA_cegeplimoilou.ca_9tg", + 0, + "^https?://(www\\.)?cegeplimoilou\\.ca/", + 10, + [], + [ + { + "e": 1231 + } + ], + [ + { + "v": 1231 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1231 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1231 + } + ], + {} + ], + [ + 1, + "auto_CA_cfo.coop_edx", + 0, + "^https?://(www\\.)?cfo\\.coop/", + 10, + [], + [ + { + "e": 1233 + } + ], + [ + { + "v": 1233 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1233 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1233 + } + ], + {} + ], + [ + 1, + "auto_CA_chipolo.net_zo9", + 0, + "^https?://(www\\.)?chipolo\\.net/", + 10, + [], + [ + { + "e": 808 + } + ], + [ + { + "v": 808 + } + ], + [ + { + "wait": 500 + }, + { + "c": 808 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 808 + } + ], + {} + ], + [ + 1, + "auto_CA_cmpa-acpm.ca_nja", + 0, + "^https?://(www\\.)?cmpa-acpm\\.ca/", + 10, + [], + [ + { + "e": 1025 + } + ], + [ + { + "v": 1025 + } + ], + [ + { + "c": 1025 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_conservationhamilton.ca_h7f", + 0, + "^https?://(www\\.)?conservationhamilton\\.ca/", + 10, + [], + [ + { + "e": 1364 + } + ], + [ + { + "v": 1364 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1364 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1364 + } + ], + {} + ], + [ + 1, + "auto_CA_cooper-electric.com_auh_+2", + 0, + "^https?://(www\\.)?cooper-electric\\.com/|^https?://(www\\.)?needco\\.com/|^https?://(www\\.)?worldelectricsupply\\.com/", + 10, + [], + [ + { + "e": 809 + } + ], + [ + { + "v": 809 + } + ], + [ + { + "wait": 500 + }, + { + "c": 809 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 809 + } + ], + {} + ], + [ + 1, + "auto_CA_csagroup.org_3ho", + 0, + "^https?://(www\\.)?csagroup\\.org/", + 10, + [], + [ + { + "e": 1235 + } + ], + [ + { + "v": 1235 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1235 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1235 + } + ], + {} + ], + [ + 1, + "auto_CA_denniskirk.com_ezr", + 0, + "^https?://(www\\.)?denniskirk\\.com/", + 10, + [], + [ + { + "e": 1239 + } + ], + [ + { + "v": 1239 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1239 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1239 + } + ], + {} + ], + [ + 1, + "auto_CA_dinarrecaps.com_caj", + 0, + "^https?://(www\\.)?dinarrecaps\\.com/", + 10, + [], + [ + { + "e": 2546 + } + ], + [ + { + "v": 2546 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2546 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2546 + } + ], + {} + ], + [ + 1, + "auto_CA_downornot.net_aqe_+1", + 0, + "^https?://(www\\.)?downornot\\.net/|^https?://(www\\.)?novaloca\\.com/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_CA_doyondespres.com_4jr", + 0, + "^https?://(www\\.)?doyondespres\\.com/", + 10, + [], + [ + { + "e": 2492 + } + ], + [ + { + "v": 2492 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2492 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2492 + } + ], + {} + ], + [ + 1, + "auto_CA_en.pdfdrive.to_6n3_+1", + 0, + "^https?://(www\\.)?en\\.pdfdrive\\.to/|^https?://(www\\.)?pdfdrive\\.to/", + 10, + [], + [ + { + "e": 1285 + } + ], + [ + { + "v": 1285 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1285 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1285 + } + ], + {} + ], + [ + 1, + "auto_CA_f6s.com_yjw", + 0, + "^https?://(www\\.)?f6s\\.com/", + 10, + [], + [ + { + "e": 1058 + } + ], + [ + { + "v": 1058 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1058 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1058 + } + ], + {} + ], + [ + 1, + "auto_CA_fleshbot.com_m3j", + 0, + "^https?://(www\\.)?fleshbot\\.com/", + 10, + [], + [ + { + "e": 1389 + } + ], + [ + { + "v": 1389 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1389 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1389 + } + ], + {} + ], + [ + 1, + "auto_CA_forum.prusa3d.com_uct_+1", + 0, + "^https?://(www\\.)?forum\\.prusa3d\\.com/|^https?://(www\\.)?britishironworkcentre\\.co\\.uk/", + 10, + [], + [ + { + "e": 2721 + } + ], + [ + { + "v": 2721 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2721 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2721 + } + ], + {} + ], + [ + 1, + "auto_CA_fullscript.com_u1h", + 0, + "^https?://(www\\.)?fullscript\\.com/", + 10, + [], + [ + { + "e": 1244 + } + ], + [ + { + "v": 1244 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1244 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1244 + } + ], + {} + ], + [ + 1, + "auto_CA_fyidoctors.com_25j", + 0, + "^https?://(www\\.)?fyidoctors\\.com/", + 10, + [], + [ + { + "e": 1110 + } + ], + [ + { + "v": 1110 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1110 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1110 + } + ], + {} + ], + [ + 1, + "auto_CA_gayporn.com_8w2", + 0, + "^https?://(www\\.)?gayporn\\.com/", + 10, + [], + [ + { + "e": 1403 + } + ], + [ + { + "v": 1403 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1403 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1403 + } + ], + {} + ], + [ + 1, + "auto_CA_golfavenue.ca_ero_+1", + 0, + "^https?://(www\\.)?golfavenue\\.ca/|^https?://(www\\.)?golfbidder\\.co\\.uk/", + 10, + [], + [ + { + "e": 1248 + } + ], + [ + { + "v": 1248 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1248 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1248 + } + ], + {} + ], + [ + 1, + "auto_CA_golftown.com_zcn", + 0, + "^https?://(www\\.)?golftown\\.com/", + 10, + [], + [ + { + "e": 1413 + } + ], + [ + { + "v": 1413 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1413 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1413 + } + ], + {} + ], + [ + 1, + "auto_CA_gowlingwlg.com_8pv", + 0, + "^https?://(www\\.)?gowlingwlg\\.com/", + 10, + [], + [ + { + "e": 1184 + } + ], + [ + { + "v": 1184 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1184 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1184 + } + ], + {} + ], + [ + 1, + "auto_CA_help.solidworks.com_2kv", + 0, + "^https?://(www\\.)?help\\.solidworks\\.com/", + 10, + [], + [ + { + "e": 1189 + } + ], + [ + { + "v": 1189 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1189 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1189 + } + ], + {} + ], + [ + 1, + "auto_CA_hlinkagretzkycup.ca_xc9", + 0, + "^https?://(www\\.)?hlinkagretzkycup\\.ca/", + 10, + [], + [ + { + "e": 1249 + } + ], + [ + { + "v": 1249 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1249 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1249 + } + ], + {} + ], + [ + 1, + "auto_CA_homehardware.ca_4ih", + 0, + "^https?://(www\\.)?homehardware\\.ca/", + 10, + [], + [ + { + "e": 1061 + } + ], + [ + { + "v": 1061 + } + ], + [ + { + "c": 1061 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_hostinger.com_4yj", + 0, + "^https?://(www\\.)?hostinger\\.com/", + 10, + [], + [ + { + "e": 1250 + } + ], + [ + { + "v": 1250 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1250 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1250 + } + ], + {} + ], + [ + 1, + "auto_CA_ikmultimedia.com_v93", + 0, + "^https?://(www\\.)?ikmultimedia\\.com/", + 10, + [], + [ + { + "e": 1062 + } + ], + [ + { + "v": 1062 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1062 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1062 + } + ], + {} + ], + [ + 1, + "auto_CA_inceptionai.ca_fl5", + 0, + "^https?://(www\\.)?inceptionai\\.ca/", + 10, + [], + [ + { + "e": 1891 + } + ], + [ + { + "v": 1891 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1891 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1891 + } + ], + {} + ], + [ + 1, + "auto_CA_ing.com_8kf", + 0, + "^https?://(www\\.)?ing\\.com/", + 10, + [], + [ + { + "e": 2594 + } + ], + [ + { + "v": 2594 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2594 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2594 + } + ], + {} + ], + [ + 1, + "auto_CA_insighttimer.com_kz1_+2", + 0, + "^https?://(www\\.)?insighttimer\\.com/|^https?://(www\\.)?braintree\\.gov\\.uk/|^https?://(www\\.)?onlinemortgageadvisor\\.co\\.uk/", + 10, + [], + [ + { + "e": 2264 + } + ], + [ + { + "v": 2264 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2264 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2264 + } + ], + {} + ], + [ + 1, + "auto_CA_intact.ca_gax", + 0, + "^https?://(www\\.)?intact\\.ca/", + 10, + [], + [ + { + "e": 1419 + } + ], + [ + { + "v": 1419 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1419 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1419 + } + ], + {} + ], + [ + 1, + "auto_CA_jane.app_9pk_+7", + 0, + "^https?://(www\\.)?jane\\.app/|^https?://(www\\.)?rentals\\.ca/|^https?://(www\\.)?rentboard\\.ca/|^https?://(www\\.)?rentfaster\\.ca/|^https?://(www\\.)?reviewed\\.com/|^https?://(www\\.)?powerland\\.co\\.uk/|^https?://(www\\.)?meesterdennis\\.nl/|^https?://(www\\.)?moaa\\.org/", + 10, + [], + [ + { + "e": 1307 + } + ], + [ + { + "v": 1307 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1307 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1307 + } + ], + {} + ], + [ + 1, + "auto_CA_keepersecurity.com_06v", + 0, + "^https?://(www\\.)?keepersecurity\\.com/", + 10, + [], + [ + { + "e": 1063 + } + ], + [ + { + "v": 1063 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1063 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1063 + } + ], + {} + ], + [ + 1, + "auto_CA_komoot.com_rde", + 0, + "^https?://(www\\.)?komoot\\.com/", + 10, + [], + [ + { + "e": 1224 + } + ], + [ + { + "v": 1224 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1224 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1224 + } + ], + {} + ], + [ + 1, + "auto_CA_lawyer.com_glx", + 0, + "^https?://(www\\.)?lawyer\\.com/", + 10, + [], + [ + { + "e": 1065 + } + ], + [ + { + "v": 1065 + } + ], + [ + { + "c": 1065 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_learn.ligonier.org_cb6", + 0, + "^https?://(www\\.)?learn\\.ligonier\\.org/", + 10, + [], + [ + { + "e": 1448 + } + ], + [ + { + "v": 1448 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1448 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1448 + } + ], + {} + ], + [ + 1, + "auto_CA_lectura-specs.com_hh2", + 0, + "^https?://(www\\.)?lectura-specs\\.com/", + 10, + [], + [ + { + "e": 1066 + } + ], + [ + { + "v": 1066 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1066 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1066 + } + ], + {} + ], + [ + 1, + "auto_CA_leger360.com_ild", + 0, + "^https?://(www\\.)?leger360\\.com/", + 10, + [], + [ + { + "e": 2498 + } + ], + [ + { + "v": 2498 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2498 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2498 + } + ], + {} + ], + [ + 1, + "auto_CA_lethpolytech.ca_1r1", + 0, + "^https?://(www\\.)?lethpolytech\\.ca/", + 10, + [], + [ + { + "e": 1999 + } + ], + [ + { + "v": 1999 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1999 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1999 + } + ], + {} + ], + [ + 1, + "auto_CA_libgen.help_7s8", + 0, + "^https?://(www\\.)?libgen\\.help/", + 10, + [], + [ + { + "e": 2004 + } + ], + [ + { + "v": 2004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2004 + } + ], + {} + ], + [ + 1, + "auto_CA_merx.com_2nd", + 0, + "^https?://(www\\.)?merx\\.com/", + 10, + [], + [ + { + "e": 1261 + } + ], + [ + { + "v": 1261 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1261 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1261 + } + ], + {} + ], + [ + 1, + "auto_CA_metricfans.com_hfa", + 0, + "^https?://(www\\.)?metricfans\\.com/", + 10, + [], + [ + { + "e": 2027 + } + ], + [ + { + "v": 2027 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2027 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2027 + } + ], + {} + ], + [ + 1, + "auto_CA_mila.quebec_28x", + 0, + "^https?://(www\\.)?mila\\.quebec/", + 10, + [], + [ + { + "e": 1246 + } + ], + [ + { + "v": 1246 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1246 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1246 + } + ], + {} + ], + [ + 1, + "auto_CA_milestonesrestaurants.com_j2k", + 0, + "^https?://(www\\.)?milestonesrestaurants\\.com/", + 10, + [], + [ + { + "e": 2040 + } + ], + [ + { + "v": 2040 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2040 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2040 + } + ], + {} + ], + [ + 1, + "auto_CA_nationalarchives.gov.uk_vgx", + 0, + "^https?://(www\\.)?webarchive\\.nationalarchives\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2081 + } + ], + [ + { + "v": 2081 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2081 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2081 + } + ], + {} + ], + [ + 1, + "auto_CA_newsnetwork.mayoclinic.org_hwh", + 0, + "^https?://(www\\.)?newsnetwork\\.mayoclinic\\.org/", + 10, + [], + [ + { + "e": 2169 + } + ], + [ + { + "v": 2169 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2169 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2169 + } + ], + {} + ], + [ + 1, + "auto_CA_nike.com_aer", + 0, + "^https?://(www\\.)?nike\\.com/", + 10, + [], + [ + { + "e": 1264 + } + ], + [ + { + "v": 1264 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1264 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1264 + } + ], + {} + ], + [ + 1, + "auto_CA_no.co_2uo", + 0, + "^https?://(www\\.)?no\\.co/", + 10, + [], + [ + { + "e": 2252 + } + ], + [ + { + "v": 2252 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2252 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2252 + } + ], + {} + ], + [ + 1, + "auto_CA_nutaku.net_35a", + 0, + "^https?://(www\\.)?nutaku\\.net/", + 10, + [], + [ + { + "e": 1269 + } + ], + [ + { + "v": 1269 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1269 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1269 + } + ], + {} + ], + [ + 1, + "auto_CA_oip.manual.canon_o3l", + 0, + "^https?://(www\\.)?oip\\.manual\\.canon/", + 10, + [], + [ + { + "e": 1270 + } + ], + [ + { + "v": 1270 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1270 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1270 + } + ], + {} + ], + [ + 1, + "auto_CA_olympic.ca_rdr", + 0, + "^https?://(www\\.)?olympic\\.ca/", + 10, + [], + [ + { + "e": 1271 + } + ], + [ + { + "v": 1271 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1271 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1271 + } + ], + {} + ], + [ + 1, + "auto_CA_opensnow.com_nra", + 0, + "^https?://(www\\.)?opensnow\\.com/", + 10, + [], + [ + { + "e": 2257 + } + ], + [ + { + "v": 2257 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2257 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2257 + } + ], + {} + ], + [ + 1, + "auto_CA_outboarddealers.ca_mt8", + 0, + "^https?://(www\\.)?outboarddealers\\.ca/", + 10, + [], + [ + { + "e": 1053 + } + ], + [ + { + "v": 1053 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1053 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1053 + } + ], + {} + ], + [ + 1, + "auto_CA_outdooractive.com_41n_+4", + 0, + "^https?://(www\\.)?outdooractive\\.com/|^https?://(www\\.)?maps\\.engadin\\.ch/|^https?://(www\\.)?outdoor\\.glarnerland\\.ch/|^https?://(www\\.)?altenberg\\.de/|^https?://(www\\.)?tourenplaner-rheinland-pfalz\\.de/", + 10, + [], + [ + { + "e": 1284 + } + ], + [ + { + "v": 1284 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1284 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1284 + } + ], + {} + ], + [ + 1, + "auto_CA_papajohns.ca_n5j", + 0, + "^https?://(www\\.)?papajohns\\.ca/", + 10, + [], + [ + { + "e": 2451 + } + ], + [ + { + "v": 2451 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2451 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2451 + } + ], + {} + ], + [ + 1, + "auto_CA_peekyou.com_6tf", + 0, + "^https?://(www\\.)?peekyou\\.com/", + 10, + [], + [ + { + "e": 1287 + } + ], + [ + { + "v": 1287 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1287 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1287 + } + ], + {} + ], + [ + 1, + "auto_CA_playitagainsports.com_b0i", + 0, + "^https?://(www\\.)?playitagainsports\\.com/", + 10, + [], + [ + { + "e": 2217 + } + ], + [ + { + "v": 2217 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2217 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2217 + } + ], + {} + ], + [ + 1, + "auto_CA_plex.tv_ee4_+1", + 0, + "^https?://(www\\.)?plex\\.tv/|^https?://(www\\.)?support\\.plex\\.tv/", + 10, + [], + [ + { + "e": 1296 + } + ], + [ + { + "v": 1296 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1296 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1296 + } + ], + {} + ], + [ + 1, + "auto_CA_promessedefleurs.com_noy_+1", + 0, + "^https?://(www\\.)?promessedefleurs\\.com/|^https?://(www\\.)?meillandrichardier\\.com/", + 10, + [], + [ + { + "e": 1297 + } + ], + [ + { + "v": 1297 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1297 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1297 + } + ], + {} + ], + [ + 1, + "auto_CA_psref.lenovo.com_sss", + 0, + "^https?://(www\\.)?psref\\.lenovo\\.com/", + 10, + [], + [ + { + "e": 2276 + } + ], + [ + { + "v": 2276 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2276 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2276 + } + ], + {} + ], + [ + 1, + "auto_CA_qehomelinens.com_mrf_+7", + 0, + "^https?://(www\\.)?qehomelinens\\.com/|^https?://(www\\.)?store\\.theshootingcentre\\.com/|^https?://(www\\.)?system76\\.com/|^https?://(www\\.)?thedrardisshow\\.com/|^https?://(www\\.)?drapertools\\.com/|^https?://(www\\.)?heinnie\\.com/|^https?://(www\\.)?worldofwater\\.com/|^https?://(www\\.)?tackledirect\\.com/", + 10, + [], + [ + { + "e": 2217 + } + ], + [ + { + "v": 2217 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2217 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2217 + } + ], + {} + ], + [ + 1, + "auto_CA_raymondjames.ca_jke", + 0, + "^https?://(www\\.)?raymondjames\\.ca/", + 10, + [], + [ + { + "e": 1298 + } + ], + [ + { + "v": 1298 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1298 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1298 + } + ], + {} + ], + [ + 1, + "auto_CA_recyclemyelectronics.ca_h1p", + 0, + "^https?://(www\\.)?recyclemyelectronics\\.ca/", + 10, + [], + [ + { + "e": 2348 + } + ], + [ + { + "v": 2348 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2348 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2348 + } + ], + {} + ], + [ + 1, + "auto_CA_remarkable.com_kt9", + 0, + "^https?://(www\\.)?remarkable\\.com/", + 10, + [], + [ + { + "e": 1247 + } + ], + [ + { + "v": 1247 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1247 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1247 + } + ], + {} + ], + [ + 1, + "auto_CA_remitly.com_mm4", + 0, + "^https?://(www\\.)?remitly\\.com/", + 10, + [], + [ + { + "e": 1072 + } + ], + [ + { + "v": 1072 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1072 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1072 + } + ], + {} + ], + [ + 1, + "auto_CA_reshade.me_zsk", + 0, + "^https?://(www\\.)?reshade\\.me/", + 10, + [], + [ + { + "e": 1074 + } + ], + [ + { + "v": 1074 + } + ], + [ + { + "c": 1074 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_saint-lambert.ca_8rw", + 0, + "^https?://(www\\.)?saint-lambert\\.ca/", + 10, + [], + [ + { + "e": 1034 + } + ], + [ + { + "v": 1034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1034 + } + ], + {} + ], + [ + 1, + "auto_CA_sceneplus.ca_5zu", + 0, + "^https?://(www\\.)?sceneplus\\.ca/", + 10, + [], + [ + { + "e": 1260 + } + ], + [ + { + "v": 1260 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1260 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1260 + } + ], + {} + ], + [ + 1, + "auto_CA_scu.mb.ca_mqv", + 0, + "^https?://(www\\.)?scu\\.mb\\.ca/", + 10, + [], + [ + { + "e": 2526 + } + ], + [ + { + "v": 2526 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2550 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2526 + } + ], + {} + ], + [ + 1, + "auto_CA_semrush.com_ygc", + 0, + "^https?://(www\\.)?semrush\\.com/", + 10, + [], + [ + { + "e": 1313 + } + ], + [ + { + "v": 1313 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1313 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1313 + } + ], + {} + ], + [ + 1, + "auto_CA_sheetmusicplus.com_b7d", + 0, + "^https?://(www\\.)?sheetmusicplus\\.com/", + 10, + [], + [ + { + "e": 1281 + } + ], + [ + { + "v": 1281 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1281 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1281 + } + ], + {} + ], + [ + 1, + "auto_CA_skipthedishes.com_1sg", + 0, + "^https?://(www\\.)?skipthedishes\\.com/", + 10, + [], + [ + { + "e": 1077 + } + ], + [ + { + "v": 1077 + } + ], + [ + { + "c": 1077 + } + ], + [], + {} + ], + [ + 1, + "auto_CA_sportsinjuryclinic.net_6mf", + 0, + "^https?://(www\\.)?sportsinjuryclinic\\.net/", + 10, + [], + [ + { + "e": 1492 + } + ], + [ + { + "v": 1492 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1492 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1492 + } + ], + {} + ], + [ + 1, + "auto_CA_stclaircollege.ca_fj8", + 0, + "^https?://(www\\.)?stclaircollege\\.ca/", + 10, + [], + [ + { + "e": 1078 + } + ], + [ + { + "v": 1078 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1078 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1078 + } + ], + {} + ], + [ + 1, + "auto_CA_stripe.com_jib", + 0, + "^https?://(www\\.)?stripe\\.com/", + 10, + [], + [ + { + "e": 1321 + } + ], + [ + { + "v": 1321 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1321 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1321 + } + ], + {} + ], + [ + 1, + "auto_CA_studium.umontreal.ca_ig3", + 0, + "^https?://(www\\.)?studium\\.umontreal\\.ca/", + 10, + [], + [ + { + "e": 2566 + } + ], + [ + { + "v": 2566 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2566 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2566 + } + ], + {} + ], + [ + 1, + "auto_CA_teppermans.com_3d8", + 0, + "^https?://(www\\.)?teppermans\\.com/", + 10, + [], + [ + { + "e": 1323 + } + ], + [ + { + "v": 1323 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1323 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1323 + } + ], + {} + ], + [ + 1, + "auto_CA_ticketsource.com_kiv", + 0, + "^https?://(www\\.)?ticketsource\\.com/", + 10, + [], + [ + { + "e": 2898 + } + ], + [ + { + "v": 2898 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2898 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2898 + } + ], + {} + ], + [ + 1, + "auto_CA_tirerack.com_j7q", + 0, + "^https?://(www\\.)?tirerack\\.com/", + 10, + [], + [ + { + "e": 1502 + } + ], + [ + { + "v": 1502 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1502 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1502 + } + ], + {} + ], + [ + 1, + "auto_CA_tourismeoutaouais.com_w22", + 0, + "^https?://(www\\.)?tourismeoutaouais\\.com/", + 10, + [], + [ + { + "e": 1324 + } + ], + [ + { + "v": 1324 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1324 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1324 + } + ], + {} + ], + [ + 1, + "auto_CA_toxigon.com_v81", + 0, + "^https?://(www\\.)?toxigon\\.com/", + 10, + [], + [ + { + "e": 1507 + } + ], + [ + { + "v": 1507 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1507 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1507 + } + ], + {} + ], + [ + 1, + "auto_CA_tractorpartsasap.com_tm5", + 0, + "^https?://(www\\.)?tractorpartsasap\\.com/", + 10, + [], + [ + { + "e": 1095 + } + ], + [ + { + "v": 1095 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1095 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1095 + } + ], + {} + ], + [ + 1, + "auto_CA_troybilt.ca_2mo", + 0, + "^https?://(www\\.)?troybilt\\.ca/", + 10, + [], + [ + { + "e": 1140 + } + ], + [ + { + "v": 1140 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1140 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1140 + } + ], + {} + ], + [ + 1, + "auto_CA_ubereats.com_4nx", + 0, + "^https?://(www\\.)?ubereats\\.com/", + 10, + [], + [ + { + "e": 1325 + } + ], + [ + { + "v": 1325 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1325 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1325 + } + ], + {} + ], + [ + 1, + "auto_CA_vrbangers.com_l3h", + 0, + "^https?://(www\\.)?vrbangers\\.com/", + 10, + [], + [ + { + "e": 1328 + } + ], + [ + { + "v": 1328 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1328 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1328 + } + ], + {} + ], + [ + 1, + "auto_CA_vrporngalaxy.com_nw8_+1", + 0, + "^https?://(www\\.)?vrporngalaxy\\.com/|^https?://(www\\.)?vrhump\\.com/", + 10, + [], + [ + { + "e": 1193 + } + ], + [ + { + "v": 1193 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1193 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1193 + } + ], + {} + ], + [ + 1, + "auto_CA_wealthsimple.com_kgz", + 0, + "^https?://(www\\.)?wealthsimple\\.com/", + 10, + [], + [ + { + "e": 1329 + } + ], + [ + { + "v": 1329 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1329 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1329 + } + ], + {} + ], + [ + 1, + "auto_CA_westmount.org_l00", + 0, + "^https?://(www\\.)?westmount\\.org/", + 10, + [], + [ + { + "e": 1082 + } + ], + [ + { + "v": 1082 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1082 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1082 + } + ], + {} + ], + [ + 1, + "auto_CA_xplore.ca_wwx", + 0, + "^https?://(www\\.)?xplore\\.ca/", + 10, + [], + [ + { + "e": 1333 + } + ], + [ + { + "v": 1333 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1333 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1333 + } + ], + {} + ], + [ + 1, + "auto_CA_zacks.com_jra", + 0, + "^https?://(www\\.)?zacks\\.com/", + 10, + [], + [ + { + "e": 1335 + } + ], + [ + { + "v": 1335 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1335 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1335 + } + ], + {} + ], + [ + 1, + "auto_CH_3djake.ch_6k2_+3", + 0, + "^https?://(www\\.)?3djake\\.ch/|^https?://(www\\.)?ecco-verde\\.ch/|^https?://(www\\.)?vitalabo\\.ch/|^https?://(www\\.)?3djake\\.de/", + 10, + [], + [ + { + "e": 1336 + } + ], + [ + { + "v": 1336 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1336 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1336 + } + ], + {} + ], + [ + 1, + "auto_CH_3dstore.ch_8om_+2", + 0, + "^https?://(www\\.)?3dstore\\.ch/|^https?://(www\\.)?modellmarkt24\\.ch/|^https?://(www\\.)?shop\\.magic-x\\.ch/", + 10, + [], + [ + { + "e": 1664 + } + ], + [ + { + "v": 1664 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1664 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1664 + } + ], + {} + ], + [ + 1, + "auto_CH_adelboden-lenk-kandersteg.ch_dgw_+3", + 0, + "^https?://(www\\.)?adelboden-lenk-kandersteg\\.ch/|^https?://(www\\.)?bergbahnen-gstaad\\.ch/|^https?://(www\\.)?gstaad\\.ch/|^https?://(www\\.)?lenk-simmental\\.ch/", + 10, + [], + [ + { + "e": 1337 + } + ], + [ + { + "v": 1337 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1337 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1337 + } + ], + {} + ], + [ + 1, + "auto_CH_admin.hostpoint.ch_evz", + 0, + "^https?://(www\\.)?admin\\.hostpoint\\.ch/", + 10, + [], + [ + { + "e": 2633 + } + ], + [ + { + "v": 2633 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2633 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2633 + } + ], + {} + ], + [ + 1, + "auto_CH_agrola.ch_9k1_+9", + 0, + "^https?://(www\\.)?agrola\\.ch/|^https?://(www\\.)?schuewo\\.ch/|^https?://(www\\.)?bank11\\.de/|^https?://(www\\.)?heizungsfinder\\.de/|^https?://(www\\.)?kawasaki\\.de/|^https?://(www\\.)?ludwigsburg\\.de/|^https?://(www\\.)?mhplus-krankenkasse\\.de/|^https?://(www\\.)?mieterhilfeverein\\.de/|^https?://(www\\.)?mydrg\\.de/|^https?://(www\\.)?uestra\\.de/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_CH_airbnb.de_83z", + 0, + "^https?://(www\\.)?airbnb\\.de/", + 10, + [], + [ + { + "e": 1214 + } + ], + [ + { + "v": 1214 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1214 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1214 + } + ], + {} + ], + [ + 1, + "auto_CH_allnatura.ch_zsu_+1", + 0, + "^https?://(www\\.)?allnatura\\.ch/|^https?://(www\\.)?allnatura\\.de/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_CH_alpenvereinaktiv.com_ms8_+1", + 0, + "^https?://(www\\.)?alpenvereinaktiv\\.com/|^https?://(www\\.)?maps\\.viamala\\.ch/", + 10, + [], + [ + { + "e": 1284 + } + ], + [ + { + "v": 1284 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1284 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1284 + } + ], + {} + ], + [ + 1, + "auto_CH_ameli.fr_w3a_+14", + 0, + "^https?://(www\\.)?ameli\\.fr/|^https?://(www\\.)?assurance-maladie\\.ameli\\.fr/|^https?://(www\\.)?icp\\.fr/|^https?://(www\\.)?naolib\\.fr/|^https?://(www\\.)?nimes\\.fr/|^https?://(www\\.)?ofb\\.gouv\\.fr/|^https?://(www\\.)?parisnanterre\\.fr/|^https?://(www\\.)?pedagogie\\.ac-nantes\\.fr/|^https?://(www\\.)?senat\\.fr/|^https?://(www\\.)?u-pec\\.fr/|^https?://(www\\.)?uca\\.fr/|^https?://(www\\.)?univ-cotedazur\\.fr/|^https?://(www\\.)?univ-lyon2\\.fr/|^https?://(www\\.)?univ-lyon3\\.fr/|^https?://(www\\.)?univ-nantes\\.fr/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_CH_ancestry.de_5tu", + 0, + "^https?://(www\\.)?ancestry\\.de/", + 10, + [], + [ + { + "e": 794 + } + ], + [ + { + "v": 794 + } + ], + [ + { + "wait": 500 + }, + { + "c": 794 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 794 + } + ], + {} + ], + [ + 1, + "auto_CH_android.bestsecret.com_m12_+2", + 0, + "^https?://(www\\.)?android\\.bestsecret\\.com/|^https?://(www\\.)?bestsecret\\.com/|^https?://(www\\.)?orders\\.bestsecret\\.com/", + 10, + [], + [ + { + "e": 1351 + } + ], + [ + { + "v": 1351 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1351 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1351 + } + ], + {} + ], + [ + 1, + "auto_CH_anwb.nl_bmd", + 0, + "^https?://(www\\.)?anwb\\.nl/", + 10, + [], + [ + { + "e": 1346 + } + ], + [ + { + "v": 1346 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1346 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1346 + } + ], + {} + ], + [ + 1, + "auto_CH_aoc.com_dib", + 0, + "^https?://(www\\.)?aoc\\.com/", + 10, + [], + [ + { + "e": 1301 + } + ], + [ + { + "v": 1301 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1301 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1301 + } + ], + {} + ], + [ + 1, + "auto_CH_aok.de_w0q", + 0, + "^https?://(www\\.)?aok\\.de/", + 10, + [], + [ + { + "e": 2664 + } + ], + [ + { + "v": 2664 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2664 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2664 + } + ], + {} + ], + [ + 1, + "auto_CH_aol.com_tp9", + 0, + "^https?://(www\\.)?consent\\.aol\\.com/", + 10, + [], + [ + { + "e": 2770 + } + ], + [ + { + "v": 2770 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2770 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2770 + } + ], + {} + ], + [ + 1, + "auto_CH_archive-ouverte.unige.ch_1pb", + 0, + "^https?://(www\\.)?archive-ouverte\\.unige\\.ch/", + 10, + [], + [ + { + "e": 1304 + } + ], + [ + { + "v": 1304 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1304 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1304 + } + ], + {} + ], + [ + 1, + "auto_CH_arket.com_er2", + 0, + "^https?://(www\\.)?arket\\.com/", + 10, + [], + [ + { + "e": 1349 + } + ], + [ + { + "v": 1349 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1349 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1349 + } + ], + {} + ], + [ + 1, + "auto_CH_arlesheim.ch_ji9_+2", + 0, + "^https?://(www\\.)?arlesheim\\.ch/|^https?://(www\\.)?ostermundigen\\.ch/|^https?://(www\\.)?rheinfelden\\.ch/", + 10, + [], + [ + { + "e": 1350 + } + ], + [ + { + "v": 1350 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1350 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1350 + } + ], + {} + ], + [ + 1, + "auto_CH_armtec.ch_hep", + 0, + "^https?://(www\\.)?armtec\\.ch/", + 10, + [], + [ + { + "e": 2813 + } + ], + [ + { + "v": 2813 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2813 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2813 + } + ], + {} + ], + [ + 1, + "auto_CH_arosaholiday.ch_xpm", + 0, + "^https?://(www\\.)?arosaholiday\\.ch/", + 10, + [], + [ + { + "e": 1354 + } + ], + [ + { + "v": 1354 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1354 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1354 + } + ], + {} + ], + [ + 1, + "auto_CH_arte.tv_ln7", + 0, + "^https?://(www\\.)?arte\\.tv/", + 10, + [], + [ + { + "e": 1361 + } + ], + [ + { + "v": 1361 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1361 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1361 + } + ], + {} + ], + [ + 1, + "auto_CH_arttv.ch_2lm_+1", + 0, + "^https?://(www\\.)?arttv\\.ch/|^https?://(www\\.)?medix-gruppenpraxis\\.ch/", + 10, + [], + [ + { + "e": 1362 + } + ], + [ + { + "v": 1362 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1362 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1362 + } + ], + {} + ], + [ + 1, + "auto_CH_asca.ch_5e6", + 0, + "^https?://(www\\.)?asca\\.ch/", + 10, + [], + [ + { + "e": 2832 + } + ], + [ + { + "v": 2832 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2832 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2832 + } + ], + {} + ], + [ + 1, + "auto_CH_ascona.il-centro.ch_59k", + 0, + "^https?://(www\\.)?ascona\\.il-centro\\.ch/", + 10, + [], + [ + { + "e": 1368 + } + ], + [ + { + "v": 1368 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1368 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1368 + } + ], + {} + ], + [ + 1, + "auto_CH_asga.ch_20o", + 0, + "^https?://(www\\.)?asga\\.ch/", + 10, + [], + [ + { + "e": 1322 + } + ], + [ + { + "v": 1322 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1322 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1322 + } + ], + {} + ], + [ + 1, + "auto_CH_ashemaletube.com_yc0_+4", + 0, + "^https?://(www\\.)?ashemaletube\\.com/|^https?://(www\\.)?boyfriend\\.tv/|^https?://(www\\.)?boyfriendtv\\.com/|^https?://(www\\.)?ashemale\\.com/|^https?://(www\\.)?pornoxo\\.com/", + 10, + [], + [ + { + "e": 1372 + } + ], + [ + { + "v": 1372 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1372 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1372 + } + ], + {} + ], + [ + 1, + "auto_CH_astag.ch_1if", + 0, + "^https?://(www\\.)?astag\\.ch/", + 10, + [], + [ + { + "e": 2847 + } + ], + [ + { + "v": 2847 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2847 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2847 + } + ], + {} + ], + [ + 1, + "auto_CH_augenzentrum-ono.ch_nyh", + 0, + "^https?://(www\\.)?augenzentrum-ono\\.ch/", + 10, + [], + [ + { + "e": 2851 + } + ], + [ + { + "v": 2851 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2851 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2851 + } + ], + {} + ], + [ + 1, + "auto_CH_auto-doc.ch_p4m", + 0, + "^https?://(www\\.)?auto-doc\\.ch/", + 10, + [], + [ + { + "e": 1002 + } + ], + [ + { + "v": 1002 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1002 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1002 + } + ], + {} + ], + [ + 1, + "auto_CH_auto.swiss_z35", + 0, + "^https?://(www\\.)?auto\\.swiss/", + 10, + [], + [ + { + "e": 2908 + } + ], + [ + { + "v": 2908 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2908 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2908 + } + ], + {} + ], + [ + 1, + "auto_CH_autodesk.com_uz5", + 0, + "^https?://(www\\.)?autodesk\\.com/", + 10, + [], + [ + { + "e": 2909 + } + ], + [ + { + "v": 2909 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2909 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2909 + } + ], + {} + ], + [ + 1, + "auto_CH_autodoc.de_krd", + 0, + "^https?://(www\\.)?autodoc\\.de/", + 10, + [], + [ + { + "e": 2910 + } + ], + [ + { + "v": 2910 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2910 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2910 + } + ], + {} + ], + [ + 1, + "auto_CH_autodoc24.ch_dzh", + 0, + "^https?://(www\\.)?autodoc24\\.ch/", + 10, + [], + [ + { + "e": 1002 + } + ], + [ + { + "v": 1002 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1002 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1002 + } + ], + {} + ], + [ + 1, + "auto_CH_autoersatzteile24.ch_vdy_+1", + 0, + "^https?://(www\\.)?autoersatzteile24\\.ch/|^https?://(www\\.)?autoersatzteile\\.de/", + 10, + [], + [ + { + "e": 1376 + } + ], + [ + { + "v": 1376 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1376 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1376 + } + ], + {} + ], + [ + 1, + "auto_CH_autonotizen.de_gn0_+21", + 0, + "^https?://(www\\.)?autonotizen\\.de/|^https?://(www\\.)?filmdienst\\.de/|^https?://(www\\.)?hochschwarzwald\\.de/|^https?://(www\\.)?konstanz\\.de/|^https?://(www\\.)?5g-anbieter\\.info/|^https?://(www\\.)?bayerischerbauernverband\\.de/|^https?://(www\\.)?breisgau-hochschwarzwald\\.de/|^https?://(www\\.)?camping-outdoorshop\\.de/|^https?://(www\\.)?elektro-wandelt\\.de/|^https?://(www\\.)?ferien-und-feiertage\\.de/|^https?://(www\\.)?freiburg\\.de/|^https?://(www\\.)?glasfaser-internet\\.info/|^https?://(www\\.)?golf\\.de/|^https?://(www\\.)?homoeopathie-homoeopathisch\\.de/|^https?://(www\\.)?landkreis-esslingen\\.de/|^https?://(www\\.)?lte-anbieter\\.info/|^https?://(www\\.)?muenchen\\.travel/|^https?://(www\\.)?profizelt24\\.de/|^https?://(www\\.)?sprengel-museum\\.de/|^https?://(www\\.)?thueringen\\.info/|^https?://(www\\.)?velomobilforum\\.de/|^https?://(www\\.)?wvv\\.de/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_CH_autoteiledirekt.de_c8m", + 0, + "^https?://(www\\.)?autoteiledirekt\\.de/", + 10, + [], + [ + { + "e": 2911 + } + ], + [ + { + "v": 2911 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2911 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2911 + } + ], + {} + ], + [ + 1, + "auto_CH_baddirekt.ch_ufb_+1", + 0, + "^https?://(www\\.)?baddirekt\\.ch/|^https?://(www\\.)?hdzuerisee\\.ch/", + 10, + [], + [ + { + "e": 1378 + } + ], + [ + { + "v": 1378 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1378 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1378 + } + ], + {} + ], + [ + 1, + "auto_CH_baernermamis.ch_c05", + 0, + "^https?://(www\\.)?baernermamis\\.ch/", + 10, + [], + [ + { + "e": 2546 + } + ], + [ + { + "v": 2546 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2546 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2546 + } + ], + {} + ], + [ + 1, + "auto_CH_bandlab.com_jul", + 0, + "^https?://(www\\.)?bandlab\\.com/", + 10, + [], + [ + { + "e": 1379 + } + ], + [ + { + "v": 1379 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1379 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1379 + } + ], + {} + ], + [ + 1, + "auto_CH_baslerstadtbuch.ch_8td", + 0, + "^https?://(www\\.)?baslerstadtbuch\\.ch/", + 10, + [], + [ + { + "e": 1383 + } + ], + [ + { + "v": 1383 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1383 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1383 + } + ], + {} + ], + [ + 1, + "auto_CH_bauer-baumschulen.ch_s18", + 0, + "^https?://(www\\.)?bauer-baumschulen\\.ch/", + 10, + [], + [ + { + "e": 2912 + } + ], + [ + { + "v": 2912 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2912 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2912 + } + ], + {} + ], + [ + 1, + "auto_CH_becomewealthy.ch_j33_+3", + 0, + "^https?://(www\\.)?becomewealthy\\.ch/|^https?://(www\\.)?klapp\\.pro/|^https?://(www\\.)?floraspora\\.de/|^https?://(www\\.)?lueneburg\\.info/", + 10, + [], + [ + { + "e": 1636 + } + ], + [ + { + "v": 1636 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1636 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1636 + } + ], + {} + ], + [ + 1, + "auto_CH_benq.eu_zs3", + 0, + "^https?://(www\\.)?benq\\.eu/", + 10, + [], + [ + { + "e": 1334 + } + ], + [ + { + "v": 1334 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1334 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1334 + } + ], + {} + ], + [ + 1, + "auto_CH_bequiet.com_q1z", + 0, + "^https?://(www\\.)?bequiet\\.com/", + 10, + [], + [ + { + "e": 2913 + } + ], + [ + { + "v": 2913 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2913 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2913 + } + ], + {} + ], + [ + 1, + "auto_CH_bernerwanderwege.ch_6vz", + 0, + "^https?://(www\\.)?bernerwanderwege\\.ch/", + 10, + [], + [ + { + "e": 2914 + } + ], + [ + { + "v": 2914 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2914 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2914 + } + ], + {} + ], + [ + 1, + "auto_CH_betreibungsschalter-plus.ch_uev", + 0, + "^https?://(www\\.)?betreibungsschalter-plus\\.ch/", + 10, + [], + [ + { + "e": 1391 + } + ], + [ + { + "v": 1391 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1391 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1391 + } + ], + {} + ], + [ + 1, + "auto_CH_better-search.ch_cth_+19", + 0, + "^https?://(www\\.)?better-search\\.ch/|^https?://(www\\.)?bettybossi\\.de/|^https?://(www\\.)?casadelvino\\.ch/|^https?://(www\\.)?ch\\.rotho\\.com/|^https?://(www\\.)?gemeinschaftsbank\\.ch/|^https?://(www\\.)?loerrach\\.de/|^https?://(www\\.)?outdoorchef\\.com/|^https?://(www\\.)?reclam\\.de/|^https?://(www\\.)?swissgoldshop\\.ch/|^https?://(www\\.)?bayerischer-wald\\.de/|^https?://(www\\.)?bio-naturel\\.de/|^https?://(www\\.)?dacianer\\.de/|^https?://(www\\.)?de\\.citizenwatch\\.eu/|^https?://(www\\.)?freudenstadt\\.de/|^https?://(www\\.)?frisonaut\\.de/|^https?://(www\\.)?maschinenbau-wissen\\.de/|^https?://(www\\.)?paracelsus\\.de/|^https?://(www\\.)?reutlingen\\.de/|^https?://(www\\.)?rheinische-scheidestaette\\.de/|^https?://(www\\.)?schwaebischealb\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_CH_betterhomes.ch_2d8", + 0, + "^https?://(www\\.)?betterhomes\\.ch/", + 10, + [], + [ + { + "e": 1395 + } + ], + [ + { + "v": 1395 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1395 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1395 + } + ], + {} + ], + [ + 1, + "auto_CH_bike-components.de_9w5", + 0, + "^https?://(www\\.)?bike-components\\.de/", + 10, + [], + [ + { + "e": 2915 + } + ], + [ + { + "v": 2915 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2915 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2915 + } + ], + {} + ], + [ + 1, + "auto_CH_bikeimport.ch_6vr", + 0, + "^https?://(www\\.)?bikeimport\\.ch/", + 10, + [], + [ + { + "e": 1401 + } + ], + [ + { + "v": 1401 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1401 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1401 + } + ], + {} + ], + [ + 1, + "auto_CH_birchmeier-ag.shop_3uk_+14", + 0, + "^https?://(www\\.)?birchmeier-ag\\.shop/|^https?://(www\\.)?reimo\\.com/|^https?://(www\\.)?shop\\.ahw-shop\\.de/|^https?://(www\\.)?swissolympic\\.ch/|^https?://(www\\.)?auragentum\\.de/|^https?://(www\\.)?boerger-motorgeraete\\.de/|^https?://(www\\.)?demmer-shop\\.de/|^https?://(www\\.)?funktechnik-bielefeld\\.de/|^https?://(www\\.)?gartenhausfabrik\\.de/|^https?://(www\\.)?grundstoff\\.net/|^https?://(www\\.)?messerworld\\.de/|^https?://(www\\.)?motorrad-ersatzteile24\\.de/|^https?://(www\\.)?pauls-muehle\\.de/|^https?://(www\\.)?pflanzenhof-online\\.de/|^https?://(www\\.)?sportwaffen-triebel\\.de/", + 10, + [], + [ + { + "e": 1407 + } + ], + [ + { + "v": 1407 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1407 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1407 + } + ], + {} + ], + [ + 1, + "auto_CH_birsfelden.ch_588", + 0, + "^https?://(www\\.)?birsfelden\\.ch/", + 10, + [], + [ + { + "e": 1350 + } + ], + [ + { + "v": 1350 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1350 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1350 + } + ], + {} + ], + [ + 1, + "auto_CH_bitbox.swiss_w0n", + 0, + "^https?://(www\\.)?bitbox\\.swiss/", + 10, + [], + [ + { + "e": 1371 + } + ], + [ + { + "v": 1371 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1371 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1371 + } + ], + {} + ], + [ + 1, + "auto_CH_bitpanda.com_zwd", + 0, + "^https?://(www\\.)?bitpanda\\.com/", + 10, + [], + [ + { + "e": 2916 + } + ], + [ + { + "v": 2916 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2916 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2916 + } + ], + {} + ], + [ + 1, + "auto_CH_blogdumoderateur.com_8p6", + 0, + "^https?://(www\\.)?blogdumoderateur\\.com/", + 10, + [], + [ + { + "e": 1412 + } + ], + [ + { + "v": 1412 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1412 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1412 + } + ], + {} + ], + [ + 1, + "auto_CH_bls-schiff.ch_d8p", + 0, + "^https?://(www\\.)?bls-schiff\\.ch/", + 10, + [], + [ + { + "e": 1414 + } + ], + [ + { + "v": 1414 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1414 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1414 + } + ], + {} + ], + [ + 1, + "auto_CH_blutspendezurich.ch_s0f", + 0, + "^https?://(www\\.)?blutspendezurich\\.ch/", + 10, + [], + [ + { + "e": 2917 + } + ], + [ + { + "v": 2917 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2917 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2917 + } + ], + {} + ], + [ + 1, + "auto_CH_bm-geneve.ch_ms0", + 0, + "^https?://(www\\.)?bm-geneve\\.ch/", + 10, + [], + [ + { + "e": 1417 + } + ], + [ + { + "v": 1417 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1417 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1417 + } + ], + {} + ], + [ + 1, + "auto_CH_bmeia.gv.at_03n", + 0, + "^https?://(www\\.)?bmeia\\.gv\\.at/", + 10, + [], + [ + { + "e": 1418 + } + ], + [ + { + "v": 1418 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1418 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1418 + } + ], + {} + ], + [ + 1, + "auto_CH_boerse-frankfurt.de_331", + 0, + "^https?://(www\\.)?boerse-frankfurt\\.de/", + 10, + [], + [ + { + "e": 1423 + } + ], + [ + { + "v": 1423 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1423 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1423 + } + ], + {} + ], + [ + 1, + "auto_CH_boerse-stuttgart.de_hvy_+6", + 0, + "^https?://(www\\.)?boerse-stuttgart\\.de/|^https?://(www\\.)?glattwerk\\.ch/|^https?://(www\\.)?starticket\\.ch/|^https?://(www\\.)?dgbrechtsschutz\\.de/|^https?://(www\\.)?hansesail\\.com/|^https?://(www\\.)?shop\\.lavita\\.com/|^https?://(www\\.)?strassen\\.nrw\\.de/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_CH_boerse.raiffeisen.ch_gst_+2", + 0, + "^https?://(www\\.)?boerse\\.raiffeisen\\.ch/|^https?://(www\\.)?memberplus\\.raiffeisen\\.ch/|^https?://(www\\.)?raiffeisen\\.ch/", + 10, + [], + [ + { + "e": 1425 + } + ], + [ + { + "v": 1425 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1425 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1425 + } + ], + {} + ], + [ + 1, + "auto_CH_bonprix.ch_pex_+1", + 0, + "^https?://(www\\.)?bonprix\\.ch/|^https?://(www\\.)?bonprix\\.de/", + 10, + [], + [ + { + "e": 1775 + } + ], + [ + { + "v": 1775 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1775 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1775 + } + ], + {} + ], + [ + 1, + "auto_CH_bookretreats.com_lwo", + 0, + "^https?://(www\\.)?bookretreats\\.com/", + 10, + [], + [ + { + "e": 1373 + } + ], + [ + { + "v": 1373 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1373 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1373 + } + ], + {} + ], + [ + 1, + "auto_CH_bouyguestelecom.fr_57b_+4", + 0, + "^https?://(www\\.)?bouyguestelecom\\.fr/|^https?://(www\\.)?assistance\\.bouyguestelecom\\.fr/|^https?://(www\\.)?boutiques\\.bouyguestelecom\\.fr/|^https?://(www\\.)?bouyguestelecom-pro\\.fr/|^https?://(www\\.)?corporate\\.bouyguestelecom\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_CH_brw.ch_ma9", + 0, + "^https?://(www\\.)?brw\\.ch/", + 10, + [], + [ + { + "e": 1427 + } + ], + [ + { + "v": 1427 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1427 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1427 + } + ], + {} + ], + [ + 1, + "auto_CH_bsb.ch_7q8", + 0, + "^https?://(www\\.)?bsb\\.ch/", + 10, + [], + [ + { + "e": 1429 + } + ], + [ + { + "v": 1429 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1429 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1429 + } + ], + {} + ], + [ + 1, + "auto_CH_buchard.ch_p6x_+2", + 0, + "^https?://(www\\.)?buchard\\.ch/|^https?://(www\\.)?chequeservice\\.ch/|^https?://(www\\.)?comedie\\.ch/", + 10, + [], + [ + { + "e": 1430 + } + ], + [ + { + "v": 1430 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1430 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1430 + } + ], + {} + ], + [ + 1, + "auto_CH_bvl.ch_d8y_+1", + 0, + "^https?://(www\\.)?bvl\\.ch/|^https?://(www\\.)?mieterbund\\.de/", + 10, + [], + [ + { + "e": 1885 + } + ], + [ + { + "v": 1885 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1885 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1885 + } + ], + {} + ], + [ + 1, + "auto_CH_ca-nextbank.ch_ibj_+18", + 0, + "^https?://(www\\.)?ca-nextbank\\.ch/|^https?://(www\\.)?quechoisir\\.org/|^https?://(www\\.)?afpa\\.fr/|^https?://(www\\.)?air-austral\\.com/|^https?://(www\\.)?camif\\.fr/|^https?://(www\\.)?cedeo\\.fr/|^https?://(www\\.)?coursesu\\.com/|^https?://(www\\.)?dispano\\.fr/|^https?://(www\\.)?e-immobilier\\.credit-agricole\\.fr/|^https?://(www\\.)?forum\\.quechoisir\\.org/|^https?://(www\\.)?lidentitenumerique\\.laposte\\.fr/|^https?://(www\\.)?magasins-u\\.com/|^https?://(www\\.)?pfg\\.fr/|^https?://(www\\.)?pleinchamp\\.com/|^https?://(www\\.)?pointp\\.fr/|^https?://(www\\.)?prixtel\\.com/|^https?://(www\\.)?squarehabitat\\.fr/|^https?://(www\\.)?totalenergies\\.fr/|^https?://(www\\.)?vinatis\\.com/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_CH_cam4.com_zix", + 0, + "^https?://(www\\.)?cam4\\.com/", + 10, + [], + [ + { + "e": 2918 + } + ], + [ + { + "v": 2918 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2918 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2918 + } + ], + {} + ], + [ + 1, + "auto_CH_cambridge-exams.ch_4a3", + 0, + "^https?://(www\\.)?cambridge-exams\\.ch/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_CH_camptocamp.org_a5p", + 0, + "^https?://(www\\.)?camptocamp\\.org/", + 10, + [], + [ + { + "e": 1437 + } + ], + [ + { + "v": 1437 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1437 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1437 + } + ], + {} + ], + [ + 1, + "auto_CH_cardmarket.com_15t", + 0, + "^https?://(www\\.)?cardmarket\\.com/", + 10, + [], + [ + { + "e": 1439 + } + ], + [ + { + "v": 1439 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1439 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1439 + } + ], + {} + ], + [ + 1, + "auto_CH_careproduct.ch_fhl", + 0, + "^https?://(www\\.)?careproduct\\.ch/", + 10, + [], + [ + { + "e": 1385 + } + ], + [ + { + "v": 1385 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1385 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1385 + } + ], + {} + ], + [ + 1, + "auto_CH_cdiscount.com_10y_+1", + 0, + "^https?://(www\\.)?cdiscount\\.com/|^https?://(www\\.)?order\\.cdiscount\\.com/", + 10, + [], + [ + { + "e": 1440 + } + ], + [ + { + "v": 1440 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1440 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1440 + } + ], + {} + ], + [ + 1, + "auto_CH_ceresheilmittel.ch_2sn", + 0, + "^https?://(www\\.)?ceresheilmittel\\.ch/", + 10, + [], + [ + { + "e": 1430 + } + ], + [ + { + "v": 1430 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1430 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1430 + } + ], + {} + ], + [ + 1, + "auto_CH_ch.jura.com_hep_+1", + 0, + "^https?://(www\\.)?ch\\.jura\\.com/|^https?://(www\\.)?de\\.jura\\.com/", + 10, + [], + [ + { + "e": 1442 + } + ], + [ + { + "v": 1442 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1442 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1442 + } + ], + {} + ], + [ + 1, + "auto_CH_ch.tommy.com_m20_+1", + 0, + "^https?://(www\\.)?ch\\.tommy\\.com/|^https?://(www\\.)?de\\.tommy\\.com/", + 10, + [], + [ + { + "e": 1444 + } + ], + [ + { + "v": 1444 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1444 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1444 + } + ], + {} + ], + [ + 1, + "auto_CH_chambres-hotes.fr_hay", + 0, + "^https?://(www\\.)?chambres-hotes\\.fr/", + 10, + [], + [ + { + "e": 1446 + } + ], + [ + { + "v": 1446 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1446 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1446 + } + ], + {} + ], + [ + 1, + "auto_CH_christkatholisch.ch_6qy", + 0, + "^https?://(www\\.)?christkatholisch\\.ch/", + 10, + [], + [ + { + "e": 2919 + } + ], + [ + { + "v": 2919 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2919 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2919 + } + ], + {} + ], + [ + 1, + "auto_CH_chronoswiss.com_o3v", + 0, + "^https?://(www\\.)?chronoswiss\\.com/", + 10, + [], + [ + { + "e": 1449 + } + ], + [ + { + "v": 1449 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1449 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1449 + } + ], + {} + ], + [ + 1, + "auto_CH_citroen.ch_ov9_+1", + 0, + "^https?://(www\\.)?citroen\\.ch/|^https?://(www\\.)?opel\\.ch/", + 10, + [], + [ + { + "e": 1139 + } + ], + [ + { + "v": 1139 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1139 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1139 + } + ], + {} + ], + [ + 1, + "auto_CH_clockify.me_aag", + 0, + "^https?://(www\\.)?clockify\\.me/", + 10, + [], + [ + { + "e": 1451 + } + ], + [ + { + "v": 1451 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1451 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1451 + } + ], + {} + ], + [ + 1, + "auto_CH_club.autodoc.de_ihg", + 0, + "^https?://(www\\.)?club\\.autodoc\\.de/", + 10, + [], + [ + { + "e": 1017 + } + ], + [ + { + "v": 1017 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1017 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1017 + } + ], + {} + ], + [ + 1, + "auto_CH_coinbase.com_ewt", + 0, + "^https?://(www\\.)?coinbase\\.com/", + 10, + [], + [ + { + "e": 1454 + } + ], + [ + { + "v": 1454 + } + ], + [ + { + "c": 1454 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1454 + } + ], + {} + ], + [ + 1, + "auto_CH_computerwissen.de_rt0_+1", + 0, + "^https?://(www\\.)?computerwissen\\.de/|^https?://(www\\.)?club\\.computerwissen\\.de/", + 10, + [], + [ + { + "e": 1455 + } + ], + [ + { + "v": 1455 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1455 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1455 + } + ], + {} + ], + [ + 1, + "auto_CH_confiserie.ch_ea9", + 0, + "^https?://(www\\.)?confiserie\\.ch/", + 10, + [], + [ + { + "e": 1402 + } + ], + [ + { + "v": 1402 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1402 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1402 + } + ], + {} + ], + [ + 1, + "auto_CH_cornelsen.de_ewa", + 0, + "^https?://(www\\.)?cornelsen\\.de/", + 10, + [], + [ + { + "e": 1463 + } + ], + [ + { + "v": 1463 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1463 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1463 + } + ], + {} + ], + [ + 1, + "auto_CH_credit-agricole.fr_won_+1", + 0, + "^https?://(www\\.)?credit-agricole\\.fr/|^https?://(www\\.)?lecode\\.laposte\\.fr/", + 10, + [], + [ + { + "e": 1464 + } + ], + [ + { + "v": 1464 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1464 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1464 + } + ], + {} + ], + [ + 1, + "auto_CH_creditmutuel.fr_c7q", + 0, + "^https?://(www\\.)?creditmutuel\\.fr/", + 10, + [], + [ + { + "e": 1466 + } + ], + [ + { + "v": 1466 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1466 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1466 + } + ], + {} + ], + [ + 1, + "auto_CH_crew-united.com_vd5", + 0, + "^https?://(www\\.)?crew-united\\.com/", + 10, + [], + [ + { + "e": 1473 + } + ], + [ + { + "v": 1473 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1473 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1473 + } + ], + {} + ], + [ + 1, + "auto_CH_de.ford.ch_r02", + 0, + "^https?://(www\\.)?de\\.ford\\.ch/", + 10, + [], + [ + { + "e": 1476 + } + ], + [ + { + "v": 1476 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1476 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1476 + } + ], + {} + ], + [ + 1, + "auto_CH_de.forgeofempires.com_pur", + 0, + "^https?://(www\\.)?de-play\\.forgeofempires\\.com/", + 10, + [], + [ + { + "e": 2920 + } + ], + [ + { + "v": 2920 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2920 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2920 + } + ], + {} + ], + [ + 1, + "auto_CH_de.pornhub.com_orp_+13", + 0, + "^https?://(www\\.)?de\\.pornhub\\.com/|^https?://(www\\.)?de\\.pornhub\\.org/|^https?://(www\\.)?es\\.pornhub\\.com/|^https?://(www\\.)?fr\\.pornhub\\.com/|^https?://(www\\.)?fr\\.pornhub\\.org/|^https?://(www\\.)?it\\.pornhub\\.com/|^https?://(www\\.)?nl\\.pornhub\\.com/|^https?://(www\\.)?pl\\.pornhub\\.com/|^https?://(www\\.)?pt\\.pornhub\\.com/|^https?://(www\\.)?rt\\.pornhub\\.com/|^https?://(www\\.)?thumbzilla\\.com/|^https?://(www\\.)?pornhubpremium\\.com/|^https?://(www\\.)?jp\\.pornhub\\.com/|^https?://(www\\.)?rt\\.pornhub\\.org/", + 10, + [], + [ + { + "e": 1478 + } + ], + [ + { + "v": 1478 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1478 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1478 + } + ], + {} + ], + [ + 1, + "auto_CH_de.redtube.com_sck_+2", + 0, + "^https?://(www\\.)?de\\.redtube\\.com/|^https?://(www\\.)?fr\\.redtube\\.com/|^https?://(www\\.)?pl\\.redtube\\.com/", + 10, + [], + [ + { + "e": 2921 + } + ], + [ + { + "v": 2921 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2921 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2921 + } + ], + {} + ], + [ + 1, + "auto_CH_de.whileint.com_oa6_+2", + 0, + "^https?://(www\\.)?de\\.whileint\\.com/|^https?://(www\\.)?whileint\\.com/|^https?://(www\\.)?fr\\.whileint\\.com/", + 10, + [], + [ + { + "e": 1488 + } + ], + [ + { + "v": 1488 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1488 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1488 + } + ], + {} + ], + [ + 1, + "auto_CH_de.youporn.com_vsb_+6", + 0, + "^https?://(www\\.)?de\\.youporn\\.com/|^https?://(www\\.)?fr\\.youporn\\.com/|^https?://(www\\.)?tube8\\.com/|^https?://(www\\.)?youporn\\.com/|^https?://(www\\.)?you-porn\\.com/|^https?://(www\\.)?tube8\\.fr/|^https?://(www\\.)?it\\.youporn\\.com/", + 10, + [], + [ + { + "e": 1495 + } + ], + [ + { + "v": 1495 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1495 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1495 + } + ], + {} + ], + [ + 1, + "auto_CH_dealabs.com_ork", + 0, + "^https?://(www\\.)?dealabs\\.com/", + 10, + [], + [ + { + "e": 1496 + } + ], + [ + { + "v": 1496 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1496 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1496 + } + ], + {} + ], + [ + 1, + "auto_CH_deepl.com_6pi", + 0, + "^https?://(www\\.)?deepl\\.com/", + 10, + [], + [ + { + "e": 1505 + } + ], + [ + { + "v": 1505 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1505 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1505 + } + ], + {} + ], + [ + 1, + "auto_CH_degussa-goldhandel.ch_mqc", + 0, + "^https?://(www\\.)?degussa-goldhandel\\.ch/", + 10, + [], + [ + { + "e": 1420 + } + ], + [ + { + "v": 1420 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1420 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1420 + } + ], + {} + ], + [ + 1, + "auto_CH_destatis.de_oi4", + 0, + "^https?://(www\\.)?destatis\\.de/", + 10, + [], + [ + { + "e": 1514 + } + ], + [ + { + "v": 1514 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1514 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1514 + } + ], + {} + ], + [ + 1, + "auto_CH_dibibe.onleihe.com_ywr_+13", + 0, + "^https?://(www\\.)?dibibe\\.onleihe\\.com/|^https?://(www\\.)?dibiost\\.onleihe\\.com/|^https?://(www\\.)?dibizentral\\.onleihe\\.com/|^https?://(www\\.)?ebookplus\\.onleihe\\.com/|^https?://(www\\.)?biblio24\\.onleihe\\.de/|^https?://(www\\.)?franken\\.onleihe\\.de/|^https?://(www\\.)?hessen\\.onleihe\\.de/|^https?://(www\\.)?leo-sued\\.onleihe\\.de/|^https?://(www\\.)?muensterload\\.onleihe\\.de/|^https?://(www\\.)?onleihe24\\.onleihe\\.de/|^https?://(www\\.)?owl\\.onleihe\\.de/|^https?://(www\\.)?rlp\\.onleihe\\.de/|^https?://(www\\.)?schwaben\\.onleihe\\.de/|^https?://(www\\.)?voebb\\.onleihe\\.de/", + 10, + [], + [ + { + "e": 1515 + } + ], + [ + { + "v": 1515 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1515 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1515 + } + ], + {} + ], + [ + 1, + "auto_CH_dictionnaire-academie.fr_uzr", + 0, + "^https?://(www\\.)?dictionnaire-academie\\.fr/", + 10, + [], + [ + { + "e": 1517 + } + ], + [ + { + "v": 1517 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1517 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1517 + } + ], + {} + ], + [ + 1, + "auto_CH_die-agv.ch_u3p", + 0, + "^https?://(www\\.)?die-agv\\.ch/", + 10, + [], + [ + { + "e": 1519 + } + ], + [ + { + "v": 1519 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1519 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1519 + } + ], + {} + ], + [ + 1, + "auto_CH_die-tastenkombination.de_iu6_+20", + 0, + "^https?://(www\\.)?die-tastenkombination\\.de/|^https?://(www\\.)?gesundheits-fakten\\.de/|^https?://(www\\.)?glarus24\\.ch/|^https?://(www\\.)?haushaltstipps\\.com/|^https?://(www\\.)?alltours\\.de/|^https?://(www\\.)?apfelpage\\.de/|^https?://(www\\.)?bad-nauheim\\.de/|^https?://(www\\.)?bistum-muenster\\.de/|^https?://(www\\.)?cranger-kirmes\\.de/|^https?://(www\\.)?dmf\\.tv/|^https?://(www\\.)?heidelberg\\.de/|^https?://(www\\.)?hm\\.edu/|^https?://(www\\.)?hoershop\\.com/|^https?://(www\\.)?in-berlin-brandenburg\\.com/|^https?://(www\\.)?krankenkasseninfo\\.de/|^https?://(www\\.)?lesejury\\.de/|^https?://(www\\.)?norderney\\.de/|^https?://(www\\.)?offline-einkaufen\\.com/|^https?://(www\\.)?raiffeisen\\.com/|^https?://(www\\.)?ssb-ag\\.de/|^https?://(www\\.)?waffen-schrum\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_CH_disneylandparis.com_une", + 0, + "^https?://(www\\.)?disneylandparis\\.com/", + 10, + [], + [ + { + "e": 1839 + } + ], + [ + { + "v": 1839 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1839 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1839 + } + ], + {} + ], + [ + 1, + "auto_CH_dkamera.de_h12", + 0, + "^https?://(www\\.)?dkamera\\.de/", + 10, + [], + [ + { + "e": 1520 + } + ], + [ + { + "v": 1520 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1520 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1520 + } + ], + {} + ], + [ + 1, + "auto_CH_docs.gradle.org_1bh", + 0, + "^https?://(www\\.)?docs\\.gradle\\.org/", + 10, + [], + [ + { + "e": 1521 + } + ], + [ + { + "v": 1521 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1521 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1521 + } + ], + {} + ], + [ + 1, + "auto_CH_docs.streamlit.io_zak", + 0, + "^https?://(www\\.)?docs\\.streamlit\\.io/", + 10, + [], + [ + { + "e": 1524 + } + ], + [ + { + "v": 1524 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1524 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1524 + } + ], + {} + ], + [ + 1, + "auto_CH_dometic.com_k8a", + 0, + "^https?://(www\\.)?dometic\\.com/", + 10, + [], + [ + { + "e": 1184 + } + ], + [ + { + "v": 1184 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1184 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1184 + } + ], + {} + ], + [ + 1, + "auto_CH_doodah.ch_lxp", + 0, + "^https?://(www\\.)?doodah\\.ch/", + 10, + [], + [ + { + "e": 2922 + } + ], + [ + { + "v": 2922 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2922 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2922 + } + ], + {} + ], + [ + 1, + "auto_CH_dorsch.hogrefe.com_80w", + 0, + "^https?://(www\\.)?dorsch\\.hogrefe\\.com/", + 10, + [], + [ + { + "e": 1528 + } + ], + [ + { + "v": 1528 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1528 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1528 + } + ], + {} + ], + [ + 1, + "auto_CH_dpd.com_7wz_+1", + 0, + "^https?://(www\\.)?dpd\\.com/|^https?://(www\\.)?send\\.dpd\\.co\\.uk/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_CH_dxomark.com_jfg", + 0, + "^https?://(www\\.)?dxomark\\.com/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_CH_ebanking-ch2.ubs.com_309_+1", + 0, + "^https?://(www\\.)?secure\\.ubs\\.com/|^https?://(www\\.)?ubs\\.com/", + 10, + [], + [ + { + "e": 1865 + } + ], + [ + { + "v": 1865 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1865 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1865 + } + ], + {} + ], + [ + 1, + "auto_CH_eca-vaud.ch_6fk", + 0, + "^https?://(www\\.)?eca-vaud\\.ch/", + 10, + [], + [ + { + "e": 1534 + } + ], + [ + { + "v": 1534 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1534 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1534 + } + ], + {} + ], + [ + 1, + "auto_CH_echosdunet.net_6y4_+2", + 0, + "^https?://(www\\.)?echosdunet\\.net/|^https?://(www\\.)?lafibreoptique\\.fr/|^https?://(www\\.)?livebox-news\\.com/", + 10, + [], + [ + { + "e": 1553 + } + ], + [ + { + "v": 1553 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1553 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1553 + } + ], + {} + ], + [ + 1, + "auto_CH_edeka.de_zkn", + 0, + "^https?://(www\\.)?edeka\\.de/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_CH_edupolice.ch_q4c", + 0, + "^https?://(www\\.)?edupolice\\.ch/", + 10, + [], + [ + { + "e": 1422 + } + ], + [ + { + "v": 1422 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1422 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1422 + } + ], + {} + ], + [ + 1, + "auto_CH_eike-klima-energie.eu_fef_+2", + 0, + "^https?://(www\\.)?eike-klima-energie\\.eu/|^https?://(www\\.)?deutsches-schulportal\\.de/|^https?://(www\\.)?hawk\\.de/", + 10, + [], + [ + { + "e": 1555 + } + ], + [ + { + "v": 1555 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1555 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1555 + } + ], + {} + ], + [ + 1, + "auto_CH_ema.europa.eu_j06", + 0, + "^https?://(www\\.)?ema\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1557 + } + ], + [ + { + "v": 1557 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1557 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1557 + } + ], + {} + ], + [ + 1, + "auto_CH_emp-online.ch_zth_+1", + 0, + "^https?://(www\\.)?emp-online\\.ch/|^https?://(www\\.)?emp\\.de/", + 10, + [], + [ + { + "e": 1558 + } + ], + [ + { + "v": 1558 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1558 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1558 + } + ], + {} + ], + [ + 1, + "auto_CH_erc.europa.eu_jem_+7", + 0, + "^https?://(www\\.)?erc\\.europa\\.eu/|^https?://(www\\.)?echa\\.europa\\.eu/|^https?://(www\\.)?europass\\.europa\\.eu/|^https?://(www\\.)?erasmus-plus\\.ec\\.europa\\.eu/|^https?://(www\\.)?eeas\\.europa\\.eu/|^https?://(www\\.)?eba\\.europa\\.eu/|^https?://(www\\.)?esma\\.europa\\.eu/|^https?://(www\\.)?marie-sklodowska-curie-actions\\.ec\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1559 + } + ], + [ + { + "v": 1559 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1559 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1559 + } + ], + {} + ], + [ + 1, + "auto_CH_erotik.com_yt0_+1", + 0, + "^https?://(www\\.)?erotik\\.com/|^https?://(www\\.)?dvderotik\\.com/", + 10, + [], + [ + { + "e": 1566 + } + ], + [ + { + "v": 1566 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1566 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1566 + } + ], + {} + ], + [ + 1, + "auto_CH_ersatzteil-shop24.de_mh5_+2", + 0, + "^https?://(www\\.)?ersatzteil-shop24\\.de/|^https?://(www\\.)?der-rasenmaeher\\.de/|^https?://(www\\.)?verdampftnochmal\\.de/", + 10, + [], + [ + { + "e": 1567 + } + ], + [ + { + "v": 1567 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1567 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1567 + } + ], + {} + ], + [ + 1, + "auto_CH_eur-lex.europa.eu_bsu", + 0, + "^https?://(www\\.)?eur-lex\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1568 + } + ], + [ + { + "v": 1568 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1568 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1568 + } + ], + {} + ], + [ + 1, + "auto_CH_euroairport.com_3yl_+18", + 0, + "^https?://(www\\.)?euroairport\\.com/|^https?://(www\\.)?georisques\\.gouv\\.fr/|^https?://(www\\.)?lannuaire\\.service-public\\.fr/|^https?://(www\\.)?service-public\\.fr/|^https?://(www\\.)?archives-deux-sevres-vienne\\.fr/|^https?://(www\\.)?archives\\.aisne\\.fr/|^https?://(www\\.)?archives\\.hauts-de-seine\\.fr/|^https?://(www\\.)?archivesdepartementales76\\.net/|^https?://(www\\.)?carnavalet\\.paris\\.fr/|^https?://(www\\.)?entreprendre\\.service-public\\.fr/|^https?://(www\\.)?entreprendre\\.service-public\\.gouv\\.fr/|^https?://(www\\.)?fo-rothschild\\.fr/|^https?://(www\\.)?ifrap\\.org/|^https?://(www\\.)?lannuaire\\.service-public\\.gouv\\.fr/|^https?://(www\\.)?mam\\.paris\\.fr/|^https?://(www\\.)?petitpalais\\.paris\\.fr/|^https?://(www\\.)?planning-familial\\.org/|^https?://(www\\.)?service-public\\.gouv\\.fr/|^https?://(www\\.)?vie-publique\\.fr/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_CH_europarl.europa.eu_y2d", + 0, + "^https?://(www\\.)?europarl\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1569 + } + ], + [ + { + "v": 1569 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1569 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1569 + } + ], + {} + ], + [ + 1, + "auto_CH_eventfrog.ch_gar_+1", + 0, + "^https?://(www\\.)?eventfrog\\.ch/|^https?://(www\\.)?eventfrog\\.de/", + 10, + [], + [ + { + "e": 1571 + } + ], + [ + { + "v": 1571 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1571 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1571 + } + ], + {} + ], + [ + 1, + "auto_CH_ewb.ch_yrq", + 0, + "^https?://(www\\.)?ewb\\.ch/", + 10, + [], + [ + { + "e": 1572 + } + ], + [ + { + "v": 1572 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1572 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1572 + } + ], + {} + ], + [ + 1, + "auto_CH_exit.ch_u4u_+3", + 0, + "^https?://(www\\.)?exit\\.ch/|^https?://(www\\.)?chemnitz\\.de/|^https?://(www\\.)?hs-fulda\\.de/|^https?://(www\\.)?vag-freiburg\\.de/", + 10, + [], + [ + { + "e": 1573 + } + ], + [ + { + "v": 1573 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1573 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1573 + } + ], + {} + ], + [ + 1, + "auto_CH_exped.com_evt", + 0, + "^https?://(www\\.)?exped\\.com/", + 10, + [], + [ + { + "e": 1577 + } + ], + [ + { + "v": 1577 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1577 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1577 + } + ], + {} + ], + [ + 1, + "auto_CH_ezgif.com_en4", + 0, + "^https?://(www\\.)?ezgif\\.com/", + 10, + [], + [ + { + "e": 2923 + } + ], + [ + { + "v": 2923 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2923 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2923 + } + ], + {} + ], + [ + 1, + "auto_CH_f-secure.com_el5", + 0, + "^https?://(www\\.)?f-secure\\.com/", + 10, + [], + [ + { + "e": 1579 + } + ], + [ + { + "v": 1579 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1579 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1579 + } + ], + {} + ], + [ + 1, + "auto_CH_fachinfo.de_4mw", + 0, + "^https?://(www\\.)?fachinfo\\.de/", + 10, + [], + [ + { + "e": 1580 + } + ], + [ + { + "v": 1580 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1580 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1580 + } + ], + {} + ], + [ + 1, + "auto_CH_fanpage.it_671", + 0, + "^https?://(www\\.)?fanpage\\.it/", + 10, + [], + [ + { + "e": 1581 + } + ], + [ + { + "v": 1581 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1581 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1581 + } + ], + {} + ], + [ + 1, + "auto_CH_farfetch.com_4o6", + 0, + "^https?://(www\\.)?farfetch\\.com/", + 10, + [], + [ + { + "e": 1585 + } + ], + [ + { + "v": 1585 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1585 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1585 + } + ], + {} + ], + [ + 1, + "auto_CH_fdj.fr_77a", + 0, + "^https?://(www\\.)?fdj\\.fr/", + 10, + [], + [ + { + "e": 1586 + } + ], + [ + { + "v": 1586 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1586 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1586 + } + ], + {} + ], + [ + 1, + "auto_CH_feldschloesschen.ch_4mc", + 0, + "^https?://(www\\.)?feldschloesschen\\.ch/", + 10, + [], + [ + { + "e": 1589 + } + ], + [ + { + "v": 1589 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1589 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1589 + } + ], + {} + ], + [ + 1, + "auto_CH_feratel.com_ghj", + 0, + "^https?://(www\\.)?feratel\\.com/", + 10, + [], + [ + { + "e": 1433 + } + ], + [ + { + "v": 1433 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1433 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1433 + } + ], + {} + ], + [ + 1, + "auto_CH_ffzh.ch_ppa", + 0, + "^https?://(www\\.)?ffzh\\.ch/", + 10, + [], + [ + { + "e": 2924 + } + ], + [ + { + "v": 2924 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2924 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2924 + } + ], + {} + ], + [ + 1, + "auto_CH_fhgr.ch_9nr", + 0, + "^https?://(www\\.)?fhgr\\.ch/", + 10, + [], + [ + { + "e": 1590 + } + ], + [ + { + "v": 1590 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1590 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1590 + } + ], + {} + ], + [ + 1, + "auto_CH_fondationbeyeler.ch_o13", + 0, + "^https?://(www\\.)?fondationbeyeler\\.ch/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_CH_fontis-shop.ch_ksd", + 0, + "^https?://(www\\.)?fontis-shop\\.ch/", + 10, + [], + [ + { + "e": 1592 + } + ], + [ + { + "v": 1592 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1592 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1592 + } + ], + {} + ], + [ + 1, + "auto_CH_fotokoch.de_07f", + 0, + "^https?://(www\\.)?fotokoch\\.de/", + 10, + [], + [ + { + "e": 1594 + } + ], + [ + { + "v": 1594 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1594 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1594 + } + ], + {} + ], + [ + 1, + "auto_CH_fr.airbnb.ch_95k_+1", + 0, + "^https?://(www\\.)?fr\\.airbnb\\.ch/|^https?://(www\\.)?airbnb\\.fr/", + 10, + [], + [ + { + "e": 1214 + } + ], + [ + { + "v": 1214 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1214 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1214 + } + ], + {} + ], + [ + 1, + "auto_CH_fr.bonprix.ch_ofi_+1", + 0, + "^https?://(www\\.)?fr\\.bonprix\\.ch/|^https?://(www\\.)?bonprix\\.fr/", + 10, + [], + [ + { + "e": 1775 + } + ], + [ + { + "v": 1775 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1775 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1775 + } + ], + {} + ], + [ + 1, + "auto_CH_fr.ch_pyt", + 0, + "^https?://(www\\.)?fr\\.ch/", + 10, + [], + [ + { + "e": 1596 + } + ], + [ + { + "v": 1596 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1596 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1596 + } + ], + {} + ], + [ + 1, + "auto_CH_fr.ford.ch_070", + 0, + "^https?://(www\\.)?fr\\.ford\\.ch/", + 10, + [], + [ + { + "e": 1476 + } + ], + [ + { + "v": 1476 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1476 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1476 + } + ], + {} + ], + [ + 1, + "auto_CH_francais.rt.com_5hw", + 0, + "^https?://(www\\.)?francais\\.rt\\.com/", + 10, + [], + [ + { + "e": 1597 + } + ], + [ + { + "v": 1597 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1597 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1597 + } + ], + {} + ], + [ + 1, + "auto_CH_france24.com_4c9", + 0, + "^https?://(www\\.)?france24\\.com/", + 10, + [], + [ + { + "e": 1598 + } + ], + [ + { + "v": 1598 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1598 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1598 + } + ], + {} + ], + [ + 1, + "auto_CH_frankenspalter.ch_jo0", + 0, + "^https?://(www\\.)?frankenspalter\\.ch/", + 10, + [], + [ + { + "e": 1601 + } + ], + [ + { + "v": 1601 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1601 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1601 + } + ], + {} + ], + [ + 1, + "auto_CH_frankenspalter.ch_l2w", + 0, + "^https?://(www\\.)?frankenspalter\\.ch/", + 10, + [], + [ + { + "e": 1602 + } + ], + [ + { + "v": 1602 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1602 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1602 + } + ], + {} + ], + [ + 1, + "auto_CH_freestarinformatik.ch_gco_+1", + 0, + "^https?://(www\\.)?freestarinformatik\\.ch/|^https?://(www\\.)?krebsgesellschaft\\.de/", + 10, + [], + [ + { + "e": 1867 + } + ], + [ + { + "v": 1867 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1867 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1867 + } + ], + {} + ], + [ + 1, + "auto_CH_fruugoschweiz.com_6k8", + 0, + "^https?://(www\\.)?fruugoschweiz\\.com/", + 10, + [], + [ + { + "e": 1056 + } + ], + [ + { + "v": 1056 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1056 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1056 + } + ], + {} + ], + [ + 1, + "auto_CH_gabrielweinberg.com_56i", + 0, + "^https?://(www\\.)?gabrielweinberg\\.com/", + 10, + [], + [ + { + "e": 1603 + } + ], + [ + { + "v": 1603 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1603 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1603 + } + ], + {} + ], + [ + 1, + "auto_CH_galaxus.de_sqv_+2", + 0, + "^https?://(www\\.)?galaxus\\.de/|^https?://(www\\.)?galaxus\\.fr/|^https?://(www\\.)?galaxus\\.nl/", + 10, + [], + [ + { + "e": 1456 + } + ], + [ + { + "v": 1456 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1456 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1456 + } + ], + {} + ], + [ + 1, + "auto_CH_gameduell.de_aan", + 0, + "^https?://(www\\.)?gameduell\\.de/", + 10, + [], + [ + { + "e": 1605 + } + ], + [ + { + "v": 1605 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1605 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1605 + } + ], + {} + ], + [ + 1, + "auto_CH_gear4music.ch_iqv_+1", + 0, + "^https?://(www\\.)?gear4music\\.ch/|^https?://(www\\.)?gear4music\\.de/", + 10, + [], + [ + { + "e": 1606 + } + ], + [ + { + "v": 1606 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1606 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1606 + } + ], + {} + ], + [ + 1, + "auto_CH_gemeinderat-zuerich.ch_qgv_+1", + 0, + "^https?://(www\\.)?gemeinderat-zuerich\\.ch/|^https?://(www\\.)?wohlen-be\\.ch/", + 10, + [], + [ + { + "e": 1694 + } + ], + [ + { + "v": 1694 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1694 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1694 + } + ], + {} + ], + [ + 1, + "auto_CH_gesundheit.gv.at_1c2", + 0, + "^https?://(www\\.)?gesundheit\\.gv\\.at/", + 10, + [], + [ + { + "e": 1615 + } + ], + [ + { + "v": 1615 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1615 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1615 + } + ], + {} + ], + [ + 1, + "auto_CH_gesundheits-lexikon.com_r5e", + 0, + "^https?://(www\\.)?gesundheits-lexikon\\.com/", + 10, + [], + [ + { + "e": 1616 + } + ], + [ + { + "v": 1616 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1616 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1616 + } + ], + {} + ], + [ + 1, + "auto_CH_gesundheitswissen.de_69l_+4", + 0, + "^https?://(www\\.)?gesundheitswissen\\.de/|^https?://(www\\.)?wirtschaftswissen\\.de/|^https?://(www\\.)?gevestor\\.de/|^https?://(www\\.)?sekada\\.de/|^https?://(www\\.)?vereinswelt\\.de/", + 10, + [], + [ + { + "e": 1617 + } + ], + [ + { + "v": 1617 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1617 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1617 + } + ], + {} + ], + [ + 1, + "auto_CH_gowago.ch_dnq", + 0, + "^https?://(www\\.)?gowago\\.ch/", + 10, + [], + [ + { + "e": 2925 + } + ], + [ + { + "v": 2925 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2925 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2925 + } + ], + {} + ], + [ + 1, + "auto_CH_greenfieldfestival.ch_9ty", + 0, + "^https?://(www\\.)?greenfieldfestival\\.ch/", + 10, + [], + [ + { + "e": 2926 + } + ], + [ + { + "v": 2926 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2926 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2926 + } + ], + {} + ], + [ + 1, + "auto_CH_gruenel.ch_jcy", + 0, + "^https?://(www\\.)?gruenel\\.ch/", + 10, + [], + [ + { + "e": 1460 + } + ], + [ + { + "v": 1460 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1460 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1460 + } + ], + {} + ], + [ + 1, + "auto_CH_grunliberale.ch_urb_+1", + 0, + "^https?://(www\\.)?grunliberale\\.ch/|^https?://(www\\.)?obersaxen-mundaun\\.ch/", + 10, + [], + [ + { + "e": 1461 + } + ], + [ + { + "v": 1461 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1461 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1461 + } + ], + {} + ], + [ + 1, + "auto_CH_gstaadmenuhinfestival.ch_vp3", + 0, + "^https?://(www\\.)?gstaadmenuhinfestival\\.ch/", + 10, + [], + [ + { + "e": 1619 + } + ], + [ + { + "v": 1619 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1619 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1619 + } + ], + {} + ], + [ + 1, + "auto_CH_guinnessfestival.ch_m5w", + 0, + "^https?://(www\\.)?guinnessfestival\\.ch/", + 10, + [], + [ + { + "e": 1620 + } + ], + [ + { + "v": 1620 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1620 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1620 + } + ], + {} + ], + [ + 1, + "auto_CH_gutscheine.nzz.ch_nnd", + 0, + "^https?://(www\\.)?gutscheine\\.nzz\\.ch/", + 10, + [], + [ + { + "e": 2927 + } + ], + [ + { + "v": 2927 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2927 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2927 + } + ], + {} + ], + [ + 1, + "auto_CH_hansgrohe.ch_ksj", + 0, + "^https?://(www\\.)?hansgrohe\\.([a-z]+)/", + 10, + [], + [ + { + "e": 1621 + } + ], + [ + { + "v": 1621 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1621 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1621 + } + ], + {} + ], + [ + 1, + "auto_CH_heig-vd.ch_c8p", + 0, + "^https?://(www\\.)?heig-vd\\.ch/", + 10, + [], + [ + { + "e": 1688 + } + ], + [ + { + "v": 1688 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1688 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1688 + } + ], + {} + ], + [ + 1, + "auto_CH_helios.ch_i9h", + 0, + "^https?://(www\\.)?helios\\.ch/", + 10, + [], + [ + { + "e": 1622 + } + ], + [ + { + "v": 1622 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1622 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1622 + } + ], + {} + ], + [ + 1, + "auto_CH_help.openai.com_0w6", + 0, + "^https?://(www\\.)?help\\.openai\\.com/", + 10, + [], + [ + { + "e": 1623 + } + ], + [ + { + "v": 1623 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1623 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1623 + } + ], + {} + ], + [ + 1, + "auto_CH_help.revolut.com_3wx_+1", + 0, + "^https?://(www\\.)?help\\.revolut\\.com/|^https?://(www\\.)?revolut\\.com/", + 10, + [], + [ + { + "e": 1691 + } + ], + [ + { + "v": 1691 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1691 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1691 + } + ], + {} + ], + [ + 1, + "auto_CH_helpcenter.onlyoffice.com_uxj", + 0, + "^https?://(www\\.)?helpcenter\\.onlyoffice\\.com/", + 10, + [], + [ + { + "e": 2928 + } + ], + [ + { + "v": 2928 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2928 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2928 + } + ], + {} + ], + [ + 1, + "auto_CH_hero-wars.com_3bu", + 0, + "^https?://(www\\.)?hero-wars\\.com/", + 10, + [], + [ + { + "e": 1624 + } + ], + [ + { + "v": 1624 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1624 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1624 + } + ], + {} + ], + [ + 1, + "auto_CH_hetzner.com_hwl", + 0, + "^https?://(www\\.)?hetzner\\.com/", + 10, + [], + [ + { + "e": 1625 + } + ], + [ + { + "v": 1625 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1625 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1625 + } + ], + {} + ], + [ + 1, + "auto_CH_hifi-regler.de_95j", + 0, + "^https?://(www\\.)?hifi-regler\\.de/", + 10, + [], + [ + { + "e": 1626 + } + ], + [ + { + "v": 1626 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1626 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1626 + } + ], + {} + ], + [ + 1, + "auto_CH_hifi-regler.de_w25", + 0, + "^https?://(www\\.)?hifi-regler\\.de/", + 10, + [], + [ + { + "e": 1627 + } + ], + [ + { + "v": 1627 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1627 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1627 + } + ], + {} + ], + [ + 1, + "auto_CH_hiob.ch_g7h", + 0, + "^https?://(www\\.)?hiob\\.ch/", + 10, + [], + [ + { + "e": 1628 + } + ], + [ + { + "v": 1628 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1628 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1628 + } + ], + {} + ], + [ + 1, + "auto_CH_hlkshop.ch_gy2_+3", + 0, + "^https?://(www\\.)?hlkshop\\.ch/|^https?://(www\\.)?mgmotor\\.ch/|^https?://(www\\.)?samen\\.de/|^https?://(www\\.)?mgmotor\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_CH_hobbyshop.ch_g7f", + 0, + "^https?://(www\\.)?hobbyshop\\.ch/", + 10, + [], + [ + { + "e": 1629 + } + ], + [ + { + "v": 1629 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1629 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1629 + } + ], + {} + ], + [ + 1, + "auto_CH_hoklartherm.de_upn", + 0, + "^https?://(www\\.)?hoklartherm\\.de/", + 10, + [], + [ + { + "e": 1630 + } + ], + [ + { + "v": 1630 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1630 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1630 + } + ], + {} + ], + [ + 1, + "auto_CH_hostpoint.ch_ff0", + 0, + "^https?://(www\\.)?hostpoint\\.ch/", + 10, + [], + [ + { + "e": 1339 + } + ], + [ + { + "v": 1339 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1339 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1339 + } + ], + {} + ], + [ + 1, + "auto_CH_houseofsound.ch_ztb", + 0, + "^https?://(www\\.)?houseofsound\\.ch/", + 10, + [], + [ + { + "e": 1631 + } + ], + [ + { + "v": 1631 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1631 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1631 + } + ], + {} + ], + [ + 1, + "auto_CH_i-ch.ch_g5q", + 0, + "^https?://(www\\.)?i-ch\\.ch/", + 10, + [], + [ + { + "e": 1488 + } + ], + [ + { + "v": 1488 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1488 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1488 + } + ], + {} + ], + [ + 1, + "auto_CH_ihk.de_jmj", + 0, + "^https?://(www\\.)?ihk\\.de/", + 10, + [], + [ + { + "e": 1885 + } + ], + [ + { + "v": 1885 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1885 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1885 + } + ], + {} + ], + [ + 1, + "auto_CH_ij.manual.canon_2ea", + 0, + "^https?://(www\\.)?ij\\.manual\\.canon/", + 10, + [], + [ + { + "e": 1632 + } + ], + [ + { + "v": 1632 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1632 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1632 + } + ], + {} + ], + [ + 1, + "auto_CH_independentxpress.de_0qj", + 0, + "^https?://(www\\.)?independentxpress\\.de/", + 10, + [], + [ + { + "e": 1623 + } + ], + [ + { + "v": 1623 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1623 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1623 + } + ], + {} + ], + [ + 1, + "auto_CH_insel.ch_fld_+2", + 0, + "^https?://(www\\.)?insel\\.ch/|^https?://(www\\.)?inselgruppe\\.ch/|^https?://(www\\.)?neurologie\\.insel\\.ch/", + 10, + [], + [ + { + "e": 1633 + } + ], + [ + { + "v": 1633 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1633 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1633 + } + ], + {} + ], + [ + 1, + "auto_CH_instant-gaming.com_8j3", + 0, + "^https?://(www\\.)?instant-gaming\\.com/", + 10, + [], + [ + { + "e": 1634 + } + ], + [ + { + "v": 1634 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1634 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1634 + } + ], + {} + ], + [ + 1, + "auto_CH_institut-police.ch_t36", + 0, + "^https?://(www\\.)?institut-police\\.ch/", + 10, + [], + [ + { + "e": 1635 + } + ], + [ + { + "v": 1635 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1635 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1635 + } + ], + {} + ], + [ + 1, + "auto_CH_internet-offer.ch_yj6", + 0, + "^https?://(www\\.)?internet-offer\\.ch/", + 10, + [], + [ + { + "e": 1636 + } + ], + [ + { + "v": 1636 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1636 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1636 + } + ], + {} + ], + [ + 1, + "auto_CH_jetcamp.com_l0i", + 0, + "^https?://(www\\.)?jetcamp\\.com/", + 10, + [], + [ + { + "e": 1637 + } + ], + [ + { + "v": 1637 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1637 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1637 + } + ], + {} + ], + [ + 1, + "auto_CH_jpc.de_geu", + 0, + "^https?://(www\\.)?jpc\\.de/", + 10, + [], + [ + { + "e": 1469 + } + ], + [ + { + "v": 1469 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1469 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1469 + } + ], + {} + ], + [ + 1, + "auto_CH_juckerfarm.ch_r8n", + 0, + "^https?://(www\\.)?juckerfarm\\.ch/", + 10, + [], + [ + { + "e": 1639 + } + ], + [ + { + "v": 1639 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1639 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1639 + } + ], + {} + ], + [ + 1, + "auto_CH_juedische-allgemeine.de_qff", + 0, + "^https?://(www\\.)?juedische-allgemeine\\.de/", + 10, + [], + [ + { + "e": 1640 + } + ], + [ + { + "v": 1640 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1640 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1640 + } + ], + {} + ], + [ + 1, + "auto_CH_kathbern.ch_2uw", + 0, + "^https?://(www\\.)?kathbern\\.ch/", + 10, + [], + [ + { + "e": 1641 + } + ], + [ + { + "v": 1641 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1641 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1641 + } + ], + {} + ], + [ + 1, + "auto_CH_kayak.com_u00_+4", + 0, + "^https?://(www\\.)?kayak\\.(co\\.uk|[a-z]+)/|^https?://(www\\.)?momondo\\.ch/|^https?://(www\\.)?swoodoo\\.ch/|^https?://(www\\.)?swoodoo\\.com/|^https?://(www\\.)?momondo\\.de/", + 10, + [], + [ + { + "e": 1642 + } + ], + [ + { + "v": 1642 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1642 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1642 + } + ], + {} + ], + [ + 1, + "auto_CH_kinderregion.ch_meq", + 0, + "^https?://(www\\.)?kinderregion\\.ch/", + 10, + [], + [ + { + "e": 1643 + } + ], + [ + { + "v": 1643 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1643 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1643 + } + ], + {} + ], + [ + 1, + "auto_CH_kinopoisk.ru_w3g_+14", + 0, + "^https?://(www\\.)?kinopoisk\\.ru/|^https?://(www\\.)?market\\.yandex\\.ru/|^https?://(www\\.)?translate\\.yandex\\.com/|^https?://(www\\.)?yandex\\.com\\.tr/|^https?://(www\\.)?ya\\.ru/|^https?://(www\\.)?yandex\\.com/|^https?://(www\\.)?translate\\.yandex\\.ru/|^https?://(www\\.)?yandex\\.by/|^https?://(www\\.)?local\\.yandex\\.com/|^https?://(www\\.)?sso\\.passport\\.yandex\\.ru/|^https?://(www\\.)?360\\.yandex\\.ru/|^https?://(www\\.)?360\\.yandex\\.com/|^https?://(www\\.)?music\\.yandex\\.ru/|^https?://(www\\.)?hd\\.kinopoisk\\.ru/|^https?://(www\\.)?wap\\.yandex\\.com/", + 10, + [], + [ + { + "e": 1644 + } + ], + [ + { + "v": 1644 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1644 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1644 + } + ], + {} + ], + [ + 1, + "auto_CH_klett-sprachen.de_kbc_+5", + 0, + "^https?://(www\\.)?klett-sprachen\\.de/|^https?://(www\\.)?divibib\\.com/|^https?://(www\\.)?staempflirecht\\.ch/|^https?://(www\\.)?ccbuchner\\.de/|^https?://(www\\.)?duncker-humblot\\.de/|^https?://(www\\.)?hilfe\\.onleihe\\.de/", + 10, + [], + [ + { + "e": 1645 + } + ], + [ + { + "v": 1645 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1645 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1645 + } + ], + {} + ], + [ + 1, + "auto_CH_klm.com_65w", + 0, + "^https?://(www\\.)?klm\\.(co\\.uk|[a-z]+)/", + 10, + [], + [ + { + "e": 1646 + } + ], + [ + { + "v": 1646 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1646 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1646 + } + ], + {} + ], + [ + 1, + "auto_CH_kobo.com_p4l", + 0, + "^https?://(www\\.)?kobo\\.com/", + 10, + [], + [ + { + "e": 1647 + } + ], + [ + { + "v": 1647 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1647 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1647 + } + ], + {} + ], + [ + 1, + "auto_CH_koffer-schweiz.ch_39b", + 0, + "^https?://(www\\.)?koffer-schweiz\\.ch/", + 10, + [], + [ + { + "e": 1648 + } + ], + [ + { + "v": 1648 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1648 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1648 + } + ], + {} + ], + [ + 1, + "auto_CH_krebsliga.ch_t74", + 0, + "^https?://(www\\.)?krebsliga\\.ch/", + 10, + [], + [ + { + "e": 1649 + } + ], + [ + { + "v": 1649 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1649 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1649 + } + ], + {} + ], + [ + 1, + "auto_CH_kreuzlingen.ch_5px", + 0, + "^https?://(www\\.)?kreuzlingen\\.ch/", + 10, + [], + [ + { + "e": 1650 + } + ], + [ + { + "v": 1650 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1650 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1650 + } + ], + {} + ], + [ + 1, + "auto_CH_ksbl.ch_pem", + 0, + "^https?://(www\\.)?ksbl\\.ch/", + 10, + [], + [ + { + "e": 1651 + } + ], + [ + { + "v": 1651 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1651 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1651 + } + ], + {} + ], + [ + 1, + "auto_CH_kurs-natur.ch_d51", + 0, + "^https?://(www\\.)?kurs-natur\\.ch/", + 10, + [], + [ + { + "e": 1652 + } + ], + [ + { + "v": 1652 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1652 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1652 + } + ], + {} + ], + [ + 1, + "auto_CH_labanquepostale.fr_o6f_+1", + 0, + "^https?://(www\\.)?labanquepostale\\.fr/|^https?://(www\\.)?labanquepostale\\.com/", + 10, + [], + [ + { + "e": 1653 + } + ], + [ + { + "v": 1653 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1653 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1653 + } + ], + {} + ], + [ + 1, + "auto_CH_lago-maggiore.de_x33", + 0, + "^https?://(www\\.)?lago-maggiore\\.de/", + 10, + [], + [ + { + "e": 1470 + } + ], + [ + { + "v": 1470 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1470 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1470 + } + ], + {} + ], + [ + 1, + "auto_CH_lakers.ch_x8v", + 0, + "^https?://(www\\.)?lakers\\.ch/", + 10, + [], + [ + { + "e": 1471 + } + ], + [ + { + "v": 1471 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1471 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1471 + } + ], + {} + ], + [ + 1, + "auto_CH_landwirtschaft.ufasamen.ch_y7u", + 0, + "^https?://(www\\.)?landwirtschaft\\.ufasamen\\.ch/", + 10, + [], + [ + { + "e": 1654 + } + ], + [ + { + "v": 1654 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1654 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1654 + } + ], + {} + ], + [ + 1, + "auto_CH_laposte.fr_ctu_+2", + 0, + "^https?://(www\\.)?laposte\\.fr/|^https?://(www\\.)?localiser\\.laposte\\.fr/|^https?://(www\\.)?aide\\.laposte\\.fr/", + 10, + [], + [ + { + "e": 1656 + } + ], + [ + { + "v": 1656 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1656 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1656 + } + ], + {} + ], + [ + 1, + "auto_CH_larian.com_kp5", + 0, + "^https?://(www\\.)?larian\\.com/", + 10, + [], + [ + { + "e": 810 + } + ], + [ + { + "v": 810 + } + ], + [ + { + "wait": 500 + }, + { + "c": 810 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 810 + } + ], + {} + ], + [ + 1, + "auto_CH_lausannemusees.ch_h7a", + 0, + "^https?://(www\\.)?lausannemusees\\.ch/", + 10, + [], + [ + { + "e": 2119 + } + ], + [ + { + "v": 2119 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2119 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2119 + } + ], + {} + ], + [ + 1, + "auto_CH_ldlc.com_tu9_+1", + 0, + "^https?://(www\\.)?ldlc\\.com/|^https?://(www\\.)?ldlc\\.pro/", + 10, + [], + [ + { + "e": 1655 + } + ], + [ + { + "v": 1655 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1655 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1655 + } + ], + {} + ], + [ + 1, + "auto_CH_leukerbad.ch_j8l_+1", + 0, + "^https?://(www\\.)?leukerbad\\.ch/|^https?://(www\\.)?bibb\\.de/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_CH_louis-moto.ch_5yk_+1", + 0, + "^https?://(www\\.)?louis-moto\\.ch/|^https?://(www\\.)?louis\\.de/", + 10, + [], + [ + { + "e": 1484 + } + ], + [ + { + "v": 1484 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1484 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1484 + } + ], + {} + ], + [ + 1, + "auto_CH_magische-tantra.ch_y4v", + 0, + "^https?://(www\\.)?magische-tantra\\.ch/", + 10, + [], + [ + { + "e": 1657 + } + ], + [ + { + "v": 1657 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1657 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1657 + } + ], + {} + ], + [ + 1, + "auto_CH_manufactum.ch_ag0_+1", + 0, + "^https?://(www\\.)?manufactum\\.ch/|^https?://(www\\.)?manufactum\\.de/", + 10, + [], + [ + { + "e": 1658 + } + ], + [ + { + "v": 1658 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1658 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1658 + } + ], + {} + ], + [ + 1, + "auto_CH_manus.im_7l2", + 0, + "^https?://(www\\.)?manus\\.im/", + 10, + [], + [ + { + "e": 1659 + } + ], + [ + { + "v": 1659 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1659 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1659 + } + ], + {} + ], + [ + 1, + "auto_CH_manutd.com_i41", + 0, + "^https?://(www\\.)?manutd\\.com/", + 10, + [], + [ + { + "e": 1660 + } + ], + [ + { + "v": 1660 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1660 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1660 + } + ], + {} + ], + [ + 1, + "auto_CH_marcelpaa.com_ncf", + 0, + "^https?://(www\\.)?marcelpaa\\.com/", + 10, + [], + [ + { + "e": 1659 + } + ], + [ + { + "v": 1659 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1659 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1659 + } + ], + {} + ], + [ + 1, + "auto_CH_martigny.ch_vho_+2", + 0, + "^https?://(www\\.)?martigny\\.ch/|^https?://(www\\.)?martigny\\.com/|^https?://(www\\.)?saint-bernard\\.ch/", + 10, + [], + [ + { + "e": 1661 + } + ], + [ + { + "v": 1661 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1661 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1661 + } + ], + {} + ], + [ + 1, + "auto_CH_mediatheque.ch_360_+2", + 0, + "^https?://(www\\.)?mediatheque\\.ch/|^https?://(www\\.)?sierre-zinal\\.com/|^https?://(www\\.)?sierre\\.ch/", + 10, + [], + [ + { + "e": 1698 + } + ], + [ + { + "v": 1698 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1698 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1698 + } + ], + {} + ], + [ + 1, + "auto_CH_medicus.ch_g0r", + 0, + "^https?://(www\\.)?medicus\\.ch/", + 10, + [], + [ + { + "e": 2929 + } + ], + [ + { + "v": 2929 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2929 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2929 + } + ], + {} + ], + [ + 1, + "auto_CH_mein-kraeuterkeller.de_zjh", + 0, + "^https?://(www\\.)?mein-kraeuterkeller\\.de/", + 10, + [], + [ + { + "e": 1662 + } + ], + [ + { + "v": 1662 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1662 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1662 + } + ], + {} + ], + [ + 1, + "auto_CH_meintiptopf.ch_84l", + 0, + "^https?://(www\\.)?meintiptopf\\.ch/", + 10, + [], + [ + { + "e": 2930 + } + ], + [ + { + "v": 2930 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2930 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2930 + } + ], + {} + ], + [ + 1, + "auto_CH_mio.se_hd0", + 0, + "^https?://(www\\.)?mio\\.se/", + 10, + [], + [ + { + "e": 2590 + } + ], + [ + { + "v": 2590 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2590 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2590 + } + ], + {} + ], + [ + 1, + "auto_CH_modebayard.ch_o56", + 0, + "^https?://(www\\.)?modebayard\\.ch/", + 10, + [], + [ + { + "e": 1508 + } + ], + [ + { + "v": 1508 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1508 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1508 + } + ], + {} + ], + [ + 1, + "auto_CH_moebel24.ch_fck_+1", + 0, + "^https?://(www\\.)?moebel24\\.ch/|^https?://(www\\.)?moebel\\.de/", + 10, + [], + [ + { + "e": 1665 + } + ], + [ + { + "v": 1665 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1665 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1665 + } + ], + {} + ], + [ + 1, + "auto_CH_mofakult.ch_h7z", + 0, + "^https?://(www\\.)?mofakult\\.ch/", + 10, + [], + [ + { + "e": 1666 + } + ], + [ + { + "v": 1666 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1666 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1666 + } + ], + {} + ], + [ + 1, + "auto_CH_morges.ch_p9r", + 0, + "^https?://(www\\.)?morges\\.ch/", + 10, + [], + [ + { + "e": 1667 + } + ], + [ + { + "v": 1667 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1667 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1667 + } + ], + {} + ], + [ + 1, + "auto_CH_mrporter.com_0nl_+2", + 0, + "^https?://(www\\.)?mrporter\\.com/|^https?://(www\\.)?net-a-porter\\.com/|^https?://(www\\.)?theoutnet\\.com/", + 10, + [], + [ + { + "e": 2053 + } + ], + [ + { + "v": 2053 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2053 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2053 + } + ], + {} + ], + [ + 1, + "auto_CH_musical.ch_v1w", + 0, + "^https?://(www\\.)?musical\\.ch/", + 10, + [], + [ + { + "e": 1716 + } + ], + [ + { + "v": 1716 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1716 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1716 + } + ], + {} + ], + [ + 1, + "auto_CH_musix.com_3rv", + 0, + "^https?://(www\\.)?musix\\.com/", + 10, + [], + [ + { + "e": 1668 + } + ], + [ + { + "v": 1668 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1668 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1668 + } + ], + {} + ], + [ + 1, + "auto_CH_mydealz.de_q28", + 0, + "^https?://(www\\.)?mydealz\\.de/", + 10, + [], + [ + { + "e": 2243 + } + ], + [ + { + "v": 2243 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2243 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2243 + } + ], + {} + ], + [ + 1, + "auto_CH_notino.ch_bz5", + 0, + "^https?://(www\\.)?notino\\.ch/", + 10, + [], + [ + { + "e": 1670 + } + ], + [ + { + "v": 1670 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1670 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1670 + } + ], + {} + ], + [ + 1, + "auto_CH_oaat-otma.ch_sgq", + 0, + "^https?://(www\\.)?oaat-otma\\.ch/", + 10, + [], + [ + { + "e": 1551 + } + ], + [ + { + "v": 1551 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1551 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1551 + } + ], + {} + ], + [ + 1, + "auto_CH_onlyoffice.com_wie", + 0, + "^https?://(www\\.)?onlyoffice\\.com/", + 10, + [], + [ + { + "e": 1671 + } + ], + [ + { + "v": 1671 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1671 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1671 + } + ], + {} + ], + [ + 1, + "auto_CH_opera-lausanne.ch_ttk_+1", + 0, + "^https?://(www\\.)?opera-lausanne\\.ch/|^https?://(www\\.)?swisswine\\.com/", + 10, + [], + [ + { + "e": 1430 + } + ], + [ + { + "v": 1430 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1430 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1430 + } + ], + {} + ], + [ + 1, + "auto_CH_opernhaus.ch_7ct", + 0, + "^https?://(www\\.)?opernhaus\\.ch/", + 10, + [], + [ + { + "e": 1672 + } + ], + [ + { + "v": 1672 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1672 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1672 + } + ], + {} + ], + [ + 1, + "auto_CH_orsetto.ch_u5k", + 0, + "^https?://(www\\.)?orsetto\\.ch/", + 10, + [], + [ + { + "e": 2931 + } + ], + [ + { + "v": 2931 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2931 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2931 + } + ], + {} + ], + [ + 1, + "auto_CH_particuliers.sg.fr_wlx_+3", + 0, + "^https?://(www\\.)?particuliers\\.sg\\.fr/|^https?://(www\\.)?agences\\.sg\\.fr/|^https?://(www\\.)?professionnels\\.secure\\.societegenerale\\.fr/|^https?://(www\\.)?professionnels\\.sg\\.fr/", + 10, + [], + [ + { + "e": 2932 + } + ], + [ + { + "v": 2932 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2932 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2932 + } + ], + {} + ], + [ + 1, + "auto_CH_payot.ch_bbz", + 0, + "^https?://(www\\.)?payot\\.ch/", + 10, + [], + [ + { + "e": 1673 + } + ], + [ + { + "v": 1673 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1673 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1673 + } + ], + {} + ], + [ + 1, + "auto_CH_petri-heil.ch_obp_+1", + 0, + "^https?://(www\\.)?petri-heil\\.ch/|^https?://(www\\.)?radio1\\.ch/", + 10, + [], + [ + { + "e": 1674 + } + ], + [ + { + "v": 1674 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1674 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1674 + } + ], + {} + ], + [ + 1, + "auto_CH_peugeot.ch_xqo_+6", + 0, + "^https?://(www\\.)?peugeot\\.ch/|^https?://(www\\.)?citroen\\.fr/|^https?://(www\\.)?concessions\\.peugeot\\.fr/|^https?://(www\\.)?opel\\.fr/|^https?://(www\\.)?peugeot\\.fr/|^https?://(www\\.)?reseau\\.citroen\\.fr/|^https?://(www\\.)?spoticar\\.fr/", + 10, + [], + [ + { + "e": 1139 + } + ], + [ + { + "v": 1139 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1139 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1139 + } + ], + {} + ], + [ + 1, + "auto_CH_pfirsi.ch_ech", + 0, + "^https?://(www\\.)?pfirsi\\.ch/", + 10, + [], + [ + { + "e": 1574 + } + ], + [ + { + "v": 1574 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1574 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1574 + } + ], + {} + ], + [ + 1, + "auto_CH_pharma-gdd.com_y6y", + 0, + "^https?://(www\\.)?pharma-gdd\\.com/", + 10, + [], + [ + { + "e": 1675 + } + ], + [ + { + "v": 1675 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1675 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1675 + } + ], + {} + ], + [ + 1, + "auto_CH_pkwteile.ch_m2h", + 0, + "^https?://(www\\.)?pkwteile\\.ch/", + 10, + [], + [ + { + "e": 1677 + } + ], + [ + { + "v": 1677 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1677 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1677 + } + ], + {} + ], + [ + 1, + "auto_CH_planet-rc.ch_orj", + 0, + "^https?://(www\\.)?planet-rc\\.ch/", + 10, + [], + [ + { + "e": 1678 + } + ], + [ + { + "v": 1678 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1678 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1678 + } + ], + {} + ], + [ + 1, + "auto_CH_platform.openai.com_g5y", + 0, + "^https?://(www\\.)?platform\\.openai\\.com/", + 10, + [], + [ + { + "e": 1679 + } + ], + [ + { + "v": 1679 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1679 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1679 + } + ], + {} + ], + [ + 1, + "auto_CH_pmphotomedia.ch_ume", + 0, + "^https?://(www\\.)?pmphotomedia\\.ch/", + 10, + [], + [ + { + "e": 1600 + } + ], + [ + { + "v": 1600 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1600 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1600 + } + ], + {} + ], + [ + 1, + "auto_CH_popcornflix.com_kak_+1", + 0, + "^https?://(www\\.)?popcornflix\\.com/|^https?://(www\\.)?fawesome\\.tv/", + 10, + [], + [ + { + "e": 1680 + } + ], + [ + { + "v": 1680 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1680 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1680 + } + ], + {} + ], + [ + 1, + "auto_CH_premierinn.com_mvp", + 0, + "^https?://(www\\.)?premierinn\\.com/", + 10, + [], + [ + { + "e": 1681 + } + ], + [ + { + "v": 1681 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1681 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1681 + } + ], + {} + ], + [ + 1, + "auto_CH_products.aspose.app_7yy_+1", + 0, + "^https?://(www\\.)?products\\.aspose\\.app/|^https?://(www\\.)?products\\.conholdate\\.app/", + 10, + [], + [ + { + "e": 1682 + } + ], + [ + { + "v": 1682 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1682 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1682 + } + ], + {} + ], + [ + 1, + "auto_CH_profond.ch_z0n", + 0, + "^https?://(www\\.)?profond\\.ch/", + 10, + [], + [ + { + "e": 1638 + } + ], + [ + { + "v": 1638 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1638 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1638 + } + ], + {} + ], + [ + 1, + "auto_CH_profotshop.ch_4ay", + 0, + "^https?://(www\\.)?profotshop\\.ch/", + 10, + [], + [ + { + "e": 1683 + } + ], + [ + { + "v": 1683 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1683 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1683 + } + ], + {} + ], + [ + 1, + "auto_CH_raetselhilfe.net_zbu", + 0, + "^https?://(www\\.)?raetselhilfe\\.net/", + 10, + [], + [ + { + "e": 1684 + } + ], + [ + { + "v": 1684 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1684 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1684 + } + ], + {} + ], + [ + 1, + "auto_CH_ratp.fr_v7t", + 0, + "^https?://(www\\.)?ratp\\.fr/", + 10, + [], + [ + { + "e": 1685 + } + ], + [ + { + "v": 1685 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1685 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1685 + } + ], + {} + ], + [ + 1, + "auto_CH_ravensburger.de_7et", + 0, + "^https?://(www\\.)?ravensburger\\.de/", + 10, + [], + [ + { + "e": 1686 + } + ], + [ + { + "v": 1686 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1686 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1686 + } + ], + {} + ], + [ + 1, + "auto_CH_rega.ch_mpy", + 0, + "^https?://(www\\.)?rega\\.ch/", + 10, + [], + [ + { + "e": 1663 + } + ], + [ + { + "v": 1663 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1663 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1663 + } + ], + {} + ], + [ + 1, + "auto_CH_regiondentsdumidi.ch_4ny", + 0, + "^https?://(www\\.)?regiondentsdumidi\\.ch/", + 10, + [], + [ + { + "e": 1688 + } + ], + [ + { + "v": 1688 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1688 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1688 + } + ], + {} + ], + [ + 1, + "auto_CH_reichelt.com_z7w", + 0, + "^https?://(www\\.)?reichelt\\.com/", + 10, + [], + [ + { + "e": 1689 + } + ], + [ + { + "v": 1689 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1689 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1689 + } + ], + {} + ], + [ + 1, + "auto_CH_reichelt.de_9fo", + 0, + "^https?://(www\\.)?reichelt\\.de/", + 10, + [], + [ + { + "e": 1689 + } + ], + [ + { + "v": 1689 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1689 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1689 + } + ], + {} + ], + [ + 1, + "auto_CH_renens.ch_2uc", + 0, + "^https?://(www\\.)?renens\\.ch/", + 10, + [], + [ + { + "e": 1669 + } + ], + [ + { + "v": 1669 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1669 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1669 + } + ], + {} + ], + [ + 1, + "auto_CH_reolink.com_fv0", + 0, + "^https?://(www\\.)?reolink\\.com/", + 10, + [], + [ + { + "e": 1690 + } + ], + [ + { + "v": 1690 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1690 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1690 + } + ], + {} + ], + [ + 1, + "auto_CH_researchgate.net_rik", + 0, + "^https?://(www\\.)?researchgate\\.net/", + 10, + [], + [ + { + "e": 1676 + } + ], + [ + { + "v": 1676 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1676 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1676 + } + ], + {} + ], + [ + 1, + "auto_CH_resortragaz.ch_u2z", + 0, + "^https?://(www\\.)?resortragaz\\.ch/", + 10, + [], + [ + { + "e": 1590 + } + ], + [ + { + "v": 1590 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1590 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1590 + } + ], + {} + ], + [ + 1, + "auto_CH_rheinwerk-verlag.de_mao", + 0, + "^https?://(www\\.)?rheinwerk-verlag\\.de/", + 10, + [], + [ + { + "e": 1687 + } + ], + [ + { + "v": 1687 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1687 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1687 + } + ], + {} + ], + [ + 1, + "auto_CH_rhne.ch_zk5", + 0, + "^https?://(www\\.)?rhne\\.ch/", + 10, + [], + [ + { + "e": 1693 + } + ], + [ + { + "v": 1693 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1693 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1693 + } + ], + {} + ], + [ + 1, + "auto_CH_riehen.ch_v1b_+1", + 0, + "^https?://(www\\.)?riehen\\.ch/|^https?://(www\\.)?wetzikon\\.ch/", + 10, + [], + [ + { + "e": 1694 + } + ], + [ + { + "v": 1694 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1694 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1694 + } + ], + {} + ], + [ + 1, + "auto_CH_rotho.com_yb2_+2", + 0, + "^https?://(www\\.)?rotho\\.com/|^https?://(www\\.)?graef\\.de/|^https?://(www\\.)?mg\\.co\\.uk/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_CH_sac-uto.ch_3gu", + 0, + "^https?://(www\\.)?sac-uto\\.ch/", + 10, + [], + [ + { + "e": 1705 + } + ], + [ + { + "v": 1705 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1705 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1705 + } + ], + {} + ], + [ + 1, + "auto_CH_sbw.edu_3e4_+1", + 0, + "^https?://(www\\.)?sbw\\.edu/|^https?://(www\\.)?jade-hs\\.de/", + 10, + [], + [ + { + "e": 1695 + } + ], + [ + { + "v": 1695 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1695 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1695 + } + ], + {} + ], + [ + 1, + "auto_CH_seetickets.com_4b2", + 0, + "^https?://(www\\.)?seetickets\\.com/", + 10, + [], + [ + { + "e": 1696 + } + ], + [ + { + "v": 1696 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1696 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1696 + } + ], + {} + ], + [ + 1, + "auto_CH_sharely.ch_om6", + 0, + "^https?://(www\\.)?sharely\\.ch/", + 10, + [], + [ + { + "e": 1720 + } + ], + [ + { + "v": 1720 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1720 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1720 + } + ], + {} + ], + [ + 1, + "auto_CH_sheetmusicplus.com_xwi", + 0, + "^https?://(www\\.)?sheetmusicplus\\.com/", + 10, + [], + [ + { + "e": 1697 + } + ], + [ + { + "v": 1697 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1697 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1697 + } + ], + {} + ], + [ + 1, + "auto_CH_sitg.ge.ch_srn", + 0, + "^https?://(www\\.)?sitg\\.ge\\.ch/", + 10, + [], + [ + { + "e": 1650 + } + ], + [ + { + "v": 1650 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1650 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1650 + } + ], + {} + ], + [ + 1, + "auto_CH_sleep-hero.de_3wm", + 0, + "^https?://(www\\.)?sleep-hero\\.de/", + 10, + [], + [ + { + "e": 2145 + } + ], + [ + { + "v": 2145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2145 + } + ], + {} + ], + [ + 1, + "auto_CH_somfy.ch_4hi_+1", + 0, + "^https?://(www\\.)?somfy\\.ch/|^https?://(www\\.)?somfy\\.de/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_CH_son-video.com_2fu", + 0, + "^https?://(www\\.)?son-video\\.com/", + 10, + [], + [ + { + "e": 1699 + } + ], + [ + { + "v": 1699 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1699 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1699 + } + ], + {} + ], + [ + 1, + "auto_CH_sparkasse.de_lwr_+1", + 0, + "^https?://(www\\.)?sparkasse\\.de/|^https?://(www\\.)?starmoney\\.de/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_CH_speechify.com_vpr", + 0, + "^https?://(www\\.)?speechify\\.com/", + 10, + [], + [ + { + "e": 1034 + } + ], + [ + { + "v": 1034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1034 + } + ], + {} + ], + [ + 1, + "auto_CH_spitalaffoltern.ch_0gl", + 0, + "^https?://(www\\.)?spitalaffoltern\\.ch/", + 10, + [], + [ + { + "e": 1885 + } + ], + [ + { + "v": 1885 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1885 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1885 + } + ], + {} + ], + [ + 1, + "auto_CH_stackadapt.com_ayj", + 0, + "^https?://(www\\.)?stackadapt\\.com/", + 10, + [], + [ + { + "e": 2889 + } + ], + [ + { + "v": 2889 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2889 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2889 + } + ], + {} + ], + [ + 1, + "auto_CH_stadtwerk.winterthur.ch_sed", + 0, + "^https?://(www\\.)?stadtwerk\\.winterthur\\.ch/", + 10, + [], + [ + { + "e": 1700 + } + ], + [ + { + "v": 1700 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1700 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1700 + } + ], + {} + ], + [ + 1, + "auto_CH_stevensbikes.de_5a1", + 0, + "^https?://(www\\.)?stevensbikes\\.de/", + 10, + [], + [ + { + "e": 1701 + } + ], + [ + { + "v": 1701 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1701 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1701 + } + ], + {} + ], + [ + 1, + "auto_CH_stiebel-eltron.ch_jjr", + 0, + "^https?://(www\\.)?stiebel-eltron\\.ch/", + 10, + [], + [ + { + "e": 1741 + } + ], + [ + { + "v": 1741 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1741 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1741 + } + ], + {} + ], + [ + 1, + "auto_CH_storen.ch_vqn", + 0, + "^https?://(www\\.)?storen\\.ch/", + 10, + [], + [ + { + "e": 1702 + } + ], + [ + { + "v": 1702 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1702 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1702 + } + ], + {} + ], + [ + 1, + "auto_CH_streetparade.com_euh", + 0, + "^https?://(www\\.)?streetparade\\.com/", + 10, + [], + [ + { + "e": 1703 + } + ], + [ + { + "v": 1703 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1703 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1703 + } + ], + {} + ], + [ + 1, + "auto_CH_suisse-epolice.ch_yh8", + 0, + "^https?://(www\\.)?suisse-epolice\\.ch/", + 10, + [], + [ + { + "e": 1704 + } + ], + [ + { + "v": 1704 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1704 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1704 + } + ], + {} + ], + [ + 1, + "auto_CH_supertext.com_j0n", + 0, + "^https?://(www\\.)?supertext\\.com/", + 10, + [], + [ + { + "e": 1802 + } + ], + [ + { + "v": 1802 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1802 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1802 + } + ], + {} + ], + [ + 1, + "auto_CH_support.hostpoint.ch_fp5", + 0, + "^https?://(www\\.)?support\\.hostpoint\\.ch/", + 10, + [], + [ + { + "e": 1706 + } + ], + [ + { + "v": 1706 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1706 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1706 + } + ], + {} + ], + [ + 1, + "auto_CH_support.hpe.com_utb", + 0, + "^https?://(www\\.)?support\\.hpe\\.com/", + 10, + [], + [ + { + "e": 2933 + } + ], + [ + { + "v": 2933 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2933 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2933 + } + ], + {} + ], + [ + 1, + "auto_CH_surfshark.com_okd", + 0, + "^https?://(www\\.)?surfshark\\.com/", + 10, + [], + [ + { + "e": 1707 + } + ], + [ + { + "v": 1707 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1707 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1707 + } + ], + {} + ], + [ + 1, + "auto_CH_sva-bl.ch_h2k_+2", + 0, + "^https?://(www\\.)?sva-bl\\.ch/|^https?://(www\\.)?dibt\\.de/|^https?://(www\\.)?uni-bremen\\.de/", + 10, + [], + [ + { + "e": 1708 + } + ], + [ + { + "v": 1708 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1708 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1708 + } + ], + {} + ], + [ + 1, + "auto_CH_svtplay.se_d39", + 0, + "^https?://(www\\.)?svtplay\\.se/", + 10, + [], + [ + { + "e": 1815 + } + ], + [ + { + "v": 1815 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1815 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1815 + } + ], + {} + ], + [ + 1, + "auto_CH_swisscommunity.org_vjz", + 0, + "^https?://(www\\.)?swisscommunity\\.org/", + 10, + [], + [ + { + "e": 1709 + } + ], + [ + { + "v": 1709 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1709 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1709 + } + ], + {} + ], + [ + 1, + "auto_CH_swissgolf.ch_mdk", + 0, + "^https?://(www\\.)?swissgolf\\.ch/", + 10, + [], + [ + { + "e": 1180 + } + ], + [ + { + "v": 1180 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1180 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1180 + } + ], + {} + ], + [ + 1, + "auto_CH_swissheart.ch_tcw", + 0, + "^https?://(www\\.)?swissheart\\.ch/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_CH_swissmedical.net_d45", + 0, + "^https?://(www\\.)?swissmedical\\.net/", + 10, + [], + [ + { + "e": 1710 + } + ], + [ + { + "v": 1710 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1710 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1710 + } + ], + {} + ], + [ + 1, + "auto_CH_swissquote.com_zk5", + 0, + "^https?://(www\\.)?swissquote\\.com/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_CH_swisswinevalais.ch_498", + 0, + "^https?://(www\\.)?swisswinevalais\\.ch/", + 10, + [], + [ + { + "e": 1849 + } + ], + [ + { + "v": 1849 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1849 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1849 + } + ], + {} + ], + [ + 1, + "auto_CH_t-l.ch_4tr", + 0, + "^https?://(www\\.)?t-l\\.ch/", + 10, + [], + [ + { + "e": 1711 + } + ], + [ + { + "v": 1711 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1711 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1711 + } + ], + {} + ], + [ + 1, + "auto_CH_tefal.ch_q4h_+4", + 0, + "^https?://(www\\.)?tefal\\.ch/|^https?://(www\\.)?moulinex\\.fr/|^https?://(www\\.)?rowenta\\.fr/|^https?://(www\\.)?seb\\.fr/|^https?://(www\\.)?tefal\\.fr/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_CH_teile-direkt.ch_paq", + 0, + "^https?://(www\\.)?teile-direkt\\.ch/", + 10, + [], + [ + { + "e": 1712 + } + ], + [ + { + "v": 1712 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1712 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1712 + } + ], + {} + ], + [ + 1, + "auto_CH_theoceanrace.com_rfc", + 0, + "^https?://(www\\.)?theoceanrace\\.com/", + 10, + [], + [ + { + "e": 1713 + } + ], + [ + { + "v": 1713 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1713 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1713 + } + ], + {} + ], + [ + 1, + "auto_CH_thermalbad-wallis.ch_gx7", + 0, + "^https?://(www\\.)?thermalbad-wallis\\.ch/", + 10, + [], + [ + { + "e": 1714 + } + ], + [ + { + "v": 1714 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1714 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1714 + } + ], + {} + ], + [ + 1, + "auto_CH_thorlabs.com_x28", + 0, + "^https?://(www\\.)?thorlabs\\.com/", + 10, + [], + [ + { + "e": 1715 + } + ], + [ + { + "v": 1715 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1715 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1715 + } + ], + {} + ], + [ + 1, + "auto_CH_thunerseespiele.ch_4b9", + 0, + "^https?://(www\\.)?thunerseespiele\\.ch/", + 10, + [], + [ + { + "e": 1716 + } + ], + [ + { + "v": 1716 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1716 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1716 + } + ], + {} + ], + [ + 1, + "auto_CH_tonhalle-orchester.ch_u49_+1", + 0, + "^https?://(www\\.)?tonhalle-orchester\\.ch/|^https?://(www\\.)?tonhallezuerich\\.ch/", + 10, + [], + [ + { + "e": 1672 + } + ], + [ + { + "v": 1672 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1672 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1672 + } + ], + {} + ], + [ + 1, + "auto_CH_topthaimassages.ch_fdx", + 0, + "^https?://(www\\.)?topthaimassages\\.ch/", + 10, + [], + [ + { + "e": 1954 + } + ], + [ + { + "v": 1954 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1954 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1954 + } + ], + {} + ], + [ + 1, + "auto_CH_transn.ch_ygb", + 0, + "^https?://(www\\.)?transn\\.ch/", + 10, + [], + [ + { + "e": 1717 + } + ], + [ + { + "v": 1717 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1717 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1717 + } + ], + {} + ], + [ + 1, + "auto_CH_trip.com_7oh_+1", + 0, + "^https?://(www\\.)?ch\\.trip\\.com/|^https?://(www\\.)?de\\.trip\\.com/", + 10, + [], + [ + { + "e": 1800 + } + ], + [ + { + "v": 1800 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1800 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1800 + } + ], + {} + ], + [ + 1, + "auto_CH_truewealth.ch_gox", + 0, + "^https?://(www\\.)?truewealth\\.ch/", + 10, + [], + [ + { + "e": 1718 + } + ], + [ + { + "v": 1718 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1718 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1718 + } + ], + {} + ], + [ + 1, + "auto_CH_ubs-kidscup.ch_5oc", + 0, + "^https?://(www\\.)?ubs-kidscup\\.ch/", + 10, + [], + [ + { + "e": 1719 + } + ], + [ + { + "v": 1719 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1719 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1719 + } + ], + {} + ], + [ + 1, + "auto_CH_ucl.ac.uk_0w9_+1", + 0, + "^https?://(www\\.)?ucl\\.ac\\.uk/|^https?://(www\\.)?library-guides\\.ucl\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1870 + } + ], + [ + { + "v": 1870 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1870 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1870 + } + ], + {} + ], + [ + 1, + "auto_CH_unisg.ch_e8e", + 0, + "^https?://(www\\.)?unisg\\.ch/", + 10, + [], + [ + { + "e": 1721 + } + ], + [ + { + "v": 1721 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1721 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1721 + } + ], + {} + ], + [ + 1, + "auto_CH_unsplash.com_15t", + 0, + "^https?://(www\\.)?unsplash\\.com/", + 10, + [], + [ + { + "e": 2934 + } + ], + [ + { + "v": 2934 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2934 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2934 + } + ], + {} + ], + [ + 1, + "auto_CH_v-kitchen.ch_ftd", + 0, + "^https?://(www\\.)?v-kitchen\\.ch/", + 10, + [], + [ + { + "e": 1723 + } + ], + [ + { + "v": 1723 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1723 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1723 + } + ], + {} + ], + [ + 1, + "auto_CH_vaadin.com_rht", + 0, + "^https?://(www\\.)?vaadin\\.com/", + 10, + [], + [ + { + "e": 2935 + } + ], + [ + { + "v": 2935 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2935 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2935 + } + ], + {} + ], + [ + 1, + "auto_CH_velofactory.ch_tpq", + 0, + "^https?://(www\\.)?velofactory\\.ch/", + 10, + [], + [ + { + "e": 1724 + } + ], + [ + { + "v": 1724 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1724 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1724 + } + ], + {} + ], + [ + 1, + "auto_CH_verivox.de_n2d", + 0, + "^https?://(www\\.)?verivox\\.de/", + 10, + [], + [ + { + "e": 1725 + } + ], + [ + { + "v": 1725 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1725 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1725 + } + ], + {} + ], + [ + 1, + "auto_CH_viamichelin.com_x6j_+1", + 0, + "^https?://(www\\.)?viamichelin\\.com/|^https?://(www\\.)?viamichelin\\.co\\.uk/", + 10, + [], + [ + { + "e": 1726 + } + ], + [ + { + "v": 1726 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1726 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1726 + } + ], + {} + ], + [ + 1, + "auto_CH_vidy.ch_i7p", + 0, + "^https?://(www\\.)?vidy\\.ch/", + 10, + [], + [ + { + "e": 1907 + } + ], + [ + { + "v": 1907 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1907 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1907 + } + ], + {} + ], + [ + 1, + "auto_CH_vinello.ch_qa4", + 0, + "^https?://(www\\.)?vinello\\.ch/", + 10, + [], + [ + { + "e": 1727 + } + ], + [ + { + "v": 1727 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1727 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1727 + } + ], + {} + ], + [ + 1, + "auto_CH_vinos.de_uog", + 0, + "^https?://(www\\.)?vinos\\.de/", + 10, + [], + [ + { + "e": 2617 + } + ], + [ + { + "v": 2617 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2617 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2617 + } + ], + {} + ], + [ + 1, + "auto_CH_vistaprint.ch_3nq_+1", + 0, + "^https?://(www\\.)?vistaprint\\.ch/|^https?://(www\\.)?vistaprint\\.de/", + 10, + [], + [ + { + "e": 1729 + } + ], + [ + { + "v": 1729 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1729 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1729 + } + ], + {} + ], + [ + 1, + "auto_CH_vmp.ethz.ch_6um", + 0, + "^https?://(www\\.)?vmp\\.ethz\\.ch/", + 10, + [], + [ + { + "e": 1730 + } + ], + [ + { + "v": 1730 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1730 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1730 + } + ], + {} + ], + [ + 1, + "auto_CH_vodafone.de_nzq", + 0, + "^https?://(www\\.)?vodafone\\.de/", + 10, + [], + [ + { + "e": 1731 + } + ], + [ + { + "v": 1731 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1731 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1731 + } + ], + {} + ], + [ + 1, + "auto_CH_voyage-prive.ch_p09", + 0, + "^https?://(www\\.)?voyage-prive\\.ch/", + 10, + [], + [ + { + "e": 2167 + } + ], + [ + { + "v": 2167 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2167 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2167 + } + ], + {} + ], + [ + 1, + "auto_CH_vss.ch_dac", + 0, + "^https?://(www\\.)?vss\\.ch/", + 10, + [], + [ + { + "e": 1911 + } + ], + [ + { + "v": 1911 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1911 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1911 + } + ], + {} + ], + [ + 1, + "auto_CH_westermann-schweiz.ch_krn_+1", + 0, + "^https?://(www\\.)?westermann-schweiz\\.ch/|^https?://(www\\.)?westermann\\.de/", + 10, + [], + [ + { + "e": 1732 + } + ], + [ + { + "v": 1732 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1732 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1732 + } + ], + {} + ], + [ + 1, + "auto_CH_wooclap.com_pca", + 0, + "^https?://(www\\.)?wooclap\\.com/", + 10, + [], + [ + { + "e": 1915 + } + ], + [ + { + "v": 1915 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1915 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1915 + } + ], + {} + ], + [ + 1, + "auto_CH_ww1.lifeplus.com_nwu", + 0, + "^https?://([a-z0-9]+\\.)?lifeplus\\.com/", + 10, + [], + [ + { + "e": 1733 + } + ], + [ + { + "v": 1733 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1733 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1733 + } + ], + {} + ], + [ + 1, + "auto_CH_yasni.de_pf3", + 0, + "^https?://(www\\.)?yasni\\.de/", + 10, + [], + [ + { + "e": 1734 + } + ], + [ + { + "v": 1734 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1734 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1734 + } + ], + {} + ], + [ + 1, + "auto_CH_zdfheute.de_qrw", + 0, + "^https?://(www\\.)?zdfheute\\.de/", + 10, + [], + [ + { + "e": 1735 + } + ], + [ + { + "v": 1735 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1735 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1735 + } + ], + {} + ], + [ + 1, + "auto_CH_zeemo.ai_3x8", + 0, + "^https?://(www\\.)?zeemo\\.ai/", + 10, + [], + [ + { + "e": 1736 + } + ], + [ + { + "v": 1736 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1736 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1736 + } + ], + {} + ], + [ + 1, + "auto_CH_zenodo.org_5w4", + 0, + "^https?://(www\\.)?zenodo\\.org/", + 10, + [], + [ + { + "e": 1737 + } + ], + [ + { + "v": 1737 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1737 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1737 + } + ], + {} + ], + [ + 1, + "auto_CH_zug-tourismus.ch_jg2", + 0, + "^https?://(www\\.)?zug-tourismus\\.ch/", + 10, + [], + [ + { + "e": 1738 + } + ], + [ + { + "v": 1738 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1738 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1738 + } + ], + {} + ], + [ + 1, + "auto_CH_zumstein.ch_7o9", + 0, + "^https?://(www\\.)?zumstein\\.ch/", + 10, + [], + [ + { + "e": 1664 + } + ], + [ + { + "v": 1664 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1664 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1664 + } + ], + {} + ], + [ + 1, + "auto_CH_zuriga.com_zco", + 0, + "^https?://(www\\.)?zuriga\\.com/", + 10, + [], + [ + { + "e": 1739 + } + ], + [ + { + "v": 1739 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1739 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1739 + } + ], + {} + ], + [ + 1, + "auto_DE_116117-termine.de_nwg", + 0, + "^https?://(www\\.)?116117-termine\\.de/", + 10, + [], + [ + { + "e": 1740 + } + ], + [ + { + "v": 1740 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1740 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1740 + } + ], + {} + ], + [ + 1, + "auto_DE_116117.de_ku1", + 0, + "^https?://(www\\.)?116117\\.de/", + 10, + [], + [ + { + "e": 1919 + } + ], + [ + { + "v": 1919 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1919 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1919 + } + ], + {} + ], + [ + 1, + "auto_DE_1822direkt.de_dv3", + 0, + "^https?://(www\\.)?1822direkt\\.de/", + 10, + [], + [ + { + "e": 1742 + } + ], + [ + { + "v": 1742 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1742 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1742 + } + ], + {} + ], + [ + 1, + "auto_DE_3cx.de_cu9", + 0, + "^https?://(www\\.)?3cx\\.de/", + 10, + [], + [ + { + "e": 2936 + } + ], + [ + { + "v": 2936 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2936 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2936 + } + ], + {} + ], + [ + 1, + "auto_DE_accio.com_kdu", + 0, + "^https?://(www\\.)?accio\\.com/", + 10, + [], + [ + { + "e": 2937 + } + ], + [ + { + "v": 2937 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2937 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2937 + } + ], + {} + ], + [ + 1, + "auto_DE_accounts.snapchat.com_s6i", + 0, + "^https?://(www\\.)?accounts\\.snapchat\\.com/", + 10, + [], + [ + { + "e": 1743 + } + ], + [ + { + "v": 1743 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1743 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1743 + } + ], + {} + ], + [ + 1, + "auto_DE_ada.com_5xh", + 0, + "^https?://(www\\.)?ada\\.com/", + 10, + [], + [ + { + "e": 1935 + } + ], + [ + { + "v": 1935 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1935 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1935 + } + ], + {} + ], + [ + 1, + "auto_DE_adfc.de_783", + 0, + "^https?://(www\\.)?adfc\\.de/", + 10, + [], + [ + { + "e": 1744 + } + ], + [ + { + "v": 1744 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1744 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1744 + } + ], + {} + ], + [ + 1, + "auto_DE_advanzia.com_ey4", + 0, + "^https?://(www\\.)?advanzia\\.com/", + 10, + [], + [ + { + "e": 1745 + } + ], + [ + { + "v": 1745 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1745 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1745 + } + ], + {} + ], + [ + 1, + "auto_DE_advocado.de_y8o", + 0, + "^https?://(www\\.)?advocado\\.de/", + 10, + [], + [ + { + "e": 1746 + } + ], + [ + { + "v": 1746 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1746 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1746 + } + ], + {} + ], + [ + 1, + "auto_DE_aerztekammer-bw.de_rse", + 0, + "^https?://(www\\.)?aerztekammer-bw\\.de/", + 10, + [], + [ + { + "e": 1747 + } + ], + [ + { + "v": 1747 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1747 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1747 + } + ], + {} + ], + [ + 1, + "auto_DE_afd.de_tad", + 0, + "^https?://(www\\.)?afd\\.de/", + 10, + [], + [ + { + "e": 1748 + } + ], + [ + { + "v": 1748 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1748 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1748 + } + ], + {} + ], + [ + 1, + "auto_DE_akademie.tuv.com_leu", + 0, + "^https?://(www\\.)?akademie\\.tuv\\.com/", + 10, + [], + [ + { + "e": 2938 + } + ], + [ + { + "v": 2938 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2938 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2938 + } + ], + {} + ], + [ + 1, + "auto_DE_akkushop.de_6lx", + 0, + "^https?://(www\\.)?akkushop\\.de/", + 10, + [], + [ + { + "e": 1749 + } + ], + [ + { + "v": 1749 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1749 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1749 + } + ], + {} + ], + [ + 1, + "auto_DE_aknw.de_wcz_+1", + 0, + "^https?://(www\\.)?aknw\\.de/|^https?://(www\\.)?regioentsorgung\\.de/", + 10, + [], + [ + { + "e": 1750 + } + ], + [ + { + "v": 1750 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1750 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1750 + } + ], + {} + ], + [ + 1, + "auto_DE_alexander-wallasch.de_j97_+2", + 0, + "^https?://(www\\.)?alexander-wallasch\\.de/|^https?://(www\\.)?blabladoc\\.de/|^https?://(www\\.)?mein-eigenheim\\.de/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_DE_all-inkl.com_toh", + 0, + "^https?://(www\\.)?all-inkl\\.com/", + 10, + [], + [ + { + "e": 2939 + } + ], + [ + { + "v": 2939 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2939 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2939 + } + ], + {} + ], + [ + 1, + "auto_DE_almenrausch.at_c6z", + 0, + "^https?://(www\\.)?almenrausch\\.at/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_DE_alpenbahnen-spitzingsee.de_s8i", + 0, + "^https?://(www\\.)?alpenbahnen-spitzingsee\\.de/", + 10, + [], + [ + { + "e": 2940 + } + ], + [ + { + "v": 2940 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2940 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2940 + } + ], + {} + ], + [ + 1, + "auto_DE_alpenverein-muenchen-oberland.de_ftj", + 0, + "^https?://(www\\.)?alpenverein-muenchen-oberland\\.de/", + 10, + [], + [ + { + "e": 1753 + } + ], + [ + { + "v": 1753 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1753 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1753 + } + ], + {} + ], + [ + 1, + "auto_DE_alpenwahnsinn.de_vky", + 0, + "^https?://(www\\.)?alpenwahnsinn\\.de/", + 10, + [], + [ + { + "e": 1941 + } + ], + [ + { + "v": 1941 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1941 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1941 + } + ], + {} + ], + [ + 1, + "auto_DE_alpenwelt-karwendel.de_sn2_+6", + 0, + "^https?://(www\\.)?alpenwelt-karwendel\\.de/|^https?://(www\\.)?auf-nach-mv\\.de/|^https?://(www\\.)?billig-tanken\\.de/|^https?://(www\\.)?eberhardt-travel\\.de/|^https?://(www\\.)?ofen\\.de/|^https?://(www\\.)?projekte-leicht-gemacht\\.de/|^https?://(www\\.)?solarspeicher24\\.de/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_DE_alza.de_iq3", + 0, + "^https?://(www\\.)?alza\\.de/", + 10, + [], + [ + { + "e": 2941 + } + ], + [ + { + "v": 2941 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2941 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2941 + } + ], + {} + ], + [ + 1, + "auto_DE_ameos.de_w2g", + 0, + "^https?://(www\\.)?ameos\\.de/", + 10, + [], + [ + { + "e": 1754 + } + ], + [ + { + "v": 1754 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1754 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1754 + } + ], + {} + ], + [ + 1, + "auto_DE_ammerland.de_7ys_+3", + 0, + "^https?://(www\\.)?ammerland\\.de/|^https?://(www\\.)?leonberg\\.de/|^https?://(www\\.)?magdeburg\\.de/|^https?://(www\\.)?neustadt\\.eu/", + 10, + [], + [ + { + "e": 1889 + } + ], + [ + { + "v": 1889 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1889 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1889 + } + ], + {} + ], + [ + 1, + "auto_DE_apozilla.de_d1h", + 0, + "^https?://(www\\.)?apozilla\\.de/", + 10, + [], + [ + { + "e": 2942 + } + ], + [ + { + "v": 2942 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2942 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2942 + } + ], + {} + ], + [ + 1, + "auto_DE_aquasabi.de_99p_+1", + 0, + "^https?://(www\\.)?aquasabi\\.de/|^https?://(www\\.)?waldispizza\\.de/", + 10, + [], + [ + { + "e": 1755 + } + ], + [ + { + "v": 1755 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1755 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1755 + } + ], + {} + ], + [ + 1, + "auto_DE_aral.de_d3h", + 0, + "^https?://(www\\.)?aral\\.de/", + 10, + [], + [ + { + "e": 1005 + } + ], + [ + { + "v": 1005 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1005 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1005 + } + ], + {} + ], + [ + 1, + "auto_DE_ardplus.de_ue3", + 0, + "^https?://(www\\.)?ardplus\\.de/", + 10, + [], + [ + { + "e": 1756 + } + ], + [ + { + "v": 1756 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1756 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1756 + } + ], + {} + ], + [ + 1, + "auto_DE_at.pinterest.com_wfi_+3", + 0, + "^https?://(www\\.)?at\\.pinterest\\.com/|^https?://(www\\.)?fr\\.pinterest\\.com/|^https?://(www\\.)?jp\\.pinterest\\.com/|^https?://(www\\.)?nl\\.pinterest\\.com/", + 10, + [], + [ + { + "e": 2692 + } + ], + [ + { + "v": 2692 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2692 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2692 + } + ], + {} + ], + [ + 1, + "auto_DE_atlasformen.de_2gf", + 0, + "^https?://(www\\.)?atlasformen\\.de/", + 10, + [], + [ + { + "e": 1757 + } + ], + [ + { + "v": 1757 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1757 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1757 + } + ], + {} + ], + [ + 1, + "auto_DE_atu.de_rsq_+1", + 0, + "^https?://(www\\.)?atu\\.de/|^https?://(www\\.)?autowerkstatt\\.atu\\.de/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_DE_auto.de_op8", + 0, + "^https?://(www\\.)?auto\\.de/", + 10, + [], + [ + { + "e": 1046 + } + ], + [ + { + "v": 1046 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1046 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1046 + } + ], + {} + ], + [ + 1, + "auto_DE_autoteiledirekt.de_59i", + 0, + "^https?://(www\\.)?autoteiledirekt\\.de/", + 10, + [], + [ + { + "e": 2943 + } + ], + [ + { + "v": 2943 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2943 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2943 + } + ], + {} + ], + [ + 1, + "auto_DE_awsh.de_tyt", + 0, + "^https?://(www\\.)?awsh\\.de/", + 10, + [], + [ + { + "e": 2944 + } + ], + [ + { + "v": 2944 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2944 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2944 + } + ], + {} + ], + [ + 1, + "auto_DE_axa.de_vyk", + 0, + "^https?://(www\\.)?axa\\.de/", + 10, + [], + [ + { + "e": 1742 + } + ], + [ + { + "v": 1742 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1742 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1742 + } + ], + {} + ], + [ + 1, + "auto_DE_b-tu.de_ic5", + 0, + "^https?://(www\\.)?b-tu\\.de/", + 10, + [], + [ + { + "e": 1759 + } + ], + [ + { + "v": 1759 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1759 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1759 + } + ], + {} + ], + [ + 1, + "auto_DE_backmarket.de_dzf", + 0, + "^https?://(www\\.)?backmarket\\.de/", + 10, + [], + [ + { + "e": 1947 + } + ], + [ + { + "v": 1947 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1947 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1947 + } + ], + {} + ], + [ + 1, + "auto_DE_baehr-verpackung.de_wnh_+3", + 0, + "^https?://(www\\.)?baehr-verpackung\\.de/|^https?://(www\\.)?gogun\\.de/|^https?://(www\\.)?lowa-store\\.de/|^https?://(www\\.)?originalteile\\.mercedes-benz\\.de/", + 10, + [], + [ + { + "e": 1883 + } + ], + [ + { + "v": 1883 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1883 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1883 + } + ], + {} + ], + [ + 1, + "auto_DE_bafoeg-digital.de_99m", + 0, + "^https?://(www\\.)?bafoeg-digital\\.de/", + 10, + [], + [ + { + "e": 1760 + } + ], + [ + { + "v": 1760 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1760 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1760 + } + ], + {} + ], + [ + 1, + "auto_DE_bankofscotland.de_awf", + 0, + "^https?://(www\\.)?bankofscotland\\.de/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_DE_barclays.de_rqa", + 0, + "^https?://(www\\.)?barclays\\.de/", + 10, + [], + [ + { + "e": 1761 + } + ], + [ + { + "v": 1761 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1761 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1761 + } + ], + {} + ], + [ + 1, + "auto_DE_batterie24.de_bos", + 0, + "^https?://(www\\.)?batterie24\\.de/", + 10, + [], + [ + { + "e": 1762 + } + ], + [ + { + "v": 1762 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1762 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1762 + } + ], + {} + ], + [ + 1, + "auto_DE_bayern.landtag.de_oe3", + 0, + "^https?://(www\\.)?bayern\\.landtag\\.de/", + 10, + [], + [ + { + "e": 1968 + } + ], + [ + { + "v": 1968 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1968 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1968 + } + ], + {} + ], + [ + 1, + "auto_DE_bayernportal.de_xm0", + 0, + "^https?://(www\\.)?bayernportal\\.de/", + 10, + [], + [ + { + "e": 1763 + } + ], + [ + { + "v": 1763 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1763 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1763 + } + ], + {} + ], + [ + 1, + "auto_DE_bb-escort.de_t83_+2", + 0, + "^https?://(www\\.)?bb-escort\\.de/|^https?://(www\\.)?ge\\.xhamster\\.com/|^https?://(www\\.)?ge\\.xhamster\\.desi/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_DE_bbbank.de_dcf_+23", + 0, + "^https?://(www\\.)?bbbank\\.de/|^https?://(www\\.)?diebank\\.de/|^https?://(www\\.)?eb\\.de/|^https?://(www\\.)?genobroker\\.de/|^https?://(www\\.)?hannoversche-volksbank\\.de/|^https?://(www\\.)?ligabank\\.de/|^https?://(www\\.)?meinebank\\.de/|^https?://(www\\.)?pax-bkc\\.de/|^https?://(www\\.)?psd-berlin-brandenburg\\.de/|^https?://(www\\.)?psd-nuernberg\\.de/|^https?://(www\\.)?sparda-bank-hamburg\\.de/|^https?://(www\\.)?sparda-h\\.de/|^https?://(www\\.)?sparda-n\\.de/|^https?://(www\\.)?sparda-sw\\.de/|^https?://(www\\.)?v-mn\\.de/|^https?://(www\\.)?vb-rb\\.de/|^https?://(www\\.)?volksbank-dresden-bautzen\\.de/|^https?://(www\\.)?volksbank-pur\\.de/|^https?://(www\\.)?vr-bayernmitte\\.de/|^https?://(www\\.)?vr-teilhaberbank\\.de/|^https?://(www\\.)?vrbank-brs\\.de/|^https?://(www\\.)?vrbank-eg\\.de/|^https?://(www\\.)?vrbank-lb\\.de/|^https?://(www\\.)?wvb\\.de/", + 10, + [], + [ + { + "e": 1765 + } + ], + [ + { + "v": 1765 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1765 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1765 + } + ], + {} + ], + [ + 1, + "auto_DE_benq.eu_9ja", + 0, + "^https?://(www\\.)?benq\\.eu/", + 10, + [], + [ + { + "e": 2945 + } + ], + [ + { + "v": 2945 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2945 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2945 + } + ], + {} + ], + [ + 1, + "auto_DE_berchtesgaden.de_z37", + 0, + "^https?://(www\\.)?berchtesgaden\\.de/", + 10, + [], + [ + { + "e": 1766 + } + ], + [ + { + "v": 1766 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1766 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1766 + } + ], + {} + ], + [ + 1, + "auto_DE_berliner-ensemble.de_enr", + 0, + "^https?://(www\\.)?berliner-ensemble\\.de/", + 10, + [], + [ + { + "e": 1989 + } + ], + [ + { + "v": 1989 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1989 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1989 + } + ], + {} + ], + [ + 1, + "auto_DE_berliner-sparkasse.de_epp_+37", + 0, + "^https?://(www\\.)?berliner-sparkasse\\.de/|^https?://(www\\.)?foerde-sparkasse\\.de/|^https?://(www\\.)?haspa\\.de/|^https?://(www\\.)?kasseler-sparkasse\\.de/|^https?://(www\\.)?ksk-koeln\\.de/|^https?://(www\\.)?ksk-ostalb\\.de/|^https?://(www\\.)?ksk-reutlingen\\.de/|^https?://(www\\.)?kskbb\\.de/|^https?://(www\\.)?kskmse\\.de/|^https?://(www\\.)?kskwn\\.de/|^https?://(www\\.)?mbs\\.de/|^https?://(www\\.)?rheinhessen-sparkasse\\.de/|^https?://(www\\.)?saalesparkasse\\.de/|^https?://(www\\.)?skmb\\.de/|^https?://(www\\.)?sparkasse-aachen\\.de/|^https?://(www\\.)?sparkasse-allgaeu\\.de/|^https?://(www\\.)?sparkasse-bremen\\.de/|^https?://(www\\.)?sparkasse-cgw\\.de/|^https?://(www\\.)?sparkasse-darmstadt\\.de/|^https?://(www\\.)?sparkasse-erlangen\\.de/|^https?://(www\\.)?sparkasse-ffb\\.de/|^https?://(www\\.)?sparkasse-hannover\\.de/|^https?://(www\\.)?sparkasse-hgp\\.de/|^https?://(www\\.)?sparkasse-holstein\\.de/|^https?://(www\\.)?sparkasse-kl\\.de/|^https?://(www\\.)?sparkasse-koelnbonn\\.de/|^https?://(www\\.)?sparkasse-krefeld\\.de/|^https?://(www\\.)?sparkasse-mainfranken\\.de/|^https?://(www\\.)?sparkasse-muensterland-ost\\.de/|^https?://(www\\.)?sparkasse-neuss\\.de/|^https?://(www\\.)?sparkasse-pforzheim-calw\\.de/|^https?://(www\\.)?sparkasse-re\\.de/|^https?://(www\\.)?sparkasse-saarbruecken\\.de/|^https?://(www\\.)?sparkasse-ulm\\.de/|^https?://(www\\.)?sparkasse-westmuensterland\\.de/|^https?://(www\\.)?spk-suedholstein\\.de/|^https?://(www\\.)?sskduesseldorf\\.de/|^https?://(www\\.)?taunussparkasse\\.de/", + 10, + [], + [ + { + "e": 1767 + } + ], + [ + { + "v": 1767 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1767 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1767 + } + ], + {} + ], + [ + 1, + "auto_DE_berufsbild.com_pui", + 0, + "^https?://(www\\.)?berufsbild\\.com/", + 10, + [], + [ + { + "e": 1633 + } + ], + [ + { + "v": 1633 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1633 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1633 + } + ], + {} + ], + [ + 1, + "auto_DE_bestatter.de_6b9_+1", + 0, + "^https?://(www\\.)?bestatter\\.de/|^https?://(www\\.)?koenighaus-infrarot\\.de/", + 10, + [], + [ + { + "e": 1695 + } + ], + [ + { + "v": 1695 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1695 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1695 + } + ], + {} + ], + [ + 1, + "auto_DE_betterplace.org_257", + 0, + "^https?://(www\\.)?betterplace\\.org/", + 10, + [], + [ + { + "e": 2946 + } + ], + [ + { + "v": 2946 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2946 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2946 + } + ], + {} + ], + [ + 1, + "auto_DE_betterstack.com_285", + 0, + "^https?://(www\\.)?betterstack\\.com/", + 10, + [], + [ + { + "e": 2947 + } + ], + [ + { + "v": 2947 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2947 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2947 + } + ], + {} + ], + [ + 1, + "auto_DE_betterstack.com_5q7", + 0, + "^https?://(www\\.)?betterstack\\.com/", + 10, + [], + [ + { + "e": 2948 + } + ], + [ + { + "v": 2948 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2948 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2948 + } + ], + {} + ], + [ + 1, + "auto_DE_bhw.de_cr0", + 0, + "^https?://(www\\.)?bhw\\.de/", + 10, + [], + [ + { + "e": 1768 + } + ], + [ + { + "v": 1768 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1768 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1768 + } + ], + {} + ], + [ + 1, + "auto_DE_biathlon-oberhof.de_895", + 0, + "^https?://(www\\.)?biathlon-oberhof\\.de/", + 10, + [], + [ + { + "e": 2949 + } + ], + [ + { + "v": 2949 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2949 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2949 + } + ], + {} + ], + [ + 1, + "auto_DE_biker-boarder.de_9cp", + 0, + "^https?://(www\\.)?biker-boarder\\.de/", + 10, + [], + [ + { + "e": 1769 + } + ], + [ + { + "v": 1769 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1769 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1769 + } + ], + {} + ], + [ + 1, + "auto_DE_bildung-mv.de_n87", + 0, + "^https?://(www\\.)?bildung-mv\\.de/", + 10, + [], + [ + { + "e": 2950 + } + ], + [ + { + "v": 2950 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2950 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2950 + } + ], + {} + ], + [ + 1, + "auto_DE_bildung.thueringen.de_ckl", + 0, + "^https?://(www\\.)?bildung\\.thueringen\\.de/", + 10, + [], + [ + { + "e": 2951 + } + ], + [ + { + "v": 2951 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2951 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2951 + } + ], + {} + ], + [ + 1, + "auto_DE_bingo-umweltlotterie.de_9mg", + 0, + "^https?://(www\\.)?bingo-umweltlotterie\\.de/", + 10, + [], + [ + { + "e": 2006 + } + ], + [ + { + "v": 2006 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2006 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2006 + } + ], + {} + ], + [ + 1, + "auto_DE_biunsinnorden.de_kwa_+1", + 0, + "^https?://(www\\.)?biunsinnorden\\.de/|^https?://(www\\.)?livegigs\\.de/", + 10, + [], + [ + { + "e": 1770 + } + ], + [ + { + "v": 1770 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1770 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1770 + } + ], + {} + ], + [ + 1, + "auto_DE_blsk.de_z74_+6", + 0, + "^https?://(www\\.)?blsk\\.de/|^https?://(www\\.)?bw-bank\\.de/|^https?://(www\\.)?frankfurter-sparkasse\\.de/|^https?://(www\\.)?ostsaechsische-sparkasse-dresden\\.de/|^https?://(www\\.)?sparkasse-dortmund\\.de/|^https?://(www\\.)?sparkasse-leipzig\\.de/|^https?://(www\\.)?spk-chemnitz\\.de/", + 10, + [], + [ + { + "e": 1771 + } + ], + [ + { + "v": 1771 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1771 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1771 + } + ], + {} + ], + [ + 1, + "auto_DE_bmvg.de_48r", + 0, + "^https?://(www\\.)?bmvg\\.de/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_DE_bmz.de_nss", + 0, + "^https?://(www\\.)?bmz\\.de/", + 10, + [], + [ + { + "e": 1773 + } + ], + [ + { + "v": 1773 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1773 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1773 + } + ], + {} + ], + [ + 1, + "auto_DE_bonn.de_ygj", + 0, + "^https?://(www\\.)?bonn\\.de/", + 10, + [], + [ + { + "e": 1774 + } + ], + [ + { + "v": 1774 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1774 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1774 + } + ], + {} + ], + [ + 1, + "auto_DE_bonnorange.de_kt7", + 0, + "^https?://(www\\.)?bonnorange\\.de/", + 10, + [], + [ + { + "e": 2952 + } + ], + [ + { + "v": 2952 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2952 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2952 + } + ], + {} + ], + [ + 1, + "auto_DE_brandible.de_de6", + 0, + "^https?://(www\\.)?brandible\\.de/", + 10, + [], + [ + { + "e": 2009 + } + ], + [ + { + "v": 2009 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2009 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2009 + } + ], + {} + ], + [ + 1, + "auto_DE_brauneck-bergbahn.de_5vw", + 0, + "^https?://(www\\.)?brauneck-bergbahn\\.de/", + 10, + [], + [ + { + "e": 2953 + } + ], + [ + { + "v": 2953 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2953 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2953 + } + ], + {} + ], + [ + 1, + "auto_DE_brb.de_h4r", + 0, + "^https?://(www\\.)?brb\\.de/", + 10, + [], + [ + { + "e": 1776 + } + ], + [ + { + "v": 1776 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1776 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1776 + } + ], + {} + ], + [ + 1, + "auto_DE_breitbandmessung.de_m9e", + 0, + "^https?://(www\\.)?breitbandmessung\\.de/", + 10, + [], + [ + { + "e": 1777 + } + ], + [ + { + "v": 1777 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1777 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1777 + } + ], + {} + ], + [ + 1, + "auto_DE_bremerhaven.de_xne", + 0, + "^https?://(www\\.)?bremerhaven\\.de/", + 10, + [], + [ + { + "e": 1778 + } + ], + [ + { + "v": 1778 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1778 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1778 + } + ], + {} + ], + [ + 1, + "auto_DE_buerklin.com_bya", + 0, + "^https?://(www\\.)?buerklin\\.com/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_buinger.com_6ns", + 0, + "^https?://(www\\.)?buinger\\.com/", + 10, + [], + [ + { + "e": 2076 + } + ], + [ + { + "v": 2076 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2076 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2076 + } + ], + {} + ], + [ + 1, + "auto_DE_bundesanzeiger.de_4i4", + 0, + "^https?://(www\\.)?bundesanzeiger\\.de/", + 10, + [], + [ + { + "e": 1779 + } + ], + [ + { + "v": 1779 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1779 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1779 + } + ], + {} + ], + [ + 1, + "auto_DE_bundespolizei.de_274", + 0, + "^https?://(www\\.)?bundespolizei\\.de/", + 10, + [], + [ + { + "e": 1780 + } + ], + [ + { + "v": 1780 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1780 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1780 + } + ], + {} + ], + [ + 1, + "auto_DE_bundeswehr-und-mehr.de_3fd", + 0, + "^https?://(www\\.)?bundeswehr-und-mehr\\.de/", + 10, + [], + [ + { + "e": 1781 + } + ], + [ + { + "v": 1781 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1781 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1781 + } + ], + {} + ], + [ + 1, + "auto_DE_bundeswehr.de_n8l", + 0, + "^https?://(www\\.)?bundeswehr\\.de/", + 10, + [], + [ + { + "e": 2954 + } + ], + [ + { + "v": 2954 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2954 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2954 + } + ], + {} + ], + [ + 1, + "auto_DE_bundeswehrkarriere.de_g9g", + 0, + "^https?://(www\\.)?bundeswehrkarriere\\.de/", + 10, + [], + [ + { + "e": 1782 + } + ], + [ + { + "v": 1782 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1782 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1782 + } + ], + {} + ], + [ + 1, + "auto_DE_business.amazon.de_rjz", + 0, + "^https?://(www\\.)?business\\.amazon\\.de/", + 10, + [], + [ + { + "e": 2955 + } + ], + [ + { + "v": 2955 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2955 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2955 + } + ], + {} + ], + [ + 1, + "auto_DE_bvl.bund.de_2g1", + 0, + "^https?://(www\\.)?bvl\\.bund\\.de/", + 10, + [], + [ + { + "e": 1783 + } + ], + [ + { + "v": 1783 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1783 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1783 + } + ], + {} + ], + [ + 1, + "auto_DE_byak.de_dcj", + 0, + "^https?://(www\\.)?byak\\.de/", + 10, + [], + [ + { + "e": 1784 + } + ], + [ + { + "v": 1784 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1784 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1784 + } + ], + {} + ], + [ + 1, + "auto_DE_byte.fm_83l", + 0, + "^https?://(www\\.)?byte\\.fm/", + 10, + [], + [ + { + "e": 2956 + } + ], + [ + { + "v": 2956 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2956 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2956 + } + ], + {} + ], + [ + 1, + "auto_DE_bzfe.de_6ha_+2", + 0, + "^https?://(www\\.)?bzfe\\.de/|^https?://(www\\.)?dw-shop\\.de/|^https?://(www\\.)?nanu-nana\\.de/", + 10, + [], + [ + { + "e": 1831 + } + ], + [ + { + "v": 1831 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1831 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1831 + } + ], + {} + ], + [ + 1, + "auto_DE_c24.de_12f", + 0, + "^https?://(www\\.)?c24\\.de/", + 10, + [], + [ + { + "e": 1785 + } + ], + [ + { + "v": 1785 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1785 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1785 + } + ], + {} + ], + [ + 1, + "auto_DE_cam4.eu_mih", + 0, + "^https?://(www\\.)?cam4\\.eu/", + 10, + [], + [ + { + "e": 1435 + } + ], + [ + { + "v": 1435 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1435 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1435 + } + ], + {} + ], + [ + 1, + "auto_DE_cannaconnection.de_rt0", + 0, + "^https?://(www\\.)?cannaconnection\\.de/", + 10, + [], + [ + { + "e": 1786 + } + ], + [ + { + "v": 1786 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1786 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1786 + } + ], + {} + ], + [ + 1, + "auto_DE_canva.com_6vh", + 0, + "^https?://(www\\.)?canva\\.com/", + 10, + [], + [ + { + "e": 2079 + } + ], + [ + { + "v": 2079 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2079 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2079 + } + ], + {} + ], + [ + 1, + "auto_DE_caravan-wendt.de_h9s_+2", + 0, + "^https?://(www\\.)?caravan-wendt\\.de/|^https?://(www\\.)?caravana\\.de/|^https?://(www\\.)?usedom\\.de/", + 10, + [], + [ + { + "e": 1787 + } + ], + [ + { + "v": 1787 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1787 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1787 + } + ], + {} + ], + [ + 1, + "auto_DE_change.org_hxx", + 0, + "^https?://(www\\.)?change\\.org/", + 10, + [], + [ + { + "e": 1788 + } + ], + [ + { + "v": 1788 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1788 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1788 + } + ], + {} + ], + [ + 1, + "auto_DE_chroniknet.de_2vo", + 0, + "^https?://(www\\.)?chroniknet\\.de/", + 10, + [], + [ + { + "e": 2172 + } + ], + [ + { + "v": 2172 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2172 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2172 + } + ], + {} + ], + [ + 1, + "auto_DE_circus-paul-busch.de_d0a", + 0, + "^https?://(www\\.)?circus-paul-busch\\.de/", + 10, + [], + [ + { + "e": 2187 + } + ], + [ + { + "v": 2187 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2187 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2187 + } + ], + {} + ], + [ + 1, + "auto_DE_citroen.de_t13_+2", + 0, + "^https?://(www\\.)?citroen\\.de/|^https?://(www\\.)?opel\\.de/|^https?://(www\\.)?peugeot\\.de/", + 10, + [], + [ + { + "e": 1789 + } + ], + [ + { + "v": 1789 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1789 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1789 + } + ], + {} + ], + [ + 1, + "auto_DE_clickdoc.de_y6e", + 0, + "^https?://(www\\.)?clickdoc\\.de/", + 10, + [], + [ + { + "e": 2676 + } + ], + [ + { + "v": 2676 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2676 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2676 + } + ], + {} + ], + [ + 1, + "auto_DE_club.auto-doc.at_6xj_+1", + 0, + "^https?://(www\\.)?club\\.auto-doc\\.at/|^https?://(www\\.)?club\\.autodoc\\.de/", + 10, + [], + [ + { + "e": 2957 + } + ], + [ + { + "v": 2957 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2957 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2957 + } + ], + {} + ], + [ + 1, + "auto_DE_cms.hu-berlin.de_c1e_+3", + 0, + "^https?://(www\\.)?cms\\.hu-berlin\\.de/|^https?://(www\\.)?fakultaeten\\.hu-berlin\\.de/|^https?://(www\\.)?hochschulsport\\.hu-berlin\\.de/|^https?://(www\\.)?hu-berlin\\.de/", + 10, + [], + [ + { + "e": 1791 + } + ], + [ + { + "v": 1791 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1791 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1791 + } + ], + {} + ], + [ + 1, + "auto_DE_coinbase.com_k1d", + 0, + "^https?://(www\\.)?coinbase\\.com/", + 10, + [], + [ + { + "e": 2196 + } + ], + [ + { + "v": 2196 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2196 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2196 + } + ], + {} + ], + [ + 1, + "auto_DE_continentale.de_i51", + 0, + "^https?://(www\\.)?continentale\\.de/", + 10, + [], + [ + { + "e": 1792 + } + ], + [ + { + "v": 1792 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1792 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1792 + } + ], + {} + ], + [ + 1, + "auto_DE_cosmosdirekt.de_n1c_+1", + 0, + "^https?://(www\\.)?cosmosdirekt\\.de/|^https?://(www\\.)?lbs\\.de/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_DE_create.roblox.com_1eu", + 0, + "^https?://(www\\.)?create\\.roblox\\.com/", + 10, + [], + [ + { + "e": 1793 + } + ], + [ + { + "v": 1793 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1793 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1793 + } + ], + {} + ], + [ + 1, + "auto_DE_cyclassics-hamburg.de_m6u_+2", + 0, + "^https?://(www\\.)?cyclassics-hamburg\\.de/|^https?://(www\\.)?hnee\\.de/|^https?://(www\\.)?stmi\\.bayern\\.de/", + 10, + [], + [ + { + "e": 1709 + } + ], + [ + { + "v": 1709 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1709 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1709 + } + ], + {} + ], + [ + 1, + "auto_DE_daad.de_w45", + 0, + "^https?://(www\\.)?daad\\.de/", + 10, + [], + [ + { + "e": 1794 + } + ], + [ + { + "v": 1794 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1794 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1794 + } + ], + {} + ], + [ + 1, + "auto_DE_daikin.de_w7y", + 0, + "^https?://(www\\.)?daikin\\.de/", + 10, + [], + [ + { + "e": 1795 + } + ], + [ + { + "v": 1795 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1795 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1795 + } + ], + {} + ], + [ + 1, + "auto_DE_das-ist-drin.de_e12", + 0, + "^https?://(www\\.)?das-ist-drin\\.de/", + 10, + [], + [ + { + "e": 1796 + } + ], + [ + { + "v": 1796 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1796 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1796 + } + ], + {} + ], + [ + 1, + "auto_DE_dashlane.com_054", + 0, + "^https?://(www\\.)?dashlane\\.com/", + 10, + [], + [ + { + "e": 1797 + } + ], + [ + { + "v": 1797 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1797 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1797 + } + ], + {} + ], + [ + 1, + "auto_DE_dasrehaportal.de_ske", + 0, + "^https?://(www\\.)?dasrehaportal\\.de/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_DE_de.accio.com_97o", + 0, + "^https?://(www\\.)?de\\.accio\\.com/", + 10, + [], + [ + { + "e": 2937 + } + ], + [ + { + "v": 2937 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2937 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2937 + } + ], + {} + ], + [ + 1, + "auto_DE_de.artprice.com_kfk", + 0, + "^https?://(www\\.)?de\\.artprice\\.com/", + 10, + [], + [ + { + "e": 1798 + } + ], + [ + { + "v": 1798 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1798 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1798 + } + ], + {} + ], + [ + 1, + "auto_DE_de.chessbase.com_dzc", + 0, + "^https?://(www\\.)?de\\.chessbase\\.com/", + 10, + [], + [ + { + "e": 2958 + } + ], + [ + { + "v": 2958 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2958 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2958 + } + ], + {} + ], + [ + 1, + "auto_DE_de.endress.com_777", + 0, + "^https?://(www\\.)?de\\.endress\\.com/", + 10, + [], + [ + { + "e": 1799 + } + ], + [ + { + "v": 1799 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1799 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1799 + } + ], + {} + ], + [ + 1, + "auto_DE_de.gorenje.com_i8b", + 0, + "^https?://(www\\.)?de\\.gorenje\\.com/", + 10, + [], + [ + { + "e": 2199 + } + ], + [ + { + "v": 2199 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2199 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2199 + } + ], + {} + ], + [ + 1, + "auto_DE_de.nothing.tech_0fr_+1", + 0, + "^https?://(www\\.)?de\\.nothing\\.tech/|^https?://(www\\.)?nothing\\.tech/", + 10, + [], + [ + { + "e": 2263 + } + ], + [ + { + "v": 2263 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2263 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2263 + } + ], + {} + ], + [ + 1, + "auto_DE_de.pinterest.com_5xo", + 0, + "^https?://(www\\.)?de\\.pinterest\\.com/", + 10, + [], + [ + { + "e": 2680 + } + ], + [ + { + "v": 2680 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2680 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2680 + } + ], + {} + ], + [ + 1, + "auto_DE_dekra.de_qrb", + 0, + "^https?://(www\\.)?dekra\\.de/", + 10, + [], + [ + { + "e": 1801 + } + ], + [ + { + "v": 1801 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1801 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1801 + } + ], + {} + ], + [ + 1, + "auto_DE_deutscheoperberlin.de_n6r", + 0, + "^https?://(www\\.)?deutscheoperberlin\\.de/", + 10, + [], + [ + { + "e": 2222 + } + ], + [ + { + "v": 2222 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2222 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2222 + } + ], + {} + ], + [ + 1, + "auto_DE_deutsches-museum.de_owu", + 0, + "^https?://(www\\.)?deutsches-museum\\.de/", + 10, + [], + [ + { + "e": 2244 + } + ], + [ + { + "v": 2244 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2244 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2244 + } + ], + {} + ], + [ + 1, + "auto_DE_deutsches-sportabzeichen.de_4b1_+1", + 0, + "^https?://(www\\.)?deutsches-sportabzeichen\\.de/|^https?://(www\\.)?imd-berlin\\.de/", + 10, + [], + [ + { + "e": 1803 + } + ], + [ + { + "v": 1803 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1803 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1803 + } + ], + {} + ], + [ + 1, + "auto_DE_df.eu_ltm", + 0, + "^https?://(www\\.)?df\\.eu/", + 10, + [], + [ + { + "e": 1804 + } + ], + [ + { + "v": 1804 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1804 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1804 + } + ], + {} + ], + [ + 1, + "auto_DE_df1.de_ngz", + 0, + "^https?://(www\\.)?df1\\.de/", + 10, + [], + [ + { + "e": 1805 + } + ], + [ + { + "v": 1805 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1805 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1805 + } + ], + {} + ], + [ + 1, + "auto_DE_dfg.de_qky", + 0, + "^https?://(www\\.)?dfg\\.de/", + 10, + [], + [ + { + "e": 1806 + } + ], + [ + { + "v": 1806 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1806 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1806 + } + ], + {} + ], + [ + 1, + "auto_DE_diebayerische.de_ncs", + 0, + "^https?://(www\\.)?diebayerische\\.de/", + 10, + [], + [ + { + "e": 2245 + } + ], + [ + { + "v": 2245 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2245 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2245 + } + ], + {} + ], + [ + 1, + "auto_DE_dorotheum.com_xun", + 0, + "^https?://(www\\.)?dorotheum\\.com/", + 10, + [], + [ + { + "e": 1807 + } + ], + [ + { + "v": 1807 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1807 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1807 + } + ], + {} + ], + [ + 1, + "auto_DE_dvb.de_c8m", + 0, + "^https?://(www\\.)?dvb\\.de/", + 10, + [], + [ + { + "e": 1808 + } + ], + [ + { + "v": 1808 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1808 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1808 + } + ], + {} + ], + [ + 1, + "auto_DE_e-hoi.de_z94", + 0, + "^https?://(www\\.)?e-hoi\\.de/", + 10, + [], + [ + { + "e": 1809 + } + ], + [ + { + "v": 1809 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1809 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1809 + } + ], + {} + ], + [ + 1, + "auto_DE_easybell.de_u2h", + 0, + "^https?://(www\\.)?easybell\\.de/", + 10, + [], + [ + { + "e": 2278 + } + ], + [ + { + "v": 2278 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2278 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2278 + } + ], + {} + ], + [ + 1, + "auto_DE_edelstahl-tuerklingel.de_375", + 0, + "^https?://(www\\.)?edelstahl-tuerklingel\\.de/", + 10, + [], + [ + { + "e": 1810 + } + ], + [ + { + "v": 1810 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1810 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1810 + } + ], + {} + ], + [ + 1, + "auto_DE_eezy.nrw_9aj", + 0, + "^https?://(www\\.)?eezy\\.nrw/", + 10, + [], + [ + { + "e": 2959 + } + ], + [ + { + "v": 2959 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2959 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2959 + } + ], + {} + ], + [ + 1, + "auto_DE_elbphilharmonie.de_0hp", + 0, + "^https?://(www\\.)?elbphilharmonie\\.de/", + 10, + [], + [ + { + "e": 1811 + } + ], + [ + { + "v": 1811 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1811 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1811 + } + ], + {} + ], + [ + 1, + "auto_DE_elektrofachkraft.de_yoc", + 0, + "^https?://(www\\.)?elektrofachkraft\\.de/", + 10, + [], + [ + { + "e": 1812 + } + ], + [ + { + "v": 1812 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1812 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1812 + } + ], + {} + ], + [ + 1, + "auto_DE_emedienbayern.onleihe.de_3ds_+1", + 0, + "^https?://(www\\.)?emedienbayern\\.onleihe\\.de/|^https?://(www\\.)?meine\\.onleihe\\.de/", + 10, + [], + [ + { + "e": 1813 + } + ], + [ + { + "v": 1813 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1813 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1813 + } + ], + {} + ], + [ + 1, + "auto_DE_erfurt-tourismus.de_u8e_+2", + 0, + "^https?://(www\\.)?erfurt-tourismus\\.de/|^https?://(www\\.)?hs-niederrhein\\.de/|^https?://(www\\.)?siegen\\.de/", + 10, + [], + [ + { + "e": 1814 + } + ], + [ + { + "v": 1814 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1814 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1814 + } + ], + {} + ], + [ + 1, + "auto_DE_ernstings-family.de_xqf", + 0, + "^https?://(www\\.)?ernstings-family\\.de/", + 10, + [], + [ + { + "e": 1464 + } + ], + [ + { + "v": 1464 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1464 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1464 + } + ], + {} + ], + [ + 1, + "auto_DE_esm-computer.de_koz", + 0, + "^https?://(www\\.)?esm-computer\\.de/", + 10, + [], + [ + { + "e": 2292 + } + ], + [ + { + "v": 2292 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2292 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2292 + } + ], + {} + ], + [ + 1, + "auto_DE_faphouse.com_elu", + 0, + "^https?://(www\\.)?faphouse\\.com/", + 10, + [], + [ + { + "e": 1816 + } + ], + [ + { + "v": 1816 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1816 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1816 + } + ], + {} + ], + [ + 1, + "auto_DE_fcbinside.de_0d6", + 0, + "^https?://(www\\.)?fcbinside\\.de/", + 10, + [], + [ + { + "e": 2960 + } + ], + [ + { + "v": 2960 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2960 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2960 + } + ], + {} + ], + [ + 1, + "auto_DE_feierabend.de_kr4", + 0, + "^https?://(www\\.)?feierabend\\.de/", + 10, + [], + [ + { + "e": 1817 + } + ], + [ + { + "v": 1817 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1817 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1817 + } + ], + {} + ], + [ + 1, + "auto_DE_fein.com_k95_+1", + 0, + "^https?://(www\\.)?fein\\.com/|^https?://(www\\.)?phantasialand\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_felgenshop.de_31c", + 0, + "^https?://(www\\.)?felgenshop\\.de/", + 10, + [], + [ + { + "e": 1818 + } + ], + [ + { + "v": 1818 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1818 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1818 + } + ], + {} + ], + [ + 1, + "auto_DE_fernarzt.com_wvm", + 0, + "^https?://(www\\.)?fernarzt\\.com/", + 10, + [], + [ + { + "e": 1819 + } + ], + [ + { + "v": 1819 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1819 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1819 + } + ], + {} + ], + [ + 1, + "auto_DE_fes.de_1xv_+1", + 0, + "^https?://(www\\.)?fes\\.de/|^https?://(www\\.)?kvhb\\.de/", + 10, + [], + [ + { + "e": 1820 + } + ], + [ + { + "v": 1820 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1820 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1820 + } + ], + {} + ], + [ + 1, + "auto_DE_feser-graf.de_qz8", + 0, + "^https?://(www\\.)?feser-graf\\.de/", + 10, + [], + [ + { + "e": 1821 + } + ], + [ + { + "v": 1821 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1821 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1821 + } + ], + {} + ], + [ + 1, + "auto_DE_fh-swf.de_spi", + 0, + "^https?://(www\\.)?fh-swf\\.de/", + 10, + [], + [ + { + "e": 2317 + } + ], + [ + { + "v": 2317 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2317 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2317 + } + ], + {} + ], + [ + 1, + "auto_DE_filmnaechte.de_2uf", + 0, + "^https?://(www\\.)?filmnaechte\\.de/", + 10, + [], + [ + { + "e": 1822 + } + ], + [ + { + "v": 1822 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1822 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1822 + } + ], + {} + ], + [ + 1, + "auto_DE_finom.co_vhv", + 0, + "^https?://(www\\.)?finom\\.co/", + 10, + [], + [ + { + "e": 1823 + } + ], + [ + { + "v": 1823 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1823 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1823 + } + ], + {} + ], + [ + 1, + "auto_DE_fitx.de_gg2", + 0, + "^https?://(www\\.)?fitx\\.de/", + 10, + [], + [ + { + "e": 1824 + } + ], + [ + { + "v": 1824 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1824 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1824 + } + ], + {} + ], + [ + 1, + "auto_DE_fixpart.de_zs5", + 0, + "^https?://(www\\.)?fixpart\\.de/", + 10, + [], + [ + { + "e": 1825 + } + ], + [ + { + "v": 1825 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1825 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1825 + } + ], + {} + ], + [ + 1, + "auto_DE_ford.de_sfi", + 0, + "^https?://(www\\.)?ford\\.de/", + 10, + [], + [ + { + "e": 2327 + } + ], + [ + { + "v": 2327 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2327 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2327 + } + ], + {} + ], + [ + 1, + "auto_DE_fordmoney.de_2ai", + 0, + "^https?://(www\\.)?fordmoney\\.de/", + 10, + [], + [ + { + "e": 1476 + } + ], + [ + { + "v": 1476 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1476 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1476 + } + ], + {} + ], + [ + 1, + "auto_DE_forum.vodafone.de_6up", + 0, + "^https?://(www\\.)?forum\\.vodafone\\.de/", + 10, + [], + [ + { + "e": 1826 + } + ], + [ + { + "v": 1826 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1826 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1826 + } + ], + {} + ], + [ + 1, + "auto_DE_forums.autodesk.com_48r", + 0, + "^https?://(www\\.)?forums\\.autodesk\\.com/", + 10, + [], + [ + { + "e": 1827 + } + ], + [ + { + "v": 1827 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1827 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1827 + } + ], + {} + ], + [ + 1, + "auto_DE_frankfurt.de_xyp", + 0, + "^https?://(www\\.)?frankfurt\\.de/", + 10, + [], + [ + { + "e": 1828 + } + ], + [ + { + "v": 1828 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1828 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1828 + } + ], + {} + ], + [ + 1, + "auto_DE_fraulocke-grundschultante.de_e3h_+1", + 0, + "^https?://(www\\.)?fraulocke-grundschultante\\.de/|^https?://(www\\.)?materialwiese\\.de/", + 10, + [], + [ + { + "e": 2961 + } + ], + [ + { + "v": 2961 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2961 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2961 + } + ], + {} + ], + [ + 1, + "auto_DE_fs.com_c4d", + 0, + "^https?://(www\\.)?fs\\.com/", + 10, + [], + [ + { + "e": 1829 + } + ], + [ + { + "v": 1829 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1829 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1829 + } + ], + {} + ], + [ + 1, + "auto_DE_fuehrerschein-bestehen.de_5cy", + 0, + "^https?://([a-z]+\\.)?fuehrerschein-bestehen\\.de/", + 10, + [], + [ + { + "e": 1830 + } + ], + [ + { + "v": 1830 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1830 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1830 + } + ], + {} + ], + [ + 1, + "auto_DE_gabor.com_3g8", + 0, + "^https?://(www\\.)?gabor\\.com/", + 10, + [], + [ + { + "e": 1831 + } + ], + [ + { + "v": 1831 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1831 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1831 + } + ], + {} + ], + [ + 1, + "auto_DE_gamever.io_fxa", + 0, + "^https?://(www\\.)?gamever\\.io/", + 10, + [], + [ + { + "e": 2962 + } + ], + [ + { + "v": 2962 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2962 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2962 + } + ], + {} + ], + [ + 1, + "auto_DE_ganz-wien.at_uu4", + 0, + "^https?://(www\\.)?ganz-wien\\.at/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_gasometer.de_0xw", + 0, + "^https?://(www\\.)?gasometer\\.de/", + 10, + [], + [ + { + "e": 2328 + } + ], + [ + { + "v": 2328 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2328 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2328 + } + ], + {} + ], + [ + 1, + "auto_DE_gdp.de_zox", + 0, + "^https?://(www\\.)?gdp\\.de/", + 10, + [], + [ + { + "e": 1832 + } + ], + [ + { + "v": 1832 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1832 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1832 + } + ], + {} + ], + [ + 1, + "auto_DE_gesetze.co_dfr", + 0, + "^https?://(www\\.)?gesetze\\.co/", + 10, + [], + [ + { + "e": 1833 + } + ], + [ + { + "v": 1833 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1833 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1833 + } + ], + {} + ], + [ + 1, + "auto_DE_go-e.com_ukq", + 0, + "^https?://(www\\.)?go-e\\.com/", + 10, + [], + [ + { + "e": 1834 + } + ], + [ + { + "v": 1834 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1834 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1834 + } + ], + {} + ], + [ + 1, + "auto_DE_grower.ch_fvs_+1", + 0, + "^https?://(www\\.)?grower\\.ch/|^https?://(www\\.)?thinkpad-forum\\.de/", + 10, + [], + [ + { + "e": 1081 + } + ], + [ + { + "v": 1081 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1081 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1081 + } + ], + {} + ], + [ + 1, + "auto_DE_hamburger-kunsthalle.de_wnt", + 0, + "^https?://(www\\.)?hamburger-kunsthalle\\.de/", + 10, + [], + [ + { + "e": 2332 + } + ], + [ + { + "v": 2332 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2332 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2332 + } + ], + {} + ], + [ + 1, + "auto_DE_hanau.de_n3f", + 0, + "^https?://(www\\.)?hanau\\.de/", + 10, + [], + [ + { + "e": 1837 + } + ], + [ + { + "v": 1837 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1837 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1837 + } + ], + {} + ], + [ + 1, + "auto_DE_handyhuellen.de_5qn", + 0, + "^https?://(www\\.)?handyhuellen\\.de/", + 10, + [], + [ + { + "e": 1838 + } + ], + [ + { + "v": 1838 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1838 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1838 + } + ], + {} + ], + [ + 1, + "auto_DE_hanseaticbank.de_izm_+1", + 0, + "^https?://(www\\.)?hanseaticbank\\.de/|^https?://(www\\.)?meine\\.hanseaticbank\\.de/", + 10, + [], + [ + { + "e": 1839 + } + ], + [ + { + "v": 1839 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1839 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1839 + } + ], + {} + ], + [ + 1, + "auto_DE_haspa-insider.de_cgb", + 0, + "^https?://(www\\.)?haspa-insider\\.de/", + 10, + [], + [ + { + "e": 1840 + } + ], + [ + { + "v": 1840 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1840 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1840 + } + ], + {} + ], + [ + 1, + "auto_DE_haw-landshut.de_bhh", + 0, + "^https?://(www\\.)?haw-landshut\\.de/", + 10, + [], + [ + { + "e": 2371 + } + ], + [ + { + "v": 2371 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2371 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2371 + } + ], + {} + ], + [ + 1, + "auto_DE_hawesko.de_61c", + 0, + "^https?://(www\\.)?hawesko\\.de/", + 10, + [], + [ + { + "e": 1728 + } + ], + [ + { + "v": 1728 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1728 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1728 + } + ], + {} + ], + [ + 1, + "auto_DE_hella.com_ql4", + 0, + "^https?://(www\\.)?hella\\.com/", + 10, + [], + [ + { + "e": 2376 + } + ], + [ + { + "v": 2376 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2376 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2376 + } + ], + {} + ], + [ + 1, + "auto_DE_hermoney.de_jsi", + 0, + "^https?://(www\\.)?hermoney\\.de/", + 10, + [], + [ + { + "e": 1841 + } + ], + [ + { + "v": 1841 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1841 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1841 + } + ], + {} + ], + [ + 1, + "auto_DE_hilfe.ard.de_46t", + 0, + "^https?://(www\\.)?hilfe\\.ard\\.de/", + 10, + [], + [ + { + "e": 1842 + } + ], + [ + { + "v": 1842 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1842 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1842 + } + ], + {} + ], + [ + 1, + "auto_DE_hilfe.kleinanzeigen.de_44a_+1", + 0, + "^https?://(www\\.)?hilfe\\.kleinanzeigen\\.de/|^https?://(www\\.)?themen\\.kleinanzeigen\\.de/", + 10, + [], + [ + { + "e": 1843 + } + ], + [ + { + "v": 1843 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1843 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1843 + } + ], + {} + ], + [ + 1, + "auto_DE_hobby-caravan.de_3x5", + 0, + "^https?://(www\\.)?hobby-caravan\\.de/", + 10, + [], + [ + { + "e": 1844 + } + ], + [ + { + "v": 1844 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1844 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1844 + } + ], + {} + ], + [ + 1, + "auto_DE_homebanking-hilfe.de_1mh", + 0, + "^https?://(www\\.)?homebanking-hilfe\\.de/", + 10, + [], + [ + { + "e": 1845 + } + ], + [ + { + "v": 1845 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1845 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1845 + } + ], + {} + ], + [ + 1, + "auto_DE_hoseonline.de_vqo", + 0, + "^https?://(www\\.)?hoseonline\\.de/", + 10, + [], + [ + { + "e": 951 + } + ], + [ + { + "v": 951 + } + ], + [ + { + "wait": 500 + }, + { + "c": 951 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 951 + } + ], + {} + ], + [ + 1, + "auto_DE_howik.com_99g", + 0, + "^https?://(www\\.)?howik\\.com/", + 10, + [], + [ + { + "e": 1846 + } + ], + [ + { + "v": 1846 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1846 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1846 + } + ], + {} + ], + [ + 1, + "auto_DE_hoyer.de_4ag", + 0, + "^https?://(www\\.)?hoyer\\.de/", + 10, + [], + [ + { + "e": 1555 + } + ], + [ + { + "v": 1555 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1555 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1555 + } + ], + {} + ], + [ + 1, + "auto_DE_hsn-tsn.de_i6g", + 0, + "^https?://(www\\.)?hsn-tsn\\.de/", + 10, + [], + [ + { + "e": 1847 + } + ], + [ + { + "v": 1847 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1847 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1847 + } + ], + {} + ], + [ + 1, + "auto_DE_huellendirekt.de_fs4", + 0, + "^https?://(www\\.)?huellendirekt\\.de/", + 10, + [], + [ + { + "e": 1848 + } + ], + [ + { + "v": 1848 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1848 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1848 + } + ], + {} + ], + [ + 1, + "auto_DE_hugendubel.info_ipw", + 0, + "^https?://(www\\.)?hugendubel\\.info/", + 10, + [], + [ + { + "e": 2421 + } + ], + [ + { + "v": 2421 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2421 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2421 + } + ], + {} + ], + [ + 1, + "auto_DE_huk.de_q45_+1", + 0, + "^https?://(www\\.)?huk\\.de/|^https?://(www\\.)?huk24\\.de/", + 10, + [], + [ + { + "e": 1850 + } + ], + [ + { + "v": 1850 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1850 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1850 + } + ], + {} + ], + [ + 1, + "auto_DE_hulle24.de_taz", + 0, + "^https?://(www\\.)?hulle24\\.de/", + 10, + [], + [ + { + "e": 1851 + } + ], + [ + { + "v": 1851 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1851 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1851 + } + ], + {} + ], + [ + 1, + "auto_DE_hygi.de_lo5", + 0, + "^https?://(www\\.)?hygi\\.de/", + 10, + [], + [ + { + "e": 1853 + } + ], + [ + { + "v": 1853 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1853 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1853 + } + ], + {} + ], + [ + 1, + "auto_DE_ideenreise-blog.de_gg5", + 0, + "^https?://(www\\.)?ideenreise-blog\\.de/", + 10, + [], + [ + { + "e": 2963 + } + ], + [ + { + "v": 2963 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2963 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2963 + } + ], + {} + ], + [ + 1, + "auto_DE_igbce.de_0q4", + 0, + "^https?://(www\\.)?igbce\\.de/", + 10, + [], + [ + { + "e": 1854 + } + ], + [ + { + "v": 1854 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1854 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1854 + } + ], + {} + ], + [ + 1, + "auto_DE_igus.de_lxo", + 0, + "^https?://(www\\.)?igus\\.de/", + 10, + [], + [ + { + "e": 1855 + } + ], + [ + { + "v": 1855 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1855 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1855 + } + ], + {} + ], + [ + 1, + "auto_DE_ikb.de_u29", + 0, + "^https?://(www\\.)?ikb\\.de/", + 10, + [], + [ + { + "e": 1831 + } + ], + [ + { + "v": 1831 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1831 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1831 + } + ], + {} + ], + [ + 1, + "auto_DE_immobilien.sparkasse.de_zj7", + 0, + "^https?://(www\\.)?immobilien\\.sparkasse\\.de/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_DE_impfen-info.de_am5_+1", + 0, + "^https?://(www\\.)?impfen-info\\.de/|^https?://(www\\.)?infektionsschutz\\.de/", + 10, + [], + [ + { + "e": 1856 + } + ], + [ + { + "v": 1856 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1856 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1856 + } + ], + {} + ], + [ + 1, + "auto_DE_implantate.com_9s0", + 0, + "^https?://(www\\.)?implantate\\.com/", + 10, + [], + [ + { + "e": 2425 + } + ], + [ + { + "v": 2425 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2425 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2425 + } + ], + {} + ], + [ + 1, + "auto_DE_insel-sylt.de_7ui", + 0, + "^https?://(www\\.)?insel-sylt\\.de/", + 10, + [], + [ + { + "e": 1857 + } + ], + [ + { + "v": 1857 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1857 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1857 + } + ], + {} + ], + [ + 1, + "auto_DE_instructables.com_xfe", + 0, + "^https?://(www\\.)?instructables\\.com/", + 10, + [], + [ + { + "e": 1858 + } + ], + [ + { + "v": 1858 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1858 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1858 + } + ], + {} + ], + [ + 1, + "auto_DE_interhyp.de_olf", + 0, + "^https?://(www\\.)?interhyp\\.de/", + 10, + [], + [ + { + "e": 1859 + } + ], + [ + { + "v": 1859 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1859 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1859 + } + ], + {} + ], + [ + 1, + "auto_DE_iserv.de_xrb", + 0, + "^https?://(www\\.)?iserv\\.de/", + 10, + [], + [ + { + "e": 2446 + } + ], + [ + { + "v": 2446 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2446 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2446 + } + ], + {} + ], + [ + 1, + "auto_DE_itsco.de_xvg", + 0, + "^https?://(www\\.)?itsco\\.de/", + 10, + [], + [ + { + "e": 1860 + } + ], + [ + { + "v": 1860 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1860 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1860 + } + ], + {} + ], + [ + 1, + "auto_DE_jobvector.de_641", + 0, + "^https?://(www\\.)?jobvector\\.de/", + 10, + [], + [ + { + "e": 1861 + } + ], + [ + { + "v": 1861 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1861 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1861 + } + ], + {} + ], + [ + 1, + "auto_DE_juist.de_dyk", + 0, + "^https?://(www\\.)?juist\\.de/", + 10, + [], + [ + { + "e": 1337 + } + ], + [ + { + "v": 1337 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1337 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1337 + } + ], + {} + ], + [ + 1, + "auto_DE_juracademy.de_m37", + 0, + "^https?://(www\\.)?ankuendigung\\.juracademy\\.de/", + 10, + [], + [ + { + "e": 2453 + } + ], + [ + { + "v": 2453 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2453 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2453 + } + ], + {} + ], + [ + 1, + "auto_DE_kassel.de_ibv", + 0, + "^https?://(www\\.)?kassel\\.de/", + 10, + [], + [ + { + "e": 1862 + } + ], + [ + { + "v": 1862 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1862 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1862 + } + ], + {} + ], + [ + 1, + "auto_DE_kassenkompass.de_mbo", + 0, + "^https?://(www\\.)?kassenkompass\\.de/", + 10, + [], + [ + { + "e": 2464 + } + ], + [ + { + "v": 2464 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2464 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2464 + } + ], + {} + ], + [ + 1, + "auto_DE_kbv.de_9ic", + 0, + "^https?://(www\\.)?kbv\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_kfzteile24.de_i6y", + 0, + "^https?://(www\\.)?kfzteile24\\.de/", + 10, + [], + [ + { + "e": 1650 + } + ], + [ + { + "v": 1650 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1650 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1650 + } + ], + {} + ], + [ + 1, + "auto_DE_kinsta.com_hc5", + 0, + "^https?://(www\\.)?kinsta\\.com/", + 10, + [], + [ + { + "e": 1863 + } + ], + [ + { + "v": 1863 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1863 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1863 + } + ], + {} + ], + [ + 1, + "auto_DE_klassik-stiftung.de_oxx", + 0, + "^https?://(www\\.)?klassik-stiftung\\.de/", + 10, + [], + [ + { + "e": 1864 + } + ], + [ + { + "v": 1864 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1864 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1864 + } + ], + {} + ], + [ + 1, + "auto_DE_kleineskraftwerk.de_fx7", + 0, + "^https?://(www\\.)?kleineskraftwerk\\.de/", + 10, + [], + [ + { + "e": 2439 + } + ], + [ + { + "v": 2439 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2439 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2439 + } + ], + {} + ], + [ + 1, + "auto_DE_klett-cotta.de_p8b_+1", + 0, + "^https?://(www\\.)?klett-cotta\\.de/|^https?://(www\\.)?rundel\\.de/", + 10, + [], + [ + { + "e": 1645 + } + ], + [ + { + "v": 1645 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1645 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1645 + } + ], + {} + ], + [ + 1, + "auto_DE_klinikum-stuttgart.de_h8w", + 0, + "^https?://(www\\.)?klinikum-stuttgart\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_knowunity.de_7tk", + 0, + "^https?://(www\\.)?knowunity\\.de/", + 10, + [], + [ + { + "e": 2467 + } + ], + [ + { + "v": 2467 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2467 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2467 + } + ], + {} + ], + [ + 1, + "auto_DE_kobo.com_47y", + 0, + "^https?://(www\\.)?kobo\\.com/", + 10, + [], + [ + { + "e": 2476 + } + ], + [ + { + "v": 2476 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2476 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2476 + } + ], + {} + ], + [ + 1, + "auto_DE_kraeuterhaus.de_0a1", + 0, + "^https?://(www\\.)?kraeuterhaus\\.de/", + 10, + [], + [ + { + "e": 1866 + } + ], + [ + { + "v": 1866 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1866 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1866 + } + ], + {} + ], + [ + 1, + "auto_DE_ksk-es.de_50u_+17", + 0, + "^https?://(www\\.)?ksk-es\\.de/|^https?://(www\\.)?ksk-tuebingen\\.de/|^https?://(www\\.)?ksklb\\.de/|^https?://(www\\.)?naspa\\.de/|^https?://(www\\.)?s-abmil\\.de/|^https?://(www\\.)?sk-westerwald-sieg\\.de/|^https?://(www\\.)?sparkasse-bielefeld\\.de/|^https?://(www\\.)?sparkasse-essen\\.de/|^https?://(www\\.)?sparkasse-freiburg\\.de/|^https?://(www\\.)?sparkasse-heilbronn\\.de/|^https?://(www\\.)?sparkasse-karlsruhe\\.de/|^https?://(www\\.)?sparkasse-nuernberg\\.de/|^https?://(www\\.)?sparkasse-oberland\\.de/|^https?://(www\\.)?sparkasse-osnabrueck\\.de/|^https?://(www\\.)?sparkasse-pdh\\.de/|^https?://(www\\.)?spk-goettingen\\.de/|^https?://(www\\.)?spk-ro-aib\\.de/|^https?://(www\\.)?spk-schwaben-bodensee\\.de/", + 10, + [], + [ + { + "e": 1868 + } + ], + [ + { + "v": 1868 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1868 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1868 + } + ], + {} + ], + [ + 1, + "auto_DE_kuehlungsborn.de_6r4", + 0, + "^https?://(www\\.)?kuehlungsborn\\.de/", + 10, + [], + [ + { + "e": 1869 + } + ], + [ + { + "v": 1869 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1869 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1869 + } + ], + {} + ], + [ + 1, + "auto_DE_kulturkaufhaus.de_p76", + 0, + "^https?://(www\\.)?kulturkaufhaus\\.de/", + 10, + [], + [ + { + "e": 2507 + } + ], + [ + { + "v": 2507 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2507 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2507 + } + ], + {} + ], + [ + 1, + "auto_DE_kundenportal.m-net.de_y8l_+1", + 0, + "^https?://(www\\.)?kundenportal\\.m-net\\.de/|^https?://(www\\.)?m-net\\.de/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_DE_kvsachsen.de_84v", + 0, + "^https?://(www\\.)?kvsachsen\\.de/", + 10, + [], + [ + { + "e": 2536 + } + ], + [ + { + "v": 2536 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2536 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2536 + } + ], + {} + ], + [ + 1, + "auto_DE_kyoceradocumentsolutions.de_866", + 0, + "^https?://(www\\.)?kyoceradocumentsolutions\\.de/", + 10, + [], + [ + { + "e": 1871 + } + ], + [ + { + "v": 1871 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1871 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1871 + } + ], + {} + ], + [ + 1, + "auto_DE_kzvb.de_7t3", + 0, + "^https?://(www\\.)?kzvb\\.de/", + 10, + [], + [ + { + "e": 1872 + } + ], + [ + { + "v": 1872 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1872 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1872 + } + ], + {} + ], + [ + 1, + "auto_DE_la.spankbang.com_sva_+2", + 0, + "^https?://(www\\.)?la\\.spankbang\\.com/|^https?://(www\\.)?spankbang\\.com/|^https?://(www\\.)?jp\\.spankbang\\.com/", + 10, + [], + [ + { + "e": 2964 + } + ], + [ + { + "v": 2964 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2964 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2964 + } + ], + {} + ], + [ + 1, + "auto_DE_lagofast.com_k07", + 0, + "^https?://(www\\.)?lagofast\\.com/", + 10, + [], + [ + { + "e": 1873 + } + ], + [ + { + "v": 1873 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1873 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1873 + } + ], + {} + ], + [ + 1, + "auto_DE_land.nrw_uks", + 0, + "^https?://(www\\.)?land\\.nrw/", + 10, + [], + [ + { + "e": 1874 + } + ], + [ + { + "v": 1874 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1874 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1874 + } + ], + {} + ], + [ + 1, + "auto_DE_landkreis-muenchen.de_cb7", + 0, + "^https?://(www\\.)?landkreis-muenchen\\.de/", + 10, + [], + [ + { + "e": 2010 + } + ], + [ + { + "v": 2010 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2010 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2010 + } + ], + {} + ], + [ + 1, + "auto_DE_landshut.de_7ys", + 0, + "^https?://(www\\.)?landshut\\.de/", + 10, + [], + [ + { + "e": 2965 + } + ], + [ + { + "v": 2965 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2965 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2965 + } + ], + {} + ], + [ + 1, + "auto_DE_lbv.de_ohl", + 0, + "^https?://(www\\.)?lbv\\.de/", + 10, + [], + [ + { + "e": 1875 + } + ], + [ + { + "v": 1875 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1875 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1875 + } + ], + {} + ], + [ + 1, + "auto_DE_lempertz.com_iin", + 0, + "^https?://(www\\.)?lempertz\\.com/", + 10, + [], + [ + { + "e": 1803 + } + ], + [ + { + "v": 1803 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1803 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1803 + } + ], + {} + ], + [ + 1, + "auto_DE_lenovo.com_xcv", + 0, + "^https?://(www\\.)?lenovo\\.com/", + 10, + [], + [ + { + "e": 1876 + } + ], + [ + { + "v": 1876 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1876 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1876 + } + ], + {} + ], + [ + 1, + "auto_DE_leuchtturm1917.de_ot2", + 0, + "^https?://(www\\.)?leuchtturm1917\\.de/", + 10, + [], + [ + { + "e": 2556 + } + ], + [ + { + "v": 2556 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2556 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2556 + } + ], + {} + ], + [ + 1, + "auto_DE_lionshome.de_tqo", + 0, + "^https?://(www\\.)?lionshome\\.de/", + 10, + [], + [ + { + "e": 1877 + } + ], + [ + { + "v": 1877 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1877 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1877 + } + ], + {} + ], + [ + 1, + "auto_DE_listando.de_c5i", + 0, + "^https?://(www\\.)?listando\\.de/", + 10, + [], + [ + { + "e": 2557 + } + ], + [ + { + "v": 2557 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2557 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2557 + } + ], + {} + ], + [ + 1, + "auto_DE_lite-magazin.de_e1s", + 0, + "^https?://(www\\.)?lite-magazin\\.de/", + 10, + [], + [ + { + "e": 1878 + } + ], + [ + { + "v": 1878 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1878 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1878 + } + ], + {} + ], + [ + 1, + "auto_DE_litze24.de_2wq", + 0, + "^https?://(www\\.)?litze24\\.de/", + 10, + [], + [ + { + "e": 1879 + } + ], + [ + { + "v": 1879 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1879 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1879 + } + ], + {} + ], + [ + 1, + "auto_DE_loewensteinmedical.com_erd", + 0, + "^https?://(www\\.)?loewensteinmedical\\.com/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_logo.de_k2a", + 0, + "^https?://(www\\.)?logo\\.de/", + 10, + [], + [ + { + "e": 1880 + } + ], + [ + { + "v": 1880 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1880 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1880 + } + ], + {} + ], + [ + 1, + "auto_DE_lotto-niedersachsen.de_7a4", + 0, + "^https?://(www\\.)?lotto-niedersachsen\\.de/", + 10, + [], + [ + { + "e": 1881 + } + ], + [ + { + "v": 1881 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1881 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1881 + } + ], + {} + ], + [ + 1, + "auto_DE_lotto24.de_v5j", + 0, + "^https?://(www\\.)?lotto24\\.de/", + 10, + [], + [ + { + "e": 1882 + } + ], + [ + { + "v": 1882 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1882 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1882 + } + ], + {} + ], + [ + 1, + "auto_DE_ludwigshafen.de_c5u", + 0, + "^https?://(www\\.)?ludwigshafen\\.de/", + 10, + [], + [ + { + "e": 1884 + } + ], + [ + { + "v": 1884 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1884 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1884 + } + ], + {} + ], + [ + 1, + "auto_DE_lvr.de_t4c", + 0, + "^https?://(www\\.)?lvr\\.de/", + 10, + [], + [ + { + "e": 1885 + } + ], + [ + { + "v": 1885 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1885 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1885 + } + ], + {} + ], + [ + 1, + "auto_DE_lwl.org_4pu", + 0, + "^https?://(www\\.)?www2\\.lwl\\.org/", + 10, + [], + [ + { + "e": 1886 + } + ], + [ + { + "v": 1886 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1886 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1886 + } + ], + {} + ], + [ + 1, + "auto_DE_lzo.com_dbu_+1", + 0, + "^https?://(www\\.)?lzo\\.com/|^https?://(www\\.)?spkvr\\.de/", + 10, + [], + [ + { + "e": 1887 + } + ], + [ + { + "v": 1887 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1887 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1887 + } + ], + {} + ], + [ + 1, + "auto_DE_m.livejasmin.com_cvg", + 0, + "^https?://(www\\.)?livejasmin\\.com/", + 10, + [], + [ + { + "e": 2582 + } + ], + [ + { + "v": 2582 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2582 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2582 + } + ], + {} + ], + [ + 1, + "auto_DE_maas-natur.de_tbp", + 0, + "^https?://(www\\.)?maas-natur\\.de/", + 10, + [], + [ + { + "e": 1888 + } + ], + [ + { + "v": 1888 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1888 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1888 + } + ], + {} + ], + [ + 1, + "auto_DE_mantel.com_u8t", + 0, + "^https?://(www\\.)?mantel\\.com/", + 10, + [], + [ + { + "e": 1890 + } + ], + [ + { + "v": 1890 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1890 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1890 + } + ], + {} + ], + [ + 1, + "auto_DE_mediathekviewweb.de_i81", + 0, + "^https?://(www\\.)?mediathekviewweb\\.de/", + 10, + [], + [ + { + "e": 2966 + } + ], + [ + { + "v": 2966 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2966 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2966 + } + ], + {} + ], + [ + 1, + "auto_DE_medipreis.de_85i", + 0, + "^https?://(www\\.)?medipreis\\.de/", + 10, + [], + [ + { + "e": 1892 + } + ], + [ + { + "v": 1892 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1892 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1892 + } + ], + {} + ], + [ + 1, + "auto_DE_medizin.uni-tuebingen.de_wj1", + 0, + "^https?://(www\\.)?medizin\\.uni-tuebingen\\.de/", + 10, + [], + [ + { + "e": 1893 + } + ], + [ + { + "v": 1893 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1893 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1893 + } + ], + {} + ], + [ + 1, + "auto_DE_medpets.de_mm4", + 0, + "^https?://(www\\.)?medpets\\.de/", + 10, + [], + [ + { + "e": 1894 + } + ], + [ + { + "v": 1894 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1894 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1894 + } + ], + {} + ], + [ + 1, + "auto_DE_mein.advanzia.com_78y", + 0, + "^https?://(www\\.)?id\\.advanzia\\.com/", + 10, + [], + [ + { + "e": 2567 + } + ], + [ + { + "v": 2567 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2567 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2567 + } + ], + {} + ], + [ + 1, + "auto_DE_metro.de_g02", + 0, + "^https?://(www\\.)?metro\\.de/", + 10, + [], + [ + { + "e": 1895 + } + ], + [ + { + "v": 1895 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1895 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1895 + } + ], + {} + ], + [ + 1, + "auto_DE_mg-solar-shop.de_v5d_+1", + 0, + "^https?://(www\\.)?mg-solar-shop\\.de/|^https?://(www\\.)?steeltoyz\\.de/", + 10, + [], + [ + { + "e": 1896 + } + ], + [ + { + "v": 1896 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1896 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1896 + } + ], + {} + ], + [ + 1, + "auto_DE_mindfactory.de_me9", + 0, + "^https?://(www\\.)?mindfactory\\.de/", + 10, + [], + [ + { + "e": 1897 + } + ], + [ + { + "v": 1897 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1897 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1897 + } + ], + {} + ], + [ + 1, + "auto_DE_mitarbeiterservice.bayern.de_quh", + 0, + "^https?://(www\\.)?mitarbeiterservice\\.bayern\\.de/", + 10, + [], + [ + { + "e": 1898 + } + ], + [ + { + "v": 1898 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1898 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1898 + } + ], + {} + ], + [ + 1, + "auto_DE_mrmarvis.com_bo5", + 0, + "^https?://(www\\.)?mrmarvis\\.com/", + 10, + [], + [ + { + "e": 2591 + } + ], + [ + { + "v": 2591 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2591 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2591 + } + ], + {} + ], + [ + 1, + "auto_DE_musikhaus-korn.de_r58", + 0, + "^https?://(www\\.)?musikhaus-korn\\.de/", + 10, + [], + [ + { + "e": 1900 + } + ], + [ + { + "v": 1900 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1900 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1900 + } + ], + {} + ], + [ + 1, + "auto_DE_mycare.de_icd", + 0, + "^https?://(www\\.)?mycare\\.de/", + 10, + [], + [ + { + "e": 1901 + } + ], + [ + { + "v": 1901 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1901 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1901 + } + ], + {} + ], + [ + 1, + "auto_DE_namsu.de_0or", + 0, + "^https?://(www\\.)?namsu\\.de/", + 10, + [], + [ + { + "e": 1902 + } + ], + [ + { + "v": 1902 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1902 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1902 + } + ], + {} + ], + [ + 1, + "auto_DE_naturhaeuschen.de_rm3", + 0, + "^https?://(www\\.)?naturhaeuschen\\.de/", + 10, + [], + [ + { + "e": 1903 + } + ], + [ + { + "v": 1903 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1903 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1903 + } + ], + {} + ], + [ + 1, + "auto_DE_nomos-glashuette.com_ldh", + 0, + "^https?://(www\\.)?nomos-glashuette\\.com/", + 10, + [], + [ + { + "e": 1904 + } + ], + [ + { + "v": 1904 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1904 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1904 + } + ], + {} + ], + [ + 1, + "auto_DE_nordkirche.de_cfk", + 0, + "^https?://(www\\.)?nordkirche\\.de/", + 10, + [], + [ + { + "e": 1905 + } + ], + [ + { + "v": 1905 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1905 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1905 + } + ], + {} + ], + [ + 1, + "auto_DE_oberstdorf.de_7dc", + 0, + "^https?://(www\\.)?oberstdorf\\.de/", + 10, + [], + [ + { + "e": 2630 + } + ], + [ + { + "v": 2630 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2630 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2630 + } + ], + {} + ], + [ + 1, + "auto_DE_offenbach.de_w7y", + 0, + "^https?://(www\\.)?offenbach\\.de/", + 10, + [], + [ + { + "e": 1908 + } + ], + [ + { + "v": 1908 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1908 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1908 + } + ], + {} + ], + [ + 1, + "auto_DE_ok-bergbahnen.com_52q", + 0, + "^https?://(www\\.)?ok-bergbahnen\\.com/", + 10, + [], + [ + { + "e": 1906 + } + ], + [ + { + "v": 1906 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1906 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1906 + } + ], + {} + ], + [ + 1, + "auto_DE_openhab.org_g7k", + 0, + "^https?://(www\\.)?openhab\\.org/", + 10, + [], + [ + { + "e": 1909 + } + ], + [ + { + "v": 1909 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1909 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1909 + } + ], + {} + ], + [ + 1, + "auto_DE_oper-frankfurt.de_y5o", + 0, + "^https?://(www\\.)?oper-frankfurt\\.de/", + 10, + [], + [ + { + "e": 2631 + } + ], + [ + { + "v": 2631 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2631 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2631 + } + ], + {} + ], + [ + 1, + "auto_DE_ostsee.de_3mn", + 0, + "^https?://(www\\.)?ostsee\\.de/", + 10, + [], + [ + { + "e": 1910 + } + ], + [ + { + "v": 1910 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1910 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1910 + } + ], + {} + ], + [ + 1, + "auto_DE_otelo.de_yrq", + 0, + "^https?://(www\\.)?otelo\\.de/", + 10, + [], + [ + { + "e": 2632 + } + ], + [ + { + "v": 2632 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2632 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2632 + } + ], + {} + ], + [ + 1, + "auto_DE_parqet.com_6wm", + 0, + "^https?://(www\\.)?parqet\\.com/", + 10, + [], + [ + { + "e": 2967 + } + ], + [ + { + "v": 2967 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2967 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2967 + } + ], + {} + ], + [ + 1, + "auto_DE_pascoe.de_b65", + 0, + "^https?://(www\\.)?pascoe\\.de/", + 10, + [], + [ + { + "e": 1912 + } + ], + [ + { + "v": 1912 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1912 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1912 + } + ], + {} + ], + [ + 1, + "auto_DE_pflege-durch-angehoerige.de_u6z", + 0, + "^https?://(www\\.)?pflege-durch-angehoerige\\.de/", + 10, + [], + [ + { + "e": 2634 + } + ], + [ + { + "v": 2634 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2634 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2634 + } + ], + {} + ], + [ + 1, + "auto_DE_phoenixreisen.com_p17", + 0, + "^https?://(www\\.)?phoenixreisen\\.com/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_DE_pkwteile.de_062", + 0, + "^https?://(www\\.)?pkwteile\\.de/", + 10, + [], + [ + { + "e": 1913 + } + ], + [ + { + "v": 1913 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1913 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1913 + } + ], + {} + ], + [ + 1, + "auto_DE_play.chessbase.com_4jq", + 0, + "^https?://(www\\.)?play\\.chessbase\\.com/", + 10, + [], + [ + { + "e": 2968 + } + ], + [ + { + "v": 2968 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2968 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2968 + } + ], + {} + ], + [ + 1, + "auto_DE_polizei.bayern.de_sh2", + 0, + "^https?://(www\\.)?polizei\\.bayern\\.de/", + 10, + [], + [ + { + "e": 1914 + } + ], + [ + { + "v": 1914 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1914 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1914 + } + ], + {} + ], + [ + 1, + "auto_DE_polizei.hessen.de_rsx", + 0, + "^https?://(www\\.)?polizei\\.hessen\\.de/", + 10, + [], + [ + { + "e": 2637 + } + ], + [ + { + "v": 2637 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2637 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2637 + } + ], + {} + ], + [ + 1, + "auto_DE_profishop.de_t78", + 0, + "^https?://(www\\.)?profishop\\.de/", + 10, + [], + [ + { + "e": 2638 + } + ], + [ + { + "v": 2638 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2638 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2638 + } + ], + {} + ], + [ + 1, + "auto_DE_qatarairways.com_o9u", + 0, + "^https?://(www\\.)?qatarairways\\.com/", + 10, + [], + [ + { + "e": 1916 + } + ], + [ + { + "v": 1916 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1916 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1916 + } + ], + {} + ], + [ + 1, + "auto_DE_qvc.de_jcc", + 0, + "^https?://(www\\.)?qvc\\.de/", + 10, + [], + [ + { + "e": 1917 + } + ], + [ + { + "v": 1917 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1917 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1917 + } + ], + {} + ], + [ + 1, + "auto_DE_raiffeisenmarkt.de_96f", + 0, + "^https?://(www\\.)?raiffeisenmarkt\\.de/", + 10, + [], + [ + { + "e": 1883 + } + ], + [ + { + "v": 1883 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1883 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1883 + } + ], + {} + ], + [ + 1, + "auto_DE_rameder.de_btt", + 0, + "^https?://(www\\.)?rameder\\.de/", + 10, + [], + [ + { + "e": 1918 + } + ], + [ + { + "v": 1918 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1918 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1918 + } + ], + {} + ], + [ + 1, + "auto_DE_rechtecheck.de_229", + 0, + "^https?://(www\\.)?rechtecheck\\.de/", + 10, + [], + [ + { + "e": 2969 + } + ], + [ + { + "v": 2969 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2969 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2969 + } + ], + {} + ], + [ + 1, + "auto_DE_regierung.oberbayern.bayern.de_zx2_+2", + 0, + "^https?://(www\\.)?regierung\\.oberbayern\\.bayern\\.de/|^https?://(www\\.)?statistik\\.bayern\\.de/|^https?://(www\\.)?stmb\\.bayern\\.de/", + 10, + [], + [ + { + "e": 1920 + } + ], + [ + { + "v": 1920 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1920 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1920 + } + ], + {} + ], + [ + 1, + "auto_DE_remove.bg_0gx", + 0, + "^https?://(www\\.)?remove\\.bg/", + 10, + [], + [ + { + "e": 1921 + } + ], + [ + { + "v": 1921 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1921 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1921 + } + ], + {} + ], + [ + 1, + "auto_DE_rexel.de_uky", + 0, + "^https?://(www\\.)?rexel\\.de/", + 10, + [], + [ + { + "e": 1922 + } + ], + [ + { + "v": 1922 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1922 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1922 + } + ], + {} + ], + [ + 1, + "auto_DE_rheinwerk-verlag.de_63m", + 0, + "^https?://(www\\.)?rheinwerk-verlag\\.de/", + 10, + [], + [ + { + "e": 1692 + } + ], + [ + { + "v": 1692 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1692 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1692 + } + ], + {} + ], + [ + 1, + "auto_DE_rm-kurier.de_b1q", + 0, + "^https?://(www\\.)?rm-kurier\\.de/", + 10, + [], + [ + { + "e": 2639 + } + ], + [ + { + "v": 2639 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2639 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2639 + } + ], + {} + ], + [ + 1, + "auto_DE_roastmarket.de_o86", + 0, + "^https?://(www\\.)?roastmarket\\.de/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_DE_roller.de_pjo", + 0, + "^https?://(www\\.)?roller\\.de/", + 10, + [], + [ + { + "e": 1923 + } + ], + [ + { + "v": 1923 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1923 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1923 + } + ], + {} + ], + [ + 1, + "auto_DE_rote-liste.de_min", + 0, + "^https?://(www\\.)?rote-liste\\.de/", + 10, + [], + [ + { + "e": 2640 + } + ], + [ + { + "v": 2640 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2640 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2640 + } + ], + {} + ], + [ + 1, + "auto_DE_rundfunkbeitrag.de_g4y", + 0, + "^https?://(www\\.)?rundfunkbeitrag\\.de/", + 10, + [], + [ + { + "e": 1924 + } + ], + [ + { + "v": 1924 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1924 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1924 + } + ], + {} + ], + [ + 1, + "auto_DE_samenhaus.de_ggz", + 0, + "^https?://(www\\.)?samenhaus\\.de/", + 10, + [], + [ + { + "e": 1925 + } + ], + [ + { + "v": 1925 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1925 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1925 + } + ], + {} + ], + [ + 1, + "auto_DE_schach-spielen.eu_6s3", + 0, + "^https?://(www\\.)?schach-spielen\\.eu/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_DE_schauspielfrankfurt.de_dji", + 0, + "^https?://(www\\.)?schauspielfrankfurt\\.de/", + 10, + [], + [ + { + "e": 2641 + } + ], + [ + { + "v": 2641 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2641 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2641 + } + ], + {} + ], + [ + 1, + "auto_DE_schnittberichte.com_das", + 0, + "^https?://(www\\.)?schnittberichte\\.com/", + 10, + [], + [ + { + "e": 1926 + } + ], + [ + { + "v": 1926 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1926 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1926 + } + ], + {} + ], + [ + 1, + "auto_DE_schueco.com_vxv", + 0, + "^https?://(www\\.)?schueco\\.com/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_DE_schwabach.de_fjr", + 0, + "^https?://(www\\.)?schwabach\\.de/", + 10, + [], + [ + { + "e": 1927 + } + ], + [ + { + "v": 1927 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1927 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1927 + } + ], + {} + ], + [ + 1, + "auto_DE_schwaebisch-hall.de_0g1", + 0, + "^https?://(www\\.)?schwaebisch-hall\\.de/", + 10, + [], + [ + { + "e": 1928 + } + ], + [ + { + "v": 1928 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1928 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1928 + } + ], + {} + ], + [ + 1, + "auto_DE_sellercentral-europe.amazon.com_a58_+2", + 0, + "^https?://(www\\.)?sellercentral-europe\\.amazon\\.com/|^https?://(www\\.)?sellercentral\\.amazon\\.de/|^https?://(www\\.)?sellercentral\\.amazon\\.co\\.uk/", + 10, + [], + [ + { + "e": 1929 + } + ], + [ + { + "v": 1929 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1929 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1929 + } + ], + {} + ], + [ + 1, + "auto_DE_sellpy.de_iue", + 0, + "^https?://(www\\.)?sellpy\\.de/", + 10, + [], + [ + { + "e": 1930 + } + ], + [ + { + "v": 1930 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1930 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1930 + } + ], + {} + ], + [ + 1, + "auto_DE_sena.com_oj6", + 0, + "^https?://(www\\.)?sena\\.com/", + 10, + [], + [ + { + "e": 1931 + } + ], + [ + { + "v": 1931 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1931 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1931 + } + ], + {} + ], + [ + 1, + "auto_DE_sephora.de_exg", + 0, + "^https?://(www\\.)?sephora\\.de/", + 10, + [], + [ + { + "e": 2053 + } + ], + [ + { + "v": 2053 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2053 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2053 + } + ], + {} + ], + [ + 1, + "auto_DE_shmf.de_gxe", + 0, + "^https?://(www\\.)?shmf\\.de/", + 10, + [], + [ + { + "e": 1932 + } + ], + [ + { + "v": 1932 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1932 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1932 + } + ], + {} + ], + [ + 1, + "auto_DE_shop.asfinag.at_3vo", + 0, + "^https?://(www\\.)?shop\\.asfinag\\.at/", + 10, + [], + [ + { + "e": 1933 + } + ], + [ + { + "v": 1933 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1933 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1933 + } + ], + {} + ], + [ + 1, + "auto_DE_shop.helukabel.com_jt0", + 0, + "^https?://(www\\.)?shop\\.helukabel\\.com/", + 10, + [], + [ + { + "e": 1934 + } + ], + [ + { + "v": 1934 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1934 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1934 + } + ], + {} + ], + [ + 1, + "auto_DE_shopyalehome.com_kju", + 0, + "^https?://(www\\.)?shopyalehome\\.com/", + 10, + [], + [ + { + "e": 811 + } + ], + [ + { + "v": 811 + } + ], + [ + { + "wait": 500 + }, + { + "c": 811 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 811 + } + ], + {} + ], + [ + 1, + "auto_DE_signin.ebay.de_up6", + 0, + "^https?://(www\\.)?signin\\.ebay\\.de/", + 10, + [], + [ + { + "e": 2289 + } + ], + [ + { + "v": 2289 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2289 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2289 + } + ], + {} + ], + [ + 1, + "auto_DE_simplekey.de_xso", + 0, + "^https?://(www\\.)?simplekey\\.de/", + 10, + [], + [ + { + "e": 1936 + } + ], + [ + { + "v": 1936 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1936 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1936 + } + ], + {} + ], + [ + 1, + "auto_DE_skandix.de_qkh", + 0, + "^https?://(www\\.)?skandix\\.de/", + 10, + [], + [ + { + "e": 1937 + } + ], + [ + { + "v": 1937 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1937 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1937 + } + ], + {} + ], + [ + 1, + "auto_DE_snaply.de_j4v", + 0, + "^https?://(www\\.)?snaply\\.de/", + 10, + [], + [ + { + "e": 1938 + } + ], + [ + { + "v": 1938 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1938 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1938 + } + ], + {} + ], + [ + 1, + "auto_DE_sozialpolitik-aktuell.de_pnk", + 0, + "^https?://(www\\.)?sozialpolitik-aktuell\\.de/", + 10, + [], + [ + { + "e": 1939 + } + ], + [ + { + "v": 1939 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1939 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1939 + } + ], + {} + ], + [ + 1, + "auto_DE_sparda-west.de_4xc", + 0, + "^https?://(www\\.)?sparda-west\\.de/", + 10, + [], + [ + { + "e": 1940 + } + ], + [ + { + "v": 1940 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1940 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1940 + } + ], + {} + ], + [ + 1, + "auto_DE_sparda.de_3xf", + 0, + "^https?://(www\\.)?sparda\\.de/", + 10, + [], + [ + { + "e": 1940 + } + ], + [ + { + "v": 1940 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1940 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1940 + } + ], + {} + ], + [ + 1, + "auto_DE_sparkasse-bochum.de_h3q", + 0, + "^https?://(www\\.)?sparkasse-bochum\\.de/", + 10, + [], + [ + { + "e": 2642 + } + ], + [ + { + "v": 2642 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2642 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2642 + } + ], + {} + ], + [ + 1, + "auto_DE_sparkasse-heidelberg.de_pu6_+1", + 0, + "^https?://(www\\.)?sparkasse-heidelberg\\.de/|^https?://(www\\.)?sskm\\.de/", + 10, + [], + [ + { + "e": 1942 + } + ], + [ + { + "v": 1942 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1942 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1942 + } + ], + {} + ], + [ + 1, + "auto_DE_sparwelt.de_5vq", + 0, + "^https?://(www\\.)?sparwelt\\.de/", + 10, + [], + [ + { + "e": 2643 + } + ], + [ + { + "v": 2643 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2643 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2643 + } + ], + {} + ], + [ + 1, + "auto_DE_speedtest.vodafone.de_dha", + 0, + "^https?://(www\\.)?speedtest\\.vodafone\\.de/", + 10, + [], + [ + { + "e": 2644 + } + ], + [ + { + "v": 2644 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2644 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2644 + } + ], + {} + ], + [ + 1, + "auto_DE_spiele-offensive.de_yu6", + 0, + "^https?://(www\\.)?spiele-offensive\\.de/", + 10, + [], + [ + { + "e": 1943 + } + ], + [ + { + "v": 1943 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1943 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1943 + } + ], + {} + ], + [ + 1, + "auto_DE_staatstheater-karlsruhe.de_we8", + 0, + "^https?://(www\\.)?staatstheater-karlsruhe\\.de/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_DE_staatstheater-nuernberg.de_4o3", + 0, + "^https?://(www\\.)?staatstheater-nuernberg\\.de/", + 10, + [], + [ + { + "e": 2645 + } + ], + [ + { + "v": 2645 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2645 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2645 + } + ], + {} + ], + [ + 1, + "auto_DE_stabilo-sanitaer.de_pgy", + 0, + "^https?://(www\\.)?stabilo-sanitaer\\.de/", + 10, + [], + [ + { + "e": 1944 + } + ], + [ + { + "v": 1944 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1944 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1944 + } + ], + {} + ], + [ + 1, + "auto_DE_stahlshop.de_pak", + 0, + "^https?://(www\\.)?stahlshop\\.de/", + 10, + [], + [ + { + "e": 1945 + } + ], + [ + { + "v": 1945 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1945 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1945 + } + ], + {} + ], + [ + 1, + "auto_DE_steuerbot.com_alm", + 0, + "^https?://(www\\.)?steuerbot\\.com/", + 10, + [], + [ + { + "e": 2646 + } + ], + [ + { + "v": 2646 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2646 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2646 + } + ], + {} + ], + [ + 1, + "auto_DE_stiebel-eltron.de_9vu", + 0, + "^https?://(www\\.)?stiebel-eltron\\.de/", + 10, + [], + [ + { + "e": 1946 + } + ], + [ + { + "v": 1946 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1946 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1946 + } + ], + {} + ], + [ + 1, + "auto_DE_stilpunkte.de_anz", + 0, + "^https?://(www\\.)?stilpunkte\\.de/", + 10, + [], + [ + { + "e": 2647 + } + ], + [ + { + "v": 2647 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2647 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2647 + } + ], + {} + ], + [ + 1, + "auto_DE_stories.com_h1k", + 0, + "^https?://(www\\.)?stories\\.com/", + 10, + [], + [ + { + "e": 1349 + } + ], + [ + { + "v": 1349 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1349 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1349 + } + ], + {} + ], + [ + 1, + "auto_DE_strato-hosting.co.uk_8ob", + 0, + "^https?://(www\\.)?strato-hosting\\.co\\.uk/", + 10, + [], + [ + { + "e": 2486 + } + ], + [ + { + "v": 2486 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2486 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2486 + } + ], + {} + ], + [ + 1, + "auto_DE_strauss.com_qji", + 0, + "^https?://(www\\.)?strauss\\.com/", + 10, + [], + [ + { + "e": 2648 + } + ], + [ + { + "v": 2648 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2648 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2648 + } + ], + {} + ], + [ + 1, + "auto_DE_strunz.com_vtz", + 0, + "^https?://(www\\.)?strunz\\.com/", + 10, + [], + [ + { + "e": 1948 + } + ], + [ + { + "v": 1948 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1948 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1948 + } + ], + {} + ], + [ + 1, + "auto_DE_studentenwerk-dresden.de_txo", + 0, + "^https?://(www\\.)?studentenwerk-dresden\\.de/", + 10, + [], + [ + { + "e": 1949 + } + ], + [ + { + "v": 1949 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1949 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1949 + } + ], + {} + ], + [ + 1, + "auto_DE_studiobookr.com_73d", + 0, + "^https?://(www\\.)?studiobookr\\.com/", + 10, + [], + [ + { + "e": 1950 + } + ], + [ + { + "v": 1950 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1950 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1950 + } + ], + {} + ], + [ + 1, + "auto_DE_suedtirolerland.it_oaa", + 0, + "^https?://(www\\.)?suedtirolerland\\.it/", + 10, + [], + [ + { + "e": 1650 + } + ], + [ + { + "v": 1650 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1650 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1650 + } + ], + {} + ], + [ + 1, + "auto_DE_survival-kompass.de_kv6", + 0, + "^https?://(www\\.)?survival-kompass\\.de/", + 10, + [], + [ + { + "e": 2970 + } + ], + [ + { + "v": 2970 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2970 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2970 + } + ], + {} + ], + [ + 1, + "auto_DE_swp-potsdam.de_mcr", + 0, + "^https?://(www\\.)?swp-potsdam\\.de/", + 10, + [], + [ + { + "e": 2649 + } + ], + [ + { + "v": 2649 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2649 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2649 + } + ], + {} + ], + [ + 1, + "auto_DE_teekampagne.de_5tg", + 0, + "^https?://(www\\.)?teekampagne\\.de/", + 10, + [], + [ + { + "e": 2650 + } + ], + [ + { + "v": 2650 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2650 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2650 + } + ], + {} + ], + [ + 1, + "auto_DE_teleskop-express.de_3ca", + 0, + "^https?://(www\\.)?teleskop-express\\.de/", + 10, + [], + [ + { + "e": 1951 + } + ], + [ + { + "v": 1951 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1951 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1951 + } + ], + {} + ], + [ + 1, + "auto_DE_th-luebeck.de_zvz", + 0, + "^https?://(www\\.)?th-luebeck\\.de/", + 10, + [], + [ + { + "e": 2651 + } + ], + [ + { + "v": 2651 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2651 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2651 + } + ], + {} + ], + [ + 1, + "auto_DE_threebestrated.de_9if", + 0, + "^https?://(www\\.)?threebestrated\\.de/", + 10, + [], + [ + { + "e": 2971 + } + ], + [ + { + "v": 2971 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2971 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2971 + } + ], + {} + ], + [ + 1, + "auto_DE_tibber.com_wqq", + 0, + "^https?://(www\\.)?tibber\\.com/", + 10, + [], + [ + { + "e": 1952 + } + ], + [ + { + "v": 1952 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1952 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1952 + } + ], + {} + ], + [ + 1, + "auto_DE_tintenmarkt.de_rpe", + 0, + "^https?://(www\\.)?tintenmarkt\\.de/", + 10, + [], + [ + { + "e": 1953 + } + ], + [ + { + "v": 1953 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1953 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1953 + } + ], + {} + ], + [ + 1, + "auto_DE_topersatzteile.de_m3q", + 0, + "^https?://(www\\.)?topersatzteile\\.de/", + 10, + [], + [ + { + "e": 2652 + } + ], + [ + { + "v": 2652 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2652 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2652 + } + ], + {} + ], + [ + 1, + "auto_DE_toppizzerien.de_398", + 0, + "^https?://(www\\.)?toppizzerien\\.de/", + 10, + [], + [ + { + "e": 1954 + } + ], + [ + { + "v": 1954 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1954 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1954 + } + ], + {} + ], + [ + 1, + "auto_DE_tourenfahrer.de_u1u", + 0, + "^https?://(www\\.)?tourenfahrer\\.de/", + 10, + [], + [ + { + "e": 1955 + } + ], + [ + { + "v": 1955 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1955 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1955 + } + ], + {} + ], + [ + 1, + "auto_DE_traderepublic.com_xbh", + 0, + "^https?://(www\\.)?traderepublic\\.com/", + 10, + [], + [ + { + "e": 1956 + } + ], + [ + { + "v": 1956 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1956 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1956 + } + ], + {} + ], + [ + 1, + "auto_DE_trinkgut.de_gf6", + 0, + "^https?://(www\\.)?trinkgut\\.de/", + 10, + [], + [ + { + "e": 1957 + } + ], + [ + { + "v": 1957 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1957 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1957 + } + ], + {} + ], + [ + 1, + "auto_DE_trox.de_1lf", + 0, + "^https?://(www\\.)?trox\\.de/", + 10, + [], + [ + { + "e": 1958 + } + ], + [ + { + "v": 1958 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1958 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1958 + } + ], + {} + ], + [ + 1, + "auto_DE_tvgenial.online_0dn", + 0, + "^https?://(www\\.)?tvgenial\\.online/", + 10, + [], + [ + { + "e": 1959 + } + ], + [ + { + "v": 1959 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1959 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1959 + } + ], + {} + ], + [ + 1, + "auto_DE_typografie.info_mnj", + 0, + "^https?://(www\\.)?typografie\\.info/", + 10, + [], + [ + { + "e": 1050 + } + ], + [ + { + "v": 1050 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1050 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1050 + } + ], + {} + ], + [ + 1, + "auto_DE_ufz.de_yhj", + 0, + "^https?://(www\\.)?ufz\\.de/", + 10, + [], + [ + { + "e": 1960 + } + ], + [ + { + "v": 1960 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1960 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1960 + } + ], + {} + ], + [ + 1, + "auto_DE_uhrzeit123.de_zgn", + 0, + "^https?://(www\\.)?uhrzeit123\\.de/", + 10, + [], + [ + { + "e": 1961 + } + ], + [ + { + "v": 1961 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1961 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1961 + } + ], + {} + ], + [ + 1, + "auto_DE_ukbonn.de_w64", + 0, + "^https?://(www\\.)?ukbonn\\.de/", + 10, + [], + [ + { + "e": 1962 + } + ], + [ + { + "v": 1962 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1962 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1962 + } + ], + {} + ], + [ + 1, + "auto_DE_ullstein.de_16x", + 0, + "^https?://(www\\.)?ullstein\\.de/", + 10, + [], + [ + { + "e": 2653 + } + ], + [ + { + "v": 2653 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2653 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2653 + } + ], + {} + ], + [ + 1, + "auto_DE_ulm.de_du8", + 0, + "^https?://(www\\.)?ulm\\.de/", + 10, + [], + [ + { + "e": 1963 + } + ], + [ + { + "v": 1963 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1963 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1963 + } + ], + {} + ], + [ + 1, + "auto_DE_uni-bielefeld.de_iji", + 0, + "^https?://(www\\.)?uni-bielefeld\\.de/", + 10, + [], + [ + { + "e": 1964 + } + ], + [ + { + "v": 1964 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1964 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1964 + } + ], + {} + ], + [ + 1, + "auto_DE_uni-goettingen.de_9v1", + 0, + "^https?://(www\\.)?uni-goettingen\\.de/", + 10, + [], + [ + { + "e": 1965 + } + ], + [ + { + "v": 1965 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1965 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1965 + } + ], + {} + ], + [ + 1, + "auto_DE_uni-hildesheim.de_7kj", + 0, + "^https?://(www\\.)?uni-hildesheim\\.de/", + 10, + [], + [ + { + "e": 1966 + } + ], + [ + { + "v": 1966 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1966 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1966 + } + ], + {} + ], + [ + 1, + "auto_DE_uni-kassel.de_l1p", + 0, + "^https?://(www\\.)?uni-kassel\\.de/", + 10, + [], + [ + { + "e": 1967 + } + ], + [ + { + "v": 1967 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1967 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1967 + } + ], + {} + ], + [ + 1, + "auto_DE_uni-mannheim.de_omi", + 0, + "^https?://(www\\.)?uni-mannheim\\.de/", + 10, + [], + [ + { + "e": 2654 + } + ], + [ + { + "v": 2654 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2654 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2654 + } + ], + {} + ], + [ + 1, + "auto_DE_uni-ulm.de_bpg", + 0, + "^https?://(www\\.)?uni-ulm\\.de/", + 10, + [], + [ + { + "e": 1969 + } + ], + [ + { + "v": 1969 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1969 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1969 + } + ], + {} + ], + [ + 1, + "auto_DE_unimedizin-ffm.de_euw", + 0, + "^https?://(www\\.)?unimedizin-ffm\\.de/", + 10, + [], + [ + { + "e": 1970 + } + ], + [ + { + "v": 1970 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1970 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1970 + } + ], + {} + ], + [ + 1, + "auto_DE_united-domains.de_v4v", + 0, + "^https?://(www\\.)?united-domains\\.de/", + 10, + [], + [ + { + "e": 1971 + } + ], + [ + { + "v": 1971 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1971 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1971 + } + ], + {} + ], + [ + 1, + "auto_DE_untis.at_g1t", + 0, + "^https?://(www\\.)?untis\\.at/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_DE_variete.de_6cc", + 0, + "^https?://(www\\.)?variete\\.de/", + 10, + [], + [ + { + "e": 2655 + } + ], + [ + { + "v": 2655 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2655 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2655 + } + ], + {} + ], + [ + 1, + "auto_DE_vde-verlag.de_xud", + 0, + "^https?://(www\\.)?vde-verlag\\.de/", + 10, + [], + [ + { + "e": 1972 + } + ], + [ + { + "v": 1972 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1972 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1972 + } + ], + {} + ], + [ + 1, + "auto_DE_verbund.edeka_r7e", + 0, + "^https?://(www\\.)?verbund\\.edeka/", + 10, + [], + [ + { + "e": 1742 + } + ], + [ + { + "v": 1742 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1742 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1742 + } + ], + {} + ], + [ + 1, + "auto_DE_vevor.de_caz", + 0, + "^https?://(www\\.)?vevor\\.de/", + 10, + [], + [ + { + "e": 1973 + } + ], + [ + { + "v": 1973 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1973 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1973 + } + ], + {} + ], + [ + 1, + "auto_DE_via-ferrata.de_bbr", + 0, + "^https?://(www\\.)?via-ferrata\\.de/", + 10, + [], + [ + { + "e": 1974 + } + ], + [ + { + "v": 1974 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1974 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1974 + } + ], + {} + ], + [ + 1, + "auto_DE_vivat.de_8dk", + 0, + "^https?://(www\\.)?vivat\\.de/", + 10, + [], + [ + { + "e": 2656 + } + ], + [ + { + "v": 2656 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2656 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2656 + } + ], + {} + ], + [ + 1, + "auto_DE_vivid.money_oxq", + 0, + "^https?://(www\\.)?vivid\\.money/", + 10, + [], + [ + { + "e": 1975 + } + ], + [ + { + "v": 1975 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1975 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1975 + } + ], + {} + ], + [ + 1, + "auto_DE_volksversand.de_y2a", + 0, + "^https?://(www\\.)?volksversand\\.de/", + 10, + [], + [ + { + "e": 1976 + } + ], + [ + { + "v": 1976 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1976 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1976 + } + ], + {} + ], + [ + 1, + "auto_DE_volkswagen-newsroom.com_ua6", + 0, + "^https?://(www\\.)?volkswagen-newsroom\\.com/", + 10, + [], + [ + { + "e": 1977 + } + ], + [ + { + "v": 1977 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1977 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1977 + } + ], + {} + ], + [ + 1, + "auto_DE_vrn.de_auw", + 0, + "^https?://(www\\.)?vrn\\.de/", + 10, + [], + [ + { + "e": 1978 + } + ], + [ + { + "v": 1978 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1978 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1978 + } + ], + {} + ], + [ + 1, + "auto_DE_vvs.de_op7", + 0, + "^https?://(www\\.)?vvs\\.de/", + 10, + [], + [ + { + "e": 1979 + } + ], + [ + { + "v": 1979 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1979 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1979 + } + ], + {} + ], + [ + 1, + "auto_DE_wangerooge.de_6sy", + 0, + "^https?://(www\\.)?wangerooge\\.de/", + 10, + [], + [ + { + "e": 1980 + } + ], + [ + { + "v": 1980 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1980 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1980 + } + ], + {} + ], + [ + 1, + "auto_DE_watch.plex.tv_esx", + 0, + "^https?://(www\\.)?watch\\.plex\\.tv/", + 10, + [], + [ + { + "e": 1981 + } + ], + [ + { + "v": 1981 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1981 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1981 + } + ], + {} + ], + [ + 1, + "auto_DE_we-online.com_si9", + 0, + "^https?://(www\\.)?we-online\\.com/", + 10, + [], + [ + { + "e": 1695 + } + ], + [ + { + "v": 1695 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1695 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1695 + } + ], + {} + ], + [ + 1, + "auto_DE_web.magentatv.de_3kv", + 0, + "^https?://(www\\.)?web\\.magentatv\\.de/", + 10, + [], + [ + { + "e": 1982 + } + ], + [ + { + "v": 1982 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1982 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1982 + } + ], + {} + ], + [ + 1, + "auto_DE_webmailer.hosteurope.de_kos", + 0, + "^https?://(www\\.)?webmailer\\.hosteurope\\.de/", + 10, + [], + [ + { + "e": 1983 + } + ], + [ + { + "v": 1983 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1983 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1983 + } + ], + {} + ], + [ + 1, + "auto_DE_weekday.com_jub", + 0, + "^https?://(www\\.)?weekday\\.com/", + 10, + [], + [ + { + "e": 2657 + } + ], + [ + { + "v": 2657 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2657 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2657 + } + ], + {} + ], + [ + 1, + "auto_DE_whisky.de_7ny", + 0, + "^https?://(www\\.)?whisky\\.de/", + 10, + [], + [ + { + "e": 1984 + } + ], + [ + { + "v": 1984 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1984 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1984 + } + ], + {} + ], + [ + 1, + "auto_DE_wien.gv.at_mm2", + 0, + "^https?://(www\\.)?wien\\.gv\\.at/", + 10, + [], + [ + { + "e": 2658 + } + ], + [ + { + "v": 2658 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2658 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2658 + } + ], + {} + ], + [ + 1, + "auto_DE_wilderkaiser.info_shg", + 0, + "^https?://(www\\.)?wilderkaiser\\.info/", + 10, + [], + [ + { + "e": 1985 + } + ], + [ + { + "v": 1985 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1985 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1985 + } + ], + {} + ], + [ + 1, + "auto_DE_windy.com_mzi", + 0, + "^https?://(www\\.)?windy\\.com/", + 10, + [], + [ + { + "e": 1986 + } + ], + [ + { + "v": 1986 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1986 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1986 + } + ], + {} + ], + [ + 1, + "auto_DE_wittich.de_jqw", + 0, + "^https?://(www\\.)?wittich\\.de/", + 10, + [], + [ + { + "e": 1987 + } + ], + [ + { + "v": 1987 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1987 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1987 + } + ], + {} + ], + [ + 1, + "auto_DE_wolt.com_jyq", + 0, + "^https?://(www\\.)?wolt\\.com/", + 10, + [], + [ + { + "e": 1988 + } + ], + [ + { + "v": 1988 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1988 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1988 + } + ], + {} + ], + [ + 1, + "auto_DE_wurzelwissen.de_3dk", + 0, + "^https?://(www\\.)?wurzelwissen\\.de/", + 10, + [], + [ + { + "e": 2659 + } + ], + [ + { + "v": 2659 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2659 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2659 + } + ], + {} + ], + [ + 1, + "auto_DE_www2.hm.com_beo", + 0, + "^https?://(www\\.)?www2\\.hm\\.com/", + 10, + [], + [ + { + "e": 2660 + } + ], + [ + { + "v": 2660 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2660 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2660 + } + ], + {} + ], + [ + 1, + "auto_DE_zoo-leipzig.de_yen", + 0, + "^https?://(www\\.)?zoo-leipzig\\.de/", + 10, + [], + [ + { + "e": 1990 + } + ], + [ + { + "v": 1990 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1990 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1990 + } + ], + {} + ], + [ + 1, + "auto_DE_zoopalast.premiumkino.de_kxl", + 0, + "^https?://(www\\.)?zoopalast\\.premiumkino\\.de/", + 10, + [], + [ + { + "e": 2661 + } + ], + [ + { + "v": 2661 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2661 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2661 + } + ], + {} + ], + [ + 1, + "auto_DE_zwp-online.info_j0b", + 0, + "^https?://(www\\.)?zwp-online\\.info/", + 10, + [], + [ + { + "e": 1991 + } + ], + [ + { + "v": 1991 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1991 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1991 + } + ], + {} + ], + [ + 1, + "auto_FR_10doigts.fr_ka7", + 0, + "^https?://(www\\.)?10doigts\\.fr/", + 10, + [], + [ + { + "e": 2662 + } + ], + [ + { + "v": 2662 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2662 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2662 + } + ], + {} + ], + [ + 1, + "auto_FR_3suisses.fr_d1o", + 0, + "^https?://(www\\.)?3suisses\\.fr/", + 10, + [], + [ + { + "e": 1992 + } + ], + [ + { + "v": 1992 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1992 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1992 + } + ], + {} + ], + [ + 1, + "auto_FR_accounts.snapchat.com_7ou", + 0, + "^https?://(www\\.)?accounts\\.snapchat\\.com/", + 10, + [], + [ + { + "e": 1993 + } + ], + [ + { + "v": 1993 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1993 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1993 + } + ], + {} + ], + [ + 1, + "auto_FR_acpr.banque-france.fr_n30_+11", + 0, + "^https?://(www\\.)?acpr\\.banque-france\\.fr/|^https?://(www\\.)?artistes-auteurs\\.urssaf\\.fr/|^https?://(www\\.)?autoentrepreneur\\.urssaf\\.fr/|^https?://(www\\.)?banque-france\\.fr/|^https?://(www\\.)?cea\\.urssaf\\.fr/|^https?://(www\\.)?cesu\\.urssaf\\.fr/|^https?://(www\\.)?letese\\.urssaf\\.fr/|^https?://(www\\.)?moncompte\\.permisdeconduire\\.gouv\\.fr/|^https?://(www\\.)?monespacesante\\.fr/|^https?://(www\\.)?pajemploi\\.urssaf\\.fr/|^https?://(www\\.)?urssaf\\.fr/|^https?://(www\\.)?urssaf\\.org/", + 10, + [], + [ + { + "e": 1839 + } + ], + [ + { + "v": 1839 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1839 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1839 + } + ], + {} + ], + [ + 1, + "auto_FR_actuneuf.com_fys_+8", + 0, + "^https?://(www\\.)?actuneuf\\.com/|^https?://(www\\.)?bbox-news\\.com/|^https?://(www\\.)?comparabanques\\.fr/|^https?://(www\\.)?eau\\.selectra\\.info/|^https?://(www\\.)?fournisseurs-electricite\\.com/|^https?://(www\\.)?goodassur\\.com/|^https?://(www\\.)?jechange\\.fr/|^https?://(www\\.)?kelwatt\\.fr/|^https?://(www\\.)?selectra\\.info/", + 10, + [], + [ + { + "e": 1553 + } + ], + [ + { + "v": 1553 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1553 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1553 + } + ], + {} + ], + [ + 1, + "auto_FR_actus.sfr.fr_nf7_+7", + 0, + "^https?://(www\\.)?actus\\.sfr\\.fr/|^https?://(www\\.)?assistance\\.red-by-sfr\\.fr/|^https?://(www\\.)?assistance\\.sfr\\.fr/|^https?://(www\\.)?communaute\\.red-by-sfr\\.fr/|^https?://(www\\.)?la-communaute\\.sfr\\.fr/|^https?://(www\\.)?red-by-sfr\\.fr/|^https?://(www\\.)?sfr\\.fr/|^https?://(www\\.)?tv\\.sfr\\.fr/", + 10, + [], + [ + { + "e": 1994 + } + ], + [ + { + "v": 1994 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1994 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1994 + } + ], + {} + ], + [ + 1, + "auto_FR_adopteunmec.com_xys", + 0, + "^https?://(www\\.)?adopte\\.app/", + 10, + [], + [ + { + "e": 1995 + } + ], + [ + { + "v": 1995 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1995 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1995 + } + ], + {} + ], + [ + 1, + "auto_FR_aefinfo.fr_6r7", + 0, + "^https?://(www\\.)?aefinfo\\.fr/", + 10, + [], + [ + { + "e": 2663 + } + ], + [ + { + "v": 2663 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2663 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2663 + } + ], + {} + ], + [ + 1, + "auto_FR_afdas.com_12y", + 0, + "^https?://(www\\.)?afdas\\.com/", + 10, + [], + [ + { + "e": 1996 + } + ], + [ + { + "v": 1996 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1996 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1996 + } + ], + {} + ], + [ + 1, + "auto_FR_afflelou.com_nzh", + 0, + "^https?://(www\\.)?afflelou\\.com/", + 10, + [], + [ + { + "e": 1997 + } + ], + [ + { + "v": 1997 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1997 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1997 + } + ], + {} + ], + [ + 1, + "auto_FR_ag2rlamondiale.fr_mk2", + 0, + "^https?://(www\\.)?ag2rlamondiale\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_agence.axa.fr_jzf_+1", + 0, + "^https?://(www\\.)?agence\\.axa\\.fr/|^https?://(www\\.)?axa\\.fr/", + 10, + [], + [ + { + "e": 1998 + } + ], + [ + { + "v": 1998 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1998 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1998 + } + ], + {} + ], + [ + 1, + "auto_FR_agence.maif.fr_0ad_+5", + 0, + "^https?://(www\\.)?agence\\.maif\\.fr/|^https?://(www\\.)?amv\\.fr/|^https?://(www\\.)?connect\\.maif\\.fr/|^https?://(www\\.)?maif\\.fr/|^https?://(www\\.)?musee-orangerie\\.fr/|^https?://(www\\.)?musee-orsay\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_agence.mma.fr_hj7_+7", + 0, + "^https?://(www\\.)?agence\\.mma\\.fr/|^https?://(www\\.)?drogues-info-service\\.fr/|^https?://(www\\.)?espace-client\\.mma\\.fr/|^https?://(www\\.)?gmf\\.fr/|^https?://(www\\.)?maaf\\.fr/|^https?://(www\\.)?mangerbouger\\.fr/|^https?://(www\\.)?questionsexualite\\.fr/|^https?://(www\\.)?vaccination-info-service\\.fr/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_alan.com_j5v", + 0, + "^https?://(www\\.)?alan\\.com/", + 10, + [], + [ + { + "e": 2972 + } + ], + [ + { + "v": 2972 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2972 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2972 + } + ], + {} + ], + [ + 1, + "auto_FR_alinea.com_d9k", + 0, + "^https?://(www\\.)?alinea\\.com/", + 10, + [], + [ + { + "e": 2000 + } + ], + [ + { + "v": 2000 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2000 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2000 + } + ], + {} + ], + [ + 1, + "auto_FR_alinea.com_gst", + 0, + "^https?://(www\\.)?alinea\\.com/", + 10, + [], + [ + { + "e": 2001 + } + ], + [ + { + "v": 2001 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2001 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2001 + } + ], + {} + ], + [ + 1, + "auto_FR_allelcoelec.fr_ufe", + 0, + "^https?://(www\\.)?allelcoelec\\.fr/", + 10, + [], + [ + { + "e": 2973 + } + ], + [ + { + "v": 2973 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2973 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2973 + } + ], + {} + ], + [ + 1, + "auto_FR_alpinstore.com_ray", + 0, + "^https?://(www\\.)?alpinstore\\.com/", + 10, + [], + [ + { + "e": 2974 + } + ], + [ + { + "v": 2974 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2974 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2974 + } + ], + {} + ], + [ + 1, + "auto_FR_alsace.eu_ors", + 0, + "^https?://(www\\.)?alsace\\.eu/", + 10, + [], + [ + { + "e": 2010 + } + ], + [ + { + "v": 2010 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2010 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2010 + } + ], + {} + ], + [ + 1, + "auto_FR_amundi-ee.com_gp7_+8", + 0, + "^https?://(www\\.)?amundi-ee\\.com/|^https?://(www\\.)?ca-els\\.com/|^https?://(www\\.)?ca-paris\\.com/|^https?://(www\\.)?cnp\\.fr/|^https?://(www\\.)?enligne\\.parionssport\\.fdj\\.fr/|^https?://(www\\.)?gemo\\.fr/|^https?://(www\\.)?lecomparateurassurance\\.com/|^https?://(www\\.)?lhotellerie-restauration\\.fr/|^https?://(www\\.)?pointdevente\\.parionssport\\.fdj\\.fr/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_FR_amundietf.fr_9lx", + 0, + "^https?://(www\\.)?amundietf\\.fr/", + 10, + [], + [ + { + "e": 2002 + } + ], + [ + { + "v": 2002 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2002 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2002 + } + ], + {} + ], + [ + 1, + "auto_FR_anah.gouv.fr_wmg", + 0, + "^https?://(www\\.)?anah\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2003 + } + ], + [ + { + "v": 2003 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2003 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2003 + } + ], + {} + ], + [ + 1, + "auto_FR_ancestry.fr_gpe", + 0, + "^https?://(www\\.)?ancestry\\.fr/", + 10, + [], + [ + { + "e": 794 + } + ], + [ + { + "v": 794 + } + ], + [ + { + "wait": 500 + }, + { + "c": 794 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 794 + } + ], + {} + ], + [ + 1, + "auto_FR_anil.org_8rt", + 0, + "^https?://(www\\.)?anil\\.org/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_FR_animyjob.com_fkq", + 0, + "^https?://(www\\.)?animyjob\\.com/", + 10, + [], + [ + { + "e": 2665 + } + ], + [ + { + "v": 2665 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2665 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2665 + } + ], + {} + ], + [ + 1, + "auto_FR_annuaire-inverse-france.com_4oi", + 0, + "^https?://(www\\.)?annuaire-inverse-france\\.com/", + 10, + [], + [ + { + "e": 2005 + } + ], + [ + { + "v": 2005 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2005 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2005 + } + ], + {} + ], + [ + 1, + "auto_FR_ants.gouv.fr_o3f_+3", + 0, + "^https?://(www\\.)?ants\\.gouv\\.fr/|^https?://(www\\.)?immatriculation\\.ants\\.gouv\\.fr/|^https?://(www\\.)?passeport\\.ants\\.gouv\\.fr/|^https?://(www\\.)?permisdeconduire\\.ants\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2666 + } + ], + [ + { + "v": 2666 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2666 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2666 + } + ], + {} + ], + [ + 1, + "auto_FR_architectes.org_5e1", + 0, + "^https?://(www\\.)?architectes\\.org/", + 10, + [], + [ + { + "e": 2007 + } + ], + [ + { + "v": 2007 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2007 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2007 + } + ], + {} + ], + [ + 1, + "auto_FR_archives18.fr_g98_+1", + 0, + "^https?://(www\\.)?archives18\\.fr/|^https?://(www\\.)?archives71\\.fr/", + 10, + [], + [ + { + "e": 2008 + } + ], + [ + { + "v": 2008 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2008 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2008 + } + ], + {} + ], + [ + 1, + "auto_FR_archivespasdecalais.fr_6zp", + 0, + "^https?://(www\\.)?archivespasdecalais\\.fr/", + 10, + [], + [ + { + "e": 2975 + } + ], + [ + { + "v": 2975 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2975 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2975 + } + ], + {} + ], + [ + 1, + "auto_FR_arkeaarena.com_zke", + 0, + "^https?://(www\\.)?arkeaarena\\.com/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_FR_arteradio.com_lj3", + 0, + "^https?://(www\\.)?arteradio\\.com/", + 10, + [], + [ + { + "e": 2667 + } + ], + [ + { + "v": 2667 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2667 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2667 + } + ], + {} + ], + [ + 1, + "auto_FR_arts-et-metiers.net_hnf", + 0, + "^https?://(www\\.)?arts-et-metiers\\.net/", + 10, + [], + [ + { + "e": 2976 + } + ], + [ + { + "v": 2976 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2976 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2976 + } + ], + {} + ], + [ + 1, + "auto_FR_asp.gouv.fr_ytt", + 0, + "^https?://(www\\.)?asp\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2977 + } + ], + [ + { + "v": 2977 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2977 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2977 + } + ], + {} + ], + [ + 1, + "auto_FR_astra-ai.fr_3fx", + 0, + "^https?://(www\\.)?astra-ai\\.fr/", + 10, + [], + [ + { + "e": 2978 + } + ], + [ + { + "v": 2978 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2978 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2978 + } + ], + {} + ], + [ + 1, + "auto_FR_atlasformen.fr_mbj", + 0, + "^https?://(www\\.)?atlasformen\\.fr/", + 10, + [], + [ + { + "e": 1757 + } + ], + [ + { + "v": 1757 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1757 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1757 + } + ], + {} + ], + [ + 1, + "auto_FR_auchantelecom.fr_z3n", + 0, + "^https?://(www\\.)?auchantelecom\\.fr/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_FR_backmarket.fr_4m8", + 0, + "^https?://(www\\.)?backmarket\\.fr/", + 10, + [], + [ + { + "e": 1947 + } + ], + [ + { + "v": 1947 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1947 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1947 + } + ], + {} + ], + [ + 1, + "auto_FR_badnet.fr_zat", + 0, + "^https?://(www\\.)?badnet\\.fr/", + 10, + [], + [ + { + "e": 2668 + } + ], + [ + { + "v": 2668 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2668 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2668 + } + ], + {} + ], + [ + 1, + "auto_FR_basket4ballers.com_gam", + 0, + "^https?://(www\\.)?basket4ballers\\.com/", + 10, + [], + [ + { + "e": 2669 + } + ], + [ + { + "v": 2669 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2669 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2669 + } + ], + {} + ], + [ + 1, + "auto_FR_bd-adultes.com_nn2", + 0, + "^https?://(www\\.)?bd-adultes\\.com/", + 10, + [], + [ + { + "e": 2979 + } + ], + [ + { + "v": 2979 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2979 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2979 + } + ], + {} + ], + [ + 1, + "auto_FR_bdbase.fr_5x3", + 0, + "^https?://(www\\.)?bdbase\\.fr/", + 10, + [], + [ + { + "e": 2011 + } + ], + [ + { + "v": 2011 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2011 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2011 + } + ], + {} + ], + [ + 1, + "auto_FR_becquet.fr_s4q", + 0, + "^https?://(www\\.)?becquet\\.fr/", + 10, + [], + [ + { + "e": 2012 + } + ], + [ + { + "v": 2012 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2012 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2012 + } + ], + {} + ], + [ + 1, + "auto_FR_befr.ebay.be_uxy", + 0, + "^https?://(www\\.)?befr\\.ebay\\.be/", + 10, + [], + [ + { + "e": 2013 + } + ], + [ + { + "v": 2013 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2013 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2013 + } + ], + {} + ], + [ + 1, + "auto_FR_befunky.com_mxw", + 0, + "^https?://(www\\.)?befunky\\.com/", + 10, + [], + [ + { + "e": 2670 + } + ], + [ + { + "v": 2670 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2670 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2670 + } + ], + {} + ], + [ + 1, + "auto_FR_berck.fr_hjj", + 0, + "^https?://(www\\.)?berck\\.fr/", + 10, + [], + [ + { + "e": 2014 + } + ], + [ + { + "v": 2014 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2014 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2014 + } + ], + {} + ], + [ + 1, + "auto_FR_bestwestern.fr_61d_+3", + 0, + "^https?://(www\\.)?bestwestern\\.fr/|^https?://(www\\.)?cancer\\.fr/|^https?://(www\\.)?lamarinerecrute\\.gouv\\.fr/|^https?://(www\\.)?securite-routiere\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2015 + } + ], + [ + { + "v": 2015 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2015 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2015 + } + ], + {} + ], + [ + 1, + "auto_FR_bhv.fr_9uo", + 0, + "^https?://(www\\.)?bhv\\.fr/", + 10, + [], + [ + { + "e": 2671 + } + ], + [ + { + "v": 2671 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2671 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2671 + } + ], + {} + ], + [ + 1, + "auto_FR_bibliotheques.paris.fr_p0r_+5", + 0, + "^https?://(www\\.)?bibliotheques\\.paris\\.fr/|^https?://(www\\.)?bm-grenoble\\.fr/|^https?://(www\\.)?bm-lille\\.fr/|^https?://(www\\.)?bm-reims\\.fr/|^https?://(www\\.)?documentation\\.insp\\.gouv\\.fr/|^https?://(www\\.)?mediatheques\\.strasbourg\\.eu/", + 10, + [], + [ + { + "e": 2016 + } + ], + [ + { + "v": 2016 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2016 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2016 + } + ], + {} + ], + [ + 1, + "auto_FR_bienmanger.com_qk0", + 0, + "^https?://(www\\.)?bienmanger\\.com/", + 10, + [], + [ + { + "e": 2017 + } + ], + [ + { + "v": 2017 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2017 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2017 + } + ], + {} + ], + [ + 1, + "auto_FR_bienvenue-a-la-ferme.com_ye4", + 0, + "^https?://(www\\.)?bienvenue-a-la-ferme\\.com/", + 10, + [], + [ + { + "e": 2018 + } + ], + [ + { + "v": 2018 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2018 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2018 + } + ], + {} + ], + [ + 1, + "auto_FR_bigmedia.bpifrance.fr_l2m_+6", + 0, + "^https?://(www\\.)?bigmedia\\.bpifrance\\.fr/|^https?://(www\\.)?bpifrance-creation\\.fr/|^https?://(www\\.)?bpifrance\\.fr/|^https?://(www\\.)?direct-assurance\\.fr/|^https?://(www\\.)?fiducial\\.fr/|^https?://(www\\.)?lcl\\.fr/|^https?://(www\\.)?maty\\.com/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_bimpli.com_w1e", + 0, + "^https?://(www\\.)?bimpli\\.com/", + 10, + [], + [ + { + "e": 2672 + } + ], + [ + { + "v": 2672 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2672 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2672 + } + ], + {} + ], + [ + 1, + "auto_FR_bipandgo.com_ocw", + 0, + "^https?://(www\\.)?bipandgo\\.com/", + 10, + [], + [ + { + "e": 2019 + } + ], + [ + { + "v": 2019 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2019 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2019 + } + ], + {} + ], + [ + 1, + "auto_FR_black-book-editions.fr_o1n", + 0, + "^https?://(www\\.)?black-book-editions\\.fr/", + 10, + [], + [ + { + "e": 2020 + } + ], + [ + { + "v": 2020 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2020 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2020 + } + ], + {} + ], + [ + 1, + "auto_FR_blog.piecesetpneus.com_p5p", + 0, + "^https?://(www\\.)?blog\\.piecesetpneus\\.com/", + 10, + [], + [ + { + "e": 2980 + } + ], + [ + { + "v": 2980 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2980 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2980 + } + ], + {} + ], + [ + 1, + "auto_FR_blogs.mediapart.fr_gaf", + 0, + "^https?://(www\\.)?blogs\\.mediapart\\.fr/", + 10, + [], + [ + { + "e": 2021 + } + ], + [ + { + "v": 2021 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2021 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2021 + } + ], + {} + ], + [ + 1, + "auto_FR_bobtv.fr_srj", + 0, + "^https?://(www\\.)?bobtv\\.fr/", + 10, + [], + [ + { + "e": 2981 + } + ], + [ + { + "v": 2981 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2981 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2981 + } + ], + {} + ], + [ + 1, + "auto_FR_bobvoyeur.com_qm5", + 0, + "^https?://(www\\.)?bobvoyeur\\.com/", + 10, + [], + [ + { + "e": 2982 + } + ], + [ + { + "v": 2982 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2982 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2982 + } + ], + {} + ], + [ + 1, + "auto_FR_bonoboplanet.com_1ty_+6", + 0, + "^https?://(www\\.)?bonoboplanet\\.com/|^https?://(www\\.)?breal\\.net/|^https?://(www\\.)?cache-cache\\.fr/|^https?://(www\\.)?caroll\\.com/|^https?://(www\\.)?lahalle\\.com/|^https?://(www\\.)?ulocation\\.com/|^https?://(www\\.)?vibs\\.com/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_bordet.fr_e0w_+1", + 0, + "^https?://(www\\.)?bordet\\.fr/|^https?://(www\\.)?motoculture-distri-piece\\.fr/", + 10, + [], + [ + { + "e": 2023 + } + ], + [ + { + "v": 2023 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2023 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2023 + } + ], + {} + ], + [ + 1, + "auto_FR_bourse.fortuneo.fr_y3l_+9", + 0, + "^https?://(www\\.)?bourse\\.fortuneo\\.fr/|^https?://(www\\.)?centres\\.norauto\\.fr/|^https?://(www\\.)?fortuneo\\.fr/|^https?://(www\\.)?generali\\.fr/|^https?://(www\\.)?mabanque\\.fortuneo\\.fr/|^https?://(www\\.)?midas\\.fr/|^https?://(www\\.)?monespace\\.generali\\.fr/|^https?://(www\\.)?norauto\\.fr/|^https?://(www\\.)?oney\\.fr/|^https?://(www\\.)?stores-discount\\.com/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_boutique-box-internet.fr_zr2_+1", + 0, + "^https?://(www\\.)?boutique-box-internet\\.fr/|^https?://(www\\.)?services-eau-france\\.fr/", + 10, + [], + [ + { + "e": 2024 + } + ], + [ + { + "v": 2024 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2024 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2024 + } + ], + {} + ], + [ + 1, + "auto_FR_boutique.arte.tv_ljx", + 0, + "^https?://(www\\.)?boutique\\.arte\\.tv/", + 10, + [], + [ + { + "e": 2025 + } + ], + [ + { + "v": 2025 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2025 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2025 + } + ], + {} + ], + [ + 1, + "auto_FR_bpi.fr_l52", + 0, + "^https?://(www\\.)?bpi\\.fr/", + 10, + [], + [ + { + "e": 1145 + } + ], + [ + { + "v": 1145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1145 + } + ], + {} + ], + [ + 1, + "auto_FR_bureau-vallee.fr_qmw", + 0, + "^https?://(www\\.)?bureau-vallee\\.fr/", + 10, + [], + [ + { + "e": 2026 + } + ], + [ + { + "v": 2026 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2026 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2026 + } + ], + {} + ], + [ + 1, + "auto_FR_cafeyn.co_k1r", + 0, + "^https?://(www\\.)?cafeyn\\.co/", + 10, + [], + [ + { + "e": 2983 + } + ], + [ + { + "v": 2983 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2983 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2983 + } + ], + {} + ], + [ + 1, + "auto_FR_camping-car-plus.com_0g7", + 0, + "^https?://(www\\.)?camping-car-plus\\.com/", + 10, + [], + [ + { + "e": 2028 + } + ], + [ + { + "v": 2028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2028 + } + ], + {} + ], + [ + 1, + "auto_FR_campingdirect.com_q1r", + 0, + "^https?://(www\\.)?campingdirect\\.com/", + 10, + [], + [ + { + "e": 2029 + } + ], + [ + { + "v": 2029 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2029 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2029 + } + ], + {} + ], + [ + 1, + "auto_FR_capfrance-vacances.com_oom", + 0, + "^https?://(www\\.)?capfrance-vacances\\.com/", + 10, + [], + [ + { + "e": 2030 + } + ], + [ + { + "v": 2030 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2030 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2030 + } + ], + {} + ], + [ + 1, + "auto_FR_carrelibertin.com_unm", + 0, + "^https?://(www\\.)?carrelibertin\\.com/", + 10, + [], + [ + { + "e": 2031 + } + ], + [ + { + "v": 2031 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2031 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2031 + } + ], + {} + ], + [ + 1, + "auto_FR_cartes-2-france.com_bgr", + 0, + "^https?://(www\\.)?cartes-2-france\\.com/", + 10, + [], + [ + { + "e": 2673 + } + ], + [ + { + "v": 2673 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2673 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2673 + } + ], + {} + ], + [ + 1, + "auto_FR_cartes.gouv.fr_a0d", + 0, + "^https?://(www\\.)?cartes\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2984 + } + ], + [ + { + "v": 2984 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2984 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2984 + } + ], + {} + ], + [ + 1, + "auto_FR_cdandlp.com_xyi", + 0, + "^https?://(www\\.)?cdandlp\\.com/", + 10, + [], + [ + { + "e": 2032 + } + ], + [ + { + "v": 2032 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2032 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2032 + } + ], + {} + ], + [ + 1, + "auto_FR_centrakor.com_sae", + 0, + "^https?://(www\\.)?centrakor\\.com/", + 10, + [], + [ + { + "e": 2033 + } + ], + [ + { + "v": 2033 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2033 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2033 + } + ], + {} + ], + [ + 1, + "auto_FR_cgb.fr_ar8", + 0, + "^https?://(www\\.)?cgb\\.fr/", + 10, + [], + [ + { + "e": 2034 + } + ], + [ + { + "v": 2034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2034 + } + ], + {} + ], + [ + 1, + "auto_FR_charles.co_spu", + 0, + "^https?://(www\\.)?charles\\.co/", + 10, + [], + [ + { + "e": 2674 + } + ], + [ + { + "v": 2674 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2674 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2674 + } + ], + {} + ], + [ + 1, + "auto_FR_charliehebdo.fr_smr", + 0, + "^https?://(www\\.)?charliehebdo\\.fr/", + 10, + [], + [ + { + "e": 2035 + } + ], + [ + { + "v": 2035 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2035 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2035 + } + ], + {} + ], + [ + 1, + "auto_FR_chausson.fr_e3b", + 0, + "^https?://(www\\.)?chausson\\.fr/", + 10, + [], + [ + { + "e": 2036 + } + ], + [ + { + "v": 2036 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2036 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2036 + } + ], + {} + ], + [ + 1, + "auto_FR_choisirleservicepublic.gouv.fr_l8v", + 0, + "^https?://(www\\.)?choisirleservicepublic\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2115 + } + ], + [ + { + "v": 2115 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2115 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2115 + } + ], + {} + ], + [ + 1, + "auto_FR_cic-epargnesalariale.fr_3n2", + 0, + "^https?://(www\\.)?cic-epargnesalariale\\.fr/", + 10, + [], + [ + { + "e": 2037 + } + ], + [ + { + "v": 2037 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2037 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2037 + } + ], + {} + ], + [ + 1, + "auto_FR_cic.fr_byg_+2", + 0, + "^https?://(www\\.)?cic\\.fr/|^https?://(www\\.)?cofidis\\.fr/|^https?://(www\\.)?monabanq\\.com/", + 10, + [], + [ + { + "e": 2038 + } + ], + [ + { + "v": 2038 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2038 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2038 + } + ], + {} + ], + [ + 1, + "auto_FR_cinepuls.com_0i1", + 0, + "^https?://(www\\.)?cinepuls\\.com/", + 10, + [], + [ + { + "e": 2675 + } + ], + [ + { + "v": 2675 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2675 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2675 + } + ], + {} + ], + [ + 1, + "auto_FR_cite-sciences.fr_kcx", + 0, + "^https?://(www\\.)?cite-sciences\\.fr/", + 10, + [], + [ + { + "e": 2039 + } + ], + [ + { + "v": 2039 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2039 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2039 + } + ], + {} + ], + [ + 1, + "auto_FR_clickdoc.fr_9qn", + 0, + "^https?://(www\\.)?clickdoc\\.fr/", + 10, + [], + [ + { + "e": 2676 + } + ], + [ + { + "v": 2676 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2676 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2676 + } + ], + {} + ], + [ + 1, + "auto_FR_client.floabank.fr_eec", + 0, + "^https?://(www\\.)?client\\.floabank\\.fr/", + 10, + [], + [ + { + "e": 2037 + } + ], + [ + { + "v": 2037 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2037 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2037 + } + ], + {} + ], + [ + 1, + "auto_FR_climate.selectra.com_mmh", + 0, + "^https?://(www\\.)?climate\\.selectra\\.com/", + 10, + [], + [ + { + "e": 1553 + } + ], + [ + { + "v": 1553 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1553 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1553 + } + ], + {} + ], + [ + 1, + "auto_FR_club.auto-doc.fr_out", + 0, + "^https?://(www\\.)?club\\.auto-doc\\.fr/", + 10, + [], + [ + { + "e": 2957 + } + ], + [ + { + "v": 2957 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2957 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2957 + } + ], + {} + ], + [ + 1, + "auto_FR_code.travail.gouv.fr_3wj", + 0, + "^https?://(www\\.)?code\\.travail\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2985 + } + ], + [ + { + "v": 2985 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2985 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2985 + } + ], + {} + ], + [ + 1, + "auto_FR_codingame.com_sld", + 0, + "^https?://(www\\.)?codingame\\.com/", + 10, + [], + [ + { + "e": 2677 + } + ], + [ + { + "v": 2677 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2677 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2677 + } + ], + {} + ], + [ + 1, + "auto_FR_coe.int_cfo", + 0, + "^https?://(www\\.)?coe\\.int/", + 10, + [], + [ + { + "e": 2041 + } + ], + [ + { + "v": 2041 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2041 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2041 + } + ], + {} + ], + [ + 1, + "auto_FR_commentcoder.com_hj0", + 0, + "^https?://(www\\.)?commentcoder\\.com/", + 10, + [], + [ + { + "e": 2042 + } + ], + [ + { + "v": 2042 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2042 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2042 + } + ], + {} + ], + [ + 1, + "auto_FR_cookpad.com_2t9", + 0, + "^https?://(www\\.)?cookpad\\.com/", + 10, + [], + [ + { + "e": 2043 + } + ], + [ + { + "v": 2043 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2043 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2043 + } + ], + {} + ], + [ + 1, + "auto_FR_corsica-ferries.fr_70m", + 0, + "^https?://(www\\.)?corsica-ferries\\.fr/", + 10, + [], + [ + { + "e": 2044 + } + ], + [ + { + "v": 2044 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2044 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2044 + } + ], + {} + ], + [ + 1, + "auto_FR_coutellerie-tourangelle.com_rcf", + 0, + "^https?://(www\\.)?coutellerie-tourangelle\\.com/", + 10, + [], + [ + { + "e": 2045 + } + ], + [ + { + "v": 2045 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2045 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2045 + } + ], + {} + ], + [ + 1, + "auto_FR_croisieurope.com_opy", + 0, + "^https?://(www\\.)?croisieurope\\.com/", + 10, + [], + [ + { + "e": 2046 + } + ], + [ + { + "v": 2046 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2046 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2046 + } + ], + {} + ], + [ + 1, + "auto_FR_cybermalveillance.gouv.fr_vp0", + 0, + "^https?://(www\\.)?cybermalveillance\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2047 + } + ], + [ + { + "v": 2047 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2047 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2047 + } + ], + {} + ], + [ + 1, + "auto_FR_cybevasion.fr_jjp", + 0, + "^https?://(www\\.)?cybevasion\\.fr/", + 10, + [], + [ + { + "e": 1446 + } + ], + [ + { + "v": 1446 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1446 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1446 + } + ], + {} + ], + [ + 1, + "auto_FR_cyclable.com_z3l", + 0, + "^https?://(www\\.)?cyclable\\.com/", + 10, + [], + [ + { + "e": 2048 + } + ], + [ + { + "v": 2048 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2048 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2048 + } + ], + {} + ], + [ + 1, + "auto_FR_dafy-moto.com_j3q", + 0, + "^https?://(www\\.)?dafy-moto\\.com/", + 10, + [], + [ + { + "e": 1614 + } + ], + [ + { + "v": 1614 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1614 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1614 + } + ], + {} + ], + [ + 1, + "auto_FR_daikin.fr_syh", + 0, + "^https?://(www\\.)?daikin\\.fr/", + 10, + [], + [ + { + "e": 2049 + } + ], + [ + { + "v": 2049 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2049 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2049 + } + ], + {} + ], + [ + 1, + "auto_FR_dbeaver.io_o0w", + 0, + "^https?://(www\\.)?dbeaver\\.io/", + 10, + [], + [ + { + "e": 2678 + } + ], + [ + { + "v": 2678 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2678 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2678 + } + ], + {} + ], + [ + 1, + "auto_FR_dekra-norisko.fr_ohe", + 0, + "^https?://(www\\.)?dekra-norisko\\.fr/", + 10, + [], + [ + { + "e": 2050 + } + ], + [ + { + "v": 2050 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2050 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2050 + } + ], + {} + ], + [ + 1, + "auto_FR_dext.com_633", + 0, + "^https?://(www\\.)?dext\\.com/", + 10, + [], + [ + { + "e": 1034 + } + ], + [ + { + "v": 1034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1034 + } + ], + {} + ], + [ + 1, + "auto_FR_diplomeo.com_lm5_+2", + 0, + "^https?://(www\\.)?diplomeo\\.com/|^https?://(www\\.)?hellowork\\.com/|^https?://(www\\.)?maformation\\.fr/", + 10, + [], + [ + { + "e": 2051 + } + ], + [ + { + "v": 2051 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2051 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2051 + } + ], + {} + ], + [ + 1, + "auto_FR_dlsite.com_poa", + 0, + "^https?://(www\\.)?dlsite\\.com/", + 10, + [], + [ + { + "e": 2052 + } + ], + [ + { + "v": 2052 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2052 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2052 + } + ], + {} + ], + [ + 1, + "auto_FR_doc.pcsoft.fr_s08_+1", + 0, + "^https?://(www\\.)?doc\\.pcsoft\\.fr/|^https?://(www\\.)?jedeclaremonmeuble\\.com/", + 10, + [], + [ + { + "e": 1996 + } + ], + [ + { + "v": 1996 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1996 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1996 + } + ], + {} + ], + [ + 1, + "auto_FR_dondesang.efs.sante.fr_20a", + 0, + "^https?://(www\\.)?dondesang\\.efs\\.sante\\.fr/", + 10, + [], + [ + { + "e": 2053 + } + ], + [ + { + "v": 2053 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2053 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2053 + } + ], + {} + ], + [ + 1, + "auto_FR_dossierfacile.logement.gouv.fr_bxr", + 0, + "^https?://(www\\.)?dossierfacile\\.logement\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2054 + } + ], + [ + { + "v": 2054 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2054 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2054 + } + ], + {} + ], + [ + 1, + "auto_FR_drouot.com_spq", + 0, + "^https?://(www\\.)?drouot\\.com/", + 10, + [], + [ + { + "e": 2986 + } + ], + [ + { + "v": 2986 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2986 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2986 + } + ], + {} + ], + [ + 1, + "auto_FR_eden.fftir.org_cfj", + 0, + "^https?://(www\\.)?eden\\.fftir\\.org/", + 10, + [], + [ + { + "e": 2055 + } + ], + [ + { + "v": 2055 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2055 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2055 + } + ], + {} + ], + [ + 1, + "auto_FR_edumoov.com_sij", + 0, + "^https?://(www\\.)?edumoov\\.com/", + 10, + [], + [ + { + "e": 2056 + } + ], + [ + { + "v": 2056 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2056 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2056 + } + ], + {} + ], + [ + 1, + "auto_FR_efts.univ-tlse2.fr_1cw_+1", + 0, + "^https?://(www\\.)?efts\\.univ-tlse2\\.fr/|^https?://(www\\.)?univ-tlse2\\.fr/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_FR_elsevier.com_u76", + 0, + "^https?://(www\\.)?elsevier\\.com/", + 10, + [], + [ + { + "e": 2679 + } + ], + [ + { + "v": 2679 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2679 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2679 + } + ], + {} + ], + [ + 1, + "auto_FR_enedis.fr_4cj_+1", + 0, + "^https?://(www\\.)?enedis\\.fr/|^https?://(www\\.)?mon-compte\\.enedis\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_engie-homeservices.fr_lyo", + 0, + "^https?://(www\\.)?engie-homeservices\\.fr/", + 10, + [], + [ + { + "e": 2057 + } + ], + [ + { + "v": 2057 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2057 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2057 + } + ], + {} + ], + [ + 1, + "auto_FR_eniplenitude.fr_pd2", + 0, + "^https?://(www\\.)?eniplenitude\\.fr/", + 10, + [], + [ + { + "e": 2058 + } + ], + [ + { + "v": 2058 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2058 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2058 + } + ], + {} + ], + [ + 1, + "auto_FR_ent.univ-lemans.fr_v3f_+2", + 0, + "^https?://(www\\.)?ent\\.univ-lemans\\.fr/|^https?://(www\\.)?univ-angers\\.fr/|^https?://(www\\.)?univ-st-etienne\\.fr/", + 10, + [], + [ + { + "e": 2713 + } + ], + [ + { + "v": 2713 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2713 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2713 + } + ], + {} + ], + [ + 1, + "auto_FR_es.fr_uwu_+1", + 0, + "^https?://(www\\.)?es\\.fr/|^https?://(www\\.)?particuliers\\.es\\.fr/", + 10, + [], + [ + { + "e": 2059 + } + ], + [ + { + "v": 2059 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2059 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2059 + } + ], + {} + ], + [ + 1, + "auto_FR_es.xhamster.com_f69", + 0, + "^https?://(www\\.)?es\\.xhamster\\.com/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_FR_eshop.wurth.fr_36o", + 0, + "^https?://(www\\.)?eshop\\.wurth\\.fr/", + 10, + [], + [ + { + "e": 2060 + } + ], + [ + { + "v": 2060 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2060 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2060 + } + ], + {} + ], + [ + 1, + "auto_FR_espace-aubade.fr_ymr", + 0, + "^https?://(www\\.)?espace-aubade\\.fr/", + 10, + [], + [ + { + "e": 2061 + } + ], + [ + { + "v": 2061 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2061 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2061 + } + ], + {} + ], + [ + 1, + "auto_FR_etrangers-en-france.interieur.gouv.fr_23g", + 0, + "^https?://(www\\.)?etrangers-en-france\\.interieur\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2987 + } + ], + [ + { + "v": 2987 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2987 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2987 + } + ], + {} + ], + [ + 1, + "auto_FR_euro-expos.com_tok", + 0, + "^https?://(www\\.)?euro-expos\\.com/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_FR_excel-downloads.com_mhe", + 0, + "^https?://(www\\.)?excel-downloads\\.com/", + 10, + [], + [ + { + "e": 1081 + } + ], + [ + { + "v": 1081 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1081 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1081 + } + ], + {} + ], + [ + 1, + "auto_FR_expertimpots.com_7vv", + 0, + "^https?://(www\\.)?expertimpots\\.com/", + 10, + [], + [ + { + "e": 2062 + } + ], + [ + { + "v": 2062 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2062 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2062 + } + ], + {} + ], + [ + 1, + "auto_FR_ezviz.com_pxv", + 0, + "^https?://(www\\.)?ezviz\\.com/", + 10, + [], + [ + { + "e": 2063 + } + ], + [ + { + "v": 2063 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2063 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2063 + } + ], + {} + ], + [ + 1, + "auto_FR_fishipedia.fr_fum", + 0, + "^https?://(www\\.)?fishipedia\\.fr/", + 10, + [], + [ + { + "e": 2065 + } + ], + [ + { + "v": 2065 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2065 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2065 + } + ], + {} + ], + [ + 1, + "auto_FR_ford.fr_omw", + 0, + "^https?://(www\\.)?ford\\.fr/", + 10, + [], + [ + { + "e": 2227 + } + ], + [ + { + "v": 2227 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2227 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2227 + } + ], + {} + ], + [ + 1, + "auto_FR_forum.somfy.fr_g76_+1", + 0, + "^https?://(www\\.)?forum\\.somfy\\.fr/|^https?://(www\\.)?somfy\\.fr/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_forums.autodesk.com_v6s", + 0, + "^https?://(www\\.)?forums\\.autodesk\\.com/", + 10, + [], + [ + { + "e": 2066 + } + ], + [ + { + "v": 2066 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2066 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2066 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.accio.com_zdn", + 0, + "^https?://(www\\.)?fr\\.accio\\.com/", + 10, + [], + [ + { + "e": 2937 + } + ], + [ + { + "v": 2937 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2937 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2937 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.artprice.com_bx2", + 0, + "^https?://(www\\.)?fr\\.artprice\\.com/", + 10, + [], + [ + { + "e": 1798 + } + ], + [ + { + "v": 1798 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1798 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1798 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.bazarchic.com_06k", + 0, + "^https?://(www\\.)?fr\\.bazarchic\\.com/", + 10, + [], + [ + { + "e": 2067 + } + ], + [ + { + "v": 2067 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2067 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2067 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.bongacams.com_76f", + 0, + "^https?://(www\\.)?fr\\.bongacams\\.com/", + 10, + [], + [ + { + "e": 2988 + } + ], + [ + { + "v": 2988 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2988 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2988 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.primor.eu_2vn", + 0, + "^https?://(www\\.)?fr\\.primor\\.eu/", + 10, + [], + [ + { + "e": 2989 + } + ], + [ + { + "v": 2989 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2989 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2989 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.redtube.com_8p9", + 0, + "^https?://(www\\.)?fr\\.redtube\\.com/", + 10, + [], + [ + { + "e": 2990 + } + ], + [ + { + "v": 2990 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2990 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2990 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.ryobitools.eu_dal", + 0, + "^https?://(www\\.)?fr\\.ryobitools\\.eu/", + 10, + [], + [ + { + "e": 2068 + } + ], + [ + { + "v": 2068 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2068 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2068 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.spankbang.com_g9k_+1", + 0, + "^https?://(www\\.)?fr\\.spankbang\\.com/|^https?://(www\\.)?spankbang\\.com/", + 10, + [], + [ + { + "e": 2681 + } + ], + [ + { + "v": 2681 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2681 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2681 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.tommy.com_bms", + 0, + "^https?://(www\\.)?fr\\.tommy\\.com/", + 10, + [], + [ + { + "e": 1444 + } + ], + [ + { + "v": 1444 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1444 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1444 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.trip.com_9fb", + 0, + "^https?://(www\\.)?fr\\.trip\\.com/", + 10, + [], + [ + { + "e": 1800 + } + ], + [ + { + "v": 1800 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1800 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1800 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.wikiloc.com_f0s", + 0, + "^https?://(www\\.)?fr\\.wikiloc\\.com/", + 10, + [], + [ + { + "e": 2069 + } + ], + [ + { + "v": 2069 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2069 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2069 + } + ], + {} + ], + [ + 1, + "auto_FR_fr.xgimi.com_fzb_+1", + 0, + "^https?://(www\\.)?fr\\.xgimi\\.com/|^https?://(www\\.)?leminor\\.fr/", + 10, + [], + [ + { + "e": 1764 + } + ], + [ + { + "v": 1764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1764 + } + ], + {} + ], + [ + 1, + "auto_FR_fra.xhamster.com_zaa", + 0, + "^https?://(www\\.)?fra\\.xhamster\\.com/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_FR_france-renov.gouv.fr_n05", + 0, + "^https?://(www\\.)?france-renov\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2682 + } + ], + [ + { + "v": 2682 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2682 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2682 + } + ], + {} + ], + [ + 1, + "auto_FR_francecasse.fr_jcl", + 0, + "^https?://(www\\.)?francecasse\\.fr/", + 10, + [], + [ + { + "e": 2070 + } + ], + [ + { + "v": 2070 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2070 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2070 + } + ], + {} + ], + [ + 1, + "auto_FR_gameboost.com_w31", + 0, + "^https?://(www\\.)?gameboost\\.com/", + 10, + [], + [ + { + "e": 2683 + } + ], + [ + { + "v": 2683 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2683 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2683 + } + ], + {} + ], + [ + 1, + "auto_FR_gazette-drouot.com_pba", + 0, + "^https?://(www\\.)?gazette-drouot\\.com/", + 10, + [], + [ + { + "e": 2071 + } + ], + [ + { + "v": 2071 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2071 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2071 + } + ], + {} + ], + [ + 1, + "auto_FR_gear4music.fr_me3", + 0, + "^https?://(www\\.)?gear4music\\.fr/", + 10, + [], + [ + { + "e": 1606 + } + ], + [ + { + "v": 1606 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1606 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1606 + } + ], + {} + ], + [ + 1, + "auto_FR_gibert.com_sw8", + 0, + "^https?://(www\\.)?gibert\\.com/", + 10, + [], + [ + { + "e": 2174 + } + ], + [ + { + "v": 2174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2174 + } + ], + {} + ], + [ + 1, + "auto_FR_giphar.fr_h5h", + 0, + "^https?://(www\\.)?giphar\\.fr/", + 10, + [], + [ + { + "e": 2072 + } + ], + [ + { + "v": 2072 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2072 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2072 + } + ], + {} + ], + [ + 1, + "auto_FR_glamuse.com_n32", + 0, + "^https?://(www\\.)?glamuse\\.com/", + 10, + [], + [ + { + "e": 2073 + } + ], + [ + { + "v": 2073 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2073 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2073 + } + ], + {} + ], + [ + 1, + "auto_FR_gotronic.fr_yoy", + 0, + "^https?://(www\\.)?gotronic\\.fr/", + 10, + [], + [ + { + "e": 2074 + } + ], + [ + { + "v": 2074 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2074 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2074 + } + ], + {} + ], + [ + 1, + "auto_FR_gov.br_n2f", + 0, + "^https?://(www\\.)?gov\\.br/", + 10, + [], + [ + { + "e": 2075 + } + ], + [ + { + "v": 2075 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2075 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2075 + } + ], + {} + ], + [ + 1, + "auto_FR_greengo.voyage_fg3", + 0, + "^https?://(www\\.)?greengo\\.voyage/", + 10, + [], + [ + { + "e": 2684 + } + ], + [ + { + "v": 2684 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2684 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2684 + } + ], + {} + ], + [ + 1, + "auto_FR_greenpeace.fr_fbh", + 0, + "^https?://(www\\.)?greenpeace\\.fr/", + 10, + [], + [ + { + "e": 2077 + } + ], + [ + { + "v": 2077 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2077 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2077 + } + ], + {} + ], + [ + 1, + "auto_FR_guide-du-paysbasque.com_7ka_+1", + 0, + "^https?://(www\\.)?guide-du-paysbasque\\.com/|^https?://(www\\.)?guide-du-perigord\\.com/", + 10, + [], + [ + { + "e": 2078 + } + ], + [ + { + "v": 2078 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2078 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2078 + } + ], + {} + ], + [ + 1, + "auto_FR_gymglish.com_c5q", + 0, + "^https?://(www\\.)?gymglish\\.com/", + 10, + [], + [ + { + "e": 2685 + } + ], + [ + { + "v": 2685 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2685 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2685 + } + ], + {} + ], + [ + 1, + "auto_FR_habitatpresto.com_l3l", + 0, + "^https?://(www\\.)?habitatpresto\\.com/", + 10, + [], + [ + { + "e": 2686 + } + ], + [ + { + "v": 2686 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2686 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2686 + } + ], + {} + ], + [ + 1, + "auto_FR_haproxy.com_arh", + 0, + "^https?://(www\\.)?haproxy\\.com/", + 10, + [], + [ + { + "e": 2687 + } + ], + [ + { + "v": 2687 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2687 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2687 + } + ], + {} + ], + [ + 1, + "auto_FR_hellowatt.fr_xkd", + 0, + "^https?://(www\\.)?hellowatt\\.fr/", + 10, + [], + [ + { + "e": 2688 + } + ], + [ + { + "v": 2688 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2688 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2688 + } + ], + {} + ], + [ + 1, + "auto_FR_homecinesolutions.fr_k6p", + 0, + "^https?://(www\\.)?homecinesolutions\\.fr/", + 10, + [], + [ + { + "e": 2689 + } + ], + [ + { + "v": 2689 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2689 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2689 + } + ], + {} + ], + [ + 1, + "auto_FR_hyperice.com_sld", + 0, + "^https?://(www\\.)?hyperice\\.com/", + 10, + [], + [ + { + "e": 2891 + } + ], + [ + { + "v": 2891 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2891 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2891 + } + ], + {} + ], + [ + 1, + "auto_FR_iadfrance.fr_4pk", + 0, + "^https?://(www\\.)?iadfrance\\.fr/", + 10, + [], + [ + { + "e": 2080 + } + ], + [ + { + "v": 2080 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2080 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2080 + } + ], + {} + ], + [ + 1, + "auto_FR_imagesdefense.gouv.fr_yie", + 0, + "^https?://(www\\.)?imagesdefense\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2690 + } + ], + [ + { + "v": 2690 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2690 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2690 + } + ], + {} + ], + [ + 1, + "auto_FR_immersion-facile.beta.gouv.fr_bl5", + 0, + "^https?://(www\\.)?immersion-facile\\.beta\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2991 + } + ], + [ + { + "v": 2991 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2991 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2991 + } + ], + {} + ], + [ + 1, + "auto_FR_infomalade.fr_d1i", + 0, + "^https?://(www\\.)?infomalade\\.fr/", + 10, + [], + [ + { + "e": 2082 + } + ], + [ + { + "v": 2082 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2082 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2082 + } + ], + {} + ], + [ + 1, + "auto_FR_ita.xhamster.com_jhk", + 0, + "^https?://(www\\.)?ita\\.xhamster\\.com/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_FR_jonak.fr_kyn", + 0, + "^https?://(www\\.)?jonak\\.fr/", + 10, + [], + [ + { + "e": 2691 + } + ], + [ + { + "v": 2691 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2691 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2691 + } + ], + {} + ], + [ + 1, + "auto_FR_journaux.fr_ppo", + 0, + "^https?://(www\\.)?journaux\\.fr/", + 10, + [], + [ + { + "e": 2083 + } + ], + [ + { + "v": 2083 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2083 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2083 + } + ], + {} + ], + [ + 1, + "auto_FR_jow.fr_bwl", + 0, + "^https?://(www\\.)?jow\\.fr/", + 10, + [], + [ + { + "e": 2084 + } + ], + [ + { + "v": 2084 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2084 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2084 + } + ], + {} + ], + [ + 1, + "auto_FR_julieandrieu.com_amk", + 0, + "^https?://(www\\.)?julieandrieu\\.com/", + 10, + [], + [ + { + "e": 2085 + } + ], + [ + { + "v": 2085 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2085 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2085 + } + ], + {} + ], + [ + 1, + "auto_FR_kawasaki.fr_bsm", + 0, + "^https?://(www\\.)?kawasaki\\.fr/", + 10, + [], + [ + { + "e": 2086 + } + ], + [ + { + "v": 2086 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2086 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2086 + } + ], + {} + ], + [ + 1, + "auto_FR_kiabi.com_3h2", + 0, + "^https?://(www\\.)?kiabi\\.com/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_FR_knowunity.fr_p1w", + 0, + "^https?://(www\\.)?knowunity\\.fr/", + 10, + [], + [ + { + "e": 2467 + } + ], + [ + { + "v": 2467 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2467 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2467 + } + ], + {} + ], + [ + 1, + "auto_FR_kobo.com_ajz", + 0, + "^https?://(www\\.)?kobo\\.com/", + 10, + [], + [ + { + "e": 2087 + } + ], + [ + { + "v": 2087 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2087 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2087 + } + ], + {} + ], + [ + 1, + "auto_FR_krys.com_9mr", + 0, + "^https?://(www\\.)?krys\\.com/", + 10, + [], + [ + { + "e": 2088 + } + ], + [ + { + "v": 2088 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2088 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2088 + } + ], + {} + ], + [ + 1, + "auto_FR_labaule-guerande.com_rof", + 0, + "^https?://(www\\.)?labaule-guerande\\.com/", + 10, + [], + [ + { + "e": 2089 + } + ], + [ + { + "v": 2089 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2089 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2089 + } + ], + {} + ], + [ + 1, + "auto_FR_labresse.labellemontagne.com_ahj", + 0, + "^https?://(www\\.)?labresse\\.labellemontagne\\.com/", + 10, + [], + [ + { + "e": 2992 + } + ], + [ + { + "v": 2992 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2992 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2992 + } + ], + {} + ], + [ + 1, + "auto_FR_lacompagniedublanc.com_7e9", + 0, + "^https?://(www\\.)?lacompagniedublanc\\.com/", + 10, + [], + [ + { + "e": 2090 + } + ], + [ + { + "v": 2090 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2090 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2090 + } + ], + {} + ], + [ + 1, + "auto_FR_lalettre.fr_yqo", + 0, + "^https?://(www\\.)?lalettre\\.fr/", + 10, + [], + [ + { + "e": 2091 + } + ], + [ + { + "v": 2091 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2091 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2091 + } + ], + {} + ], + [ + 1, + "auto_FR_lalibrairie.com_0lt", + 0, + "^https?://(www\\.)?lalibrairie\\.com/", + 10, + [], + [ + { + "e": 2092 + } + ], + [ + { + "v": 2092 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2092 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2092 + } + ], + {} + ], + [ + 1, + "auto_FR_lalilo.com_6t5", + 0, + "^https?://(www\\.)?lalilo\\.com/", + 10, + [], + [ + { + "e": 2693 + } + ], + [ + { + "v": 2693 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2693 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2693 + } + ], + {} + ], + [ + 1, + "auto_FR_lamutuellegenerale.fr_5hi", + 0, + "^https?://(www\\.)?lamutuellegenerale\\.fr/", + 10, + [], + [ + { + "e": 2015 + } + ], + [ + { + "v": 2015 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2015 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2015 + } + ], + {} + ], + [ + 1, + "auto_FR_laplateforme.com_187", + 0, + "^https?://(www\\.)?laplateforme\\.com/", + 10, + [], + [ + { + "e": 2093 + } + ], + [ + { + "v": 2093 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2093 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2093 + } + ], + {} + ], + [ + 1, + "auto_FR_lcp.fr_hwl", + 0, + "^https?://(www\\.)?lcp\\.fr/", + 10, + [], + [ + { + "e": 2094 + } + ], + [ + { + "v": 2094 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2094 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2094 + } + ], + {} + ], + [ + 1, + "auto_FR_leclercvoyages.com_2o4", + 0, + "^https?://(www\\.)?leclercvoyages\\.com/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_leggett-immo.com_xp8_+3", + 0, + "^https?://(www\\.)?leggett-immo\\.com/|^https?://(www\\.)?monlyceenumerique\\.fr/|^https?://(www\\.)?prendre-mon-rdv\\.com/|^https?://(www\\.)?profilculture\\.com/", + 10, + [], + [ + { + "e": 1331 + } + ], + [ + { + "v": 1331 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1331 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1331 + } + ], + {} + ], + [ + 1, + "auto_FR_legrand.fr_1t3", + 0, + "^https?://(www\\.)?legrand\\.fr/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_lelynx.fr_tmk_+1", + 0, + "^https?://(www\\.)?lelynx\\.fr/|^https?://(www\\.)?particuliers\\.sg\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_lemalefrancais.com_ndk", + 0, + "^https?://(www\\.)?lemalefrancais\\.com/", + 10, + [], + [ + { + "e": 1636 + } + ], + [ + { + "v": 1636 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1636 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1636 + } + ], + {} + ], + [ + 1, + "auto_FR_lesprosdelapetiteenfance.fr_bng", + 0, + "^https?://(www\\.)?lesprosdelapetiteenfance\\.fr/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_FR_lexbase.fr_5to", + 0, + "^https?://(www\\.)?lexbase\\.fr/", + 10, + [], + [ + { + "e": 2095 + } + ], + [ + { + "v": 2095 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2095 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2095 + } + ], + {} + ], + [ + 1, + "auto_FR_libertic.com_yv2", + 0, + "^https?://(www\\.)?libertic\\.com/", + 10, + [], + [ + { + "e": 2096 + } + ], + [ + { + "v": 2096 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2096 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2096 + } + ], + {} + ], + [ + 1, + "auto_FR_lille.fr_fq2", + 0, + "^https?://(www\\.)?lille\\.fr/", + 10, + [], + [ + { + "e": 2097 + } + ], + [ + { + "v": 2097 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2097 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2097 + } + ], + {} + ], + [ + 1, + "auto_FR_livementor.com_x24", + 0, + "^https?://(www\\.)?livementor\\.com/", + 10, + [], + [ + { + "e": 1150 + } + ], + [ + { + "v": 1150 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1150 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1150 + } + ], + {} + ], + [ + 1, + "auto_FR_loire-atlantique.fr_mp3", + 0, + "^https?://(www\\.)?loire-atlantique\\.fr/", + 10, + [], + [ + { + "e": 2694 + } + ], + [ + { + "v": 2694 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2694 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2694 + } + ], + {} + ], + [ + 1, + "auto_FR_ludum.fr_gl5_+2", + 0, + "^https?://(www\\.)?ludum\\.fr/|^https?://(www\\.)?passion-radio\\.fr/|^https?://(www\\.)?universpharmacie\\.fr/", + 10, + [], + [ + { + "e": 2098 + } + ], + [ + { + "v": 2098 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2098 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2098 + } + ], + {} + ], + [ + 1, + "auto_FR_luvvoice.com_uqy", + 0, + "^https?://(www\\.)?luvvoice\\.com/", + 10, + [], + [ + { + "e": 2695 + } + ], + [ + { + "v": 2695 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2695 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2695 + } + ], + {} + ], + [ + 1, + "auto_FR_maboussoleaidants.fr_f8f", + 0, + "^https?://(www\\.)?maboussoleaidants\\.fr/", + 10, + [], + [ + { + "e": 2993 + } + ], + [ + { + "v": 2993 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2993 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2993 + } + ], + {} + ], + [ + 1, + "auto_FR_macway.com_kif", + 0, + "^https?://(www\\.)?macway\\.com/", + 10, + [], + [ + { + "e": 2099 + } + ], + [ + { + "v": 2099 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2099 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2099 + } + ], + {} + ], + [ + 1, + "auto_FR_magellan-bio.fr_5xr", + 0, + "^https?://(www\\.)?magellan-bio\\.fr/", + 10, + [], + [ + { + "e": 2100 + } + ], + [ + { + "v": 2100 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2100 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2100 + } + ], + {} + ], + [ + 1, + "auto_FR_mail.ovh.net_m0u", + 0, + "^https?://(www\\.)?ovhcloud\\.com/", + 10, + [], + [ + { + "e": 2101 + } + ], + [ + { + "v": 2101 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2101 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2101 + } + ], + {} + ], + [ + 1, + "auto_FR_manuels.solutions_3gb_+2", + 0, + "^https?://(www\\.)?manuels\\.solutions/|^https?://(www\\.)?stereonet\\.com/|^https?://(www\\.)?wikidiff\\.com/", + 10, + [], + [ + { + "e": 2102 + } + ], + [ + { + "v": 2102 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2102 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2102 + } + ], + {} + ], + [ + 1, + "auto_FR_manuscry.com_x08", + 0, + "^https?://(www\\.)?manuscry\\.com/", + 10, + [], + [ + { + "e": 2994 + } + ], + [ + { + "v": 2994 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2994 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2994 + } + ], + {} + ], + [ + 1, + "auto_FR_marseille.aeroport.fr_8ul", + 0, + "^https?://(www\\.)?marseille\\.aeroport\\.fr/", + 10, + [], + [ + { + "e": 2103 + } + ], + [ + { + "v": 2103 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2103 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2103 + } + ], + {} + ], + [ + 1, + "auto_FR_materiel.net_21q", + 0, + "^https?://(www\\.)?materiel\\.net/", + 10, + [], + [ + { + "e": 2104 + } + ], + [ + { + "v": 2104 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2104 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2104 + } + ], + {} + ], + [ + 1, + "auto_FR_mawaqit.net_0cw", + 0, + "^https?://(www\\.)?mawaqit\\.net/", + 10, + [], + [ + { + "e": 2105 + } + ], + [ + { + "v": 2105 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2105 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2105 + } + ], + {} + ], + [ + 1, + "auto_FR_maxicoffee.com_1jg", + 0, + "^https?://(www\\.)?maxicoffee\\.com/", + 10, + [], + [ + { + "e": 2106 + } + ], + [ + { + "v": 2106 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2106 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2106 + } + ], + {} + ], + [ + 1, + "auto_FR_meformerenregion.fr_64b", + 0, + "^https?://(www\\.)?meformerenregion\\.fr/", + 10, + [], + [ + { + "e": 2696 + } + ], + [ + { + "v": 2696 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2696 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2696 + } + ], + {} + ], + [ + 1, + "auto_FR_mega.nz_cqw", + 0, + "^https?://(www\\.)?mega\\.io/", + 10, + [], + [ + { + "e": 2107 + } + ], + [ + { + "v": 2107 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2107 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2107 + } + ], + {} + ], + [ + 1, + "auto_FR_meilleurduchef.com_pud", + 0, + "^https?://(www\\.)?meilleurduchef\\.com/", + 10, + [], + [ + { + "e": 2108 + } + ], + [ + { + "v": 2108 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2108 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2108 + } + ], + {} + ], + [ + 1, + "auto_FR_meilleurtaux.com_dbp_+1", + 0, + "^https?://(www\\.)?meilleurtaux\\.com/|^https?://(www\\.)?placement\\.meilleurtaux\\.com/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_FR_mesdepanneurs.fr_2ch", + 0, + "^https?://(www\\.)?mesdepanneurs\\.fr/", + 10, + [], + [ + { + "e": 2109 + } + ], + [ + { + "v": 2109 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2109 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2109 + } + ], + {} + ], + [ + 1, + "auto_FR_mesinfos.fr_gt2", + 0, + "^https?://(www\\.)?mesinfos\\.fr/", + 10, + [], + [ + { + "e": 2110 + } + ], + [ + { + "v": 2110 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2110 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2110 + } + ], + {} + ], + [ + 1, + "auto_FR_meteo.tf1.fr_v6y", + 0, + "^https?://(www\\.)?meteo\\.tf1\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_metro.fr_dr5", + 0, + "^https?://(www\\.)?metro\\.fr/", + 10, + [], + [ + { + "e": 2111 + } + ], + [ + { + "v": 2111 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2111 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2111 + } + ], + {} + ], + [ + 1, + "auto_FR_meubles.fr_nnc", + 0, + "^https?://(www\\.)?meubles\\.fr/", + 10, + [], + [ + { + "e": 1665 + } + ], + [ + { + "v": 1665 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1665 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1665 + } + ], + {} + ], + [ + 1, + "auto_FR_mgen.fr_js5", + 0, + "^https?://(www\\.)?mgen\\.fr/", + 10, + [], + [ + { + "e": 2697 + } + ], + [ + { + "v": 2697 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2697 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2697 + } + ], + {} + ], + [ + 1, + "auto_FR_mgmotor.fr_ijc", + 0, + "^https?://(www\\.)?mgmotor\\.fr/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_FR_mgp.fr_rh9", + 0, + "^https?://(www\\.)?mgp\\.fr/", + 10, + [], + [ + { + "e": 2698 + } + ], + [ + { + "v": 2698 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2698 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2698 + } + ], + {} + ], + [ + 1, + "auto_FR_millemercismariage.com_3fi", + 0, + "^https?://(www\\.)?millemercismariage\\.com/", + 10, + [], + [ + { + "e": 2112 + } + ], + [ + { + "v": 2112 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2112 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2112 + } + ], + {} + ], + [ + 1, + "auto_FR_millon.com_fn6", + 0, + "^https?://(www\\.)?millon\\.com/", + 10, + [], + [ + { + "e": 2699 + } + ], + [ + { + "v": 2699 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2699 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2699 + } + ], + {} + ], + [ + 1, + "auto_FR_momondo.fr_1bc", + 0, + "^https?://(www\\.)?momondo\\.fr/", + 10, + [], + [ + { + "e": 1642 + } + ], + [ + { + "v": 1642 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1642 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1642 + } + ], + {} + ], + [ + 1, + "auto_FR_mon-camping-car.com_uyj", + 0, + "^https?://(www\\.)?mon-camping-car\\.com/", + 10, + [], + [ + { + "e": 2700 + } + ], + [ + { + "v": 2700 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2700 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2700 + } + ], + {} + ], + [ + 1, + "auto_FR_moncompte.ants.gouv.fr_csk", + 0, + "^https?://(www\\.)?moncompte\\.ants\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2113 + } + ], + [ + { + "v": 2113 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2113 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2113 + } + ], + {} + ], + [ + 1, + "auto_FR_monnaiedeparis.fr_3wo", + 0, + "^https?://(www\\.)?monnaiedeparis\\.fr/", + 10, + [], + [ + { + "e": 2114 + } + ], + [ + { + "v": 2114 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2114 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2114 + } + ], + {} + ], + [ + 1, + "auto_FR_monprojet.anah.gouv.fr_dun_+1", + 0, + "^https?://(www\\.)?monprojet\\.anah\\.gouv\\.fr/|^https?://(www\\.)?siec\\.education\\.fr/", + 10, + [], + [ + { + "e": 2115 + } + ], + [ + { + "v": 2115 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2115 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2115 + } + ], + {} + ], + [ + 1, + "auto_FR_motoblouz.com_v8h", + 0, + "^https?://(www\\.)?motoblouz\\.com/", + 10, + [], + [ + { + "e": 2116 + } + ], + [ + { + "v": 2116 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2116 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2116 + } + ], + {} + ], + [ + 1, + "auto_FR_motordoctor.fr_vbf", + 0, + "^https?://(www\\.)?motordoctor\\.fr/", + 10, + [], + [ + { + "e": 2117 + } + ], + [ + { + "v": 2117 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2117 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2117 + } + ], + {} + ], + [ + 1, + "auto_FR_my-procar.com_v1y", + 0, + "^https?://(www\\.)?my-procar\\.com/", + 10, + [], + [ + { + "e": 2118 + } + ], + [ + { + "v": 2118 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2118 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2118 + } + ], + {} + ], + [ + 1, + "auto_FR_my.numworks.com_o62_+1", + 0, + "^https?://(www\\.)?my\\.numworks\\.com/|^https?://(www\\.)?numworks\\.com/", + 10, + [], + [ + { + "e": 2123 + } + ], + [ + { + "v": 2123 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2123 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2123 + } + ], + {} + ], + [ + 1, + "auto_FR_nanarland.com_cdu", + 0, + "^https?://(www\\.)?nanarland\\.com/", + 10, + [], + [ + { + "e": 2119 + } + ], + [ + { + "v": 2119 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2119 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2119 + } + ], + {} + ], + [ + 1, + "auto_FR_naturitas.fr_58h", + 0, + "^https?://(www\\.)?naturitas\\.fr/", + 10, + [], + [ + { + "e": 1130 + } + ], + [ + { + "v": 1130 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1130 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1130 + } + ], + {} + ], + [ + 1, + "auto_FR_naval-group.com_yzx", + 0, + "^https?://(www\\.)?naval-group\\.com/", + 10, + [], + [ + { + "e": 1341 + } + ], + [ + { + "v": 1341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1341 + } + ], + {} + ], + [ + 1, + "auto_FR_net-entreprises.fr_f59", + 0, + "^https?://(www\\.)?net-entreprises\\.fr/", + 10, + [], + [ + { + "e": 2120 + } + ], + [ + { + "v": 2120 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2120 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2120 + } + ], + {} + ], + [ + 1, + "auto_FR_newpharma.fr_pi7", + 0, + "^https?://(www\\.)?newpharma\\.fr/", + 10, + [], + [ + { + "e": 2121 + } + ], + [ + { + "v": 2121 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2121 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2121 + } + ], + {} + ], + [ + 1, + "auto_FR_nl.xhamster.com_siy", + 0, + "^https?://(www\\.)?nl\\.xhamster\\.com/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_FR_nouslib.com_1tl", + 0, + "^https?://(www\\.)?nouslib\\.com/", + 10, + [], + [ + { + "e": 2122 + } + ], + [ + { + "v": 2122 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2122 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2122 + } + ], + {} + ], + [ + 1, + "auto_FR_nrjmobile.fr_223", + 0, + "^https?://(www\\.)?nrjmobile\\.fr/", + 10, + [], + [ + { + "e": 1530 + } + ], + [ + { + "v": 1530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1530 + } + ], + {} + ], + [ + 1, + "auto_FR_nutrixeal.fr_ehe", + 0, + "^https?://(www\\.)?nutrixeal\\.fr/", + 10, + [], + [ + { + "e": 2124 + } + ], + [ + { + "v": 2124 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2124 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2124 + } + ], + {} + ], + [ + 1, + "auto_FR_oceane.breizhgo.bzh_g7u", + 0, + "^https?://(www\\.)?oceane\\.breizhgo\\.bzh/", + 10, + [], + [ + { + "e": 2125 + } + ], + [ + { + "v": 2125 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2125 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2125 + } + ], + {} + ], + [ + 1, + "auto_FR_of.moncompteformation.gouv.fr_bdc", + 0, + "^https?://(www\\.)?of\\.moncompteformation\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2126 + } + ], + [ + { + "v": 2126 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2126 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2126 + } + ], + {} + ], + [ + 1, + "auto_FR_okaidi.fr_rdl", + 0, + "^https?://(www\\.)?okaidi\\.fr/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_on-tenk.com_l09", + 0, + "^https?://(www\\.)?on-tenk\\.com/", + 10, + [], + [ + { + "e": 2127 + } + ], + [ + { + "v": 2127 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2127 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2127 + } + ], + {} + ], + [ + 1, + "auto_FR_orbi.uliege.be_lmt", + 0, + "^https?://(www\\.)?orbi\\.uliege\\.be/", + 10, + [], + [ + { + "e": 2995 + } + ], + [ + { + "v": 2995 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2995 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2995 + } + ], + {} + ], + [ + 1, + "auto_FR_oupsmodel.com_8e5", + 0, + "^https?://(www\\.)?oupsmodel\\.com/", + 10, + [], + [ + { + "e": 2128 + } + ], + [ + { + "v": 2128 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2128 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2128 + } + ], + {} + ], + [ + 1, + "auto_FR_pap-pediatrie.fr_8pf", + 0, + "^https?://(www\\.)?pap-pediatrie\\.fr/", + 10, + [], + [ + { + "e": 2701 + } + ], + [ + { + "v": 2701 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2701 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2701 + } + ], + {} + ], + [ + 1, + "auto_FR_parishabitat.fr_gjq", + 0, + "^https?://(www\\.)?parishabitat\\.fr/", + 10, + [], + [ + { + "e": 2129 + } + ], + [ + { + "v": 2129 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2129 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2129 + } + ], + {} + ], + [ + 1, + "auto_FR_paruvendu.fr_kdi", + 0, + "^https?://(www\\.)?paruvendu\\.fr/", + 10, + [], + [ + { + "e": 2130 + } + ], + [ + { + "v": 2130 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2130 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2130 + } + ], + {} + ], + [ + 1, + "auto_FR_pccomponentes.fr_k0n", + 0, + "^https?://(www\\.)?pccomponentes\\.fr/", + 10, + [], + [ + { + "e": 2131 + } + ], + [ + { + "v": 2131 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2131 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2131 + } + ], + {} + ], + [ + 1, + "auto_FR_pearl.fr_rdw", + 0, + "^https?://(www\\.)?pearl\\.fr/", + 10, + [], + [ + { + "e": 2132 + } + ], + [ + { + "v": 2132 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2132 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2132 + } + ], + {} + ], + [ + 1, + "auto_FR_pedagogie.ac-orleans-tours.fr_538", + 0, + "^https?://(www\\.)?pedagogie\\.ac-orleans-tours\\.fr/", + 10, + [], + [ + { + "e": 2133 + } + ], + [ + { + "v": 2133 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2133 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2133 + } + ], + {} + ], + [ + 1, + "auto_FR_perfactive.fr_df8", + 0, + "^https?://(www\\.)?perfactive\\.fr/", + 10, + [], + [ + { + "e": 2134 + } + ], + [ + { + "v": 2134 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2134 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2134 + } + ], + {} + ], + [ + 1, + "auto_FR_pharmacie-homeopathie.com_fkk", + 0, + "^https?://(www\\.)?pharmacie-homeopathie\\.com/", + 10, + [], + [ + { + "e": 2702 + } + ], + [ + { + "v": 2702 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2702 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2702 + } + ], + {} + ], + [ + 1, + "auto_FR_photobox.fr_ril", + 0, + "^https?://(www\\.)?photobox\\.fr/", + 10, + [], + [ + { + "e": 2135 + } + ], + [ + { + "v": 2135 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2135 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2135 + } + ], + {} + ], + [ + 1, + "auto_FR_picwish.com_l0k", + 0, + "^https?://(www\\.)?picwish\\.com/", + 10, + [], + [ + { + "e": 2136 + } + ], + [ + { + "v": 2136 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2136 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2136 + } + ], + {} + ], + [ + 1, + "auto_FR_piecesauto.fr_l3t", + 0, + "^https?://(www\\.)?piecesauto\\.fr/", + 10, + [], + [ + { + "e": 2703 + } + ], + [ + { + "v": 2703 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2703 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2703 + } + ], + {} + ], + [ + 1, + "auto_FR_piecesauto24.com_tiy", + 0, + "^https?://(www\\.)?piecesauto24\\.com/", + 10, + [], + [ + { + "e": 2137 + } + ], + [ + { + "v": 2137 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2137 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2137 + } + ], + {} + ], + [ + 1, + "auto_FR_piecesdiscount24.fr_u6o", + 0, + "^https?://(www\\.)?piecesdiscount24\\.fr/", + 10, + [], + [ + { + "e": 1376 + } + ], + [ + { + "v": 1376 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1376 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1376 + } + ], + {} + ], + [ + 1, + "auto_FR_pitiesalpetriere.aphp.fr_46r", + 0, + "^https?://(www\\.)?pitiesalpetriere\\.aphp\\.fr/", + 10, + [], + [ + { + "e": 2704 + } + ], + [ + { + "v": 2704 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2704 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2704 + } + ], + {} + ], + [ + 1, + "auto_FR_placelibertine.com_3pl", + 0, + "^https?://(www\\.)?placelibertine\\.com/", + 10, + [], + [ + { + "e": 2138 + } + ], + [ + { + "v": 2138 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2138 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2138 + } + ], + {} + ], + [ + 1, + "auto_FR_platform.openai.com_nyz", + 0, + "^https?://(www\\.)?platform\\.openai\\.com/", + 10, + [], + [ + { + "e": 2996 + } + ], + [ + { + "v": 2996 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2996 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2996 + } + ], + {} + ], + [ + 1, + "auto_FR_platoapp.com_bd9", + 0, + "^https?://(www\\.)?platoapp\\.com/", + 10, + [], + [ + { + "e": 2705 + } + ], + [ + { + "v": 2705 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2705 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2705 + } + ], + {} + ], + [ + 1, + "auto_FR_politis.fr_g33", + 0, + "^https?://(www\\.)?politis\\.fr/", + 10, + [], + [ + { + "e": 2139 + } + ], + [ + { + "v": 2139 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2139 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2139 + } + ], + {} + ], + [ + 1, + "auto_FR_prefon.fr_jpk", + 0, + "^https?://(www\\.)?prefon\\.fr/", + 10, + [], + [ + { + "e": 2140 + } + ], + [ + { + "v": 2140 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2140 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2140 + } + ], + {} + ], + [ + 1, + "auto_FR_pretto.fr_kb5", + 0, + "^https?://(www\\.)?pretto\\.fr/", + 10, + [], + [ + { + "e": 2141 + } + ], + [ + { + "v": 2141 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2141 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2141 + } + ], + {} + ], + [ + 1, + "auto_FR_privateaser.com_uco", + 0, + "^https?://(www\\.)?privateaser\\.com/", + 10, + [], + [ + { + "e": 2706 + } + ], + [ + { + "v": 2706 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2706 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2706 + } + ], + {} + ], + [ + 1, + "auto_FR_pro.free.fr_2lg", + 0, + "^https?://(www\\.)?pro\\.free\\.fr/", + 10, + [], + [ + { + "e": 2142 + } + ], + [ + { + "v": 2142 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2142 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2142 + } + ], + {} + ], + [ + 1, + "auto_FR_pro.inserm.fr_omt", + 0, + "^https?://(www\\.)?pro\\.inserm\\.fr/", + 10, + [], + [ + { + "e": 1145 + } + ], + [ + { + "v": 1145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1145 + } + ], + {} + ], + [ + 1, + "auto_FR_proantic.com_oyg", + 0, + "^https?://(www\\.)?proantic\\.com/", + 10, + [], + [ + { + "e": 2143 + } + ], + [ + { + "v": 2143 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2143 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2143 + } + ], + {} + ], + [ + 1, + "auto_FR_probtp.com_rmi", + 0, + "^https?://(www\\.)?probtp\\.com/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_provenceguide.com_xh6", + 0, + "^https?://(www\\.)?provenceguide\\.com/", + 10, + [], + [ + { + "e": 2144 + } + ], + [ + { + "v": 2144 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2144 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2144 + } + ], + {} + ], + [ + 1, + "auto_FR_proximite.mgen.fr_9sn", + 0, + "^https?://(www\\.)?proximite\\.mgen\\.fr/", + 10, + [], + [ + { + "e": 2997 + } + ], + [ + { + "v": 2997 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2997 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2997 + } + ], + {} + ], + [ + 1, + "auto_FR_publiersonlivre.fr_7dg", + 0, + "^https?://(www\\.)?publiersonlivre\\.fr/", + 10, + [], + [ + { + "e": 2961 + } + ], + [ + { + "v": 2961 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2961 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2961 + } + ], + {} + ], + [ + 1, + "auto_FR_quelmatelas.fr_os2", + 0, + "^https?://(www\\.)?quelmatelas\\.fr/", + 10, + [], + [ + { + "e": 2145 + } + ], + [ + { + "v": 2145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2145 + } + ], + {} + ], + [ + 1, + "auto_FR_recette-de-grand-mere.fr_x94", + 0, + "^https?://(www\\.)?recette-de-grand-mere\\.fr/", + 10, + [], + [ + { + "e": 2998 + } + ], + [ + { + "v": 2998 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2998 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2998 + } + ], + {} + ], + [ + 1, + "auto_FR_resalib.fr_py5", + 0, + "^https?://(www\\.)?resalib\\.fr/", + 10, + [], + [ + { + "e": 2146 + } + ], + [ + { + "v": 2146 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2146 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2146 + } + ], + {} + ], + [ + 1, + "auto_FR_revue-histoire.fr_jex", + 0, + "^https?://(www\\.)?revue-histoire\\.fr/", + 10, + [], + [ + { + "e": 2707 + } + ], + [ + { + "v": 2707 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2707 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2707 + } + ], + {} + ], + [ + 1, + "auto_FR_rexel.fr_q3q", + 0, + "^https?://(www\\.)?rexel\\.fr/", + 10, + [], + [ + { + "e": 2147 + } + ], + [ + { + "v": 2147 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2147 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2147 + } + ], + {} + ], + [ + 1, + "auto_FR_rhinoshield.fr_k5l", + 0, + "^https?://(www\\.)?rhinoshield\\.fr/", + 10, + [], + [ + { + "e": 1764 + } + ], + [ + { + "v": 1764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1764 + } + ], + {} + ], + [ + 1, + "auto_FR_rueducommerce.fr_plr", + 0, + "^https?://(www\\.)?rueducommerce\\.fr/", + 10, + [], + [ + { + "e": 2148 + } + ], + [ + { + "v": 2148 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2148 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2148 + } + ], + {} + ], + [ + 1, + "auto_FR_saurclient.fr_l7a", + 0, + "^https?://(www\\.)?saurclient\\.fr/", + 10, + [], + [ + { + "e": 2149 + } + ], + [ + { + "v": 2149 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2149 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2149 + } + ], + {} + ], + [ + 1, + "auto_FR_scaleway.com_z7w", + 0, + "^https?://(www\\.)?scaleway\\.com/", + 10, + [], + [ + { + "e": 2904 + } + ], + [ + { + "v": 2904 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2904 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2904 + } + ], + {} + ], + [ + 1, + "auto_FR_sengager.fr_iu4", + 0, + "^https?://(www\\.)?sengager\\.fr/", + 10, + [], + [ + { + "e": 1426 + } + ], + [ + { + "v": 1426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1426 + } + ], + {} + ], + [ + 1, + "auto_FR_sephora.fr_k3l", + 0, + "^https?://(www\\.)?sephora\\.fr/", + 10, + [], + [ + { + "e": 2053 + } + ], + [ + { + "v": 2053 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2053 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2053 + } + ], + {} + ], + [ + 1, + "auto_FR_service.eau.veolia.fr_fyl", + 0, + "^https?://(www\\.)?service\\.eau\\.veolia\\.fr/", + 10, + [], + [ + { + "e": 2150 + } + ], + [ + { + "v": 2150 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2150 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2150 + } + ], + {} + ], + [ + 1, + "auto_FR_setin.fr_j4z", + 0, + "^https?://(www\\.)?setin\\.fr/", + 10, + [], + [ + { + "e": 2151 + } + ], + [ + { + "v": 2151 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2151 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2151 + } + ], + {} + ], + [ + 1, + "auto_FR_sia.aviation-civile.gouv.fr_a4i", + 0, + "^https?://(www\\.)?sia\\.aviation-civile\\.gouv\\.fr/", + 10, + [], + [ + { + "e": 2152 + } + ], + [ + { + "v": 2152 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2152 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2152 + } + ], + {} + ], + [ + 1, + "auto_FR_skolengo.com_xyq", + 0, + "^https?://(www\\.)?skolengo\\.com/", + 10, + [], + [ + { + "e": 2708 + } + ], + [ + { + "v": 2708 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2708 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2708 + } + ], + {} + ], + [ + 1, + "auto_FR_snap.com_zh6", + 0, + "^https?://(www\\.)?snap\\.com/", + 10, + [], + [ + { + "e": 2709 + } + ], + [ + { + "v": 2709 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2709 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2709 + } + ], + {} + ], + [ + 1, + "auto_FR_soprema.fr_xq8", + 0, + "^https?://(www\\.)?soprema\\.fr/", + 10, + [], + [ + { + "e": 2492 + } + ], + [ + { + "v": 2492 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2492 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2492 + } + ], + {} + ], + [ + 1, + "auto_FR_spartoo.com_b8d", + 0, + "^https?://(www\\.)?spartoo\\.com/", + 10, + [], + [ + { + "e": 2153 + } + ], + [ + { + "v": 2153 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2153 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2153 + } + ], + {} + ], + [ + 1, + "auto_FR_sudoc.fr_xhf", + 0, + "^https?://(www\\.)?sudoc\\.abes\\.fr/", + 10, + [], + [ + { + "e": 2710 + } + ], + [ + { + "v": 2710 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2710 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2710 + } + ], + {} + ], + [ + 1, + "auto_FR_synlab.fr_5uc", + 0, + "^https?://(www\\.)?synlab\\.fr/", + 10, + [], + [ + { + "e": 1814 + } + ], + [ + { + "v": 1814 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1814 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1814 + } + ], + {} + ], + [ + 1, + "auto_FR_tel.fr_fpz", + 0, + "^https?://(www\\.)?tel\\.fr/", + 10, + [], + [ + { + "e": 2154 + } + ], + [ + { + "v": 2154 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2154 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2154 + } + ], + {} + ], + [ + 1, + "auto_FR_telescopes-et-accessoires.fr_9fo", + 0, + "^https?://(www\\.)?telescopes-et-accessoires\\.fr/", + 10, + [], + [ + { + "e": 2155 + } + ], + [ + { + "v": 2155 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2155 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2155 + } + ], + {} + ], + [ + 1, + "auto_FR_tenup.fft.fr_f3r", + 0, + "^https?://(www\\.)?tenup\\.fft\\.fr/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_FR_terra-aventura.fr_pps", + 0, + "^https?://(www\\.)?terra-aventura\\.fr/", + 10, + [], + [ + { + "e": 2156 + } + ], + [ + { + "v": 2156 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2156 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2156 + } + ], + {} + ], + [ + 1, + "auto_FR_tgvinoui.sncf_7s1", + 0, + "^https?://(www\\.)?tgvinoui\\.sncf/", + 10, + [], + [ + { + "e": 2157 + } + ], + [ + { + "v": 2157 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2157 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2157 + } + ], + {} + ], + [ + 1, + "auto_FR_ticketswap.fr_8j7", + 0, + "^https?://(www\\.)?ticketswap\\.fr/", + 10, + [], + [ + { + "e": 2493 + } + ], + [ + { + "v": 2493 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2493 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2493 + } + ], + {} + ], + [ + 1, + "auto_FR_tikamoon.com_6kz", + 0, + "^https?://(www\\.)?tikamoon\\.com/", + 10, + [], + [ + { + "e": 2711 + } + ], + [ + { + "v": 2711 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2711 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2711 + } + ], + {} + ], + [ + 1, + "auto_FR_top5jeuxenligne.fr_lsi", + 0, + "^https?://(www\\.)?top5jeuxenligne\\.fr/", + 10, + [], + [ + { + "e": 2712 + } + ], + [ + { + "v": 2712 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2712 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2712 + } + ], + {} + ], + [ + 1, + "auto_FR_toutfaire.fr_gus", + 0, + "^https?://(www\\.)?toutfaire\\.fr/", + 10, + [], + [ + { + "e": 2158 + } + ], + [ + { + "v": 2158 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2158 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2158 + } + ], + {} + ], + [ + 1, + "auto_FR_truffaut.com_d46", + 0, + "^https?://(www\\.)?truffaut\\.com/", + 10, + [], + [ + { + "e": 2159 + } + ], + [ + { + "v": 2159 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2159 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2159 + } + ], + {} + ], + [ + 1, + "auto_FR_ubaldi.com_pys", + 0, + "^https?://(www\\.)?ubaldi\\.com/", + 10, + [], + [ + { + "e": 2160 + } + ], + [ + { + "v": 2160 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2160 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2160 + } + ], + {} + ], + [ + 1, + "auto_FR_ugc.fr_rvv", + 0, + "^https?://(www\\.)?ugc\\.fr/", + 10, + [], + [ + { + "e": 2161 + } + ], + [ + { + "v": 2161 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2161 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2161 + } + ], + {} + ], + [ + 1, + "auto_FR_ultraperformance.fr_v4o", + 0, + "^https?://(www\\.)?ultraperformance\\.fr/", + 10, + [], + [ + { + "e": 2162 + } + ], + [ + { + "v": 2162 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2162 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2162 + } + ], + {} + ], + [ + 1, + "auto_FR_universcine.com_1w5", + 0, + "^https?://(www\\.)?universcine\\.com/", + 10, + [], + [ + { + "e": 2163 + } + ], + [ + { + "v": 2163 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2163 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2163 + } + ], + {} + ], + [ + 1, + "auto_FR_versailles.fr_29q", + 0, + "^https?://(www\\.)?versailles\\.fr/", + 10, + [], + [ + { + "e": 2164 + } + ], + [ + { + "v": 2164 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2164 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2164 + } + ], + {} + ], + [ + 1, + "auto_FR_vetostore.com_8wy", + 0, + "^https?://(www\\.)?vetostore\\.com/", + 10, + [], + [ + { + "e": 2174 + } + ], + [ + { + "v": 2174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2174 + } + ], + {} + ], + [ + 1, + "auto_FR_vevor.fr_f0y", + 0, + "^https?://(www\\.)?vevor\\.fr/", + 10, + [], + [ + { + "e": 1973 + } + ], + [ + { + "v": 1973 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1973 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1973 + } + ], + {} + ], + [ + 1, + "auto_FR_viniou.fr_uy6", + 0, + "^https?://(www\\.)?viniou\\.fr/", + 10, + [], + [ + { + "e": 2165 + } + ], + [ + { + "v": 2165 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2165 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2165 + } + ], + {} + ], + [ + 1, + "auto_FR_visa.fr_f4n", + 0, + "^https?://(www\\.)?visa\\.fr/", + 10, + [], + [ + { + "e": 1184 + } + ], + [ + { + "v": 1184 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1184 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1184 + } + ], + {} + ], + [ + 1, + "auto_FR_vistaprint.fr_35d", + 0, + "^https?://(www\\.)?vistaprint\\.fr/", + 10, + [], + [ + { + "e": 2166 + } + ], + [ + { + "v": 2166 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2166 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2166 + } + ], + {} + ], + [ + 1, + "auto_FR_voyage-prive.com_r0b", + 0, + "^https?://(www\\.)?voyage-prive\\.com/", + 10, + [], + [ + { + "e": 2167 + } + ], + [ + { + "v": 2167 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2167 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2167 + } + ], + {} + ], + [ + 1, + "auto_FR_vroomly.com_854", + 0, + "^https?://(www\\.)?vroomly\\.com/", + 10, + [], + [ + { + "e": 2168 + } + ], + [ + { + "v": 2168 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2168 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2168 + } + ], + {} + ], + [ + 1, + "auto_FR_wallstreetenglish.fr_gaf", + 0, + "^https?://(www\\.)?wallstreetenglish\\.fr/", + 10, + [], + [ + { + "e": 2999 + } + ], + [ + { + "v": 2999 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2999 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2999 + } + ], + {} + ], + [ + 1, + "auto_FR_wesco.fr_jlq", + 0, + "^https?://(www\\.)?wesco\\.fr/", + 10, + [], + [ + { + "e": 2714 + } + ], + [ + { + "v": 2714 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2714 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2714 + } + ], + {} + ], + [ + 1, + "auto_FR_xhamster.com_grv_+4", + 0, + "^https?://(www\\.)?xhamster\\.com/|^https?://(www\\.)?xhamster\\.desi/|^https?://(www\\.)?xhamster19\\.com/|^https?://(www\\.)?xhamster2\\.com/|^https?://(www\\.)?xhamster3\\.com/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_FR_yespark.fr_mpo", + 0, + "^https?://(www\\.)?yespark\\.fr/", + 10, + [], + [ + { + "e": 2170 + } + ], + [ + { + "v": 2170 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2170 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2170 + } + ], + {} + ], + [ + 1, + "auto_FR_yousign.com_ku9", + 0, + "^https?://(www\\.)?yousign\\.com/", + 10, + [], + [ + { + "e": 2171 + } + ], + [ + { + "v": 2171 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2171 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2171 + } + ], + {} + ], + [ + 1, + "auto_FR_zonecouture.fr_glp", + 0, + "^https?://(www\\.)?zonecouture\\.fr/", + 10, + [], + [ + { + "e": 1307 + } + ], + [ + { + "v": 1307 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1307 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1307 + } + ], + {} + ], + [ + 1, + "auto_GB_192.com_0", + 0, + "^https?://(www\\.)?192\\.com/", + 10, + [], + [ + { + "e": 1083 + } + ], + [ + { + "v": 1083 + } + ], + [ + { + "text": "Necessary Only", + "c": 1083 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_3djake.uk_0", + 0, + "^https?://(www\\.)?3djake\\.uk/", + 10, + [], + [ + { + "e": 1084 + } + ], + [ + { + "v": 1084 + } + ], + [ + { + "c": 1084 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_80scasualclassics.co.uk_te0_+1", + 0, + "^https?://(www\\.)?80scasualclassics\\.co\\.uk/|^https?://(www\\.)?francisandgaye\\.co\\.uk/", + 10, + [], + [ + { + "e": 1157 + } + ], + [ + { + "v": 1157 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1157 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1157 + } + ], + {} + ], + [ + 1, + "auto_GB_8ballpool.com_tcx", + 0, + "^https?://(www\\.)?8ballpool\\.com/", + 10, + [], + [ + { + "e": 2715 + } + ], + [ + { + "v": 2715 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2715 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2715 + } + ], + {} + ], + [ + 1, + "auto_GB_abebooks.co.uk_0", + 0, + "^https?://(www\\.)?abebooks\\.co\\.uk/", + 10, + [], + [ + { + "e": 1085 + } + ], + [ + { + "v": 1085 + } + ], + [ + { + "c": 1085 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_accessable.co.uk_0", + 0, + "^https?://(www\\.)?accessable\\.co\\.uk/", + 10, + [], + [ + { + "e": 2173 + } + ], + [ + { + "v": 2173 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2173 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2173 + } + ], + {} + ], + [ + 1, + "auto_GB_accounts.o2.co.uk_0", + 0, + "^https?://(www\\.)?accounts\\.o2\\.co\\.uk/", + 10, + [], + [ + { + "e": 1087 + } + ], + [ + { + "v": 1087 + } + ], + [ + { + "c": 1087 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_accounts.snapchat.com_0", + 0, + "^https?://(www\\.)?accounts\\.snapchat\\.com/", + 10, + [], + [ + { + "e": 1088 + } + ], + [ + { + "v": 1088 + } + ], + [ + { + "c": 1088 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_actionfraud.org.uk_92k", + 0, + "^https?://(www\\.)?actionfraud\\.org\\.uk/", + 10, + [], + [ + { + "e": 2961 + } + ], + [ + { + "v": 2961 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2961 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2961 + } + ], + {} + ], + [ + 1, + "auto_GB_adultwork.com_l1i", + 0, + "^https?://(www\\.)?adultwork\\.com/", + 10, + [], + [ + { + "e": 1090 + } + ], + [ + { + "v": 1090 + } + ], + [ + { + "c": 1090 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_adventurebikerider.com_0", + 0, + "^https?://(www\\.)?adventurebikerider\\.com/", + 10, + [], + [ + { + "e": 1091 + } + ], + [ + { + "v": 1091 + } + ], + [ + { + "c": 1091 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_aircanada.com_0", + 0, + "^https?://(www\\.)?aircanada\\.com/", + 10, + [], + [ + { + "e": 1092 + } + ], + [ + { + "v": 1092 + } + ], + [ + { + "text": "Reject All Cookies", + "c": 1092 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ancestry.co.uk_0", + 0, + "^https?://(www\\.)?ancestry\\.co\\.uk/", + 10, + [], + [ + { + "e": 1094 + } + ], + [ + { + "v": 1094 + } + ], + [ + { + "c": 1094 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ancestry.com_0", + 0, + "^https?://(www\\.)?ancestry\\.com/", + 10, + [], + [ + { + "e": 1094 + } + ], + [ + { + "v": 1094 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1094 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1094 + } + ], + {} + ], + [ + 1, + "auto_GB_anglingdirect.co.uk_1hl", + 0, + "^https?://(www\\.)?anglingdirect\\.co\\.uk/", + 10, + [], + [ + { + "e": 2174 + } + ], + [ + { + "v": 2174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2174 + } + ], + {} + ], + [ + 1, + "auto_GB_arket.com_q4z", + 0, + "^https?://(www\\.)?arket\\.com/", + 10, + [], + [ + { + "e": 1523 + } + ], + [ + { + "v": 1523 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1523 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1523 + } + ], + {} + ], + [ + 1, + "auto_GB_arte.tv_0", + 0, + "^https?://(www\\.)?arte\\.tv/", + 10, + [], + [ + { + "e": 1097 + } + ], + [ + { + "v": 1097 + } + ], + [ + { + "c": 1097 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_artsupplies.co.uk_1so", + 0, + "^https?://(www\\.)?artsupplies\\.co\\.uk/", + 10, + [], + [ + { + "e": 2175 + } + ], + [ + { + "v": 2175 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2175 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2175 + } + ], + {} + ], + [ + 1, + "auto_GB_asda.jobs_y0y", + 0, + "^https?://(www\\.)?asda\\.jobs/", + 10, + [], + [ + { + "e": 2176 + } + ], + [ + { + "v": 2176 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2176 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2176 + } + ], + {} + ], + [ + 1, + "auto_GB_ashemaletube.com_ozt_+2", + 0, + "^https?://(www\\.)?ashemaletube\\.com/|^https?://(www\\.)?boyfriend\\.tv/|^https?://(www\\.)?boyfriendtv\\.com/", + 10, + [], + [ + { + "e": 1531 + } + ], + [ + { + "v": 1531 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1531 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1531 + } + ], + {} + ], + [ + 1, + "auto_GB_ashwoodnurseries.com_0", + 0, + "^https?://(www\\.)?ashwoodnurseries\\.com/", + 10, + [], + [ + { + "e": 1100 + } + ], + [ + { + "v": 1100 + } + ], + [ + { + "c": 1100 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_atlasformen.co.uk_0", + 0, + "^https?://(www\\.)?atlasformen\\.co\\.uk/", + 10, + [], + [ + { + "e": 1757 + } + ], + [ + { + "v": 1757 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1757 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1757 + } + ], + {} + ], + [ + 1, + "auto_GB_atombank.co.uk_0", + 0, + "^https?://(www\\.)?atombank\\.co\\.uk/", + 10, + [], + [ + { + "e": 2177 + } + ], + [ + { + "v": 2177 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2177 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2177 + } + ], + {} + ], + [ + 1, + "auto_GB_attheraces.com_0", + 0, + "^https?://(www\\.)?attheraces\\.com/", + 10, + [], + [ + { + "e": 2178 + } + ], + [ + { + "v": 2178 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2178 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2178 + } + ], + {} + ], + [ + 1, + "auto_GB_audacityteam.org_0", + 0, + "^https?://(www\\.)?audacityteam\\.org/", + 10, + [], + [ + { + "e": 1104 + } + ], + [ + { + "v": 1104 + } + ], + [ + { + "c": 1104 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_audioemotion.co.uk_0_+3", + 0, + "^https?://(www\\.)?audioemotion\\.co\\.uk/|^https?://(www\\.)?bathroomspareparts\\.co\\.uk/|^https?://(www\\.)?thebushcraftstore\\.co\\.uk/|^https?://(www\\.)?thewoolfactory\\.co\\.uk/", + 10, + [], + [ + { + "e": 2179 + } + ], + [ + { + "v": 2179 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2179 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2179 + } + ], + {} + ], + [ + 1, + "auto_GB_auth.discoveryplus.com_ruj", + 0, + "^https?://(www\\.)?auth\\.discoveryplus\\.com/", + 10, + [], + [ + { + "e": 2716 + } + ], + [ + { + "v": 2716 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2716 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2716 + } + ], + {} + ], + [ + 1, + "auto_GB_autodesk.com_0", + 0, + "^https?://(www\\.)?autodesk\\.com/", + 10, + [], + [ + { + "e": 1106 + } + ], + [ + { + "v": 1106 + } + ], + [ + { + "c": 1106 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_autodoc.co.uk_0", + 0, + "^https?://(www\\.)?autodoc\\.co\\.uk/", + 10, + [], + [ + { + "e": 1107 + } + ], + [ + { + "v": 1107 + } + ], + [ + { + "c": 1107 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_autopartspro.co.uk_0_+1", + 0, + "^https?://(www\\.)?autopartspro\\.co\\.uk/|^https?://(www\\.)?buycarparts\\.co\\.uk/", + 10, + [], + [ + { + "e": 1677 + } + ], + [ + { + "v": 1677 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1677 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1677 + } + ], + {} + ], + [ + 1, + "auto_GB_av.com_i0g_+1", + 0, + "^https?://(www\\.)?av\\.com/|^https?://(www\\.)?gear4music\\.com/", + 10, + [], + [ + { + "e": 1606 + } + ], + [ + { + "v": 1606 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1606 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1606 + } + ], + {} + ], + [ + 1, + "auto_GB_backmarket.co.uk_0", + 0, + "^https?://(www\\.)?backmarket\\.co\\.uk/", + 10, + [], + [ + { + "e": 1109 + } + ], + [ + { + "v": 1109 + } + ], + [ + { + "c": 1109 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bananafingers.co.uk_0_+1", + 0, + "^https?://(www\\.)?bananafingers\\.co\\.uk/|^https?://(www\\.)?tractorpartsasap\\.com/", + 10, + [], + [ + { + "e": 2174 + } + ], + [ + { + "v": 2174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2174 + } + ], + {} + ], + [ + 1, + "auto_GB_bandlab.com_0", + 0, + "^https?://(www\\.)?bandlab\\.com/", + 10, + [], + [ + { + "e": 1111 + } + ], + [ + { + "v": 1111 + } + ], + [ + { + "c": 1111 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bangbros.com_0_+1", + 0, + "^https?://(www\\.)?bangbros\\.com/|^https?://(www\\.)?realitykings\\.com/", + 10, + [], + [ + { + "e": 1112 + } + ], + [ + { + "v": 1112 + } + ], + [ + { + "text": "ACCEPT ONLY ESSENTIAL COOKIES", + "c": 1112 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bankofscotland.co.uk_ffp_+1", + 0, + "^https?://(www\\.)?bankofscotland\\.co\\.uk/|^https?://(www\\.)?business\\.bankofscotland\\.co\\.uk/", + 10, + [], + [ + { + "e": 3000 + } + ], + [ + { + "v": 3000 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3000 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3000 + } + ], + {} + ], + [ + 1, + "auto_GB_bats.org.uk_0", + 0, + "^https?://(www\\.)?bats\\.org\\.uk/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_GB_bbc.co.uk_0", + 0, + "^https?://(www\\.)?bbc\\.co\\.uk/", + 10, + [], + [ + { + "e": 2180 + } + ], + [ + { + "v": 2180 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2180 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2180 + } + ], + {} + ], + [ + 1, + "auto_GB_bcfc.com_0", + 0, + "^https?://(www\\.)?bcfc\\.com/", + 10, + [], + [ + { + "e": 2181 + } + ], + [ + { + "v": 2181 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2181 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2181 + } + ], + {} + ], + [ + 1, + "auto_GB_bcfc.com_1", + 0, + "^https?://(www\\.)?bcfc\\.com/", + 10, + [], + [ + { + "e": 2182 + } + ], + [ + { + "v": 2182 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2182 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2182 + } + ], + {} + ], + [ + 1, + "auto_GB_beefeater.co.uk_5vc", + 0, + "^https?://(www\\.)?beefeater\\.co\\.uk/", + 10, + [], + [ + { + "e": 1681 + } + ], + [ + { + "v": 1681 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1681 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1681 + } + ], + {} + ], + [ + 1, + "auto_GB_beersofeurope.co.uk_tt2", + 0, + "^https?://(www\\.)?beersofeurope\\.co\\.uk/", + 10, + [], + [ + { + "e": 1118 + } + ], + [ + { + "v": 1118 + } + ], + [ + { + "c": 1118 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bellroy.com_hyq", + 0, + "^https?://(www\\.)?bellroy\\.com/", + 10, + [], + [ + { + "e": 1542 + } + ], + [ + { + "v": 1542 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1542 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1542 + } + ], + {} + ], + [ + 1, + "auto_GB_bellroy.com_tji", + 0, + "^https?://(www\\.)?bellroy\\.com/", + 10, + [], + [ + { + "e": 1546 + } + ], + [ + { + "v": 1546 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1546 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1546 + } + ], + {} + ], + [ + 1, + "auto_GB_benefitsandwork.co.uk_0_+1", + 0, + "^https?://(www\\.)?benefitsandwork\\.co\\.uk/|^https?://(www\\.)?reshade\\.me/", + 10, + [], + [ + { + "e": 2717 + } + ], + [ + { + "v": 2717 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2717 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2717 + } + ], + {} + ], + [ + 1, + "auto_GB_benq.eu_0", + 0, + "^https?://(www\\.)?benq\\.eu/", + 10, + [], + [ + { + "e": 1547 + } + ], + [ + { + "v": 1547 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1547 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1547 + } + ], + {} + ], + [ + 1, + "auto_GB_bensnaturalhealth.co.uk_0", + 0, + "^https?://(www\\.)?bensnaturalhealth\\.co\\.uk/", + 10, + [], + [ + { + "e": 1121 + } + ], + [ + { + "v": 1121 + } + ], + [ + { + "c": 1121 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bergzeit.co.uk_d1r", + 0, + "^https?://(www\\.)?bergzeit\\.co\\.uk/", + 10, + [], + [ + { + "e": 3001 + } + ], + [ + { + "v": 3001 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3001 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3001 + } + ], + {} + ], + [ + 1, + "auto_GB_beta.northumberland.gov.uk_0_+1", + 0, + "^https?://(www\\.)?beta\\.northumberland\\.gov\\.uk/|^https?://(www\\.)?northumberland\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2183 + } + ], + [ + { + "v": 2183 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2183 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2183 + } + ], + {} + ], + [ + 1, + "auto_GB_betterhelp.com_0", + 0, + "^https?://(www\\.)?betterhelp\\.com/", + 10, + [], + [ + { + "e": 3002 + } + ], + [ + { + "v": 3002 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3002 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3002 + } + ], + {} + ], + [ + 1, + "auto_GB_betway.com_8oz", + 0, + "^https?://(www\\.)?betway\\.com/", + 10, + [], + [ + { + "e": 1124 + } + ], + [ + { + "v": 1124 + } + ], + [ + { + "c": 1124 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_biblio.co.uk_0", + 0, + "^https?://(www\\.)?biblio\\.co\\.uk/", + 10, + [], + [ + { + "e": 2718 + } + ], + [ + { + "v": 2718 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2718 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2718 + } + ], + {} + ], + [ + 1, + "auto_GB_bigfishgames.com_6wp", + 0, + "^https?://(www\\.)?bigfishgames\\.com/", + 10, + [], + [ + { + "e": 3003 + } + ], + [ + { + "v": 3003 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3003 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3003 + } + ], + {} + ], + [ + 1, + "auto_GB_bike24.com_0", + 0, + "^https?://(www\\.)?bike24\\.com/", + 10, + [], + [ + { + "e": 1126 + } + ], + [ + { + "v": 1126 + } + ], + [ + { + "c": 1126 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bills-website.co.uk_0_+2", + 0, + "^https?://(www\\.)?bills-website\\.co\\.uk/|^https?://(www\\.)?jct600\\.co\\.uk/|^https?://(www\\.)?litrg\\.org\\.uk/", + 10, + [], + [ + { + "e": 1083 + } + ], + [ + { + "v": 1083 + } + ], + [ + { + "text": "Deny", + "c": 1083 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bookmygarage.com_0", + 0, + "^https?://(www\\.)?bookmygarage\\.com/", + 10, + [], + [ + { + "e": 2185 + } + ], + [ + { + "v": 2185 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2185 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2185 + } + ], + {} + ], + [ + 1, + "auto_GB_bookretreats.com_0", + 0, + "^https?://(www\\.)?bookretreats\\.com/", + 10, + [], + [ + { + "e": 1128 + } + ], + [ + { + "v": 1128 + } + ], + [ + { + "c": 1128 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bp.com_0", + 0, + "^https?://(www\\.)?bp\\.com/", + 10, + [], + [ + { + "e": 1006 + } + ], + [ + { + "v": 1006 + } + ], + [ + { + "c": 1006 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bracknell-forest.gov.uk_0", + 0, + "^https?://(www\\.)?bracknell-forest\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2186 + } + ], + [ + { + "v": 2186 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2186 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2186 + } + ], + {} + ], + [ + 1, + "auto_GB_brazzers.com_0", + 0, + "^https?://(www\\.)?brazzers\\.com/", + 10, + [], + [ + { + "e": 1131 + } + ], + [ + { + "v": 1131 + } + ], + [ + { + "c": 1131 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_bricksandlogic.co.uk_o5o", + 0, + "^https?://(www\\.)?bricksandlogic\\.co\\.uk/", + 10, + [], + [ + { + "e": 2719 + } + ], + [ + { + "v": 2719 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2719 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2719 + } + ], + {} + ], + [ + 1, + "auto_GB_brightonandhovealbion.com_0", + 0, + "^https?://(www\\.)?brightonandhovealbion\\.com/", + 10, + [], + [ + { + "e": 2188 + } + ], + [ + { + "v": 2188 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2188 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2188 + } + ], + {} + ], + [ + 1, + "auto_GB_brightonandhovealbion.com_1", + 0, + "^https?://(www\\.)?brightonandhovealbion\\.com/", + 10, + [], + [ + { + "e": 2189 + } + ], + [ + { + "v": 2189 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2189 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2189 + } + ], + {} + ], + [ + 1, + "auto_GB_brightondome.org_iz9", + 0, + "^https?://(www\\.)?brightondome\\.org/", + 10, + [], + [ + { + "e": 2720 + } + ], + [ + { + "v": 2720 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2720 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2720 + } + ], + {} + ], + [ + 1, + "auto_GB_bristan.com_0", + 0, + "^https?://(www\\.)?bristan\\.com/", + 10, + [], + [ + { + "e": 2190 + } + ], + [ + { + "v": 2190 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2190 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2190 + } + ], + {} + ], + [ + 1, + "auto_GB_britainsfinest.co.uk_0", + 0, + "^https?://(www\\.)?britainsfinest\\.co\\.uk/", + 10, + [], + [ + { + "e": 2191 + } + ], + [ + { + "v": 2191 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2191 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2191 + } + ], + {} + ], + [ + 1, + "auto_GB_britishsuperbike.com_0", + 0, + "^https?://(www\\.)?britishsuperbike\\.com/", + 10, + [], + [ + { + "e": 2192 + } + ], + [ + { + "v": 2192 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2192 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2192 + } + ], + {} + ], + [ + 1, + "auto_GB_broadbandchoices.co.uk_0", + 0, + "^https?://(www\\.)?broadbandchoices\\.co\\.uk/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_GB_brooktaverner.co.uk_0", + 0, + "^https?://(www\\.)?brooktaverner\\.co\\.uk/", + 10, + [], + [ + { + "e": 1141 + } + ], + [ + { + "v": 1141 + } + ], + [ + { + "text": "Decline", + "c": 1141 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_brunel.ac.uk_0_+3", + 0, + "^https?://(www\\.)?brunel\\.ac\\.uk/|^https?://(www\\.)?crowndecoratingcentres\\.co\\.uk/|^https?://(www\\.)?gcu\\.ac\\.uk/|^https?://(www\\.)?weber\\.com/", + 10, + [], + [ + { + "e": 1115 + } + ], + [ + { + "v": 1115 + } + ], + [ + { + "text": "Use necessary cookies only", + "c": 1115 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_buckinghamshire.gov.uk_0", + 0, + "^https?://(www\\.)?buckinghamshire\\.gov\\.uk/", + 10, + [], + [ + { + "e": 1142 + } + ], + [ + { + "v": 1142 + } + ], + [ + { + "c": 1142 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_business.amazon.co.uk_txs", + 0, + "^https?://(www\\.)?business\\.amazon\\.co\\.uk/", + 10, + [], + [ + { + "e": 2955 + } + ], + [ + { + "v": 2955 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2955 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2955 + } + ], + {} + ], + [ + 1, + "auto_GB_businessclass.com_0", + 0, + "^https?://(www\\.)?businessclass\\.com/", + 10, + [], + [ + { + "e": 1144 + } + ], + [ + { + "v": 1144 + } + ], + [ + { + "c": 1144 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_buyspares.co.uk_ia7", + 0, + "^https?://(www\\.)?buyspares\\.co\\.uk/", + 10, + [], + [ + { + "e": 2194 + } + ], + [ + { + "v": 2194 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2194 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2194 + } + ], + {} + ], + [ + 1, + "auto_GB_cam4.com_0", + 0, + "^https?://(www\\.)?cam4\\.com/", + 10, + [], + [ + { + "e": 1146 + } + ], + [ + { + "v": 1146 + } + ], + [ + { + "c": 1146 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_cameraworld.co.uk_0", + 0, + "^https?://(www\\.)?cameraworld\\.co\\.uk/", + 10, + [], + [ + { + "e": 2195 + } + ], + [ + { + "v": 2195 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2195 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2195 + } + ], + {} + ], + [ + 1, + "auto_GB_canon-europe.com_kjw", + 0, + "^https?://(www\\.)?canon-europe\\.com/", + 10, + [], + [ + { + "e": 1148 + } + ], + [ + { + "v": 1148 + } + ], + [ + { + "c": 1148 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_capcut.com_0", + 0, + "^https?://(www\\.)?capcut\\.com/", + 10, + [], + [ + { + "e": 1149 + } + ], + [ + { + "v": 1149 + } + ], + [ + { + "c": 1149 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_capitalone.co.uk_0", + 0, + "^https?://(www\\.)?capitalone\\.co\\.uk/", + 10, + [], + [ + { + "e": 2722 + } + ], + [ + { + "v": 2722 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2722 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2722 + } + ], + {} + ], + [ + 1, + "auto_GB_carbatterymarket.co.uk_0_+1", + 0, + "^https?://(www\\.)?carbatterymarket\\.co\\.uk/|^https?://(www\\.)?yachtall\\.com/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_GB_cardmarket.com_oxh", + 0, + "^https?://(www\\.)?cardmarket\\.com/", + 10, + [], + [ + { + "e": 1550 + } + ], + [ + { + "v": 1550 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1550 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1550 + } + ], + {} + ], + [ + 1, + "auto_GB_careers.ba.com_k4s", + 0, + "^https?://(www\\.)?careers\\.ba\\.com/", + 10, + [], + [ + { + "e": 3004 + } + ], + [ + { + "v": 3004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3004 + } + ], + {} + ], + [ + 1, + "auto_GB_careers.royalmailgroup.com_0", + 0, + "^https?://(www\\.)?careers\\.royalmailgroup\\.com/", + 10, + [], + [ + { + "e": 1371 + } + ], + [ + { + "v": 1371 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1371 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1371 + } + ], + {} + ], + [ + 1, + "auto_GB_carersuk.org_0_+1", + 0, + "^https?://(www\\.)?carersuk\\.org/|^https?://(www\\.)?frenchestateagents\\.com/", + 10, + [], + [ + { + "e": 1042 + } + ], + [ + { + "v": 1042 + } + ], + [ + { + "c": 1042 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_carfromjapan.com_0", + 0, + "^https?://(www\\.)?carfromjapan\\.com/", + 10, + [], + [ + { + "e": 2723 + } + ], + [ + { + "v": 2723 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2723 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2723 + } + ], + {} + ], + [ + 1, + "auto_GB_cartridgeworld.co.uk_0", + 0, + "^https?://(www\\.)?cartridgeworld\\.co\\.uk/", + 10, + [], + [ + { + "e": 1154 + } + ], + [ + { + "v": 1154 + } + ], + [ + { + "c": 1154 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_catawiki.com_0", + 0, + "^https?://(www\\.)?catawiki\\.com/", + 10, + [], + [ + { + "e": 1155 + } + ], + [ + { + "v": 1155 + } + ], + [ + { + "c": 1155 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_caterallen.co.uk_4tf", + 0, + "^https?://(www\\.)?caterallen\\.co\\.uk/", + 10, + [], + [ + { + "e": 2724 + } + ], + [ + { + "v": 2724 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2724 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2724 + } + ], + {} + ], + [ + 1, + "auto_GB_cgpbooks.co.uk_5kq", + 0, + "^https?://(www\\.)?cgpbooks\\.co\\.uk/", + 10, + [], + [ + { + "e": 2725 + } + ], + [ + { + "v": 2725 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2725 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2725 + } + ], + {} + ], + [ + 1, + "auto_GB_change.org_0", + 0, + "^https?://(www\\.)?change\\.org/", + 10, + [], + [ + { + "e": 1156 + } + ], + [ + { + "v": 1156 + } + ], + [ + { + "c": 1156 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_charlesclinkard.co.uk_0", + 0, + "^https?://(www\\.)?charlesclinkard\\.co\\.uk/", + 10, + [], + [ + { + "e": 2197 + } + ], + [ + { + "v": 2197 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2197 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2197 + } + ], + {} + ], + [ + 1, + "auto_GB_chat.deepseek.com_0", + 0, + "^https?://(www\\.)?chat\\.deepseek\\.com/", + 10, + [], + [ + { + "e": 1158 + } + ], + [ + { + "v": 1158 + } + ], + [ + { + "text": "Necessary cookies only", + "c": 1158 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_chatsworth.org_0", + 0, + "^https?://(www\\.)?chatsworth\\.org/", + 10, + [], + [ + { + "e": 1159 + } + ], + [ + { + "v": 1159 + } + ], + [ + { + "c": 1159 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_cheapflights.co.uk_0_+1", + 0, + "^https?://(www\\.)?cheapflights\\.co\\.uk/|^https?://(www\\.)?momondo\\.co\\.uk/", + 10, + [], + [ + { + "e": 1642 + } + ], + [ + { + "v": 1642 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1642 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1642 + } + ], + {} + ], + [ + 1, + "auto_GB_chichester.gov.uk_0_+1", + 0, + "^https?://(www\\.)?chichester\\.gov\\.uk/|^https?://(www\\.)?gateshead\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2726 + } + ], + [ + { + "v": 2726 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2726 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2726 + } + ], + {} + ], + [ + 1, + "auto_GB_chilternseeds.co.uk_0", + 0, + "^https?://(www\\.)?chilternseeds\\.co\\.uk/", + 10, + [], + [ + { + "e": 2198 + } + ], + [ + { + "v": 2198 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2198 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2198 + } + ], + {} + ], + [ + 1, + "auto_GB_chipsaway.co.uk_mpi", + 0, + "^https?://(www\\.)?chipsaway\\.co\\.uk/", + 10, + [], + [ + { + "e": 2727 + } + ], + [ + { + "v": 2727 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2727 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2727 + } + ], + {} + ], + [ + 1, + "auto_GB_chrono24.co.uk_0_+1", + 0, + "^https?://(www\\.)?chrono24\\.co\\.uk/|^https?://(www\\.)?chrono24\\.com/", + 10, + [], + [ + { + "e": 1163 + } + ], + [ + { + "v": 1163 + } + ], + [ + { + "c": 1163 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_churchinwales.org.uk_0", + 0, + "^https?://(www\\.)?churchinwales\\.org\\.uk/", + 10, + [], + [ + { + "e": 1164 + } + ], + [ + { + "v": 1164 + } + ], + [ + { + "text": "Decline", + "c": 1164 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_cinch.co.uk_pj2", + 0, + "^https?://(www\\.)?cinch\\.co\\.uk/", + 10, + [], + [ + { + "e": 2728 + } + ], + [ + { + "v": 2728 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2728 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2728 + } + ], + {} + ], + [ + 1, + "auto_GB_citizenwatch.co.uk_0", + 0, + "^https?://(www\\.)?citizenwatch\\.co\\.uk/", + 10, + [], + [ + { + "e": 2200 + } + ], + [ + { + "v": 2200 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2200 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2200 + } + ], + {} + ], + [ + 1, + "auto_GB_citroen.co.uk_0_+2", + 0, + "^https?://(www\\.)?citroen\\.co\\.uk/|^https?://(www\\.)?peugeot\\.co\\.uk/|^https?://(www\\.)?vauxhall\\.co\\.uk/", + 10, + [], + [ + { + "e": 1789 + } + ], + [ + { + "v": 1789 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1789 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1789 + } + ], + {} + ], + [ + 1, + "auto_GB_club.autodoc.co.uk_0", + 0, + "^https?://(www\\.)?club\\.autodoc\\.co\\.uk/", + 10, + [], + [ + { + "e": 1167 + } + ], + [ + { + "v": 1167 + } + ], + [ + { + "c": 1167 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_co-operativebank.co.uk_vgv_+1", + 0, + "^https?://(www\\.)?co-operativebank\\.co\\.uk/|^https?://(www\\.)?smile\\.co\\.uk/", + 10, + [], + [ + { + "e": 2201 + } + ], + [ + { + "v": 2201 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2201 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2201 + } + ], + {} + ], + [ + 1, + "auto_GB_codeweavers.com_gdv", + 0, + "^https?://(www\\.)?codeweavers\\.com/", + 10, + [], + [ + { + "e": 2202 + } + ], + [ + { + "v": 2202 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2202 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2202 + } + ], + {} + ], + [ + 1, + "auto_GB_cognitoedu.org_a7t", + 0, + "^https?://(www\\.)?cognitoedu\\.org/", + 10, + [], + [ + { + "e": 3005 + } + ], + [ + { + "v": 3005 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3005 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3005 + } + ], + {} + ], + [ + 1, + "auto_GB_college.police.uk_0", + 0, + "^https?://(www\\.)?college\\.police\\.uk/", + 10, + [], + [ + { + "e": 2203 + } + ], + [ + { + "v": 2203 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2203 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2203 + } + ], + {} + ], + [ + 1, + "auto_GB_commission.europa.eu_o3q_+1", + 0, + "^https?://(www\\.)?commission\\.europa\\.eu/|^https?://(www\\.)?european-union\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1170 + } + ], + [ + { + "v": 1170 + } + ], + [ + { + "c": 1170 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_community.arubanetworks.com_cxu", + 0, + "^https?://(www\\.)?community\\.arubanetworks\\.com/", + 10, + [], + [ + { + "e": 1003 + } + ], + [ + { + "v": 1003 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1003 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1003 + } + ], + {} + ], + [ + 1, + "auto_GB_community.virginmedia.com_0_+3", + 0, + "^https?://(www\\.)?community\\.virginmedia\\.com/|^https?://(www\\.)?o2\\.co\\.uk/|^https?://(www\\.)?virginmedia\\.com/|^https?://(www\\.)?virginmediao2\\.co\\.uk/", + 10, + [], + [ + { + "e": 2204 + } + ], + [ + { + "v": 2204 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2204 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2204 + } + ], + {} + ], + [ + 1, + "auto_GB_compareholidaymoney.com_0", + 0, + "^https?://(www\\.)?compareholidaymoney\\.com/", + 10, + [], + [ + { + "e": 2205 + } + ], + [ + { + "v": 2205 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2205 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2205 + } + ], + {} + ], + [ + 1, + "auto_GB_condorferries.co.uk_r1r", + 0, + "^https?://(www\\.)?condorferries\\.co\\.uk/", + 10, + [], + [ + { + "e": 1173 + } + ], + [ + { + "v": 1173 + } + ], + [ + { + "c": 1173 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_confused.com_0", + 0, + "^https?://(www\\.)?confused\\.com/", + 10, + [], + [ + { + "e": 2206 + } + ], + [ + { + "v": 2206 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2206 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2206 + } + ], + {} + ], + [ + 1, + "auto_GB_cookpad.com_0", + 0, + "^https?://(www\\.)?cookpad\\.com/", + 10, + [], + [ + { + "e": 1175 + } + ], + [ + { + "v": 1175 + } + ], + [ + { + "c": 1175 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_core.ac.uk_0", + 0, + "^https?://(www\\.)?core\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1176 + } + ], + [ + { + "v": 1176 + } + ], + [ + { + "c": 1176 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_corporate.marksandspencer.com_y49_+1", + 0, + "^https?://(www\\.)?corporate\\.marksandspencer\\.com/|^https?://(www\\.)?rolls-royce\\.com/", + 10, + [], + [ + { + "e": 2207 + } + ], + [ + { + "v": 2207 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2207 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2207 + } + ], + {} + ], + [ + 1, + "auto_GB_costco.co.uk_0", + 0, + "^https?://(www\\.)?costco\\.co\\.uk/", + 10, + [], + [ + { + "e": 2208 + } + ], + [ + { + "v": 2208 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2208 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2208 + } + ], + {} + ], + [ + 1, + "auto_GB_cotswoldcameras.co.uk_0", + 0, + "^https?://(www\\.)?cotswoldcameras\\.co\\.uk/", + 10, + [], + [ + { + "e": 2209 + } + ], + [ + { + "v": 2209 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2209 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2209 + } + ], + {} + ], + [ + 1, + "auto_GB_cottonpatch.co.uk_0", + 0, + "^https?://(www\\.)?cottonpatch\\.co\\.uk/", + 10, + [], + [ + { + "e": 2210 + } + ], + [ + { + "v": 2210 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2210 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2210 + } + ], + {} + ], + [ + 1, + "auto_GB_coventrybuildingsociety.co.uk_0", + 0, + "^https?://(www\\.)?coventrybuildingsociety\\.co\\.uk/", + 10, + [], + [ + { + "e": 2211 + } + ], + [ + { + "v": 2211 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2211 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2211 + } + ], + {} + ], + [ + 1, + "auto_GB_cpfc.co.uk_0", + 0, + "^https?://(www\\.)?cpfc\\.co\\.uk/", + 10, + [], + [ + { + "e": 1181 + } + ], + [ + { + "v": 1181 + } + ], + [ + { + "c": 1181 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_craftcourses.com_tif", + 0, + "^https?://(www\\.)?craftcourses\\.com/", + 10, + [], + [ + { + "e": 2212 + } + ], + [ + { + "v": 2212 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2212 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2212 + } + ], + {} + ], + [ + 1, + "auto_GB_create.roblox.com_m71", + 0, + "^https?://(www\\.)?create\\.roblox\\.com/", + 10, + [], + [ + { + "e": 1182 + } + ], + [ + { + "v": 1182 + } + ], + [ + { + "c": 1182 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_creditkarma.co.uk_0", + 0, + "^https?://(www\\.)?creditkarma\\.co\\.uk/", + 10, + [], + [ + { + "e": 2213 + } + ], + [ + { + "v": 2213 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2213 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2213 + } + ], + {} + ], + [ + 1, + "auto_GB_cryptonews.com_0", + 0, + "^https?://(www\\.)?cryptonews\\.com/", + 10, + [], + [ + { + "e": 1113 + } + ], + [ + { + "v": 1113 + } + ], + [ + { + "c": 1113 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_currys.ie_0", + 0, + "^https?://(www\\.)?currys\\.ie/", + 10, + [], + [ + { + "e": 2214 + } + ], + [ + { + "v": 2214 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2214 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2214 + } + ], + {} + ], + [ + 1, + "auto_GB_curvissa.co.uk_ndd", + 0, + "^https?://(www\\.)?curvissa\\.co\\.uk/", + 10, + [], + [ + { + "e": 1185 + } + ], + [ + { + "v": 1185 + } + ], + [ + { + "c": 1185 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_daikin.co.uk_0", + 0, + "^https?://(www\\.)?daikin\\.co\\.uk/", + 10, + [], + [ + { + "e": 2215 + } + ], + [ + { + "v": 2215 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2215 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2215 + } + ], + {} + ], + [ + 1, + "auto_GB_dashboard.stripe.com_0", + 0, + "^https?://(www\\.)?dashboard\\.stripe\\.com/", + 10, + [], + [ + { + "e": 1187 + } + ], + [ + { + "v": 1187 + } + ], + [ + { + "c": 1187 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_de.pornhub.org_0_+7", + 0, + "^https?://(www\\.)?de\\.pornhub\\.org/|^https?://(www\\.)?es\\.pornhub\\.com/|^https?://(www\\.)?fr\\.pornhub\\.com/|^https?://(www\\.)?it\\.pornhub\\.com/|^https?://(www\\.)?nl\\.pornhub\\.com/|^https?://(www\\.)?pl\\.pornhub\\.com/|^https?://(www\\.)?rt\\.pornhub\\.com/|^https?://(www\\.)?thumbzilla\\.com/", + 10, + [], + [ + { + "e": 1188 + } + ], + [ + { + "v": 1188 + } + ], + [ + { + "c": 1188 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_deepl.com_0", + 0, + "^https?://(www\\.)?deepl\\.com/", + 10, + [], + [ + { + "e": 1560 + } + ], + [ + { + "v": 1560 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1560 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1560 + } + ], + {} + ], + [ + 1, + "auto_GB_deezer.com_0", + 0, + "^https?://(www\\.)?deezer\\.com/", + 10, + [], + [ + { + "e": 1190 + } + ], + [ + { + "v": 1190 + } + ], + [ + { + "c": 1190 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_degruyterbrill.com_0", + 0, + "^https?://(www\\.)?degruyterbrill\\.com/", + 10, + [], + [ + { + "e": 1561 + } + ], + [ + { + "v": 1561 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1561 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1561 + } + ], + {} + ], + [ + 1, + "auto_GB_dietdoctor.com_1", + 0, + "^https?://(www\\.)?dietdoctor\\.com/", + 10, + [], + [ + { + "e": 1192 + } + ], + [ + { + "v": 1192 + } + ], + [ + { + "c": 1192 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_disneylandparis.com_njk", + 0, + "^https?://(www\\.)?disneylandparis\\.com/", + 10, + [], + [ + { + "e": 1097 + } + ], + [ + { + "v": 1097 + } + ], + [ + { + "c": 1097 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_dobbies.com_0", + 0, + "^https?://(www\\.)?dobbies\\.com/", + 10, + [], + [ + { + "e": 2216 + } + ], + [ + { + "v": 2216 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2216 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2216 + } + ], + {} + ], + [ + 1, + "auto_GB_docs.gradle.org_0", + 0, + "^https?://(www\\.)?docs\\.gradle\\.org/", + 10, + [], + [ + { + "e": 1194 + } + ], + [ + { + "v": 1194 + } + ], + [ + { + "c": 1194 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_docs.snowflake.com_0", + 0, + "^https?://(www\\.)?docs\\.snowflake\\.com/", + 10, + [], + [ + { + "e": 1195 + } + ], + [ + { + "v": 1195 + } + ], + [ + { + "c": 1195 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_docs.streamlit.io_0", + 0, + "^https?://(www\\.)?docs\\.streamlit\\.io/", + 10, + [], + [ + { + "e": 1196 + } + ], + [ + { + "v": 1196 + } + ], + [ + { + "text": "Reject all", + "c": 1196 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_dpd.com_0", + 0, + "^https?://(www\\.)?dpd\\.com/", + 10, + [], + [ + { + "e": 1198 + } + ], + [ + { + "v": 1198 + } + ], + [ + { + "c": 1198 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_draytek.co.uk_m46", + 0, + "^https?://(www\\.)?draytek\\.co\\.uk/", + 10, + [], + [ + { + "e": 2729 + } + ], + [ + { + "v": 2729 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2729 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2729 + } + ], + {} + ], + [ + 1, + "auto_GB_drfrost.org_0", + 0, + "^https?://(www\\.)?drfrost\\.org/", + 10, + [], + [ + { + "e": 2730 + } + ], + [ + { + "v": 2730 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2730 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2730 + } + ], + {} + ], + [ + 1, + "auto_GB_dunsterhouse.co.uk_0", + 0, + "^https?://(www\\.)?dunsterhouse\\.co\\.uk/", + 10, + [], + [ + { + "e": 2218 + } + ], + [ + { + "v": 2218 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2218 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2218 + } + ], + {} + ], + [ + 1, + "auto_GB_durhamcathedral.co.uk_0", + 0, + "^https?://(www\\.)?durhamcathedral\\.co\\.uk/", + 10, + [], + [ + { + "e": 1202 + } + ], + [ + { + "v": 1202 + } + ], + [ + { + "text": "Deny all", + "c": 1202 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_dxdelivery.com_0", + 0, + "^https?://(www\\.)?dxdelivery\\.com/", + 10, + [], + [ + { + "e": 2219 + } + ], + [ + { + "v": 2219 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2219 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2219 + } + ], + {} + ], + [ + 1, + "auto_GB_eastriding.gov.uk_0", + 0, + "^https?://(www\\.)?eastriding\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2220 + } + ], + [ + { + "v": 2220 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2220 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2220 + } + ], + {} + ], + [ + 1, + "auto_GB_echa.europa.eu_fxe", + 0, + "^https?://(www\\.)?echa\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1562 + } + ], + [ + { + "v": 1562 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1562 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1562 + } + ], + {} + ], + [ + 1, + "auto_GB_ecosia.org_0", + 0, + "^https?://(www\\.)?ecosia\\.org/", + 10, + [], + [ + { + "e": 1205 + } + ], + [ + { + "v": 1205 + } + ], + [ + { + "c": 1205 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_edinburghcastle.scot_h2e", + 0, + "^https?://(www\\.)?edinburghcastle\\.scot/", + 10, + [], + [ + { + "e": 1563 + } + ], + [ + { + "v": 1563 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1563 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1563 + } + ], + {} + ], + [ + 1, + "auto_GB_eduqas.co.uk_0", + 0, + "^https?://(www\\.)?eduqas\\.co\\.uk/", + 10, + [], + [ + { + "e": 1206 + } + ], + [ + { + "v": 1206 + } + ], + [ + { + "c": 1206 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_electrical.theiet.org_0", + 0, + "^https?://(www\\.)?electrical\\.theiet\\.org/", + 10, + [], + [ + { + "e": 3006 + } + ], + [ + { + "v": 3006 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3006 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3006 + } + ], + {} + ], + [ + 1, + "auto_GB_ema.europa.eu_3wt", + 0, + "^https?://(www\\.)?ema\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1564 + } + ], + [ + { + "v": 1564 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1564 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1564 + } + ], + {} + ], + [ + 1, + "auto_GB_emberinns.co.uk_0", + 0, + "^https?://(www\\.)?emberinns\\.co\\.uk/", + 10, + [], + [ + { + "e": 1210 + } + ], + [ + { + "v": 1210 + } + ], + [ + { + "text": "REJECT COOKIES", + "c": 1210 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_en.community.sonos.com_0_+1", + 0, + "^https?://(www\\.)?en\\.community\\.sonos\\.com/|^https?://(www\\.)?forum\\.ovoenergy\\.com/", + 10, + [], + [ + { + "e": 1008 + } + ], + [ + { + "v": 1008 + } + ], + [ + { + "c": 1008 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_en.powys.gov.uk_0", + 0, + "^https?://(www\\.)?en\\.powys\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2221 + } + ], + [ + { + "v": 2221 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2221 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2221 + } + ], + {} + ], + [ + 1, + "auto_GB_engadget.com_0", + 0, + "^https?://(www\\.)?engadget\\.com/", + 10, + [], + [ + { + "e": 1598 + } + ], + [ + { + "v": 1598 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1598 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1598 + } + ], + {} + ], + [ + 1, + "auto_GB_englandgolf.org_0", + 0, + "^https?://(www\\.)?englandgolf\\.org/", + 10, + [], + [ + { + "e": 1213 + } + ], + [ + { + "v": 1213 + } + ], + [ + { + "text": "Accept strictly necessary cookies", + "c": 1213 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_engx.theiet.org_0_+1", + 0, + "^https?://(www\\.)?engx\\.theiet\\.org/|^https?://(www\\.)?theiet\\.org/", + 10, + [], + [ + { + "e": 1207 + } + ], + [ + { + "v": 1207 + } + ], + [ + { + "c": 1207 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_espares.co.uk_9cm", + 0, + "^https?://(www\\.)?espares\\.co\\.uk/", + 10, + [], + [ + { + "e": 2731 + } + ], + [ + { + "v": 2731 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2731 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2731 + } + ], + {} + ], + [ + 1, + "auto_GB_eur-lex.europa.eu_l7d", + 0, + "^https?://(www\\.)?eur-lex\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1215 + } + ], + [ + { + "v": 1215 + } + ], + [ + { + "c": 1215 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_europarl.europa.eu_0", + 0, + "^https?://(www\\.)?europarl\\.europa\\.eu/", + 10, + [], + [ + { + "e": 1216 + } + ], + [ + { + "v": 1216 + } + ], + [ + { + "c": 1216 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_everysaving.co.uk_38t", + 0, + "^https?://(www\\.)?everysaving\\.co\\.uk/", + 10, + [], + [ + { + "e": 1217 + } + ], + [ + { + "v": 1217 + } + ], + [ + { + "c": 1217 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ewm.co.uk_0_+1", + 0, + "^https?://(www\\.)?ewm\\.co\\.uk/|^https?://(www\\.)?moss-europe\\.co\\.uk/", + 10, + [], + [ + { + "e": 1115 + } + ], + [ + { + "v": 1115 + } + ], + [ + { + "text": "DENY", + "c": 1115 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ewrc-results.com_y5f", + 0, + "^https?://(www\\.)?ewrc-results\\.com/", + 10, + [], + [ + { + "e": 3007 + } + ], + [ + { + "v": 3007 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3007 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3007 + } + ], + {} + ], + [ + 1, + "auto_GB_excel.london_0", + 0, + "^https?://(www\\.)?excel\\.london/", + 10, + [], + [ + { + "e": 2732 + } + ], + [ + { + "v": 2732 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2732 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2732 + } + ], + {} + ], + [ + 1, + "auto_GB_f-secure.com_ijf", + 0, + "^https?://(www\\.)?f-secure\\.com/", + 10, + [], + [ + { + "e": 1565 + } + ], + [ + { + "v": 1565 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1565 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1565 + } + ], + {} + ], + [ + 1, + "auto_GB_f6s.com_221", + 0, + "^https?://(www\\.)?f6s\\.com/", + 10, + [], + [ + { + "e": 1953 + } + ], + [ + { + "v": 1953 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1953 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1953 + } + ], + {} + ], + [ + 1, + "auto_GB_fanatics.co.uk_0", + 0, + "^https?://(www\\.)?fanatics\\.co\\.uk/", + 10, + [], + [ + { + "e": 1219 + } + ], + [ + { + "v": 1219 + } + ], + [ + { + "c": 1219 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_faphouse.com_0", + 0, + "^https?://(www\\.)?faphouse\\.com/", + 10, + [], + [ + { + "e": 1220 + } + ], + [ + { + "v": 1220 + } + ], + [ + { + "c": 1220 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_fapjerks.com_0", + 0, + "^https?://(www\\.)?fapjerks\\.com/", + 10, + [], + [ + { + "e": 1221 + } + ], + [ + { + "v": 1221 + } + ], + [ + { + "c": 1221 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_fareham.gov.uk_0", + 0, + "^https?://(www\\.)?fareham\\.gov\\.uk/", + 10, + [], + [ + { + "e": 1222 + } + ], + [ + { + "v": 1222 + } + ], + [ + { + "text": "I Do Not Accept", + "c": 1222 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_farfetch.com_0", + 0, + "^https?://(www\\.)?farfetch\\.com/", + 10, + [], + [ + { + "e": 1223 + } + ], + [ + { + "v": 1223 + } + ], + [ + { + "c": 1223 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_farmfoods.co.uk_0", + 0, + "^https?://(www\\.)?farmfoods\\.co\\.uk/", + 10, + [], + [ + { + "e": 2223 + } + ], + [ + { + "v": 2223 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2223 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2223 + } + ], + {} + ], + [ + 1, + "auto_GB_fawkes-cycles.co.uk_0_+2", + 0, + "^https?://(www\\.)?fawkes-cycles\\.co\\.uk/|^https?://(www\\.)?ldmountaincentre\\.com/|^https?://(www\\.)?outdooraction\\.co\\.uk/", + 10, + [], + [ + { + "e": 2197 + } + ], + [ + { + "v": 2197 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2197 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2197 + } + ], + {} + ], + [ + 1, + "auto_GB_fca.org.uk_9p9", + 0, + "^https?://(www\\.)?fca\\.org\\.uk/", + 10, + [], + [ + { + "e": 2224 + } + ], + [ + { + "v": 2224 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2224 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2224 + } + ], + {} + ], + [ + 1, + "auto_GB_fife.gov.uk_0", + 0, + "^https?://(www\\.)?fife\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2225 + } + ], + [ + { + "v": 2225 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2225 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2225 + } + ], + {} + ], + [ + 1, + "auto_GB_fifecountry.co.uk_t26", + 0, + "^https?://(www\\.)?fifecountry\\.co\\.uk/", + 10, + [], + [ + { + "e": 2733 + } + ], + [ + { + "v": 2733 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2733 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2733 + } + ], + {} + ], + [ + 1, + "auto_GB_filofax.com_uxo", + 0, + "^https?://(www\\.)?filofax\\.com/", + 10, + [], + [ + { + "e": 1764 + } + ], + [ + { + "v": 1764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1764 + } + ], + {} + ], + [ + 1, + "auto_GB_firstclasswatches.co.uk_0", + 0, + "^https?://(www\\.)?firstclasswatches\\.co\\.uk/", + 10, + [], + [ + { + "e": 2226 + } + ], + [ + { + "v": 2226 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2226 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2226 + } + ], + {} + ], + [ + 1, + "auto_GB_fishpal.com_0", + 0, + "^https?://(www\\.)?fishpal\\.com/", + 10, + [], + [ + { + "e": 1137 + } + ], + [ + { + "v": 1137 + } + ], + [ + { + "c": 1137 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_fixpart.co.uk_0", + 0, + "^https?://(www\\.)?fixpart\\.co\\.uk/", + 10, + [], + [ + { + "e": 1825 + } + ], + [ + { + "v": 1825 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1825 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1825 + } + ], + {} + ], + [ + 1, + "auto_GB_flooringhut.co.uk_0", + 0, + "^https?://(www\\.)?flooringhut\\.co\\.uk/", + 10, + [], + [ + { + "e": 1229 + } + ], + [ + { + "v": 1229 + } + ], + [ + { + "text": "Decline", + "c": 1229 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ford.co.uk_0", + 0, + "^https?://(www\\.)?ford\\.co\\.uk/", + 10, + [], + [ + { + "e": 2227 + } + ], + [ + { + "v": 2227 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2227 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2227 + } + ], + {} + ], + [ + 1, + "auto_GB_fordmoney.co.uk_0", + 0, + "^https?://(www\\.)?fordmoney\\.co\\.uk/", + 10, + [], + [ + { + "e": 2228 + } + ], + [ + { + "v": 2228 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2228 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2228 + } + ], + {} + ], + [ + 1, + "auto_GB_forum.affinity.serif.com_0_+3", + 0, + "^https?://(www\\.)?forum\\.affinity\\.serif\\.com/|^https?://(www\\.)?forums\\.malwarebytes\\.com/|^https?://(www\\.)?stargazerslounge\\.com/|^https?://(www\\.)?vintagestory\\.at/", + 10, + [], + [ + { + "e": 1096 + } + ], + [ + { + "v": 1096 + } + ], + [ + { + "c": 1096 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_forum.figma.com_0", + 0, + "^https?://(www\\.)?forum\\.figma\\.com/", + 10, + [], + [ + { + "e": 1232 + } + ], + [ + { + "v": 1232 + } + ], + [ + { + "text": "Deny all", + "c": 1232 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_forum.prusa3d.com_0", + 0, + "^https?://(www\\.)?forum\\.prusa3d\\.com/", + 10, + [], + [ + { + "e": 1036 + } + ], + [ + { + "v": 1036 + } + ], + [ + { + "c": 1036 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_foundryvtt.com_0", + 0, + "^https?://(www\\.)?foundryvtt\\.com/", + 10, + [], + [ + { + "e": 1234 + } + ], + [ + { + "v": 1234 + } + ], + [ + { + "c": 1234 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_frames.co.uk_s59", + 0, + "^https?://(www\\.)?frames\\.co\\.uk/", + 10, + [], + [ + { + "e": 2229 + } + ], + [ + { + "v": 2229 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2229 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2229 + } + ], + {} + ], + [ + 1, + "auto_GB_france24.com_0", + 0, + "^https?://(www\\.)?france24\\.com/", + 10, + [], + [ + { + "e": 1212 + } + ], + [ + { + "v": 1212 + } + ], + [ + { + "c": 1212 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_fredolsencruises.com_0", + 0, + "^https?://(www\\.)?fredolsencruises\\.com/", + 10, + [], + [ + { + "e": 2119 + } + ], + [ + { + "v": 2119 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2119 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2119 + } + ], + {} + ], + [ + 1, + "auto_GB_freemans.com_0_+2", + 0, + "^https?://(www\\.)?freemans\\.com/|^https?://(www\\.)?grattan\\.co\\.uk/|^https?://(www\\.)?kaleidoscope\\.co\\.uk/", + 10, + [], + [ + { + "e": 2230 + } + ], + [ + { + "v": 2230 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2230 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2230 + } + ], + {} + ], + [ + 1, + "auto_GB_fresha.com_i5v", + 0, + "^https?://(www\\.)?fresha\\.com/", + 10, + [], + [ + { + "e": 2734 + } + ], + [ + { + "v": 2734 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2734 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2734 + } + ], + {} + ], + [ + 1, + "auto_GB_fuseenergy.com_0nl_+1", + 0, + "^https?://(www\\.)?fuseenergy\\.com/|^https?://(www\\.)?apxml\\.com/", + 10, + [], + [ + { + "e": 2231 + } + ], + [ + { + "v": 2231 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2231 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2231 + } + ], + {} + ], + [ + 1, + "auto_GB_garden4less.co.uk_0", + 0, + "^https?://(www\\.)?garden4less\\.co\\.uk/", + 10, + [], + [ + { + "e": 1236 + } + ], + [ + { + "v": 1236 + } + ], + [ + { + "c": 1236 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_gardenbuildingsdirect.co.uk_zq0", + 0, + "^https?://(www\\.)?gardenbuildingsdirect\\.co\\.uk/", + 10, + [], + [ + { + "e": 1237 + } + ], + [ + { + "v": 1237 + } + ], + [ + { + "c": 1237 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ge.xhamster.desi_76s", + 0, + "^https?://(www\\.)?ge\\.xhamster\\.desi/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_GB_genome.ch.bbc.co.uk_0", + 0, + "^https?://(www\\.)?careers\\.bbc\\.co\\.uk/", + 10, + [], + [ + { + "e": 2232 + } + ], + [ + { + "v": 2232 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2232 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2232 + } + ], + {} + ], + [ + 1, + "auto_GB_getchip.uk_0", + 0, + "^https?://(www\\.)?getchip\\.uk/", + 10, + [], + [ + { + "e": 1241 + } + ], + [ + { + "v": 1241 + } + ], + [ + { + "c": 1241 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_giant-bicycles.com_0", + 0, + "^https?://(www\\.)?giant-bicycles\\.com/", + 10, + [], + [ + { + "e": 1242 + } + ], + [ + { + "v": 1242 + } + ], + [ + { + "c": 1242 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_giffgaff.com_0", + 0, + "^https?://(www\\.)?giffgaff\\.com/", + 10, + [], + [ + { + "e": 1243 + } + ], + [ + { + "v": 1243 + } + ], + [ + { + "c": 1243 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_gigsandtours.com_wez", + 0, + "^https?://(www\\.)?gigsandtours\\.com/", + 10, + [], + [ + { + "e": 1696 + } + ], + [ + { + "v": 1696 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1696 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1696 + } + ], + {} + ], + [ + 1, + "auto_GB_glassesdirect.co.uk_bt9", + 0, + "^https?://(www\\.)?glassesdirect\\.co\\.uk/", + 10, + [], + [ + { + "e": 2735 + } + ], + [ + { + "v": 2735 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2735 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2735 + } + ], + {} + ], + [ + 1, + "auto_GB_gmc-uk.org_0", + 0, + "^https?://(www\\.)?gmc-uk\\.org/", + 10, + [], + [ + { + "e": 2233 + } + ], + [ + { + "v": 2233 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2233 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2233 + } + ], + {} + ], + [ + 1, + "auto_GB_gold-traders.co.uk_0", + 0, + "^https?://(www\\.)?gold-traders\\.co\\.uk/", + 10, + [], + [ + { + "e": 2234 + } + ], + [ + { + "v": 2234 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2234 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2234 + } + ], + {} + ], + [ + 1, + "auto_GB_goodenergy.co.uk_0", + 0, + "^https?://(www\\.)?goodenergy\\.co\\.uk/", + 10, + [], + [ + { + "e": 2736 + } + ], + [ + { + "v": 2736 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2736 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2736 + } + ], + {} + ], + [ + 1, + "auto_GB_gramophone.co.uk_62h", + 0, + "^https?://(www\\.)?gramophone\\.co\\.uk/", + 10, + [], + [ + { + "e": 2235 + } + ], + [ + { + "v": 2235 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2235 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2235 + } + ], + {} + ], + [ + 1, + "auto_GB_guildford.gov.uk_0_+1", + 0, + "^https?://(www\\.)?guildford\\.gov\\.uk/|^https?://(www\\.)?sunderland\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2236 + } + ], + [ + { + "v": 2236 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2236 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2236 + } + ], + {} + ], + [ + 1, + "auto_GB_handbook.fca.org.uk_0", + 0, + "^https?://(www\\.)?handbook\\.fca\\.org\\.uk/", + 10, + [], + [ + { + "e": 2237 + } + ], + [ + { + "v": 2237 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2237 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2237 + } + ], + {} + ], + [ + 1, + "auto_GB_harvester.co.uk_0_+3", + 0, + "^https?://(www\\.)?harvester\\.co\\.uk/|^https?://(www\\.)?millerandcarter\\.co\\.uk/|^https?://(www\\.)?tobycarvery\\.co\\.uk/|^https?://(www\\.)?vintageinn\\.co\\.uk/", + 10, + [], + [ + { + "e": 2238 + } + ], + [ + { + "v": 2238 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2238 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2238 + } + ], + {} + ], + [ + 1, + "auto_GB_healf.com_0", + 0, + "^https?://(www\\.)?healf\\.com/", + 10, + [], + [ + { + "e": 2239 + } + ], + [ + { + "v": 2239 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2239 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2239 + } + ], + {} + ], + [ + 1, + "auto_GB_healthspan.co.uk_q4v", + 0, + "^https?://(www\\.)?healthspan\\.co\\.uk/", + 10, + [], + [ + { + "e": 2737 + } + ], + [ + { + "v": 2737 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2737 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2737 + } + ], + {} + ], + [ + 1, + "auto_GB_helmetcity.co.uk_0", + 0, + "^https?://(www\\.)?helmetcity\\.co\\.uk/", + 10, + [], + [ + { + "e": 1252 + } + ], + [ + { + "v": 1252 + } + ], + [ + { + "c": 1252 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_help.revolut.com_0_+1", + 0, + "^https?://(www\\.)?help\\.revolut\\.com/|^https?://(www\\.)?revolut\\.com/", + 10, + [], + [ + { + "e": 1253 + } + ], + [ + { + "v": 1253 + } + ], + [ + { + "c": 1253 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_help.solidworks.com_0", + 0, + "^https?://(www\\.)?help\\.solidworks\\.com/", + 10, + [], + [ + { + "e": 1254 + } + ], + [ + { + "v": 1254 + } + ], + [ + { + "text": "Continue with only necessary cookies", + "c": 1254 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_help.starlingbank.com_nvv_+1", + 0, + "^https?://(www\\.)?help\\.starlingbank\\.com/|^https?://(www\\.)?starlingbank\\.com/", + 10, + [], + [ + { + "e": 2293 + } + ], + [ + { + "v": 2293 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2293 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2293 + } + ], + {} + ], + [ + 1, + "auto_GB_hero-wars.com_0", + 0, + "^https?://(www\\.)?hero-wars\\.com/", + 10, + [], + [ + { + "e": 1255 + } + ], + [ + { + "v": 1255 + } + ], + [ + { + "text": "Accept essential only", + "c": 1255 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hetzner.com_ar5", + 0, + "^https?://(www\\.)?hetzner\\.com/", + 10, + [], + [ + { + "e": 1256 + } + ], + [ + { + "v": 1256 + } + ], + [ + { + "c": 1256 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hikvision.com_0", + 0, + "^https?://(www\\.)?hikvision\\.com/", + 10, + [], + [ + { + "e": 1257 + } + ], + [ + { + "v": 1257 + } + ], + [ + { + "c": 1257 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_historicenvironment.scot_0", + 0, + "^https?://(www\\.)?historicenvironment\\.scot/", + 10, + [], + [ + { + "e": 1258 + } + ], + [ + { + "v": 1258 + } + ], + [ + { + "c": 1258 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hmd.com_0", + 0, + "^https?://(www\\.)?hmd\\.com/", + 10, + [], + [ + { + "e": 1259 + } + ], + [ + { + "v": 1259 + } + ], + [ + { + "c": 1259 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hmv.com_nt4", + 0, + "^https?://(www\\.)?hmv\\.com/", + 10, + [], + [ + { + "e": 2240 + } + ], + [ + { + "v": 2240 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2240 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2240 + } + ], + {} + ], + [ + 1, + "auto_GB_homeserve.co.uk_0", + 0, + "^https?://(www\\.)?homeserve\\.co\\.uk/", + 10, + [], + [ + { + "e": 2241 + } + ], + [ + { + "v": 2241 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2241 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2241 + } + ], + {} + ], + [ + 1, + "auto_GB_homeswapper.co.uk_x3o", + 0, + "^https?://(www\\.)?homeswapper\\.co\\.uk/", + 10, + [], + [ + { + "e": 2242 + } + ], + [ + { + "v": 2242 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2242 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2242 + } + ], + {} + ], + [ + 1, + "auto_GB_honor.com_0", + 0, + "^https?://(www\\.)?honor\\.com/", + 10, + [], + [ + { + "e": 1262 + } + ], + [ + { + "v": 1262 + } + ], + [ + { + "c": 1262 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hostinger.com_0", + 0, + "^https?://(www\\.)?hostinger\\.com/", + 10, + [], + [ + { + "e": 1263 + } + ], + [ + { + "v": 1263 + } + ], + [ + { + "c": 1263 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hotukdeals.com_0", + 0, + "^https?://(www\\.)?hotukdeals\\.com/", + 10, + [], + [ + { + "e": 2243 + } + ], + [ + { + "v": 2243 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2243 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2243 + } + ], + {} + ], + [ + 1, + "auto_GB_hrw.org_0", + 0, + "^https?://(www\\.)?hrw\\.org/", + 10, + [], + [ + { + "e": 1265 + } + ], + [ + { + "v": 1265 + } + ], + [ + { + "c": 1265 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_hypixel.net_0", + 0, + "^https?://(www\\.)?hypixel\\.net/", + 10, + [], + [ + { + "e": 1089 + } + ], + [ + { + "v": 1089 + } + ], + [ + { + "c": 1089 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ij.manual.canon_0", + 0, + "^https?://(www\\.)?ij\\.manual\\.canon/", + 10, + [], + [ + { + "e": 1266 + } + ], + [ + { + "v": 1266 + } + ], + [ + { + "c": 1266 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_immobiliare.it_0", + 0, + "^https?://(www\\.)?immobiliare\\.it/", + 10, + [], + [ + { + "e": 1267 + } + ], + [ + { + "v": 1267 + } + ], + [ + { + "c": 1267 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_imperial.nhs.uk_0", + 0, + "^https?://(www\\.)?imperial\\.nhs\\.uk/", + 10, + [], + [ + { + "e": 1115 + } + ], + [ + { + "v": 1115 + } + ], + [ + { + "text": "REJECT COOKIES", + "c": 1115 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_investcentre.co.uk_aq7", + 0, + "^https?://(www\\.)?investcentre\\.co\\.uk/", + 10, + [], + [ + { + "e": 2325 + } + ], + [ + { + "v": 2325 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2325 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2325 + } + ], + {} + ], + [ + 1, + "auto_GB_ionos.co.uk_c0a", + 0, + "^https?://(www\\.)?ionos\\.co\\.uk/", + 10, + [], + [ + { + "e": 2738 + } + ], + [ + { + "v": 2738 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2738 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2738 + } + ], + {} + ], + [ + 1, + "auto_GB_jlpjobs.com_0", + 0, + "^https?://(www\\.)?jlpjobs\\.com/", + 10, + [], + [ + { + "e": 2246 + } + ], + [ + { + "v": 2246 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2246 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2246 + } + ], + {} + ], + [ + 1, + "auto_GB_jw.org_0", + 0, + "^https?://(www\\.)?jw\\.org/", + 10, + [], + [ + { + "e": 1272 + } + ], + [ + { + "v": 1272 + } + ], + [ + { + "c": 1272 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_karenmillen.com_n1r_+1", + 0, + "^https?://(www\\.)?karenmillen\\.com/|^https?://(www\\.)?yamaha-motor\\.eu/", + 10, + [], + [ + { + "e": 1183 + } + ], + [ + { + "v": 1183 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1183 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1183 + } + ], + {} + ], + [ + 1, + "auto_GB_kent.gov.uk_0", + 0, + "^https?://(www\\.)?kent\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2247 + } + ], + [ + { + "v": 2247 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2247 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2247 + } + ], + {} + ], + [ + 1, + "auto_GB_kiaoval.com_0", + 0, + "^https?://(www\\.)?kiaoval\\.com/", + 10, + [], + [ + { + "e": 2248 + } + ], + [ + { + "v": 2248 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2248 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2248 + } + ], + {} + ], + [ + 1, + "auto_GB_kick.com_0", + 0, + "^https?://(www\\.)?kick\\.com/", + 10, + [], + [ + { + "e": 1275 + } + ], + [ + { + "v": 1275 + } + ], + [ + { + "c": 1275 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_kinopoisk.ru_0", + 0, + "^https?://(www\\.)?kinopoisk\\.ru/", + 10, + [], + [ + { + "e": 1397 + } + ], + [ + { + "v": 1397 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1397 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1397 + } + ], + {} + ], + [ + 1, + "auto_GB_kinsta.com_0", + 0, + "^https?://(www\\.)?kinsta\\.com/", + 10, + [], + [ + { + "e": 1277 + } + ], + [ + { + "v": 1277 + } + ], + [ + { + "c": 1277 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_kirklees.gov.uk_0", + 0, + "^https?://(www\\.)?kirklees\\.gov\\.uk/", + 10, + [], + [ + { + "e": 1278 + } + ], + [ + { + "v": 1278 + } + ], + [ + { + "c": 1278 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_kirkusreviews.com_0", + 0, + "^https?://(www\\.)?kirkusreviews\\.com/", + 10, + [], + [ + { + "e": 1279 + } + ], + [ + { + "v": 1279 + } + ], + [ + { + "c": 1279 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_knightfrank.co.uk_yl4", + 0, + "^https?://(www\\.)?knightfrank\\.co\\.uk/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_GB_kobo.com_0", + 0, + "^https?://(www\\.)?kobo\\.com/", + 10, + [], + [ + { + "e": 2739 + } + ], + [ + { + "v": 2739 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2739 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2739 + } + ], + {} + ], + [ + 1, + "auto_GB_lancaster.ac.uk_0", + 0, + "^https?://(www\\.)?lancaster\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1282 + } + ], + [ + { + "v": 1282 + } + ], + [ + { + "c": 1282 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_lionshome.co.uk_0", + 0, + "^https?://(www\\.)?lionshome\\.co\\.uk/", + 10, + [], + [ + { + "e": 1877 + } + ], + [ + { + "v": 1877 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1877 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1877 + } + ], + {} + ], + [ + 1, + "auto_GB_livejasmin.com_man", + 0, + "^https?://(www\\.)?livejasmin\\.com/", + 10, + [], + [ + { + "e": 812 + } + ], + [ + { + "v": 813 + } + ], + [ + { + "c": 813 + }, + { + "w": 814 + }, + { + "all": true, + "optional": true, + "k": 757 + }, + { + "k": 762 + } + ], + [ + { + "cc": 763 + } + ], + {} + ], + [ + 1, + "auto_GB_lloydspharmacy.com_0_+1", + 0, + "^https?://(www\\.)?lloydspharmacy\\.com/|^https?://(www\\.)?onlinedoctor\\.lloydspharmacy\\.com/", + 10, + [], + [ + { + "e": 2250 + } + ], + [ + { + "v": 2250 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2250 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2250 + } + ], + {} + ], + [ + 1, + "auto_GB_lnk.bio_0", + 0, + "^https?://(www\\.)?lnk\\.bio/", + 10, + [], + [ + { + "e": 1286 + } + ], + [ + { + "v": 1286 + } + ], + [ + { + "text": "Reject non-necessary", + "c": 1286 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_lovable.dev_4ul", + 0, + "^https?://(www\\.)?lovable\\.dev/", + 10, + [], + [ + { + "e": 1113 + } + ], + [ + { + "v": 1113 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1113 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1113 + } + ], + {} + ], + [ + 1, + "auto_GB_loveholidays.com_0", + 0, + "^https?://(www\\.)?loveholidays\\.com/", + 10, + [], + [ + { + "e": 2251 + } + ], + [ + { + "v": 2251 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2251 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2251 + } + ], + {} + ], + [ + 1, + "auto_GB_loyalfans.com_0", + 0, + "^https?://(www\\.)?loyalfans\\.com/", + 10, + [], + [ + { + "e": 1288 + } + ], + [ + { + "v": 1288 + } + ], + [ + { + "c": 1288 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_lpsg.com_0", + 0, + "^https?://(www\\.)?lpsg\\.com/", + 10, + [], + [ + { + "e": 1289 + } + ], + [ + { + "v": 1289 + } + ], + [ + { + "c": 1289 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_lush.com_0", + 0, + "^https?://(www\\.)?lush\\.com/", + 10, + [], + [ + { + "e": 1291 + } + ], + [ + { + "v": 1291 + } + ], + [ + { + "c": 1291 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_lustery.com_0", + 0, + "^https?://(www\\.)?lustery\\.com/", + 10, + [], + [ + { + "e": 1292 + } + ], + [ + { + "v": 1292 + } + ], + [ + { + "c": 1292 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_m.adultwork.com_p2h", + 0, + "^https?://(www\\.)?m\\.adultwork\\.com/", + 10, + [], + [ + { + "e": 3008 + } + ], + [ + { + "v": 3008 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3008 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3008 + } + ], + {} + ], + [ + 1, + "auto_GB_m.yandex.com_0_+2", + 0, + "^https?://(www\\.)?m\\.yandex\\.com/|^https?://(www\\.)?online\\.yandex\\.com/|^https?://(www\\.)?xmlsearch\\.yandex\\.ru/", + 10, + [], + [ + { + "e": 1276 + } + ], + [ + { + "v": 1276 + } + ], + [ + { + "text": "Allow essential cookies", + "c": 1276 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_maidstone.gov.uk_zkk_+2", + 0, + "^https?://(www\\.)?maidstone\\.gov\\.uk/|^https?://(www\\.)?torbayandsouthdevon\\.nhs\\.uk/|^https?://(www\\.)?york\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2307 + } + ], + [ + { + "v": 2307 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2307 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2307 + } + ], + {} + ], + [ + 1, + "auto_GB_mandg.com_yfh", + 0, + "^https?://(www\\.)?mandg\\.com/", + 10, + [], + [ + { + "e": 2207 + } + ], + [ + { + "v": 2207 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2207 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2207 + } + ], + {} + ], + [ + 1, + "auto_GB_manutd.com_0", + 0, + "^https?://(www\\.)?manutd\\.com/", + 10, + [], + [ + { + "e": 1293 + } + ], + [ + { + "v": 1293 + } + ], + [ + { + "c": 1293 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_maths.cam.ac.uk_wtp", + 0, + "^https?://(www\\.)?maths\\.cam\\.ac\\.uk/", + 10, + [], + [ + { + "e": 2740 + } + ], + [ + { + "v": 2740 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2740 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2740 + } + ], + {} + ], + [ + 1, + "auto_GB_mattressnextday.co.uk_6wm", + 0, + "^https?://(www\\.)?mattressnextday\\.co\\.uk/", + 10, + [], + [ + { + "e": 2741 + } + ], + [ + { + "v": 2741 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2741 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2741 + } + ], + {} + ], + [ + 1, + "auto_GB_matureporn.com_scs", + 0, + "^https?://(www\\.)?matureporn\\.com/", + 10, + [], + [ + { + "e": 2253 + } + ], + [ + { + "v": 2253 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2253 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2253 + } + ], + {} + ], + [ + 1, + "auto_GB_medbud.wiki_fig", + 0, + "^https?://(www\\.)?medbud\\.wiki/", + 10, + [], + [ + { + "e": 3009 + } + ], + [ + { + "v": 3009 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3009 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3009 + } + ], + {} + ], + [ + 1, + "auto_GB_menkind.co.uk_0", + 0, + "^https?://(www\\.)?menkind\\.co\\.uk/", + 10, + [], + [ + { + "e": 2217 + } + ], + [ + { + "v": 2217 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2217 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2217 + } + ], + {} + ], + [ + 1, + "auto_GB_mercuryholidays.co.uk_0", + 0, + "^https?://(www\\.)?mercuryholidays\\.co\\.uk/", + 10, + [], + [ + { + "e": 1294 + } + ], + [ + { + "v": 1294 + } + ], + [ + { + "c": 1294 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_methodist.org.uk_0", + 0, + "^https?://(www\\.)?methodist\\.org\\.uk/", + 10, + [], + [ + { + "e": 2254 + } + ], + [ + { + "v": 2254 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2254 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2254 + } + ], + {} + ], + [ + 1, + "auto_GB_milkandmore.co.uk_0", + 0, + "^https?://(www\\.)?milkandmore\\.co\\.uk/", + 10, + [], + [ + { + "e": 2255 + } + ], + [ + { + "v": 2255 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2255 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2255 + } + ], + {} + ], + [ + 1, + "auto_GB_minerva.com_0_+1", + 0, + "^https?://(www\\.)?minerva\\.com/|^https?://(www\\.)?nealsyardremedies\\.com/", + 10, + [], + [ + { + "e": 1115 + } + ], + [ + { + "v": 1115 + } + ], + [ + { + "text": "Deny", + "c": 1115 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_mobilephonesdirect.co.uk_a0f", + 0, + "^https?://(www\\.)?mobilephonesdirect\\.co\\.uk/", + 10, + [], + [ + { + "e": 2742 + } + ], + [ + { + "v": 2742 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2742 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2742 + } + ], + {} + ], + [ + 1, + "auto_GB_moneysupermarket.com_0", + 0, + "^https?://(www\\.)?moneysupermarket\\.com/", + 10, + [], + [ + { + "e": 2256 + } + ], + [ + { + "v": 2256 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2256 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2256 + } + ], + {} + ], + [ + 1, + "auto_GB_monkeytype.com_q7j", + 0, + "^https?://(www\\.)?monkeytype\\.com/", + 10, + [], + [ + { + "e": 1075 + } + ], + [ + { + "v": 1075 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1075 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1075 + } + ], + {} + ], + [ + 1, + "auto_GB_monzo.com_0", + 0, + "^https?://(www\\.)?monzo\\.com/", + 10, + [], + [ + { + "e": 3010 + } + ], + [ + { + "v": 3010 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3010 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3010 + } + ], + {} + ], + [ + 1, + "auto_GB_morphyrichards.co.uk_0", + 0, + "^https?://(www\\.)?morphyrichards\\.co\\.uk/", + 10, + [], + [ + { + "e": 1191 + } + ], + [ + { + "v": 1191 + } + ], + [ + { + "text": "Deny", + "c": 1191 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_morrisons.jobs_6bw", + 0, + "^https?://(www\\.)?morrisons\\.jobs/", + 10, + [], + [ + { + "e": 1099 + } + ], + [ + { + "v": 1099 + } + ], + [ + { + "c": 1099 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_motor-doctor.co.uk_0", + 0, + "^https?://(www\\.)?motor-doctor\\.co\\.uk/", + 10, + [], + [ + { + "e": 2743 + } + ], + [ + { + "v": 2743 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2743 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2743 + } + ], + {} + ], + [ + 1, + "auto_GB_mrporter.com_ayu", + 0, + "^https?://(www\\.)?mrporter\\.com/", + 10, + [], + [ + { + "e": 1097 + } + ], + [ + { + "v": 1097 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1097 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1097 + } + ], + {} + ], + [ + 1, + "auto_GB_msccruises.co.uk_0", + 0, + "^https?://(www\\.)?msccruises\\.co\\.uk/", + 10, + [], + [ + { + "e": 1300 + } + ], + [ + { + "v": 1300 + } + ], + [ + { + "c": 1300 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_muckbootcompany.co.uk_f5s_+1", + 0, + "^https?://(www\\.)?muckbootcompany\\.co\\.uk/|^https?://(www\\.)?uk\\.rarevinyl\\.com/", + 10, + [], + [ + { + "e": 2439 + } + ], + [ + { + "v": 2439 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2439 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2439 + } + ], + {} + ], + [ + 1, + "auto_GB_musiciansunion.org.uk_0", + 0, + "^https?://(www\\.)?musiciansunion\\.org\\.uk/", + 10, + [], + [ + { + "e": 2744 + } + ], + [ + { + "v": 2744 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2744 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2744 + } + ], + {} + ], + [ + 1, + "auto_GB_musicnotes.com_0", + 0, + "^https?://(www\\.)?musicnotes\\.com/", + 10, + [], + [ + { + "e": 1302 + } + ], + [ + { + "v": 1302 + } + ], + [ + { + "c": 1302 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_mypharmacy.co.uk_0", + 0, + "^https?://(www\\.)?mypharmacy\\.co\\.uk/", + 10, + [], + [ + { + "e": 1303 + } + ], + [ + { + "v": 1303 + } + ], + [ + { + "text": "DENY ALL", + "c": 1303 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_mytrainpal.com_0", + 0, + "^https?://(www\\.)?mytrainpal\\.com/", + 10, + [], + [ + { + "e": 2745 + } + ], + [ + { + "v": 2745 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2745 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2745 + } + ], + {} + ], + [ + 1, + "auto_GB_n-somerset.gov.uk_0", + 0, + "^https?://(www\\.)?n-somerset\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2258 + } + ], + [ + { + "v": 2258 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2258 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2258 + } + ], + {} + ], + [ + 1, + "auto_GB_nakedwines.co.uk_0", + 0, + "^https?://(www\\.)?nakedwines\\.co\\.uk/", + 10, + [], + [ + { + "e": 1306 + } + ], + [ + { + "v": 1306 + } + ], + [ + { + "c": 1306 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_nationalschoolsregatta.co.uk_0", + 0, + "^https?://(www\\.)?nationalschoolsregatta\\.co\\.uk/", + 10, + [], + [ + { + "e": 1033 + } + ], + [ + { + "v": 1033 + } + ], + [ + { + "c": 1033 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_nationaltrust.org.uk_0_+1", + 0, + "^https?://(www\\.)?nationaltrust\\.org\\.uk/|^https?://(www\\.)?shop\\.nationaltrust\\.org\\.uk/", + 10, + [], + [ + { + "e": 2259 + } + ], + [ + { + "v": 2259 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2259 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2259 + } + ], + {} + ], + [ + 1, + "auto_GB_ncsc.gov.uk_0", + 0, + "^https?://(www\\.)?ncsc\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2260 + } + ], + [ + { + "v": 2260 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2260 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2260 + } + ], + {} + ], + [ + 1, + "auto_GB_news.bet365.com_0", + 0, + "^https?://(www\\.)?news\\.bet365\\.com/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_GB_nextcloud.com_0", + 0, + "^https?://(www\\.)?nextcloud\\.com/", + 10, + [], + [ + { + "e": 1309 + } + ], + [ + { + "v": 1309 + } + ], + [ + { + "c": 1309 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_nfuonline.com_0", + 0, + "^https?://(www\\.)?nfuonline\\.com/", + 10, + [], + [ + { + "e": 1310 + } + ], + [ + { + "v": 1310 + } + ], + [ + { + "text": "Accept Essential", + "c": 1310 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_nhsgp.net_g3s", + 0, + "^https?://(www\\.)?nhsgp\\.net/", + 10, + [], + [ + { + "e": 2261 + } + ], + [ + { + "v": 2261 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2261 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2261 + } + ], + {} + ], + [ + 1, + "auto_GB_nordpass.com_twy", + 0, + "^https?://(www\\.)?nordpass\\.com/", + 10, + [], + [ + { + "e": 1311 + } + ], + [ + { + "v": 1311 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1311 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1311 + } + ], + {} + ], + [ + 1, + "auto_GB_nordvpn.com_0_+2", + 0, + "^https?://(www\\.)?nordvpn\\.com/|^https?://(www\\.)?saily\\.com/|^https?://(www\\.)?support\\.nordvpn\\.com/", + 10, + [], + [ + { + "e": 1311 + } + ], + [ + { + "v": 1311 + } + ], + [ + { + "c": 1311 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_norfolktulips.co.uk_0", + 0, + "^https?://(www\\.)?norfolktulips\\.co\\.uk/", + 10, + [], + [ + { + "e": 1312 + } + ], + [ + { + "v": 1312 + } + ], + [ + { + "text": "Decline", + "c": 1312 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_northnorthants.gov.uk_0", + 0, + "^https?://(www\\.)?northnorthants\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2262 + } + ], + [ + { + "v": 2262 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2262 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2262 + } + ], + {} + ], + [ + 1, + "auto_GB_notino.co.uk_3mj", + 0, + "^https?://(www\\.)?notino\\.co\\.uk/", + 10, + [], + [ + { + "e": 1670 + } + ], + [ + { + "v": 1670 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1670 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1670 + } + ], + {} + ], + [ + 1, + "auto_GB_nutaku.net_0", + 0, + "^https?://(www\\.)?nutaku\\.net/", + 10, + [], + [ + { + "e": 1314 + } + ], + [ + { + "v": 1314 + } + ], + [ + { + "c": 1314 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_oakley.com_1", + 0, + "^https?://(www\\.)?oakley\\.com/", + 10, + [], + [ + { + "e": 1315 + } + ], + [ + { + "v": 1315 + } + ], + [ + { + "c": 1315 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_on1.com_0", + 0, + "^https?://(www\\.)?on1\\.com/", + 10, + [], + [ + { + "e": 1612 + } + ], + [ + { + "v": 1612 + } + ], + [ + { + "c": 1613 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_one.network_2qo", + 0, + "^https?://(www\\.)?one\\.network/", + 10, + [], + [ + { + "e": 2746 + } + ], + [ + { + "v": 2746 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2746 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2746 + } + ], + {} + ], + [ + 1, + "auto_GB_onestream.co.uk_dpx", + 0, + "^https?://(www\\.)?onestream\\.co\\.uk/", + 10, + [], + [ + { + "e": 2747 + } + ], + [ + { + "v": 2747 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2747 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2747 + } + ], + {} + ], + [ + 1, + "auto_GB_onetraveller.co.uk_0", + 0, + "^https?://(www\\.)?onetraveller\\.co\\.uk/", + 10, + [], + [ + { + "e": 1317 + } + ], + [ + { + "v": 1317 + } + ], + [ + { + "c": 1317 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_online-pharmacy4u.co.uk_iag", + 0, + "^https?://(www\\.)?online-pharmacy4u\\.co\\.uk/", + 10, + [], + [ + { + "e": 1318 + } + ], + [ + { + "v": 1318 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1318 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1318 + } + ], + {} + ], + [ + 1, + "auto_GB_online.virginmoney.com_ddv_+3", + 0, + "^https?://(www\\.)?online\\.virginmoney\\.com/|^https?://(www\\.)?secure\\.cbonline\\.co\\.uk/|^https?://(www\\.)?secure\\.ybonline\\.co\\.uk/|^https?://(www\\.)?uk\\.virginmoney\\.com/", + 10, + [], + [ + { + "e": 1876 + } + ], + [ + { + "v": 1876 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1876 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1876 + } + ], + {} + ], + [ + 1, + "auto_GB_openai.com_0", + 0, + "^https?://(www\\.)?openai\\.com/", + 10, + [], + [ + { + "e": 1320 + } + ], + [ + { + "v": 1320 + } + ], + [ + { + "text": "Reject non-essential", + "c": 1320 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_openairtheatre.com_0", + 0, + "^https?://(www\\.)?openairtheatre\\.com/", + 10, + [], + [ + { + "e": 2265 + } + ], + [ + { + "v": 2265 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2265 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2265 + } + ], + {} + ], + [ + 1, + "auto_GB_opticiansdirect.co.uk_0", + 0, + "^https?://(www\\.)?opticiansdirect\\.co\\.uk/", + 10, + [], + [ + { + "e": 2266 + } + ], + [ + { + "v": 2266 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2266 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2266 + } + ], + {} + ], + [ + 1, + "auto_GB_orientalmart.co.uk_7f7", + 0, + "^https?://(www\\.)?orientalmart\\.co\\.uk/", + 10, + [], + [ + { + "e": 2748 + } + ], + [ + { + "v": 2748 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2748 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2748 + } + ], + {} + ], + [ + 1, + "auto_GB_orkney.com_0", + 0, + "^https?://(www\\.)?orkney\\.com/", + 10, + [], + [ + { + "e": 2267 + } + ], + [ + { + "v": 2267 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2267 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2267 + } + ], + {} + ], + [ + 1, + "auto_GB_outdooractive.com_0", + 0, + "^https?://(www\\.)?outdooractive\\.com/", + 10, + [], + [ + { + "e": 1326 + } + ], + [ + { + "v": 1326 + } + ], + [ + { + "c": 1326 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_outfox.energy_6ux", + 0, + "^https?://(www\\.)?outfox\\.energy/", + 10, + [], + [ + { + "e": 795 + } + ], + [ + { + "v": 795 + } + ], + [ + { + "wait": 500 + }, + { + "c": 795 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 795 + } + ], + {} + ], + [ + 1, + "auto_GB_painshill.co.uk_0", + 0, + "^https?://(www\\.)?painshill\\.co\\.uk/", + 10, + [], + [ + { + "e": 1327 + } + ], + [ + { + "v": 1327 + } + ], + [ + { + "text": "Decline Optional Cookies", + "c": 1327 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_paramountplants.co.uk_0", + 0, + "^https?://(www\\.)?paramountplants\\.co\\.uk/", + 10, + [], + [ + { + "e": 2268 + } + ], + [ + { + "v": 2268 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2268 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2268 + } + ], + {} + ], + [ + 1, + "auto_GB_parcelmonkey.co.uk_0", + 0, + "^https?://(www\\.)?parcelmonkey\\.co\\.uk/", + 10, + [], + [ + { + "e": 2749 + } + ], + [ + { + "v": 2749 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2749 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2749 + } + ], + {} + ], + [ + 1, + "auto_GB_parcelsapp.com_dkh", + 0, + "^https?://(www\\.)?parcelsapp\\.com/", + 10, + [], + [ + { + "e": 2750 + } + ], + [ + { + "v": 2750 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2750 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2750 + } + ], + {} + ], + [ + 1, + "auto_GB_parliamentlive.tv_r3v", + 0, + "^https?://(www\\.)?parliamentlive\\.tv/", + 10, + [], + [ + { + "e": 1330 + } + ], + [ + { + "v": 1330 + } + ], + [ + { + "c": 1330 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_partmaster.co.uk_528", + 0, + "^https?://(www\\.)?partmaster\\.co\\.uk/", + 10, + [], + [ + { + "e": 2269 + } + ], + [ + { + "v": 2269 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2269 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2269 + } + ], + {} + ], + [ + 1, + "auto_GB_partscentre.co.uk_s70", + 0, + "^https?://(www\\.)?partscentre\\.co\\.uk/", + 10, + [], + [ + { + "e": 2270 + } + ], + [ + { + "v": 2270 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2270 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2270 + } + ], + {} + ], + [ + 1, + "auto_GB_patchs.ai_o5s", + 0, + "^https?://([a-z]+\\.)?patchs\\.ai/", + 10, + [], + [ + { + "e": 2271 + } + ], + [ + { + "v": 2271 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2271 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2271 + } + ], + {} + ], + [ + 1, + "auto_GB_petersspares.com_xyb", + 0, + "^https?://(www\\.)?petersspares\\.com/", + 10, + [], + [ + { + "e": 2513 + } + ], + [ + { + "v": 2513 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2513 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2513 + } + ], + {} + ], + [ + 1, + "auto_GB_petertyson.co.uk_0", + 0, + "^https?://(www\\.)?petertyson\\.co\\.uk/", + 10, + [], + [ + { + "e": 2272 + } + ], + [ + { + "v": 2272 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2272 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2272 + } + ], + {} + ], + [ + 1, + "auto_GB_pharmadoctor.co.uk_o8w", + 0, + "^https?://(www\\.)?pharmadoctor\\.co\\.uk/", + 10, + [], + [ + { + "e": 2751 + } + ], + [ + { + "v": 2751 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2751 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2751 + } + ], + {} + ], + [ + 1, + "auto_GB_phin.org.uk_5ot", + 0, + "^https?://(www\\.)?phin\\.org\\.uk/", + 10, + [], + [ + { + "e": 2752 + } + ], + [ + { + "v": 2752 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2752 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2752 + } + ], + {} + ], + [ + 1, + "auto_GB_phonely.co.uk_0", + 0, + "^https?://(www\\.)?phonely\\.co\\.uk/", + 10, + [], + [ + { + "e": 2273 + } + ], + [ + { + "v": 2273 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2273 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2273 + } + ], + {} + ], + [ + 1, + "auto_GB_photobox.co.uk_foh", + 0, + "^https?://(www\\.)?photobox\\.co\\.uk/", + 10, + [], + [ + { + "e": 2135 + } + ], + [ + { + "v": 2135 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2135 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2135 + } + ], + {} + ], + [ + 1, + "auto_GB_pinsentmasons.com_0", + 0, + "^https?://(www\\.)?pinsentmasons\\.com/", + 10, + [], + [ + { + "e": 2274 + } + ], + [ + { + "v": 2274 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2274 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2274 + } + ], + {} + ], + [ + 1, + "auto_GB_planningportal.co.uk_0", + 0, + "^https?://(www\\.)?planningportal\\.co\\.uk/", + 10, + [], + [ + { + "e": 2275 + } + ], + [ + { + "v": 2275 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2275 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2275 + } + ], + {} + ], + [ + 1, + "auto_GB_play.runescape.com_0", + 0, + "^https?://(www\\.)?play\\.runescape\\.com/", + 10, + [], + [ + { + "e": 1083 + } + ], + [ + { + "v": 1083 + } + ], + [ + { + "text": "Use necessary cookies only", + "c": 1083 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_plex.tv_0_+1", + 0, + "^https?://(www\\.)?plex\\.tv/|^https?://(www\\.)?support\\.plex\\.tv/", + 10, + [], + [ + { + "e": 1338 + } + ], + [ + { + "v": 1338 + } + ], + [ + { + "c": 1338 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_plumbingworld.co.uk_vmi", + 0, + "^https?://(www\\.)?plumbingworld\\.co\\.uk/", + 10, + [], + [ + { + "e": 2753 + } + ], + [ + { + "v": 2753 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2753 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2753 + } + ], + {} + ], + [ + 1, + "auto_GB_poki.com_lwh", + 0, + "^https?://(www\\.)?poki\\.com/", + 10, + [], + [ + { + "e": 3011 + } + ], + [ + { + "v": 3011 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3011 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3011 + } + ], + {} + ], + [ + 1, + "auto_GB_pond-planet.co.uk_0", + 0, + "^https?://(www\\.)?pond-planet\\.co\\.uk/", + 10, + [], + [ + { + "e": 1340 + } + ], + [ + { + "v": 1340 + } + ], + [ + { + "text": "REJECT ALL COOKIES", + "c": 1340 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_pondkeeper.co.uk_0", + 0, + "^https?://(www\\.)?pondkeeper\\.co\\.uk/", + 10, + [], + [ + { + "e": 1245 + } + ], + [ + { + "v": 1245 + } + ], + [ + { + "c": 1245 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_popcornflix.com_y4e", + 0, + "^https?://(www\\.)?popcornflix\\.com/", + 10, + [], + [ + { + "e": 1575 + } + ], + [ + { + "v": 1575 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1575 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1575 + } + ], + {} + ], + [ + 1, + "auto_GB_porscheclubgb.com_0", + 0, + "^https?://(www\\.)?porscheclubgb\\.com/", + 10, + [], + [ + { + "e": 2277 + } + ], + [ + { + "v": 2277 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2277 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2277 + } + ], + {} + ], + [ + 1, + "auto_GB_powercuts.nationalgrid.co.uk_43h", + 0, + "^https?://(www\\.)?powercuts\\.nationalgrid\\.co\\.uk/", + 10, + [], + [ + { + "e": 3012 + } + ], + [ + { + "v": 3012 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3012 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3012 + } + ], + {} + ], + [ + 1, + "auto_GB_premierinn.com_93p", + 0, + "^https?://(www\\.)?premierinn\\.com/", + 10, + [], + [ + { + "e": 1344 + } + ], + [ + { + "v": 1344 + } + ], + [ + { + "c": 1344 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_privatehealth.co.uk_kji", + 0, + "^https?://(www\\.)?privatehealth\\.co\\.uk/", + 10, + [], + [ + { + "e": 2754 + } + ], + [ + { + "v": 2754 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2754 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2754 + } + ], + {} + ], + [ + 1, + "auto_GB_products.aspose.app_0", + 0, + "^https?://(www\\.)?products\\.aspose\\.app/", + 10, + [], + [ + { + "e": 1345 + } + ], + [ + { + "v": 1345 + } + ], + [ + { + "c": 1345 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_propertypiper.co.uk_qp7", + 0, + "^https?://(www\\.)?propertypiper\\.co\\.uk/", + 10, + [], + [ + { + "e": 2755 + } + ], + [ + { + "v": 2755 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2755 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2755 + } + ], + {} + ], + [ + 1, + "auto_GB_publichealthscotland.scot_nvx", + 0, + "^https?://(www\\.)?publichealthscotland\\.scot/", + 10, + [], + [ + { + "e": 2279 + } + ], + [ + { + "v": 2279 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2279 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2279 + } + ], + {} + ], + [ + 1, + "auto_GB_qatarairways.com_0", + 0, + "^https?://(www\\.)?qatarairways\\.com/", + 10, + [], + [ + { + "e": 1347 + } + ], + [ + { + "v": 1347 + } + ], + [ + { + "c": 1347 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_quilter.com_0", + 0, + "^https?://(www\\.)?quilter\\.com/", + 10, + [], + [ + { + "e": 1348 + } + ], + [ + { + "v": 1348 + } + ], + [ + { + "c": 1348 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_quooker.co.uk_m4v", + 0, + "^https?://(www\\.)?quooker\\.co\\.uk/", + 10, + [], + [ + { + "e": 1576 + } + ], + [ + { + "v": 1576 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1576 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1576 + } + ], + {} + ], + [ + 1, + "auto_GB_qvcuk.com_0", + 0, + "^https?://(www\\.)?qvcuk\\.com/", + 10, + [], + [ + { + "e": 1917 + } + ], + [ + { + "v": 1917 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1917 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1917 + } + ], + {} + ], + [ + 1, + "auto_GB_rapidonline.com_0", + 0, + "^https?://(www\\.)?rapidonline\\.com/", + 10, + [], + [ + { + "e": 2280 + } + ], + [ + { + "v": 2280 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2280 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2280 + } + ], + {} + ], + [ + 1, + "auto_GB_rcdow.org.uk_0", + 0, + "^https?://(www\\.)?rcdow\\.org\\.uk/", + 10, + [], + [ + { + "e": 2756 + } + ], + [ + { + "v": 2756 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2756 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2756 + } + ], + {} + ], + [ + 1, + "auto_GB_rcgp.org.uk_vw7", + 0, + "^https?://(www\\.)?rcgp\\.org\\.uk/", + 10, + [], + [ + { + "e": 1352 + } + ], + [ + { + "v": 1352 + } + ], + [ + { + "c": 1352 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_rcp.ac.uk_lga", + 0, + "^https?://(www\\.)?rcp\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1353 + } + ], + [ + { + "v": 1353 + } + ], + [ + { + "c": 1353 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_reading.gov.uk_0", + 0, + "^https?://(www\\.)?reading\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2281 + } + ], + [ + { + "v": 2281 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2281 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2281 + } + ], + {} + ], + [ + 1, + "auto_GB_redgifs.com_0", + 0, + "^https?://(www\\.)?redgifs\\.com/", + 10, + [], + [ + { + "e": 1355 + } + ], + [ + { + "v": 1355 + } + ], + [ + { + "c": 1355 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_redtube.com_0", + 0, + "^https?://([a-z]+\\.)?redtube\\.(com|net)/", + 10, + [], + [ + { + "e": 2757 + } + ], + [ + { + "v": 2757 + } + ], + [ + { + "c": 2757 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_remove.bg_0", + 0, + "^https?://(www\\.)?remove\\.bg/", + 10, + [], + [ + { + "e": 1357 + } + ], + [ + { + "v": 1357 + } + ], + [ + { + "c": 1357 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_reolink.com_tw6", + 0, + "^https?://(www\\.)?reolink\\.com/", + 10, + [], + [ + { + "e": 1358 + } + ], + [ + { + "v": 1358 + } + ], + [ + { + "c": 1358 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_researchgate.net_0", + 0, + "^https?://(www\\.)?researchgate\\.net/", + 10, + [], + [ + { + "e": 1205 + } + ], + [ + { + "v": 1205 + } + ], + [ + { + "c": 1205 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_restless.co.uk_0", + 0, + "^https?://(www\\.)?restless\\.co\\.uk/", + 10, + [], + [ + { + "e": 1359 + } + ], + [ + { + "v": 1359 + } + ], + [ + { + "c": 1359 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_resume.io_0", + 0, + "^https?://(www\\.)?resume\\.io/", + 10, + [], + [ + { + "e": 1251 + } + ], + [ + { + "v": 1251 + } + ], + [ + { + "text": "Essential only", + "c": 1251 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_resume.io_1", + 0, + "^https?://(www\\.)?resume\\.io/", + 10, + [], + [ + { + "e": 1360 + } + ], + [ + { + "v": 1360 + } + ], + [ + { + "text": "reject", + "c": 1360 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_rettie.co.uk_0", + 0, + "^https?://(www\\.)?rettie\\.co\\.uk/", + 10, + [], + [ + { + "e": 2282 + } + ], + [ + { + "v": 2282 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2282 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2282 + } + ], + {} + ], + [ + 1, + "auto_GB_reviewed.com_f1g", + 0, + "^https?://(www\\.)?reviewed\\.com/", + 10, + [], + [ + { + "e": 1073 + } + ], + [ + { + "v": 1073 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1073 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1073 + } + ], + {} + ], + [ + 1, + "auto_GB_rexel.co.uk_0", + 0, + "^https?://(www\\.)?rexel\\.co\\.uk/", + 10, + [], + [ + { + "e": 1922 + } + ], + [ + { + "v": 1922 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1922 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1922 + } + ], + {} + ], + [ + 1, + "auto_GB_riverisland.com_90x", + 0, + "^https?://(www\\.)?riverisland\\.com/", + 10, + [], + [ + { + "e": 2758 + } + ], + [ + { + "v": 2758 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2758 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2758 + } + ], + {} + ], + [ + 1, + "auto_GB_riverside.fm_0", + 0, + "^https?://(www\\.)?riverside\\.fm/", + 10, + [], + [ + { + "e": 1319 + } + ], + [ + { + "v": 1319 + } + ], + [ + { + "c": 1319 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_rolandgarros.com_0", + 0, + "^https?://(www\\.)?rolandgarros\\.com/", + 10, + [], + [ + { + "e": 1280 + } + ], + [ + { + "v": 1280 + } + ], + [ + { + "c": 1280 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ronniescotts.co.uk_0", + 0, + "^https?://(www\\.)?ronniescotts\\.co\\.uk/", + 10, + [], + [ + { + "e": 1364 + } + ], + [ + { + "v": 1364 + } + ], + [ + { + "c": 1364 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_royalholloway.ac.uk_0", + 0, + "^https?://(www\\.)?royalholloway\\.ac\\.uk/", + 10, + [], + [ + { + "e": 1365 + } + ], + [ + { + "v": 1365 + } + ], + [ + { + "c": 1365 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_royalmail.com_0", + 0, + "^https?://(www\\.)?royalmail\\.com/", + 10, + [], + [ + { + "e": 1366 + } + ], + [ + { + "v": 1366 + } + ], + [ + { + "c": 1366 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ruck.co.uk_1yo", + 0, + "^https?://(www\\.)?ruck\\.co\\.uk/", + 10, + [], + [ + { + "e": 1367 + } + ], + [ + { + "v": 1367 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1367 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1367 + } + ], + {} + ], + [ + 1, + "auto_GB_ruggable.co.uk_eix", + 0, + "^https?://(www\\.)?ruggable\\.co\\.uk/", + 10, + [], + [ + { + "e": 3013 + } + ], + [ + { + "v": 3013 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3013 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3013 + } + ], + {} + ], + [ + 1, + "auto_GB_rumble.com_0", + 0, + "^https?://(www\\.)?rumble\\.com/", + 10, + [], + [ + { + "e": 2283 + } + ], + [ + { + "v": 2283 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2283 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2283 + } + ], + {} + ], + [ + 1, + "auto_GB_safelincs.co.uk_0", + 0, + "^https?://(www\\.)?safelincs\\.co\\.uk/", + 10, + [], + [ + { + "e": 1369 + } + ], + [ + { + "v": 1369 + } + ], + [ + { + "text": "Reject all", + "c": 1369 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_salomon.com_b7d", + 0, + "^https?://(www\\.)?salomon\\.com/", + 10, + [], + [ + { + "e": 1370 + } + ], + [ + { + "v": 1370 + } + ], + [ + { + "c": 1370 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_samconveyancing.co.uk_0", + 0, + "^https?://(www\\.)?samconveyancing\\.co\\.uk/", + 10, + [], + [ + { + "e": 2284 + } + ], + [ + { + "v": 2284 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2284 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2284 + } + ], + {} + ], + [ + 1, + "auto_GB_sanctuary-bathrooms.co.uk_0", + 0, + "^https?://(www\\.)?sanctuary-bathrooms\\.co\\.uk/", + 10, + [], + [ + { + "e": 2285 + } + ], + [ + { + "v": 2285 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2285 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2285 + } + ], + {} + ], + [ + 1, + "auto_GB_sath.nhs.uk_ulg", + 0, + "^https?://(www\\.)?sath\\.nhs\\.uk/", + 10, + [], + [ + { + "e": 1578 + } + ], + [ + { + "v": 1578 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1578 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1578 + } + ], + {} + ], + [ + 1, + "auto_GB_savoo.co.uk_0", + 0, + "^https?://(www\\.)?savoo\\.co\\.uk/", + 10, + [], + [ + { + "e": 2759 + } + ], + [ + { + "v": 2759 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2759 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2759 + } + ], + {} + ], + [ + 1, + "auto_GB_scotcourts.gov.uk_0", + 0, + "^https?://(www\\.)?scotcourts\\.gov\\.uk/", + 10, + [], + [ + { + "e": 1004 + } + ], + [ + { + "v": 1004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1004 + } + ], + {} + ], + [ + 1, + "auto_GB_scotlandspeople.gov.uk_0", + 0, + "^https?://(www\\.)?scotlandspeople\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2286 + } + ], + [ + { + "v": 2286 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2286 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2286 + } + ], + {} + ], + [ + 1, + "auto_GB_scottsdalegolf.co.uk_0", + 0, + "^https?://(www\\.)?scottsdalegolf\\.co\\.uk/", + 10, + [], + [ + { + "e": 2287 + } + ], + [ + { + "v": 2287 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2287 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2287 + } + ], + {} + ], + [ + 1, + "auto_GB_seetickets.com_0", + 0, + "^https?://(www\\.)?seetickets\\.com/", + 10, + [], + [ + { + "e": 2288 + } + ], + [ + { + "v": 2288 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2288 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2288 + } + ], + {} + ], + [ + 1, + "auto_GB_semrush.com_0", + 0, + "^https?://(www\\.)?semrush\\.com/", + 10, + [], + [ + { + "e": 1380 + } + ], + [ + { + "v": 1380 + } + ], + [ + { + "c": 1380 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_sheetmusicplus.com_0", + 0, + "^https?://(www\\.)?sheetmusicplus\\.com/", + 10, + [], + [ + { + "e": 1381 + } + ], + [ + { + "v": 1381 + } + ], + [ + { + "c": 1381 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_shemalestardb.com_0", + 0, + "^https?://(www\\.)?shemalestardb\\.com/", + 10, + [], + [ + { + "e": 1382 + } + ], + [ + { + "v": 1382 + } + ], + [ + { + "c": 1382 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_shopify.com_0", + 0, + "^https?://(www\\.)?shopify\\.com/", + 10, + [], + [ + { + "e": 1384 + } + ], + [ + { + "v": 1384 + } + ], + [ + { + "c": 1384 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_showcasecinemas.co.uk_0", + 0, + "^https?://(www\\.)?showcasecinemas\\.co\\.uk/", + 10, + [], + [ + { + "e": 1212 + } + ], + [ + { + "v": 1212 + } + ], + [ + { + "c": 1212 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_signin.ebay.co.uk_0", + 0, + "^https?://(www\\.)?signin\\.ebay\\.co\\.uk/", + 10, + [], + [ + { + "e": 2289 + } + ], + [ + { + "v": 2289 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2289 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2289 + } + ], + {} + ], + [ + 1, + "auto_GB_size.co.uk_2nx", + 0, + "^https?://(www\\.)?size\\.co\\.uk/", + 10, + [], + [ + { + "e": 1386 + } + ], + [ + { + "v": 1386 + } + ], + [ + { + "c": 1386 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_sizechart.uk_yy7", + 0, + "^https?://(www\\.)?sizechart\\.uk/", + 10, + [], + [ + { + "e": 3014 + } + ], + [ + { + "v": 3014 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3014 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3014 + } + ], + {} + ], + [ + 1, + "auto_GB_skinport.com_0", + 0, + "^https?://(www\\.)?skinport\\.com/", + 10, + [], + [ + { + "e": 1387 + } + ], + [ + { + "v": 1387 + } + ], + [ + { + "text": "REFUSE NON-ESSENTIAL COOKIES", + "c": 1387 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_smarkets.com_0", + 0, + "^https?://(www\\.)?smarkets\\.com/", + 10, + [], + [ + { + "e": 1388 + } + ], + [ + { + "v": 1388 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1388 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1388 + } + ], + {} + ], + [ + 1, + "auto_GB_sohohouse.com_0", + 0, + "^https?://(www\\.)?sohohouse\\.com/", + 10, + [], + [ + { + "e": 2290 + } + ], + [ + { + "v": 2290 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2290 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2290 + } + ], + {} + ], + [ + 1, + "auto_GB_somersetft.nhs.uk_zno", + 0, + "^https?://(www\\.)?somersetft\\.nhs\\.uk/", + 10, + [], + [ + { + "e": 1390 + } + ], + [ + { + "v": 1390 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1390 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1390 + } + ], + {} + ], + [ + 1, + "auto_GB_southeastwater.co.uk_0", + 0, + "^https?://(www\\.)?southeastwater\\.co\\.uk/", + 10, + [], + [ + { + "e": 2291 + } + ], + [ + { + "v": 2291 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2291 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2291 + } + ], + {} + ], + [ + 1, + "auto_GB_southhams.gov.uk_0", + 0, + "^https?://(www\\.)?southhams\\.gov\\.uk/", + 10, + [], + [ + { + "e": 1392 + } + ], + [ + { + "v": 1392 + } + ], + [ + { + "text": "DENY ALL", + "c": 1392 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_sparepartstore24.co.uk_0", + 0, + "^https?://(www\\.)?sparepartstore24\\.co\\.uk/", + 10, + [], + [ + { + "e": 1376 + } + ], + [ + { + "v": 1376 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1376 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1376 + } + ], + {} + ], + [ + 1, + "auto_GB_speedyservices.com_0", + 0, + "^https?://(www\\.)?speedyservices\\.com/", + 10, + [], + [ + { + "e": 1394 + } + ], + [ + { + "v": 1394 + } + ], + [ + { + "c": 1394 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_sportpursuit.com_0", + 0, + "^https?://(www\\.)?sportpursuit\\.com/", + 10, + [], + [ + { + "e": 2760 + } + ], + [ + { + "v": 2760 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2760 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2760 + } + ], + {} + ], + [ + 1, + "auto_GB_sqlservercentral.com_0", + 0, + "^https?://(www\\.)?sqlservercentral\\.com/", + 10, + [], + [ + { + "e": 1396 + } + ], + [ + { + "v": 1396 + } + ], + [ + { + "c": 1396 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_sso.passport.yandex.ru_0_+4", + 0, + "^https?://(www\\.)?sso\\.passport\\.yandex\\.ru/|^https?://(www\\.)?translate\\.yandex\\.com/|^https?://(www\\.)?ya\\.ru/|^https?://(www\\.)?yandex\\.com\\.tr/|^https?://(www\\.)?yandex\\.com/", + 10, + [], + [ + { + "e": 1397 + } + ], + [ + { + "v": 1397 + } + ], + [ + { + "c": 1397 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_standardlife.co.uk_0", + 0, + "^https?://(www\\.)?standardlife\\.co\\.uk/", + 10, + [], + [ + { + "e": 1343 + } + ], + [ + { + "v": 1343 + } + ], + [ + { + "text": "Decline All Cookies", + "c": 1343 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_standoutsocks.co.uk_0", + 0, + "^https?://(www\\.)?standoutsocks\\.co\\.uk/", + 10, + [], + [ + { + "e": 1398 + } + ], + [ + { + "v": 1398 + } + ], + [ + { + "text": "Reject", + "c": 1398 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_stellantisandyou.co.uk_0", + 0, + "^https?://(www\\.)?stellantisandyou\\.co\\.uk/", + 10, + [], + [ + { + "e": 1400 + } + ], + [ + { + "v": 1400 + } + ], + [ + { + "c": 1400 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_stockopedia.com_0", + 0, + "^https?://(www\\.)?stockopedia\\.com/", + 10, + [], + [ + { + "e": 1582 + } + ], + [ + { + "v": 1582 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1582 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1582 + } + ], + {} + ], + [ + 1, + "auto_GB_stoneacre.co.uk_73c", + 0, + "^https?://(www\\.)?stoneacre\\.co\\.uk/", + 10, + [], + [ + { + "e": 1583 + } + ], + [ + { + "v": 1583 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1583 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1583 + } + ], + {} + ], + [ + 1, + "auto_GB_stories.com_ua6", + 0, + "^https?://(www\\.)?stories\\.com/", + 10, + [], + [ + { + "e": 1523 + } + ], + [ + { + "v": 1523 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1523 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1523 + } + ], + {} + ], + [ + 1, + "auto_GB_strava.com_0", + 0, + "^https?://(www\\.)?strava\\.com/", + 10, + [], + [ + { + "e": 1404 + } + ], + [ + { + "v": 1404 + } + ], + [ + { + "c": 1404 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_stripe.com_0", + 0, + "^https?://(www\\.)?stripe\\.com/", + 10, + [], + [ + { + "e": 1405 + } + ], + [ + { + "v": 1405 + } + ], + [ + { + "c": 1405 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_stuartslondon.com_0", + 0, + "^https?://(www\\.)?stuartslondon\\.com/", + 10, + [], + [ + { + "e": 2295 + } + ], + [ + { + "v": 2295 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2295 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2295 + } + ], + {} + ], + [ + 1, + "auto_GB_stubhub.co.uk_6zg", + 0, + "^https?://(www\\.)?stubhub\\.co\\.uk/", + 10, + [], + [ + { + "e": 1584 + } + ], + [ + { + "v": 1584 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1584 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1584 + } + ], + {} + ], + [ + 1, + "auto_GB_support.strava.com_0", + 0, + "^https?://(www\\.)?support\\.strava\\.com/", + 10, + [], + [ + { + "e": 1191 + } + ], + [ + { + "v": 1191 + } + ], + [ + { + "text": "Reject", + "c": 1191 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_support.surfshark.com_1aj", + 0, + "^https?://(www\\.)?support\\.surfshark\\.com/", + 10, + [], + [ + { + "e": 2296 + } + ], + [ + { + "v": 2296 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2296 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2296 + } + ], + {} + ], + [ + 1, + "auto_GB_supremecourt.uk_0", + 0, + "^https?://(www\\.)?supremecourt\\.uk/", + 10, + [], + [ + { + "e": 3015 + } + ], + [ + { + "v": 3015 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3015 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3015 + } + ], + {} + ], + [ + 1, + "auto_GB_surfshark.com_0", + 0, + "^https?://(www\\.)?surfshark\\.com/", + 10, + [], + [ + { + "e": 1409 + } + ], + [ + { + "v": 1409 + } + ], + [ + { + "c": 1409 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_surrey.ac.uk_rnf", + 0, + "^https?://(www\\.)?surrey\\.ac\\.uk/", + 10, + [], + [ + { + "e": 2297 + } + ], + [ + { + "v": 2297 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2297 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2297 + } + ], + {} + ], + [ + 1, + "auto_GB_sussexwildlifetrust.org.uk_0", + 0, + "^https?://(www\\.)?sussexwildlifetrust\\.org\\.uk/", + 10, + [], + [ + { + "e": 1171 + } + ], + [ + { + "v": 1171 + } + ], + [ + { + "text": "Deny", + "c": 1171 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_swiftaid.co.uk_0", + 0, + "^https?://(www\\.)?swiftaid\\.co\\.uk/", + 10, + [], + [ + { + "e": 1411 + } + ], + [ + { + "v": 1411 + } + ], + [ + { + "c": 1411 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_swinnertoncycles.co.uk_0", + 0, + "^https?://(www\\.)?swinnertoncycles\\.co\\.uk/", + 10, + [], + [ + { + "e": 1406 + } + ], + [ + { + "v": 1406 + } + ], + [ + { + "c": 1406 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_tackleuk.co.uk_tud", + 0, + "^https?://(www\\.)?tackleuk\\.co\\.uk/", + 10, + [], + [ + { + "e": 2761 + } + ], + [ + { + "v": 2761 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2761 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2761 + } + ], + {} + ], + [ + 1, + "auto_GB_taxinsider.co.uk_0", + 0, + "^https?://(www\\.)?taxinsider\\.co\\.uk/", + 10, + [], + [ + { + "e": 2298 + } + ], + [ + { + "v": 2298 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2298 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2298 + } + ], + {} + ], + [ + 1, + "auto_GB_tcl.com_erj", + 0, + "^https?://(www\\.)?tcl\\.com/", + 10, + [], + [ + { + "e": 2762 + } + ], + [ + { + "v": 2762 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2762 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2762 + } + ], + {} + ], + [ + 1, + "auto_GB_tefal.co.uk_0", + 0, + "^https?://(www\\.)?tefal\\.co\\.uk/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_GB_tfgm.com_0", + 0, + "^https?://(www\\.)?tfgm\\.com/", + 10, + [], + [ + { + "e": 2299 + } + ], + [ + { + "v": 2299 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2299 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2299 + } + ], + {} + ], + [ + 1, + "auto_GB_thebatteryshop.co.uk_0", + 0, + "^https?://(www\\.)?thebatteryshop\\.co\\.uk/", + 10, + [], + [ + { + "e": 1415 + } + ], + [ + { + "v": 1415 + } + ], + [ + { + "text": "Reject All", + "c": 1415 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_thecompostshop.co.uk_0", + 0, + "^https?://(www\\.)?thecompostshop\\.co\\.uk/", + 10, + [], + [ + { + "e": 1416 + } + ], + [ + { + "v": 1416 + } + ], + [ + { + "text": "DECLINE", + "c": 1416 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_thegazette.co.uk_0", + 0, + "^https?://(www\\.)?thegazette\\.co\\.uk/", + 10, + [], + [ + { + "e": 2300 + } + ], + [ + { + "v": 2300 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2300 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2300 + } + ], + {} + ], + [ + 1, + "auto_GB_themetalstore.co.uk_0", + 0, + "^https?://(www\\.)?themetalstore\\.co\\.uk/", + 10, + [], + [ + { + "e": 2301 + } + ], + [ + { + "v": 2301 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2301 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2301 + } + ], + {} + ], + [ + 1, + "auto_GB_thenational.academy_0", + 0, + "^https?://(www\\.)?thenational\\.academy/", + 10, + [], + [ + { + "e": 2302 + } + ], + [ + { + "v": 2302 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2302 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2302 + } + ], + {} + ], + [ + 1, + "auto_GB_thepensionsregulator.gov.uk_0", + 0, + "^https?://(www\\.)?thepensionsregulator\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2763 + } + ], + [ + { + "v": 2763 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2763 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2763 + } + ], + {} + ], + [ + 1, + "auto_GB_theritzlondon.com_h5x", + 0, + "^https?://(www\\.)?theritzlondon\\.com/", + 10, + [], + [ + { + "e": 2186 + } + ], + [ + { + "v": 2186 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2186 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2186 + } + ], + {} + ], + [ + 1, + "auto_GB_thorlabs.com_87c", + 0, + "^https?://(www\\.)?thorlabs\\.com/", + 10, + [], + [ + { + "e": 1421 + } + ], + [ + { + "v": 1421 + } + ], + [ + { + "c": 1421 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_thruxtonracing.co.uk_xd1", + 0, + "^https?://(www\\.)?thruxtonracing\\.co\\.uk/", + 10, + [], + [ + { + "e": 2303 + } + ], + [ + { + "v": 2303 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2303 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2303 + } + ], + {} + ], + [ + 1, + "auto_GB_timetable.ucl.ac.uk_e64", + 0, + "^https?://(www\\.)?timetable\\.ucl\\.ac\\.uk/", + 10, + [], + [ + { + "e": 2764 + } + ], + [ + { + "v": 2764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2764 + } + ], + {} + ], + [ + 1, + "auto_GB_titantravel.co.uk_0", + 0, + "^https?://(www\\.)?titantravel\\.co\\.uk/", + 10, + [], + [ + { + "e": 2304 + } + ], + [ + { + "v": 2304 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2304 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2304 + } + ], + {} + ], + [ + 1, + "auto_GB_topdoctors.co.uk_0", + 0, + "^https?://(www\\.)?topdoctors\\.co\\.uk/", + 10, + [], + [ + { + "e": 2305 + } + ], + [ + { + "v": 2305 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2305 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2305 + } + ], + {} + ], + [ + 1, + "auto_GB_topdoctors.co.uk_1", + 0, + "^https?://(www\\.)?topdoctors\\.co\\.uk/", + 10, + [], + [ + { + "e": 2306 + } + ], + [ + { + "v": 2306 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2306 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2306 + } + ], + {} + ], + [ + 1, + "auto_GB_trading212.com_0hx", + 0, + "^https?://(www\\.)?trading212\\.com/", + 10, + [], + [ + { + "e": 2308 + } + ], + [ + { + "v": 2308 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2308 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2308 + } + ], + {} + ], + [ + 1, + "auto_GB_trainsplit.com_0", + 0, + "^https?://(www\\.)?trainsplit\\.com/", + 10, + [], + [ + { + "e": 2309 + } + ], + [ + { + "v": 2309 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2309 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2309 + } + ], + {} + ], + [ + 1, + "auto_GB_transactual.org.uk_0", + 0, + "^https?://(www\\.)?transactual\\.org\\.uk/", + 10, + [], + [ + { + "e": 1428 + } + ], + [ + { + "v": 1428 + } + ], + [ + { + "text": "Continue without consent", + "c": 1428 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_transport.gov.scot_0", + 0, + "^https?://(www\\.)?transport\\.gov\\.scot/", + 10, + [], + [ + { + "e": 2310 + } + ], + [ + { + "v": 2310 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2310 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2310 + } + ], + {} + ], + [ + 1, + "auto_GB_travelzoo.com_0", + 0, + "^https?://(www\\.)?travelzoo\\.com/", + 10, + [], + [ + { + "e": 2311 + } + ], + [ + { + "v": 2311 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2311 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2311 + } + ], + {} + ], + [ + 1, + "auto_GB_triodos.co.uk_0", + 0, + "^https?://(www\\.)?triodos\\.co\\.uk/", + 10, + [], + [ + { + "e": 1431 + } + ], + [ + { + "v": 1431 + } + ], + [ + { + "c": 1431 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_trove.scot_xtg", + 0, + "^https?://(www\\.)?trove\\.scot/", + 10, + [], + [ + { + "e": 2312 + } + ], + [ + { + "v": 2312 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2312 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2312 + } + ], + {} + ], + [ + 1, + "auto_GB_truecaller.com_0", + 0, + "^https?://(www\\.)?truecaller\\.com/", + 10, + [], + [ + { + "e": 1432 + } + ], + [ + { + "v": 1432 + } + ], + [ + { + "c": 1432 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_truepotential.co.uk_0", + 0, + "^https?://(www\\.)?truepotential\\.co\\.uk/", + 10, + [], + [ + { + "e": 2125 + } + ], + [ + { + "v": 2125 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2125 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2125 + } + ], + {} + ], + [ + 1, + "auto_GB_tube8.com_0_+1", + 0, + "^https?://(www\\.)?tube8\\.com/|^https?://(www\\.)?youporn\\.com/", + 10, + [], + [ + { + "e": 1356 + } + ], + [ + { + "v": 1356 + } + ], + [ + { + "c": 1356 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_twinkl.co.uk_0", + 0, + "^https?://(www\\.)?twinkl\\.co\\.uk/", + 10, + [], + [ + { + "e": 2313 + } + ], + [ + { + "v": 2313 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2313 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2313 + } + ], + {} + ], + [ + 1, + "auto_GB_u3a.org.uk_0", + 0, + "^https?://(www\\.)?u3a\\.org\\.uk/", + 10, + [], + [ + { + "e": 2314 + } + ], + [ + { + "v": 2314 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2314 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2314 + } + ], + {} + ], + [ + 1, + "auto_GB_uber.com_0_+1", + 0, + "^https?://(www\\.)?uber\\.com/|^https?://(www\\.)?ubereats\\.com/", + 10, + [], + [ + { + "e": 1436 + } + ], + [ + { + "v": 1436 + } + ], + [ + { + "c": 1436 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_uk.bestreviews.guide_qei", + 0, + "^https?://(www\\.)?uk\\.bestreviews\\.guide/", + 10, + [], + [ + { + "e": 3016 + } + ], + [ + { + "v": 3016 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3016 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3016 + } + ], + {} + ], + [ + 1, + "auto_GB_uk.hisense.com_0", + 0, + "^https?://(www\\.)?uk\\.hisense\\.com/", + 10, + [], + [ + { + "e": 2315 + } + ], + [ + { + "v": 2315 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2315 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2315 + } + ], + {} + ], + [ + 1, + "auto_GB_uk.russellhobbs.com_0", + 0, + "^https?://(www\\.)?uk\\.russellhobbs\\.com/", + 10, + [], + [ + { + "e": 3017 + } + ], + [ + { + "v": 3017 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3017 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3017 + } + ], + {} + ], + [ + 1, + "auto_GB_uk.store.tapo.com_utw", + 0, + "^https?://(www\\.)?uk\\.store\\.tapo\\.com/", + 10, + [], + [ + { + "e": 1587 + } + ], + [ + { + "v": 1587 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1587 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1587 + } + ], + {} + ], + [ + 1, + "auto_GB_uk.trip.com_0", + 0, + "^https?://(www\\.)?uk\\.trip\\.com/", + 10, + [], + [ + { + "e": 1800 + } + ], + [ + { + "v": 1800 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1800 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1800 + } + ], + {} + ], + [ + 1, + "auto_GB_ukmeds.co.uk_0", + 0, + "^https?://(www\\.)?ukmeds\\.co\\.uk/", + 10, + [], + [ + { + "e": 1441 + } + ], + [ + { + "v": 1441 + } + ], + [ + { + "c": 1441 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_ullswater-steamers.co.uk_ba4", + 0, + "^https?://(www\\.)?ullswater-steamers\\.co\\.uk/", + 10, + [], + [ + { + "e": 2316 + } + ], + [ + { + "v": 2316 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2316 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2316 + } + ], + {} + ], + [ + 1, + "auto_GB_utmost.co.uk_0", + 0, + "^https?://(www\\.)?utmost\\.co\\.uk/", + 10, + [], + [ + { + "e": 1443 + } + ], + [ + { + "v": 1443 + } + ], + [ + { + "text": "I DO NOT ACCEPT", + "c": 1443 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_vehiclescore.co.uk_0", + 0, + "^https?://(www\\.)?vehiclescore\\.co\\.uk/", + 10, + [], + [ + { + "e": 2765 + } + ], + [ + { + "v": 2765 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2765 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2765 + } + ], + {} + ], + [ + 1, + "auto_GB_velux.co.uk_0", + 0, + "^https?://(www\\.)?velux\\.co\\.uk/", + 10, + [], + [ + { + "e": 1445 + } + ], + [ + { + "v": 1445 + } + ], + [ + { + "c": 1445 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_vetuk.co.uk_0", + 0, + "^https?://(www\\.)?vetuk\\.co\\.uk/", + 10, + [], + [ + { + "e": 2318 + } + ], + [ + { + "v": 2318 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2318 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2318 + } + ], + {} + ], + [ + 1, + "auto_GB_virgin.com_0", + 0, + "^https?://(www\\.)?virgin\\.com/", + 10, + [], + [ + { + "e": 1588 + } + ], + [ + { + "v": 1588 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1588 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1588 + } + ], + {} + ], + [ + 1, + "auto_GB_vistaprint.co.uk_0", + 0, + "^https?://(www\\.)?vistaprint\\.co\\.uk/", + 10, + [], + [ + { + "e": 2320 + } + ], + [ + { + "v": 2320 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2320 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2320 + } + ], + {} + ], + [ + 1, + "auto_GB_waitrose.com_0", + 0, + "^https?://(www\\.)?waitrose\\.com/", + 10, + [], + [ + { + "e": 2321 + } + ], + [ + { + "v": 2321 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2321 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2321 + } + ], + {} + ], + [ + 1, + "auto_GB_warwickshire.gov.uk_0", + 0, + "^https?://(www\\.)?warwickshire\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2118 + } + ], + [ + { + "v": 2118 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2118 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2118 + } + ], + {} + ], + [ + 1, + "auto_GB_watch.plex.tv_0", + 0, + "^https?://(www\\.)?watch\\.plex\\.tv/", + 10, + [], + [ + { + "e": 1452 + } + ], + [ + { + "v": 1452 + } + ], + [ + { + "c": 1452 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_watch.thechosen.tv_0", + 0, + "^https?://(www\\.)?watch\\.thechosen\\.tv/", + 10, + [], + [ + { + "e": 1453 + } + ], + [ + { + "v": 1453 + } + ], + [ + { + "text": "Necessary only", + "c": 1453 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_weldricks.co.uk_0", + 0, + "^https?://(www\\.)?weldricks\\.co\\.uk/", + 10, + [], + [ + { + "e": 2322 + } + ], + [ + { + "v": 2322 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2322 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2322 + } + ], + {} + ], + [ + 1, + "auto_GB_westbrom.co.uk_0", + 0, + "^https?://(www\\.)?westbrom\\.co\\.uk/", + 10, + [], + [ + { + "e": 2323 + } + ], + [ + { + "v": 2323 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2323 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2323 + } + ], + {} + ], + [ + 1, + "auto_GB_westsussex.gov.uk_0", + 0, + "^https?://(www\\.)?westsussex\\.gov\\.uk/", + 10, + [], + [ + { + "e": 2324 + } + ], + [ + { + "v": 2324 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2324 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2324 + } + ], + {} + ], + [ + 1, + "auto_GB_westwitteringestate.co.uk_hjv", + 0, + "^https?://(www\\.)?westwitteringestate\\.co\\.uk/", + 10, + [], + [ + { + "e": 1457 + } + ], + [ + { + "v": 1457 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1457 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1457 + } + ], + {} + ], + [ + 1, + "auto_GB_wheelspinmodels.co.uk_0", + 0, + "^https?://(www\\.)?wheelspinmodels\\.co\\.uk/", + 10, + [], + [ + { + "e": 1018 + } + ], + [ + { + "v": 1018 + } + ], + [ + { + "c": 1018 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_whsmithplc.co.uk_rw6", + 0, + "^https?://(www\\.)?whsmithplc\\.co\\.uk/", + 10, + [], + [ + { + "e": 2766 + } + ], + [ + { + "v": 2766 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2766 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2766 + } + ], + {} + ], + [ + 1, + "auto_GB_williamhill.com_0", + 0, + "^https?://(www\\.)?williamhill\\.com/", + 10, + [], + [ + { + "e": 1458 + } + ], + [ + { + "v": 1458 + } + ], + [ + { + "c": 1458 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_wjec.co.uk_0", + 0, + "^https?://(www\\.)?wjec\\.co\\.uk/", + 10, + [], + [ + { + "e": 2767 + } + ], + [ + { + "v": 2767 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2767 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2767 + } + ], + {} + ], + [ + 1, + "auto_GB_www2.hm.com_0", + 0, + "^https?://(www\\.)?www2\\.hm\\.com/", + 10, + [], + [ + { + "e": 1459 + } + ], + [ + { + "v": 1459 + } + ], + [ + { + "c": 1459 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_wwws.airfrance.co.uk_0", + 0, + "^https?://(wwws?\\.)?airfrance\\.([a-z]+|co\\.uk|co\\.jp)/", + 10, + [], + [ + { + "e": 1064 + } + ], + [ + { + "v": 1064 + } + ], + [ + { + "c": 1064 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_xhamster.desi_3w0_+1", + 0, + "^https?://(www\\.)?xhamster\\.desi/|^https?://(www\\.)?xhamster19\\.com/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_GB_yorkshiretrading.com_0", + 0, + "^https?://(www\\.)?yorkshiretrading\\.com/", + 10, + [], + [ + { + "e": 2768 + } + ], + [ + { + "v": 2768 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2768 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2768 + } + ], + {} + ], + [ + 1, + "auto_GB_youfibre.com_snp", + 0, + "^https?://(www\\.)?youfibre\\.com/", + 10, + [], + [ + { + "e": 1591 + } + ], + [ + { + "v": 1591 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1591 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1591 + } + ], + {} + ], + [ + 1, + "auto_GB_youinvest.co.uk_0tz", + 0, + "^https?://(www\\.)?ajbell\\.co\\.uk/", + 10, + [], + [ + { + "e": 2325 + } + ], + [ + { + "v": 2325 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2325 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2325 + } + ], + {} + ], + [ + 1, + "auto_GB_zdf.de_f13", + 0, + "^https?://(www\\.)?zdf\\.de/", + 10, + [], + [ + { + "e": 2769 + } + ], + [ + { + "v": 2769 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2769 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2769 + } + ], + {} + ], + [ + 1, + "auto_GB_zeemo.ai_0", + 0, + "^https?://(www\\.)?zeemo\\.ai/", + 10, + [], + [ + { + "e": 1462 + } + ], + [ + { + "v": 1462 + } + ], + [ + { + "c": 1462 + } + ], + [], + {} + ], + [ + 1, + "auto_GB_zopa.com_0", + 0, + "^https?://(www\\.)?zopa\\.com/", + 10, + [], + [ + { + "e": 1183 + } + ], + [ + { + "v": 1183 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1183 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1183 + } + ], + {} + ], + [ + 1, + "auto_NL_101munten.nl_hag_+1", + 0, + "^https?://(www\\.)?101munten\\.nl/|^https?://(www\\.)?fietsonderdelenoutlet\\.nl/", + 10, + [], + [ + { + "e": 2326 + } + ], + [ + { + "v": 2326 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2326 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2326 + } + ], + {} + ], + [ + 1, + "auto_NL_112-meldingen.nl_4jg", + 0, + "^https?://(www\\.)?112-meldingen\\.nl/", + 10, + [], + [ + { + "e": 3018 + } + ], + [ + { + "v": 3018 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3018 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3018 + } + ], + {} + ], + [ + 1, + "auto_NL_123-3d.nl_twm_+2", + 0, + "^https?://(www\\.)?123-3d\\.nl/|^https?://(www\\.)?123accu\\.nl/|^https?://(www\\.)?123led\\.nl/", + 10, + [], + [ + { + "e": 3019 + } + ], + [ + { + "v": 3019 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3019 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3019 + } + ], + {} + ], + [ + 1, + "auto_NL_123groepenkast.nl_huw_+4", + 0, + "^https?://(www\\.)?123groepenkast\\.nl/|^https?://(www\\.)?computergigant\\.nl/|^https?://(www\\.)?dakdragerwinkel\\.nl/|^https?://(www\\.)?hashop\\.nl/|^https?://(www\\.)?moestuinland\\.nl/", + 10, + [], + [ + { + "e": 2329 + } + ], + [ + { + "v": 2329 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2329 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2329 + } + ], + {} + ], + [ + 1, + "auto_NL_123inkt.nl_4nc", + 0, + "^https?://(www\\.)?123inkt\\.nl/", + 10, + [], + [ + { + "e": 3020 + } + ], + [ + { + "v": 3020 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3020 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3020 + } + ], + {} + ], + [ + 1, + "auto_NL_123schoon.nl_g01", + 0, + "^https?://(www\\.)?123schoon\\.nl/", + 10, + [], + [ + { + "e": 2771 + } + ], + [ + { + "v": 2771 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2771 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2771 + } + ], + {} + ], + [ + 1, + "auto_NL_12gobiking.nl_5l7", + 0, + "^https?://(www\\.)?12gobiking\\.nl/", + 10, + [], + [ + { + "e": 3021 + } + ], + [ + { + "v": 3021 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3021 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3021 + } + ], + {} + ], + [ + 1, + "auto_NL_3cx.com_0mf", + 0, + "^https?://(www\\.)?3cx\\.com/", + 10, + [], + [ + { + "e": 2772 + } + ], + [ + { + "v": 2772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2772 + } + ], + {} + ], + [ + 1, + "auto_NL_3djake.nl_8u0_+1", + 0, + "^https?://(www\\.)?3djake\\.nl/|^https?://(www\\.)?ecco-verde\\.nl/", + 10, + [], + [ + { + "e": 1336 + } + ], + [ + { + "v": 1336 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1336 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1336 + } + ], + {} + ], + [ + 1, + "auto_NL_abp.nl_y7p", + 0, + "^https?://(www\\.)?abp\\.nl/", + 10, + [], + [ + { + "e": 2330 + } + ], + [ + { + "v": 2330 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2330 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2330 + } + ], + {} + ], + [ + 1, + "auto_NL_advieskeuze.nl_ioj", + 0, + "^https?://(www\\.)?advieskeuze\\.nl/", + 10, + [], + [ + { + "e": 3022 + } + ], + [ + { + "v": 3022 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3022 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3022 + } + ], + {} + ], + [ + 1, + "auto_NL_aegon.nl_y2y", + 0, + "^https?://(www\\.)?aegon\\.nl/", + 10, + [], + [ + { + "e": 3023 + } + ], + [ + { + "v": 3023 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3023 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3023 + } + ], + {} + ], + [ + 1, + "auto_NL_ah.be_77z_+1", + 0, + "^https?://(www\\.)?ah\\.be/|^https?://(www\\.)?ah\\.nl/", + 10, + [], + [ + { + "e": 2773 + } + ], + [ + { + "v": 2773 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2773 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2773 + } + ], + {} + ], + [ + 1, + "auto_NL_ahk.nl_80k_+2", + 0, + "^https?://(www\\.)?ahk\\.nl/|^https?://(www\\.)?atd\\.ahk\\.nl/|^https?://(www\\.)?conservatoriumvanamsterdam\\.nl/", + 10, + [], + [ + { + "e": 2774 + } + ], + [ + { + "v": 2774 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2774 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2774 + } + ], + {} + ], + [ + 1, + "auto_NL_ahn.nl_7pw_+2", + 0, + "^https?://(www\\.)?ahn\\.nl/|^https?://(www\\.)?heerlen\\.nl/|^https?://(www\\.)?vlissingen\\.nl/", + 10, + [], + [ + { + "e": 2331 + } + ], + [ + { + "v": 2331 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2331 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2331 + } + ], + {} + ], + [ + 1, + "auto_NL_airbnb.nl_8d7", + 0, + "^https?://(www\\.)?airbnb\\.nl/", + 10, + [], + [ + { + "e": 1214 + } + ], + [ + { + "v": 1214 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1214 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1214 + } + ], + {} + ], + [ + 1, + "auto_NL_airmiles.nl_f6z", + 0, + "^https?://(www\\.)?airmiles\\.nl/", + 10, + [], + [ + { + "e": 2775 + } + ], + [ + { + "v": 2775 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2775 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2775 + } + ], + {} + ], + [ + 1, + "auto_NL_ajax.nl_r1d", + 0, + "^https?://(www\\.)?ajax\\.nl/", + 10, + [], + [ + { + "e": 2333 + } + ], + [ + { + "v": 2333 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2333 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2333 + } + ], + {} + ], + [ + 1, + "auto_NL_akim.nl_80o", + 0, + "^https?://(www\\.)?akim\\.nl/", + 10, + [], + [ + { + "e": 3024 + } + ], + [ + { + "v": 3024 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3024 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3024 + } + ], + {} + ], + [ + 1, + "auto_NL_alliander.com_99u", + 0, + "^https?://(www\\.)?alliander\\.com/", + 10, + [], + [ + { + "e": 2776 + } + ], + [ + { + "v": 2776 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2776 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2776 + } + ], + {} + ], + [ + 1, + "auto_NL_amare.nl_l7y_+7", + 0, + "^https?://(www\\.)?amare\\.nl/|^https?://(www\\.)?dedoelen\\.nl/|^https?://(www\\.)?muziekgebouw\\.nl/|^https?://(www\\.)?natlab\\.nl/|^https?://(www\\.)?parktheater\\.nl/|^https?://(www\\.)?singerlaren\\.nl/|^https?://(www\\.)?stadsschouwburgendevereeniging\\.nl/|^https?://(www\\.)?theaterbellevue\\.nl/", + 10, + [], + [ + { + "e": 2334 + } + ], + [ + { + "v": 2334 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2334 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2334 + } + ], + {} + ], + [ + 1, + "auto_NL_ambtadvocaten.nl_qaf", + 0, + "^https?://(www\\.)?ambtadvocaten\\.nl/", + 10, + [], + [ + { + "e": 2326 + } + ], + [ + { + "v": 2326 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2326 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2326 + } + ], + {} + ], + [ + 1, + "auto_NL_amsterdamumc.nl_i8s_+1", + 0, + "^https?://(www\\.)?amsterdamumc\\.nl/|^https?://(www\\.)?amsterdamumc\\.org/", + 10, + [], + [ + { + "e": 2335 + } + ], + [ + { + "v": 2335 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2335 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2335 + } + ], + {} + ], + [ + 1, + "auto_NL_analyticsvidhya.com_pbu", + 0, + "^https?://(www\\.)?analyticsvidhya\\.com/", + 10, + [], + [ + { + "e": 3025 + } + ], + [ + { + "v": 3025 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3025 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3025 + } + ], + {} + ], + [ + 1, + "auto_NL_annaziekenhuis.nl_gz7", + 0, + "^https?://(www\\.)?annaziekenhuis\\.nl/", + 10, + [], + [ + { + "e": 2336 + } + ], + [ + { + "v": 2336 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2336 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2336 + } + ], + {} + ], + [ + 1, + "auto_NL_aob.nl_att", + 0, + "^https?://(www\\.)?aob\\.nl/", + 10, + [], + [ + { + "e": 2777 + } + ], + [ + { + "v": 2777 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2777 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2777 + } + ], + {} + ], + [ + 1, + "auto_NL_apotheek.nl_bsi", + 0, + "^https?://(www\\.)?apotheek\\.nl/", + 10, + [], + [ + { + "e": 2337 + } + ], + [ + { + "v": 2337 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2337 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2337 + } + ], + {} + ], + [ + 1, + "auto_NL_app.chatgirl.nl_uqi", + 0, + "^https?://(www\\.)?app\\.chatgirl\\.nl/", + 10, + [], + [ + { + "e": 3026 + } + ], + [ + { + "v": 3026 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3026 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3026 + } + ], + {} + ], + [ + 1, + "auto_NL_appelhoes.nl_xzu", + 0, + "^https?://(www\\.)?appelhoes\\.nl/", + 10, + [], + [ + { + "e": 2338 + } + ], + [ + { + "v": 2338 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2338 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2338 + } + ], + {} + ], + [ + 1, + "auto_NL_arriva.nl_e92", + 0, + "^https?://(www\\.)?arriva\\.nl/", + 10, + [], + [ + { + "e": 2339 + } + ], + [ + { + "v": 2339 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2339 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2339 + } + ], + {} + ], + [ + 1, + "auto_NL_artez.nl_u5f", + 0, + "^https?://(www\\.)?artez\\.nl/", + 10, + [], + [ + { + "e": 3027 + } + ], + [ + { + "v": 3027 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3027 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3027 + } + ], + {} + ], + [ + 1, + "auto_NL_assem.nl_g6v", + 0, + "^https?://(www\\.)?assem\\.nl/", + 10, + [], + [ + { + "e": 3028 + } + ], + [ + { + "v": 3028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3028 + } + ], + {} + ], + [ + 1, + "auto_NL_auto-onderdelen24.nl_4bc", + 0, + "^https?://(www\\.)?auto-onderdelen24\\.nl/", + 10, + [], + [ + { + "e": 1677 + } + ], + [ + { + "v": 1677 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1677 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1677 + } + ], + {} + ], + [ + 1, + "auto_NL_autodoc.nl_ojv", + 0, + "^https?://(www\\.)?autodoc\\.nl/", + 10, + [], + [ + { + "e": 1002 + } + ], + [ + { + "v": 1002 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1002 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1002 + } + ], + {} + ], + [ + 1, + "auto_NL_averoachmea.nl_fxj_+1", + 0, + "^https?://(www\\.)?averoachmea\\.nl/|^https?://(www\\.)?centraalbeheer\\.nl/", + 10, + [], + [ + { + "e": 2341 + } + ], + [ + { + "v": 2341 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2341 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2341 + } + ], + {} + ], + [ + 1, + "auto_NL_backmarket.nl_dye", + 0, + "^https?://(www\\.)?backmarket\\.nl/", + 10, + [], + [ + { + "e": 1947 + } + ], + [ + { + "v": 1947 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1947 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1947 + } + ], + {} + ], + [ + 1, + "auto_NL_bandenconcurrent.nl_51x", + 0, + "^https?://(www\\.)?bandenconcurrent\\.nl/", + 10, + [], + [ + { + "e": 2342 + } + ], + [ + { + "v": 2342 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2342 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2342 + } + ], + {} + ], + [ + 1, + "auto_NL_bandenleader.nl_48r", + 0, + "^https?://(www\\.)?bandenleader\\.nl/", + 10, + [], + [ + { + "e": 3029 + } + ], + [ + { + "v": 3029 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3029 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3029 + } + ], + {} + ], + [ + 1, + "auto_NL_bazaarofmagic.eu_c7f", + 0, + "^https?://(www\\.)?bazaarofmagic\\.eu/", + 10, + [], + [ + { + "e": 2343 + } + ], + [ + { + "v": 2343 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2343 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2343 + } + ], + {} + ], + [ + 1, + "auto_NL_bdsmgirl.nl_vmi_+1", + 0, + "^https?://(www\\.)?bdsmgirl\\.nl/|^https?://(www\\.)?chatgirl\\.nl/", + 10, + [], + [ + { + "e": 2778 + } + ], + [ + { + "v": 2778 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2778 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2778 + } + ], + {} + ], + [ + 1, + "auto_NL_beddenreus.nl_3i1", + 0, + "^https?://(www\\.)?beddenreus\\.nl/", + 10, + [], + [ + { + "e": 2344 + } + ], + [ + { + "v": 2344 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2344 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2344 + } + ], + {} + ], + [ + 1, + "auto_NL_belsimpel.nl_2mo", + 0, + "^https?://(www\\.)?belsimpel\\.nl/", + 10, + [], + [ + { + "e": 2345 + } + ], + [ + { + "v": 2345 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2345 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2345 + } + ], + {} + ], + [ + 1, + "auto_NL_berivita.com_q3z", + 0, + "^https?://(www\\.)?berivita\\.com/", + 10, + [], + [ + { + "e": 2346 + } + ], + [ + { + "v": 2346 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2346 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2346 + } + ], + {} + ], + [ + 1, + "auto_NL_besteonderdelen.nl_zs5", + 0, + "^https?://(www\\.)?besteonderdelen\\.nl/", + 10, + [], + [ + { + "e": 1712 + } + ], + [ + { + "v": 1712 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1712 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1712 + } + ], + {} + ], + [ + 1, + "auto_NL_beterbed.nl_v9x", + 0, + "^https?://(www\\.)?beterbed\\.nl/", + 10, + [], + [ + { + "e": 2344 + } + ], + [ + { + "v": 2344 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2344 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2344 + } + ], + {} + ], + [ + 1, + "auto_NL_betterhelp.com_s81", + 0, + "^https?://(www\\.)?betterhelp\\.com/", + 10, + [], + [ + { + "e": 2184 + } + ], + [ + { + "v": 2184 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2184 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2184 + } + ], + {} + ], + [ + 1, + "auto_NL_bevolkingsonderzoeknederland.nl_33f", + 0, + "^https?://(www\\.)?bevolkingsonderzoeknederland\\.nl/", + 10, + [], + [ + { + "e": 2347 + } + ], + [ + { + "v": 2347 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2347 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2347 + } + ], + {} + ], + [ + 1, + "auto_NL_bibliotheek.universiteitleiden.nl_s63_+3", + 0, + "^https?://(www\\.)?bibliotheek\\.universiteitleiden\\.nl/|^https?://(www\\.)?medewerkers\\.universiteitleiden\\.nl/|^https?://(www\\.)?student\\.universiteitleiden\\.nl/|^https?://(www\\.)?universiteitleiden\\.nl/", + 10, + [], + [ + { + "e": 2440 + } + ], + [ + { + "v": 2440 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2440 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2440 + } + ], + {} + ], + [ + 1, + "auto_NL_bibliotheekaanzet.nl_mh6", + 0, + "^https?://(www\\.)?bibliotheekaanzet\\.nl/", + 10, + [], + [ + { + "e": 3030 + } + ], + [ + { + "v": 3030 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3030 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3030 + } + ], + {} + ], + [ + 1, + "auto_NL_bieb.knab.nl_d7n", + 0, + "^https?://(www\\.)?bieb\\.knab\\.nl/", + 10, + [], + [ + { + "e": 3031 + } + ], + [ + { + "v": 3031 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3031 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3031 + } + ], + {} + ], + [ + 1, + "auto_NL_bitvavo.com_jtt", + 0, + "^https?://(www\\.)?bitvavo\\.com/", + 10, + [], + [ + { + "e": 3032 + } + ], + [ + { + "v": 3032 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3032 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3032 + } + ], + {} + ], + [ + 1, + "auto_NL_bk.nl_tx4", + 0, + "^https?://(www\\.)?bk\\.nl/", + 10, + [], + [ + { + "e": 1764 + } + ], + [ + { + "v": 1764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1764 + } + ], + {} + ], + [ + 1, + "auto_NL_bolderman.nl_891", + 0, + "^https?://(www\\.)?bolderman\\.nl/", + 10, + [], + [ + { + "e": 3033 + } + ], + [ + { + "v": 3033 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3033 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3033 + } + ], + {} + ], + [ + 1, + "auto_NL_bomenenzo.nl_b3z", + 0, + "^https?://(www\\.)?bomenenzo\\.nl/", + 10, + [], + [ + { + "e": 2350 + } + ], + [ + { + "v": 2350 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2350 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2350 + } + ], + {} + ], + [ + 1, + "auto_NL_bonprix.nl_ovi", + 0, + "^https?://(www\\.)?bonprix\\.nl/", + 10, + [], + [ + { + "e": 2351 + } + ], + [ + { + "v": 2351 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2351 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2351 + } + ], + {} + ], + [ + 1, + "auto_NL_bookchoice.com_1m6", + 0, + "^https?://(www\\.)?bookchoice\\.com/", + 10, + [], + [ + { + "e": 2352 + } + ], + [ + { + "v": 2352 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2352 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2352 + } + ], + {} + ], + [ + 1, + "auto_NL_borent.nl_2if_+8", + 0, + "^https?://(www\\.)?borent\\.nl/|^https?://(www\\.)?hoogvliet\\.com/|^https?://(www\\.)?primera\\.nl/|^https?://(www\\.)?quooker\\.nl/|^https?://(www\\.)?rocva\\.nl/|^https?://(www\\.)?stagemarkt\\.nl/|^https?://(www\\.)?topbloemen\\.nl/|^https?://(www\\.)?topgeschenken\\.nl/|^https?://(www\\.)?xooon\\.nl/", + 10, + [], + [ + { + "e": 2469 + } + ], + [ + { + "v": 2469 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2469 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2469 + } + ], + {} + ], + [ + 1, + "auto_NL_bouwencyclopedie.nl_2q6", + 0, + "^https?://(www\\.)?bouwencyclopedie\\.nl/", + 10, + [], + [ + { + "e": 3034 + } + ], + [ + { + "v": 3034 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3034 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3034 + } + ], + {} + ], + [ + 1, + "auto_NL_bovag.nl_kc0", + 0, + "^https?://(www\\.)?bovag\\.nl/", + 10, + [], + [ + { + "e": 2353 + } + ], + [ + { + "v": 2353 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2353 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2353 + } + ], + {} + ], + [ + 1, + "auto_NL_bovenij.nl_254", + 0, + "^https?://(www\\.)?bovenij\\.nl/", + 10, + [], + [ + { + "e": 3035 + } + ], + [ + { + "v": 3035 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3035 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3035 + } + ], + {} + ], + [ + 1, + "auto_NL_brabant.nl_6ds_+2", + 0, + "^https?://(www\\.)?brabant\\.nl/|^https?://(www\\.)?iplo\\.nl/|^https?://(www\\.)?limburg\\.nl/", + 10, + [], + [ + { + "e": 2354 + } + ], + [ + { + "v": 2354 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2354 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2354 + } + ], + {} + ], + [ + 1, + "auto_NL_braumarkt.com_wfi_+1", + 0, + "^https?://(www\\.)?braumarkt\\.com/|^https?://(www\\.)?rullensfietsen\\.nl/", + 10, + [], + [ + { + "e": 1883 + } + ], + [ + { + "v": 1883 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1883 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1883 + } + ], + {} + ], + [ + 1, + "auto_NL_bregje.nl_6iu", + 0, + "^https?://(www\\.)?bregje\\.nl/", + 10, + [], + [ + { + "e": 2355 + } + ], + [ + { + "v": 2355 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2355 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2355 + } + ], + {} + ], + [ + 1, + "auto_NL_breng.nl_30f_+1", + 0, + "^https?://(www\\.)?breng\\.nl/|^https?://(www\\.)?connexxion\\.nl/", + 10, + [], + [ + { + "e": 2364 + } + ], + [ + { + "v": 2364 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2364 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2364 + } + ], + {} + ], + [ + 1, + "auto_NL_brico.be_m25", + 0, + "^https?://(www\\.)?brico\\.be/", + 10, + [], + [ + { + "e": 2356 + } + ], + [ + { + "v": 2356 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2356 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2356 + } + ], + {} + ], + [ + 1, + "auto_NL_brillen24.nl_08c", + 0, + "^https?://(www\\.)?brillen24\\.nl/", + 10, + [], + [ + { + "e": 2357 + } + ], + [ + { + "v": 2357 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2357 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2357 + } + ], + {} + ], + [ + 1, + "auto_NL_business.gov.nl_kp3", + 0, + "^https?://(www\\.)?business\\.gov\\.nl/", + 10, + [], + [ + { + "e": 2358 + } + ], + [ + { + "v": 2358 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2358 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2358 + } + ], + {} + ], + [ + 1, + "auto_NL_cameranu.nl_f6q", + 0, + "^https?://(www\\.)?cameranu\\.nl/", + 10, + [], + [ + { + "e": 2359 + } + ], + [ + { + "v": 2359 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2359 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2359 + } + ], + {} + ], + [ + 1, + "auto_NL_chasse.nl_gs1", + 0, + "^https?://(www\\.)?chasse\\.nl/", + 10, + [], + [ + { + "e": 2334 + } + ], + [ + { + "v": 2334 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2334 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2334 + } + ], + {} + ], + [ + 1, + "auto_NL_chat.deepseek.com_uby", + 0, + "^https?://(www\\.)?chat\\.deepseek\\.com/", + 10, + [], + [ + { + "e": 2779 + } + ], + [ + { + "v": 2779 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2779 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2779 + } + ], + {} + ], + [ + 1, + "auto_NL_cheaptickets.nl_cwt", + 0, + "^https?://(www\\.)?cheaptickets\\.nl/", + 10, + [], + [ + { + "e": 2360 + } + ], + [ + { + "v": 2360 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2360 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2360 + } + ], + {} + ], + [ + 1, + "auto_NL_chillplanet.nl_xcp", + 0, + "^https?://(www\\.)?chillplanet\\.nl/", + 10, + [], + [ + { + "e": 2361 + } + ], + [ + { + "v": 2361 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2361 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2361 + } + ], + {} + ], + [ + 1, + "auto_NL_citroen.nl_7ld_+2", + 0, + "^https?://(www\\.)?citroen\\.nl/|^https?://(www\\.)?opel\\.nl/|^https?://(www\\.)?peugeot\\.nl/", + 10, + [], + [ + { + "e": 1139 + } + ], + [ + { + "v": 1139 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1139 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1139 + } + ], + {} + ], + [ + 1, + "auto_NL_clinicaldiagnostics.nl_pmu", + 0, + "^https?://(www\\.)?clinicaldiagnostics\\.nl/", + 10, + [], + [ + { + "e": 2362 + } + ], + [ + { + "v": 2362 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2362 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2362 + } + ], + {} + ], + [ + 1, + "auto_NL_club.autodoc.nl_ddm", + 0, + "^https?://(www\\.)?club\\.autodoc\\.nl/", + 10, + [], + [ + { + "e": 2957 + } + ], + [ + { + "v": 2957 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2957 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2957 + } + ], + {} + ], + [ + 1, + "auto_NL_companyinfo.nl_g6p_+1", + 0, + "^https?://(www\\.)?companyinfo\\.nl/|^https?://(www\\.)?makelaarsland\\.nl/", + 10, + [], + [ + { + "e": 2363 + } + ], + [ + { + "v": 2363 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2363 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2363 + } + ], + {} + ], + [ + 1, + "auto_NL_consumentenbond.nl_53g", + 0, + "^https?://(www\\.)?consumentenbond\\.nl/", + 10, + [], + [ + { + "e": 2365 + } + ], + [ + { + "v": 2365 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2365 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2365 + } + ], + {} + ], + [ + 1, + "auto_NL_costesfashion.com_7vv_+2", + 0, + "^https?://(www\\.)?costesfashion\\.com/|^https?://(www\\.)?cottonclub\\.nl/|^https?://(www\\.)?thesting\\.com/", + 10, + [], + [ + { + "e": 2366 + } + ], + [ + { + "v": 2366 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2366 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2366 + } + ], + {} + ], + [ + 1, + "auto_NL_crow.nl_z0j", + 0, + "^https?://(www\\.)?crow\\.nl/", + 10, + [], + [ + { + "e": 2367 + } + ], + [ + { + "v": 2367 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2367 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2367 + } + ], + {} + ], + [ + 1, + "auto_NL_curio.nl_9z7", + 0, + "^https?://(www\\.)?curio\\.nl/", + 10, + [], + [ + { + "e": 2780 + } + ], + [ + { + "v": 2780 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2780 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2780 + } + ], + {} + ], + [ + 1, + "auto_NL_cwz.nl_jsw", + 0, + "^https?://(www\\.)?cwz\\.nl/", + 10, + [], + [ + { + "e": 2368 + } + ], + [ + { + "v": 2368 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2368 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2368 + } + ], + {} + ], + [ + 1, + "auto_NL_daikin.nl_ukk", + 0, + "^https?://(www\\.)?daikin\\.nl/", + 10, + [], + [ + { + "e": 2369 + } + ], + [ + { + "v": 2369 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2369 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2369 + } + ], + {} + ], + [ + 1, + "auto_NL_deloox.nl_qzv", + 0, + "^https?://(www\\.)?deloox\\.nl/", + 10, + [], + [ + { + "e": 2370 + } + ], + [ + { + "v": 2370 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2370 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2370 + } + ], + {} + ], + [ + 1, + "auto_NL_deltares.nl_he5", + 0, + "^https?://(www\\.)?deltares\\.nl/", + 10, + [], + [ + { + "e": 2781 + } + ], + [ + { + "v": 2781 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2781 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2781 + } + ], + {} + ], + [ + 1, + "auto_NL_deltion.nl_ymq", + 0, + "^https?://(www\\.)?deltion\\.nl/", + 10, + [], + [ + { + "e": 2782 + } + ], + [ + { + "v": 2782 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2782 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2782 + } + ], + {} + ], + [ + 1, + "auto_NL_denboschregion.nl_4x6", + 0, + "^https?://(www\\.)?denboschregion\\.nl/", + 10, + [], + [ + { + "e": 2783 + } + ], + [ + { + "v": 2783 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2783 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2783 + } + ], + {} + ], + [ + 1, + "auto_NL_denederlandseggz.nl_nxc", + 0, + "^https?://(www\\.)?denederlandseggz\\.nl/", + 10, + [], + [ + { + "e": 2784 + } + ], + [ + { + "v": 2784 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2784 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2784 + } + ], + {} + ], + [ + 1, + "auto_NL_denhaag.com_k2i", + 0, + "^https?://(www\\.)?denhaag\\.com/", + 10, + [], + [ + { + "e": 3036 + } + ], + [ + { + "v": 3036 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3036 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3036 + } + ], + {} + ], + [ + 1, + "auto_NL_denhaagfm.nl_qbo_+10", + 0, + "^https?://(www\\.)?denhaagfm\\.nl/|^https?://(www\\.)?gld\\.nl/|^https?://(www\\.)?l1\\.nl/|^https?://(www\\.)?l1nieuws\\.nl/|^https?://(www\\.)?omroepwest\\.nl/|^https?://(www\\.)?omroepzeeland\\.nl/|^https?://(www\\.)?omropfryslan\\.nl/|^https?://(www\\.)?rijnmond\\.nl/|^https?://(www\\.)?rtvdrenthe\\.nl/|^https?://(www\\.)?rtvnoord\\.nl/|^https?://(www\\.)?rtvutrecht\\.nl/", + 10, + [], + [ + { + "e": 2373 + } + ], + [ + { + "v": 2373 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2373 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2373 + } + ], + {} + ], + [ + 1, + "auto_NL_denieuwebibliotheek.nl_c1z", + 0, + "^https?://(www\\.)?denieuwebibliotheek\\.nl/", + 10, + [], + [ + { + "e": 2374 + } + ], + [ + { + "v": 2374 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2374 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2374 + } + ], + {} + ], + [ + 1, + "auto_NL_dezwerver.nl_d8v", + 0, + "^https?://(www\\.)?dezwerver\\.nl/", + 10, + [], + [ + { + "e": 1331 + } + ], + [ + { + "v": 1331 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1331 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1331 + } + ], + {} + ], + [ + 1, + "auto_NL_diabetes.nl_x0r", + 0, + "^https?://(www\\.)?diabetes\\.nl/", + 10, + [], + [ + { + "e": 2375 + } + ], + [ + { + "v": 2375 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2375 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2375 + } + ], + {} + ], + [ + 1, + "auto_NL_digiplein.com_8rz", + 0, + "^https?://(www\\.)?digiplein\\.com/", + 10, + [], + [ + { + "e": 2785 + } + ], + [ + { + "v": 2785 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2785 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2785 + } + ], + {} + ], + [ + 1, + "auto_NL_diks.net_8uf", + 0, + "^https?://(www\\.)?diks\\.net/", + 10, + [], + [ + { + "e": 2786 + } + ], + [ + { + "v": 2786 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2786 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2786 + } + ], + {} + ], + [ + 1, + "auto_NL_dinoloket.nl_lmi", + 0, + "^https?://(www\\.)?dinoloket\\.nl/", + 10, + [], + [ + { + "e": 2787 + } + ], + [ + { + "v": 2787 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2787 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2787 + } + ], + {} + ], + [ + 1, + "auto_NL_discountoffice.nl_2fb", + 0, + "^https?://(www\\.)?discountoffice\\.nl/", + 10, + [], + [ + { + "e": 2377 + } + ], + [ + { + "v": 2377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2377 + } + ], + {} + ], + [ + 1, + "auto_NL_discovergroningen.com_5rp", + 0, + "^https?://(www\\.)?discovergroningen\\.com/", + 10, + [], + [ + { + "e": 2513 + } + ], + [ + { + "v": 2513 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2513 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2513 + } + ], + {} + ], + [ + 1, + "auto_NL_ditjesendatjes.nl_0sa_+2", + 0, + "^https?://(www\\.)?ditjesendatjes\\.nl/|^https?://(www\\.)?meditecheurope\\.nl/|^https?://(www\\.)?spotgroningen\\.nl/", + 10, + [], + [ + { + "e": 2378 + } + ], + [ + { + "v": 2378 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2378 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2378 + } + ], + {} + ], + [ + 1, + "auto_NL_dmgdeurne.nl_x6m", + 0, + "^https?://(www\\.)?dmgdeurne\\.nl/", + 10, + [], + [ + { + "e": 2379 + } + ], + [ + { + "v": 2379 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2379 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2379 + } + ], + {} + ], + [ + 1, + "auto_NL_dnb.nl_uv4", + 0, + "^https?://(www\\.)?dnb\\.nl/", + 10, + [], + [ + { + "e": 2380 + } + ], + [ + { + "v": 2380 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2380 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2380 + } + ], + {} + ], + [ + 1, + "auto_NL_doctoreve.com_m69", + 0, + "^https?://(www\\.)?doctoreve\\.com/", + 10, + [], + [ + { + "e": 3037 + } + ], + [ + { + "v": 3037 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3037 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3037 + } + ], + {} + ], + [ + 1, + "auto_NL_drenthe.nl_rno_+15", + 0, + "^https?://(www\\.)?drenthe\\.nl/|^https?://(www\\.)?friesland\\.nl/|^https?://(www\\.)?harlingenwelkomaanzee\\.nl/|^https?://(www\\.)?indelft\\.nl/|^https?://(www\\.)?intonijmegen\\.com/|^https?://(www\\.)?inzutphen\\.nl/|^https?://(www\\.)?landvandepeel\\.nl/|^https?://(www\\.)?noordwijk\\.info/|^https?://(www\\.)?visitamstelveen\\.nl/|^https?://(www\\.)?visitarnhem\\.com/|^https?://(www\\.)?visitbrabant\\.com/|^https?://(www\\.)?visitgooivecht\\.nl/|^https?://(www\\.)?visitleeuwarden\\.com/|^https?://(www\\.)?visitleiden\\.nl/|^https?://(www\\.)?visitnijmegen\\.com/|^https?://(www\\.)?visitwadden\\.nl/", + 10, + [], + [ + { + "e": 2397 + } + ], + [ + { + "v": 2397 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2397 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2397 + } + ], + {} + ], + [ + 1, + "auto_NL_drievliet.nl_rfj", + 0, + "^https?://(www\\.)?drievliet\\.nl/", + 10, + [], + [ + { + "e": 1820 + } + ], + [ + { + "v": 1820 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1820 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1820 + } + ], + {} + ], + [ + 1, + "auto_NL_dsw.nl_5s5", + 0, + "^https?://(www\\.)?dsw\\.nl/", + 10, + [], + [ + { + "e": 2381 + } + ], + [ + { + "v": 2381 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2381 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2381 + } + ], + {} + ], + [ + 1, + "auto_NL_duitslandinstituut.nl_d4q", + 0, + "^https?://(www\\.)?duitslandinstituut\\.nl/", + 10, + [], + [ + { + "e": 2382 + } + ], + [ + { + "v": 2382 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2382 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2382 + } + ], + {} + ], + [ + 1, + "auto_NL_dz.nl_n1f", + 0, + "^https?://(www\\.)?dz\\.nl/", + 10, + [], + [ + { + "e": 2383 + } + ], + [ + { + "v": 2383 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2383 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2383 + } + ], + {} + ], + [ + 1, + "auto_NL_ecopedia.be_2tb", + 0, + "^https?://(www\\.)?ecopedia\\.be/", + 10, + [], + [ + { + "e": 2384 + } + ], + [ + { + "v": 2384 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2384 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2384 + } + ], + {} + ], + [ + 1, + "auto_NL_eerlijketen.nl_z27", + 0, + "^https?://(www\\.)?eerlijketen\\.nl/", + 10, + [], + [ + { + "e": 2788 + } + ], + [ + { + "v": 2788 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2788 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2788 + } + ], + {} + ], + [ + 1, + "auto_NL_efarma.nl_xbs", + 0, + "^https?://(www\\.)?efarma\\.nl/", + 10, + [], + [ + { + "e": 2385 + } + ], + [ + { + "v": 2385 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2385 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2385 + } + ], + {} + ], + [ + 1, + "auto_NL_effenaar.nl_nia", + 0, + "^https?://(www\\.)?effenaar\\.nl/", + 10, + [], + [ + { + "e": 2789 + } + ], + [ + { + "v": 2789 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2789 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2789 + } + ], + {} + ], + [ + 1, + "auto_NL_effeweg.nl_7vx", + 0, + "^https?://(www\\.)?effeweg\\.nl/", + 10, + [], + [ + { + "e": 2349 + } + ], + [ + { + "v": 2349 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2349 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2349 + } + ], + {} + ], + [ + 1, + "auto_NL_eigenwijzereizen.nl_rs4", + 0, + "^https?://(www\\.)?eigenwijzereizen\\.nl/", + 10, + [], + [ + { + "e": 2386 + } + ], + [ + { + "v": 2386 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2386 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2386 + } + ], + {} + ], + [ + 1, + "auto_NL_embloom.nl_jnr", + 0, + "^https?://(www\\.)?embloom\\.nl/", + 10, + [], + [ + { + "e": 2790 + } + ], + [ + { + "v": 2790 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2790 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2790 + } + ], + {} + ], + [ + 1, + "auto_NL_eneco.nl_0ag", + 0, + "^https?://(www\\.)?eneco\\.nl/", + 10, + [], + [ + { + "e": 2387 + } + ], + [ + { + "v": 2387 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2387 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2387 + } + ], + {} + ], + [ + 1, + "auto_NL_energiedirect.nl_u7m_+1", + 0, + "^https?://(www\\.)?energiedirect\\.nl/|^https?://(www\\.)?essent\\.nl/", + 10, + [], + [ + { + "e": 2388 + } + ], + [ + { + "v": 2388 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2388 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2388 + } + ], + {} + ], + [ + 1, + "auto_NL_etna.nl_xf2", + 0, + "^https?://(www\\.)?etna\\.nl/", + 10, + [], + [ + { + "e": 3038 + } + ], + [ + { + "v": 3038 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3038 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3038 + } + ], + {} + ], + [ + 1, + "auto_NL_eurojackpot.nederlandseloterij.nl_7hr", + 0, + "^https?://(www\\.)?eurojackpot\\.nederlandseloterij\\.nl/", + 10, + [], + [ + { + "e": 2389 + } + ], + [ + { + "v": 2389 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2389 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2389 + } + ], + {} + ], + [ + 1, + "auto_NL_europarcs.nl_i25", + 0, + "^https?://(www\\.)?europarcs\\.nl/", + 10, + [], + [ + { + "e": 2390 + } + ], + [ + { + "v": 2390 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2390 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2390 + } + ], + {} + ], + [ + 1, + "auto_NL_europeancorrespondent.com_v10", + 0, + "^https?://(www\\.)?europeancorrespondent\\.com/", + 10, + [], + [ + { + "e": 2391 + } + ], + [ + { + "v": 2391 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2391 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2391 + } + ], + {} + ], + [ + 1, + "auto_NL_evivanlanschot.nl_r6g", + 0, + "^https?://(www\\.)?evivanlanschot\\.nl/", + 10, + [], + [ + { + "e": 2392 + } + ], + [ + { + "v": 2392 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2392 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2392 + } + ], + {} + ], + [ + 1, + "auto_NL_experts.anwb.nl_8kh", + 0, + "^https?://(www\\.)?experts\\.anwb\\.nl/", + 10, + [], + [ + { + "e": 2791 + } + ], + [ + { + "v": 2791 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2791 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2791 + } + ], + {} + ], + [ + 1, + "auto_NL_eyewish.com_g4i", + 0, + "^https?://(www\\.)?eyewish\\.com/", + 10, + [], + [ + { + "e": 1393 + } + ], + [ + { + "v": 1393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1393 + } + ], + {} + ], + [ + 1, + "auto_NL_fbto.nl_ffa", + 0, + "^https?://(www\\.)?fbto\\.nl/", + 10, + [], + [ + { + "e": 2393 + } + ], + [ + { + "v": 2393 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2393 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2393 + } + ], + {} + ], + [ + 1, + "auto_NL_festival.idfa.nl_1fh", + 0, + "^https?://(www\\.)?festival\\.idfa\\.nl/", + 10, + [], + [ + { + "e": 2792 + } + ], + [ + { + "v": 2792 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2792 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2792 + } + ], + {} + ], + [ + 1, + "auto_NL_fixpart.be_lqf_+1", + 0, + "^https?://(www\\.)?fixpart\\.be/|^https?://(www\\.)?fixpart\\.nl/", + 10, + [], + [ + { + "e": 1825 + } + ], + [ + { + "v": 1825 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1825 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1825 + } + ], + {} + ], + [ + 1, + "auto_NL_flevoziekenhuis.nl_zje_+1", + 0, + "^https?://(www\\.)?flevoziekenhuis\\.nl/|^https?://(www\\.)?ghz\\.nl/", + 10, + [], + [ + { + "e": 2394 + } + ], + [ + { + "v": 2394 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2394 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2394 + } + ], + {} + ], + [ + 1, + "auto_NL_fnv.nl_w1z", + 0, + "^https?://(www\\.)?fnv\\.nl/", + 10, + [], + [ + { + "e": 2794 + } + ], + [ + { + "v": 2794 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2794 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2794 + } + ], + {} + ], + [ + 1, + "auto_NL_followthebeat.nl_mx5", + 0, + "^https?://(www\\.)?followthebeat\\.nl/", + 10, + [], + [ + { + "e": 2395 + } + ], + [ + { + "v": 2395 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2395 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2395 + } + ], + {} + ], + [ + 1, + "auto_NL_ford.nl_ybn", + 0, + "^https?://(www\\.)?ford\\.nl/", + 10, + [], + [ + { + "e": 2227 + } + ], + [ + { + "v": 2227 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2227 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2227 + } + ], + {} + ], + [ + 1, + "auto_NL_forums.autodesk.com_o9k", + 0, + "^https?://(www\\.)?forums\\.autodesk\\.com/", + 10, + [], + [ + { + "e": 2795 + } + ], + [ + { + "v": 2795 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2795 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2795 + } + ], + {} + ], + [ + 1, + "auto_NL_fox.nl_vzi", + 0, + "^https?://(www\\.)?fox\\.nl/", + 10, + [], + [ + { + "e": 2396 + } + ], + [ + { + "v": 2396 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2396 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2396 + } + ], + {} + ], + [ + 1, + "auto_NL_fr.spankbang.com_o0w_+3", + 0, + "^https?://(www\\.)?fr\\.spankbang\\.com/|^https?://(www\\.)?la\\.spankbang\\.com/|^https?://(www\\.)?nl\\.spankbang\\.com/|^https?://(www\\.)?spankbang\\.com/", + 10, + [], + [ + { + "e": 3039 + } + ], + [ + { + "v": 3039 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3039 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3039 + } + ], + {} + ], + [ + 1, + "auto_NL_frankenergie.nl_9xh", + 0, + "^https?://(www\\.)?frankenergie\\.nl/", + 10, + [], + [ + { + "e": 2796 + } + ], + [ + { + "v": 2796 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2796 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2796 + } + ], + {} + ], + [ + 1, + "auto_NL_fritzshop.nl_ew7", + 0, + "^https?://(www\\.)?fritzshop\\.nl/", + 10, + [], + [ + { + "e": 2797 + } + ], + [ + { + "v": 2797 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2797 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2797 + } + ], + {} + ], + [ + 1, + "auto_NL_fruugo.nl_s9f", + 0, + "^https?://(www\\.)?fruugo\\.nl/", + 10, + [], + [ + { + "e": 1056 + } + ], + [ + { + "v": 1056 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1056 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1056 + } + ], + {} + ], + [ + 1, + "auto_NL_ftm.nl_7ne", + 0, + "^https?://(www\\.)?ftm\\.nl/", + 10, + [], + [ + { + "e": 2398 + } + ], + [ + { + "v": 2398 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2398 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2398 + } + ], + {} + ], + [ + 1, + "auto_NL_futurumshop.nl_mmo", + 0, + "^https?://(www\\.)?futurumshop\\.nl/", + 10, + [], + [ + { + "e": 2399 + } + ], + [ + { + "v": 2399 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2399 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2399 + } + ], + {} + ], + [ + 1, + "auto_NL_fvd.nl_pxy", + 0, + "^https?://(www\\.)?fvd\\.nl/", + 10, + [], + [ + { + "e": 2400 + } + ], + [ + { + "v": 2400 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2400 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2400 + } + ], + {} + ], + [ + 1, + "auto_NL_galaxyclub.nl_swt", + 0, + "^https?://(www\\.)?galaxyclub\\.nl/", + 10, + [], + [ + { + "e": 2798 + } + ], + [ + { + "v": 2798 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2798 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2798 + } + ], + {} + ], + [ + 1, + "auto_NL_gapph.nl_9a0_+1", + 0, + "^https?://(www\\.)?gapph\\.nl/|^https?://(www\\.)?tenhoven-bomen\\.nl/", + 10, + [], + [ + { + "e": 2401 + } + ], + [ + { + "v": 2401 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2401 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2401 + } + ], + {} + ], + [ + 1, + "auto_NL_gault-millau.nl_jka", + 0, + "^https?://(www\\.)?gault-millau\\.nl/", + 10, + [], + [ + { + "e": 2799 + } + ], + [ + { + "v": 2799 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2799 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2799 + } + ], + {} + ], + [ + 1, + "auto_NL_gear4music.nl_c5t", + 0, + "^https?://(www\\.)?gear4music\\.nl/", + 10, + [], + [ + { + "e": 1606 + } + ], + [ + { + "v": 1606 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1606 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1606 + } + ], + {} + ], + [ + 1, + "auto_NL_geldmaat.nl_3qy", + 0, + "^https?://(www\\.)?geldmaat\\.nl/", + 10, + [], + [ + { + "e": 2153 + } + ], + [ + { + "v": 2153 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2153 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2153 + } + ], + {} + ], + [ + 1, + "auto_NL_gemeente.leiden.nl_ht6_+4", + 0, + "^https?://(www\\.)?gemeente\\.leiden\\.nl/|^https?://(www\\.)?hobbydoos\\.nl/|^https?://(www\\.)?kamadoexpress\\.nl/|^https?://(www\\.)?movisie\\.nl/|^https?://(www\\.)?ekvis\\.com/", + 10, + [], + [ + { + "e": 2326 + } + ], + [ + { + "v": 2326 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2326 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2326 + } + ], + {} + ], + [ + 1, + "auto_NL_gemeentebanen.nl_trq", + 0, + "^https?://(www\\.)?gemeentebanen\\.nl/", + 10, + [], + [ + { + "e": 2402 + } + ], + [ + { + "v": 2402 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2402 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2402 + } + ], + {} + ], + [ + 1, + "auto_NL_gezondheidenwetenschap.be_zgi", + 0, + "^https?://(www\\.)?gezondheidenwetenschap\\.be/", + 10, + [], + [ + { + "e": 2403 + } + ], + [ + { + "v": 2403 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2403 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2403 + } + ], + {} + ], + [ + 1, + "auto_NL_gezondheidsuniversiteit.nl_mhi", + 0, + "^https?://(www\\.)?gezondheidsuniversiteit\\.nl/", + 10, + [], + [ + { + "e": 2404 + } + ], + [ + { + "v": 2404 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2404 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2404 + } + ], + {} + ], + [ + 1, + "auto_NL_gezondr.nl_x1f", + 0, + "^https?://(www\\.)?gezondr\\.nl/", + 10, + [], + [ + { + "e": 2405 + } + ], + [ + { + "v": 2405 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2405 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2405 + } + ], + {} + ], + [ + 1, + "auto_NL_goboony.nl_rac", + 0, + "^https?://(www\\.)?goboony\\.nl/", + 10, + [], + [ + { + "e": 2406 + } + ], + [ + { + "v": 2406 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2406 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2406 + } + ], + {} + ], + [ + 1, + "auto_NL_greenchoice.nl_be7_+1", + 0, + "^https?://(www\\.)?greenchoice\\.nl/|^https?://([a-z]+\\.)?greenchoice\\.nl/", + 10, + [], + [ + { + "e": 2407 + } + ], + [ + { + "v": 2407 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2407 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2407 + } + ], + {} + ], + [ + 1, + "auto_NL_groningse4daagse.nl_42x", + 0, + "^https?://(www\\.)?groningse4daagse\\.nl/", + 10, + [], + [ + { + "e": 1636 + } + ], + [ + { + "v": 1636 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1636 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1636 + } + ], + {} + ], + [ + 1, + "auto_NL_hansanders.nl_tcm", + 0, + "^https?://(www\\.)?hansanders\\.nl/", + 10, + [], + [ + { + "e": 2408 + } + ], + [ + { + "v": 2408 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2408 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2408 + } + ], + {} + ], + [ + 1, + "auto_NL_helpmij.nl_vyz_+1", + 0, + "^https?://(www\\.)?helpmij\\.nl/|^https?://(www\\.)?nationaalcomputerforum\\.nl/", + 10, + [], + [ + { + "e": 1081 + } + ], + [ + { + "v": 1081 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1081 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1081 + } + ], + {} + ], + [ + 1, + "auto_NL_hendrickdekeyser.nl_i9j_+2", + 0, + "^https?://(www\\.)?hendrickdekeyser\\.nl/|^https?://(www\\.)?rathenau\\.nl/|^https?://(www\\.)?sociaalwerk-werkt\\.nl/", + 10, + [], + [ + { + "e": 2372 + } + ], + [ + { + "v": 2372 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2372 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2372 + } + ], + {} + ], + [ + 1, + "auto_NL_hetschip.nl_39e", + 0, + "^https?://(www\\.)?hetschip\\.nl/", + 10, + [], + [ + { + "e": 2314 + } + ], + [ + { + "v": 2314 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2314 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2314 + } + ], + {} + ], + [ + 1, + "auto_NL_higherlevel.nl_vcr", + 0, + "^https?://(www\\.)?higherlevel\\.nl/", + 10, + [], + [ + { + "e": 2409 + } + ], + [ + { + "v": 2409 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2409 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2409 + } + ], + {} + ], + [ + 1, + "auto_NL_hnt.nl_hs1_+3", + 0, + "^https?://(www\\.)?hnt\\.nl/|^https?://(www\\.)?lawei\\.nl/|^https?://(www\\.)?orpheus\\.nl/|^https?://(www\\.)?theaterrotterdam\\.nl/", + 10, + [], + [ + { + "e": 2334 + } + ], + [ + { + "v": 2334 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2334 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2334 + } + ], + {} + ], + [ + 1, + "auto_NL_hoesjesdirect.nl_yxr", + 0, + "^https?://(www\\.)?hoesjesdirect\\.nl/", + 10, + [], + [ + { + "e": 1848 + } + ], + [ + { + "v": 1848 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1848 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1848 + } + ], + {} + ], + [ + 1, + "auto_NL_hofweb.nl_8um", + 0, + "^https?://(www\\.)?hofweb\\.nl/", + 10, + [], + [ + { + "e": 2410 + } + ], + [ + { + "v": 2410 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2410 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2410 + } + ], + {} + ], + [ + 1, + "auto_NL_hogeschoolrotterdam.nl_ncm", + 0, + "^https?://(www\\.)?hogeschoolrotterdam\\.nl/", + 10, + [], + [ + { + "e": 2411 + } + ], + [ + { + "v": 2411 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2411 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2411 + } + ], + {} + ], + [ + 1, + "auto_NL_hrw.org_my0", + 0, + "^https?://(www\\.)?hrw\\.org/", + 10, + [], + [ + { + "e": 2800 + } + ], + [ + { + "v": 2800 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2800 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2800 + } + ], + {} + ], + [ + 1, + "auto_NL_huizenzoeker.nl_ia0", + 0, + "^https?://(www\\.)?huizenzoeker\\.nl/", + 10, + [], + [ + { + "e": 2412 + } + ], + [ + { + "v": 2412 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2412 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2412 + } + ], + {} + ], + [ + 1, + "auto_NL_huren.nl_lk4", + 0, + "^https?://(www\\.)?huren\\.nl/", + 10, + [], + [ + { + "e": 2413 + } + ], + [ + { + "v": 2413 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2413 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2413 + } + ], + {} + ], + [ + 1, + "auto_NL_hvcgroep.nl_568", + 0, + "^https?://(www\\.)?hvcgroep\\.nl/", + 10, + [], + [ + { + "e": 2414 + } + ], + [ + { + "v": 2414 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2414 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2414 + } + ], + {} + ], + [ + 1, + "auto_NL_hypotheker.nl_myi", + 0, + "^https?://(www\\.)?hypotheker\\.nl/", + 10, + [], + [ + { + "e": 2415 + } + ], + [ + { + "v": 2415 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2415 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2415 + } + ], + {} + ], + [ + 1, + "auto_NL_icm.nl_igo", + 0, + "^https?://(www\\.)?icm\\.nl/", + 10, + [], + [ + { + "e": 2801 + } + ], + [ + { + "v": 2801 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2801 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2801 + } + ], + {} + ], + [ + 1, + "auto_NL_idfa.nl_wdf", + 0, + "^https?://(www\\.)?idfa\\.nl/", + 10, + [], + [ + { + "e": 2802 + } + ], + [ + { + "v": 2802 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2802 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2802 + } + ], + {} + ], + [ + 1, + "auto_NL_info.mumc.nl_8s5", + 0, + "^https?://(www\\.)?info\\.mumc\\.nl/", + 10, + [], + [ + { + "e": 2803 + } + ], + [ + { + "v": 2803 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2803 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2803 + } + ], + {} + ], + [ + 1, + "auto_NL_informatique.nl_k9g", + 0, + "^https?://(www\\.)?informatique\\.nl/", + 10, + [], + [ + { + "e": 2804 + } + ], + [ + { + "v": 2804 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2804 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2804 + } + ], + {} + ], + [ + 1, + "auto_NL_ing.com_ehh", + 0, + "^https?://(www\\.)?ing\\.com/", + 10, + [], + [ + { + "e": 3040 + } + ], + [ + { + "v": 3040 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3040 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3040 + } + ], + {} + ], + [ + 1, + "auto_NL_inholland.nl_ttm", + 0, + "^https?://(www\\.)?inholland\\.nl/", + 10, + [], + [ + { + "e": 2416 + } + ], + [ + { + "v": 2416 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2416 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2416 + } + ], + {} + ], + [ + 1, + "auto_NL_inloggen.evivanlanschot.nl_ais", + 0, + "^https?://(www\\.)?inloggen\\.evivanlanschot\\.nl/", + 10, + [], + [ + { + "e": 3041 + } + ], + [ + { + "v": 3041 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3041 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3041 + } + ], + {} + ], + [ + 1, + "auto_NL_inshared.nl_p70", + 0, + "^https?://(www\\.)?inshared\\.nl/", + 10, + [], + [ + { + "e": 2417 + } + ], + [ + { + "v": 2417 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2417 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2417 + } + ], + {} + ], + [ + 1, + "auto_NL_internetbode.nl_xk7_+1", + 0, + "^https?://(www\\.)?internetbode\\.nl/|^https?://(www\\.)?texelsecourant\\.nl/", + 10, + [], + [ + { + "e": 2418 + } + ], + [ + { + "v": 2418 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2418 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2418 + } + ], + {} + ], + [ + 1, + "auto_NL_inview.nl_zwu_+2", + 0, + "^https?://(www\\.)?inview\\.nl/|^https?://(www\\.)?shop\\.wolterskluwer\\.nl/|^https?://(www\\.)?taxlive\\.nl/", + 10, + [], + [ + { + "e": 2420 + } + ], + [ + { + "v": 2420 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2420 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2420 + } + ], + {} + ], + [ + 1, + "auto_NL_isala.nl_oax", + 0, + "^https?://(www\\.)?isala\\.nl/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_NL_isvw.nl_7x0", + 0, + "^https?://(www\\.)?isvw\\.nl/", + 10, + [], + [ + { + "e": 2379 + } + ], + [ + { + "v": 2379 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2379 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2379 + } + ], + {} + ], + [ + 1, + "auto_NL_jaarbeurs.nl_6c5", + 0, + "^https?://(www\\.)?jaarbeurs\\.nl/", + 10, + [], + [ + { + "e": 2805 + } + ], + [ + { + "v": 2805 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2805 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2805 + } + ], + {} + ], + [ + 1, + "auto_NL_janbommerez.com_mbq", + 0, + "^https?://(www\\.)?janbommerez\\.com/", + 10, + [], + [ + { + "e": 2806 + } + ], + [ + { + "v": 2806 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2806 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2806 + } + ], + {} + ], + [ + 1, + "auto_NL_jongbloed-fiscaaljuristen.nl_69v", + 0, + "^https?://(www\\.)?jongbloed-fiscaaljuristen\\.nl/", + 10, + [], + [ + { + "e": 2422 + } + ], + [ + { + "v": 2422 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2422 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2422 + } + ], + {} + ], + [ + 1, + "auto_NL_joodsmonument.nl_l1j", + 0, + "^https?://(www\\.)?joodsmonument\\.nl/", + 10, + [], + [ + { + "e": 2423 + } + ], + [ + { + "v": 2423 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2423 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2423 + } + ], + {} + ], + [ + 1, + "auto_NL_kaartje2go.nl_ecw", + 0, + "^https?://(www\\.)?kaartje2go\\.nl/", + 10, + [], + [ + { + "e": 2424 + } + ], + [ + { + "v": 2424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2424 + } + ], + {} + ], + [ + 1, + "auto_NL_kabelshop.nl_pg8", + 0, + "^https?://(www\\.)?kabelshop\\.nl/", + 10, + [], + [ + { + "e": 2807 + } + ], + [ + { + "v": 2807 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2807 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2807 + } + ], + {} + ], + [ + 1, + "auto_NL_kathmandu.nl_7j4", + 0, + "^https?://(www\\.)?kathmandu\\.nl/", + 10, + [], + [ + { + "e": 2426 + } + ], + [ + { + "v": 2426 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2426 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2426 + } + ], + {} + ], + [ + 1, + "auto_NL_kawasaki.nl_ibz", + 0, + "^https?://(www\\.)?kawasaki\\.nl/", + 10, + [], + [ + { + "e": 2086 + } + ], + [ + { + "v": 2086 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2086 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2086 + } + ], + {} + ], + [ + 1, + "auto_NL_keepersecurity.com_kak", + 0, + "^https?://(www\\.)?keepersecurity\\.com/", + 10, + [], + [ + { + "e": 2427 + } + ], + [ + { + "v": 2427 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2427 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2427 + } + ], + {} + ], + [ + 1, + "auto_NL_keukenloods.nl_i9y", + 0, + "^https?://(www\\.)?keukenloods\\.nl/", + 10, + [], + [ + { + "e": 2428 + } + ], + [ + { + "v": 2428 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2428 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2428 + } + ], + {} + ], + [ + 1, + "auto_NL_kippersrijssen.nl_z78", + 0, + "^https?://(www\\.)?kippersrijssen\\.nl/", + 10, + [], + [ + { + "e": 2429 + } + ], + [ + { + "v": 2429 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2429 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2429 + } + ], + {} + ], + [ + 1, + "auto_NL_klascement.net_8xb", + 0, + "^https?://(www\\.)?klascement\\.net/", + 10, + [], + [ + { + "e": 2808 + } + ], + [ + { + "v": 2808 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2808 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2808 + } + ], + {} + ], + [ + 1, + "auto_NL_kleding.nl_nd0", + 0, + "^https?://(www\\.)?kleding\\.nl/", + 10, + [], + [ + { + "e": 2809 + } + ], + [ + { + "v": 2809 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2809 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2809 + } + ], + {} + ], + [ + 1, + "auto_NL_knab.nl_646", + 0, + "^https?://(www\\.)?knab\\.nl/", + 10, + [], + [ + { + "e": 2430 + } + ], + [ + { + "v": 2430 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2430 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2430 + } + ], + {} + ], + [ + 1, + "auto_NL_knoowy.nl_vt5", + 0, + "^https?://(www\\.)?knoowy\\.nl/", + 10, + [], + [ + { + "e": 2810 + } + ], + [ + { + "v": 2810 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2810 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2810 + } + ], + {} + ], + [ + 1, + "auto_NL_knowunity.nl_qlc", + 0, + "^https?://(www\\.)?knowunity\\.nl/", + 10, + [], + [ + { + "e": 2467 + } + ], + [ + { + "v": 2467 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2467 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2467 + } + ], + {} + ], + [ + 1, + "auto_NL_kobo.com_jfl", + 0, + "^https?://(www\\.)?kobo\\.com/", + 10, + [], + [ + { + "e": 2811 + } + ], + [ + { + "v": 2811 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2811 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2811 + } + ], + {} + ], + [ + 1, + "auto_NL_koffietje.nl_o5u", + 0, + "^https?://(www\\.)?koffietje\\.nl/", + 10, + [], + [ + { + "e": 2431 + } + ], + [ + { + "v": 2431 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2431 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2431 + } + ], + {} + ], + [ + 1, + "auto_NL_kombijde.politie.nl_hz1", + 0, + "^https?://(www\\.)?kombijde\\.politie\\.nl/", + 10, + [], + [ + { + "e": 2432 + } + ], + [ + { + "v": 2432 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2432 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2432 + } + ], + {} + ], + [ + 1, + "auto_NL_kvk.nl_0wn", + 0, + "^https?://(www\\.)?kvk\\.nl/", + 10, + [], + [ + { + "e": 2812 + } + ], + [ + { + "v": 2812 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2812 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2812 + } + ], + {} + ], + [ + 1, + "auto_NL_labplusarts.nl_feg", + 0, + "^https?://(www\\.)?labplusarts\\.nl/", + 10, + [], + [ + { + "e": 1186 + } + ], + [ + { + "v": 1186 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1186 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1186 + } + ], + {} + ], + [ + 1, + "auto_NL_lakenhal.nl_3go", + 0, + "^https?://(www\\.)?lakenhal\\.nl/", + 10, + [], + [ + { + "e": 2433 + } + ], + [ + { + "v": 2433 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2433 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2433 + } + ], + {} + ], + [ + 1, + "auto_NL_laluna-learningadventures.nl_5rb", + 0, + "^https?://(www\\.)?laluna-learningadventures\\.nl/", + 10, + [], + [ + { + "e": 2513 + } + ], + [ + { + "v": 2513 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2513 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2513 + } + ], + {} + ], + [ + 1, + "auto_NL_lampenhuis.nl_u4o", + 0, + "^https?://(www\\.)?lampenhuis\\.nl/", + 10, + [], + [ + { + "e": 2429 + } + ], + [ + { + "v": 2429 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2429 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2429 + } + ], + {} + ], + [ + 1, + "auto_NL_laurentiusziekenhuisroermond.nl_5zc", + 0, + "^https?://(www\\.)?laurentiusziekenhuisroermond\\.nl/", + 10, + [], + [ + { + "e": 2434 + } + ], + [ + { + "v": 2434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2434 + } + ], + {} + ], + [ + 1, + "auto_NL_leeuwarden.nl_4v3", + 0, + "^https?://(www\\.)?leeuwarden\\.nl/", + 10, + [], + [ + { + "e": 2435 + } + ], + [ + { + "v": 2435 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2435 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2435 + } + ], + {} + ], + [ + 1, + "auto_NL_leeuwarden.nl_tcw", + 0, + "^https?://(www\\.)?leeuwarden\\.nl/", + 10, + [], + [ + { + "e": 2436 + } + ], + [ + { + "v": 2436 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2436 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2436 + } + ], + {} + ], + [ + 1, + "auto_NL_library.universiteitleiden.nl_a0e_+1", + 0, + "^https?://(www\\.)?library\\.universiteitleiden\\.nl/|^https?://(www\\.)?staff\\.universiteitleiden\\.nl/", + 10, + [], + [ + { + "e": 2440 + } + ], + [ + { + "v": 2440 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2440 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2440 + } + ], + {} + ], + [ + 1, + "auto_NL_lloydsbank.nl_0bx", + 0, + "^https?://(www\\.)?lloydsbank\\.nl/", + 10, + [], + [ + { + "e": 1424 + } + ], + [ + { + "v": 1424 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1424 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1424 + } + ], + {} + ], + [ + 1, + "auto_NL_lotto.nederlandseloterij.nl_7c8_+1", + 0, + "^https?://(www\\.)?lotto\\.nederlandseloterij\\.nl/|^https?://(www\\.)?staatsloterij\\.nederlandseloterij\\.nl/", + 10, + [], + [ + { + "e": 2484 + } + ], + [ + { + "v": 2484 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2484 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2484 + } + ], + {} + ], + [ + 1, + "auto_NL_louis.nl_ygm", + 0, + "^https?://(www\\.)?louis\\.nl/", + 10, + [], + [ + { + "e": 1484 + } + ], + [ + { + "v": 1484 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1484 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1484 + } + ], + {} + ], + [ + 1, + "auto_NL_lynkco.com_c6y", + 0, + "^https?://(www\\.)?lynkco\\.com/", + 10, + [], + [ + { + "e": 2814 + } + ], + [ + { + "v": 2814 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2814 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2814 + } + ], + {} + ], + [ + 1, + "auto_NL_maandvandegeschiedenis.nl_wmv", + 0, + "^https?://(www\\.)?maandvandegeschiedenis\\.nl/", + 10, + [], + [ + { + "e": 1659 + } + ], + [ + { + "v": 1659 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1659 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1659 + } + ], + {} + ], + [ + 1, + "auto_NL_magazines-motivatie.nl_6o1", + 0, + "^https?://(www\\.)?magazines-motivatie\\.nl/", + 10, + [], + [ + { + "e": 1954 + } + ], + [ + { + "v": 1954 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1954 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1954 + } + ], + {} + ], + [ + 1, + "auto_NL_makro.nl_ror", + 0, + "^https?://(www\\.)?makro\\.nl/", + 10, + [], + [ + { + "e": 2437 + } + ], + [ + { + "v": 2437 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2437 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2437 + } + ], + {} + ], + [ + 1, + "auto_NL_malmberg.nl_uw4", + 0, + "^https?://(www\\.)?malmberg\\.nl/", + 10, + [], + [ + { + "e": 2815 + } + ], + [ + { + "v": 2815 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2815 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2815 + } + ], + {} + ], + [ + 1, + "auto_NL_mamabotanica.nl_m22", + 0, + "^https?://(www\\.)?mamabotanica\\.nl/", + 10, + [], + [ + { + "e": 2438 + } + ], + [ + { + "v": 2438 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2438 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2438 + } + ], + {} + ], + [ + 1, + "auto_NL_manufactum.nl_w9l", + 0, + "^https?://(www\\.)?manufactum\\.nl/", + 10, + [], + [ + { + "e": 1658 + } + ], + [ + { + "v": 1658 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1658 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1658 + } + ], + {} + ], + [ + 1, + "auto_NL_martiniziekenhuis.nl_riy", + 0, + "^https?://(www\\.)?martiniziekenhuis\\.nl/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_NL_matrassencheck.nl_cap", + 0, + "^https?://(www\\.)?matrassencheck\\.nl/", + 10, + [], + [ + { + "e": 2145 + } + ], + [ + { + "v": 2145 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2145 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2145 + } + ], + {} + ], + [ + 1, + "auto_NL_medpets.nl_hb2", + 0, + "^https?://(www\\.)?medpets\\.nl/", + 10, + [], + [ + { + "e": 1894 + } + ], + [ + { + "v": 1894 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1894 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1894 + } + ], + {} + ], + [ + 1, + "auto_NL_meesterslijpers.nl_sh6", + 0, + "^https?://(www\\.)?meesterslijpers\\.nl/", + 10, + [], + [ + { + "e": 2441 + } + ], + [ + { + "v": 2441 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2441 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2441 + } + ], + {} + ], + [ + 1, + "auto_NL_meijerenblessing.nl_4fd", + 0, + "^https?://(www\\.)?meijerenblessing\\.nl/", + 10, + [], + [ + { + "e": 2174 + } + ], + [ + { + "v": 2174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2174 + } + ], + {} + ], + [ + 1, + "auto_NL_meubelbeslagonline.nl_lfo", + 0, + "^https?://(www\\.)?meubelbeslagonline\\.nl/", + 10, + [], + [ + { + "e": 2329 + } + ], + [ + { + "v": 2329 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2329 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2329 + } + ], + {} + ], + [ + 1, + "auto_NL_mijn.simyo.nl_xm9", + 0, + "^https?://(www\\.)?mijn\\.simyo\\.nl/", + 10, + [], + [ + { + "e": 2816 + } + ], + [ + { + "v": 2816 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2816 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2816 + } + ], + {} + ], + [ + 1, + "auto_NL_mijngelderland.nl_rkj", + 0, + "^https?://(www\\.)?mijngelderland\\.nl/", + 10, + [], + [ + { + "e": 2442 + } + ], + [ + { + "v": 2442 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2442 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2442 + } + ], + {} + ], + [ + 1, + "auto_NL_milieucentraal.nl_p66", + 0, + "^https?://(www\\.)?milieucentraal\\.nl/", + 10, + [], + [ + { + "e": 2817 + } + ], + [ + { + "v": 2817 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2817 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2817 + } + ], + {} + ], + [ + 1, + "auto_NL_momondo.nl_mfw", + 0, + "^https?://(www\\.)?momondo\\.nl/", + 10, + [], + [ + { + "e": 1642 + } + ], + [ + { + "v": 1642 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1642 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1642 + } + ], + {} + ], + [ + 1, + "auto_NL_motorkledingstore.nl_zj7", + 0, + "^https?://(www\\.)?motorkledingstore\\.nl/", + 10, + [], + [ + { + "e": 2443 + } + ], + [ + { + "v": 2443 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2443 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2443 + } + ], + {} + ], + [ + 1, + "auto_NL_msmode.nl_460", + 0, + "^https?://(www\\.)?msmode\\.nl/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_NL_mudmasters.com_mr5", + 0, + "^https?://(www\\.)?mudmasters\\.com/", + 10, + [], + [ + { + "e": 2818 + } + ], + [ + { + "v": 2818 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2818 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2818 + } + ], + {} + ], + [ + 1, + "auto_NL_multipharma.be_90s", + 0, + "^https?://(www\\.)?multipharma\\.be/", + 10, + [], + [ + { + "e": 2444 + } + ], + [ + { + "v": 2444 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2444 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2444 + } + ], + {} + ], + [ + 1, + "auto_NL_mumc.nl_brj", + 0, + "^https?://(www\\.)?mumc\\.nl/", + 10, + [], + [ + { + "e": 2445 + } + ], + [ + { + "v": 2445 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2445 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2445 + } + ], + {} + ], + [ + 1, + "auto_NL_museumkaart.nl_z46", + 0, + "^https?://(www\\.)?museum\\.nl/", + 10, + [], + [ + { + "e": 2819 + } + ], + [ + { + "v": 2819 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2819 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2819 + } + ], + {} + ], + [ + 1, + "auto_NL_natuurhuisje.nl_jwu", + 0, + "^https?://(www\\.)?natuurhuisje\\.nl/", + 10, + [], + [ + { + "e": 1903 + } + ], + [ + { + "v": 1903 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1903 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1903 + } + ], + {} + ], + [ + 1, + "auto_NL_nd.nl_yyh", + 0, + "^https?://(www\\.)?nd\\.nl/", + 10, + [], + [ + { + "e": 2820 + } + ], + [ + { + "v": 2820 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2820 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2820 + } + ], + {} + ], + [ + 1, + "auto_NL_nec-nijmegen.nl_04y", + 0, + "^https?://(www\\.)?nec-nijmegen\\.nl/", + 10, + [], + [ + { + "e": 2447 + } + ], + [ + { + "v": 2447 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2447 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2447 + } + ], + {} + ], + [ + 1, + "auto_NL_nederlandseloterij.nl_b60", + 0, + "^https?://(www\\.)?nederlandseloterij\\.nl/", + 10, + [], + [ + { + "e": 2448 + } + ], + [ + { + "v": 2448 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2448 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2448 + } + ], + {} + ], + [ + 1, + "auto_NL_nedgame.nl_sfh", + 0, + "^https?://(www\\.)?nedgame\\.nl/", + 10, + [], + [ + { + "e": 2449 + } + ], + [ + { + "v": 2449 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2449 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2449 + } + ], + {} + ], + [ + 1, + "auto_NL_nelson.nl_mg8", + 0, + "^https?://(www\\.)?nelson\\.nl/", + 10, + [], + [ + { + "e": 2450 + } + ], + [ + { + "v": 2450 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2450 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2450 + } + ], + {} + ], + [ + 1, + "auto_NL_netbeheernederland.nl_gy7", + 0, + "^https?://(www\\.)?netbeheernederland\\.nl/", + 10, + [], + [ + { + "e": 2821 + } + ], + [ + { + "v": 2821 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2821 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2821 + } + ], + {} + ], + [ + 1, + "auto_NL_newpharma.nl_sal", + 0, + "^https?://(www\\.)?newpharma\\.nl/", + 10, + [], + [ + { + "e": 2121 + } + ], + [ + { + "v": 2121 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2121 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2121 + } + ], + {} + ], + [ + 1, + "auto_NL_newyorkpizza.nl_if8", + 0, + "^https?://(www\\.)?newyorkpizza\\.nl/", + 10, + [], + [ + { + "e": 2451 + } + ], + [ + { + "v": 2451 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2451 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2451 + } + ], + {} + ], + [ + 1, + "auto_NL_nl-nl.bakker.com_xcl", + 0, + "^https?://(www\\.)?nl-nl\\.bakker\\.com/", + 10, + [], + [ + { + "e": 2452 + } + ], + [ + { + "v": 2452 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2452 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2452 + } + ], + {} + ], + [ + 1, + "auto_NL_nl.jura.com_bk7", + 0, + "^https?://(www\\.)?nl\\.jura\\.com/", + 10, + [], + [ + { + "e": 1442 + } + ], + [ + { + "v": 1442 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1442 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1442 + } + ], + {} + ], + [ + 1, + "auto_NL_nl.pepper.com_6u1", + 0, + "^https?://(www\\.)?nl\\.pepper\\.com/", + 10, + [], + [ + { + "e": 2243 + } + ], + [ + { + "v": 2243 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2243 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2243 + } + ], + {} + ], + [ + 1, + "auto_NL_nl.wikiloc.com_xwl", + 0, + "^https?://(www\\.)?nl\\.wikiloc\\.com/", + 10, + [], + [ + { + "e": 2069 + } + ], + [ + { + "v": 2069 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2069 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2069 + } + ], + {} + ], + [ + 1, + "auto_NL_nlvoorelkaar.nl_dhn", + 0, + "^https?://(www\\.)?nlvoorelkaar\\.nl/", + 10, + [], + [ + { + "e": 2822 + } + ], + [ + { + "v": 2822 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2822 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2822 + } + ], + {} + ], + [ + 1, + "auto_NL_nndamloop.nl_w9i_+1", + 0, + "^https?://(www\\.)?nndamloop\\.nl/|^https?://(www\\.)?tcsamsterdammarathon\\.nl/", + 10, + [], + [ + { + "e": 2823 + } + ], + [ + { + "v": 2823 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2823 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2823 + } + ], + {} + ], + [ + 1, + "auto_NL_norah.eu_iv4", + 0, + "^https?://(www\\.)?norah\\.eu/", + 10, + [], + [ + { + "e": 2454 + } + ], + [ + { + "v": 2454 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2454 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2454 + } + ], + {} + ], + [ + 1, + "auto_NL_novamora.nl_qsz", + 0, + "^https?://(www\\.)?novamora\\.nl/", + 10, + [], + [ + { + "e": 2455 + } + ], + [ + { + "v": 2455 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2455 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2455 + } + ], + {} + ], + [ + 1, + "auto_NL_nro.nl_sey", + 0, + "^https?://(www\\.)?nro\\.nl/", + 10, + [], + [ + { + "e": 2824 + } + ], + [ + { + "v": 2824 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2824 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2824 + } + ], + {} + ], + [ + 1, + "auto_NL_nsinternational.com_8ru", + 0, + "^https?://(www\\.)?nsinternational\\.com/", + 10, + [], + [ + { + "e": 2456 + } + ], + [ + { + "v": 2456 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2456 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2456 + } + ], + {} + ], + [ + 1, + "auto_NL_nwo.nl_6vp", + 0, + "^https?://(www\\.)?nwo\\.nl/", + 10, + [], + [ + { + "e": 2825 + } + ], + [ + { + "v": 2825 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2825 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2825 + } + ], + {} + ], + [ + 1, + "auto_NL_odido.nl_arv", + 0, + "^https?://(www\\.)?odido\\.nl/", + 10, + [], + [ + { + "e": 2826 + } + ], + [ + { + "v": 2826 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2826 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2826 + } + ], + {} + ], + [ + 1, + "auto_NL_omoda.nl_dio", + 0, + "^https?://(www\\.)?omoda\\.nl/", + 10, + [], + [ + { + "e": 2340 + } + ], + [ + { + "v": 2340 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2340 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2340 + } + ], + {} + ], + [ + 1, + "auto_NL_onderdelenshop24.com_385", + 0, + "^https?://(www\\.)?onderdelenshop24\\.com/", + 10, + [], + [ + { + "e": 1376 + } + ], + [ + { + "v": 1376 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1376 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1376 + } + ], + {} + ], + [ + 1, + "auto_NL_ondernemersplein.overheid.nl_msq", + 0, + "^https?://(www\\.)?ondernemersplein\\.overheid\\.nl/", + 10, + [], + [ + { + "e": 2358 + } + ], + [ + { + "v": 2358 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2358 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2358 + } + ], + {} + ], + [ + 1, + "auto_NL_onderwijskennis.nl_zqs", + 0, + "^https?://(www\\.)?onderwijskennis\\.nl/", + 10, + [], + [ + { + "e": 2827 + } + ], + [ + { + "v": 2827 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2827 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2827 + } + ], + {} + ], + [ + 1, + "auto_NL_onderwijsvanmorgen.nl_xhp", + 0, + "^https?://(www\\.)?onderwijsvanmorgen\\.nl/", + 10, + [], + [ + { + "e": 2828 + } + ], + [ + { + "v": 2828 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2828 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2828 + } + ], + {} + ], + [ + 1, + "auto_NL_oost.nl_gm5", + 0, + "^https?://(www\\.)?oost\\.nl/", + 10, + [], + [ + { + "e": 2829 + } + ], + [ + { + "v": 2829 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2829 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2829 + } + ], + {} + ], + [ + 1, + "auto_NL_opdeheuvelrug.nl_vs9_+1", + 0, + "^https?://(www\\.)?opdeheuvelrug\\.nl/|^https?://(www\\.)?visitgroningen\\.nl/", + 10, + [], + [ + { + "e": 2397 + } + ], + [ + { + "v": 2397 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2397 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2397 + } + ], + {} + ], + [ + 1, + "auto_NL_opmaatzagen.nl_euu", + 0, + "^https?://(www\\.)?opmaatzagen\\.nl/", + 10, + [], + [ + { + "e": 2457 + } + ], + [ + { + "v": 2457 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2457 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2457 + } + ], + {} + ], + [ + 1, + "auto_NL_optimalegezondheid.com_u4j", + 0, + "^https?://(www\\.)?optimalegezondheid\\.com/", + 10, + [], + [ + { + "e": 1307 + } + ], + [ + { + "v": 1307 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1307 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1307 + } + ], + {} + ], + [ + 1, + "auto_NL_otrium.nl_5cu", + 0, + "^https?://(www\\.)?otrium\\.nl/", + 10, + [], + [ + { + "e": 2458 + } + ], + [ + { + "v": 2458 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2458 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2458 + } + ], + {} + ], + [ + 1, + "auto_NL_ou.nl_9tc", + 0, + "^https?://(www\\.)?ou\\.nl/", + 10, + [], + [ + { + "e": 2459 + } + ], + [ + { + "v": 2459 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2459 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2459 + } + ], + {} + ], + [ + 1, + "auto_NL_parasol-shop.nl_gps", + 0, + "^https?://(www\\.)?parasol-shop\\.nl/", + 10, + [], + [ + { + "e": 2460 + } + ], + [ + { + "v": 2460 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2460 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2460 + } + ], + {} + ], + [ + 1, + "auto_NL_parkinson-vereniging.nl_zhe", + 0, + "^https?://(www\\.)?parkinson-vereniging\\.nl/", + 10, + [], + [ + { + "e": 2830 + } + ], + [ + { + "v": 2830 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2830 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2830 + } + ], + {} + ], + [ + 1, + "auto_NL_parnassiagroep.nl_7od_+1", + 0, + "^https?://(www\\.)?parnassiagroep\\.nl/|^https?://(www\\.)?psyq\\.nl/", + 10, + [], + [ + { + "e": 1693 + } + ], + [ + { + "v": 1693 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1693 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1693 + } + ], + {} + ], + [ + 1, + "auto_NL_partnerplatform.bol.com_k9h", + 0, + "^https?://(www\\.)?partnerplatform\\.bol\\.com/", + 10, + [], + [ + { + "e": 2461 + } + ], + [ + { + "v": 2461 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2461 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2461 + } + ], + {} + ], + [ + 1, + "auto_NL_penstore.nl_wjr", + 0, + "^https?://(www\\.)?penstore\\.nl/", + 10, + [], + [ + { + "e": 2462 + } + ], + [ + { + "v": 2462 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2462 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2462 + } + ], + {} + ], + [ + 1, + "auto_NL_people.utwente.nl_c51", + 0, + "^https?://(www\\.)?people\\.utwente\\.nl/", + 10, + [], + [ + { + "e": 2463 + } + ], + [ + { + "v": 2463 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2463 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2463 + } + ], + {} + ], + [ + 1, + "auto_NL_persportaal.anp.nl_o32", + 0, + "^https?://(www\\.)?persportaal\\.anp\\.nl/", + 10, + [], + [ + { + "e": 2831 + } + ], + [ + { + "v": 2831 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2831 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2831 + } + ], + {} + ], + [ + 1, + "auto_NL_philhaarlem.nl_w3r", + 0, + "^https?://(www\\.)?philhaarlem\\.nl/", + 10, + [], + [ + { + "e": 3042 + } + ], + [ + { + "v": 3042 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3042 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3042 + } + ], + {} + ], + [ + 1, + "auto_NL_planteenolijfboom.nl_pdo", + 0, + "^https?://(www\\.)?planteenolijfboom\\.nl/", + 10, + [], + [ + { + "e": 1620 + } + ], + [ + { + "v": 1620 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1620 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1620 + } + ], + {} + ], + [ + 1, + "auto_NL_plus.nl_ybx", + 0, + "^https?://(www\\.)?plus\\.nl/", + 10, + [], + [ + { + "e": 2833 + } + ], + [ + { + "v": 2833 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2833 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2833 + } + ], + {} + ], + [ + 1, + "auto_NL_pmepensioen.nl_p3m", + 0, + "^https?://(www\\.)?pmepensioen\\.nl/", + 10, + [], + [ + { + "e": 2465 + } + ], + [ + { + "v": 2465 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2465 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2465 + } + ], + {} + ], + [ + 1, + "auto_NL_pmt.nl_yds", + 0, + "^https?://(www\\.)?pmt\\.nl/", + 10, + [], + [ + { + "e": 2466 + } + ], + [ + { + "v": 2466 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2466 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2466 + } + ], + {} + ], + [ + 1, + "auto_NL_poki.to_g6e", + 0, + "^https?://(www\\.)?poki\\.to/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_NL_politie.nl_8bl", + 0, + "^https?://(www\\.)?politie\\.nl/", + 10, + [], + [ + { + "e": 2834 + } + ], + [ + { + "v": 2834 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2834 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2834 + } + ], + {} + ], + [ + 1, + "auto_NL_praxis.nl_wd8", + 0, + "^https?://(www\\.)?praxis\\.nl/", + 10, + [], + [ + { + "e": 2356 + } + ], + [ + { + "v": 2356 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2356 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2356 + } + ], + {} + ], + [ + 1, + "auto_NL_pricewise.nl_b24", + 0, + "^https?://(www\\.)?pricewise\\.nl/", + 10, + [], + [ + { + "e": 2468 + } + ], + [ + { + "v": 2468 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2468 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2468 + } + ], + {} + ], + [ + 1, + "auto_NL_profitent24.nl_tz8", + 0, + "^https?://(www\\.)?profitent24\\.nl/", + 10, + [], + [ + { + "e": 1377 + } + ], + [ + { + "v": 1377 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1377 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1377 + } + ], + {} + ], + [ + 1, + "auto_NL_proforto.nl_8vc", + 0, + "^https?://(www\\.)?proforto\\.nl/", + 10, + [], + [ + { + "e": 2835 + } + ], + [ + { + "v": 2835 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2835 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2835 + } + ], + {} + ], + [ + 1, + "auto_NL_promovendum.nl_kam", + 0, + "^https?://(www\\.)?promovendum\\.nl/", + 10, + [], + [ + { + "e": 2470 + } + ], + [ + { + "v": 2470 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2470 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2470 + } + ], + {} + ], + [ + 1, + "auto_NL_proximus.be_mk1", + 0, + "^https?://(www\\.)?proximus\\.be/", + 10, + [], + [ + { + "e": 2471 + } + ], + [ + { + "v": 2471 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2471 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2471 + } + ], + {} + ], + [ + 1, + "auto_NL_psv.nl_2pt", + 0, + "^https?://(www\\.)?psv\\.nl/", + 10, + [], + [ + { + "e": 2472 + } + ], + [ + { + "v": 2472 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2472 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2472 + } + ], + {} + ], + [ + 1, + "auto_NL_rabobank.jobs_opx", + 0, + "^https?://(www\\.)?rabobank\\.jobs/", + 10, + [], + [ + { + "e": 2836 + } + ], + [ + { + "v": 2836 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2836 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2836 + } + ], + {} + ], + [ + 1, + "auto_NL_radiatorkopen.nl_veo", + 0, + "^https?://(www\\.)?radiatorkopen\\.nl/", + 10, + [], + [ + { + "e": 3043 + } + ], + [ + { + "v": 3043 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3043 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3043 + } + ], + {} + ], + [ + 1, + "auto_NL_reinierdegraaf.nl_bi4", + 0, + "^https?://(www\\.)?reinierdegraaf\\.nl/", + 10, + [], + [ + { + "e": 2837 + } + ], + [ + { + "v": 2837 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2837 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2837 + } + ], + {} + ], + [ + 1, + "auto_NL_retailtrends.nl_jhr_+1", + 0, + "^https?://(www\\.)?retailtrends\\.nl/|^https?://(www\\.)?vastgoedjournaal\\.nl/", + 10, + [], + [ + { + "e": 2473 + } + ], + [ + { + "v": 2473 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2473 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2473 + } + ], + {} + ], + [ + 1, + "auto_NL_reumanederland.nl_bjr", + 0, + "^https?://(www\\.)?reumanederland\\.nl/", + 10, + [], + [ + { + "e": 2474 + } + ], + [ + { + "v": 2474 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2474 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2474 + } + ], + {} + ], + [ + 1, + "auto_NL_rexel.nl_r1o", + 0, + "^https?://(www\\.)?rexel\\.nl/", + 10, + [], + [ + { + "e": 1922 + } + ], + [ + { + "v": 1922 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1922 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1922 + } + ], + {} + ], + [ + 1, + "auto_NL_rijbewijskeuringsarts.nl_h69", + 0, + "^https?://(www\\.)?rijbewijskeuringsarts\\.nl/", + 10, + [], + [ + { + "e": 2475 + } + ], + [ + { + "v": 2475 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2475 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2475 + } + ], + {} + ], + [ + 1, + "auto_NL_rijnstate.nl_bvc", + 0, + "^https?://(www\\.)?rijnstate\\.nl/", + 10, + [], + [ + { + "e": 1180 + } + ], + [ + { + "v": 1180 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1180 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1180 + } + ], + {} + ], + [ + 1, + "auto_NL_roc-nijmegen.nl_cv8", + 0, + "^https?://(www\\.)?roc-nijmegen\\.nl/", + 10, + [], + [ + { + "e": 2838 + } + ], + [ + { + "v": 2838 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2838 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2838 + } + ], + {} + ], + [ + 1, + "auto_NL_roddelpraat.nl_7li", + 0, + "^https?://(www\\.)?roddelpraat\\.nl/", + 10, + [], + [ + { + "e": 2839 + } + ], + [ + { + "v": 2839 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2839 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2839 + } + ], + {} + ], + [ + 1, + "auto_NL_rotterdam.info_kat", + 0, + "^https?://(www\\.)?rotterdam\\.info/", + 10, + [], + [ + { + "e": 2474 + } + ], + [ + { + "v": 2474 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2474 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2474 + } + ], + {} + ], + [ + 1, + "auto_NL_rotterdam.nl_m0q", + 0, + "^https?://(www\\.)?rotterdam\\.nl/", + 10, + [], + [ + { + "e": 1028 + } + ], + [ + { + "v": 1028 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1028 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1028 + } + ], + {} + ], + [ + 1, + "auto_NL_sanitairkamer.nl_vig", + 0, + "^https?://(www\\.)?sanitairkamer\\.nl/", + 10, + [], + [ + { + "e": 2174 + } + ], + [ + { + "v": 2174 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2174 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2174 + } + ], + {} + ], + [ + 1, + "auto_NL_saniweb.nl_kcj", + 0, + "^https?://(www\\.)?saniweb\\.nl/", + 10, + [], + [ + { + "e": 2840 + } + ], + [ + { + "v": 2840 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2840 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2840 + } + ], + {} + ], + [ + 1, + "auto_NL_saxoinvestor.nl_sdz", + 0, + "^https?://(www\\.)?saxoinvestor\\.nl/", + 10, + [], + [ + { + "e": 2477 + } + ], + [ + { + "v": 2477 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2477 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2477 + } + ], + {} + ], + [ + 1, + "auto_NL_schaapcitroen.nl_6v0", + 0, + "^https?://(www\\.)?schaapcitroen\\.nl/", + 10, + [], + [ + { + "e": 2478 + } + ], + [ + { + "v": 2478 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2478 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2478 + } + ], + {} + ], + [ + 1, + "auto_NL_schuurman-schoenen.nl_tb3", + 0, + "^https?://(www\\.)?schuurman-schoenen\\.nl/", + 10, + [], + [ + { + "e": 2479 + } + ], + [ + { + "v": 2479 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2479 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2479 + } + ], + {} + ], + [ + 1, + "auto_NL_scouting.nl_ue4", + 0, + "^https?://(www\\.)?scouting\\.nl/", + 10, + [], + [ + { + "e": 2412 + } + ], + [ + { + "v": 2412 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2412 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2412 + } + ], + {} + ], + [ + 1, + "auto_NL_selectra.nl_bra", + 0, + "^https?://(www\\.)?selectra\\.nl/", + 10, + [], + [ + { + "e": 1553 + } + ], + [ + { + "v": 1553 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1553 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1553 + } + ], + {} + ], + [ + 1, + "auto_NL_semiconductor.samsung.com_9ur", + 0, + "^https?://(www\\.)?semiconductor\\.samsung\\.com/", + 10, + [], + [ + { + "e": 2480 + } + ], + [ + { + "v": 2480 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2480 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2480 + } + ], + {} + ], + [ + 1, + "auto_NL_siebeljuweliers.nl_mmq", + 0, + "^https?://(www\\.)?siebeljuweliers\\.nl/", + 10, + [], + [ + { + "e": 2481 + } + ], + [ + { + "v": 2481 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2481 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2481 + } + ], + {} + ], + [ + 1, + "auto_NL_slachtofferhulp.nl_4m4", + 0, + "^https?://(www\\.)?slachtofferhulp\\.nl/", + 10, + [], + [ + { + "e": 2841 + } + ], + [ + { + "v": 2841 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2841 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2841 + } + ], + {} + ], + [ + 1, + "auto_NL_slo.nl_3oq", + 0, + "^https?://(www\\.)?slo\\.nl/", + 10, + [], + [ + { + "e": 2482 + } + ], + [ + { + "v": 2482 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2482 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2482 + } + ], + {} + ], + [ + 1, + "auto_NL_smartphonehoesjes.nl_eco", + 0, + "^https?://(www\\.)?smartphonehoesjes\\.nl/", + 10, + [], + [ + { + "e": 1838 + } + ], + [ + { + "v": 1838 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1838 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1838 + } + ], + {} + ], + [ + 1, + "auto_NL_snowboards.nl_m7b", + 0, + "^https?://(www\\.)?snowboards\\.nl/", + 10, + [], + [ + { + "e": 3044 + } + ], + [ + { + "v": 3044 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3044 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3044 + } + ], + {} + ], + [ + 1, + "auto_NL_socialedienstdrechtsteden.nl_4jo", + 0, + "^https?://(www\\.)?socialedienstdrechtsteden\\.nl/", + 10, + [], + [ + { + "e": 2613 + } + ], + [ + { + "v": 2613 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2613 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2613 + } + ], + {} + ], + [ + 1, + "auto_NL_somfy.nl_aln", + 0, + "^https?://(www\\.)?somfy\\.nl/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_NL_spartoo.nl_tfd", + 0, + "^https?://(www\\.)?spartoo\\.nl/", + 10, + [], + [ + { + "e": 2153 + } + ], + [ + { + "v": 2153 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2153 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2153 + } + ], + {} + ], + [ + 1, + "auto_NL_sprinklr.co_3ww", + 0, + "^https?://(www\\.)?sprinklr\\.co/", + 10, + [], + [ + { + "e": 1764 + } + ], + [ + { + "v": 1764 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1764 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1764 + } + ], + {} + ], + [ + 1, + "auto_NL_sro.nl_7ia", + 0, + "^https?://(www\\.)?sro\\.nl/", + 10, + [], + [ + { + "e": 2483 + } + ], + [ + { + "v": 2483 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2483 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2483 + } + ], + {} + ], + [ + 1, + "auto_NL_stadsschouwburg-utrecht.nl_tcz", + 0, + "^https?://(www\\.)?stadsschouwburg-utrecht\\.nl/", + 10, + [], + [ + { + "e": 2842 + } + ], + [ + { + "v": 2842 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2842 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2842 + } + ], + {} + ], + [ + 1, + "auto_NL_standaardboekhandel.be_6ol", + 0, + "^https?://(www\\.)?standaardboekhandel\\.be/", + 10, + [], + [ + { + "e": 2485 + } + ], + [ + { + "v": 2485 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2485 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2485 + } + ], + {} + ], + [ + 1, + "auto_NL_stedelijkmuseumschiedam.nl_y6j", + 0, + "^https?://(www\\.)?stedelijkmuseumschiedam\\.nl/", + 10, + [], + [ + { + "e": 2961 + } + ], + [ + { + "v": 2961 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2961 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2961 + } + ], + {} + ], + [ + 1, + "auto_NL_strato.nl_ezn", + 0, + "^https?://(www\\.)?strato\\.nl/", + 10, + [], + [ + { + "e": 2486 + } + ], + [ + { + "v": 2486 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2486 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2486 + } + ], + {} + ], + [ + 1, + "auto_NL_streekstadcentraal.nl_3rv", + 0, + "^https?://(www\\.)?streekstadcentraal\\.nl/", + 10, + [], + [ + { + "e": 1927 + } + ], + [ + { + "v": 1927 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1927 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1927 + } + ], + {} + ], + [ + 1, + "auto_NL_stripe.com_o7v", + 0, + "^https?://(www\\.)?stripe\\.com/", + 10, + [], + [ + { + "e": 2843 + } + ], + [ + { + "v": 2843 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2843 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2843 + } + ], + {} + ], + [ + 1, + "auto_NL_student.uva.nl_5p0", + 0, + "^https?://(www\\.)?student\\.uva\\.nl/", + 10, + [], + [ + { + "e": 3045 + } + ], + [ + { + "v": 3045 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3045 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3045 + } + ], + {} + ], + [ + 1, + "auto_NL_suitableshop.nl_txs", + 0, + "^https?://(www\\.)?suitableshop\\.nl/", + 10, + [], + [ + { + "e": 2487 + } + ], + [ + { + "v": 2487 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2487 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2487 + } + ], + {} + ], + [ + 1, + "auto_NL_superfoodstore.nl_9ml", + 0, + "^https?://(www\\.)?superfoodstore\\.nl/", + 10, + [], + [ + { + "e": 2798 + } + ], + [ + { + "v": 2798 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2798 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2798 + } + ], + {} + ], + [ + 1, + "auto_NL_support.strava.com_giw", + 0, + "^https?://(www\\.)?support\\.strava\\.com/", + 10, + [], + [ + { + "e": 2488 + } + ], + [ + { + "v": 2488 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2488 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2488 + } + ], + {} + ], + [ + 1, + "auto_NL_surf.nl_n0d", + 0, + "^https?://(www\\.)?surf\\.nl/", + 10, + [], + [ + { + "e": 2489 + } + ], + [ + { + "v": 2489 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2489 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2489 + } + ], + {} + ], + [ + 1, + "auto_NL_tefal.nl_o4g", + 0, + "^https?://(www\\.)?tefal\\.nl/", + 10, + [], + [ + { + "e": 1434 + } + ], + [ + { + "v": 1434 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1434 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1434 + } + ], + {} + ], + [ + 1, + "auto_NL_televizier.nl_l0l", + 0, + "^https?://(www\\.)?voorkeuren\\.tvgids\\.nl/", + 10, + [], + [ + { + "e": 2490 + } + ], + [ + { + "v": 2490 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2490 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2490 + } + ], + {} + ], + [ + 1, + "auto_NL_tennet.eu_s9e", + 0, + "^https?://(www\\.)?tennet\\.eu/", + 10, + [], + [ + { + "e": 2491 + } + ], + [ + { + "v": 2491 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2491 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2491 + } + ], + {} + ], + [ + 1, + "auto_NL_thelittlegreenbag.nl_0ip", + 0, + "^https?://(www\\.)?thelittlegreenbag\\.nl/", + 10, + [], + [ + { + "e": 2492 + } + ], + [ + { + "v": 2492 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2492 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2492 + } + ], + {} + ], + [ + 1, + "auto_NL_ticketswap.com_d3j", + 0, + "^https?://(www\\.)?ticketswap\\.com/", + 10, + [], + [ + { + "e": 2493 + } + ], + [ + { + "v": 2493 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2493 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2493 + } + ], + {} + ], + [ + 1, + "auto_NL_ticketswap.nl_a8k", + 0, + "^https?://(www\\.)?ticketswap\\.nl/", + 10, + [], + [ + { + "e": 2493 + } + ], + [ + { + "v": 2493 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2493 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2493 + } + ], + {} + ], + [ + 1, + "auto_NL_tno.nl_m9r", + 0, + "^https?://(www\\.)?tno\\.nl/", + 10, + [], + [ + { + "e": 2494 + } + ], + [ + { + "v": 2494 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2494 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2494 + } + ], + {} + ], + [ + 1, + "auto_NL_tokyo.nl_255", + 0, + "^https?://(www\\.)?tokyo\\.nl/", + 10, + [], + [ + { + "e": 2707 + } + ], + [ + { + "v": 2707 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2707 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2707 + } + ], + {} + ], + [ + 1, + "auto_NL_tommy.com_v6o", + 0, + "^https?://(www\\.)?nl\\.tommy\\.com/", + 10, + [], + [ + { + "e": 1444 + } + ], + [ + { + "v": 1444 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1444 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1444 + } + ], + {} + ], + [ + 1, + "auto_NL_toto.nl_gnb", + 0, + "^https?://(www\\.)?toto\\.nl/", + 10, + [], + [ + { + "e": 2495 + } + ], + [ + { + "v": 2495 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2495 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2495 + } + ], + {} + ], + [ + 1, + "auto_NL_tuinmeubelshop.nl_66v", + 0, + "^https?://(www\\.)?tuinmeubelshop\\.nl/", + 10, + [], + [ + { + "e": 2496 + } + ], + [ + { + "v": 2496 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2496 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2496 + } + ], + {} + ], + [ + 1, + "auto_NL_tuinplant.nl_lrp", + 0, + "^https?://(www\\.)?tuinplant\\.nl/", + 10, + [], + [ + { + "e": 2844 + } + ], + [ + { + "v": 2844 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2844 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2844 + } + ], + {} + ], + [ + 1, + "auto_NL_tvgids.nl_9u8", + 0, + "^https?://(www\\.)?tvgids\\.nl/", + 10, + [], + [ + { + "e": 2497 + } + ], + [ + { + "v": 2497 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2497 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2497 + } + ], + {} + ], + [ + 1, + "auto_NL_ugent.be_vth", + 0, + "^https?://(www\\.)?ugent\\.be/", + 10, + [], + [ + { + "e": 2845 + } + ], + [ + { + "v": 2845 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2845 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2845 + } + ], + {} + ], + [ + 1, + "auto_NL_uit.inapeldoorn.nl_gt5", + 0, + "^https?://(www\\.)?uit\\.inapeldoorn\\.nl/", + 10, + [], + [ + { + "e": 2498 + } + ], + [ + { + "v": 2498 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2498 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2498 + } + ], + {} + ], + [ + 1, + "auto_NL_uitagendarotterdam.nl_2fd", + 0, + "^https?://(www\\.)?uitagendarotterdam\\.nl/", + 10, + [], + [ + { + "e": 2499 + } + ], + [ + { + "v": 2499 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2499 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2499 + } + ], + {} + ], + [ + 1, + "auto_NL_utwente.nl_kon", + 0, + "^https?://(www\\.)?utwente\\.nl/", + 10, + [], + [ + { + "e": 2463 + } + ], + [ + { + "v": 2463 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2463 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2463 + } + ], + {} + ], + [ + 1, + "auto_NL_valkexclusief.nl_ovm", + 0, + "^https?://(www\\.)?valkexclusief\\.nl/", + 10, + [], + [ + { + "e": 2500 + } + ], + [ + { + "v": 2500 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2500 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2500 + } + ], + {} + ], + [ + 1, + "auto_NL_vanbeekart.nl_ew9", + 0, + "^https?://(www\\.)?vanbeekart\\.nl/", + 10, + [], + [ + { + "e": 2230 + } + ], + [ + { + "v": 2230 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2230 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2230 + } + ], + {} + ], + [ + 1, + "auto_NL_vanmossel.nl_8og", + 0, + "^https?://(www\\.)?vanmossel\\.nl/", + 10, + [], + [ + { + "e": 1772 + } + ], + [ + { + "v": 1772 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1772 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1772 + } + ], + {} + ], + [ + 1, + "auto_NL_vanwalraven.com_uns", + 0, + "^https?://(www\\.)?vanwalraven\\.com/", + 10, + [], + [ + { + "e": 2501 + } + ], + [ + { + "v": 2501 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2501 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2501 + } + ], + {} + ], + [ + 1, + "auto_NL_vattenfall.nl_hcu", + 0, + "^https?://(www\\.)?vattenfall\\.nl/", + 10, + [], + [ + { + "e": 2502 + } + ], + [ + { + "v": 2502 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2502 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2502 + } + ], + {} + ], + [ + 1, + "auto_NL_veggipedia.nl_fbd", + 0, + "^https?://(www\\.)?veggipedia\\.nl/", + 10, + [], + [ + { + "e": 2846 + } + ], + [ + { + "v": 2846 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2846 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2846 + } + ], + {} + ], + [ + 1, + "auto_NL_vevor.nl_qjm", + 0, + "^https?://(www\\.)?vevor\\.nl/", + 10, + [], + [ + { + "e": 1973 + } + ], + [ + { + "v": 1973 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1973 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1973 + } + ], + {} + ], + [ + 1, + "auto_NL_viadennis.nl_c49", + 0, + "^https?://(www\\.)?viadennis\\.nl/", + 10, + [], + [ + { + "e": 2230 + } + ], + [ + { + "v": 2230 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2230 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2230 + } + ], + {} + ], + [ + 1, + "auto_NL_villamedia.nl_wlh", + 0, + "^https?://(www\\.)?villamedia\\.nl/", + 10, + [], + [ + { + "e": 2503 + } + ], + [ + { + "v": 2503 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2503 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2503 + } + ], + {} + ], + [ + 1, + "auto_NL_vindtandarts.nl_ecu", + 0, + "^https?://(www\\.)?vindtandarts\\.nl/", + 10, + [], + [ + { + "e": 3046 + } + ], + [ + { + "v": 3046 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3046 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3046 + } + ], + {} + ], + [ + 1, + "auto_NL_vinkkunststoffen.nl_nmk", + 0, + "^https?://(www\\.)?vinkkunststoffen\\.nl/", + 10, + [], + [ + { + "e": 2504 + } + ], + [ + { + "v": 2504 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2504 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2504 + } + ], + {} + ], + [ + 1, + "auto_NL_visdeal.nl_ktm", + 0, + "^https?://(www\\.)?visdeal\\.nl/", + 10, + [], + [ + { + "e": 2505 + } + ], + [ + { + "v": 2505 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2505 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2505 + } + ], + {} + ], + [ + 1, + "auto_NL_visitmaastricht.com_g8g", + 0, + "^https?://(www\\.)?visitmaastricht\\.com/", + 10, + [], + [ + { + "e": 2397 + } + ], + [ + { + "v": 2397 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2397 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2397 + } + ], + {} + ], + [ + 1, + "auto_NL_vistaprint.nl_6pc", + 0, + "^https?://(www\\.)?vistaprint\\.nl/", + 10, + [], + [ + { + "e": 1729 + } + ], + [ + { + "v": 1729 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1729 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1729 + } + ], + {} + ], + [ + 1, + "auto_NL_vlaanderen.be_c8w", + 0, + "^https?://(www\\.)?vlaanderen\\.be/", + 10, + [], + [ + { + "e": 2506 + } + ], + [ + { + "v": 2506 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2506 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2506 + } + ], + {} + ], + [ + 1, + "auto_NL_voordeelshop.ah.nl_6lf", + 0, + "^https?://(www\\.)?voordeelshop\\.ah\\.nl/", + 10, + [], + [ + { + "e": 3047 + } + ], + [ + { + "v": 3047 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3048 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3049 + } + ], + {} + ], + [ + 1, + "auto_NL_voordekunst.nl_0nt", + 0, + "^https?://(www\\.)?voordekunst\\.nl/", + 10, + [], + [ + { + "e": 2848 + } + ], + [ + { + "v": 2848 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2848 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2848 + } + ], + {} + ], + [ + 1, + "auto_NL_vu.nl_sdu", + 0, + "^https?://(www\\.)?vu\\.nl/", + 10, + [], + [ + { + "e": 2508 + } + ], + [ + { + "v": 2508 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2508 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2508 + } + ], + {} + ], + [ + 1, + "auto_NL_vumc.nl_o8h", + 0, + "^https?://(www\\.)?vumc\\.nl/", + 10, + [], + [ + { + "e": 2509 + } + ], + [ + { + "v": 2509 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2509 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2509 + } + ], + {} + ], + [ + 1, + "auto_NL_vvaa.nl_avs", + 0, + "^https?://(www\\.)?vvaa\\.nl/", + 10, + [], + [ + { + "e": 2510 + } + ], + [ + { + "v": 2510 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2510 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2510 + } + ], + {} + ], + [ + 1, + "auto_NL_vve.nl_rmi", + 0, + "^https?://(www\\.)?vve\\.nl/", + 10, + [], + [ + { + "e": 2849 + } + ], + [ + { + "v": 2849 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2849 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2849 + } + ], + {} + ], + [ + 1, + "auto_NL_vvvterschelling.nl_h3g", + 0, + "^https?://(www\\.)?vvvterschelling\\.nl/", + 10, + [], + [ + { + "e": 2511 + } + ], + [ + { + "v": 2511 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2511 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2511 + } + ], + {} + ], + [ + 1, + "auto_NL_wandelnet.nl_i0c", + 0, + "^https?://(www\\.)?wandelnet\\.nl/", + 10, + [], + [ + { + "e": 2512 + } + ], + [ + { + "v": 2512 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2512 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2512 + } + ], + {} + ], + [ + 1, + "auto_NL_waterlandvanfriesland.nl_6uk", + 0, + "^https?://(www\\.)?waterlandvanfriesland\\.nl/", + 10, + [], + [ + { + "e": 2397 + } + ], + [ + { + "v": 2397 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2397 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2397 + } + ], + {} + ], + [ + 1, + "auto_NL_wehkamp.nl_7li", + 0, + "^https?://(www\\.)?wehkamp\\.nl/", + 10, + [], + [ + { + "e": 2850 + } + ], + [ + { + "v": 2850 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2850 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2850 + } + ], + {} + ], + [ + 1, + "auto_NL_werk.ah.nl_r90", + 0, + "^https?://(www\\.)?werk\\.ah\\.nl/", + 10, + [], + [ + { + "e": 3050 + } + ], + [ + { + "v": 3050 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3050 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3050 + } + ], + {} + ], + [ + 1, + "auto_NL_werken.belastingdienst.nl_onr", + 0, + "^https?://(www\\.)?werken\\.belastingdienst\\.nl/", + 10, + [], + [ + { + "e": 2513 + } + ], + [ + { + "v": 2513 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2513 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2513 + } + ], + {} + ], + [ + 1, + "auto_NL_werkenbij.uva.nl_n8x_+1", + 0, + "^https?://(www\\.)?werkenbij\\.uva\\.nl/|^https?://(www\\.)?werkenbijns\\.nl/", + 10, + [], + [ + { + "e": 2852 + } + ], + [ + { + "v": 2852 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2852 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2852 + } + ], + {} + ], + [ + 1, + "auto_NL_werkenbijdefensie.nl_0cv", + 0, + "^https?://(www\\.)?werkenbijdefensie\\.nl/", + 10, + [], + [ + { + "e": 2514 + } + ], + [ + { + "v": 2514 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2514 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2514 + } + ], + {} + ], + [ + 1, + "auto_NL_winkelstraat.nl_hxj", + 0, + "^https?://(www\\.)?winkelstraat\\.nl/", + 10, + [], + [ + { + "e": 2853 + } + ], + [ + { + "v": 2853 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2853 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2853 + } + ], + {} + ], + [ + 1, + "auto_NL_winparts.nl_gfv", + 0, + "^https?://(www\\.)?winparts\\.nl/", + 10, + [], + [ + { + "e": 2515 + } + ], + [ + { + "v": 2515 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2515 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2515 + } + ], + {} + ], + [ + 1, + "auto_NL_wolfswinkel.nl_ek9", + 0, + "^https?://(www\\.)?wolfswinkel\\.nl/", + 10, + [], + [ + { + "e": 2516 + } + ], + [ + { + "v": 2516 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2516 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2516 + } + ], + {} + ], + [ + 1, + "auto_NL_woonbond.nl_8zh", + 0, + "^https?://(www\\.)?woonbond\\.nl/", + 10, + [], + [ + { + "e": 2517 + } + ], + [ + { + "v": 2517 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2517 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2517 + } + ], + {} + ], + [ + 1, + "auto_NL_woonnetrijnmond.nl_itj", + 0, + "^https?://(www\\.)?woonnetrijnmond\\.nl/", + 10, + [], + [ + { + "e": 2854 + } + ], + [ + { + "v": 2854 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2854 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2854 + } + ], + {} + ], + [ + 1, + "auto_NL_wur.nl_hpj", + 0, + "^https?://(www\\.)?wur\\.nl/", + 10, + [], + [ + { + "e": 2518 + } + ], + [ + { + "v": 2518 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2518 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2518 + } + ], + {} + ], + [ + 1, + "auto_NL_xxlnutrition.com_y2v", + 0, + "^https?://(www\\.)?xxlnutrition\\.com/", + 10, + [], + [ + { + "e": 2519 + } + ], + [ + { + "v": 2519 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2519 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2519 + } + ], + {} + ], + [ + 1, + "auto_NL_youngcapital.nl_n09", + 0, + "^https?://(www\\.)?youngcapital\\.nl/", + 10, + [], + [ + { + "e": 2520 + } + ], + [ + { + "v": 2520 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2520 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2520 + } + ], + {} + ], + [ + 1, + "auto_NL_zgt.nl_x6f", + 0, + "^https?://(www\\.)?zgt\\.nl/", + 10, + [], + [ + { + "e": 2521 + } + ], + [ + { + "v": 2521 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2521 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2521 + } + ], + {} + ], + [ + 1, + "auto_NL_zitmaxx.nl_h51", + 0, + "^https?://(www\\.)?zitmaxx\\.nl/", + 10, + [], + [ + { + "e": 2522 + } + ], + [ + { + "v": 2522 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2522 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2522 + } + ], + {} + ], + [ + 1, + "auto_NL_zuidas.nl_abm", + 0, + "^https?://(www\\.)?zuidas\\.nl/", + 10, + [], + [ + { + "e": 2523 + } + ], + [ + { + "v": 2523 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2523 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2523 + } + ], + {} + ], + [ + 1, + "auto_NL_zzp-nederland.nl_8xq", + 0, + "^https?://(www\\.)?zzp-nederland\\.nl/", + 10, + [], + [ + { + "e": 2524 + } + ], + [ + { + "v": 2524 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2524 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2524 + } + ], + {} + ], + [ + 1, + "auto_NO_about.clasohlson.com_rhv", + 0, + "^https?://(www\\.)?about\\.clasohlson\\.com/", + 10, + [], + [ + { + "e": 3051 + } + ], + [ + { + "v": 3051 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3051 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3051 + } + ], + {} + ], + [ + 1, + "auto_NO_aibel.com_hrc", + 0, + "^https?://(www\\.)?aibel\\.com/", + 10, + [], + [ + { + "e": 3052 + } + ], + [ + { + "v": 3052 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3052 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3052 + } + ], + {} + ], + [ + 1, + "auto_NO_airbaltic.com_vv6", + 0, + "^https?://(www\\.)?airbaltic\\.com/", + 10, + [], + [ + { + "e": 3053 + } + ], + [ + { + "v": 3053 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3053 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3053 + } + ], + {} + ], + [ + 1, + "auto_NO_airplus.com_zs0", + 0, + "^https?://(www\\.)?airplus\\.com/", + 10, + [], + [ + { + "e": 2855 + } + ], + [ + { + "v": 2855 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2855 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2855 + } + ], + {} + ], + [ + 1, + "auto_NO_ao-universe.com_n54", + 0, + "^https?://(www\\.)?ao-universe\\.com/", + 10, + [], + [ + { + "e": 3054 + } + ], + [ + { + "v": 3054 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3054 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3054 + } + ], + {} + ], + [ + 1, + "auto_NO_arbetsformedlingen.se_wxz", + 0, + "^https?://(www\\.)?arbetsformedlingen\\.se/", + 10, + [], + [ + { + "e": 2525 + } + ], + [ + { + "v": 2525 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2525 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2525 + } + ], + {} + ], + [ + 1, + "auto_NO_arronet.se_vo5", + 0, + "^https?://(www\\.)?arronet\\.se/", + 10, + [], + [ + { + "e": 2561 + } + ], + [ + { + "v": 2561 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2561 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2561 + } + ], + {} + ], + [ + 1, + "auto_NO_aten.com_oge", + 0, + "^https?://(www\\.)?aten\\.com/", + 10, + [], + [ + { + "e": 2856 + } + ], + [ + { + "v": 2856 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2856 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2856 + } + ], + {} + ], + [ + 1, + "auto_NO_avanza.se_b5b", + 0, + "^https?://(www\\.)?avanza\\.se/", + 10, + [], + [ + { + "e": 2857 + } + ], + [ + { + "v": 2857 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2857 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2857 + } + ], + {} + ], + [ + 1, + "auto_NO_avidafinance.com_jwc", + 0, + "^https?://(www\\.)?avidafinance\\.com/", + 10, + [], + [ + { + "e": 3055 + } + ], + [ + { + "v": 3055 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3055 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3055 + } + ], + {} + ], + [ + 1, + "auto_NO_beducated.com_jjt", + 0, + "^https?://(www\\.)?beducated\\.com/", + 10, + [], + [ + { + "e": 2858 + } + ], + [ + { + "v": 2858 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2858 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2858 + } + ], + {} + ], + [ + 1, + "auto_NO_bergenklatresenter.no_6nn", + 0, + "^https?://(www\\.)?bergenklatresenter\\.no/", + 10, + [], + [ + { + "e": 3056 + } + ], + [ + { + "v": 3056 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3056 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3056 + } + ], + {} + ], + [ + 1, + "auto_NO_blaaoslo.no_al8", + 0, + "^https?://(www\\.)?blaaoslo\\.no/", + 10, + [], + [ + { + "e": 2527 + } + ], + [ + { + "v": 2527 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2527 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2527 + } + ], + {} + ], + [ + 1, + "auto_NO_bnorsk.no_gk7_+1", + 0, + "^https?://(www\\.)?bnorsk\\.no/|^https?://(www\\.)?evrimaquickguide\\.com/", + 10, + [], + [ + { + "e": 2530 + } + ], + [ + { + "v": 2530 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2530 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2530 + } + ], + {} + ], + [ + 1, + "auto_NO_cds.climate.copernicus.eu_np0", + 0, + "^https?://(www\\.)?cds\\.climate\\.copernicus\\.eu/", + 10, + [], + [ + { + "e": 2859 + } + ], + [ + { + "v": 2859 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2859 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2859 + } + ], + {} + ], + [ + 1, + "auto_NO_cms.law_gn2", + 0, + "^https?://(www\\.)?cms\\.law/", + 10, + [], + [ + { + "e": 2860 + } + ], + [ + { + "v": 2860 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2860 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2860 + } + ], + {} + ], + [ + 1, + "auto_NO_community.creative-assembly.com_2yd", + 0, + "^https?://(www\\.)?community\\.creative-assembly\\.com/", + 10, + [], + [ + { + "e": 2528 + } + ], + [ + { + "v": 2528 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2528 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2528 + } + ], + {} + ], + [ + 1, + "auto_NO_darlink.ai_odw", + 0, + "^https?://(www\\.)?darlink\\.ai/", + 10, + [], + [ + { + "e": 3057 + } + ], + [ + { + "v": 3057 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3057 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3057 + } + ], + {} + ], + [ + 1, + "auto_NO_debergenske.no_yuo", + 0, + "^https?://(www\\.)?debergenske\\.no/", + 10, + [], + [ + { + "e": 2529 + } + ], + [ + { + "v": 2529 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2529 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2529 + } + ], + {} + ], + [ + 1, + "auto_NO_dmarket.com_uxj", + 0, + "^https?://(www\\.)?dmarket\\.com/", + 10, + [], + [ + { + "e": 2861 + } + ], + [ + { + "v": 2861 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2861 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2861 + } + ], + {} + ], + [ + 1, + "auto_NO_dsa.no_w2b", + 0, + "^https?://(www\\.)?dsa\\.no/", + 10, + [], + [ + { + "e": 2862 + } + ], + [ + { + "v": 2862 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2862 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2862 + } + ], + {} + ], + [ + 1, + "auto_NO_en.erotik.com_wit", + 0, + "^https?://(www\\.)?en\\.erotik\\.com/", + 10, + [], + [ + { + "e": 1566 + } + ], + [ + { + "v": 1566 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1566 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1566 + } + ], + {} + ], + [ + 1, + "auto_NO_en.flamsbana.no_bof", + 0, + "^https?://(www\\.)?en\\.flamsbana\\.no/", + 10, + [], + [ + { + "e": 1620 + } + ], + [ + { + "v": 1620 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1620 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1620 + } + ], + {} + ], + [ + 1, + "auto_NO_fjordtours.com_cid", + 0, + "^https?://(www\\.)?fjordtours\\.com/", + 10, + [], + [ + { + "e": 2531 + } + ], + [ + { + "v": 2531 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2531 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2531 + } + ], + {} + ], + [ + 1, + "auto_NO_goodonyou.eco_3jh", + 0, + "^https?://(www\\.)?goodonyou\\.eco/", + 10, + [], + [ + { + "e": 2863 + } + ], + [ + { + "v": 2863 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2863 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2863 + } + ], + {} + ], + [ + 1, + "auto_NO_goteborg.com_q7v", + 0, + "^https?://(www\\.)?goteborg\\.com/", + 10, + [], + [ + { + "e": 2864 + } + ], + [ + { + "v": 2864 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2864 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2864 + } + ], + {} + ], + [ + 1, + "auto_NO_gradle.org_sl0", + 0, + "^https?://(www\\.)?gradle\\.org/", + 10, + [], + [ + { + "e": 2532 + } + ], + [ + { + "v": 2532 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2532 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2532 + } + ], + {} + ], + [ + 1, + "auto_NO_gymgrossisten.com_504", + 0, + "^https?://(www\\.)?gymgrossisten\\.com/", + 10, + [], + [ + { + "e": 2533 + } + ], + [ + { + "v": 2533 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2533 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2533 + } + ], + {} + ], + [ + 1, + "auto_NO_hacksmith.store_49t", + 0, + "^https?://(www\\.)?hacksmith\\.store/", + 10, + [], + [ + { + "e": 2534 + } + ], + [ + { + "v": 2534 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2534 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2534 + } + ], + {} + ], + [ + 1, + "auto_NO_help.snapchat.com_9cy", + 0, + "^https?://(www\\.)?help\\.snapchat\\.com/", + 10, + [], + [ + { + "e": 2535 + } + ], + [ + { + "v": 2535 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2535 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2535 + } + ], + {} + ], + [ + 1, + "auto_NO_hone.gg_cc5", + 0, + "^https?://(www\\.)?hone\\.gg/", + 10, + [], + [ + { + "e": 3058 + } + ], + [ + { + "v": 3058 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3058 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3058 + } + ], + {} + ], + [ + 1, + "auto_NO_insider.razer.com_934", + 0, + "^https?://(www\\.)?insider\\.razer\\.com/", + 10, + [], + [ + { + "e": 1043 + } + ], + [ + { + "v": 1043 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1043 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1043 + } + ], + {} + ], + [ + 1, + "auto_NO_jackwestin.com_ojc", + 0, + "^https?://(www\\.)?jackwestin\\.com/", + 10, + [], + [ + { + "e": 1004 + } + ], + [ + { + "v": 1004 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1004 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1004 + } + ], + {} + ], + [ + 1, + "auto_NO_jobs.strawberryhotels.com_wc1", + 0, + "^https?://(www\\.)?jobs\\.strawberryhotels\\.com/", + 10, + [], + [ + { + "e": 2865 + } + ], + [ + { + "v": 2865 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2865 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2865 + } + ], + {} + ], + [ + 1, + "auto_NO_kiwi.com_k5r", + 0, + "^https?://(www\\.)?kiwi\\.com/", + 10, + [], + [ + { + "e": 2866 + } + ], + [ + { + "v": 2866 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2866 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2866 + } + ], + {} + ], + [ + 1, + "auto_NO_kverneriet.com_5jq", + 0, + "^https?://(www\\.)?kverneriet\\.com/", + 10, + [], + [ + { + "e": 2231 + } + ], + [ + { + "v": 2231 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2231 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2231 + } + ], + {} + ], + [ + 1, + "auto_NO_lanekassen.no_vtt", + 0, + "^https?://(www\\.)?lanekassen\\.no/", + 10, + [], + [ + { + "e": 2537 + } + ], + [ + { + "v": 2537 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2537 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2537 + } + ], + {} + ], + [ + 1, + "auto_NO_lectura-specs.com_0jn", + 0, + "^https?://(www\\.)?lectura-specs\\.com/", + 10, + [], + [ + { + "e": 2538 + } + ], + [ + { + "v": 2538 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2538 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2538 + } + ], + {} + ], + [ + 1, + "auto_NO_ledigajobb.se_tx3", + 0, + "^https?://(www\\.)?ledigajobb\\.se/", + 10, + [], + [ + { + "e": 2539 + } + ], + [ + { + "v": 2539 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2539 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2539 + } + ], + {} + ], + [ + 1, + "auto_NO_liseberg.se_qy4", + 0, + "^https?://(www\\.)?liseberg\\.se/", + 10, + [], + [ + { + "e": 2867 + } + ], + [ + { + "v": 2867 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2867 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2867 + } + ], + {} + ], + [ + 1, + "auto_NO_lnk.bio_go3", + 0, + "^https?://(www\\.)?lnk\\.bio/", + 10, + [], + [ + { + "e": 2540 + } + ], + [ + { + "v": 2540 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2540 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2540 + } + ], + {} + ], + [ + 1, + "auto_NO_m.adultwork.com_59d", + 0, + "^https?://(www\\.)?m\\.adultwork\\.com/", + 10, + [], + [ + { + "e": 3059 + } + ], + [ + { + "v": 3059 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3059 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3059 + } + ], + {} + ], + [ + 1, + "auto_NO_nbim.no_2o7", + 0, + "^https?://(www\\.)?nbim\\.no/", + 10, + [], + [ + { + "e": 2541 + } + ], + [ + { + "v": 2541 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2541 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2541 + } + ], + {} + ], + [ + 1, + "auto_NO_nora.ai_6hn", + 0, + "^https?://(www\\.)?nora\\.ai/", + 10, + [], + [ + { + "e": 2542 + } + ], + [ + { + "v": 2542 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2542 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2542 + } + ], + {} + ], + [ + 1, + "auto_NO_nordnet.se_2en", + 0, + "^https?://(www\\.)?nordnet\\.se/", + 10, + [], + [ + { + "e": 2543 + } + ], + [ + { + "v": 2543 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2543 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2543 + } + ], + {} + ], + [ + 1, + "auto_NO_pcsx2.net_grl", + 0, + "^https?://(www\\.)?pcsx2\\.net/", + 10, + [], + [ + { + "e": 2544 + } + ], + [ + { + "v": 2544 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2544 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2544 + } + ], + {} + ], + [ + 1, + "auto_NO_regeringen.se_uhv", + 0, + "^https?://(www\\.)?regeringen\\.se/", + 10, + [], + [ + { + "e": 2545 + } + ], + [ + { + "v": 2545 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2545 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2545 + } + ], + {} + ], + [ + 1, + "auto_NO_salted.no_n7p_+1", + 0, + "^https?://(www\\.)?salted\\.no/|^https?://(www\\.)?blinkforhome\\.com/", + 10, + [], + [ + { + "e": 2546 + } + ], + [ + { + "v": 2546 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2546 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2546 + } + ], + {} + ], + [ + 1, + "auto_NO_sandnes-garn.com_v67", + 0, + "^https?://(www\\.)?sandnes-garn\\.com/", + 10, + [], + [ + { + "e": 2547 + } + ], + [ + { + "v": 2547 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2547 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2547 + } + ], + {} + ], + [ + 1, + "auto_NO_saseurobonusmastercard.se_oqd", + 0, + "^https?://(www\\.)?saseurobonusmastercard\\.se/", + 10, + [], + [ + { + "e": 1650 + } + ], + [ + { + "v": 1650 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1650 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1650 + } + ], + {} + ], + [ + 1, + "auto_NO_sasgroup.net_blr", + 0, + "^https?://(www\\.)?sasgroup\\.net/", + 10, + [], + [ + { + "e": 2548 + } + ], + [ + { + "v": 2548 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2548 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2548 + } + ], + {} + ], + [ + 1, + "auto_NO_sextvx.com_3jl", + 0, + "^https?://(www\\.)?sextvx\\.com/", + 10, + [], + [ + { + "e": 2398 + } + ], + [ + { + "v": 2398 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2398 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2398 + } + ], + {} + ], + [ + 1, + "auto_NO_skinport.com_jjy", + 0, + "^https?://(www\\.)?skinport\\.com/", + 10, + [], + [ + { + "e": 2549 + } + ], + [ + { + "v": 2549 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2549 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2549 + } + ], + {} + ], + [ + 1, + "auto_NO_smoothcomp.com_0iv", + 0, + "^https?://(www\\.)?smoothcomp\\.com/", + 10, + [], + [ + { + "e": 2868 + } + ], + [ + { + "v": 2868 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2868 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2868 + } + ], + {} + ], + [ + 1, + "auto_NO_stereonet.com_lst", + 0, + "^https?://(www\\.)?stereonet\\.com/", + 10, + [], + [ + { + "e": 2294 + } + ], + [ + { + "v": 2294 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2294 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2294 + } + ], + {} + ], + [ + 1, + "auto_NO_streamelements.com_l7v", + 0, + "^https?://(www\\.)?streamelements\\.com/", + 10, + [], + [ + { + "e": 2869 + } + ], + [ + { + "v": 2869 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2869 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2869 + } + ], + {} + ], + [ + 1, + "auto_NO_sugarlab.ai_445", + 0, + "^https?://(www\\.)?sugarlab\\.ai/", + 10, + [], + [ + { + "e": 2870 + } + ], + [ + { + "v": 2870 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2870 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2870 + } + ], + {} + ], + [ + 1, + "auto_NO_sverigesradio.se_a00", + 0, + "^https?://(www\\.)?sverigesradio\\.se/", + 10, + [], + [ + { + "e": 2551 + } + ], + [ + { + "v": 2551 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2551 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2551 + } + ], + {} + ], + [ + 1, + "auto_NO_svtplay.se_ujn", + 0, + "^https?://(www\\.)?svtplay\\.se/", + 10, + [], + [ + { + "e": 2552 + } + ], + [ + { + "v": 2552 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2552 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2552 + } + ], + {} + ], + [ + 1, + "auto_NO_swedavia.com_r0x", + 0, + "^https?://(www\\.)?swedavia\\.com/", + 10, + [], + [ + { + "e": 2553 + } + ], + [ + { + "v": 2553 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2553 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2553 + } + ], + {} + ], + [ + 1, + "auto_NO_swedavia.se_v9s", + 0, + "^https?://(www\\.)?swedavia\\.se/", + 10, + [], + [ + { + "e": 2553 + } + ], + [ + { + "v": 2553 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2553 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2553 + } + ], + {} + ], + [ + 1, + "auto_NO_swedbank.se_63w", + 0, + "^https?://(www\\.)?swedbank\\.se/", + 10, + [], + [ + { + "e": 2554 + } + ], + [ + { + "v": 2554 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2554 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2554 + } + ], + {} + ], + [ + 1, + "auto_NO_systoolsgroup.com_t6n", + 0, + "^https?://(www\\.)?systoolsgroup\\.com/", + 10, + [], + [ + { + "e": 2555 + } + ], + [ + { + "v": 2555 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2555 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2555 + } + ], + {} + ], + [ + 1, + "auto_NO_teltonika-networks.com_wtz", + 0, + "^https?://(www\\.)?teltonika-networks\\.com/", + 10, + [], + [ + { + "e": 1636 + } + ], + [ + { + "v": 1636 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1636 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1636 + } + ], + {} + ], + [ + 1, + "auto_NO_tingstad.com_z23", + 0, + "^https?://(www\\.)?tingstad\\.com/", + 10, + [], + [ + { + "e": 2871 + } + ], + [ + { + "v": 2871 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2871 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2871 + } + ], + {} + ], + [ + 1, + "auto_NO_trondheimsykkelservice.no_zb3", + 0, + "^https?://(www\\.)?trondheimsykkelservice\\.no/", + 10, + [], + [ + { + "e": 2558 + } + ], + [ + { + "v": 2558 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2558 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2558 + } + ], + {} + ], + [ + 1, + "auto_NO_truecaller.com_sdg", + 0, + "^https?://(www\\.)?truecaller\\.com/", + 10, + [], + [ + { + "e": 2559 + } + ], + [ + { + "v": 2559 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2559 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2559 + } + ], + {} + ], + [ + 1, + "auto_NO_trustly.com_2hm", + 0, + "^https?://(www\\.)?trustly\\.com/", + 10, + [], + [ + { + "e": 2560 + } + ], + [ + { + "v": 2560 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2560 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2560 + } + ], + {} + ], + [ + 1, + "auto_NO_u4gm.com_h41", + 0, + "^https?://(www\\.)?u4gm\\.com/", + 10, + [], + [ + { + "e": 2872 + } + ], + [ + { + "v": 2872 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2872 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2872 + } + ], + {} + ], + [ + 1, + "auto_NO_ukrainiancharm.com_0z5", + 0, + "^https?://(www\\.)?ukrainiancharm\\.com/", + 10, + [], + [ + { + "e": 3060 + } + ], + [ + { + "v": 3060 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3060 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3060 + } + ], + {} + ], + [ + 1, + "auto_NO_uu.se_eea", + 0, + "^https?://(www\\.)?uu\\.se/", + 10, + [], + [ + { + "e": 2873 + } + ], + [ + { + "v": 2873 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2873 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2873 + } + ], + {} + ], + [ + 1, + "auto_NO_visitstockholm.com_66k", + 0, + "^https?://(www\\.)?visitstockholm\\.com/", + 10, + [], + [ + { + "e": 2561 + } + ], + [ + { + "v": 2561 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2561 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2561 + } + ], + {} + ], + [ + 1, + "auto_NO_webank.it_6rx", + 0, + "^https?://(www\\.)?webank\\.it/", + 10, + [], + [ + { + "e": 3061 + } + ], + [ + { + "v": 3061 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3061 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3061 + } + ], + {} + ], + [ + 1, + "auto_NO_weekday.com_r60", + 0, + "^https?://(www\\.)?weekday\\.com/", + 10, + [], + [ + { + "e": 2562 + } + ], + [ + { + "v": 2562 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2562 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2562 + } + ], + {} + ], + [ + 1, + "auto_NO_wikiloc.com_hm1", + 0, + "^https?://(www\\.)?wikiloc\\.com/", + 10, + [], + [ + { + "e": 2069 + } + ], + [ + { + "v": 2069 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2069 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2069 + } + ], + {} + ], + [ + 1, + "auto_NO_xrealgirl.com_r42", + 0, + "^https?://(www\\.)?xrealgirl\\.com/", + 10, + [], + [ + { + "e": 2874 + } + ], + [ + { + "v": 2874 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2874 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2874 + } + ], + {} + ], + [ + 1, + "auto_US_airport.guide_0", + 0, + "^https?://(www\\.)?airport\\.guide/", + 10, + [], + [ + { + "e": 2563 + } + ], + [ + { + "v": 2563 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2563 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2563 + } + ], + {} + ], + [ + 1, + "auto_US_ally.com_equ_+1", + 0, + "^https?://(www\\.)?ally\\.com/|^https?://(www\\.)?secure\\.ally\\.com/", + 10, + [], + [ + { + "e": 3062 + } + ], + [ + { + "v": 3062 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3062 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3062 + } + ], + {} + ], + [ + 1, + "auto_US_amazon.jobs_0", + 0, + "^https?://(www\\.)?amazon\\.jobs/", + 10, + [], + [ + { + "e": 2564 + } + ], + [ + { + "v": 2564 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2564 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2564 + } + ], + {} + ], + [ + 1, + "auto_US_amsoil.com_fgr", + 0, + "^https?://(www\\.)?amsoil\\.com/", + 10, + [], + [ + { + "e": 1465 + } + ], + [ + { + "v": 1465 + } + ], + [ + { + "c": 1465 + } + ], + [], + {} + ], + [ + 1, + "auto_US_arkansasrazorbacks.com_w09", + 0, + "^https?://(www\\.)?arkansasrazorbacks\\.com/", + 10, + [], + [ + { + "e": 705 + } + ], + [ + { + "v": 705 + } + ], + [ + { + "wait": 500 + }, + { + "c": 705 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 705 + } + ], + {} + ], + [ + 1, + "auto_US_audacityteam.org_0", + 0, + "^https?://(www\\.)?audacityteam\\.org/", + 10, + [], + [ + { + "e": 1467 + } + ], + [ + { + "v": 1467 + } + ], + [ + { + "text": "Reject", + "c": 1467 + } + ], + [], + {} + ], + [ + 1, + "auto_US_bangbros.com_0_+1", + 0, + "^https?://(www\\.)?bangbros\\.com/|^https?://(www\\.)?brazzers\\.com/", + 10, + [], + [ + { + "e": 1468 + } + ], + [ + { + "v": 1468 + } + ], + [ + { + "text": "ACCEPT ONLY ESSENTIAL COOKIES", + "c": 1468 + } + ], + [], + {} + ], + [ + 1, + "auto_US_bestviewsreviews.com_lm6", + 0, + "^https?://(www\\.)?bestviewsreviews\\.com/", + 10, + [], + [ + { + "e": 1593 + } + ], + [ + { + "v": 1593 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1593 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1593 + } + ], + {} + ], + [ + 1, + "auto_US_bookclubs.com_gxf", + 0, + "^https?://(www\\.)?bookclubs\\.com/", + 10, + [], + [ + { + "e": 2875 + } + ], + [ + { + "v": 2875 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2875 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2875 + } + ], + {} + ], + [ + 1, + "auto_US_chilis.com_0", + 0, + "^https?://(www\\.)?chilis\\.com/", + 10, + [], + [ + { + "e": 1472 + } + ], + [ + { + "v": 1472 + } + ], + [ + { + "text": "REJECT ALL", + "c": 1472 + } + ], + [], + {} + ], + [ + 1, + "auto_US_computerworld.com_0_+1", + 0, + "^https?://(www\\.)?computerworld\\.com/|^https?://(www\\.)?csoonline\\.com/", + 10, + [], + [ + { + "e": 1474 + } + ], + [ + { + "v": 1474 + } + ], + [ + { + "text": "Do not accept", + "c": 1474 + } + ], + [], + {} + ], + [ + 1, + "auto_US_coupons.businessinsider.com_6xd", + 0, + "^https?://(www\\.)?coupons\\.businessinsider\\.com/", + 10, + [], + [ + { + "e": 1475 + } + ], + [ + { + "v": 1475 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1475 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1475 + } + ], + {} + ], + [ + 1, + "auto_US_coupons.slickdeals.net_wya", + 0, + "^https?://(www\\.)?coupons\\.slickdeals\\.net/", + 10, + [], + [ + { + "e": 2565 + } + ], + [ + { + "v": 2565 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2565 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2565 + } + ], + {} + ], + [ + 1, + "auto_US_craft.co_7k7", + 0, + "^https?://(www\\.)?global\\.craft\\.co/", + 10, + [], + [ + { + "e": 3063 + } + ], + [ + { + "v": 3063 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3063 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3063 + } + ], + {} + ], + [ + 1, + "auto_US_criticalrole.fandom.com_1u6_+6", + 0, + "^https?://(www\\.)?criticalrole\\.fandom\\.com/|^https?://(www\\.)?disney\\.fandom\\.com/|^https?://(www\\.)?escapefromtarkov\\.fandom\\.com/|^https?://(www\\.)?hades\\.fandom\\.com/|^https?://(www\\.)?marvelcinematicuniverse\\.fandom\\.com/|^https?://(www\\.)?monsterhunter\\.fandom\\.com/|^https?://(www\\.)?subnautica\\.fandom\\.com/", + 10, + [], + [ + { + "e": 3064 + } + ], + [ + { + "v": 3064 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3064 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3064 + } + ], + {} + ], + [ + 1, + "auto_US_crumblcookies.com_0", + 0, + "^https?://(www\\.)?crumblcookies\\.com/", + 10, + [], + [ + { + "e": 3065 + } + ], + [ + { + "v": 3065 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3065 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3065 + } + ], + {} + ], + [ + 1, + "auto_US_deadairsilencers.com_2qx_+1", + 0, + "^https?://(www\\.)?deadairsilencers\\.com/|^https?://(www\\.)?smkw\\.com/", + 10, + [], + [ + { + "e": 2217 + } + ], + [ + { + "v": 2217 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2217 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2217 + } + ], + {} + ], + [ + 1, + "auto_US_deezer.com_0", + 0, + "^https?://(www\\.)?deezer\\.com/", + 10, + [], + [ + { + "e": 1477 + } + ], + [ + { + "v": 1477 + } + ], + [ + { + "text": "Refuse", + "c": 1477 + } + ], + [], + {} + ], + [ + 1, + "auto_US_dickblick.com_0", + 0, + "^https?://(www\\.)?dickblick\\.com/", + 10, + [], + [ + { + "e": 2876 + } + ], + [ + { + "v": 2876 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2876 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2876 + } + ], + {} + ], + [ + 1, + "auto_US_dietdoctor.com_0", + 0, + "^https?://(www\\.)?dietdoctor\\.com/", + 10, + [], + [ + { + "e": 1479 + } + ], + [ + { + "v": 1479 + } + ], + [ + { + "text": "ONLY NECESSARY", + "c": 1479 + } + ], + [], + {} + ], + [ + 1, + "auto_US_dinarrecaps.com_qnj", + 0, + "^https?://(www\\.)?dinarrecaps\\.com/", + 10, + [], + [ + { + "e": 1480 + } + ], + [ + { + "v": 1480 + } + ], + [ + { + "c": 1480 + } + ], + [], + {} + ], + [ + 1, + "auto_US_docs.snowflake.com_0", + 0, + "^https?://(www\\.)?docs\\.snowflake\\.com/", + 10, + [], + [ + { + "e": 1481 + } + ], + [ + { + "v": 1481 + } + ], + [ + { + "text": "Decline", + "c": 1481 + } + ], + [], + {} + ], + [ + 1, + "auto_US_e-chords.com_0", + 0, + "^https?://(www\\.)?e-chords\\.com/", + 10, + [], + [ + { + "e": 1483 + } + ], + [ + { + "v": 1483 + } + ], + [ + { + "text": "Reject all", + "c": 1483 + } + ], + [], + {} + ], + [ + 1, + "auto_US_emagine-entertainment.com_0", + 0, + "^https?://(www\\.)?emagine-entertainment\\.com/", + 10, + [], + [ + { + "e": 1595 + } + ], + [ + { + "v": 1595 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1595 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1595 + } + ], + {} + ], + [ + 1, + "auto_US_en.community.sonos.com_0", + 0, + "^https?://(www\\.)?en\\.community\\.sonos\\.com/", + 10, + [], + [ + { + "e": 1485 + } + ], + [ + { + "v": 1485 + } + ], + [ + { + "text": "Deny all", + "c": 1485 + } + ], + [], + {} + ], + [ + 1, + "auto_US_faphouse.com_0", + 0, + "^https?://(www\\.)?faphouse\\.com/", + 10, + [], + [ + { + "e": 1486 + } + ], + [ + { + "v": 1486 + } + ], + [ + { + "text": "Reject cookies", + "c": 1486 + } + ], + [], + {} + ], + [ + 1, + "auto_US_fngames.io_hj5", + 0, + "^https?://(www\\.)?fngames\\.io/", + 10, + [], + [ + { + "e": 2412 + } + ], + [ + { + "v": 2412 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2412 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2412 + } + ], + {} + ], + [ + 1, + "auto_US_forum.affinity.serif.com_0_+2", + 0, + "^https?://(www\\.)?forum\\.affinity\\.serif\\.com/|^https?://(www\\.)?forums\\.malwarebytes\\.com/|^https?://(www\\.)?vintagestory\\.at/", + 10, + [], + [ + { + "e": 1487 + } + ], + [ + { + "v": 1487 + } + ], + [ + { + "text": " Reject Cookies", + "c": 1487 + } + ], + [], + {} + ], + [ + 1, + "auto_US_forum.prusa3d.com_0", + 0, + "^https?://(www\\.)?forum\\.prusa3d\\.com/", + 10, + [], + [ + { + "e": 1489 + } + ], + [ + { + "v": 1489 + } + ], + [ + { + "text": "Reject All", + "c": 1489 + } + ], + [], + {} + ], + [ + 1, + "auto_US_foundryvtt.com_0", + 0, + "^https?://(www\\.)?foundryvtt\\.com/", + 10, + [], + [ + { + "e": 1490 + } + ], + [ + { + "v": 1490 + } + ], + [ + { + "text": " REQUIRED ONLY", + "c": 1490 + } + ], + [], + {} + ], + [ + 1, + "auto_US_framesdirect.com_0", + 0, + "^https?://(www\\.)?framesdirect\\.com/", + 10, + [], + [ + { + "e": 2568 + } + ], + [ + { + "v": 2568 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2568 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2568 + } + ], + {} + ], + [ + 1, + "auto_US_fullscript.com_0", + 0, + "^https?://(www\\.)?fullscript\\.com/", + 10, + [], + [ + { + "e": 2569 + } + ], + [ + { + "v": 2569 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2569 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2569 + } + ], + {} + ], + [ + 1, + "auto_US_gayporn.com_0", + 0, + "^https?://(www\\.)?gayporn\\.com/", + 10, + [], + [ + { + "e": 1493 + } + ], + [ + { + "v": 1493 + } + ], + [ + { + "text": "Reject All", + "c": 1493 + } + ], + [], + {} + ], + [ + 1, + "auto_US_geissele.com_12y", + 0, + "^https?://(www\\.)?geissele\\.com/", + 10, + [], + [ + { + "e": 3066 + } + ], + [ + { + "v": 3066 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3066 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3066 + } + ], + {} + ], + [ + 1, + "auto_US_giant-bicycles.com_0", + 0, + "^https?://(www\\.)?giant-bicycles\\.com/", + 10, + [], + [ + { + "e": 1494 + } + ], + [ + { + "v": 1494 + } + ], + [ + { + "text": "Refuse all cookies", + "c": 1494 + } + ], + [], + {} + ], + [ + 1, + "auto_US_gibson.com_0", + 0, + "^https?://(www\\.)?gibson\\.com/", + 10, + [], + [ + { + "e": 2570 + } + ], + [ + { + "v": 2570 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2570 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2570 + } + ], + {} + ], + [ + 1, + "auto_US_gocivilairpatrol.com_0", + 0, + "^https?://(www\\.)?gocivilairpatrol\\.com/", + 10, + [], + [ + { + "e": 2571 + } + ], + [ + { + "v": 2571 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2571 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2571 + } + ], + {} + ], + [ + 1, + "auto_US_gog.com_0", + 0, + "^https?://(www\\.)?gog\\.com/", + 10, + [], + [ + { + "e": 1497 + } + ], + [ + { + "v": 1497 + } + ], + [ + { + "text": "Reject all", + "c": 1497 + } + ], + [], + {} + ], + [ + 1, + "auto_US_halleonard.com_x9p", + 0, + "^https?://(www\\.)?halleonard\\.com/", + 10, + [], + [ + { + "e": 2877 + } + ], + [ + { + "v": 2877 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2877 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2877 + } + ], + {} + ], + [ + 1, + "auto_US_help.solidworks.com_0", + 0, + "^https?://(www\\.)?help\\.solidworks\\.com/", + 10, + [], + [ + { + "e": 1498 + } + ], + [ + { + "v": 1498 + } + ], + [ + { + "text": "Continue with only necessary cookies", + "c": 1498 + } + ], + [], + {} + ], + [ + 1, + "auto_US_honeybaked.com_0", + 0, + "^https?://(www\\.)?honeybaked\\.com/", + 10, + [], + [ + { + "e": 1499 + } + ], + [ + { + "v": 1499 + } + ], + [ + { + "text": "Deny Cookies and Close", + "c": 1499 + } + ], + [], + {} + ], + [ + 1, + "auto_US_hypixel.net_0", + 0, + "^https?://(www\\.)?hypixel\\.net/", + 10, + [], + [ + { + "e": 1500 + } + ], + [ + { + "v": 1500 + } + ], + [ + { + "text": "Reject optional cookies", + "c": 1500 + } + ], + [], + {} + ], + [ + 1, + "auto_US_infinitecampus.com_u88", + 0, + "^https?://(www\\.)?infinitecampus\\.com/", + 10, + [], + [ + { + "e": 2572 + } + ], + [ + { + "v": 2572 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2572 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2572 + } + ], + {} + ], + [ + 1, + "auto_US_interactivebrokers.com_0", + 0, + "^https?://(www\\.)?interactivebrokers\\.com/", + 10, + [], + [ + { + "e": 1501 + } + ], + [ + { + "v": 1501 + } + ], + [ + { + "text": "Reject All Cookies", + "c": 1501 + } + ], + [], + {} + ], + [ + 1, + "auto_US_inven.ai_0", + 0, + "^https?://(www\\.)?inven\\.ai/", + 10, + [], + [ + { + "e": 2573 + } + ], + [ + { + "v": 2573 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2573 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2573 + } + ], + {} + ], + [ + 1, + "auto_US_jw.org_0", + 0, + "^https?://(www\\.)?jw\\.org/", + 10, + [], + [ + { + "e": 1504 + } + ], + [ + { + "v": 1504 + } + ], + [ + { + "text": "Decline", + "c": 1504 + } + ], + [], + {} + ], + [ + 1, + "auto_US_kansascity.com_0", + 0, + "^https?://(www\\.)?kansascity\\.com/", + 10, + [], + [ + { + "e": 2574 + } + ], + [ + { + "v": 2574 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2574 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2574 + } + ], + {} + ], + [ + 1, + "auto_US_kentucky.com_0", + 0, + "^https?://(www\\.)?kentucky\\.com/", + 10, + [], + [ + { + "e": 2575 + } + ], + [ + { + "v": 2575 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2575 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2575 + } + ], + {} + ], + [ + 1, + "auto_US_kirkusreviews.com_0", + 0, + "^https?://(www\\.)?kirkusreviews\\.com/", + 10, + [], + [ + { + "e": 1506 + } + ], + [ + { + "v": 1506 + } + ], + [ + { + "text": "Decline", + "c": 1506 + } + ], + [], + {} + ], + [ + 1, + "auto_US_lakehouse.com_qes", + 0, + "^https?://(www\\.)?lakehouse\\.com/", + 10, + [], + [ + { + "e": 2576 + } + ], + [ + { + "v": 2576 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2576 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2576 + } + ], + {} + ], + [ + 1, + "auto_US_latamairlines.com_j45", + 0, + "^https?://(www\\.)?latamairlines\\.com/", + 10, + [], + [ + { + "e": 2878 + } + ], + [ + { + "v": 2878 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2878 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2878 + } + ], + {} + ], + [ + 1, + "auto_US_lawyer.com_sxu", + 0, + "^https?://(www\\.)?lawyer\\.com/", + 10, + [], + [ + { + "e": 2577 + } + ], + [ + { + "v": 2577 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2577 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2577 + } + ], + {} + ], + [ + 1, + "auto_US_learn.ligonier.org_0", + 0, + "^https?://(www\\.)?learn\\.ligonier\\.org/", + 10, + [], + [ + { + "e": 1509 + } + ], + [ + { + "v": 1509 + } + ], + [ + { + "text": "Strictly Necessary", + "c": 1509 + } + ], + [], + {} + ], + [ + 1, + "auto_US_lesschwab.com_kjk", + 0, + "^https?://(www\\.)?lesschwab\\.com/", + 10, + [], + [ + { + "e": 2879 + } + ], + [ + { + "v": 2879 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2879 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2879 + } + ], + {} + ], + [ + 1, + "auto_US_ligonier.org_0", + 0, + "^https?://(www\\.)?ligonier\\.org/", + 10, + [], + [ + { + "e": 1510 + } + ], + [ + { + "v": 1510 + } + ], + [ + { + "text": "Strictly Necessary", + "c": 1510 + } + ], + [], + {} + ], + [ + 1, + "auto_US_lilly.com_lh6_+1", + 0, + "^https?://(www\\.)?lilly\\.com/|^https?://(www\\.)?zepbound\\.lilly\\.com/", + 10, + [], + [ + { + "e": 2880 + } + ], + [ + { + "v": 2880 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2880 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2880 + } + ], + {} + ], + [ + 1, + "auto_US_loyalfans.com_0", + 0, + "^https?://(www\\.)?loyalfans\\.com/", + 10, + [], + [ + { + "e": 1511 + } + ], + [ + { + "v": 1511 + } + ], + [ + { + "text": "ONLY NECESSARY COOKIES", + "c": 1511 + } + ], + [], + {} + ], + [ + 1, + "auto_US_mainlinehealth.org_1vu", + 0, + "^https?://(www\\.)?mainlinehealth\\.org/", + 10, + [], + [ + { + "e": 1512 + } + ], + [ + { + "v": 1512 + } + ], + [ + { + "c": 1512 + } + ], + [], + {} + ], + [ + 1, + "auto_US_marcos.com_k3c", + 0, + "^https?://(www\\.)?marcos\\.com/", + 10, + [], + [ + { + "e": 2881 + } + ], + [ + { + "v": 2881 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2881 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2881 + } + ], + {} + ], + [ + 1, + "auto_US_marriedbiography.com_0", + 0, + "^https?://(www\\.)?marriedbiography\\.com/", + 10, + [], + [ + { + "e": 1513 + } + ], + [ + { + "v": 1513 + } + ], + [ + { + "text": "REJECT", + "c": 1513 + } + ], + [], + {} + ], + [ + 1, + "auto_US_marvin.com_0", + 0, + "^https?://(www\\.)?marvin\\.com/", + 10, + [], + [ + { + "e": 2882 + } + ], + [ + { + "v": 2882 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2882 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2882 + } + ], + {} + ], + [ + 1, + "auto_US_medifind.com_0", + 0, + "^https?://(www\\.)?medifind\\.com/", + 10, + [], + [ + { + "e": 2883 + } + ], + [ + { + "v": 2883 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2883 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2883 + } + ], + {} + ], + [ + 1, + "auto_US_mixedbread.ai_tge", + 0, + "^https?://(www\\.)?mixedbread\\.com/", + 10, + [], + [ + { + "e": 2231 + } + ], + [ + { + "v": 2231 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2231 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2231 + } + ], + {} + ], + [ + 1, + "auto_US_momsmeals.com_bys", + 0, + "^https?://(www\\.)?momsmeals\\.com/", + 10, + [], + [ + { + "e": 1242 + } + ], + [ + { + "v": 1242 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1242 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1242 + } + ], + {} + ], + [ + 1, + "auto_US_monkeytype.com_0", + 0, + "^https?://(www\\.)?monkeytype\\.com/", + 10, + [], + [ + { + "e": 1516 + } + ], + [ + { + "v": 1516 + } + ], + [ + { + "text": "reject non-essential", + "c": 1516 + } + ], + [], + {} + ], + [ + 1, + "auto_US_mountsinai.org_bgh", + 0, + "^https?://(www\\.)?mountsinai\\.org/", + 10, + [], + [ + { + "e": 2578 + } + ], + [ + { + "v": 2578 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2578 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2578 + } + ], + {} + ], + [ + 1, + "auto_US_musicnotes.com_0", + 0, + "^https?://(www\\.)?musicnotes\\.com/", + 10, + [], + [ + { + "e": 1518 + } + ], + [ + { + "v": 1518 + } + ], + [ + { + "text": "Reject", + "c": 1518 + } + ], + [], + {} + ], + [ + 1, + "auto_US_mycharisma.com_u6r", + 0, + "^https?://(www\\.)?mycharisma\\.com/", + 10, + [], + [ + { + "e": 2579 + } + ], + [ + { + "v": 2579 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2579 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2579 + } + ], + {} + ], + [ + 1, + "auto_US_mychart.wellstar.org_pwj", + 0, + "^https?://(www\\.)?wellstar\\.org/", + 10, + [], + [ + { + "e": 2580 + } + ], + [ + { + "v": 2580 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2580 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2580 + } + ], + {} + ], + [ + 1, + "auto_US_mynm.nm.org_0", + 0, + "^https?://(www\\.)?mynm\\.nm\\.org/", + 10, + [], + [ + { + "e": 862 + } + ], + [ + { + "v": 862 + } + ], + [ + { + "wait": 500 + }, + { + "c": 862 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 862 + } + ], + {} + ], + [ + 1, + "auto_US_newmedicare.com_6jp", + 0, + "^https?://(www\\.)?newmedicare\\.com/", + 10, + [], + [ + { + "e": 2884 + } + ], + [ + { + "v": 2884 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2884 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2884 + } + ], + {} + ], + [ + 1, + "auto_US_newsbreak.com_0", + 0, + "^https?://(www\\.)?newsbreak\\.com/", + 10, + [], + [ + { + "e": 1522 + } + ], + [ + { + "v": 1522 + } + ], + [ + { + "c": 1522 + } + ], + [], + {} + ], + [ + 1, + "auto_US_nm.org_0", + 0, + "^https?://(www\\.)?nm\\.org/", + 10, + [], + [ + { + "e": 875 + } + ], + [ + { + "v": 875 + } + ], + [ + { + "wait": 500 + }, + { + "c": 875 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 875 + } + ], + {} + ], + [ + 1, + "auto_US_no.co_0", + 0, + "^https?://(www\\.)?no\\.co/", + 10, + [], + [ + { + "e": 878 + } + ], + [ + { + "v": 878 + } + ], + [ + { + "wait": 500 + }, + { + "c": 878 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 878 + } + ], + {} + ], + [ + 1, + "auto_US_nutaku.net_0", + 0, + "^https?://(www\\.)?nutaku\\.net/", + 10, + [], + [ + { + "e": 1525 + } + ], + [ + { + "v": 1525 + } + ], + [ + { + "text": "Accept Only Essential Cookies", + "c": 1525 + } + ], + [], + {} + ], + [ + 1, + "auto_US_oakley.com_0", + 0, + "^https?://(www\\.)?oakley\\.com/", + 10, + [], + [ + { + "e": 1491 + } + ], + [ + { + "v": 1491 + } + ], + [ + { + "text": "REJECT", + "c": 1491 + } + ], + [], + {} + ], + [ + 1, + "auto_US_oip.manual.canon_0", + 0, + "^https?://(www\\.)?oip\\.manual\\.canon/", + 10, + [], + [ + { + "e": 1526 + } + ], + [ + { + "v": 1526 + } + ], + [ + { + "text": "Reject", + "c": 1526 + } + ], + [], + {} + ], + [ + 1, + "auto_US_pcc.edu_gt8", + 0, + "^https?://(www\\.)?pcc\\.edu/", + 10, + [], + [ + { + "e": 2885 + } + ], + [ + { + "v": 2885 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2885 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2885 + } + ], + {} + ], + [ + 1, + "auto_US_peekyou.com_32h", + 0, + "^https?://(www\\.)?peekyou\\.com/", + 10, + [], + [ + { + "e": 1527 + } + ], + [ + { + "v": 1527 + } + ], + [ + { + "c": 1527 + } + ], + [], + {} + ], + [ + 1, + "auto_US_peptidesciences.com_0", + 0, + "^https?://(www\\.)?peptidesciences\\.com/", + 10, + [], + [ + { + "e": 879 + } + ], + [ + { + "v": 879 + } + ], + [ + { + "wait": 500 + }, + { + "c": 879 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 879 + } + ], + {} + ], + [ + 1, + "auto_US_powerofpositivity.com_0", + 0, + "^https?://(www\\.)?powerofpositivity\\.com/", + 10, + [], + [ + { + "e": 1529 + } + ], + [ + { + "v": 1529 + } + ], + [ + { + "text": "REJECT ALL", + "c": 1529 + } + ], + [], + {} + ], + [ + 1, + "auto_US_racerxonline.com_v6s", + 0, + "^https?://(www\\.)?racerxonline\\.com/", + 10, + [], + [ + { + "e": 3067 + } + ], + [ + { + "v": 3067 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3067 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3067 + } + ], + {} + ], + [ + 1, + "auto_US_raymondjames.com_0", + 0, + "^https?://(www\\.)?raymondjames\\.com/", + 10, + [], + [ + { + "e": 887 + } + ], + [ + { + "v": 887 + } + ], + [ + { + "wait": 500 + }, + { + "c": 887 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 887 + } + ], + {} + ], + [ + 1, + "auto_US_recology.com_0", + 0, + "^https?://(www\\.)?recology\\.com/", + 10, + [], + [ + { + "e": 2405 + } + ], + [ + { + "v": 2405 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2405 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2405 + } + ], + {} + ], + [ + 1, + "auto_US_redgifs.com_0", + 0, + "^https?://(www\\.)?redgifs\\.com/", + 10, + [], + [ + { + "e": 1532 + } + ], + [ + { + "v": 1532 + } + ], + [ + { + "text": "Decline", + "c": 1532 + } + ], + [], + {} + ], + [ + 1, + "auto_US_rubylane.com_g5g", + 0, + "^https?://(www\\.)?rubylane\\.com/", + 10, + [], + [ + { + "e": 1604 + } + ], + [ + { + "v": 1604 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1604 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1604 + } + ], + {} + ], + [ + 1, + "auto_US_schedule1-calculator.com_0", + 0, + "^https?://(www\\.)?schedule1-calculator\\.com/", + 10, + [], + [ + { + "e": 1533 + } + ], + [ + { + "v": 1533 + } + ], + [ + { + "text": "Deny", + "c": 1533 + } + ], + [], + {} + ], + [ + 1, + "auto_US_semrush.com_0", + 0, + "^https?://(www\\.)?semrush\\.com/", + 10, + [], + [ + { + "e": 888 + } + ], + [ + { + "v": 888 + } + ], + [ + { + "wait": 500 + }, + { + "c": 888 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 888 + } + ], + {} + ], + [ + 1, + "auto_US_sheetmusicplus.com_cyv", + 0, + "^https?://(www\\.)?sheetmusicplus\\.com/", + 10, + [], + [ + { + "e": 2886 + } + ], + [ + { + "v": 2886 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2886 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2886 + } + ], + {} + ], + [ + 1, + "auto_US_shemalestardb.com_0", + 0, + "^https?://(www\\.)?shemalestardb\\.com/", + 10, + [], + [ + { + "e": 1535 + } + ], + [ + { + "v": 1535 + } + ], + [ + { + "text": "Reject", + "c": 1535 + } + ], + [], + {} + ], + [ + 1, + "auto_US_slidesgo.com_0", + 0, + "^https?://(www\\.)?slidesgo\\.com/", + 10, + [], + [ + { + "e": 1536 + } + ], + [ + { + "v": 1536 + } + ], + [ + { + "text": "Reject All", + "c": 1536 + } + ], + [], + {} + ], + [ + 1, + "auto_US_sportsinjuryclinic.net_0", + 0, + "^https?://(www\\.)?sportsinjuryclinic\\.net/", + 10, + [], + [ + { + "e": 1537 + } + ], + [ + { + "v": 1537 + } + ], + [ + { + "text": "Reject", + "c": 1537 + } + ], + [], + {} + ], + [ + 1, + "auto_US_sqlservercentral.com_0", + 0, + "^https?://(www\\.)?sqlservercentral\\.com/", + 10, + [], + [ + { + "e": 1538 + } + ], + [ + { + "v": 1538 + } + ], + [ + { + "text": "Reject additional cookies", + "c": 1538 + } + ], + [], + {} + ], + [ + 1, + "auto_US_sso.passport.yandex.ru_0_+5", + 0, + "^https?://(www\\.)?sso\\.passport\\.yandex\\.ru/|^https?://(www\\.)?translate\\.yandex\\.com/|^https?://(www\\.)?tv\\.yandex\\.com/|^https?://(www\\.)?ya\\.ru/|^https?://(www\\.)?yandex\\.com\\.tr/|^https?://(www\\.)?yandex\\.com/", + 10, + [], + [ + { + "e": 1539 + } + ], + [ + { + "v": 1539 + } + ], + [ + { + "text": "Allow essential cookies", + "c": 1539 + } + ], + [], + {} + ], + [ + 1, + "auto_US_strava.com_0", + 0, + "^https?://(www\\.)?strava\\.com/", + 10, + [], + [ + { + "e": 1540 + } + ], + [ + { + "v": 1540 + } + ], + [ + { + "text": "Reject", + "c": 1540 + } + ], + [], + {} + ], + [ + 1, + "auto_US_support.nordvpn.com_0", + 0, + "^https?://(www\\.)?support\\.nordvpn\\.com/", + 10, + [], + [ + { + "e": 1541 + } + ], + [ + { + "v": 1541 + } + ], + [ + { + "text": "Reject", + "c": 1541 + } + ], + [], + {} + ], + [ + 1, + "auto_US_tecadmin.net_4bn", + 0, + "^https?://(www\\.)?tecadmin\\.net/", + 10, + [], + [ + { + "e": 1543 + } + ], + [ + { + "v": 1543 + } + ], + [ + { + "wait": 500 + }, + { + "c": 1543 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1543 + } + ], + {} + ], + [ + 1, + "auto_US_thedrardisshow.com_0", + 0, + "^https?://(www\\.)?thedrardisshow\\.com/", + 10, + [], + [ + { + "e": 1544 + } + ], + [ + { + "v": 1544 + } + ], + [ + { + "text": "Reject all", + "c": 1544 + } + ], + [], + {} + ], + [ + 1, + "auto_US_thenewstribune.com_en0", + 0, + "^https?://(www\\.)?thenewstribune\\.com/", + 10, + [], + [ + { + "e": 2887 + } + ], + [ + { + "v": 2887 + } + ], + [ + { + "wait": 500 + }, + { + "c": 2887 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 2887 + } + ], + {} + ], + [ + 1, + "auto_US_thingiverse.com_0", + 0, + "^https?://(www\\.)?thingiverse\\.com/", + 10, + [], + [ + { + "e": 1545 + } + ], + [ + { + "v": 1545 + } + ], + [ + { + "text": "Deny", + "c": 1545 + } + ], + [], + {} + ], + [ + 1, + "auto_US_titleist.com_0", + 0, + "^https?://(www\\.)?titleist\\.com/", + 10, + [], + [ + { + "e": 1548 + } + ], + [ + { + "v": 1548 + } + ], + [ + { + "text": "Accept Only Essential", + "c": 1548 + } + ], + [], + {} + ], + [ + 1, + "auto_US_trekbikes.com_0", + 0, + "^https?://(www\\.)?trekbikes\\.com/", + 10, + [], + [ + { + "e": 1503 + } + ], + [ + { + "v": 1503 + } + ], + [ + { + "text": "Use necessary cookies only", + "c": 1503 + } + ], + [], + {} + ], + [ + 1, + "auto_US_truecaller.com_0", + 0, + "^https?://(www\\.)?truecaller\\.com/", + 10, + [], + [ + { + "e": 1549 + } + ], + [ + { + "v": 1549 + } + ], + [ + { + "text": "Accept Necessary Cookies", + "c": 1549 + } + ], + [], + {} + ], + [ + 1, + "auto_US_try.frndlytv.com_0", + 0, + "^https?://([a-z]+\\.)?frndlytv\\.com/", + 10, + [], + [ + { + "e": 916 + } + ], + [ + { + "v": 916 + } + ], + [ + { + "wait": 500 + }, + { + "c": 916 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 916 + } + ], + {} + ], + [ + 1, + "auto_US_ubs.com_eo7", + 0, + "^https?://(www\\.)?ubs\\.com/", + 10, + [], + [ + { + "e": 818 + } + ], + [ + { + "v": 818 + } + ], + [ + { + "wait": 500 + }, + { + "c": 818 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 818 + } + ], + {} + ], + [ + 1, + "auto_US_watch.thechosen.tv_0", + 0, + "^https?://(www\\.)?watch\\.thechosen\\.tv/", + 10, + [], + [ + { + "e": 3068 + } + ], + [ + { + "v": 3068 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3068 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3068 + } + ], + {} + ], + [ + 1, + "auto_US_weforum.org_0", + 0, + "^https?://(www\\.)?weforum\\.org/", + 10, + [], + [ + { + "e": 1497 + } + ], + [ + { + "v": 1497 + } + ], + [ + { + "text": "Reject optional cookies", + "c": 1497 + } + ], + [], + {} + ], + [ + 1, + "auto_US_weingartz.com_aso", + 0, + "^https?://(www\\.)?weingartz\\.com/", + 10, + [], + [ + { + "e": 1036 + } + ], + [ + { + "v": 1036 + } + ], + [ + { + "c": 1036 + } + ], + [], + {} + ], + [ + 1, + "auto_US_wikifeet.com_0", + 0, + "^https?://(www\\.)?wikifeet\\.com/", + 10, + [], + [ + { + "e": 1554 + } + ], + [ + { + "v": 1554 + } + ], + [ + { + "text": "I decline", + "c": 1554 + } + ], + [], + {} + ], + [ + 1, + "auto_US_wilsoncombat.com_0", + 0, + "^https?://(www\\.)?wilsoncombat\\.com/", + 10, + [], + [ + { + "e": 3069 + } + ], + [ + { + "v": 3069 + } + ], + [ + { + "wait": 500 + }, + { + "c": 3069 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 3069 + } + ], + {} + ], + [ + 1, + "auto_US_xpo.com_w95", + 0, + "^https?://(www\\.)?xpo\\.com/", + 10, + [], + [ + { + "e": 945 + } + ], + [ + { + "v": 945 + } + ], + [ + { + "wait": 500 + }, + { + "c": 945 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 945 + } + ], + {} + ], + [ + 1, + "auto_US_xpo.com_x6e", + 0, + "^https?://(www\\.)?xpo\\.com/", + 10, + [], + [ + { + "e": 951 + } + ], + [ + { + "v": 951 + } + ], + [ + { + "wait": 500 + }, + { + "c": 951 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 951 + } + ], + {} + ], + [ + 1, + "auto_US_yubico.com_0", + 0, + "^https?://(www\\.)?yubico\\.com/", + 10, + [], + [ + { + "e": 1497 + } + ], + [ + { + "v": 1497 + } + ], + [ + { + "text": "Deny", + "c": 1497 + } + ], + [], + {} + ], + [ + 1, + "auto_US_zacks.com_0", + 0, + "^https?://(www\\.)?zacks\\.com/", + 10, + [], + [ + { + "e": 1556 + } + ], + [ + { + "v": 1556 + } + ], + [ + { + "text": "Deny Optional", + "c": 1556 + } + ], + [], + {} + ], + [ + 1, + "bahn-de", + 0, + "^https://(www\\.)?bahn\\.de/", + 10, + [], + [ + { + "exists": [ + "body > div:first-child", + "#consent-layer" + ] + } + ], + [ + { + "visible": [ + "body > div:first-child", + "#consent-layer" + ] + } + ], + [ + { + "waitForThenClick": [ + "body > div:first-child", + "#consent-layer .js-accept-essential-cookies" + ] + } + ], + [ + { + "eval": "EVAL_BAHN_TEST" + } + ], + { + "intermediate": false + } + ], + [ + 1, + "bbc.com", + 2, + "^https://(www\\.)?bbc\\.com", + 22, + [ + 820 + ], + [ + { + "e": 821 + } + ], + [ + { + "v": 821 + } + ], + [ + { + "c": 822 + } + ], + [ + { + "cc": 823 + } + ], + {} + ], + [ + 1, + "canyon.com", + 2, + "^https://www\\.canyon\\.com/", + 22, + [ + 824 + ], + [ + { + "e": 824 + } + ], + [ + { + "v": 824 + } + ], + [ + { + "k": 825 + }, + { + "c": 826 + } + ], + [], + {} + ], + [ + 1, + "clustrmaps.com", + 1, + "^https://(www\\.)?clustrmaps\\.com/", + 22, + [ + 827 + ], + [ + { + "e": 827 + } + ], + [ + { + "v": 827 + } + ], + [ + { + "h": 827 + } + ], + [], + {} + ], + [ + 1, + "csu-landtag-de", + 2, + "^https://(www\\.|)?csu-landtag\\.de", + 22, + [ + 828 + ], + [ + { + "e": 828 + } + ], + [ + { + "v": 828 + } + ], + [ + { + "k": 829 + } + ], + [], + {} + ], + [ + 1, + "dailymotion.com", + 2, + "^https://(www\\.)?dailymotion\\.com/", + 22, + [ + 830 + ], + [ + { + "e": 831 + } + ], + [ + { + "v": 832 + } + ], + [ + { + "c": 833 + } + ], + [ + { + "cc": 834 + } + ], + {} + ], + [ + 1, + "delta.com", + 1, + "^https://www\\.delta\\.com/", + 22, + [ + 841 + ], + [ + { + "e": 842 + } + ], + [ + { + "v": 842 + } + ], + [ + { + "h": 842 + } + ], + [], + {} + ], + [ + 1, + "depop", + 0, + "^https://(www\\.)?depop\\.com/", + 22, + [ + 843 + ], + [ + { + "e": 844 + } + ], + [ + { + "v": 844 + } + ], + [ + { + "c": 845 + }, + { + "all": true, + "optional": true, + "k": 846 + }, + { + "c": 847 + } + ], + [ + { + "cc": 848 + } + ], + {} + ], + [ + 1, + "dji", + 0, + "^https://(\\w+\\.)+dji\\.com/", + 22, + [ + 853 + ], + [ + { + "e": 854 + } + ], + [ + { + "e": 853 + } + ], + [ + { + "c": 855 + } + ], + [ + { + "cc": 856 + } + ], + {} + ], + [ + 1, + "dndbeyond", + 2, + "^https://(www\\.)?dndbeyond\\.com/", + 22, + [ + 857 + ], + [ + { + "e": 857 + } + ], + [ + { + "v": 857 + } + ], + [ + { + "c": 858 + } + ], + [ + { + "cc": 859 + } + ], + {} + ], + [ + 1, + "ebay", + 0, + "^https://(www\\.)?ebay\\.([.a-z]+)/", + 10, + [ + 860 + ], + [ + { + "e": 860 + } + ], + [ + { + "v": 860 + } + ], + [ + { + "c": 861 + } + ], + [], + {} + ], + [ + 1, + "ecosia", + 2, + "^https://www\\.ecosia\\.org/", + 22, + [ + 863 + ], + [ + { + "e": 864 + } + ], + [ + { + "v": 864 + } + ], + [ + { + "c": 869 + } + ], + [], + {} + ], + [ + 1, + "ef-ccpa", + 0, + "^https://(www\\.)?eforms\\.com", + 22, + [ + 870 + ], + [ + { + "e": 870 + } + ], + [ + { + "v": 870 + } + ], + [ + { + "c": 871 + } + ], + [], + {} + ], + [ + 1, + "espace-personnel.agirc-arrco.fr", + 2, + "^https://espace-personnel\\.agirc-arrco\\.fr/", + 22, + [ + 872 + ], + [ + { + "e": 873 + } + ], + [ + { + "v": 873 + } + ], + [ + { + "c": 874 + } + ], + [], + {} + ], + [ + 1, + "europa-eu", + 2, + "^https://([a-z\\.]*\\.)?europa\\.eu/", + 22, + [ + 375 + ], + [ + { + "e": 880 + } + ], + [ + { + "v": 880 + } + ], + [ + { + "c": 881, + "h": 880 + } + ], + [], + {} + ], + [ + 1, + "facebook", + 2, + "^https://([a-z0-9-]+\\.)?facebook\\.com/", + 22, + [ + 882 + ], + [ + { + "e": 882 + } + ], + [ + { + "v": 882 + } + ], + [ + { + "c": 1607 + }, + { + "check": "none", + "wv": 882 + } + ], + [], + {} + ], + [ + 1, + "financestrategists.com", + 1, + "^https://(www\\.)?financestrategists\\.com/", + 22, + [ + 883 + ], + [ + { + "e": 883 + } + ], + [ + { + "v": 883 + } + ], + [ + { + "h": 883 + } + ], + [], + {} + ], + [ + 1, + "geeks-for-geeks", + 1, + "^https://www\\.geeksforgeeks\\.org/", + 22, + [ + 884 + ], + [ + { + "e": 884 + } + ], + [ + { + "v": 884 + } + ], + [ + { + "h": 884 + } + ], + [], + {} + ], + [ + 1, + "glastonburyfestivals", + 0, + "^https://(\\w+\\.)?glastonburyfestivals\\.co\\.uk/", + 22, + [ + 885 + ], + [ + { + "e": 886 + } + ], + [ + { + "v": 886 + } + ], + [ + { + "c": 900 + } + ], + [], + {} + ], + [ + 1, + "groundnews", + 0, + "^https://(www\\.)?ground\\.news/", + 22, + [], + [ + { + "e": 901 + } + ], + [ + { + "v": 901 + } + ], + [ + { + "waitForThenClick": [ + ".fixed:has([data-testid=closeCookieBanner])", + "xpath///button[contains(., 'Manage cookies')]" + ] + }, + { + "waitFor": [ + "[data-testid=modal]", + "xpath///span[contains(., 'Essential cookies')]" + ] + }, + { + "click": [ + "[data-testid=modal]", + "xpath///button[contains(., 'On')]" + ], + "all": true, + "optional": true + }, + { + "waitForThenClick": [ + "[data-testid=modal]", + "xpath///button[contains(., 'Save & reload')]" + ] + } + ], + [], + {} + ], + [ + 1, + "hashicorp", + 2, + "^https://[a-z]*\\.hashicorp\\.com/", + 22, + [ + 902 + ], + [ + { + "e": 902 + } + ], + [ + { + "v": 902 + } + ], + [ + { + "c": 903 + }, + { + "c": 904 + } + ], + [], + {} + ], + [ + 1, + "hetzner.com", + 2, + "^https://www\\.hetzner\\.com/", + 22, + [ + 905 + ], + [ + { + "e": 905 + } + ], + [ + { + "v": 905 + } + ], + [ + { + "k": 906 + } + ], + [], + {} + ], + [ + 1, + "imdb", + 0, + "^https://(www\\.)?(m\\.)?imdb.com/", + 22, + [ + 902 + ], + [ + { + "e": 902 + } + ], + [ + { + "v": 902 + } + ], + [ + { + "c": 907 + } + ], + [], + {} + ], + [ + 1, + "instagram", + 2, + "^https://www\\.instagram\\.com/", + 22, + [], + [ + { + "e": 908 + } + ], + [ + { + "v": 908 + } + ], + [ + { + "c": 909 + }, + { + "wait": 2000 + } + ], + [], + {} + ], + [ + 1, + "itopvpn.com", + 1, + "^https://(www\\.)?itopvpn.com/", + 22, + [], + [ + { + "e": 910 + } + ], + [ + { + "e": 910 + } + ], + [ + { + "h": 910 + } + ], + [], + {} + ], + [ + 1, + "jdsports", + 2, + "^https://(www|m)\\.jdsports\\.", + 22, + [ + 911 + ], + [ + { + "e": 911 + } + ], + [ + { + "v": 911 + } + ], + [ + { + "if": { + "e": 912 + }, + "then": [ + { + "h": 912 + } + ], + "else": [ + { + "c": 913 + }, + { + "c": 914 + } + ] + } + ], + [], + {} + ], + [ + 1, + "kleinanzeigen-de", + 2, + "^https?://(www\\.)?kleinanzeigen\\.de", + 22, + [ + 915 + ], + [ + { + "e": 917 + } + ], + [ + { + "v": 917 + } + ], + [ + { + "k": 917 + } + ], + [], + {} + ], + [ + 1, + "leafly", + 1, + "^https://(www\\.)?leafly\\.com/", + 22, + [], + [ + { + "e": 918 + } + ], + [ + { + "v": 918 + } + ], + [ + { + "h": 918 + } + ], + [], + {} + ], + [ + 1, + "medium", + 1, + "^https://([a-z0-9-]+\\.)?medium\\.com/", + 10, + [], + [ + { + "e": 919 + } + ], + [ + { + "v": 919 + } + ], + [ + { + "h": 919 + } + ], + [], + {} + ], + [ + 1, + "midway-usa", + 1, + "^https://www\\.midwayusa\\.com/", + 22, + [ + 920 + ], + [ + { + "exists": [ + "div[aria-label=\"Cookie Policy Banner\"]" + ] + } + ], + [ + { + "v": 920 + } + ], + [ + { + "h": 921 + } + ], + [], + {} + ], + [ + 1, + "nba.com", + 1, + "^https://(www\\.)?nba\\.com/", + 22, + [ + 922 + ], + [ + { + "e": 922 + } + ], + [ + { + "v": 922 + } + ], + [ + { + "h": 922 + } + ], + [], + {} + ], + [ + 1, + "netbeat.de", + 2, + "^https://(www\\.)?netbeat\\.de/", + 22, + [ + 930 + ], + [ + { + "e": 930 + } + ], + [ + { + "v": 930 + } + ], + [ + { + "c": 931 + } + ], + [], + {} + ], + [ + 1, + "nhnieuws", + 2, + "^https://(www\\.)?nhnieuws\\.nl/", + 22, + [ + 932 + ], + [ + { + "e": 932 + } + ], + [ + { + "v": 932 + } + ], + [ + { + "all": true, + "c": 933 + }, + { + "c": 934 + } + ], + [ + { + "eval": "EVAL_NHNIEUWS_TEST" + } + ], + {} + ], + [ + 1, + "nike", + 2, + "^https://(www\\.)?nike\\.com/", + 22, + [], + [ + { + "e": 935 + } + ], + [ + { + "v": 935 + } + ], + [ + { + "all": true, + "c": 936 + }, + { + "c": 937 + } + ], + [], + {} + ], + [ + 1, + "nos.nl", + 1, + "^https://nos\\.nl/", + 22, + [ + 938 + ], + [ + { + "e": 938 + } + ], + [ + { + "visible": [ + "ccm-notification" + ] + } + ], + [ + { + "h": 938 + } + ], + [], + {} + ], + [ + 1, + "nutritionix.com", + 0, + "^https://(www\\.)?nutritionix\\.com/", + 22, + [ + 939 + ], + [ + { + "e": 939 + } + ], + [ + { + "v": 939 + } + ], + [ + { + "waitForThenClick": [ + "gdpr-banner", + "xpath///button[contains(., 'Refuse')]" + ] + } + ], + [], + {} + ], + [ + 1, + "ok", + 0, + "^https://ok\\.ru/", + 22, + [ + 940 + ], + [ + { + "e": 941 + } + ], + [ + { + "v": 941 + } + ], + [ + { + "w": 942 + }, + { + "wait": 1000 + }, + { + "k": 942 + }, + { + "wv": 943 + }, + { + "wait": 500 + }, + { + "all": true, + "optional": true, + "k": 946 + }, + { + "c": 948 + }, + { + "check": "none", + "wv": 943 + } + ], + [], + {} + ], + [ + 1, + "onlyFans.com", + 2, + "^https://onlyfans\\.com/", + 22, + [ + 949 + ], + [ + { + "e": 949 + } + ], + [ + { + "e": 949 + } + ], + [ + { + "k": 950 + }, + { + "if": { + "e": 953 + }, + "then": [ + { + "all": true, + "k": 954 + }, + { + "k": 955 + } + ] + } + ], + [], + {} + ], + [ + 1, + "openai", + 0, + "^https://([a-z0-9-]+\\.)?openai\\.com/", + 22, + [ + 956 + ], + [ + { + "e": 956 + } + ], + [ + { + "v": 956 + } + ], + [ + { + "c": 957 + } + ], + [ + { + "wait": 500 + }, + { + "cc": 958 + } + ], + {} + ], + [ + 1, + "opera.com", + 0, + "^https?://(www\\.|)?opera\\.com/", + 22, + [ + 959 + ], + [ + { + "e": 960 + } + ], + [ + { + "v": 960 + } + ], + [ + { + "all": true, + "c": 965 + }, + { + "c": 966 + } + ], + [ + { + "cc": 972 + }, + { + "negated": true, + "cc": 973 + } + ], + {} + ], + [ + 1, + "ouraring", + 0, + "^https://ouraring\\.com", + 10, + [], + [ + { + "e": 974 + } + ], + [ + { + "v": 974 + } + ], + [ + { + "c": 975 + }, + { + "c": 976 + } + ], + [], + {} + ], + [ + 1, + "ourworldindata", + 2, + "^https://ourworldindata\\.org/", + 22, + [ + 981 + ], + [ + { + "e": 981 + } + ], + [ + { + "v": 982 + } + ], + [ + { + "c": 983 + } + ], + [], + {} + ], + [ + 1, + "paychex", + 1, + "^https://(www\\.)?paychex\\.com/", + 22, + [ + 984 + ], + [ + { + "e": 984 + } + ], + [ + { + "v": 984 + } + ], + [ + { + "h": 984 + } + ], + [], + {} + ], + [ + 1, + "pinterest-business", + 2, + "^https://[a-z]*\\.pinterest\\.com/", + 22, + [ + 985 + ], + [ + { + "e": 985 + } + ], + [ + { + "v": 986 + } + ], + [ + { + "c": 987 + } + ], + [], + {} + ], + [ + 1, + "plos", + 0, + "^https://([.a-zA-Z0-9-]+\\.)?plos\\.org/", + 22, + [ + 959 + ], + [ + { + "e": 988 + } + ], + [ + { + "v": 988 + } + ], + [ + { + "all": true, + "optional": true, + "k": 989 + }, + { + "waitForThenClick": [ + "#cookie-consent", + "xpath///button[contains(., 'Save Selected')]" + ] + } + ], + [ + { + "cc": 990 + } + ], + {} + ], + [ + 1, + "pornhub.com", + 0, + "^https://(www\\.)?pornhub\\.com/", + 22, + [ + 991 + ], + [ + { + "e": 2893 + } + ], + [ + { + "v": 2893 + } + ], + [ + { + "if": { + "e": 2894 + }, + "then": [ + { + "c": 2894 + } + ] + }, + { + "if": { + "e": 992 + }, + "then": [ + { + "k": 992 + } + ], + "else": [ + { + "c": 2895 + } + ] + } + ], + [], + {} + ], + [ + 1, + "postnl", + 0, + "^https://([a-z]*\\.)?postnl\\.nl/", + 22, + [ + 993 + ], + [ + { + "e": 993 + } + ], + [ + { + "v": 993 + } + ], + [ + { + "waitForThenClick": [ + "pnl-cookie-wall-widget", + "button.pci-button--secondary" + ] + } + ], + [ + { + "cc": 1049 + } + ], + {} + ], + [ + 1, + "povr", + 0, + "^https://povr\\.com/", + 22, + [], + [ + { + "e": 1055 + } + ], + [ + { + "v": 1055 + } + ], + [ + { + "h": 1067 + }, + { + "if": { + "e": 1069 + }, + "then": [ + { + "w": 1093 + }, + { + "all": true, + "optional": true, + "k": 1168 + }, + { + "c": 1197 + }, + { + "eval": "EVAL_POVR_GOBACK" + } + ], + "else": [ + { + "c": 1200 + } + ] + } + ], + [], + {} + ], + [ + 1, + "productz.com", + 2, + "^https://productz\\.com/", + 22, + [], + [ + { + "e": 1240 + } + ], + [ + { + "v": 1240 + } + ], + [ + { + "c": 1268 + } + ], + [], + {} + ], + [ + 1, + "readly", + 2, + "^https://([a-z0-9-]+\\.)?readly\\.com/", + 22, + [ + 1283 + ], + [ + { + "e": 1283 + } + ], + [ + { + "v": 1283 + } + ], + [ + { + "c": 1290 + }, + { + "if": { + "e": 1295 + }, + "then": [ + { + "all": true, + "c": 1295 + } + ], + "else": [] + }, + { + "c": 1447 + } + ], + [], + {} + ], + [ + 1, + "reddit.com", + 2, + "^https://www\\.reddit\\.com/", + 22, + [ + 1482 + ], + [ + { + "e": 2905 + } + ], + [ + { + "v": 2905 + } + ], + [ + { + "c": 2906 + } + ], + [ + { + "cc": 1751 + } + ], + {} + ], + [ + 1, + "remarkable.com", + 0, + "^https://(www\\.)?remarkable\\.com/", + 22, + [ + 1836 + ], + [ + { + "e": 1852 + } + ], + [ + { + "v": 1852 + } + ], + [ + { + "if": { + "e": 1899 + }, + "then": [ + { + "h": 2022 + } + ], + "else": [ + { + "c": 2064 + }, + { + "w": 2319 + }, + { + "c": 2419 + } + ] + } + ], + [ + { + "eval": "EVAL_REMARKABLE_TEST" + } + ], + {} + ], + [ + 1, + "roblox", + 0, + "^https://(www\\.)?roblox\\.com/", + 10, + [], + [ + { + "e": 2635 + } + ], + [ + { + "v": 2890 + } + ], + [ + { + "c": 2896 + } + ], + [ + { + "cc": 2897 + } + ], + {} + ], + [ + 1, + "rog-forum.asus.com", + 2, + "^https://rog-forum\\.asus\\.com/", + 22, + [ + 741 + ], + [ + { + "e": 741 + } + ], + [ + { + "v": 741 + } + ], + [ + { + "k": 742 + }, + { + "c": 743 + } + ], + [], + {} + ], + [ + 1, + "roofingmegastore.co.uk", + 2, + "^https://(www\\.)?roofingmegastore\\.co\\.uk", + 22, + [ + 744 + ], + [ + { + "e": 744 + } + ], + [ + { + "v": 744 + } + ], + [ + { + "k": 745 + }, + { + "c": 746 + } + ], + [], + {} + ], + [ + 1, + "rt", + 1, + "^https://(www\\.)?rt\\.com/", + 22, + [ + 747 + ], + [ + { + "e": 747 + } + ], + [ + { + "v": 747 + } + ], + [ + { + "h": 747 + } + ], + [], + {} + ], + [ + 1, + "ryanair", + 0, + "^https://(www\\.)?ryanair\\.com/", + 10, + [ + 748 + ], + [ + { + "e": 748 + } + ], + [ + { + "v": 748 + } + ], + [ + { + "c": 749 + } + ], + [ + { + "cc": 750 + } + ], + {} + ], + [ + 1, + "samsung.com", + 1, + "^https://www\\.samsung\\.com/", + 22, + [ + 751 + ], + [ + { + "e": 751 + } + ], + [ + { + "v": 751 + } + ], + [ + { + "h": 751 + } + ], + [], + {} + ], + [ + 1, + "shein.com", + 2, + "^https?://([a-z]+\\.)?shein\\.com/", + 22, + [ + 1609 + ], + [ + { + "e": 1610 + } + ], + [ + { + "v": 1610 + } + ], + [ + { + "c": 1610 + } + ], + [ + { + "timeout": 1000, + "check": "none", + "wv": 1610 + } + ], + {} + ], + [ + 1, + "skyscanner", + 0, + "^https://(www\\.)?skyscanner[\\.a-z]+/", + 10, + [ + 2635 + ], + [ + { + "e": 765 + } + ], + [ + { + "v": 765 + } + ], + [ + { + "c": 766 + }, + { + "check": "none", + "wv": 765 + } + ], + [ + { + "eval": "EVAL_SKYSCANNER_TEST" + } + ], + {} + ], + [ + 1, + "strato.de", + 2, + "^https://www\\.strato\\.de/", + 22, + [ + 776 + ], + [ + { + "e": 777 + } + ], + [ + { + "v": 777 + } + ], + [ + { + "k": 778 + }, + { + "c": 779 + } + ], + [], + {} + ], + [ + 1, + "svt.se", + 2, + "^https://www\\.svt\\.se/", + 22, + [ + 787 + ], + [ + { + "e": 787 + } + ], + [ + { + "v": 788 + } + ], + [ + { + "c": 789 + } + ], + [ + { + "cc": 790 + } + ], + {} + ], + [ + 1, + "temu", + 2, + "^https://([a-z0-9-]+\\.)?temu\\.com/", + 22, + [], + [ + { + "e": 815 + } + ], + [ + { + "v": 815 + } + ], + [ + { + "if": { + "e": 816 + }, + "then": [ + { + "c": 816 + } + ], + "else": [ + { + "c": 817 + } + ] + } + ], + [], + {} + ], + [ + 1, + "tesco", + 0, + "^https://(www\\.)?tesco\\.com/", + 22, + [ + 835 + ], + [ + { + "e": 836 + } + ], + [ + { + "v": 836 + } + ], + [ + { + "wait": 1000 + }, + { + "c": 837 + } + ], + [], + {} + ], + [ + 1, + "tesla", + 2, + "^https://(www\\.)?tesla\\.com/", + 10, + [], + [ + { + "e": 838 + } + ], + [ + { + "v": 838 + } + ], + [ + { + "c": 839 + } + ], + [ + { + "cc": 840 + } + ], + {} + ], + [ + 1, + "theverge", + 2, + "^https://(www)?\\.theverge\\.com", + 10, + [ + 849 + ], + [ + { + "e": 849 + } + ], + [ + { + "v": 849 + } + ], + [ + { + "k": 850 + } + ], + [ + { + "cc": 851 + } + ], + { + "intermediate": false + } + ], + [ + 1, + "tinyurl", + 1, + "^https://tinyurl\\.com/", + 22, + [ + 852 + ], + [ + { + "e": 852 + } + ], + [ + { + "v": 852 + } + ], + [ + { + "h": 852 + } + ], + [], + {} + ], + [ + 1, + "track.amazon.com", + 2, + "^https://[a-z]*\\.amazon\\.", + 22, + [ + 2636 + ], + [ + { + "e": 2793 + } + ], + [ + { + "v": 2793 + } + ], + [ + { + "k": 2888 + } + ], + [], + {} + ], + [ + 1, + "transip-nl", + 2, + "^https://www\\.transip\\.nl/", + 22, + [ + 865 + ], + [ + { + "any": [ + { + "e": 865 + }, + { + "e": 866 + } + ] + } + ], + [ + { + "any": [ + { + "v": 865 + }, + { + "v": 866 + } + ] + } + ], + [ + { + "if": { + "e": 866 + }, + "then": [ + { + "k": 867 + } + ], + "else": [ + { + "k": 868 + } + ] + } + ], + [], + {} + ], + [ + 1, + "truecar", + 1, + "^https://(www\\.)?truecar\\.com/", + 22, + [ + 876 + ], + [ + { + "e": 877 + } + ], + [ + { + "v": 877 + } + ], + [ + { + "h": 876 + } + ], + [], + {} + ], + [ + 1, + "twitch.tv", + 2, + "^https?://(www\\.)?twitch\\.tv", + 22, + [ + 889 + ], + [ + { + "e": 890 + } + ], + [ + { + "v": 890 + } + ], + [ + { + "h": 891 + }, + { + "k": 892 + }, + { + "w": 893 + }, + { + "all": true, + "optional": true, + "k": 894 + }, + { + "c": 895 + }, + { + "check": "none", + "wv": 896 + } + ], + [], + {} + ], + [ + 1, + "twitter", + 2, + "^https://([a-z0-9-]+\\.)?(twitter|x)\\.com/", + 22, + [ + 897 + ], + [ + { + "e": 898 + } + ], + [ + { + "v": 898 + } + ], + [ + { + "c": 899 + } + ], + [], + {} + ], + [ + 1, + "unicourt", + 1, + "^https://(www\\.)?unicourt\\.com/", + 22, + [ + 105 + ], + [ + { + "e": 105 + } + ], + [ + { + "v": 105 + } + ], + [ + { + "h": 105 + } + ], + [], + {} + ], + [ + 1, + "uswitch.com", + 2, + "^https://(www\\.)?uswitch\\.com/", + 10, + [ + 923 + ], + [ + { + "e": 924 + } + ], + [ + { + "v": 924 + } + ], + [ + { + "c": 925 + } + ], + [], + {} + ], + [ + 1, + "vodafone.de", + 2, + "^https://www\\.vodafone\\.de/", + 22, + [ + 926 + ], + [ + { + "e": 927 + } + ], + [ + { + "v": 928 + } + ], + [ + { + "k": 929 + } + ], + [], + {} + ], + [ + 1, + "wikiwand", + 1, + "^https://(www\\.)?wikiwand\\.com/", + 22, + [ + 947 + ], + [ + { + "e": 947 + } + ], + [ + { + "v": 947 + } + ], + [ + { + "h": 947 + } + ], + [], + {} + ], + [ + 1, + "womenshealthmag-us", + 1, + "^https://(www\\.)?womenshealthmag\\.com/", + 10, + [ + 952 + ], + [ + { + "e": 952 + } + ], + [ + { + "v": 952 + } + ], + [ + { + "h": 952 + } + ], + [], + {} + ], + [ + 1, + "xe.com", + 2, + "^https://www\\.xe\\.com/", + 22, + [ + 961 + ], + [ + { + "e": 961 + } + ], + [ + { + "v": 961 + } + ], + [ + { + "wait": 1000 + }, + { + "c": 962 + }, + { + "c": 963 + } + ], + [ + { + "cc": 964 + } + ], + {} + ], + [ + 1, + "xhamster-eu", + 2, + "^https://(\\w+\\.)?xhamster\\d?\\.com", + 22, + [ + 967 + ], + [ + { + "e": 968 + } + ], + [ + { + "v": 968 + } + ], + [ + { + "c": 969 + } + ], + [], + {} + ], + [ + 1, + "xhamster-us", + 1, + "^https://(\\w+\\.)?xhamster\\d?\\.com", + 22, + [ + 970 + ], + [ + { + "e": 970 + } + ], + [ + { + "v": 971 + } + ], + [ + { + "h": 970 + } + ], + [], + {} + ], + [ + 1, + "xvideos", + 2, + "^https://[a-z]*\\.xvideos\\.com/", + 22, + [], + [ + { + "e": 977 + } + ], + [ + { + "v": 977 + } + ], + [ + { + "c": 978 + } + ], + [], + {} + ], + [ + 1, + "Yahoo", + 2, + "^https://consent\\.yahoo\\.com/v2/", + 22, + [ + 438 + ], + [ + { + "e": 979 + } + ], + [ + { + "v": 979 + } + ], + [ + { + "c": 980 + } + ], + [], + {} + ], + [ + 1, + "zentralruf-de", + 2, + "^https://(www\\.)?zentralruf\\.de", + 22, + [ + 994 + ], + [ + { + "e": 994 + } + ], + [ + { + "v": 994 + } + ], + [ + { + "c": 995 + } + ], + [], + {} + ], + [ + 1, + "zinio", + 0, + "^https://(www\\.)?zinio\\.com/", + 22, + [], + [ + { + "e": 996 + } + ], + [ + { + "v": 996 + } + ], + [ + { + "c": 997 + }, + { + "c": 998 + } + ], + [ + { + "cc": 999 + } + ], + {} + ] + ], + "index": { + "genericRuleRange": [ + 0, + 183 + ], + "frameRuleRange": [ + 182, + 213 + ], + "specificRuleRange": [ + 183, + 2753 + ], + "genericStringEnd": 702, + "frameStringEnd": 741 + } + } + }, + "state": "enabled", + "features": { + "filterlist": { + "state": "disabled" + }, + "heuristicAction": { + "state": "enabled", + "cohorts": [ + { + "name": "control", + "weight": 1 + }, + { + "name": "treatment", + "weight": 1 + } + ] + } + }, + "hash": "3bc2f785c6c3d1f0865f95c17bbafeb9" + }, + "autofillBreakageReporter": { + "state": "disabled", + "settings": { + "monitorIntervalDays": 42 + }, + "exceptions": [], + "hash": "ebf35854bdf33091c165b35d418d5707" + }, + "autofillService": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "autofillSurveys": { + "state": "enabled", + "settings": {}, + "exceptions": [], + "hash": "26d319ff4b2f43012a287b5f35a8db3a" + }, + "autofill": { + "exceptions": [ + { + "domain": "roll20.net" + } + ], + "state": "enabled", + "features": { + "deduplicateLoginsOnImport": { + "state": "enabled" + }, + "unknownUsernameCategorization": { + "state": "enabled" + }, + "passwordVariantCategorization": { + "state": "enabled" + }, + "credentialsImportPromotion": { + "state": "enabled" + }, + "credentialsImportPromotionForExistingUsers": { + "state": "enabled" + }, + "partialFormSaves": { + "state": "enabled" + }, + "siteSpecificFixes": { + "state": "enabled", + "settings": { + "formTypeSettings": [], + "inputTypeSettings": [], + "formBoundarySelector": "", + "failsafeSettings": {}, + "domains": [ + { + "domain": [ + "ring.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "body > main > section > form:nth-child(2)", + "type": "signup" + } + } + ] + }, + { + "domain": [ + "coolors.co" + ], + "patchSettings": [ + { + "path": "/failsafeSettings/maxInputsPerPage", + "op": "add", + "value": 110 + } + ] + }, + { + "domain": [ + "www.joinblvd.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "blvd-wizard-step form", + "type": "signup" + } + } + ] + }, + { + "domain": [ + "alibris.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "form[action*=\"Guest\"]", + "type": "signup" + } + }, + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "form[action*=\"CreateAccount\"]", + "type": "signup" + } + } + ] + }, + { + "domain": [ + "areaclientes.orange.es" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "form", + "type": "login" + } + } + ] + }, + { + "domain": [ + "estore.archives.gov", + "localhost" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "fieldset[id='ucContentMiddleCenter_fldLogin']", + "type": "login" + } + } + ] + }, + { + "domain": [ + "zendesk.com", + "localhost" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "#\\:r0\\:\\-\\-input", + "type": "credentials.username" + } + } + ] + }, + { + "domain": [ + "cvs.com" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "profile-lookup[app-name='account-login'] input[type='text']", + "type": "credentials.username" + } + } + ] + }, + { + "domain": [ + "att.com" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "input[name='Expiration Month']", + "type": "creditCards.expiration" + } + } + ] + }, + { + "domain": [ + "gamestop.com" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "input[name='dwfrm_profile_customer_email']", + "type": "identities.emailAddress" + } + }, + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "input[name='dwfrm_profile_login_password']", + "type": "credentials.password.new" + } + } + ] + }, + { + "domain": [ + "asana.com" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "input.TextInputBase.TokenizerInput-input[data-testid='tokenizer-input'][placeholder='Name or email']", + "type": "unknown" + } + } + ] + }, + { + "domain": [ + "portal.vectorsecurity.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "form[method='post'][action='/index']", + "type": "login" + } + } + ] + }, + { + "domain": [ + "reddit.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "rpl-modal-card.settings-row-modal-card[id*='settings-mfa-enable-password']", + "type": "login" + } + } + ] + }, + { + "domain": [ + "netflix.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "div[data-uia='web-login-form']", + "type": "login" + } + }, + { + "path": "/formBoundarySelector", + "op": "replace", + "value": "div[data-uia='web-login-form']" + } + ] + }, + { + "domain": [ + "aa.com" + ], + "patchSettings": [ + { + "path": "/formBoundarySelector", + "op": "replace", + "value": "adc-card.adc-card" + } + ] + }, + { + "domain": [ + "bet365.bet.br", + "bet365.com" + ], + "patchSettings": [ + { + "path": "/formBoundarySelector", + "op": "replace", + "value": "div[style*=transform] > div" + } + ] + }, + { + "domain": [ + "order.yodobashi.com" + ], + "patchSettings": [ + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": ".loginSelectUnit.slctInputUnit", + "type": "login" + } + }, + { + "path": "/formBoundarySelector", + "op": "replace", + "value": ".loginSelectUnit.slctInputUnit" + } + ] + }, + { + "domain": [ + "accounts.google.com" + ], + "patchSettings": [ + { + "path": "/formBoundarySelector", + "op": "replace", + "value": "c-wiz > main" + }, + { + "path": "/formTypeSettings/-", + "op": "add", + "value": { + "selector": "c-wiz[data-p*=ServiceLogin] > main", + "type": "login" + } + } + ] + }, + { + "domain": [ + "challenge.spotify.com" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "input[inputmode=\"numeric\"]", + "type": "unknown" + } + } + ] + }, + { + "domain": [ + "login.coinbase.com" + ], + "patchSettings": [ + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "input[data-testid='unified-login-email-prompt-input']", + "type": "credentials.username" + } + }, + { + "path": "/inputTypeSettings/-", + "op": "add", + "value": { + "selector": "span[data-testid='input-interactable-area'] input[type='email']", + "type": "identities.emailAddress" + } + } + ] + } + ] + } + } + }, + "hash": "78e86b221ecd6863a9d7fdd2d1416c09" + }, + "backgroundAgentPixelTest": { + "state": "enabled", + "exceptions": [], + "features": { + "pixelTest": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 10 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + } + } + }, + "hash": "91e54b0d57fbf1cf8668c9a929631432" + }, + "blockList": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "bookmarksSorting": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "bookmarks": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "breakageReporting": { + "state": "enabled", + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "hash": "db4ceca40cab4e890eb42c7f655c5ff4" + }, + "brokenSitePrompt": { + "state": "enabled", + "exceptions": [], + "settings": { + "maxDismissStreak": 3, + "dismissStreakResetDays": 30, + "coolDownDays": 7 + }, + "hash": "7ff56afca8279353caaa7da24ab31e28" + }, + "brokenSiteReportExperiment": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "brokerProtection": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "burn": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "changeOmnibarPosition": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "clickToLoad": { + "exceptions": [ + { + "domain": "beatsense.com" + }, + { + "domain": "discogs.com" + }, + { + "domain": "duckduckgo.com" + }, + { + "domain": "khanacademy.org" + }, + { + "domain": "last.fm" + }, + { + "domain": "turntable.fm" + }, + { + "domain": "www.google.ad" + }, + { + "domain": "www.google.ae" + }, + { + "domain": "www.google.al" + }, + { + "domain": "www.google.am" + }, + { + "domain": "www.google.as" + }, + { + "domain": "www.google.at" + }, + { + "domain": "www.google.az" + }, + { + "domain": "www.google.ba" + }, + { + "domain": "www.google.be" + }, + { + "domain": "www.google.bf" + }, + { + "domain": "www.google.bg" + }, + { + "domain": "www.google.bi" + }, + { + "domain": "www.google.bj" + }, + { + "domain": "www.google.bs" + }, + { + "domain": "www.google.bt" + }, + { + "domain": "www.google.by" + }, + { + "domain": "www.google.ca" + }, + { + "domain": "www.google.cat" + }, + { + "domain": "www.google.cd" + }, + { + "domain": "www.google.cf" + }, + { + "domain": "www.google.cg" + }, + { + "domain": "www.google.ch" + }, + { + "domain": "www.google.ci" + }, + { + "domain": "www.google.cl" + }, + { + "domain": "www.google.cm" + }, + { + "domain": "www.google.cn" + }, + { + "domain": "www.google.co.ao" + }, + { + "domain": "www.google.co.bw" + }, + { + "domain": "www.google.co.ck" + }, + { + "domain": "www.google.co.cr" + }, + { + "domain": "www.google.co.id" + }, + { + "domain": "www.google.co.il" + }, + { + "domain": "www.google.co.in" + }, + { + "domain": "www.google.co.jp" + }, + { + "domain": "www.google.co.ke" + }, + { + "domain": "www.google.co.kr" + }, + { + "domain": "www.google.co.ls" + }, + { + "domain": "www.google.co.ma" + }, + { + "domain": "www.google.co.mz" + }, + { + "domain": "www.google.co.nz" + }, + { + "domain": "www.google.co.th" + }, + { + "domain": "www.google.co.tz" + }, + { + "domain": "www.google.co.ug" + }, + { + "domain": "www.google.co.uk" + }, + { + "domain": "www.google.co.uz" + }, + { + "domain": "www.google.co.ve" + }, + { + "domain": "www.google.co.vi" + }, + { + "domain": "www.google.co.za" + }, + { + "domain": "www.google.co.zm" + }, + { + "domain": "www.google.co.zw" + }, + { + "domain": "www.google.com" + }, + { + "domain": "www.google.com.af" + }, + { + "domain": "www.google.com.ag" + }, + { + "domain": "www.google.com.ai" + }, + { + "domain": "www.google.com.ar" + }, + { + "domain": "www.google.com.au" + }, + { + "domain": "www.google.com.bd" + }, + { + "domain": "www.google.com.bh" + }, + { + "domain": "www.google.com.bn" + }, + { + "domain": "www.google.com.bo" + }, + { + "domain": "www.google.com.br" + }, + { + "domain": "www.google.com.bz" + }, + { + "domain": "www.google.com.co" + }, + { + "domain": "www.google.com.cu" + }, + { + "domain": "www.google.com.cy" + }, + { + "domain": "www.google.com.do" + }, + { + "domain": "www.google.com.ec" + }, + { + "domain": "www.google.com.eg" + }, + { + "domain": "www.google.com.et" + }, + { + "domain": "www.google.com.fj" + }, + { + "domain": "www.google.com.gh" + }, + { + "domain": "www.google.com.gi" + }, + { + "domain": "www.google.com.gt" + }, + { + "domain": "www.google.com.hk" + }, + { + "domain": "www.google.com.jm" + }, + { + "domain": "www.google.com.kh" + }, + { + "domain": "www.google.com.kw" + }, + { + "domain": "www.google.com.lb" + }, + { + "domain": "www.google.com.ly" + }, + { + "domain": "www.google.com.mm" + }, + { + "domain": "www.google.com.mt" + }, + { + "domain": "www.google.com.mx" + }, + { + "domain": "www.google.com.my" + }, + { + "domain": "www.google.com.na" + }, + { + "domain": "www.google.com.ng" + }, + { + "domain": "www.google.com.ni" + }, + { + "domain": "www.google.com.np" + }, + { + "domain": "www.google.com.om" + }, + { + "domain": "www.google.com.pa" + }, + { + "domain": "www.google.com.pe" + }, + { + "domain": "www.google.com.pg" + }, + { + "domain": "www.google.com.ph" + }, + { + "domain": "www.google.com.pk" + }, + { + "domain": "www.google.com.pr" + }, + { + "domain": "www.google.com.py" + }, + { + "domain": "www.google.com.qa" + }, + { + "domain": "www.google.com.sa" + }, + { + "domain": "www.google.com.sb" + }, + { + "domain": "www.google.com.sg" + }, + { + "domain": "www.google.com.sl" + }, + { + "domain": "www.google.com.sv" + }, + { + "domain": "www.google.com.tj" + }, + { + "domain": "www.google.com.tr" + }, + { + "domain": "www.google.com.tw" + }, + { + "domain": "www.google.com.ua" + }, + { + "domain": "www.google.com.uy" + }, + { + "domain": "www.google.com.vc" + }, + { + "domain": "www.google.com.vn" + }, + { + "domain": "www.google.cv" + }, + { + "domain": "www.google.cz" + }, + { + "domain": "www.google.de" + }, + { + "domain": "www.google.dj" + }, + { + "domain": "www.google.dk" + }, + { + "domain": "www.google.dm" + }, + { + "domain": "www.google.dz" + }, + { + "domain": "www.google.ee" + }, + { + "domain": "www.google.es" + }, + { + "domain": "www.google.fi" + }, + { + "domain": "www.google.fm" + }, + { + "domain": "www.google.fr" + }, + { + "domain": "www.google.ga" + }, + { + "domain": "www.google.ge" + }, + { + "domain": "www.google.gg" + }, + { + "domain": "www.google.gl" + }, + { + "domain": "www.google.gm" + }, + { + "domain": "www.google.gr" + }, + { + "domain": "www.google.gy" + }, + { + "domain": "www.google.hn" + }, + { + "domain": "www.google.hr" + }, + { + "domain": "www.google.ht" + }, + { + "domain": "www.google.hu" + }, + { + "domain": "www.google.ie" + }, + { + "domain": "www.google.im" + }, + { + "domain": "www.google.iq" + }, + { + "domain": "www.google.is" + }, + { + "domain": "www.google.it" + }, + { + "domain": "www.google.je" + }, + { + "domain": "www.google.jo" + }, + { + "domain": "www.google.kg" + }, + { + "domain": "www.google.ki" + }, + { + "domain": "www.google.kz" + }, + { + "domain": "www.google.la" + }, + { + "domain": "www.google.li" + }, + { + "domain": "www.google.lk" + }, + { + "domain": "www.google.lt" + }, + { + "domain": "www.google.lu" + }, + { + "domain": "www.google.lv" + }, + { + "domain": "www.google.md" + }, + { + "domain": "www.google.me" + }, + { + "domain": "www.google.mg" + }, + { + "domain": "www.google.mk" + }, + { + "domain": "www.google.ml" + }, + { + "domain": "www.google.mn" + }, + { + "domain": "www.google.ms" + }, + { + "domain": "www.google.mu" + }, + { + "domain": "www.google.mv" + }, + { + "domain": "www.google.mw" + }, + { + "domain": "www.google.ne" + }, + { + "domain": "www.google.nl" + }, + { + "domain": "www.google.no" + }, + { + "domain": "www.google.nr" + }, + { + "domain": "www.google.nu" + }, + { + "domain": "www.google.pl" + }, + { + "domain": "www.google.pn" + }, + { + "domain": "www.google.ps" + }, + { + "domain": "www.google.pt" + }, + { + "domain": "www.google.ro" + }, + { + "domain": "www.google.rs" + }, + { + "domain": "www.google.ru" + }, + { + "domain": "www.google.rw" + }, + { + "domain": "www.google.sc" + }, + { + "domain": "www.google.se" + }, + { + "domain": "www.google.sh" + }, + { + "domain": "www.google.si" + }, + { + "domain": "www.google.sk" + }, + { + "domain": "www.google.sm" + }, + { + "domain": "www.google.sn" + }, + { + "domain": "www.google.so" + }, + { + "domain": "www.google.sr" + }, + { + "domain": "www.google.st" + }, + { + "domain": "www.google.td" + }, + { + "domain": "www.google.tg" + }, + { + "domain": "www.google.tl" + }, + { + "domain": "www.google.tm" + }, + { + "domain": "www.google.tn" + }, + { + "domain": "www.google.to" + }, + { + "domain": "www.google.tt" + }, + { + "domain": "www.google.vg" + }, + { + "domain": "www.google.vu" + }, + { + "domain": "www.google.ws" + }, + { + "domain": "freenom.com" + }, + { + "domain": "isra.org" + }, + { + "domain": "iamexpat.nl" + }, + { + "domain": "pocketbook.digital" + }, + { + "domain": "vinted.at" + }, + { + "domain": "vinted.be" + }, + { + "domain": "vinted.com" + }, + { + "domain": "vinted.co.uk" + }, + { + "domain": "vinted.cz" + }, + { + "domain": "vinted.de" + }, + { + "domain": "vinted.dk" + }, + { + "domain": "vinted.es" + }, + { + "domain": "vinted.fi" + }, + { + "domain": "vinted.fr" + }, + { + "domain": "vinted.gr" + }, + { + "domain": "vinted.hr" + }, + { + "domain": "vinted.hu" + }, + { + "domain": "vinted.it" + }, + { + "domain": "vinted.lt" + }, + { + "domain": "vinted.lu" + }, + { + "domain": "vinted.nl" + }, + { + "domain": "vinted.pl" + }, + { + "domain": "vinted.pt" + }, + { + "domain": "vinted.ro" + }, + { + "domain": "vinted.se" + }, + { + "domain": "vinted.sk" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "tinder.com" + }, + { + "domain": "zoosk.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "Facebook, Inc.": { + "ruleActions": [ + "block-ctl-fb" + ], + "state": "enabled" + }, + "Youtube": { + "ruleActions": [ + "block-ctl-yt" + ], + "state": "disabled" + } + }, + "state": "enabled", + "minSupportedVersion": "1.93.0", + "hash": "3b3a01dcae80aa0595a4bdd34589f4b0" + }, + "clickToPlay": { + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "Facebook": { + "clicksBeforeSimpleVersion": 3, + "ruleActions": [ + "block-ctl-fb" + ], + "state": "disabled" + } + }, + "state": "enabled", + "hash": "b7004a7afdf5c6a3fe89a3f1111ee246" + }, + "clientBrandHint": { + "exceptions": [], + "settings": { + "domains": [] + }, + "state": "disabled", + "hash": "d35dd75140cdfe166762013e59eb076d" + }, + "combinedPermissionView": { + "state": "internal", + "exceptions": [], + "hash": "f1daaefe788583c2a00d7d19a23864a7" + }, + "contentBlocking": { + "state": "enabled", + "exceptions": [ + { + "domain": "strava.com" + }, + { + "domain": "welt.de" + }, + { + "domain": "optout.aboutads.info" + }, + { + "domain": "optout.networkadvertising.org" + }, + { + "domain": "ads.google.com" + }, + { + "domain": "soranews24.com" + }, + { + "domain": "flexmls.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "wjla.com" + }, + { + "domain": "nintendo.com" + } + ], + "features": { + "tdsNextExperiment004": { + "state": "disabled", + "rollout": { + "steps": [ + { + "percent": 25 + } + ] + }, + "settings": { + "controlUrl": "v6/experiments/202511v1-macos-tds-control.json", + "treatmentUrl": "v6/experiments/202511v1-macos-tds-treatment.json" + }, + "cohorts": [ + { + "name": "control", + "weight": 1 + }, + { + "name": "treatment", + "weight": 1 + } + ] + }, + "tdsNextExperiment005": { + "state": "disabled", + "rollout": { + "steps": [ + { + "percent": 100 + } + ] + }, + "settings": { + "controlUrl": "v6/experiments/202511v2-macos-tds-control.json", + "treatmentUrl": "v6/experiments/202511v2-macos-tds-treatment.json" + }, + "cohorts": [ + { + "name": "control", + "weight": 1 + }, + { + "name": "treatment", + "weight": 1 + } + ] + } + }, + "hash": "58b44b2f08363227dbfb20d4943ef4fc" + }, + "contentScopeExperiments": { + "state": "enabled", + "exceptions": [], + "features": { + "fingerprintingCanvas": { + "state": "disabled", + "rollout": { + "steps": [ + { + "percent": 25 + }, + { + "percent": 100 + } + ] + }, + "cohorts": [ + { + "name": "control", + "weight": 1 + }, + { + "name": "treatment", + "weight": 1 + } + ] + }, + "scriptletExperiment": { + "state": "disabled", + "minSupportedVersion": "1.145.0", + "rollout": { + "steps": [ + { + "percent": 10 + }, + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + }, + "cohorts": [ + { + "name": "control", + "weight": 1 + }, + { + "name": "treatment", + "weight": 1 + } + ] + } + }, + "hash": "96336ca4cc9ce08a59cc305a8998efdb" + }, + "contextualOnboarding": { + "exceptions": [], + "state": "enabled", + "hash": "52857469413a66e8b0c7b00de5589162" + }, + "cookie": { + "settings": { + "trackerCookie": "enabled", + "nonTrackerCookie": "disabled", + "excludedCookieDomains": [ + { + "domain": "accounts.google.com", + "reason": "On some Google sign-in flows, there is an error after entering username and proceeding: 'Your browser has cookies disabled. Make sure that your cookies are enabled and try again.'" + }, + { + "domain": "pay.google.com", + "reason": "After sign-in for Google Pay flows, there is repeated flickering and a loading spinner, preventing the flow from proceeding." + }, + { + "domain": "payments.google.com", + "reason": "After sign-in for Google Pay flows (after flickering is resolved), blocking this causes the loading spinner to spin indefinitely, and the payment flow cannot proceed." + }, + { + "domain": "docs.google.com", + "reason": "Embedded Google docs get into redirect loop if signed into a Google account" + } + ], + "firstPartyTrackerCookiePolicy": { + "threshold": 86400, + "maxAge": 86400 + }, + "firstPartyCookiePolicy": { + "threshold": 604800, + "maxAge": 604800 + }, + "thirdPartyCookieNames": [ + "user_id", + "__Secure-3PAPISID", + "SAPISID", + "APISID" + ] + }, + "exceptions": [ + { + "domain": "nespresso.com" + }, + { + "domain": "optout.aboutads.info" + }, + { + "domain": "optout.networkadvertising.org" + }, + { + "domain": "news.ti.com" + }, + { + "domain": "instructure.com" + }, + { + "domain": "duckduckgo.com" + }, + { + "domain": "cnbc.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "legalandgeneral.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "enabled", + "hash": "d143e4b63f2140eba423e1d5a3ddfdb7" + }, + "customUserAgent": { + "settings": { + "defaultPolicy": "brand", + "defaultSites": [ + { + "domain": "xploretv.at", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/3572" + }, + { + "domain": "chase.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/988" + }, + { + "domain": "web.whatsapp.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1780" + }, + { + "domain": "zalando.fr", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/667" + }, + { + "domain": "canva.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1818" + }, + { + "domain": "53.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1824" + }, + { + "domain": "www.evernote.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1827" + }, + { + "domain": "discord.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1839" + }, + { + "domain": "spectrum.net", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1876" + }, + { + "domain": "web.de", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1931" + }, + { + "domain": "id.seb.se", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/2025" + }, + { + "domain": "xfinity.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2149" + }, + { + "domain": "wix.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2316" + }, + { + "domain": "beta.maps.apple.com", + "reason": "Unsupported browser warning" + }, + { + "domain": "adobe.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2289" + }, + { + "domain": "accounts.google.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1295" + }, + { + "domain": "mail.google.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1295" + }, + { + "domain": "teams.microsoft.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2557" + }, + { + "domain": "maxcomply.app", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2759" + }, + { + "domain": "mercari.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2825" + }, + { + "domain": "mercari.jp", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2825" + }, + { + "domain": "ichard26.github.io", + "reason": "Next PR fetch errors on DDG user agent" + }, + { + "domain": "app.lyssna.com", + "reason": "Unsupported browser message" + }, + { + "domain": "ihg.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2872" + }, + { + "domain": "routenote.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/3055" + }, + { + "domain": "sfr.fr", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/3338" + }, + { + "domain": "doublelist.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/3539" + }, + { + "domain": "getmydisneyvisa.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/3594" + }, + { + "domain": "arcteryx.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/3701" + } + ], + "webViewDefault": [ + { + "domain": "flysas.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1347" + }, + { + "domain": "sas.dk", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1347" + }, + { + "domain": "nationalmssociety.org", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1963" + } + ] + }, + "exceptions": [], + "state": "enabled", + "hash": "c215b4185c47e77358fbcab42c44fd85" + }, + "dbp": { + "state": "enabled", + "features": { + "waitlistBetaActive": { + "state": "enabled" + }, + "waitlist": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 10 + }, + { + "percent": 50 + } + ] + } + }, + "freemium": { + "state": "enabled", + "minSupportedVersion": "1.114.0", + "targets": [ + { + "localeCountry": "US" + } + ] + }, + "remoteBrokerDelivery": { + "state": "enabled", + "minSupportedVersion": "1.140.0" + }, + "emailConfirmationDecoupling": { + "state": "enabled", + "minSupportedVersion": "1.160.0", + "rollout": { + "steps": [ + { + "percent": 5 + }, + { + "percent": 100 + } + ] + } + }, + "clickActionDelayReductionOptimization": { + "state": "enabled", + "minSupportedVersion": "1.171.0" + } + }, + "exceptions": [], + "minSupportedVersion": "1.70.0", + "hash": "dcc3cff9376c397775496c661660fbd4" + }, + "defaultBrowserPrompts": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "delayedWebviewPresentation": { + "state": "internal", + "exceptions": [], + "hash": "f1daaefe788583c2a00d7d19a23864a7" + }, + "disableFireAnimation": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "diskSpaceMonitoring": { + "state": "disabled", + "exceptions": [], + "settings": { + "lowSpaceThresholdMegabytes": 100, + "checkIntervalSeconds": 60 + }, + "hash": "8b0eaad27f84df996883d3751a4ee51f" + }, + "downloadManager": { + "state": "disabled", + "exceptions": [], + "features": { + "alwaysAskWhereToSaveFiles": { + "state": "disabled" + } + }, + "hash": "e3e6f43a2fbbbe333385233ae9da1c80" + }, + "duckAiChatHistory": { + "state": "enabled", + "exceptions": [], + "features": { + "nativeUI": { + "state": "internal" + } + }, + "settings": { + "chatsLocalStorageKeys": [ + "savedAIChats" + ] + }, + "hash": "a8fd7be4941636ee1f8e02985dd2fa9c" + }, + "duckAiDataClearing": { + "state": "enabled", + "exceptions": [], + "settings": { + "chatsLocalStorageKeys": [ + "savedAIChats" + ], + "chatImagesIndexDbNameObjectStoreNamePairs": [ + [ + "savedAIChatData", + "chat-images" + ] + ] + }, + "hash": "d3cf562722e2ac254bf635ba10ab1fc8" + }, + "duckAiListener": { + "state": "enabled", + "settings": { + "additionalCheck": "disabled", + "conditionalChanges": [ + { + "condition": { + "internal": true, + "maxSupportedVersion": "1.160.0" + }, + "patchSettings": [ + { + "op": "replace", + "path": "/additionalCheck", + "value": "enabled" + } + ] + } + ] + }, + "exceptions": [], + "hash": "77c9d65377e1f62b50392fed9d779c7c" + }, + "duckPlayerNative": { + "state": "disabled", + "exceptions": [], + "settings": { + "selectors": { + "adShowing": ".html5-video-player.ad-showing", + "errorContainer": "body", + "signInRequiredError": "[href*=\"//support.google.com/youtube/answer/3037019\"]", + "videoElement": "[full-bleed-player] #player-full-bleed-container video, #player video, video", + "videoElementContainer": "#player-container-id, [full-bleed-player] #player-full-bleed-container .html5-video-player, #player .html5-video-player", + "youtubeError": ".ytp-error" + }, + "domains": [] + }, + "hash": "fe63d25cd34b853d1864117da424cac7" + }, + "duckPlayer": { + "exceptions": [], + "features": { + "pip": { + "state": "enabled" + }, + "autoplay": { + "state": "enabled", + "minSupportedVersion": "1.103.0" + }, + "openInNewTab": { + "state": "enabled", + "minSupportedVersion": "1.101.0" + }, + "customError": { + "state": "enabled", + "minSupportedVersion": "1.128.0", + "settings": { + "signInRequiredSelector": "[href*=\"//support.google.com/youtube/answer/3037019\"]" + } + }, + "nativeUI": { + "state": "disabled" + } + }, + "settings": { + "tryDuckPlayerLink": "https://www.youtube.com/watch?v=yKWIA-Pys4c", + "duckPlayerDisabledHelpPageLink": null, + "youtubePath": "watch", + "youtubeEmbedUrl": "youtube-nocookie.com", + "youTubeUrl": "youtube.com", + "youTubeReferrerHeaders": [ + "Referer" + ], + "youTubeReferrerQueryParams": [ + "embeds_referring_euri" + ], + "youTubeVideoIDQueryParam": "v", + "overlays": { + "youtube": { + "state": "disabled", + "selectors": { + "thumbLink": "a[href^='/watch']", + "excludedRegions": [ + "#playlist", + "ytd-movie-renderer", + "ytd-grid-movie-renderer" + ], + "videoElement": "[full-bleed-player] #player-full-bleed-container video, #player video", + "videoElementContainer": "[full-bleed-player] #player-full-bleed-container .html5-video-player, #player .html5-video-player", + "hoverExcluded": [], + "clickExcluded": [ + "ytd-thumbnail-overlay-toggle-button-renderer" + ], + "allowedEventTargets": [ + ".ytp-inline-preview-scrim", + ".ytd-video-preview", + "#thumbnail-container", + "#video-title-link", + "#video-title", + "video.video-stream.html5-main-video" + ], + "drawerContainer": "body" + }, + "thumbnailOverlays": { + "state": "enabled" + }, + "clickInterception": { + "state": "enabled" + }, + "videoOverlays": { + "state": "enabled" + }, + "videoDrawer": { + "state": "disabled" + } + }, + "serpProxy": { + "state": "disabled" + } + }, + "domains": [ + { + "domain": "www.youtube.com", + "patchSettings": [ + { + "op": "replace", + "path": "/overlays/youtube/state", + "value": "enabled" + } + ] + }, + { + "domain": [ + "duckduckgo.com", + "duck.co" + ], + "patchSettings": [ + { + "op": "replace", + "path": "/overlays/serpProxy/state", + "value": "enabled" + } + ] + }, + { + "domain": "m.youtube.com", + "patchSettings": [ + { + "op": "replace", + "path": "/overlays/youtube/state", + "value": "enabled" + } + ] + } + ] + }, + "state": "enabled", + "hash": "c7a5ccbd3703b92c02b2489bc2316e9e" + }, + "elementHiding": { + "exceptions": [ + { + "domain": "duckduckgo.com" + }, + { + "domain": "duck.co" + }, + { + "domain": "gmx.net" + }, + { + "domain": "web.de" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "wunderground.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "useStrictHideStyleTag": true, + "rules": [ + { + "selector": "[id*='gpt-']", + "type": "hide-empty" + }, + { + "selector": "[class*='gpt-']", + "type": "closest-empty" + }, + { + "selector": "[class*='dfp-']", + "type": "hide-empty" + }, + { + "selector": "[id*='dfp-']", + "type": "hide-empty" + }, + { + "selector": "[id*='dfp_']", + "type": "closest-empty" + }, + { + "selector": "[id*='google_ads_iframe']", + "type": "hide" + }, + { + "selector": "#google_ads", + "type": "hide-empty" + }, + { + "selector": ".adsbygoogle", + "type": "hide-empty" + }, + { + "selector": "[id*='taboola-']", + "type": "hide" + }, + { + "selector": ".taboolaHeight", + "type": "hide" + }, + { + "selector": ".taboola-placeholder", + "type": "hide" + }, + { + "selector": ".adHolder", + "type": "closest-empty" + }, + { + "selector": ".adplaceholder", + "type": "hide-empty" + }, + { + "selector": ".ad-placeholder", + "type": "hide-empty" + }, + { + "selector": "[class*='ad_unit']", + "type": "closest-empty" + }, + { + "selector": "[class^='adunit']", + "type": "hide-empty" + }, + { + "selector": ".ad-unit", + "type": "hide-empty" + }, + { + "selector": ".ad-unit-wrapper", + "type": "hide-empty" + }, + { + "selector": ".column-ad", + "type": "hide-empty" + }, + { + "selector": ".wide-ad", + "type": "hide-empty" + }, + { + "selector": ".ad", + "type": "hide-empty" + }, + { + "selector": ".AD", + "type": "hide-empty" + }, + { + "selector": ".ad-adhesion", + "type": "hide-empty" + }, + { + "selector": ".Ad--empty", + "type": "hide-empty" + }, + { + "selector": "[class^='ad-content']", + "type": "hide-empty" + }, + { + "selector": "[class*='ad-slot_']", + "type": "hide-empty" + }, + { + "selector": "[class*='_ad-slot']", + "type": "hide-empty" + }, + { + "selector": ".ad-block", + "type": "hide-empty" + }, + { + "selector": ".adBox", + "type": "hide-empty" + }, + { + "selector": ".apexAd", + "type": "hide-empty" + }, + { + "selector": ".ad-placement", + "type": "hide-empty" + }, + { + "selector": ".ad-leaderboard", + "type": "closest-empty" + }, + { + "selector": ".leaderboard", + "type": "closest-empty" + }, + { + "selector": "#leaderboard", + "type": "closest-empty" + }, + { + "selector": "#leaderboard-container", + "type": "hide-empty" + }, + { + "selector": ".leaderboard_wrapper", + "type": "hide-empty" + }, + { + "selector": ".banner-leaderboard", + "type": "hide-empty" + }, + { + "selector": ".top-banner", + "type": "hide-empty" + }, + { + "selector": "#top-banner", + "type": "hide-empty" + }, + { + "selector": "#topBanner", + "type": "hide-empty" + }, + { + "selector": ".top-ad", + "type": "hide-empty" + }, + { + "selector": "#top-ad", + "type": "hide" + }, + { + "selector": "#topAd", + "type": "hide-empty" + }, + { + "selector": "#topad", + "type": "hide-empty" + }, + { + "selector": ".ad-banner-container", + "type": "hide-empty" + }, + { + "selector": "#banner_ad", + "type": "hide-empty" + }, + { + "selector": "[class*='bannerAd']", + "type": "hide-empty" + }, + { + "selector": ".banner-placeholder", + "type": "hide-empty" + }, + { + "selector": ".header-ads", + "type": "hide-empty" + }, + { + "selector": ".header-ad-slot", + "type": "hide-empty" + }, + { + "selector": "#credential_picker_container", + "type": "hide" + }, + { + "selector": "#credentials-picker-container", + "type": "hide" + }, + { + "selector": "#credential_picker_iframe", + "type": "hide" + }, + { + "selector": "[id*='google-one-tap-iframe']", + "type": "hide" + }, + { + "selector": "#google-one-tap-popup-container", + "type": "hide" + }, + { + "selector": ".google-one-tap__module", + "type": "hide" + }, + { + "selector": ".google-one-tap-modal-div", + "type": "hide" + }, + { + "selector": ".google-one-tap", + "type": "hide-empty" + }, + { + "selector": ".ad_container", + "type": "closest-empty" + }, + { + "selector": ".ad-container--leaderboard", + "type": "hide-empty" + }, + { + "selector": ".ads_container", + "type": "hide-empty" + }, + { + "selector": ".ad__container", + "type": "closest-empty" + }, + { + "selector": "[class^='ad-container']", + "type": "hide-empty" + }, + { + "selector": "[class*='-ad-container']", + "type": "hide-empty" + }, + { + "selector": ".adcontainer", + "type": "closest-empty" + }, + { + "selector": ".adContainer", + "type": "hide-empty" + }, + { + "selector": ".ad-current", + "type": "hide-empty" + }, + { + "selector": ".ad-frame", + "type": "hide-empty" + }, + { + "selector": ".advertisement", + "type": "closest-empty" + }, + { + "selector": "[class*='advert-']", + "type": "hide-empty" + }, + { + "selector": "[id*='advert-']", + "type": "hide-empty" + }, + { + "selector": "[aria-label='advertisement']", + "type": "hide-empty" + }, + { + "selector": ".inline-ad", + "type": "closest-empty" + }, + { + "selector": ".ads__inline", + "type": "closest-empty" + }, + { + "selector": ".ads__native", + "type": "closest-empty" + }, + { + "selector": ".fixed-slots", + "type": "hide-empty" + }, + { + "selector": ".ad-slot", + "type": "closest-empty" + }, + { + "selector": "#ad-top", + "type": "hide-empty" + }, + { + "selector": "#ad-wrap", + "type": "hide-empty" + }, + { + "selector": ".ad-wrap", + "type": "closest-empty" + }, + { + "selector": ".ad-wrapper", + "type": "closest-empty" + }, + { + "selector": ".ads-wrapper", + "type": "closest-empty" + }, + { + "selector": "[class^='adWrapper']", + "type": "closest-empty" + }, + { + "selector": "[class*='container--ads']", + "type": "hide-empty" + }, + { + "selector": "[class*='page-ad']", + "type": "hide-empty" + }, + { + "selector": "[class*='module__ad']", + "type": "hide-empty" + }, + { + "selector": "[class*='advertising']", + "type": "hide-empty" + }, + { + "selector": "[class*='AdvertisingSlot']", + "type": "hide-empty" + }, + { + "selector": "[class*='AdSlot']", + "type": "hide-empty" + }, + { + "selector": "[class*='werbung']", + "type": "hide-empty" + }, + { + "selector": "[class*='am-bazaar-ad']", + "type": "hide-empty" + }, + { + "selector": ".adBanner", + "type": "hide-empty" + }, + { + "selector": ".adModule", + "type": "hide-empty" + }, + { + "selector": "[class^='Display_displayAd']", + "type": "hide-empty" + }, + { + "selector": "[class^='Display_displayAd']", + "type": "hide-empty" + }, + { + "selector": "#premium_ddb_0", + "type": "hide-empty" + }, + { + "selector": "[class*='ad-zone']", + "type": "hide-empty" + }, + { + "selector": "[data-adunitpath]", + "type": "closest-empty" + }, + { + "selector": "[data-targeting]", + "type": "closest-empty" + }, + { + "selector": "[data-ad-placeholder]", + "type": "closest-empty" + }, + { + "selector": "[data-ad]", + "type": "hide-empty" + }, + { + "selector": ".instream_ad", + "type": "hide-empty" + }, + { + "selector": ".adthrive", + "type": "hide-empty" + }, + { + "selector": ".adthrive-ad", + "type": "hide-empty" + }, + { + "selector": ".adthrive-content", + "type": "hide-empty" + }, + { + "selector": ".arc-ad-wrapper", + "type": "hide-empty" + }, + { + "selector": ".dmpu-ad", + "type": "hide-empty" + }, + { + "selector": "#bfad-slot", + "type": "hide-empty" + }, + { + "selector": ".ezoic-ad", + "type": "hide-empty" + }, + { + "selector": ".ezo_ad", + "type": "hide-empty" + }, + { + "selector": "[data-ez-ph-id]", + "type": "hide-empty" + }, + { + "selector": "#amp_floatingAdDiv", + "type": "hide" + }, + { + "selector": ".bordeaux-slot", + "type": "closest-empty" + }, + { + "selector": ".bordeaux-anchored-container", + "type": "hide-empty" + }, + { + "selector": ".rightAd", + "type": "hide-empty" + }, + { + "selector": ".sponsored-slot", + "type": "hide-empty" + }, + { + "selector": "#ez-content-blocker-container", + "type": "hide" + }, + { + "selector": ".m-balloon-header--ad", + "type": "hide-empty" + }, + { + "selector": ".m-in-content-ad-row", + "type": "hide-empty" + }, + { + "selector": ".clsy-c-advsection", + "type": "hide-empty" + }, + { + "selector": "[class^='DisplayAdvert']", + "type": "closest-empty" + } + ], + "styleTagExceptions": [ + { + "domain": "github.com", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1058" + }, + { + "domain": "pocketbook.digital", + "reason": "https://github.com/duckduckgo/privacy-configuration/issues/1365" + }, + { + "domain": "bsrzepin.pl", + "reason": "https://github.com/duckduckgo/privacy-configuration/pull/2821" + } + ], + "hideTimeouts": [ + 0, + 100, + 300, + 500, + 1000, + 1500, + 2000, + 3000, + 5000 + ], + "unhideTimeouts": [ + 1250, + 2250, + 3250, + 5250 + ], + "mediaAndFormSelectors": "video,canvas,embed,object,audio,map,form,input,textarea,select,option", + "adLabelStrings": [ + "ad", + "advert", + "advert10", + "advertisement", + "advertisements", + "advertisment", + "advertisementclose", + "advertisementadvertisement", + "advertisementcontinue reading the main story", + "advertisement\ncontinue reading the main story", + "advertisement\n\ncontinue reading the main story", + "advertisement - continue reading below", + "advertisement\n\nhide ad", + "advertisementhide ad", + "advertisement - scroll to continue", + "advertisement · scroll to continue", + "advertisement - story continues below", + "advertising", + "advertising\nskip ad", + "advertising\nskip ad\nskip ad\nskip ad", + "ad feedback", + "annonse", + "anzeige", + "close", + "close ad", + "close this ad", + "content continues below", + "x", + "_", + "sponsor message", + "sponsored", + "sponsorisé", + "story continues below advertisement", + "story continues below advertisementadvertisement", + "oglas", + "publicité", + "publicidade", + "- publicidade -", + "reklama", + "skip ad", + "skip advertisement", + "sponsored news", + "continue reading the main story", + "this advertisement has not loaded yet, but your article continues below.", + "story continues below\nthis advertisement has not loaded yet, but your article continues below.", + "upgrade to flickr pro to hide these ads", + "video of the day" + ], + "domains": [ + { + "domain": "10minutemail.com", + "rules": [ + { + "selector": "#secondary_ads", + "type": "hide-empty" + }, + { + "selector": "#vi-smartbanner", + "type": "hide" + } + ] + }, + { + "domain": "3bmeteo.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "#admasthead", + "type": "hide-empty" + }, + { + "selector": "#ads_container", + "type": "hide-empty" + } + ] + }, + { + "domain": "404media.co", + "rules": [ + { + "selector": ".ad-fixed__wrapper", + "type": "hide" + }, + { + "selector": ".post-hero__ad", + "type": "hide" + }, + { + "selector": ".ad-sidebar", + "type": "hide" + } + ] + }, + { + "domain": "9gag.com", + "rules": [ + { + "selector": ".billboard", + "type": "hide-empty" + }, + { + "selector": ".inline-ad-container", + "type": "hide-empty" + }, + { + "selector": ".salt-section", + "type": "hide-empty" + }, + { + "selector": "#top-adhesion", + "type": "hide-empty" + } + ] + }, + { + "domain": "aarp.org", + "rules": [ + { + "selector": "[class*='AdBlock__container___']", + "type": "hide-empty" + } + ] + }, + { + "domain": "abc.es", + "rules": [ + { + "selector": ".voc-advertising", + "type": "hide-empty" + } + ] + }, + { + "domain": "abcnews.go.com", + "rules": [ + { + "selector": ".navigation", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "0px" + } + ] + } + ] + }, + { + "domain": "accuweather.com", + "rules": [ + { + "selector": ".glacier-ad", + "type": "hide-empty" + }, + { + "selector": "#connatix", + "type": "hide-empty" + }, + { + "selector": ".adhesion-header", + "type": "hide-empty" + }, + { + "selector": ".header-placeholder.has-alerts.has-adhesion", + "type": "modify-style", + "values": [ + { + "property": "height", + "value": "76px" + } + ] + } + ] + }, + { + "domain": "acidadeon.com", + "rules": [ + { + "selector": "[class*='mrf-adv']", + "type": "hide-empty" + }, + { + "selector": "[class*='td-block']", + "type": "hide-empty" + } + ] + }, + { + "domain": "advocate.com", + "rules": [ + { + "selector": "[class*='ad_leaderboard_wrap']", + "type": "closest-empty" + }, + { + "selector": "[class*='ad-tag']", + "type": "hide-empty" + }, + { + "selector": ".ad_tag", + "type": "hide-empty" + } + ] + }, + { + "domain": "allgemeine-zeitung.de", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".adSlot", + "type": "hide-empty" + }, + { + "selector": ".adBorder", + "type": "hide-empty" + }, + { + "selector": ".nativeAd", + "type": "closest-empty" + } + ] + }, + { + "domain": "allrecipes.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[id^='mm-ads-']", + "type": "hide-empty" + } + ] + }, + { + "domain": "androidauthority.com", + "rules": [ + { + "selector": "div[data-ad-type]", + "type": "closest-empty" + } + ] + }, + { + "domain": "androidpolice.com", + "rules": [ + { + "selector": "[class*='ad-zone']", + "type": "hide" + } + ] + }, + { + "domain": "apnews.com", + "rules": [ + { + "selector": ".proper-dynamic-insertion", + "type": "closest-empty" + }, + { + "selector": ".Page-header-leaderboardAd", + "type": "hide-empty" + }, + { + "selector": ".SovrnAd", + "type": "hide-empty" + } + ] + }, + { + "domain": "asuracomic.net", + "rules": [ + { + "selector": ".h12container", + "type": "hide" + } + ] + }, + { + "domain": "autoby.jp", + "rules": [ + { + "selector": ".ad-center", + "type": "hide-empty" + } + ] + }, + { + "domain": "avito.ru", + "rules": [ + { + "selector": "[class*='advert-mimicry-block']", + "type": "hide" + } + ] + }, + { + "domain": "backpacker.com", + "rules": [ + { + "selector": ".prestitial-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "bbc.com", + "rules": [ + { + "selector": ".dotcom-ad", + "type": "closest-empty" + }, + { + "selector": ".leaderboard-ad-placeholder", + "type": "closest-empty" + } + ] + }, + { + "domain": "bestbuy.com", + "rules": [ + { + "selector": "#credential_picker_container", + "type": "override" + }, + { + "selector": ".shop-display-ad", + "type": "hide-empty" + }, + { + "selector": ".row.full-bleed-row", + "type": "hide-empty" + } + ] + }, + { + "domain": "beverfood.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".adsbygoogle", + "type": "override" + } + ] + }, + { + "domain": "bild.de", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[id^='mrec']", + "type": "hide-empty" + }, + { + "selector": "#superbanner", + "type": "hide-empty" + } + ] + }, + { + "domain": "birminghammail.co.uk", + "rules": [ + { + "selector": "[data-tmdatatrack='non-content-unit']", + "type": "hide" + }, + { + "selector": ".iSMTT.sticky ~ header", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "0" + } + ] + } + ] + }, + { + "domain": "bizjournals.com", + "rules": [ + { + "selector": ".adwrap", + "type": "closest-empty" + } + ] + }, + { + "domain": "blackhatworld.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "bleacherreport.com", + "rules": [ + { + "selector": ".br-ad-renderer", + "type": "hide-empty" + }, + { + "selector": ".br-ad-wrapper", + "type": "closest-empty" + } + ] + }, + { + "domain": "bleedcubbieblue.com", + "rules": [ + { + "selector": "[class*='ad_unit']", + "type": "override" + } + ] + }, + { + "domain": "blick.ch", + "rules": [ + { + "selector": "[id*='appnexus-placement-']", + "type": "hide-empty" + } + ] + }, + { + "domain": "bloomberg.com", + "rules": [ + { + "selector": ".unsupported-browser-notification-container", + "type": "hide" + }, + { + "selector": "[class^='FullWidthAd']", + "type": "hide-empty" + }, + { + "selector": "[data-testid='sparkle-ad']", + "type": "closest-empty" + } + ] + }, + { + "domain": "bloomberglaw.com", + "rules": [ + { + "selector": "[class^='HeaderAdSpot_']", + "type": "hide-empty" + } + ] + }, + { + "domain": "boardgamegeek.com", + "rules": [ + { + "selector": "gg-home-leaderboard-ad", + "type": "hide-empty" + }, + { + "selector": "gg-leaderboard-lg-ad", + "type": "hide-empty" + }, + { + "selector": "gg-support-leaderboard-ad", + "type": "hide-empty" + }, + { + "selector": "gg-post-inline-ad", + "type": "hide-empty" + }, + { + "selector": "[hide-ad-block]", + "type": "hide-empty" + } + ] + }, + { + "domain": "bostonglobe.com", + "rules": [ + { + "selector": ".arc_ad", + "type": "closest-empty" + } + ] + }, + { + "domain": "businessinsider.com", + "rules": [ + { + "selector": ".in-post-sticky", + "type": "hide-empty" + }, + { + "selector": ".subnav-ad-layout", + "type": "hide-empty" + } + ] + }, + { + "domain": "canalrcn.com", + "rules": [ + { + "selector": ".pauta-en-vivo-mobile", + "type": "hide-empty" + } + ] + }, + { + "domain": "carandclassic.com", + "rules": [ + { + "selector": "[id*='advert-']", + "type": "override" + } + ] + }, + { + "domain": "cbc.ca", + "rules": [ + { + "selector": ".ad-risingstar-container", + "type": "hide-empty" + }, + { + "selector": ".bigBoxContainer", + "type": "hide-empty" + }, + { + "selector": ".stickyRailAd", + "type": "hide-empty" + } + ] + }, + { + "domain": "cbssports.com", + "rules": [ + { + "selector": ".leaderboard-wrap", + "type": "hide-empty" + }, + { + "selector": ".skybox-top-wrapper", + "type": "hide-empty" + }, + { + "selector": ".fixed-skybox-placeholder", + "type": "hide-empty" + } + ] + }, + { + "domain": "chase.com", + "rules": [ + { + "selector": ".browserupdate", + "type": "hide" + } + ] + }, + { + "domain": "cleartax.in", + "rules": [ + { + "selector": "#credential_picker_container", + "type": "override" + } + ] + }, + { + "domain": "clevelandclinic.org", + "rules": [ + { + "selector": "[data-identity='adhesive-ad']", + "type": "closest-empty" + }, + { + "selector": "[data-identity='billboard-ad']", + "type": "hide" + }, + { + "selector": "[data-identity='leaderboard-ad']", + "type": "hide" + }, + { + "selector": "[data-identity='sticky-leaderboard-ad']", + "type": "hide" + }, + { + "selector": "[data-identity='leaderboard-ad-page-header-placeholder']", + "type": "hide" + } + ] + }, + { + "domain": "cnbc.com", + "rules": [ + { + "selector": ".TopBanner-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "cnn.com", + "rules": [ + { + "selector": ".ad-slot-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "coindesk.com", + "rules": [ + { + "selector": ".animate-shimmer", + "type": "hide" + }, + { + "selector": "[data-freestar-ad='true']", + "type": "closest-empty" + }, + { + "selector": "[class*='--ad-height']", + "type": "hide" + } + ] + }, + { + "domain": "coingecko.com", + "rules": [ + { + "selector": "[data-target='ads.banner']", + "type": "hide-empty" + } + ] + }, + { + "domain": "comicbook.com", + "rules": [ + { + "selector": "body:not(.skybox-loaded)>header", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "0px" + } + ] + }, + { + "selector": "body.pcm-public:not(.skybox-loaded)", + "type": "modify-style", + "values": [ + { + "property": "margin-top", + "value": "90px" + } + ] + } + ] + }, + { + "domain": "cookingclassy.com", + "rules": [ + { + "selector": ".adthrive", + "type": "override" + } + ] + }, + { + "domain": "corriere.it", + "rules": [ + { + "selector": "[id^='rcsad_']", + "type": "hide-empty" + }, + { + "selector": ".bck-adv", + "type": "hide-empty" + } + ] + }, + { + "domain": "cricbuzz.com", + "rules": [ + { + "selector": "#main-header.top-12", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "0rem" + } + ] + }, + { + "selector": "#main-nav.top-24", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "3rem" + } + ] + } + ] + }, + { + "domain": "cubbyathome.com", + "rules": [ + { + "selector": ".PostDesktopStickyFooter", + "type": "hide-empty" + } + ] + }, + { + "domain": "dailyboulder.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".site-access-popup", + "type": "hide-empty" + }, + { + "selector": ".site-access-inner", + "type": "hide-empty" + }, + { + "selector": ".top-site-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "dailyherald.com", + "rules": [ + { + "selector": ".instoryAdBlock", + "type": "hide" + } + ] + }, + { + "domain": "dailymail.co.uk", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[class*='dmg-ads']", + "type": "hide-empty" + }, + { + "selector": ".mol-ads-label-container", + "type": "closest-empty" + }, + { + "selector": "#stickyAdsContainer", + "type": "hide-empty" + } + ] + }, + { + "domain": "dailymotion.com", + "rules": [ + { + "selector": "[class^='DisplayAd']", + "type": "hide-empty" + } + ] + }, + { + "domain": "dallasnews.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[class^='dmnc_features-ads']", + "type": "hide-empty" + }, + { + "selector": ".adhesiveAdWrapper", + "type": "hide-empty" + }, + { + "selector": "[data-cy='Ad']", + "type": "hide-empty" + }, + { + "selector": "[data-cy='InstreamPlayer']", + "type": "hide-empty" + }, + { + "selector": ".bg-neutral-grey-4.items-center", + "type": "hide-empty" + } + ] + }, + { + "domain": "deseret.com", + "rules": [ + { + "selector": "[data-targeting]", + "type": "override" + } + ] + }, + { + "domain": "dexerto.com", + "rules": [ + { + "selector": "#leaderboard-top-adhesion", + "type": "closest-empty" + }, + { + "selector": "[data-cy='Ad']", + "type": "closest-empty" + }, + { + "selector": "[data-cy='VidazooPlayer']", + "type": "closest-empty" + } + ] + }, + { + "domain": "digitaltrends.com", + "rules": [ + { + "selector": ".b-connatix", + "type": "hide" + }, + { + "selector": ".dtads-location", + "type": "hide-empty" + } + ] + }, + { + "domain": "doodle.com", + "rules": [ + { + "selector": "[data-testid*='ads-layout-placement']", + "type": "hide" + }, + { + "selector": "#sticky-footer-ads", + "type": "hide" + }, + { + "selector": ".jupiter-placement-middle-module_content__Z4Fc0", + "type": "hide-empty" + }, + { + "selector": ".jupiter-placement-middle_content__mxFQ3", + "type": "hide-empty" + }, + { + "selector": ".layout_sticky-slot-content__ExtEH", + "type": "hide" + } + ] + }, + { + "domain": "dpreview.com", + "rules": [ + { + "selector": ".ad-wrapper", + "type": "override" + } + ] + }, + { + "domain": "drugs.com", + "rules": [ + { + "selector": ".topbanner-wrap", + "type": "hide" + }, + { + "selector": ".display-ad-leaderboard", + "type": "hide-empty" + }, + { + "selector": ".display-ad-wrapper", + "type": "hide-empty" + }, + { + "selector": ".display-ad-wrap", + "type": "hide-empty" + }, + { + "selector": "[id*='ddc-sidebox-ad-stacked-wrap']", + "type": "hide-empty" + } + ] + }, + { + "domain": "e-chords.com", + "rules": [ + { + "selector": ".adscifra", + "type": "hide" + }, + { + "selector": ".banner", + "type": "hide-empty" + }, + { + "selector": "#banner", + "type": "hide-empty" + } + ] + }, + { + "domain": [ + "ebay.com", + "ebay.ca", + "ebay.co.uk", + "ebay.de", + "ebay.fr", + "ebay.com.au" + ], + "rules": [ + { + "selector": "#g-yolo-overlay-holder", + "type": "hide" + } + ] + }, + { + "domain": [ + "ebay-kleinanzeigen.de", + "kleinanzeigen.de" + ], + "rules": [ + { + "selector": "[data-liberty-position-name]", + "type": "hide" + }, + { + "selector": ".bannerplacement-fullwidth", + "type": "hide-empty" + }, + { + "selector": ".bannerplacement-sticky", + "type": "hide-empty" + } + ] + }, + { + "domain": "economist.com", + "rules": [ + { + "selector": "[class^='adComponent']", + "type": "hide-empty" + } + ] + }, + { + "domain": "elpais.com", + "rules": [ + { + "selector": ".obne_ob", + "type": "hide-empty" + } + ] + }, + { + "domain": "eniro.se", + "rules": [ + { + "selector": "#page .e-banner.e-embed-aware", + "type": "hide" + } + ] + }, + { + "domain": "eonline.com", + "rules": [ + { + "selector": "[class*='mps-']", + "type": "closest-empty" + } + ] + }, + { + "domain": "eporner.com", + "rules": [ + { + "selector": "#admobiletop", + "type": "hide" + } + ] + }, + { + "domain": "essentiallysports.com", + "rules": [ + { + "selector": ".es-ad-space-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "eurogamer.net", + "rules": [ + { + "selector": "#sticky_leaderboard", + "type": "hide-empty" + }, + { + "selector": ".primis_wrapper", + "type": "hide" + }, + { + "selector": ".autoad", + "type": "hide-empty" + } + ] + }, + { + "domain": "examiner.com.au", + "rules": [ + { + "selector": "[class*='flex items']", + "type": "hide-empty" + }, + { + "selector": ".hidden", + "type": "hide-empty" + } + ] + }, + { + "domain": "express.de", + "rules": [ + { + "selector": ".dm-slot", + "type": "hide-empty" + } + ] + }, + { + "domain": "express.co.uk", + "rules": [ + { + "selector": ".superbanner", + "type": "hide-empty" + }, + { + "selector": "#ad-vip-article", + "type": "hide-empty" + }, + { + "selector": ".taboola-above-article", + "type": "hide" + }, + { + "selector": "#taboola-ad", + "type": "hide" + }, + { + "selector": ".viafoura-standalone-mpu", + "type": "hide" + } + ] + }, + { + "domain": "expressnews.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "facebook.com", + "rules": [ + { + "selector": ".xnw9j1v:has(div > a[href='https://www.facebook.com/help/597429858389632/'])", + "type": "hide" + } + ] + }, + { + "domain": "fandom.com", + "rules": [ + { + "selector": ".top-ads-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "flickr.com", + "rules": [ + { + "selector": ".feed-b", + "type": "hide-empty" + }, + { + "selector": "[class*='-ad-container']", + "type": "override" + } + ] + }, + { + "domain": "focus.de", + "rules": [ + { + "selector": "[id*='M_CONTENTAD']", + "type": "closest-empty" + }, + { + "selector": "[id*='M_TRSCT_hor']", + "type": "closest-empty" + }, + { + "selector": "[id*='M_FLYCPT_hor']", + "type": "closest-empty" + }, + { + "selector": "#tfm_admanagerTeaser", + "type": "closest-empty" + }, + { + "selector": ".cls_slot_xxoutstreamxx", + "type": "hide-empty" + } + ] + }, + { + "domain": "foodnetwork.co.uk", + "rules": [ + { + "selector": ".bg-bodyBg", + "type": "hide-empty" + }, + { + "selector": ".module--ad-module-primary", + "type": "hide-empty" + }, + { + "selector": "#mtf-1", + "type": "closest-empty" + }, + { + "selector": "#btf-1", + "type": "closest-empty" + } + ] + }, + { + "domain": "football365.com", + "rules": [ + { + "selector": ".bs-block", + "type": "closest-empty" + } + ] + }, + { + "domain": "forbes.com", + "rules": [ + { + "selector": "fbs-ad", + "type": "closest-empty" + }, + { + "selector": ".top-ad-container", + "type": "hide" + }, + { + "selector": ".vestpocket", + "type": "hide-empty" + } + ] + }, + { + "domain": "fortune.com", + "rules": [ + { + "selector": "[id*='Leaderboard']", + "type": "closest-empty" + }, + { + "selector": "[id*='RightRailFlex']", + "type": "closest-empty" + }, + { + "selector": "[id*='InStream']", + "type": "closest-empty" + } + ] + }, + { + "domain": "foxnews.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".vendor-unit", + "type": "hide-empty" + }, + { + "selector": ".pre-content", + "type": "hide-empty" + }, + { + "selector": "[class*='rr-ad-']", + "type": "hide-empty" + }, + { + "selector": ".ad-h-250", + "type": "hide-empty" + }, + { + "selector": ".sticky-pre-header", + "type": "hide-empty" + }, + { + "selector": ".adhesion-ad", + "type": "hide-empty" + }, + { + "selector": ".sticky-pre-header-inner", + "type": "hide-empty" + }, + { + "selector": ".site-header", + "type": "modify-style", + "values": [ + { + "property": "min-height", + "value": "50px" + } + ] + } + ] + }, + { + "domain": "gamingbible.com", + "rules": [ + { + "selector": "[class*='Advert']", + "type": "hide-empty" + } + ] + }, + { + "domain": "gap.com", + "rules": [ + { + "selector": ".ONhome1-recs", + "type": "hide" + }, + { + "selector": ".ONhome1-recs", + "type": "closest-empty" + } + ] + }, + { + "domain": "gardenersworld.com", + "rules": [ + { + "selector": ".stitcher-ad--dai-placeholder", + "type": "hide-empty" + } + ] + }, + { + "domain": "gbnews.com", + "rules": [ + { + "selector": ".video-inbody", + "type": "hide-empty" + }, + { + "selector": ".ad--billboard", + "type": "hide" + }, + { + "selector": ".ad--placeholder", + "type": "hide" + }, + { + "selector": ".stiky_sky", + "type": "hide" + }, + { + "selector": "[position='sticky_banner']", + "type": "hide" + }, + { + "selector": ".ad-inbody", + "type": "hide" + } + ] + }, + { + "domain": "genius.com", + "rules": [ + { + "selector": "[class^='DfpAd']", + "type": "hide" + }, + { + "selector": "[class*='PrimisPlayer__Container']", + "type": "hide-empty" + }, + { + "selector": "[class*='InreadContainer__Container']", + "type": "hide-empty" + } + ] + }, + { + "domain": "getpocket.com", + "rules": [ + { + "selector": "[class*='syndication-ad']", + "type": "hide-empty" + } + ] + }, + { + "domain": "ghacks.net", + "rules": [ + { + "selector": ".box-banner", + "type": "hide-empty" + }, + { + "selector": "[id^='ghacks_ad_code']", + "type": "hide-empty" + } + ] + }, + { + "domain": "gizmodo.com", + "rules": [ + { + "selector": ".banner-top", + "type": "closest-empty" + }, + { + "selector": ".od-wrapper", + "type": "hide-empty" + }, + { + "selector": ".widget_keleops-ad", + "type": "hide-empty" + }, + { + "selector": "[id^='optidigital-adslot-Billboard']", + "type": "closest-empty" + } + ] + }, + { + "domain": "globo.com", + "rules": [ + { + "selector": "banner-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": [ + "google.ca", + "google.com", + "google.de", + "google.dk", + "google.es", + "google.fr", + "google.ie", + "google.it", + "google.nl", + "google.pl", + "google.se", + "google.com.au", + "google.com.br", + "google.com.mx", + "google.co.in", + "google.co.jp", + "google.co.nz", + "google.co.uk" + ], + "rules": [ + { + "selector": "div:has(> iframe[src*='prid=190'])", + "type": "hide" + }, + { + "selector": "[aria-labelledby='promo-header']", + "type": "hide" + }, + { + "selector": "div:has(> [aria-labelledby='promo_label_id'])", + "type": "hide" + }, + { + "selector": "div[role='banner']:has(div > a[href='https://support.google.com/a/answer/33864'])", + "type": "hide" + } + ] + }, + { + "domain": "gute-garne.de", + "rules": [ + { + "selector": ".ad", + "type": "override" + } + ] + }, + { + "domain": "guard.io", + "rules": [ + { + "selector": "#credential_picker_container", + "type": "override" + } + ] + }, + { + "domain": "handleidingen.com", + "rules": [ + { + "selector": ".ad-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "harpygee.com", + "rules": [ + { + "selector": "#leaderboard", + "type": "override" + } + ] + }, + { + "domain": "healthline.com", + "rules": [ + { + "selector": "[data-testid='header-leaderboard']", + "type": "hide-empty" + }, + { + "selector": "[data-testid='sticky-inline-ad']", + "type": "closest-empty" + }, + { + "selector": "[data-ad='true']", + "type": "closest-empty" + } + ] + }, + { + "domain": "hindustantimes.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".desktopAd", + "type": "hide-empty" + }, + { + "selector": "[id^='adslotLazy']", + "type": "hide-empty" + }, + { + "selector": "[class^='adMinHeight']", + "type": "hide-empty" + } + ] + }, + { + "domain": "howstuffworks.com", + "rules": [ + { + "selector": ".leaderboard-banner", + "type": "hide-empty" + }, + { + "selector": ".ad-container", + "type": "hide" + }, + { + "selector": ".ad-inline", + "type": "hide-empty" + }, + { + "selector": "#ad-wrap-mobadhesion", + "type": "closest-empty" + } + ] + }, + { + "domain": "huffingtonpost.fr", + "rules": [ + { + "selector": ".ads-inreadArticle", + "type": "hide-empty" + } + ] + }, + { + "domain": "huffpost.com", + "rules": [ + { + "selector": ".connatix-player", + "type": "closest-empty" + }, + { + "selector": ".ad-container", + "type": "hide" + }, + { + "selector": ".bottom-right-sticky-container", + "type": "hide" + }, + { + "selector": ".video-container", + "type": "hide" + } + ] + }, + { + "domain": "ieee.org", + "rules": [ + { + "selector": ".top-leader-container", + "type": "hide-empty" + }, + { + "selector": "[class*='rblad-ieee_']", + "type": "hide-empty" + } + ] + }, + { + "domain": "ilfattoquotidiano.it", + "rules": [ + { + "selector": "[class*='adv']", + "type": "hide-empty" + } + ] + }, + { + "domain": "iltalehti.fi", + "rules": [ + { + "type": "override", + "selector": ".ad" + } + ] + }, + { + "domain": "indeed.com", + "rules": [ + { + "selector": ".google-Only-Modal", + "type": "hide" + } + ] + }, + { + "domain": "independent.co.uk", + "rules": [ + { + "selector": "#partners", + "type": "hide-empty" + }, + { + "selector": "#top-banner-wrapper", + "type": "hide-empty" + }, + { + "selector": "[data-mpu1=true]", + "type": "hide-empty" + }, + { + "selector": "[data-ad-unit-path]", + "type": "closest-empty" + }, + { + "selector": "#stickyFooterRoot", + "type": "hide" + }, + { + "selector": ".sc-toncsa-0", + "type": "hide-empty" + } + ] + }, + { + "domain": "indiatimes.com", + "rules": [ + { + "selector": ".ad-cls", + "type": "hide-empty" + }, + { + "selector": "._3JJMX", + "type": "hide-empty" + }, + { + "selector": ".paisa-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "indy100.com", + "rules": [ + { + "selector": "[id*='thirdparty']", + "type": "hide-empty" + } + ] + }, + { + "domain": "insider.com", + "rules": [ + { + "selector": ".in-post-sticky", + "type": "hide-empty" + }, + { + "selector": ".subnav-ad-layout", + "type": "hide-empty" + } + ] + }, + { + "domain": "investing.com", + "rules": [ + { + "selector": ".dfpVideo", + "type": "hide-empty" + }, + { + "selector": ".adDrawer", + "type": "hide-empty" + }, + { + "selector": "#hpAdVideo", + "type": "hide-empty" + }, + { + "selector": "[advertisementtext='Advertisement']", + "type": "closest-empty" + } + ] + }, + { + "domain": "jakdojade.pl", + "rules": [ + { + "selector": ".ad-wrapper", + "type": "override" + } + ] + }, + { + "domain": "kamus.net", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "ins.adsbygoogle", + "type": "closest-empty" + } + ] + }, + { + "domain": "kabutan.jp", + "rules": [ + { + "selector": "[id^=div-gpt-ad-]", + "type": "closest-empty" + } + ] + }, + { + "domain": "kbb.com", + "rules": [ + { + "selector": "#contentFor_kbbAdsSimplifiedNativeAd", + "type": "hide" + } + ] + }, + { + "domain": "kentonline.co.uk", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[id*='p_mpu']", + "type": "closest-empty" + }, + { + "selector": "[id*='p_dmp']", + "type": "closest-empty" + } + ] + }, + { + "domain": "kleinezeitung.at", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[class*='adblocker-intercept']", + "type": "hide-empty" + } + ] + }, + { + "domain": "komputerswiat.pl", + "rules": [ + { + "selector": "[class*='extraList']", + "type": "hide-empty" + }, + { + "selector": "[class*='placeholder']", + "type": "hide-empty" + } + ] + }, + { + "domain": "koreatimes.co.kr", + "rules": [ + { + "selector": "[data-ad-position]", + "type": "hide-empty" + } + ] + }, + { + "domain": "kutv.com", + "rules": [ + { + "selector": "[class*='adBeforeContent']", + "type": "hide-empty" + } + ] + }, + { + "domain": "la7.it", + "rules": [ + { + "selector": "#site-message-overlay", + "type": "hide" + } + ] + }, + { + "domain": "leboncoin.fr", + "rules": [ + { + "selector": "#lht-space-ad", + "type": "hide-empty" + }, + { + "selector": "[class*='styles__ad']", + "type": "hide-empty" + } + ] + }, + { + "domain": "lemonde.fr", + "rules": [ + { + "selector": ".dfp__container", + "type": "hide-empty" + } + ] + }, + { + "domain": "livebeaches.com", + "rules": [ + { + "selector": "[class*='random-ad']", + "type": "hide-empty" + } + ] + }, + { + "domain": "livemint.com", + "rules": [ + { + "selector": "#adfreeDeskSpace", + "type": "hide-empty" + }, + { + "selector": "#dekBudgetAd", + "type": "hide-empty" + } + ] + }, + { + "domain": "livescore.com", + "rules": [ + { + "selector": "#header-ads-holder", + "type": "hide-empty" + } + ] + }, + { + "domain": "livesport.com", + "rules": [ + { + "selector": "#header-ads-holder", + "type": "hide-empty" + } + ] + }, + { + "domain": "livestrong.com", + "rules": [ + { + "selector": ".component-ar-horizontal-bar-ad", + "type": "hide-empty" + }, + { + "selector": ".component-article-section-votd-container-outer", + "type": "hide-empty" + }, + { + "selector": ".inline-ad", + "type": "hide" + }, + { + "selector": ".component-header-sticky-ad", + "type": "hide" + } + ] + }, + { + "domain": "lowes.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[class*='__GAMWrapper-']", + "type": "override" + }, + { + "selector": ".gam-wrapper", + "type": "override" + } + ] + }, + { + "domain": "macrumors.com", + "rules": [ + { + "selector": ".tertiary", + "type": "hide-empty" + }, + { + "selector": "[class*='sidebarblock']", + "type": "hide-empty" + } + ] + }, + { + "domain": "mail.com", + "rules": [ + { + "selector": ".primis", + "type": "closest-empty" + } + ] + }, + { + "domain": "manchestereveningnews.co.uk", + "rules": [ + { + "selector": "[data-tmdatatrack='non-content-unit']", + "type": "hide" + }, + { + "selector": ".qQnbZ.sticky ~ header", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "0" + } + ] + } + ] + }, + { + "domain": "mantan-web.jp", + "rules": [ + { + "selector": "center > div", + "type": "hide-empty" + }, + { + "selector": ".ad-rec", + "type": "hide-empty" + }, + { + "selector": ".conteiner__head", + "type": "hide-empty" + } + ] + }, + { + "domain": "marketwatch.com", + "rules": [ + { + "selector": ".j-ad", + "type": "closest-empty" + } + ] + }, + { + "domain": "messenger.com", + "rules": [ + { + "selector": ".xw7yly9.xktsk01:has(div > a[href='https://www.facebook.com/help/messenger-app/597429858389632/'])", + "type": "hide" + } + ] + }, + { + "domain": "metro.co.uk", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".ad-slot-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "minkabu.jp", + "rules": [ + { + "selector": ".ad", + "type": "closest-empty" + }, + { + "selector": "div#side_navi > div:has(> div > div.ad)", + "type": "hide" + } + ] + }, + { + "domain": "mirror.co.uk", + "rules": [ + { + "selector": "#comments-standalone-mpu", + "type": "hide-empty" + } + ] + }, + { + "domain": "modernhoney.com", + "rules": [ + { + "selector": ".adthrive", + "type": "override" + }, + { + "selector": ".adthrive-footer", + "type": "hide-empty" + } + ] + }, + { + "domain": "motortrend.com", + "rules": [ + { + "selector": "[id*='AboveNavAd']", + "type": "closest-empty" + }, + { + "selector": "._11KmK", + "type": "hide-empty" + }, + { + "selector": ".AtFxB", + "type": "hide-empty" + } + ] + }, + { + "domain": "moviewalker.jp", + "rules": [ + { + "selector": "#mw_all_bb_gam", + "type": "closest-empty" + }, + { + "selector": "#mw_all_1r_gam", + "type": "closest-empty" + } + ] + }, + { + "domain": "n1info.si", + "rules": [ + { + "selector": "[class*='banner-placeholder']", + "type": "hide-empty" + } + ] + }, + { + "domain": "n4g.com", + "rules": [ + { + "selector": ".top-ads-container-outer", + "type": "closest-empty" + }, + { + "selector": ".f-item-ad", + "type": "closest-empty" + }, + { + "selector": ".f-item-ad-inhouse", + "type": "closest-empty" + }, + { + "selector": "[class^='sp-backdrop-info']", + "type": "hide" + } + ] + }, + { + "domain": "nasdaq.com", + "rules": [ + { + "selector": "[class^='ads__midpage']", + "type": "hide-empty" + }, + { + "selector": "[class^='ads__right-rail']", + "type": "hide-empty" + }, + { + "selector": ".atf_mobile-scroll-ad", + "type": "hide" + } + ] + }, + { + "domain": "nature.com", + "rules": [ + { + "selector": ".c-ad", + "type": "hide" + } + ] + }, + { + "domain": "nbcsports.com", + "rules": [ + { + "selector": ".block-mps", + "type": "hide-empty" + }, + { + "selector": "#nbcsports-leaderboard", + "type": "hide-empty" + } + ] + }, + { + "domain": "ncaa.com", + "rules": [ + { + "selector": ".mobile-persistent-bottom", + "type": "hide" + } + ] + }, + { + "domain": "ndtvprofit.com", + "rules": [ + { + "selector": "[class*='ad-with-placeholder']", + "type": "closest-empty" + }, + { + "selector": "[class*='ad-wrapper']", + "type": "hide-empty" + } + ] + }, + { + "domain": "nerdist.com", + "rules": [ + { + "selector": ".kskdCls", + "type": "hide" + } + ] + }, + { + "domain": "newatlas.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".OcelotAdModule", + "type": "hide-empty" + }, + { + "selector": "[id*='desktop_article_']", + "type": "hide-empty" + }, + { + "selector": "[id*='mobile_article_']", + "type": "hide-empty" + }, + { + "selector": "[id*='native_index_desktop_']", + "type": "hide-empty" + } + ] + }, + { + "domain": "news.de", + "rules": [ + { + "selector": "[class*='-ad']", + "type": "hide-empty" + }, + { + "selector": "div[id^='news_content_']", + "type": "hide-empty" + } + ] + }, + { + "domain": "newser.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".RightRailAds", + "type": "hide-empty" + }, + { + "selector": "#headerAdSection", + "type": "hide-empty" + }, + { + "selector": "#FreeStarVideoAdContainer", + "type": "closest-empty" + }, + { + "selector": "[id^='div-insticator-ad']", + "type": "closest-empty" + }, + { + "selector": "#divMobileHeaderAd", + "type": "closest-empty" + }, + { + "selector": "#divImageAd", + "type": "closest-empty" + }, + { + "selector": ".divNColAdRepeating", + "type": "closest-empty" + } + ] + }, + { + "domain": "newsmax.com", + "rules": [ + { + "selector": ".DFPad", + "type": "hide-empty" + } + ] + }, + { + "domain": "nottinghampost.com", + "rules": [ + { + "selector": "div[data-tmdatatrack=\"non-content-unit\"]", + "type": "hide" + }, + { + "selector": "div.vf-promo-gtag", + "type": "closest-empty" + }, + { + "selector": ".kwUlOm.sticky ~ header", + "type": "modify-style", + "values": [ + { + "property": "top", + "value": "0" + } + ] + } + ] + }, + { + "domain": "nytimes.com", + "rules": [ + { + "selector": "#top-wrapper", + "type": "hide-empty" + }, + { + "selector": "#bottom-wrapper", + "type": "hide-empty" + }, + { + "selector": "#mid1-wrapper", + "type": "hide-empty" + }, + { + "selector": "#mid2-wrapper", + "type": "hide-empty" + }, + { + "selector": "#mid3-wrapper", + "type": "hide-empty" + }, + { + "selector": "#mktg-wrapper", + "type": "hide-empty" + }, + { + "selector": ".e1xxpj0j1", + "type": "hide-empty" + }, + { + "selector": "[id*='story-ad']", + "type": "hide-empty" + }, + { + "selector": "[data-testid='StandardAd']", + "type": "closest-empty" + }, + { + "selector": ".pz-ad-box", + "type": "hide-empty" + }, + { + "selector": "[class*='Ad-module_adContainer__']", + "type": "hide-empty" + } + ] + }, + { + "domain": "observador.pt", + "rules": [ + { + "selector": ".obs-ad-placeholder", + "type": "hide-empty" + } + ] + }, + { + "domain": "obsev.com", + "rules": [ + { + "selector": ".my-10", + "type": "hide-empty" + }, + { + "selector": "[class^='Ad_ad']", + "type": "hide" + } + ] + }, + { + "domain": "oceanofcompressed.xyz", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "#sticky-ads", + "type": "hide" + } + ] + }, + { + "domain": "on.cc", + "rules": [ + { + "selector": "#mOverLay-container", + "type": "hide" + }, + { + "selector": ".lrec", + "type": "hide-empty" + } + ] + }, + { + "domain": "orange.fr", + "rules": [ + { + "selector": ".tag-rm", + "type": "hide-empty" + } + ] + }, + { + "domain": "ouest-france.fr", + "rules": [ + { + "selector": "[id*='pub_banniere']", + "type": "hide-empty" + }, + { + "selector": "[id*='pub_pave']", + "type": "hide-empty" + } + ] + }, + { + "domain": "outsideonline.com", + "rules": [ + { + "selector": ".o-ad", + "type": "hide-empty" + }, + { + "selector": ".l-main", + "type": "modify-style", + "values": [ + { + "property": "margin-top", + "value": "0vh" + } + ] + } + ] + }, + { + "domain": "paypal.com", + "rules": [ + { + "selector": "#gslFrame", + "type": "hide" + } + ] + }, + { + "domain": "pcgamesn.com", + "rules": [ + { + "selector": ".static_mpu_wrap", + "type": "hide-empty" + }, + { + "selector": "#nn_astro_wrapper", + "type": "hide-empty" + }, + { + "selector": ".ad-nextpage", + "type": "hide" + }, + { + "selector": ".legion_primiswrapper", + "type": "hide-empty" + }, + { + "selector": ".nn_mobile_mpu_wrapper", + "type": "hide-empty" + }, + { + "selector": ".nn-sticky", + "type": "hide-empty" + } + ] + }, + { + "domain": "petapixel.com", + "rules": [ + { + "selector": ".banners", + "type": "hide-empty" + }, + { + "selector": "#ppvideoadvertisement", + "type": "closest-empty" + } + ] + }, + { + "domain": "peterboroughtoday.co.uk", + "rules": [ + { + "selector": ".mpu-item", + "type": "closest-empty" + }, + { + "selector": "[class*='AdContainer']", + "type": "hide-empty" + } + ] + }, + { + "domain": "polygon.com", + "rules": [ + { + "selector": "[class*='ad_unit']", + "type": "override" + }, + { + "selector": "[id*='gpt-']", + "type": "override" + }, + { + "selector": ".m-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "popsci.com", + "rules": [ + { + "selector": ".mtc-unit-prefill-container", + "type": "hide-empty" + }, + { + "selector": ".ad-slot-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "post-gazette.com", + "rules": [ + { + "selector": "[data-dfpads-position]", + "type": "hide-empty" + } + ] + }, + { + "domain": "prajwaldesai.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "primagames.com", + "rules": [ + { + "selector": ".primis-player", + "type": "hide-empty" + }, + { + "selector": "[data-freestar-ad]", + "type": "hide" + } + ] + }, + { + "domain": "psypost.com", + "rules": [ + { + "selector": ".jeg_midbar", + "type": "hide-empty" + } + ] + }, + { + "domain": "publico.es", + "rules": [ + { + "selector": ".pb-ads", + "type": "hide-empty" + }, + { + "selector": "#sc_intxt_container", + "type": "hide" + } + ] + }, + { + "domain": "quizlet.com", + "rules": [ + { + "selector": "#targetDiv-setpage_billboard", + "type": "modify-style", + "values": [ + { + "property": "height", + "value": "0px" + }, + { + "property": "min-height", + "value": "0px" + } + ] + }, + { + "selector": ".SetPageTerms-embeddedDesktopAdWrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "quora.com", + "rules": [ + { + "selector": "#onetap_google_intermediate_iframe", + "type": "hide" + } + ] + }, + { + "domain": "qz.com", + "rules": [ + { + "selector": "#marquee-ad", + "type": "closest-empty" + }, + { + "selector": ".js_sticky-top-ad", + "type": "hide-empty" + }, + { + "selector": ".js_sticky-footer", + "type": "hide-empty" + }, + { + "selector": "#leftrail_dynamic_ad_wrapper", + "type": "hide-empty" + }, + { + "selector": "#splashy-ad-container-top", + "type": "hide-empty" + }, + { + "selector": ".ad-mobile", + "type": "closest-empty" + } + ] + }, + { + "domain": "rawstory.com", + "rules": [ + { + "selector": ".container_proper-ad-unit", + "type": "hide" + }, + { + "selector": ".controlled_via_ad_manager", + "type": "hide" + }, + { + "selector": ".mgid_3x2", + "type": "hide-empty" + }, + { + "selector": ".proper-ad-unit", + "type": "hide" + }, + { + "selector": "[id^='rc-widget-']", + "type": "hide-empty" + }, + { + "selector": "#story-top-ad", + "type": "hide" + } + ] + }, + { + "domain": "realtor.com", + "rules": [ + { + "selector": ".ad-wrapper", + "type": "override" + }, + { + "selector": ".lb1-ad", + "type": "hide-empty" + }, + { + "selector": ".ads_container", + "type": "hide" + } + ] + }, + { + "domain": "reddit.com", + "rules": [ + { + "selector": "._233XfOVq91N_ugGQDBb_OT", + "type": "hide" + }, + { + "selector": "._2vPrb00OnreVznxQ-SNql9", + "type": "hide" + }, + { + "selector": "[devicetype=\"desktop\"] .grid:not([style='filter: blur(4px);']) ~ shreddit-experience-tree:not([active-experiences='[\"nsfw_bypassable\"]'])", + "type": "hide" + } + ] + }, + { + "domain": "refinery29.com", + "rules": [ + { + "selector": ".section-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "reuters.com", + "rules": [ + { + "selector": "[data-testid='ResponsiveAdSlot']", + "type": "hide-empty" + } + ] + }, + { + "domain": "rumble.com", + "rules": [ + { + "selector": "[id^='rumble-ad']", + "type": "hide-empty" + } + ] + }, + { + "domain": "runnersworld.com", + "rules": [ + { + "selector": ".ad-disclaimer", + "type": "closest-empty" + } + ] + }, + { + "domain": "salon.com", + "rules": [ + { + "selector": ".fc-ab-root", + "type": "hide" + } + ] + }, + { + "domain": "sciencenews.org", + "rules": [ + { + "selector": "[class*='ad-block']", + "type": "hide-empty" + } + ] + }, + { + "domain": "scmp.com", + "rules": [ + { + "selector": "[class*='ad-slot-container']", + "type": "hide-empty" + }, + { + "selector": ".top-ad", + "type": "hide-empty" + }, + { + "selector": ".advertisement--mobile", + "type": "hide-empty" + }, + { + "selector": ".bottom-ad", + "type": "hide-empty" + }, + { + "selector": ".article-list__inline-ad", + "type": "hide-empty" + }, + { + "selector": ".page-container__mobile-native-ad", + "type": "hide-empty" + }, + { + "selector": ".ad-area", + "type": "hide-empty" + }, + { + "selector": "[data-qa='AdSlot-Container']", + "type": "closest-empty" + } + ] + }, + { + "domain": "semafor.com", + "rules": [ + { + "selector": "[class*='adMargin']", + "type": "hide-empty" + }, + { + "selector": "[class*='adHeaderMargin']", + "type": "hide-empty" + } + ] + }, + { + "domain": "servustv.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[class*='ad-wrap']", + "type": "hide-empty" + } + ] + }, + { + "domain": "sfchronicle.com", + "rules": [ + { + "selector": "[class*='belowMastheadWrapper']", + "type": "hide-empty" + } + ] + }, + { + "domain": "shattovet.com", + "rules": [ + { + "selector": "[class*='advertising']", + "type": "override" + } + ] + }, + { + "domain": "si.com", + "rules": [ + { + "selector": ".m-ad", + "type": "closest-empty" + }, + { + "selector": ".m-header-ad", + "type": "closest-empty" + } + ] + }, + { + "domain": "signupgenius.com", + "rules": [ + { + "selector": ".mktg", + "type": "hide" + } + ] + }, + { + "domain": "skysports.com", + "rules": [ + { + "selector": "[data-format='leaderboard']", + "type": "hide-empty" + } + ] + }, + { + "domain": "slate.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".slate-ad", + "type": "hide-empty" + }, + { + "selector": ".top-ad", + "type": "hide" + } + ] + }, + { + "domain": "snopes.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "soranews24.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "spanishdict.com", + "rules": [ + { + "selector": "[id*='adSide']", + "type": "hide-empty" + }, + { + "selector": "[id*='adTop']", + "type": "hide-empty" + }, + { + "selector": "[id*='adMiddle']", + "type": "hide-empty" + } + ] + }, + { + "domain": "spankbang.com", + "rules": [ + { + "selector": ".ptgncdn_holder", + "type": "hide" + } + ] + }, + { + "domain": "sportbible.com", + "rules": [ + { + "selector": "[class*='Advert']", + "type": "hide" + } + ] + }, + { + "domain": "startpagina.nl", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".ad-widget", + "type": "closest-empty" + } + ] + }, + { + "domain": "statesman.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "takealot.com", + "rules": [ + { + "selector": "[class*='ad-slot_']", + "type": "override" + } + ] + }, + { + "domain": "target.com", + "rules": [ + { + "selector": "[class^='styles__PubAdWrapper']", + "type": "closest-empty" + }, + { + "selector": "[data-test='sponsored-text']", + "type": "hide-empty" + }, + { + "selector": "[id^='btf-']", + "type": "closest-empty" + } + ] + }, + { + "domain": "techrepublic.com", + "rules": [ + { + "selector": "#nav-ad", + "type": "hide-empty" + }, + { + "selector": "#leader-plus-top", + "type": "hide-empty" + }, + { + "selector": "#sticky-bottom", + "type": "hide-empty" + } + ] + }, + { + "domain": "techwalla.com", + "rules": [ + { + "selector": ".component-header-sticky-ad", + "type": "closest-empty" + }, + { + "selector": ".component-article-section-votd-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "theatlantic.com", + "rules": [ + { + "selector": "[class*='ArticleInjector']", + "type": "hide-empty" + } + ] + }, + { + "domain": "theepochtimes.com", + "rules": [ + { + "selector": ".eet-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "thegatewaypundit.com", + "rules": [ + { + "selector": ".code-block", + "type": "hide" + } + ] + }, + { + "domain": "thehour.com", + "rules": [ + { + "selector": ".belowMastheadWrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "thehindu.com", + "rules": [ + { + "selector": "#articledivrec", + "type": "hide-empty" + } + ] + }, + { + "domain": "thekitchn.com", + "rules": [ + { + "selector": ".Post__ad", + "type": "hide-empty" + }, + { + "selector": ".PostDesktopStickyFooter", + "type": "hide-empty" + }, + { + "selector": ".MobileStickyBanner", + "type": "hide-empty" + }, + { + "selector": ".PostBundle__above", + "type": "hide-empty" + }, + { + "selector": ".ProductGrid__adWrapper", + "type": "hide-empty" + }, + { + "selector": ".Post__openWebSlot", + "type": "hide-empty" + } + ] + }, + { + "domain": "theregister.com", + "rules": [ + { + "selector": ".adun", + "type": "hide-empty" + } + ] + }, + { + "domain": "thetimes.co.uk", + "rules": [ + { + "selector": "#ad-header", + "type": "closest-empty" + }, + { + "selector": ".Section-ad", + "type": "hide-empty" + }, + { + "selector": "[class*='responsive__NativeAd']", + "type": "hide-empty" + } + ] + }, + { + "domain": "thetvdb.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[data-aa-adunit]", + "type": "hide" + }, + { + "selector": "[data-adpath]", + "type": "hide-empty" + } + ] + }, + { + "domain": "thewindowsclub.com", + "rules": [ + { + "selector": ".adtester-container", + "type": "hide" + } + ] + }, + { + "domain": "thewordfinder.com", + "rules": [ + { + "selector": "[id*='adngin']", + "type": "closest-empty" + } + ] + }, + { + "domain": "thingiverse.com", + "rules": [ + { + "selector": "[class*='AdCard__leaderboard']", + "type": "hide-empty" + } + ] + }, + { + "domain": "tinybeans.com", + "rules": [ + { + "selector": ".tb-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "toledoblade.com", + "rules": [ + { + "selector": "[data-dfpads-position]", + "type": "hide-empty" + } + ] + }, + { + "domain": "tripadvisor.ca", + "rules": [ + { + "selector": "#tripGoogleOnetapContainer", + "type": "hide" + }, + { + "selector": ".ZkqhQ", + "type": "hide" + }, + { + "selector": ".mxEhR", + "type": "hide" + } + ] + }, + { + "domain": "tripadvisor.de", + "rules": [ + { + "selector": "#tripGoogleOnetapContainer", + "type": "hide" + }, + { + "selector": ".ZkqhQ", + "type": "hide" + }, + { + "selector": ".mxEhR", + "type": "hide" + } + ] + }, + { + "domain": "tripadvisor.co.uk", + "rules": [ + { + "selector": "#tripGoogleOnetapContainer", + "type": "hide" + }, + { + "selector": ".ZkqhQ", + "type": "hide" + }, + { + "selector": ".mxEhR", + "type": "hide" + } + ] + }, + { + "domain": "tripadvisor.com", + "rules": [ + { + "selector": "#tripGoogleOnetapContainer", + "type": "hide" + }, + { + "selector": ".ZkqhQ", + "type": "hide" + }, + { + "selector": ".mxEhR", + "type": "hide" + } + ] + }, + { + "domain": "tripadvisor.fr", + "rules": [ + { + "selector": "#tripGoogleOnetapContainer", + "type": "hide" + }, + { + "selector": ".ZkqhQ", + "type": "hide" + }, + { + "selector": ".mxEhR", + "type": "hide" + } + ] + }, + { + "domain": "tumblr.com", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "tvtropes.org", + "rules": [ + { + "type": "disable-default" + } + ] + }, + { + "domain": "uol.com.br", + "rules": [ + { + "selector": ".model-base-bnr", + "type": "hide" + } + ] + }, + { + "domain": "usnews.com", + "rules": [ + { + "selector": "[class^='Ad__Container-']", + "type": "hide" + }, + { + "selector": "#ac-lre-player", + "type": "hide-empty" + } + ] + }, + { + "domain": "vinted.fr", + "rules": [ + { + "selector": ".ad-container--leaderboard", + "type": "hide" + } + ] + }, + { + "domain": "vice.com", + "rules": [ + { + "selector": ".adph", + "type": "hide-empty" + }, + { + "selector": ".vice-ad__container", + "type": "hide-empty" + }, + { + "selector": ".fixed-slot", + "type": "hide" + } + ] + }, + { + "domain": "westernjournal.com", + "rules": [ + { + "selector": ".sponsor", + "type": "hide-empty" + } + ] + }, + { + "domain": "washingtonpost.com", + "rules": [ + { + "selector": "wp-ad", + "type": "closest-empty" + }, + { + "selector": "#leaderboard-wrapper", + "type": "hide-empty" + }, + { + "selector": ".outbrain-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "whitakerfuneralhome.com", + "rules": [ + { + "selector": ".top-banner", + "type": "override" + } + ] + }, + { + "domain": "winnipegfreepress.com", + "rules": [ + { + "selector": ".article-ad", + "type": "hide" + } + ] + }, + { + "domain": "wiwo.de", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".top-ad-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "woot.com", + "rules": [ + { + "selector": "[data-test-ui*='advertisementLeaderboard']", + "type": "hide-empty" + } + ] + }, + { + "domain": "wsj.com", + "rules": [ + { + "selector": "#cx-what-to-read-next", + "type": "closest-empty" + }, + { + "selector": "[class*='WSJTheme--adWrapper']", + "type": "hide-empty" + } + ] + }, + { + "domain": "wunderground.com", + "rules": [ + { + "selector": ".pane-wu-fullscreenweather-ad-box-atf", + "type": "hide-empty" + } + ] + }, + { + "domain": "wykop.pl", + "rules": [ + { + "selector": ".pub-slot-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "yahoo.com", + "rules": [ + { + "selector": ".darla", + "type": "closest-empty" + }, + { + "selector": "[data-content='Advertisement']", + "type": "hide-empty" + }, + { + "selector": "#YDC-Lead-Stack", + "type": "hide-empty" + }, + { + "selector": "#topAd", + "type": "hide-empty" + }, + { + "selector": "#neoLeadAdMobile", + "type": "hide-empty" + }, + { + "selector": ".caas-da", + "type": "hide-empty" + }, + { + "selector": ".gam-placeholder", + "type": "closest-empty" + }, + { + "selector": "[class*='sdaContainer']", + "type": "hide" + }, + { + "selector": "#sda-Horizon-viewer", + "type": "hide-empty" + }, + { + "selector": "[id*='mrt-node-Lead']", + "type": "hide-empty" + }, + { + "selector": "[id*='mrt-node-Secondary']", + "type": "hide-empty" + }, + { + "selector": "[id*='rrvkqH1']", + "type": "hide-empty" + }, + { + "selector": ".ad-container", + "type": "hide-empty" + }, + { + "selector": "ul.flex > li.relative", + "type": "hide-empty" + } + ] + }, + { + "domain": "gazeta.pl", + "rules": [ + { + "selector": "[class*='DFP-']", + "type": "closest-empty" + }, + { + "selector": "[id*='banC']", + "type": "hide-empty" + }, + { + "selector": ".indexPremium__adv", + "type": "hide-empty" + } + ] + }, + { + "domain": "nfl.com", + "rules": [ + { + "selector": "[class*='adv-block']", + "type": "closest-empty" + } + ] + }, + { + "domain": "usatoday.com", + "rules": [ + { + "selector": "[aria-label='advertisement']", + "type": "closest-empty" + }, + { + "selector": ".gnt_tb", + "type": "hide-empty" + }, + { + "selector": ".gnt_flp", + "type": "hide-empty" + }, + { + "selector": "[class*='HomeCategory__adWrapper']", + "type": "closest-empty" + }, + { + "selector": "[class^='HomeTemplate__afterCategoryAd']", + "type": "closest-empty" + } + ] + }, + { + "domain": "uzone.id", + "rules": [ + { + "selector": "[class^='box-ads']", + "type": "hide-empty" + }, + { + "selector": "[class^='section-ads']", + "type": "hide-empty" + }, + { + "selector": ".parallax-container", + "type": "hide-empty" + }, + { + "selector": "div:has(.react-parallax)", + "type": "hide" + }, + { + "selector": "[id^=div-gpt-ad-]", + "type": "closest-empty" + } + ] + }, + { + "domain": "washingtontimes.com", + "rules": [ + { + "selector": ".connatixcontainer", + "type": "hide" + }, + { + "selector": "[id*='cxense-']", + "type": "closest-empty" + } + ] + }, + { + "domain": "xatakamovil.com", + "rules": [ + { + "selector": "#stories_container", + "type": "hide-empty" + } + ] + }, + { + "domain": "xfinity.com", + "rules": [ + { + "selector": ".f-gpc-flyout", + "type": "hide" + }, + { + "selector": ".f-gpc-banner", + "type": "hide" + } + ] + }, + { + "domain": "xhamster.com", + "rules": [ + { + "selector": "#credential_picker_container", + "type": "override" + } + ] + }, + { + "domain": "youtube.com", + "rules": [ + { + "selector": "ytm-promoted-sparkles-web-renderer", + "type": "hide" + }, + { + "selector": "ytd-in-feed-ad-layout-renderer", + "type": "hide" + } + ] + }, + { + "domain": "first-party.site", + "rules": [ + { + "selector": ".hide-test", + "type": "hide" + }, + { + "selector": ".hide-empty-test", + "type": "hide-empty" + }, + { + "selector": ".closest-empty-test", + "type": "closest-empty" + }, + { + "selector": "[class^='ad-container']", + "type": "override" + } + ] + }, + { + "domain": "privacy-test-pages.site", + "rules": [ + { + "selector": ".hide-test", + "type": "hide" + }, + { + "selector": ".hide-empty-test", + "type": "hide-empty" + }, + { + "selector": ".closest-empty-test", + "type": "closest-empty" + }, + { + "selector": "[class^='ad-container']", + "type": "override" + } + ] + }, + { + "domain": "wideopencountry.com", + "rules": [ + { + "selector": ".entry-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "tdpri.com", + "rules": [ + { + "selector": "[data-aa-adunit]", + "type": "closest-empty" + } + ] + }, + { + "domain": "ukutabs.com", + "rules": [ + { + "selector": ".wpb_wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "aucfree.com", + "rules": [ + { + "selector": "#pcarticle_bb", + "type": "hide-empty" + } + ] + }, + { + "domain": "seriouseats.com", + "rules": [ + { + "selector": "[class*='mm-ads-leaderboard']", + "type": "hide-empty" + } + ] + }, + { + "domain": "inside-games.jp", + "rules": [ + { + "selector": ".header-ad", + "type": "hide" + } + ] + }, + { + "domain": "tradera.com", + "rules": [ + { + "selector": ".ad-slot-container", + "type": "hide-empty" + } + ] + }, + { + "domain": "techxplore.com", + "rules": [ + { + "selector": ".ads-placeholder-250", + "type": "hide-empty" + }, + { + "selector": ".article-banner", + "type": "hide-empty" + }, + { + "selector": ".article-sidebar-banner", + "type": "hide-empty" + } + ] + }, + { + "domain": "thedrive.com", + "rules": [ + { + "selector": "#pw-top-right-sidebar-aib", + "type": "hide-empty" + } + ] + }, + { + "domain": "worldfootball.net", + "rules": [ + { + "selector": ".wfb-ad", + "type": "hide-empty" + } + ] + }, + { + "domain": "elespanol.com", + "rules": [ + { + "selector": ".stickycontainer", + "type": "hide-empty" + } + ] + }, + { + "domain": "autoexpress.co.uk", + "rules": [ + { + "selector": ".polaris__below-header-ad-wrapper,.polaris__ad", + "type": "hide" + } + ] + }, + { + "domain": "airlive.net", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "ins.adsbygoogle", + "type": "hide-empty" + } + ] + }, + { + "domain": "sfchronicle.com", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": "[data-block-type='ad']", + "type": "hide-empty" + }, + { + "selector": "[class*='belowMastheadWrapper']", + "type": "hide-empty" + } + ] + }, + { + "domain": "tenforums.com", + "rules": [ + { + "selector": ".chill", + "type": "hide-empty" + } + ] + }, + { + "domain": "elevenforum.com", + "rules": [ + { + "selector": ".gads", + "type": "hide-empty" + } + ] + }, + { + "domain": "windowsforum.com", + "rules": [ + { + "selector": "#adsense-wrapper", + "type": "hide-empty" + } + ] + }, + { + "domain": "exblog.jp", + "rules": [ + { + "selector": "#gpt_pc_blog_overlay", + "type": "hide-empty" + }, + { + "selector": "#gpt_pc_blog_header", + "type": "hide-empty" + } + ] + }, + { + "domain": "ameblo.jp", + "rules": [ + { + "selector": ".subAdBannerArea", + "type": "hide-empty" + }, + { + "selector": "._2dsoQeNf", + "type": "hide-empty" + } + ] + }, + { + "domain": "drivespark.com", + "rules": [ + { + "selector": ".oiad", + "type": "hide" + }, + { + "selector": "[class^='headerMain-ad']", + "type": "hide-empty" + }, + { + "selector": ".oi-adblock", + "type": "hide-empty" + }, + { + "selector": ".vuukle-ads", + "type": "hide-empty" + } + ] + }, + { + "domain": "presse-citron.net", + "rules": [ + { + "selector": ".od-wrapper", + "type": "hide-empty" + }, + { + "selector": ".banner", + "type": "hide-empty" + } + ] + }, + { + "domain": "pc-builds.com", + "rules": [ + { + "selector": ".mon-holder", + "type": "hide" + } + ] + }, + { + "domain": "moz.de", + "rules": [ + { + "type": "disable-default" + }, + { + "selector": ".u-adSlot--superbanner", + "type": "hide-empty" + } + ] + }, + { + "domain": "01net.com", + "rules": [ + { + "type": "hide-empty", + "selector": ".od-wrapper" + }, + { + "type": "hide-empty", + "selector": "div[data-openweb-ad]" + } + ] + }, + { + "domain": "msn.com", + "rules": [ + { + "type": "hide-empty", + "selector": ".consumption-page-banner-ad" + } + ] + } + ] + }, + "state": "enabled", + "hash": "013ef6fe3b662119a09396b93eb98fab" + }, + "exceptionHandler": { + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "bb4613bb766f59aaf277f172cf74eb39" + }, + "experimentalTheming": { + "state": "enabled", + "exceptions": [], + "minSupportedVersion": "1.143.0", + "features": { + "visualUpdates": { + "state": "enabled", + "minSupportedVersion": "1.143.0", + "rollout": { + "steps": [ + { + "percent": 5 + }, + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + } + } + }, + "hash": "5c0776444428f7f09d4817dfd5664da7" + }, + "extendedOnboarding": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "feedbackForm": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "fingerprintingAudio": { + "state": "disabled", + "exceptions": [ + { + "domain": "litebluesso.usps.gov" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "hash": "f4e37d1ee52ebe73247243aea4bb47f4" + }, + "fingerprintingBattery": { + "exceptions": [ + { + "domain": "litebluesso.usps.gov" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "1264a02f5b6ea4690828eee42977d874" + }, + "fingerprintingCanvas": { + "settings": { + "webGl": "enabled" + }, + "exceptions": [ + { + "domain": "adidas.com" + }, + { + "domain": "adidas.co.uk" + }, + { + "domain": "amtrak.com" + }, + { + "domain": "att.com" + }, + { + "domain": "bloomingdales.com" + }, + { + "domain": "capitalone.com" + }, + { + "domain": "centerwellpharmacy.com" + }, + { + "domain": "chase.com" + }, + { + "domain": "citi.com" + }, + { + "domain": "emirates.com" + }, + { + "domain": "fedex.com" + }, + { + "domain": "finishline.com" + }, + { + "domain": "go365.com" + }, + { + "domain": "gynzykids.com" + }, + { + "domain": "hm.com" + }, + { + "domain": "humana.com" + }, + { + "domain": "ikea.com" + }, + { + "domain": "litebluesso.usps.gov" + }, + { + "domain": "manulife.ca" + }, + { + "domain": "match.com" + }, + { + "domain": "navyfederal.org" + }, + { + "domain": "nordstrom.com" + }, + { + "domain": "northernrailway.co.uk" + }, + { + "domain": "online-calculator.com" + }, + { + "domain": "online-stopwatch.com" + }, + { + "domain": "spirit.com" + }, + { + "domain": "suncoastcreditunion.com" + }, + { + "domain": "td.com" + }, + { + "domain": "thetrainline.com" + }, + { + "domain": "usps.com" + }, + { + "domain": "walgreens.com" + }, + { + "domain": "wellsfargo.com" + }, + { + "domain": "xfinity.com" + }, + { + "domain": "godaddy.com" + }, + { + "domain": "bankofamerica.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "2d3bde3c52993fda0e6a127d274a4648" + }, + "fingerprintingHardware": { + "settings": { + "keyboard": { + "type": "undefined" + }, + "hardwareConcurrency": [ + { + "type": "number", + "value": 4 + }, + { + "type": "number", + "value": 8, + "criteria": { + "arch": "AppleSilicon" + } + } + ], + "deviceMemory": { + "type": "undefined" + } + }, + "exceptions": [ + { + "domain": "www.ticketmaster.com" + }, + { + "domain": "gamestop.com" + }, + { + "domain": "godaddy.com" + }, + { + "domain": "fedex.com" + }, + { + "domain": "litebluesso.usps.gov" + }, + { + "domain": "realestate.com.au" + }, + { + "domain": "secureserver.net" + }, + { + "domain": "proton.me" + }, + { + "domain": "nordstrom.com" + }, + { + "domain": "xfinity.com" + }, + { + "domain": "centerwellpharmacy.com" + }, + { + "domain": "go365.com" + }, + { + "domain": "humana.com" + }, + { + "domain": "target.com" + }, + { + "domain": "yahoo.com" + }, + { + "domain": "bankofamerica.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "airbnb.com" + }, + { + "domain": "airbnb.fr" + }, + { + "domain": "airbnb.cn" + }, + { + "domain": "airbnb.co.uk" + }, + { + "domain": "airbnb.es" + }, + { + "domain": "airbnb.it" + }, + { + "domain": "airbnb.ca" + }, + { + "domain": "airbnb.com.au" + }, + { + "domain": "airbnb.de" + }, + { + "domain": "airbnb.com.br" + }, + { + "domain": "zoom.us" + }, + { + "domain": "vox.com" + }, + { + "domain": "wetter.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "enabled", + "hash": "75642ef1ffc01e644202bbb8180fd6b1" + }, + "fingerprintingScreenSize": { + "settings": { + "availTop": { + "type": "number", + "value": 0 + }, + "availLeft": { + "type": "number", + "value": 0 + }, + "colorDepth": { + "type": "number", + "value": 24 + }, + "pixelDepth": { + "type": "number", + "value": 24 + } + }, + "exceptions": [ + { + "domain": "fedex.com" + }, + { + "domain": "gamestop.com" + }, + { + "domain": "godaddy.com" + }, + { + "domain": "litebluesso.usps.gov" + }, + { + "domain": "secureserver.net" + }, + { + "domain": "yahoo.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "c57c444341e2edd745bb9df43efb964f" + }, + "fingerprintingTemporaryStorage": { + "exceptions": [ + { + "domain": "fedex.com" + }, + { + "domain": "litebluesso.usps.gov" + }, + { + "domain": "tattoogenius.art" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "6d3bb3f580638f9a02695db409329750" + }, + "fullScreenMode": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "googleRejected": { + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "bb4613bb766f59aaf277f172cf74eb39" + }, + "gpc": { + "state": "enabled", + "exceptions": [ + { + "domain": "boston.com" + }, + { + "domain": "costco.com" + }, + { + "domain": "espn.com" + }, + { + "domain": "chime.com" + }, + { + "domain": "tirerack.com" + }, + { + "domain": "dollargeneral.com" + }, + { + "domain": "milesplit.live" + }, + { + "domain": "monsterenergy.com" + }, + { + "domain": "norton.com" + }, + { + "domain": "madewell.com" + }, + { + "domain": "flyfrontier.com" + }, + { + "domain": "gladiatorgarageworks.com" + }, + { + "domain": "payment.nba.com" + }, + { + "domain": "delta.com" + }, + { + "domain": "hopwtr.com" + }, + { + "domain": "newyorker.com" + }, + { + "domain": "mazdausa.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "gpcHeaderEnabledSites": [ + "global-privacy-control.glitch.me", + "globalprivacycontrol.org", + "washingtonpost.com", + "nytimes.com", + "privacytests.org", + "privacytests2.org", + "privacy-test-pages.site" + ] + }, + "hash": "e21c977b93fd50b235aaffee75b98857" + }, + "harmfulApis": { + "settings": { + "deviceOrientation": { + "state": "enabled", + "filterEvents": [ + "deviceorientation", + "devicemotion" + ] + }, + "GenericSensor": { + "state": "enabled", + "filterPermissions": [ + "accelerometer", + "ambient-light-sensor", + "gyroscope", + "magnetometer" + ], + "blockSensorStart": true + }, + "UaClientHints": { + "state": "enabled", + "highEntropyValues": { + "trimBrands": true, + "model": "", + "trimPlatformVersion": 2, + "trimUaFullVersion": 1, + "trimFullVersionList": 1 + } + }, + "NetworkInformation": { + "state": "enabled" + }, + "getInstalledRelatedApps": { + "state": "enabled", + "returnValue": [] + }, + "FileSystemAccess": { + "state": "enabled", + "disableOpenFilePicker": true, + "disableSaveFilePicker": true, + "disableDirectoryPicker": true, + "disableGetAsFileSystemHandle": true + }, + "WindowPlacement": { + "state": "enabled", + "filterPermissions": [ + "window-placement", + "window-management" + ], + "screenIsExtended": false + }, + "WebBluetooth": { + "state": "enabled", + "filterPermissions": [ + "bluetooth" + ], + "filterEvents": [ + "availabilitychanged" + ], + "blockGetAvailability": true, + "blockRequestDevice": true + }, + "WebUsb": { + "state": "enabled" + }, + "WebSerial": { + "state": "enabled" + }, + "WebHid": { + "state": "enabled" + }, + "WebMidi": { + "state": "enabled", + "filterPermissions": [ + "midi" + ] + }, + "IdleDetection": { + "state": "enabled", + "filterPermissions": [ + "idle-detection" + ] + }, + "WebNfc": { + "state": "enabled", + "disableNdefReader": true, + "disableNdefMessage": true, + "disableNdefRecord": true + }, + "StorageManager": { + "state": "enabled", + "allowedQuotaValues": [ + 1073741824, + 4294967296, + 9999999999 + ] + }, + "domains": [] + }, + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "8f1582fe0a0a1ee42bdea35a1e2807f2" + }, + "history": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "htmlHistoryPage": { + "state": "enabled", + "exceptions": [], + "features": { + "isLaunched": { + "state": "enabled" + } + }, + "minSupportedVersion": "1.130.0", + "hash": "a736ee38682b0ea92e083aa11d793410" + }, + "htmlNewTabPage": { + "state": "enabled", + "exceptions": [], + "features": { + "isLaunched": { + "state": "enabled" + }, + "nextStepsWidget": { + "state": "disabled" + }, + "omnibar": { + "state": "enabled", + "minSupportedVersion": "1.157.0" + }, + "newTabPagePerTab": { + "state": "disabled" + }, + "newTabPageTabIDs": { + "state": "enabled" + }, + "autoconsentStats": { + "state": "enabled", + "minSupportedVersion": "1.169.0" + } + }, + "minSupportedVersion": "1.125.0", + "hash": "9a54de5482e5ad73add979628bf773c1" + }, + "https": { + "state": "enabled", + "exceptions": [ + { + "domain": "act.alz.org" + }, + { + "domain": "amica.com" + }, + { + "domain": "jp.square-enix.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "hash": "98296e52d02cff3fd4614e08abf18a1d" + }, + "import": { + "state": "enabled", + "features": { + "browserMultiStepImport": { + "state": "enabled", + "settings": { + "chrome": "enabled", + "brave": "disabled", + "edge": "disabled", + "vivaldi": "disabled" + } + } + }, + "settings": {}, + "exceptions": [], + "hash": "5792a0177cacc3903db94efac7a01c0a" + }, + "incontextSignup": { + "exceptions": [], + "state": "enabled", + "hash": "52857469413a66e8b0c7b00de5589162" + }, + "incrementalRolloutTest": { + "state": "enabled", + "features": { + "rollout": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 1 + }, + { + "percent": 5 + }, + { + "percent": 15 + } + ] + } + } + }, + "exceptions": [], + "hash": "39a36ca9002bd5aea4dd7b6bdb5b79d4" + }, + "macOSBrowserConfig": { + "exceptions": [], + "state": "enabled", + "features": { + "willSoonDropBigSurSupport": { + "state": "enabled" + }, + "hangReporting": { + "state": "disabled" + }, + "unifiedURLPredictor": { + "state": "enabled", + "minSupportedVersion": "1.162.0" + }, + "appStoreUpdateFlow": { + "state": "enabled" + }, + "webKitPerformanceReporting": { + "state": "enabled" + }, + "pinnedTabsViewRewrite": { + "state": "enabled", + "minSupportedVersion": "1.166.0" + }, + "webNotifications": { + "state": "internal", + "minSupportedVersion": "1.175.0" + } + }, + "hash": "35e04efd896ffe198e07254274956162" + }, + "maliciousSiteProtection": { + "state": "enabled", + "exceptions": [ + { + "domain": "broken.third-party.site" + }, + { + "domain": "d3qpjnspil4z56.cloudfront.net" + }, + { + "domain": "pbet.bank" + } + ], + "features": { + "onByDefault": { + "state": "enabled" + }, + "scamProtection": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 10 + }, + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + } + } + }, + "settings": { + "hashPrefixUpdateFrequency": 20, + "filterSetUpdateFrequency": 720 + }, + "hash": "d0ac02c8cc419fa3cf54d8fa797234bf" + }, + "marketplaceAdPostback": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "mediaPlaybackRequiresUserGesture": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "messageBridge": { + "exceptions": [], + "settings": { + "aiChat": "disabled", + "subscriptions": "disabled", + "serpSettings": "disabled", + "domains": [ + { + "domain": [ + "duckduckgo.com", + "duck.co", + "duck.ai" + ], + "patchSettings": [ + { + "op": "replace", + "path": "/aiChat", + "value": "enabled" + }, + { + "op": "replace", + "path": "/subscriptions", + "value": "enabled" + }, + { + "op": "replace", + "path": "/serpSettings", + "value": "enabled" + } + ] + } + ] + }, + "state": "enabled", + "hash": "cd82e4d3119ad9359c262e6caa95bee0" + }, + "navigatorInterface": { + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "privilegedDomains": [ + { + "domain": "duckduckgo.com" + }, + { + "domain": "duck.co" + } + ] + }, + "state": "enabled", + "hash": "d8e6fe639b8e01a8a4c63a2d0e1dba6b" + }, + "networkProtection": { + "state": "enabled", + "features": { + "waitlistBetaActive": { + "state": "enabled" + }, + "waitlist": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 1 + }, + { + "percent": 5 + }, + { + "percent": 15 + }, + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 75 + }, + { + "percent": 100 + } + ] + } + }, + "userTips": { + "state": "enabled" + }, + "enforceRoutes": { + "state": "enabled" + }, + "appExclusions": { + "state": "enabled", + "minSupportedVersion": "1.127.0" + }, + "riskyDomainsProtection": { + "state": "enabled" + }, + "appStoreSystemExtension": { + "state": "enabled" + }, + "appStoreSystemExtensionMessage": { + "state": "enabled", + "minSupportedVersion": "1.137.0" + } + }, + "exceptions": [], + "minSupportedVersion": "1.57.1", + "hash": "327ab58254997af197e3d7b0ae48c0a6" + }, + "newTabContinueSetUp": { + "exceptions": [], + "state": "enabled", + "settings": { + "surveyCardDay0": "disabled", + "surveyCardDay7": "disabled", + "surveyCardDay14": "disabled", + "permanentSurvey": { + "state": "enabled", + "localization": "disabled", + "url": "https://selfserve.decipherinc.com/survey/selfserve/32ab/240404?list=2", + "firstDay": 5, + "lastDay": 8, + "sharePercentage": 100 + } + }, + "hash": "cbd62a1a63a829da0277ca045a311eb2" + }, + "newTabSearchField": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "nonTracking3pCookies": { + "settings": { + "excludedCookieDomains": [] + }, + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "41c579cb7ba082e37433e9da31891fb4" + }, + "openFireWindowByDefault": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "pageContext": { + "state": "enabled", + "settings": { + "additionalCheck": "disabled", + "maxContentLength": 9500, + "mainContentSelector": "main, article, .content, .main, #content, #main", + "excludeSelectors": [ + ".ad", + ".sidebar", + ".footer", + ".nav", + ".header", + ".banner", + ".popup" + ], + "conditionalChanges": [ + { + "condition": { + "internal": true + }, + "patchSettings": [ + { + "op": "replace", + "path": "/additionalCheck", + "value": "enabled" + } + ] + }, + { + "condition": { + "domain": "nba.com" + }, + "patchSettings": [ + { + "op": "replace", + "path": "/mainContentSelector", + "value": "main" + } + ] + }, + { + "condition": { + "domain": "reddit.com" + }, + "patchSettings": [ + { + "op": "add", + "path": "/excludeSelectors/-", + "value": "shreddit-comments-page-ad" + } + ] + } + ] + }, + "exceptions": [], + "hash": "ef0dda2d67a941a7c442e9a5d6b8ddd4" + }, + "passwordManagerExtensions": { + "state": "disabled", + "exceptions": [], + "settings": { + "manifestXml": "" + }, + "features": { + "bitwarden": { + "state": "disabled", + "settings": { + "id": "" + } + }, + "lastpass": { + "state": "disabled", + "settings": { + "id": "" + } + }, + "onepassword": { + "state": "disabled", + "settings": { + "id": "" + } + }, + "roboform": { + "state": "disabled", + "settings": { + "id": "" + } + } + }, + "hash": "315d9146141502efc2593077c1e14e22" + }, + "performanceMetrics": { + "state": "enabled", + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "hash": "db4ceca40cab4e890eb42c7f655c5ff4" + }, + "phishingDetection": { + "state": "disabled", + "exceptions": [], + "features": { + "allowErrorPage": { + "state": "disabled" + }, + "allowPreferencesToggle": { + "state": "disabled" + } + }, + "hash": "1748ce9203aaf359de8ff82aa9180124" + }, + "pinnedTabs": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "pluginPointFocusedViewPlugin": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "pluginPointNewTabPagePlugin": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "pluginPointNewTabPageSectionPlugin": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "pluginPointNewTabPageShortcutPlugin": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "privacyDashboard": { + "exceptions": [], + "state": "enabled", + "features": { + "toggleReports": { + "state": "enabled" + } + }, + "hash": "20851a0edb2117dfb923b40fa9e79856" + }, + "privacyPro": { + "state": "enabled", + "exceptions": [], + "features": { + "isLaunched": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 1 + }, + { + "percent": 10 + }, + { + "percent": 30 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + }, + "minSupportedVersion": "1.82.1" + }, + "isLaunchedOverride": { + "state": "disabled" + }, + "isLaunchedROW": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + }, + "minSupportedVersion": "1.118.1" + }, + "allowPurchase": { + "state": "enabled" + }, + "isLaunchedStripe": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 1 + }, + { + "percent": 10 + }, + { + "percent": 30 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + }, + "minSupportedVersion": "1.82.1" + }, + "allowPurchaseStripe": { + "state": "enabled" + }, + "useUnifiedFeedback": { + "state": "enabled", + "minSupportedVersion": "1.113.0" + }, + "setAccessTokenCookieForSubscriptionDomains": { + "state": "disabled", + "rollout": { + "steps": [ + { + "percent": 25 + }, + { + "percent": 100 + } + ] + }, + "minSupportedVersion": "1.116.0" + }, + "privacyProAuthV2": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 5 + }, + { + "percent": 15 + }, + { + "percent": 30 + }, + { + "percent": 60 + }, + { + "percent": 100 + } + ] + }, + "minSupportedVersion": "1.139.0" + }, + "privacyProFreeTrial": { + "state": "enabled" + }, + "vpnToolbarUpsell": { + "state": "enabled" + }, + "subscriptionRebranding": { + "state": "enabled", + "minSupportedVersion": "1.153.0" + }, + "paidAIChat": { + "state": "enabled", + "minSupportedVersion": "1.153.0" + }, + "winBackOffer": { + "state": "enabled", + "minSupportedVersion": "1.165.0", + "targets": [ + { + "localeCountry": "US" + } + ] + }, + "blackFridayCampaign": { + "state": "disabled", + "targets": [ + { + "localeCountry": "US" + } + ], + "settings": { + "discountPercent": "40" + } + }, + "tierMessagingEnabled": { + "state": "enabled", + "rollout": { + "steps": [ + { + "percent": 10 + }, + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + }, + "minSupportedVersion": "1.169.0" + } + }, + "hash": "f7c88cb0ee785a6a82de6b478088d1d9" + }, + "privacyProtectionsPopup": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "quickNavTldLookup": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "referrer": { + "exceptions": [ + { + "domain": "atlassian.com" + }, + { + "domain": "learning.edx.org" + }, + { + "domain": "login-seconnecter.ca" + }, + { + "domain": "canadapost-postescanada.ca" + }, + { + "domain": "player.vimeo.com" + }, + { + "domain": "xcelenergy.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "0748fb2d0774e8eead8b4b80d2e1e8de" + }, + "releaseNotes": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "remoteMessaging": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "requestBlocklist": { + "state": "disabled", + "settings": { + "blockedRequests": { + "privacy-test-pages.site": { + "rules": [ + { + "rule": "privacy-test-pages.site/privacy-protections/request-blocklist/*?block=true", + "domains": [ + "privacy-test-pages.site" + ], + "reason": "Testing rule for the privacy test page, see https://privacy-test-pages.site/privacy-protections/request-blocklist/" + } + ] + }, + "third-party.site": { + "rules": [ + { + "rule": "third-party.site/privacy-protections/request-blocklist/*?block=true", + "domains": [ + "privacy-test-pages.site" + ], + "reason": "Testing rule for the privacy test page, see https://privacy-test-pages.site/privacy-protections/request-blocklist/" + } + ] + } + } + }, + "exceptions": [], + "hash": "9869fff02ba5bd8e092e0f1ecd037781" + }, + "requestFilterer": { + "state": "disabled", + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "windowInMs": 0 + }, + "hash": "023a90fc0d3d548dcd4b3c0e669f3eb7" + }, + "runtimeChecks": { + "state": "disabled", + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": {}, + "hash": "287cbb3b9ff9a414d7419590f2fc865f" + }, + "scriptlets": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "sendFullPackageInstallSource": { + "state": "enabled", + "settings": {}, + "exceptions": [], + "hash": "26d319ff4b2f43012a287b5f35a8db3a" + }, + "senseOfProtection": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "serp": { + "state": "enabled", + "exceptions": [], + "minSupportedVersion": "1.171.0", + "features": { + "storeSerpSettings": { + "state": "enabled", + "minSupportedVersion": "1.171.0", + "rollout": { + "steps": [ + { + "percent": 5 + } + ] + } + } + }, + "hash": "e4c94d8c80026e53077ab48f006cdff6" + }, + "serviceworkerInitiatedRequests": { + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "bb4613bb766f59aaf277f172cf74eb39" + }, + "setAsDefaultAndAddToDock": { + "state": "enabled", + "exceptions": [], + "minSupportedVersion": "1.130.0", + "settings": { + "firstPopoverDelayDays": 14, + "bannerAfterPopoverDelayDays": 14, + "bannerRepeatIntervalDays": 14, + "inactiveModalNumberOfDaysSinceInstall": 28, + "inactiveModalNumberOfInactiveDays": 7 + }, + "features": { + "popoverVsBannerExperiment": { + "state": "disabled", + "cohorts": [ + { + "name": "control", + "weight": 1 + }, + { + "name": "popover", + "weight": 1 + }, + { + "name": "banner", + "weight": 1 + } + ] + }, + "scheduledDefaultBrowserAndDockPrompts": { + "state": "enabled", + "minSupportedVersion": "1.143.0" + }, + "scheduledDefaultBrowserAndDockPromptsInactiveUser": { + "state": "enabled" + } + }, + "hash": "4bc5eff19a7e70ada8dc56f78a02567b" + }, + "settingsPage": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "shortHistoryMenu": { + "state": "enabled", + "exceptions": [], + "hash": "697382e31649d84b01166f1dc6f790d6" + }, + "showHideAiGeneratedImagesSection": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "showOnAppLaunch": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "sslCertificates": { + "state": "enabled", + "exceptions": [], + "features": { + "allowBypass": { + "state": "enabled" + } + }, + "hash": "abe9584048f7f8157f71a14e7914cb1c" + }, + "swipingTabs": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "syncPromotion": { + "state": "enabled", + "features": { + "bookmarks": { + "state": "enabled" + }, + "passwords": { + "state": "enabled" + } + }, + "exceptions": [], + "hash": "8081a0cf08f5bbda622df55361c72cfe" + }, + "sync": { + "state": "enabled", + "features": { + "level0ShowSync": { + "state": "enabled" + }, + "level1AllowDataSyncing": { + "state": "enabled" + }, + "level2AllowSetupFlows": { + "state": "enabled" + }, + "level3AllowCreateAccount": { + "state": "enabled" + }, + "seamlessAccountSwitching": { + "state": "enabled" + }, + "exchangeKeysToSyncWithAnotherDevice": { + "state": "enabled" + }, + "syncSetupBarcodeIsUrlBased": { + "state": "enabled" + }, + "newSyncEntryPoints": { + "state": "enabled", + "minSupportedVersion": "1.156.0", + "rollout": { + "steps": [ + { + "percent": 25 + }, + { + "percent": 50 + }, + { + "percent": 100 + } + ] + } + }, + "syncCreditCards": { + "state": "enabled", + "minSupportedVersion": "1.163.0" + }, + "syncIdentities": { + "state": "enabled", + "minSupportedVersion": "1.163.0" + }, + "aiChatSync": { + "state": "disabled" + } + }, + "exceptions": [], + "minSupportedVersion": "1.70.0", + "hash": "c8f6f94d87bb630fe03b542a2033f6de" + }, + "tabCrashRecovery": { + "state": "enabled", + "exceptions": [], + "minSupportedVersion": "1.137.0", + "hash": "c38c449ed89cf483a61da23acace65ec" + }, + "tabManager": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "tabProgressIndicator": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "tabSwitcherAnimation": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "textZoom": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "toggleReports": { + "state": "enabled", + "exceptions": [], + "settings": { + "dismissLogicEnabled": true, + "dismissInterval": 172800, + "promptLimitLogicEnabled": true, + "promptInterval": 172800, + "maxPromptCount": 3 + }, + "hash": "a05b4413a3745762c46ec89aa5037693" + }, + "trackerAllowlist": { + "state": "enabled", + "settings": { + "allowlistedTrackers": { + "2mdn.net": { + "rules": [ + { + "rule": "gcdn.2mdn.net/videoplayback/id/", + "domains": [ + "crunchyroll.com" + ] + }, + { + "rule": "s0.2mdn.net/instream/video/client.js", + "domains": [ + "crunchyroll.com" + ] + } + ] + }, + "3lift.com": { + "rules": [ + { + "rule": "tlx.3lift.com/header/auction", + "domains": [ + "aternos.org" + ] + } + ] + }, + "4dex.io": { + "rules": [ + { + "rule": "mp.4dex.io/prebid", + "domains": [ + "aternos.org" + ] + } + ] + }, + "a-mo.net": { + "rules": [ + { + "rule": "prebid.a-mo.net/a/c", + "domains": [ + "aternos.org" + ] + } + ] + }, + "a2z.com": { + "rules": [ + { + "rule": "assets.brightspot.abebooks.a2z.com/", + "domains": [ + "" + ] + } + ] + }, + "acdn.no": { + "rules": [ + { + "rule": "acdn.no/pkg/@amedia/browserid/", + "domains": [ + "" + ] + } + ] + }, + "acsbapp.com": { + "rules": [ + { + "rule": "acsbapp.com", + "domains": [ + "" + ] + } + ] + }, + "addthis.com": { + "rules": [ + { + "rule": "s7.addthis.com/js/300/addthis_widget.js", + "domains": [ + "" + ] + }, + { + "rule": "s7.addthis.com/l10n/", + "domains": [ + "" + ] + }, + { + "rule": "s7.addthis.com/static/", + "domains": [ + "" + ] + } + ] + }, + "addtoany.com": { + "rules": [ + { + "rule": "static.addtoany.com/menu/page.js", + "domains": [ + "frankspeech.com", + "x22report.com" + ] + } + ] + }, + "adform.net": { + "rules": [ + { + "rule": "adx.adform.net/adx/openrtb", + "domains": [ + "aternos.org" + ] + }, + { + "rule": "c1.adform.net/serving/cookie/match", + "domains": [ + "dhl.de" + ] + } + ] + }, + "adition.com": { + "rules": [ + { + "rule": "ad3.adfarm1.adition.com/js", + "domains": [ + "servustv.com" + ] + }, + { + "rule": "imagesrv.adition.com/js", + "domains": [ + "derstandard.at" + ] + } + ] + }, + "adlightning.com": { + "rules": [ + { + "rule": "publisher.adlightning.com/user-api/session/", + "domains": [ + "boltive.com" + ] + } + ] + }, + "ads-twitter.com": { + "rules": [ + { + "rule": "static.ads-twitter.com/uwt.js", + "domains": [ + "hentaihaven.xxx" + ] + } + ] + }, + "adsafeprotected.com": { + "rules": [ + { + "rule": "static.adsafeprotected.com/favicon.ico", + "domains": [ + "tf1info.fr" + ] + }, + { + "rule": "static.adsafeprotected.com/skeleton", + "domains": [ + "" + ] + }, + { + "rule": "static.adsafeprotected.com/iasPET.1.js", + "domains": [ + "corriere.it", + "independent.co.uk" + ] + }, + { + "rule": "static.adsafeprotected.com/vans-adapter-google-ima.js", + "domains": [ + "nhl.com" + ] + } + ] + }, + "adsrvr.org": { + "rules": [ + { + "rule": "js.adsrvr.org/up_loader.1.1.0.js", + "domains": [ + "codot.gov" + ] + } + ] + }, + "adswizz.com": { + "rules": [ + { + "rule": "synchrobox.adswizz.com", + "domains": [ + "tunein.com" + ] + }, + { + "rule": "adswizz.com/adswizz/js/SynchroClient2.js", + "domains": [ + "tunein.com" + ] + } + ] + }, + "adthrive.com": { + "rules": [ + { + "rule": "adthrive.com", + "domains": [ + "adamtheautomator.com", + "cookingclassy.com", + "gardeningknowhow.com", + "modernhoney.com", + "packhacker.com" + ] + } + ] + }, + "adtng.com": { + "rules": [ + { + "rule": "adtng.com", + "domains": [ + "hanime.tv" + ] + } + ] + }, + "adyen.com": { + "rules": [ + { + "rule": "checkoutshopper-live-us.adyen.com/checkoutshopper", + "domains": [ + "columbia.com" + ] + }, + { + "rule": "checkoutshopper-live.adyen.com/checkoutshopper", + "domains": [ + "patagonia.com" + ] + } + ] + }, + "aimbase.com": { + "rules": [ + { + "rule": "ws.aimbase.com/Scripts/awa.js", + "domains": [ + "chriscraft.com", + "regulatormarine.com" + ] + } + ] + }, + "alicdn.com": { + "rules": [ + { + "rule": "alicdn.com/g/qwenweb/qwen-webui-fe/", + "domains": [ + "aliexpress.us", + "qwen.ai", + "qwenlm.ai" + ] + }, + { + "rule": "o.alicdn.com/frontend-lib/common-lib/jquery.min.js", + "domains": [ + "aliexpress.us", + "chat.qwen.ai" + ] + }, + { + "rule": "alicdn.com", + "domains": [ + "aliexpress.us" + ] + } + ] + }, + "amazon-adsystem.com": { + "rules": [ + { + "rule": "c.amazon-adsystem.com/aax2/apstag.js", + "domains": [ + "applesfera.com", + "fattoincasadabenedetta.it", + "inquirer.com", + "thesurfersview.com", + "twitchy.com", + "wildrivers.lostcoastoutpost.com" + ] + }, + { + "rule": "z-na.amazon-adsystem.com/widgets/onejs", + "domains": [ + "oceanofcompressed.xyz" + ] + }, + { + "rule": "aax.amazon-adsystem.com/e/dtb/bid", + "domains": [ + "cleveland.com", + "foxnews.com" + ] + }, + { + "rule": "client.aps.amazon-adsystem.com/publisher.js", + "domains": [ + "foxnews.com", + "ign.com" + ] + } + ] + }, + "amplitude.com": { + "rules": [ + { + "rule": "cdn.amplitude.com/script/", + "domains": [ + "youngliving.com" + ] + }, + { + "rule": "flag.lab.amplitude.com/sdk/", + "domains": [ + "outsideonline.com" + ] + }, + { + "rule": "flag.lab.eu.amplitude.com/sdk/", + "domains": [ + "bluelightcard.co.uk" + ] + }, + { + "rule": "api.lab.amplitude.com/sdk", + "domains": [ + "outsideonline.com" + ] + } + ] + }, + "anyclip.com": { + "rules": [ + { + "rule": "player.anyclip.com/anyclip-widget/lre-widget", + "domains": [ + "dictionary.com", + "thesaurus.com" + ] + } + ] + }, + "appboycdn.com": { + "rules": [ + { + "rule": "js.appboycdn.com/web-sdk/5.3/braze.min.js", + "domains": [ + "wallapop.com" + ] + }, + { + "rule": "js.appboycdn.com/web-sdk/3.1/appboy.min.js", + "domains": [ + "edx.org" + ] + } + ] + }, + "atlassian.com": { + "rules": [ + { + "rule": "jsd-widget.atlassian.com/assets/iframe.js", + "domains": [ + "brewser.beer" + ] + } + ] + }, + "aweber.com": { + "rules": [ + { + "rule": "aweber.com/form/", + "domains": [ + "" + ] + } + ] + }, + "azurefd.net": { + "rules": [ + { + "rule": "orderwebstrg-prd-cdn-h3apayd2cuehgffe.a03.azurefd.net", + "domains": [ + "chipotle.com" + ] + } + ] + }, + "bc0a.com": { + "rules": [ + { + "rule": "marvel-b1-cdn.bc0a.com/f00000000269380/www.beretta.com/assets/", + "domains": [ + "beretta.com" + ] + } + ] + }, + "bing.com": { + "rules": [ + { + "rule": "r.bing.com/rp/", + "domains": [ + "" + ] + }, + { + "rule": "bing.com/th", + "domains": [ + "" + ] + }, + { + "rule": "www.bing.com/api/maps/mapcontrol", + "domains": [ + "" + ] + }, + { + "rule": "www.bing.com/api/v6/Places/AutoSuggest", + "domains": [ + "" + ] + }, + { + "rule": "www.bing.com/maps/sdk/mapcontrol", + "domains": [ + "" + ] + }, + { + "rule": "www.bing.com/maps/sdkrelease/mapcontrol", + "domains": [ + "" + ] + }, + { + "rule": "www.bing.com/rp/", + "domains": [ + "" + ] + } + ] + }, + "bounceexchange.com": { + "rules": [ + { + "rule": "bounceexchange.com", + "domains": [ + "payment.nba.com" + ] + } + ] + }, + "byspotify.com": { + "rules": [ + { + "rule": "byspotify.com", + "domains": [ + "" + ] + } + ] + }, + "captcha-delivery.com": { + "rules": [ + { + "rule": "captcha-delivery.com", + "domains": [ + "" + ] + } + ] + }, + "casalemedia.com": { + "rules": [ + { + "rule": "htlb.casalemedia.com/cygnus", + "domains": [ + "aternos.org" + ] + } + ] + }, + "certona.net": { + "rules": [ + { + "rule": "edge1.certona.net/cd/dd7aa8af/www.asics.com/scripts/resonance.js", + "domains": [ + "asics.com" + ] + }, + { + "rule": "edge1.certona.net/cd/6490677b/mightyape/scripts/resonance.js", + "domains": [ + "mightyape.co.nz" + ] + } + ] + }, + "cloudflare.com": { + "rules": [ + { + "rule": "cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js", + "domains": [ + "" + ] + }, + { + "rule": "cloudflare.com/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js", + "domains": [ + "" + ] + }, + { + "rule": "cloudflare.com/cdn-cgi/scripts/1680307200/cloudflare-static/rocket-loader.min.js", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/leaflet/", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/three.js/", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/vue/", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/video.js/", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/headjs/", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/hola_player/", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/1.8.6/fingerprint2.min.js", + "domains": [ + "winnipegfreepress.com" + ] + }, + { + "rule": "challenges.cloudflare.com", + "domains": [ + "" + ] + }, + { + "rule": "cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/", + "domains": [ + "" + ] + } + ] + }, + "cloudfront.net": { + "rules": [ + { + "rule": "d3oxtup47gylpj.cloudfront.net/theme/onlyfans/spa/chunk-vendors.js", + "domains": [ + "onlyfans.com" + ] + }, + { + "rule": "d3nn82uaxijpm6.cloudfront.net/", + "domains": [ + "strava.com" + ] + }, + { + "rule": "d9k0w0y3delq8.cloudfront.net", + "domains": [ + "hoyolab.com", + "hoyoverse.com" + ] + }, + { + "rule": "d2s6j0ghajv79z.cloudfront.net", + "domains": [ + "sigalert.com" + ] + }, + { + "rule": "dbukjj6eu5tsf.cloudfront.net/assets.sidearmsports.com/common/js/20170825/video.js", + "domains": [ + "" + ] + } + ] + }, + "connatix.com": { + "rules": [ + { + "rule": "cd.connatix.com", + "domains": [ + "" + ] + }, + { + "rule": "cds.connatix.com", + "domains": [ + "" + ] + }, + { + "rule": "cdn.connatix.com", + "domains": [ + "" + ] + }, + { + "rule": "capi.connatix.com", + "domains": [ + "" + ] + }, + { + "rule": "vid.connatix.com", + "domains": [ + "" + ] + }, + { + "rule": "img.connatix.com", + "domains": [ + "" + ] + }, + { + "rule": "connatix.com", + "domains": [ + "accuweather.com", + "dailymail.co.uk" + ] + } + ] + }, + "convertexperiments.com": { + "rules": [ + { + "rule": "convertexperiments.com", + "domains": [ + "ground.news" + ] + } + ] + }, + "convertkit.com": { + "rules": [ + { + "rule": "convertkit.com", + "domains": [ + "kit.com" + ] + } + ] + }, + "cookie-script.com": { + "rules": [ + { + "rule": "cdn.cookie-script.com", + "domains": [ + "redlionchelwood.co.uk" + ] + } + ] + }, + "cquotient.com": { + "rules": [ + { + "rule": "cdn.cquotient.com/js/v2/gretel.min.js", + "domains": [ + "" + ] + }, + { + "rule": "e.cquotient.com/recs/", + "domains": [ + "" + ] + }, + { + "rule": "p.cquotient.com/pebble", + "domains": [ + "scheels.com" + ] + }, + { + "rule": "api.cquotient.com/v3", + "domains": [ + "grillagrills.com" + ] + } + ] + }, + "criteo.com": { + "rules": [ + { + "rule": "bidder.criteo.com/cdb", + "domains": [ + "aternos.org" + ] + } + ] + }, + "criteo.net": { + "rules": [ + { + "rule": "static.criteo.net/js/ld/publishertag.prebid.js", + "domains": [ + "newatlas.com", + "wp.pl" + ] + }, + { + "rule": "static.criteo.net/images/pixel.gif", + "domains": [ + "newatlas.com" + ] + }, + { + "rule": "static.criteo.net/js/ld/publishertag.js", + "domains": [ + "wp.pl" + ] + }, + { + "rule": "static.criteo.net/js/ld/ld.js", + "domains": [ + "jackssmallengines.com" + ] + } + ] + }, + "ctctcdn.com": { + "rules": [ + { + "rule": "ctctcdn.com", + "domains": [ + "constantcontactpages.com" + ] + } + ] + }, + "cudasvc.com": { + "rules": [ + { + "rule": "cudasvc.com/url", + "domains": [ + "" + ] + } + ] + }, + "curalate.com": { + "rules": [ + { + "rule": "edge.curalate.com/sites/", + "domains": [ + "" + ] + } + ] + }, + "cxense.com": { + "rules": [ + { + "rule": "cxense.com/public/widget", + "domains": [ + "" + ] + }, + { + "rule": "cxense.com/cx.js", + "domains": [ + "" + ] + }, + { + "rule": "cxense.com/cx.cce.js", + "domains": [ + "" + ] + } + ] + }, + "datadoghq-browser-agent.com": { + "rules": [ + { + "rule": "www.datadoghq-browser-agent.com/datadog-logs-v4.js", + "domains": [ + "shapermint.com" + ] + }, + { + "rule": "datadoghq-browser-agent.com", + "domains": [ + "indeed.com" + ] + } + ] + }, + "demdex.net": { + "rules": [ + { + "rule": "dpm.demdex.net/id", + "domains": [ + "dhl.de", + "homedepot.com", + "sbs.com.au" + ] + }, + { + "rule": "sbs.demdex.net", + "domains": [ + "sbs.com.au" + ] + }, + { + "rule": "adobedc.demdex.net", + "domains": [ + "aetna.com" + ] + } + ] + }, + "doubleclick.net": { + "rules": [ + { + "rule": "doubleclick.net/ondemand/hls/content/", + "domains": [ + "10play.com.au", + "history.com", + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "doubleclick.net/ondemand/dash/content/", + "domains": [ + "cbs.com", + "paramountplus.com", + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "securepubads.g.doubleclick.net/gampad/ads", + "domains": [ + "ah.nl", + "applesfera.com", + "modernhoney.com", + "rocketnews24.com", + "servustv.com", + "wunderground.com" + ] + }, + { + "rule": "pubads.g.doubleclick.net/gampad/ads", + "domains": [ + "crunchyroll.com", + "iheart.com", + "nhl.com", + "pch.com", + "rocketnews24.com", + "viki.com", + "wunderground.com" + ] + }, + { + "rule": "pubads.g.doubleclick.net/ondemand/hls/content", + "domains": [ + "cc.com", + "paramountplus.com", + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "pubads.g.doubleclick.net/ssai/event/", + "domains": [ + "cbssports.com", + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "pubads.g.doubleclick.net/ssai/pods/", + "domains": [ + "foxweather.com", + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "securepubads.g.doubleclick.net/tag/js/gpt.js", + "domains": [ + "13wham.com", + "22thepoint.com", + "abc3340.com", + "abc45.com", + "abc6onyourside.com", + "abc7amarillo.com", + "abcnews4.com", + "abcstlouis.com", + "ah.nl", + "applesfera.com", + "asuracomic.net", + "azteca48.com", + "bakersfieldnow.com", + "cbs12.com", + "cbs2iowa.com", + "cbs4local.com", + "cbs6albany.com", + "cbsaustin.com", + "chattanoogacw.com", + "cnycentral.com", + "cw14online.com", + "cw18milwaukee.com", + "cw23tv.com", + "cw34.com", + "cw35.com", + "cw7michigan.com", + "cwalbany.com", + "cwbaltimore.com", + "cwcentralpa.com", + "cwcincinnati.com", + "cwcolumbus.com", + "cwlasvegas.com", + "cwnashville.tv", + "cwokc.com", + "cwomaha.tv", + "cwrochester.com", + "cwtreasurevalley.com", + "dayton247now.com", + "fincopilot.net", + "fox11online.com", + "fox17.com", + "fox23maine.com", + "fox28savannah.com", + "fox38corpuschristi.com", + "fox42kptm.com", + "fox47.com", + "fox49.tv", + "fox4beaumont.com", + "fox56.com", + "foxbaltimore.com", + "foxchattanooga.com", + "foxillinois.com", + "foxkansas.com", + "foxnebraska.com", + "foxreno.com", + "foxrichmond.com", + "foxrochester.com", + "foxsanantonio.com", + "goplay.be", + "idahonews.com", + "itsthevibe.com", + "katu.com", + "katv.com", + "kcby.com", + "kdsm17.com", + "keprtv.com", + "kfdm.com", + "kfoxtv.com", + "khqa.com", + "kimatv.com", + "kjzz.com", + "klewtv.com", + "kmph.com", + "kmyu.tv", + "komonews.com", + "kpic.com", + "krcgtv.com", + "krcrtv.com", + "ktul.com", + "ktvl.com", + "ktvo.com", + "ktxs.com", + "kunptv.com", + "kunwtv.com", + "kutv.com", + "kval.com", + "local12.com", + "local21news.com", + "lowes.com", + "midmichigannow.com", + "my15wtcn.com", + "my24milwaukee.com", + "my48.tv", + "mycbs4.com", + "myfox28columbus.com", + "mylvtv.com", + "mynbc15.com", + "mynews4.com", + "myrdctv.com", + "mytv30web.com", + "mytvbaltimore.com", + "mytvbuffalo.com", + "mytvcharleston.com", + "mytvrichmond.com", + "mytvwichita.com", + "mytvz.com", + "nationalpost.com", + "nbc16.com", + "nbc24.com", + "nbcmontana.com", + "nebraska.tv", + "nevadasportsnet.com", + "news3lv.com", + "news4sanantonio.com", + "newschannel20.com", + "newschannel9.com", + "nytimes.com", + "okcfox.com", + "raleighcw.com", + "realmadrid.com", + "repretel.com", + "rocketnews24.com", + "siouxlandnews.com", + "solitaired.com", + "southernoregoncw.com", + "star64.tv", + "stuff.co.nz", + "thecw38.com", + "thecw46.com", + "thecwtc.com", + "thenationaldesk.com", + "turnto10.com", + "univisionseattle.com", + "upnorthlive.com", + "utv44.com", + "uwbadgers.com", + "wabm68.com", + "wach.com", + "wchstv.com", + "wcti12.com", + "wcyb.com", + "weartv.com", + "webmd.com", + "wfgxtv.com", + "wfxl.com", + "wgme.com", + "wgxa.tv", + "wjactv.com", + "wjla.com", + "wlos.com", + "wpde.com", + "wpgh53.com", + "wsbt.com", + "wset.com", + "wtov9.com", + "wtto21.com", + "wtwc40.com", + "wunderground.com", + "wutv29.com", + "wvah.com", + "wwmt.com", + "youmath.it" + ] + }, + { + "rule": "securepubads.g.doubleclick.net/gpt/pubads_impl_", + "domains": [ + "ah.nl", + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "securepubads.g.doubleclick.net/pagead/ppub_config", + "domains": [ + "repretel.com", + "rocketnews24.com", + "weather.com", + "wunderground.com" + ] + }, + { + "rule": "securepubads.g.doubleclick.net/pagead/ima_ppub_config", + "domains": [ + "rocketnews24.com", + "sbs.com.au", + "wunderground.com" + ] + }, + { + "rule": "securepubads.g.doubleclick.net/pagead/managed/js/gpt", + "domains": [ + "applesfera.com", + "itsthevibe.com", + "kutv.com", + "lowes.com", + "modernhoney.com", + "nationalpost.com", + "rocketnews24.com", + "stuff.co.nz", + "triblive.com", + "wunderground.com" + ] + }, + { + "rule": "doubleclick.net/pixel", + "domains": [ + "rocketnews24.com", + "sbs.com.au", + "wunderground.com" + ] + }, + { + "rule": "googleads.g.doubleclick.net/ads/preferences/naioptout", + "domains": [ + "community.screwfix.com", + "consent-pref.trustarc.com", + "rocketnews24.com", + "wunderground.com", + "zojirushi.com" + ] + }, + { + "rule": "www3.doubleclick.net", + "domains": [ + "scrolller.com" + ] + }, + { + "rule": "doubleclick.net", + "domains": [ + "rocketnews24.com", + "wunderground.com" + ] + }, + { + "rule": "doubleclick.net", + "domains": [ + "nintendo.com" + ], + "reason": "Testing Nintendo checkout flow" + } + ] + }, + "doubleverify.com": { + "rules": [ + { + "rule": "pub.doubleverify.com/dvtag/", + "domains": [ + "bbc.com", + "time.com" + ] + } + ] + }, + "driftt.com": { + "rules": [ + { + "rule": "driftt.com", + "domains": [ + "" + ] + } + ] + }, + "dynamicyield.com": { + "rules": [ + { + "rule": "dynamicyield.com/api/", + "domains": [ + "" + ] + }, + { + "rule": "st.dynamicyield.com/st", + "domains": [ + "harborfreight.com" + ] + } + ] + }, + "eccmp.com": { + "rules": [ + { + "rule": "eccmp.com/sts/scripts/conversen-SDK.js", + "domains": [ + "citi.com", + "pch.com" + ] + } + ] + }, + "edgekey.net": { + "rules": [ + { + "rule": "scene7.com.edgekey.net/s7viewersdk", + "domains": [ + "" + ] + }, + { + "rule": "nintendo.com.edgekey.net/account/js/common.js", + "domains": [ + "nintendo.com" + ] + }, + { + "rule": "cdn.agoda.net.edgekey.net/", + "domains": [ + "" + ] + } + ] + }, + "ensighten.com": { + "rules": [ + { + "rule": "ensighten.com", + "domains": [ + "" + ] + } + ] + }, + "evgnet.com": { + "rules": [ + { + "rule": "cdn.evgnet.com/beacon/homedepotofcainc/engage/scripts/evergage.min.js", + "domains": [ + "homedepot.ca" + ] + } + ] + }, + "ezodn.com": { + "rules": [ + { + "rule": "ezodn.com/cmp", + "domains": [ + "" + ] + }, + { + "rule": "go.ezodn.com", + "domains": [ + "airplaneacademy.com" + ] + } + ] + }, + "ezoic.net": { + "rules": [ + { + "rule": "g.ezoic.net", + "domains": [ + "" + ] + } + ] + }, + "facebook.com": { + "rules": [ + { + "rule": "facebook.com/plugins/customer_chat/", + "domains": [ + "danibowman.com" + ] + }, + { + "rule": "facebook.com/v6.0/plugins/customer_chat/", + "domains": [ + "danibowman.com" + ] + }, + { + "rule": "facebook.com/v6.0/plugins/customerchat.php", + "domains": [ + "danibowman.com" + ] + }, + { + "rule": "facebook.com", + "domains": [ + "nextdoor.com" + ] + }, + { + "rule": "facebook.com", + "domains": [ + "nintendo.com" + ], + "reason": "Testing Nintendo checkout flow" + } + ] + }, + "facebook.net": { + "rules": [ + { + "rule": "connect.facebook.net/en_US/sdk.js", + "domains": [ + "bandsintown.com", + "mytrackman.com", + "nextdoor.co.uk", + "nextdoor.com", + "solitaired.com" + ] + }, + { + "rule": "connect.facebook.net/en_US/all.js", + "domains": [ + "nordicwellness.se" + ] + }, + { + "rule": "connect.facebook.net/en_US/sdk/xfbml.customerchat.js", + "domains": [ + "danibowman.com" + ] + }, + { + "rule": "connect.facebook.net/en_UK/sdk.js", + "domains": [ + "globalcyclingnetwork.com" + ] + }, + { + "rule": "facebook.net", + "domains": [ + "nextdoor.com" + ] + }, + { + "rule": "connect.facebook.net", + "domains": [ + "nintendo.com" + ], + "reason": "Testing Nintendo checkout flow" + } + ] + }, + "fastly.net": { + "rules": [ + { + "rule": "mslc-prod-herokuapp-com.global.ssl.fastly.net/main.8736233213226195.js", + "domains": [ + "masslottery.com" + ] + }, + { + "rule": "ticketmaster4.map.fastly.net/eps-d", + "domains": [ + "ticketmaster.ca", + "ticketmaster.com", + "ticketmaster.com.au", + "ticketmaster.com.mx" + ] + }, + { + "rule": "target-opus.map.fastly.net/", + "domains": [ + "target.com" + ] + } + ] + }, + "featureassets.org": { + "rules": [ + { + "rule": "featureassets.org/v1/initialize", + "domains": [ + "growtherapy.com" + ] + } + ] + }, + "feefo.com": { + "rules": [ + { + "rule": "register.feefo.com/feefo-widgets-app/feefo_widgets_loader.js", + "domains": [ + "robertwelch.com" + ] + } + ] + }, + "flodesk.com": { + "rules": [ + { + "rule": "flodesk.com", + "domains": [ + "myflodesk.com" + ] + } + ] + }, + "flowplayer.org": { + "rules": [ + { + "rule": "flowplayer.org", + "domains": [ + "" + ] + } + ] + }, + "fwmrm.net": { + "rules": [ + { + "rule": "v.fwmrm.net/ad", + "domains": [ + "" + ] + } + ] + }, + "gemius.pl": { + "rules": [ + { + "rule": "pro.hit.gemius.pl/gstream.js", + "domains": [ + "tvp.pl" + ] + }, + { + "rule": "wp.hit.gemius.pl/xgemius.js", + "domains": [ + "wp.pl" + ] + } + ] + }, + "getshogun.com": { + "rules": [ + { + "rule": "cdn.getshogun.com", + "domains": [ + "" + ] + }, + { + "rule": "lib.getshogun.com", + "domains": [ + "" + ] + } + ] + }, + "google-analytics.com": { + "rules": [ + { + "rule": "google-analytics.com/analytics.js", + "domains": [ + "bswift.com", + "doterra.com", + "easyjet.com", + "edx.org", + "saplinglearning.com", + "worlddutyfree.com" + ] + }, + { + "rule": "www.google-analytics.com/plugins/ua/ecommerce.js", + "domains": [ + "doterra.com" + ] + }, + { + "rule": "www.google-analytics.com/collect", + "domains": [ + "youmath.it" + ] + }, + { + "rule": "google-analytics.com", + "domains": [ + "" + ], + "reason": "Testing Nintendo checkout flow" + } + ] + }, + "google.com": { + "rules": [ + { + "rule": "accounts.google.com/o/oauth2/iframerpc", + "domains": [ + "" + ] + }, + { + "rule": "accounts.google.com/o/oauth2/iframe", + "domains": [ + "" + ] + }, + { + "rule": "apis.google.com/js/platform.js", + "domains": [ + "" + ] + }, + { + "rule": "apis.google.com/_/scs/abc-static/_/js", + "domains": [ + "" + ] + }, + { + "rule": "cse.google.com/cse.js", + "domains": [ + "" + ] + }, + { + "rule": "cse.google.com/cse/element/", + "domains": [ + "" + ] + }, + { + "rule": "google.com/cse/cse.js", + "domains": [ + "" + ] + }, + { + "rule": "www.google.com/cse/static/", + "domains": [ + "" + ] + }, + { + "rule": "www.google.com/url", + "domains": [ + "" + ] + }, + { + "rule": "www.google.com/maps/", + "domains": [ + "" + ] + }, + { + "rule": "google.com/adsense/search/", + "domains": [ + "ihowlist.com" + ] + }, + { + "rule": "marketingplatform.google.com/about/enterprise", + "domains": [ + "scrolller.com" + ] + } + ] + }, + "googleapis.com": { + "rules": [ + { + "rule": "imasdk.googleapis.com/js/sdkloader/ima3.js", + "domains": [ + "" + ] + } + ] + }, + "googleoptimize.com": { + "rules": [ + { + "rule": "googleoptimize.com/optimize.js", + "domains": [ + "motherdenim.com" + ] + } + ] + }, + "googlesyndication.com": { + "rules": [ + { + "rule": "pagead2.googlesyndication.com/pagead/js/adsbygoogle.js", + "domains": [ + "" + ] + }, + { + "rule": "pagead2.googlesyndication.com/pagead/show_ads.js", + "domains": [ + "luckylandslots.com", + "rocketnews24.com", + "zefoy.com" + ] + }, + { + "rule": "tpc.googlesyndication.com/pagead/js/loader21.html", + "domains": [ + "laprensa.hn", + "rocketnews24.com", + "rumble.com", + "zefoy.com" + ] + }, + { + "rule": "googlesyndication.com", + "domains": [ + "rocketnews24.com", + "zefoy.com" + ] + } + ] + }, + "googletagmanager.com": { + "rules": [ + { + "rule": "googletagmanager.com/gtag/js", + "domains": [ + "abril.com.br", + "algomalegalclinic.com", + "birminghamairport.co.uk", + "bodyelectricvitality.com.au", + "comparethemarket.com", + "cosmicbook.news", + "eatroyo.com", + "experian.com", + "flyfrontier.com", + "ljsilvers.com", + "newsweek.com", + "snopes.com", + "tesla.com", + "thesimsresource.com", + "tradersync.com", + "tvtropes.org", + "vanguardplan.com", + "vizio.com", + "wps.com", + "xpn.org" + ] + }, + { + "rule": "googletagmanager.com", + "domains": [ + "nintendo.com" + ], + "reason": "Testing Nintendo checkout flow" + } + ] + }, + "googletagservices.com": { + "rules": [ + { + "rule": "www.googletagservices.com/tag/js/gpt.js", + "domains": [ + "idahonews.com", + "wp.pl" + ] + }, + { + "rule": "googletagservices.com/tag/js/gpt.js", + "domains": [ + "13wham.com", + "22thepoint.com", + "abc3340.com", + "abc45.com", + "abc6onyourside.com", + "abc7amarillo.com", + "abcnews4.com", + "abcstlouis.com", + "azteca48.com", + "bakersfieldnow.com", + "cbs12.com", + "cbs2iowa.com", + "cbs4local.com", + "cbs6albany.com", + "cbsaustin.com", + "chattanoogacw.com", + "cnycentral.com", + "cw14online.com", + "cw18milwaukee.com", + "cw23tv.com", + "cw34.com", + "cw35.com", + "cw7michigan.com", + "cwalbany.com", + "cwbaltimore.com", + "cwcentralpa.com", + "cwcincinnati.com", + "cwcolumbus.com", + "cwlasvegas.com", + "cwnashville.tv", + "cwokc.com", + "cwomaha.tv", + "cwrochester.com", + "cwtreasurevalley.com", + "dayton247now.com", + "fox11online.com", + "fox17.com", + "fox23maine.com", + "fox28savannah.com", + "fox38corpuschristi.com", + "fox42kptm.com", + "fox47.com", + "fox49.tv", + "fox4beaumont.com", + "fox56.com", + "foxbaltimore.com", + "foxchattanooga.com", + "foxillinois.com", + "foxkansas.com", + "foxnebraska.com", + "foxreno.com", + "foxrichmond.com", + "foxrochester.com", + "foxsanantonio.com", + "idahonews.com", + "katu.com", + "katv.com", + "kcby.com", + "kdsm17.com", + "keprtv.com", + "kfdm.com", + "kfoxtv.com", + "khqa.com", + "kimatv.com", + "kjzz.com", + "klewtv.com", + "kmph.com", + "kmyu.tv", + "komonews.com", + "kpic.com", + "krcgtv.com", + "ktul.com", + "ktvl.com", + "ktvo.com", + "ktxs.com", + "kunptv.com", + "kunwtv.com", + "kutv.com", + "kval.com", + "local12.com", + "local21news.com", + "midmichigannow.com", + "mlb.com", + "my15wtcn.com", + "my24milwaukee.com", + "my48.tv", + "mycbs4.com", + "myfox28columbus.com", + "mylvtv.com", + "mynbc15.com", + "mynews4.com", + "myrdctv.com", + "mytv30web.com", + "mytvbaltimore.com", + "mytvbuffalo.com", + "mytvcharleston.com", + "mytvrichmond.com", + "mytvwichita.com", + "mytvz.com", + "nbc16.com", + "nbc24.com", + "nbcmontana.com", + "nebraska.tv", + "nevadasportsnet.com", + "news3lv.com", + "news4sanantonio.com", + "newschannel20.com", + "newschannel9.com", + "okcfox.com", + "pc-builds.com", + "pointstreaksites.com", + "post-gazette.com", + "raleighcw.com", + "signupgenius.com", + "siouxlandnews.com", + "southernoregoncw.com", + "star64.tv", + "stockcharts.com", + "thecw38.com", + "thecw46.com", + "thecwtc.com", + "thenationaldesk.com", + "toledoblade.com", + "triblive.com", + "turnto10.com", + "univisionseattle.com", + "upnorthlive.com", + "utv44.com", + "wabm68.com", + "wach.com", + "wchstv.com", + "wcti12.com", + "wcyb.com", + "weartv.com", + "wfgxtv.com", + "wfxl.com", + "wgme.com", + "wgxa.tv", + "wjactv.com", + "wjla.com", + "wlos.com", + "wpde.com", + "wpgh53.com", + "wsbt.com", + "wset.com", + "wtov9.com", + "wtto21.com", + "wtwc40.com", + "wutv29.com", + "wvah.com", + "wwmt.com" + ] + } + ] + }, + "greylabeldelivery.com": { + "rules": [ + { + "rule": "tags.asics.com.greylabeldelivery.com", + "domains": [ + "asics.com" + ] + }, + { + "rule": "tags.focus.de.greylabeldelivery.com/focus-web/prod/utag.js", + "domains": [ + "focus.de" + ] + } + ] + }, + "grow.me": { + "rules": [ + { + "rule": "grow.me/main.js", + "domains": [ + "budgetbytes.com", + "foodfornet.com", + "grilledcheesesocial.com", + "homesteadingfamily.com" + ] + }, + { + "rule": "api.grow.me", + "domains": [ + "foodfornet.com", + "grilledcheesesocial.com" + ] + }, + { + "rule": "grow.me", + "domains": [ + "grilledcheesesocial.com" + ] + } + ] + }, + "gstatic.com": { + "rules": [ + { + "rule": "maps.gstatic.com", + "domains": [ + "" + ] + }, + { + "rule": "www.gstatic.com/_/mss/boq-identity/_/js", + "domains": [ + "" + ] + }, + { + "rule": "www.gstatic.com/flutter-canvaskit", + "domains": [ + "nimblerx.com" + ] + } + ] + }, + "heapanalytics.com": { + "rules": [ + { + "rule": "cdn.heapanalytics.com", + "domains": [ + "mejuri.com" + ] + } + ] + }, + "hsappstatic.net": { + "rules": [ + { + "rule": "hsappstatic.net", + "domains": [ + "" + ] + } + ] + }, + "hubspot.com": { + "rules": [ + { + "rule": "hubspot.com/web-interactives", + "domains": [ + "" + ] + }, + { + "rule": "no-cache.hubspot.com/cta/default/", + "domains": [ + "" + ] + }, + { + "rule": "api.hubspot.com/livechat-public/v1/message/public", + "domains": [ + "" + ] + }, + { + "rule": "meetings.hubspot.com", + "domains": [ + "" + ] + }, + { + "rule": "app.hubspot.com/hubsettings", + "domains": [ + "" + ] + }, + { + "rule": "app.hubspot.com/userpreferences", + "domains": [ + "" + ] + } + ] + }, + "igodigital.com": { + "rules": [ + { + "rule": "collect.igodigital.com/collect.js", + "domains": [ + "goodwillfinds.com" + ] + } + ] + }, + "iheart.com": { + "rules": [ + { + "rule": "iheart.com", + "domains": [ + "" + ] + } + ] + }, + "impervadns.net": { + "rules": [ + { + "rule": "e9pkvlf.impervadns.net", + "domains": [ + "cox.com", + "cox.net" + ] + } + ] + }, + "improvedigital.com": { + "rules": [ + { + "rule": "hb.improvedigital.com/pbw/prebid/prebid-idhb-v8.51a.min.js", + "domains": [ + "chicagotribune.com", + "sun-sentinel.com" + ] + } + ] + }, + "inmobi.com": { + "rules": [ + { + "rule": "cmp.inmobi.com", + "domains": [ + "" + ] + } + ] + }, + "inq.com": { + "rules": [ + { + "rule": "inq.com/chatrouter", + "domains": [ + "" + ] + }, + { + "rule": "inq.com/chatskins", + "domains": [ + "" + ] + }, + { + "rule": "inq.com/tagserver/init", + "domains": [ + "" + ] + }, + { + "rule": "inq.com/tagserver/launch", + "domains": [ + "" + ] + }, + { + "rule": "inq.com/tagserver/postToServer", + "domains": [ + "" + ] + } + ] + }, + "instagram.com": { + "rules": [ + { + "rule": "platform.instagram.com/en_US/embeds.js", + "domains": [ + "livejournal.com" + ] + }, + { + "rule": "www.instagram.com/embed.js", + "domains": [ + "buzzfeed.com", + "livejournal.com" + ] + } + ] + }, + "ipify.org": { + "rules": [ + { + "rule": "api.ipify.org/", + "domains": [ + "mass.gov" + ] + } + ] + }, + "jimstatic.com": { + "rules": [ + { + "rule": "assets.jimstatic.com", + "domains": [ + "" + ] + } + ] + }, + "jsdelivr.net": { + "rules": [ + { + "rule": "cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.js", + "domains": [ + "sbermarket.ru" + ] + }, + { + "rule": "cdn.jsdelivr.net/blazy/latest/blazy.min.js", + "domains": [ + "lecreuset.com" + ] + } + ] + }, + "kampyle.com": { + "rules": [ + { + "rule": "nebula-cdn.kampyle.com/wu/392339/onsite/embed.js", + "domains": [ + "basspro.com", + "lowes.com" + ] + }, + { + "rule": "kampyle.com", + "domains": [ + "basspro.com" + ] + } + ] + }, + "karte.io": { + "rules": [ + { + "rule": "bs.karte.io", + "domains": [ + "rentio.jp" + ] + } + ] + }, + "kit.com": { + "rules": [ + { + "rule": "kit.com", + "domains": [ + "convertkit.com" + ] + } + ] + }, + "klarnaservices.com": { + "rules": [ + { + "rule": "na-library.klarnaservices.com/lib.js", + "domains": [ + "" + ] + }, + { + "rule": "eu-library.klarnaservices.com/lib.js", + "domains": [ + "" + ] + }, + { + "rule": "osm.library.klarnaservices.com/lib.js", + "domains": [ + "" + ] + }, + { + "rule": "na-library.klarnaservices.com", + "domains": [ + "blueair.com" + ] + } + ] + }, + "klaviyo.com": { + "rules": [ + { + "rule": "www.klaviyo.com/media/js/public/klaviyo_subscribe.js", + "domains": [ + "fearofgod.com", + "restrap.com", + "shopyalehome.com", + "silhouetteu.com" + ] + }, + { + "rule": "static.klaviyo.com/onsite/js/klaviyo.js", + "domains": [ + "" + ] + }, + { + "rule": "a.klaviyo.com/media/js/onsite/onsite.js", + "domains": [ + "bonescoffee.com", + "tanglefree.com" + ] + }, + { + "rule": "klaviyo.com/", + "domains": [ + "" + ] + } + ] + }, + "lightboxcdn.com": { + "rules": [ + { + "rule": "www.lightboxcdn.com/vendor/c605dbd7-cbfb-4e9b-801e-387b0656384c/user.js", + "domains": [ + "andieswim.com" + ] + }, + { + "rule": "lightboxcdn.com/vendor/.*/user.js", + "domains": [ + "nascar.com" + ] + } + ] + }, + "listrakbi.com": { + "rules": [ + { + "rule": "cdn.listrakbi.com/scripts/script.js", + "domains": [ + "" + ] + }, + { + "rule": "oc.listrakbi.com/subscribestatus", + "domains": [ + "fsastore.com", + "ninjakitchen.com" + ] + }, + { + "rule": "listrakbi.com", + "domains": [ + "fsastore.com" + ] + } + ] + }, + "litix.io": { + "rules": [ + { + "rule": "src.litix.io/videojs/", + "domains": [ + "" + ] + } + ] + }, + "loggly.com": { + "rules": [ + { + "rule": "cloudfront.loggly.com/js/loggly.tracker-2.1.min.js", + "domains": [ + "rte.ie" + ] + } + ] + }, + "magsrv.com": { + "rules": [ + { + "rule": "magsrv.com", + "domains": [ + "" + ] + } + ] + }, + "mailerlite.com": { + "rules": [ + { + "rule": "mailerlite.com", + "domains": [ + "" + ] + } + ] + }, + "medallia.com": { + "rules": [ + { + "rule": "cdn.medallia.com/react-surveys/", + "domains": [ + "" + ] + }, + { + "rule": "cdn.medallia.com/react-surveys-next/", + "domains": [ + "dunkinrunsonyou.com", + "survey.voice.va.gov", + "survey.walmart.com" + ] + }, + { + "rule": "digital-cloud-west.medallia.com/", + "domains": [ + "walgreens.com" + ] + }, + { + "rule": "survey.medallia.com/", + "domains": [ + "" + ] + }, + { + "rule": "resources.digital-cloud-gov.medallia.com/", + "domains": [ + "" + ] + } + ] + }, + "media.net": { + "rules": [ + { + "rule": "contextual.media.net/dmedianet.js", + "domains": [ + "oceanofcompressed.xyz" + ] + } + ] + }, + "mediavine.com": { + "rules": [ + { + "rule": "scripts.mediavine.com/tags/cosmic-book-news.js", + "domains": [ + "cosmicbook.news" + ] + }, + { + "rule": "scripts.mediavine.com/tags/food-for-net.js", + "domains": [ + "foodfornet.com" + ] + } + ] + }, + "medicare.gov": { + "rules": [ + { + "rule": "frontend.medicare.gov/static/js/2.6c6651b4.chunk.js", + "domains": [ + "medicare.gov" + ] + } + ] + }, + "memberful.com": { + "rules": [ + { + "rule": "memberful.com/embed.js", + "domains": [ + "" + ] + } + ] + }, + "monetate.net": { + "rules": [ + { + "rule": "monetate.net/img", + "domains": [ + "guitarcenter.com", + "qvc.com" + ] + }, + { + "rule": "monetate.net", + "domains": [ + "kleen-ritecorp.com", + "qvc.com" + ] + } + ] + }, + "mrf.io": { + "rules": [ + { + "rule": "mrf.io", + "domains": [ + "diariodesevilla.es" + ] + } + ] + }, + "nc0.co": { + "rules": [ + { + "rule": "nc0.co/vaa/Bootstrap.js", + "domains": [ + "virginatlantic.com" + ] + } + ] + }, + "news.com.au": { + "rules": [ + { + "rule": "news.com.au", + "domains": [ + "" + ] + } + ] + }, + "nextdoor.com": { + "rules": [ + { + "rule": "nextdoor.com", + "domains": [ + "nextdoor.co.uk" + ] + } + ] + }, + "nintendo.com": { + "rules": [ + { + "rule": "cdn.accounts.nintendo.com/account/js/common.js", + "domains": [ + "nintendo.com" + ] + } + ] + }, + "nitropay.com": { + "rules": [ + { + "rule": "nitropay.com/ads", + "domains": [ + "maxroll.gg" + ] + } + ] + }, + "nosto.com": { + "rules": [ + { + "rule": "connect.nosto.com", + "domains": [ + "" + ] + } + ] + }, + "npttech.com": { + "rules": [ + { + "rule": "npttech.com/advertising.js", + "domains": [ + "blick.ch", + "independent.co.uk", + "slate.com" + ] + } + ] + }, + "omappapi.com": { + "rules": [ + { + "rule": "omappapi.com", + "domains": [ + "dogfoodadvisor.com" + ] + } + ] + }, + "omnitagjs.com": { + "rules": [ + { + "rule": "hb-api.omnitagjs.com/hb-api/prebid/v1", + "domains": [ + "aternos.org" + ] + } + ] + }, + "omtrdc.net": { + "rules": [ + { + "rule": "bankofamerica.tt.omtrdc.net/m2/bankofamerica/mbox/json", + "domains": [ + "bankofamerica.com", + "pizzahut.com" + ] + }, + { + "rule": "cigna.sc.omtrdc.net/public/digital-experience/js/common.js", + "domains": [ + "cigna.com", + "pizzahut.com" + ] + }, + { + "rule": "altriagroupinc.tt.omtrdc.net/rest/v1/delivery", + "domains": [ + "marlboro.com", + "pizzahut.com" + ] + }, + { + "rule": "whirlpool.tt.omtrdc.net/rest/v1/delivery", + "domains": [ + "kitchenaid.com", + "pizzahut.com" + ] + }, + { + "rule": "omtrdc.net", + "domains": [ + "pizzahut.com" + ] + } + ] + }, + "onesignal.com": { + "rules": [ + { + "rule": "cdn.onesignal.com/sdks/OneSignalSDK.js", + "domains": [ + "cosmicbook.news" + ] + } + ] + }, + "opecloud.com": { + "rules": [ + { + "rule": "opecloud.com/ope-asmi.js", + "domains": [ + "bild.de" + ] + } + ] + }, + "open-system.fr": { + "rules": [ + { + "rule": "open-system.fr/widgets-libs/rel/noyau-1.0.min.js", + "domains": [ + "" + ] + } + ] + }, + "opentable.com": { + "rules": [ + { + "rule": "opentable.com/widget/reservation/loader", + "domains": [ + "" + ] + } + ] + }, + "openx.net": { + "rules": [ + { + "rule": "venatusmedia-d.openx.net/w/1.0/arj", + "domains": [ + "aternos.org" + ] + } + ] + }, + "optimizely.com": { + "rules": [ + { + "rule": "optimizely.com/datafiles/", + "domains": [ + "" + ] + }, + { + "rule": "cdn.optimizely.com/js/24096340716.js", + "domains": [ + "hgtv.com" + ] + }, + { + "rule": "cdn.optimizely.com/js/271989291.js", + "domains": [ + "my.zipcar.com" + ] + }, + { + "rule": "cdn.optimizely.com/js/28562140225.js", + "domains": [ + "shipsticks.com" + ] + }, + { + "rule": "logx.optimizely.com", + "domains": [ + "" + ], + "reason": "Testing Nintendo checkout flow" + }, + { + "rule": "cdn.optimizely.com", + "domains": [ + "" + ], + "reason": "Testing Nintendo checkout flow" + } + ] + }, + "osano.com": { + "rules": [ + { + "rule": "dsar.api.osano.com/", + "domains": [ + "" + ] + }, + { + "rule": "cmp.osano.com", + "domains": [ + "" + ] + } + ] + }, + "pardot.com": { + "rules": [ + { + "rule": "go.pardot.com", + "domains": [ + "" + ] + }, + { + "rule": "storage.pardot.com", + "domains": [ + "" + ] + } + ] + }, + "patreon.com": { + "rules": [ + { + "rule": "patreon.com/becomePatronButton.bundle.js", + "domains": [ + "" + ] + } + ] + }, + "permutive.app": { + "rules": [ + { + "rule": "edge.permutive.app", + "domains": [ + "globaltv.com" + ] + } + ] + }, + "plotrabbit.com": { + "rules": [ + { + "rule": "plotrabbit.com", + "domains": [ + "cbssports.com" + ] + } + ] + }, + "primaryarms.com": { + "rules": [ + { + "rule": "images.primaryarms.com/f00000000191638/www.primaryarms.com/SSP%20Applications/NetSuite%20Inc.%20-%20SCA%20Mont%20Blanc/Development/img/", + "domains": [ + "primaryarms.com" + ] + }, + { + "rule": "images.primaryarms.com/f00000000191638/www.primaryarms.com/core/media/media.nl", + "domains": [ + "primaryarms.com" + ] + } + ] + }, + "primis.tech": { + "rules": [ + { + "rule": "video.primis.tech/", + "domains": [ + "wideopencountry.com" + ] + }, + { + "rule": "live.primis.tech/content/omid/static/", + "domains": [ + "wideopencountry.com" + ] + }, + { + "rule": "live.primis.tech/live/", + "domains": [ + "belfastlive.co.uk", + "cornwalllive.com", + "wideopencountry.com" + ] + } + ] + }, + "privacy-center.org": { + "rules": [ + { + "rule": "sdk.privacy-center.org", + "domains": [ + "" + ] + } + ] + }, + "pub.network": { + "rules": [ + { + "rule": "a.pub.network/newser-com/cls.css", + "domains": [ + "newser.com" + ] + }, + { + "rule": "a.pub.network/core/prebid-universal-creative.js", + "domains": [ + "boingboing.net", + "newrepublic.com", + "sciencenews.org", + "signupgenius.com", + "smithsonianmag.com", + "stockcharts.com", + "thenation.com", + "titantv.com" + ] + }, + { + "rule": "a.pub.network/virtualpiano-net/pubfig.min.js", + "domains": [ + "virtualpiano.net" + ] + }, + { + "rule": "a.pub.network/thenation-com/pubfig.min.js", + "domains": [ + "thenation.com" + ] + }, + { + "rule": "a.pub.network/ukutabs-com/pubfig.min.js", + "domains": [ + "ukutabs.com" + ] + }, + { + "rule": "pub.network/", + "domains": [ + "pc-builds.com" + ] + } + ] + }, + "pubmatic.com": { + "rules": [ + { + "rule": "ads.pubmatic.com/AdServer/", + "domains": [ + "hindustantimes.com" + ] + }, + { + "rule": "hbopenbid.pubmatic.com/translator", + "domains": [ + "aternos.org" + ] + } + ] + }, + "pubnation.com": { + "rules": [ + { + "rule": "scripts.pubnation.com/tags/", + "domains": [ + "n4g.com" + ] + } + ] + }, + "pure.cloud": { + "rules": [ + { + "rule": "pure.cloud/genesys-bootstrap/genesys.min.js", + "domains": [ + "" + ] + } + ] + }, + "qualtrics.com": { + "rules": [ + { + "rule": "qualtrics.com", + "domains": [ + "" + ] + } + ] + }, + "quantserve.com": { + "rules": [ + { + "rule": "secure.quantserve.com/quant.js", + "domains": [ + "aternos.org", + "oceanofcompressed.xyz" + ] + } + ] + }, + "queryly.com": { + "rules": [ + { + "rule": "api.queryly.com/v4/search.aspx", + "domains": [ + "fastcompany.com" + ] + } + ] + }, + "reddit.com": { + "rules": [ + { + "rule": "embed.reddit.com/", + "domains": [ + "" + ] + }, + { + "rule": "gql.reddit.com/", + "domains": [ + "" + ] + } + ] + }, + "redditstatic.com": { + "rules": [ + { + "rule": "redditstatic.com/shreddit/", + "domains": [ + "" + ] + } + ] + }, + "route.com": { + "rules": [ + { + "rule": "protection-widget.route.com/protect.core.js", + "domains": [ + "" + ] + } + ] + }, + "rumble.com": { + "rules": [ + { + "rule": "rumble.com/j/p/ui.r2.js", + "domains": [ + "" + ] + } + ] + }, + "sail-horizon.com": { + "rules": [ + { + "rule": "ak.sail-horizon.com/spm/spm.v1.min.js", + "domains": [ + "financialpost.com" + ] + } + ] + }, + "salesforce-sites.com": { + "rules": [ + { + "rule": "salesforce-sites.com/forms", + "domains": [ + "greenworkstools.com" + ] + } + ] + }, + "sascdn.com": { + "rules": [ + { + "rule": "sascdn.com/tag/", + "domains": [ + "filmweb.pl" + ] + } + ] + }, + "scene7.com": { + "rules": [ + { + "rule": "scene7.com/is/image/", + "domains": [ + "" + ] + }, + { + "rule": "scene7.com/s7viewersdk", + "domains": [ + "" + ] + } + ] + }, + "scorecardresearch.com": { + "rules": [ + { + "rule": "sb.scorecardresearch.com/c2/plugins/streamingtag_plugin_jwplayer.js", + "domains": [ + "" + ] + }, + { + "rule": "sb.scorecardresearch.com/internal-c2/default/streamingtag_plugin_jwplayer.js", + "domains": [ + "" + ] + } + ] + }, + "searchspring.io": { + "rules": [ + { + "rule": "searchspring.io", + "domains": [ + "" + ] + } + ] + }, + "segment.com": { + "rules": [ + { + "rule": "cdn.segment.com", + "domains": [ + "" + ] + } + ] + }, + "shop.app": { + "rules": [ + { + "rule": "shop.app/pay/session", + "domains": [ + "" + ] + }, + { + "rule": "shop.app", + "domains": [ + "" + ] + } + ] + }, + "skimresources.com": { + "rules": [ + { + "rule": "go.skimresources.com/", + "domains": [ + "www.lotustalk.com" + ] + } + ] + }, + "slickstream.com": { + "rules": [ + { + "rule": "app.slickstream.com", + "domains": [ + "" + ] + }, + { + "rule": "c.slickstream.com/app/", + "domains": [ + "" + ] + } + ] + }, + "smartadserver.com": { + "rules": [ + { + "rule": "smartadserver.com/genericpost", + "domains": [ + "filmweb.pl" + ] + } + ] + }, + "snapkit.com": { + "rules": [ + { + "rule": "snapkit.com/js/v1/create.js", + "domains": [ + "" + ] + } + ] + }, + "speedcurve.com": { + "rules": [ + { + "rule": "cdn.speedcurve.com/js/lux.js", + "domains": [ + "inquirer.com" + ] + } + ] + }, + "stripe.com": { + "rules": [ + { + "rule": "js.stripe.com/basil/stripe.js", + "domains": [ + "" + ] + } + ] + }, + "succeedscene.com": { + "rules": [ + { + "rule": "succeedscene.com", + "domains": [ + "" + ] + } + ] + }, + "syndicatedsearch.goog": { + "rules": [ + { + "rule": "syndicatedsearch.goog/adsense/search/ads.js", + "domains": [ + "webmd.com" + ] + } + ] + }, + "taboola.com": { + "rules": [ + { + "rule": "cdn.taboola.com/libtrc/tipranks-tipranks/loader.js", + "domains": [ + "tipranks.com" + ] + } + ] + }, + "tealiumiq.com": { + "rules": [ + { + "rule": "visitor-service-us-east-1.tealiumiq.com/asics/main/", + "domains": [ + "asics.com" + ] + } + ] + }, + "tfaforms.net": { + "rules": [ + { + "rule": "tfaforms.net", + "domains": [ + "" + ] + } + ] + }, + "theadex.com": { + "rules": [ + { + "rule": "dmp.theadex.com/", + "domains": [ + "servustv.com" + ] + } + ] + }, + "third-party.site": { + "rules": [ + { + "rule": "allowlisted.third-party.site", + "domains": [ + "privacy-test-pages.site" + ] + } + ] + }, + "tiktok.com": { + "rules": [ + { + "rule": "www.tiktok.com/embed", + "domains": [ + "" + ] + } + ] + }, + "tiqcdn.com": { + "rules": [ + { + "rule": "tags.tiqcdn.com/utag/.*/utag.js", + "domains": [ + "" + ] + }, + { + "rule": "tags.tiqcdn.com/utag/.*/utag..*.js", + "domains": [ + "" + ] + }, + { + "rule": "tags.tiqcdn.com/utag/cbsi/", + "domains": [ + "cbs.com", + "paramountplus.com" + ] + }, + { + "rule": "tags.tiqcdn.com/utag/", + "domains": [ + "" + ] + } + ] + }, + "trackjs.com": { + "rules": [ + { + "rule": "cdn.trackjs.com/agent/v3/latest/t.js", + "domains": [ + "delta.com" + ] + } + ] + }, + "tremorhub.com": { + "rules": [ + { + "rule": "tremorhub.com/getTVID", + "domains": [ + "sbs.com.au" + ] + } + ] + }, + "trustpilot.com": { + "rules": [ + { + "rule": "widget.trustpilot.com/trustboxes/", + "domains": [ + "" + ] + }, + { + "rule": "widget.trustpilot.com/trustbox-data/", + "domains": [ + "" + ] + }, + { + "rule": "widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js", + "domains": [ + "" + ] + }, + { + "rule": "widget.trustpilot.com/bootstrap/v5/tp.widget.sync.bootstrap.min.js", + "domains": [ + "" + ] + } + ] + }, + "tsyndicate.com": { + "rules": [ + { + "rule": "vacdn.tsyndicate.com", + "domains": [ + "pornhub.com" + ] + } + ] + }, + "twitter.com": { + "rules": [ + { + "rule": "platform.twitter.com/embed/embed", + "domains": [ + "" + ] + }, + { + "rule": "platform.twitter.com/widgets/tweet_button", + "domains": [ + "winnipegfreepress.com" + ] + }, + { + "rule": "platform.twitter.com/_next/static", + "domains": [ + "" + ] + } + ] + }, + "unbxdapi.com": { + "rules": [ + { + "rule": "libraries.unbxdapi.com/", + "domains": [ + "boscovs.com" + ] + } + ] + }, + "usabilla.com": { + "rules": [ + { + "rule": "api.usabilla.com", + "domains": [ + "" + ] + }, + { + "rule": "w.usabilla.com", + "domains": [ + "" + ] + } + ] + }, + "viafoura.net": { + "rules": [ + { + "rule": "cdn.viafoura.net/vf-v2.js", + "domains": [ + "apnews.com", + "gbnews.com", + "independent.co.uk", + "telegraph.co.uk" + ] + } + ] + }, + "viglink.com": { + "rules": [ + { + "rule": "cdn.viglink.com/api/vglnk.js", + "domains": [ + "9to5mac.com" + ] + } + ] + }, + "visualwebsiteoptimizer.com": { + "rules": [ + { + "rule": "dev.visualwebsiteoptimizer.com/j.php", + "domains": [ + "arlo.com", + "searchhudforeclosures.com", + "stiga.com" + ] + } + ] + }, + "weglot.com": { + "rules": [ + { + "rule": "cdn.weglot.com/weglot.min.js", + "domains": [ + "cherrycreekschools.org", + "myavista.com" + ] + } + ] + }, + "wknd.ai": { + "rules": [ + { + "rule": "tag.wknd.ai", + "domains": [ + "payment.nba.com" + ] + } + ] + }, + "wovn.io": { + "rules": [ + { + "rule": "j.wovn.io/1", + "domains": [ + "" + ] + } + ] + }, + "wpadmngr.com": { + "rules": [ + { + "rule": "js.wpadmngr.com/static/adManager.js", + "domains": [ + "luscious.net" + ] + } + ] + }, + "yandex.ru": { + "rules": [ + { + "rule": "frontend.vh.yandex.ru/player/", + "domains": [ + "" + ] + }, + { + "rule": "strm.yandex.ru/get/", + "domains": [ + "" + ] + }, + { + "rule": "strm.yandex.ru/vh-special-converted/vod-content/", + "domains": [ + "" + ] + }, + { + "rule": "yandex.ru/map-widget/", + "domains": [ + "" + ] + } + ] + }, + "yieldlove.com": { + "rules": [ + { + "rule": "cdn-a.yieldlove.com/v2/yieldlove.js", + "domains": [ + "whatismyip.com" + ] + } + ] + }, + "yotpo.com": { + "rules": [ + { + "rule": "yotpo.com", + "domains": [ + "" + ] + } + ] + }, + "yottaa.com": { + "rules": [ + { + "rule": "cdn.yottaa.com/rapid.min.", + "domains": [ + "" + ] + }, + { + "rule": "cdn.yottaa.com/rapid.security.min.", + "domains": [ + "" + ] + }, + { + "rule": "rapid-cdn.yottaa.com/rapid/lib/", + "domains": [ + "" + ] + } + ] + }, + "zencdn.net": { + "rules": [ + { + "rule": "vjs.zencdn.net", + "domains": [ + "" + ] + } + ] + }, + "zip.co": { + "rules": [ + { + "rule": "zip.co/v1/quadpay.js", + "domains": [ + "" + ] + } + ] + }, + "rbcroyalbank.com": { + "rules": [ + { + "rule": "collect.rbcroyalbank.com/collect.js", + "domains": [ + "goodwillfinds.com" + ] + } + ] + }, + "scmp.com": { + "rules": [ + { + "rule": "profiles.ope.scmp.com/ope-asmi.js", + "domains": [ + "bild.de" + ] + }, + { + "rule": "tagger.ope.scmp.com/ope-asmi.js", + "domains": [ + "bild.de" + ] + } + ] + }, + "canadapost-postescanada.ca": { + "rules": [ + { + "rule": "evaluation.canadapost-postescanada.ca", + "domains": [ + "" + ] + } + ] + }, + "goto.com": { + "rules": [ + { + "rule": "feedback.goto.com", + "domains": [ + "" + ] + } + ] + }, + "eltiempo.co": { + "rules": [ + { + "rule": "ads.eltiempo.co/genericpost", + "domains": [ + "filmweb.pl" + ] + } + ] + }, + "yandex.tm": { + "rules": [ + { + "rule": "mc.yandex.tm/map-widget/", + "domains": [ + "" + ] + } + ] + } + } + }, + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "hash": "2f704e1c5d9db94aaf33e850c1093dc1" + }, + "trackingCookies1p": { + "settings": { + "firstPartyTrackerCookiePolicy": { + "threshold": 86400, + "maxAge": 86400 + } + }, + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "fce1e0c0488e12224b7b9ad30e6aa9ca" + }, + "trackingCookies3p": { + "settings": { + "excludedCookieDomains": [] + }, + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "disabled", + "hash": "41c579cb7ba082e37433e9da31891fb4" + }, + "trackingParameters": { + "exceptions": [ + { + "domain": "axs.com" + }, + { + "domain": "urldefense.com" + }, + { + "domain": "centerwellpharmacy.com" + }, + { + "domain": "go365.com" + }, + { + "domain": "humana.com" + }, + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "settings": { + "parameters": [ + "utm_source", + "utm_medium", + "utm_campaign", + "utm_term", + "utm_content", + "gclid", + "fbclid", + "fb_action_ids", + "fb_action_types", + "fb_source", + "fb_ref", + "ga_source", + "ga_medium", + "ga_term", + "ga_content", + "ga_campaign", + "ga_place", + "action_object_map", + "action_type_map", + "action_ref_map", + "gs_l", + "mkt_tok", + "hmb_campaign", + "hmb_source", + "hmb_medium" + ] + }, + "state": "enabled", + "minSupportedVersion": "0.22.3", + "hash": "ab112f14300bafa5292a0ae7d676bb19" + }, + "uaChBrands": { + "state": "disabled", + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "nintendo.com" + } + ], + "hash": "d1de5124ffe40b824efc688efdfa277d" + }, + "voiceSearch": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "webBrokenSiteForm": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "webCompat": { + "exceptions": [ + { + "domain": "marvel.com" + }, + { + "domain": "noaprints.com" + }, + { + "domain": "lastpass.com" + }, + { + "domain": "nintendo.com" + } + ], + "state": "enabled", + "settings": { + "windowSizing": "enabled", + "navigatorCredentials": "enabled", + "safariObject": "enabled", + "webNotifications": { + "state": "enabled", + "nativeEnabled": true + }, + "messageHandlers": { + "state": "disabled", + "handlerStrategies": { + "reflect": [ + "contentScopeScripts", + "trackerDetectedMessage", + "printHandler", + "specialPages" + ], + "polyfill": [ + "*" + ], + "undefined": [] + } + }, + "domains": [ + { + "domain": "docs.google.com", + "patchSettings": [ + { + "op": "replace", + "path": "/windowSizing", + "value": "disabled" + } + ] + }, + { + "domain": [ + "www.cbsnews.com", + "myhome.experian.co.uk", + "luna.amazon.com" + ], + "patchSettings": [ + { + "op": "replace", + "path": "/messageHandlers/state", + "value": "enabled" + } + ] + } + ] + }, + "hash": "d8c92c9528336d684ab286c8d24f98b6" + }, + "webInterferenceDetection": { + "state": "enabled", + "exceptions": [], + "minSupportedVersion": "1.172.0", + "settings": { + "autoRunDelayMs": 100, + "interferenceTypes": { + "botDetection": { + "cloudflareTurnstile": { + "state": "enabled", + "vendor": "cloudflare", + "selectors": [ + ".cf-turnstile", + "script[src*=\"challenges.cloudflare.com\"]" + ], + "windowProperties": [ + "turnstile" + ], + "statusSelectors": [ + { + "status": "solved", + "selectors": [ + "[data-state=\"success\"]" + ] + }, + { + "status": "failed", + "selectors": [ + "[data-state=\"error\"]" + ] + } + ] + }, + "hcaptcha": { + "state": "enabled", + "vendor": "hcaptcha", + "selectors": [ + ".h-captcha", + "[data-hcaptcha-widget-id]", + "script[src*=\"hcaptcha.com\"]" + ], + "windowProperties": [ + "hcaptcha" + ] + } + }, + "fraudDetection": { + "phishingWarning": { + "state": "enabled", + "type": "phishing", + "selectors": [ + ".warning-banner", + "#security-alert" + ], + "textPatterns": [ + "suspicious.*activity", + "unusual.*login" + ], + "textSources": [ + "innerText" + ] + } + } + } + }, + "hash": "8faabfbde2ef14ba0a5558781e4b9d0e" + }, + "webViewStateRestoration": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "webViewBlobDownload": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsDownloadLink": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsExternalPreviewReleases": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsFireWindow": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsNewTabPageExperiment": { + "state": "disabled", + "exceptions": [], + "hash": "c292bb627849854515cebbded288ef5a" + }, + "windowsPermissionUsage": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsPrecisionScroll": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsSpellChecker": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsStartupBoost": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsWaitlist": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsWebViewPermissionsSavesInProfile": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "windowsWebviewFailures": { + "exceptions": [], + "state": "disabled", + "hash": "728493ef7a1488e4781656d3f9db84aa" + }, + "updatesWontAutomaticallyRestartApp": { + "state": "disabled", + "exceptions": [], + "minSupportedVersion": "1.161.0", + "hash": "0626a63217cd518a485609a3aa22f584" + }, + "popupBlocking": { + "state": "enabled", + "minSupportedVersion": "1.168.0", + "exceptions": [], + "settings": { + "userInitiatedPopupThreshold": 6, + "allowlist": [ + "duckduckgo.com", + "amazon.com", + "becu.org", + "capitalone.com", + "chase.com", + "github.com", + "google.com", + "googleusercontent.com", + "guitarcenter.com", + "live.com", + "microsoftonline.com", + "msn.com", + "office.com", + "pnc.com", + "reddit.com", + "techtitute.com", + "ups.com", + "userinterviews.com", + "zoom.com", + "zoom.us", + "zoomgov.com" + ] + }, + "hash": "775df210fa8642b977ae3bd225ceb56a" + }, + "dataImport": { + "state": "enabled", + "exceptions": [], + "features": { + "newDataImportExperience": { + "state": "enabled", + "minSupportedVersion": "1.169.0" + } + }, + "hash": "84c74e0d6ac52a3b19fc8429f677ee97" + }, + "updates": { + "state": "enabled", + "exceptions": [], + "features": { + "simplifiedFlow": { + "state": "internal", + "minSupportedVersion": "1.174.0" + } + }, + "hash": "4b5e75504131aaa639ea5d0e7d78cfa4" + } + }, + "unprotectedTemporary": [ + { + "domain": "nintendo.com", + "reason": "Testing - checkout flow breakage investigation" + }, + { + "domain": "www.nintendo.com", + "reason": "Testing - checkout flow breakage investigation via TEST_PRIVACY_CONFIG_PATH" + }, + { + "domain": "publisher-company.site", + "reason": "Testing unprotectedTemporary" + }, + { + "domain": "www.publisher-company.site", + "reason": "Testing unprotectedTemporary" + } + ] +} \ No newline at end of file diff --git a/test-configs/unprotected-all.json b/test-configs/unprotected-all.json new file mode 100644 index 0000000..b4ccbcc --- /dev/null +++ b/test-configs/unprotected-all.json @@ -0,0 +1,68 @@ +{ + "readme": "Test config with all sites unprotected - for control testing", + "version": 1, + "features": { + "trackerAllowlist": { + "state": "enabled", + "settings": { + "allowlistedTrackers": { + "ad-company.site": { + "rules": [ + { + "rule": "ad-company.site", + "domains": [""], + "reason": "Control test - allow all trackers" + } + ] + }, + "convert.ad-company.site": { + "rules": [ + { + "rule": "convert.ad-company.site", + "domains": [""], + "reason": "Control test - allow all trackers" + } + ] + }, + "google-analytics.com": { + "rules": [ + { + "rule": "google-analytics.com", + "domains": [""], + "reason": "Control test" + } + ] + }, + "googletagmanager.com": { + "rules": [ + { + "rule": "googletagmanager.com", + "domains": [""], + "reason": "Control test" + } + ] + }, + "facebook.net": { + "rules": [ + { + "rule": "facebook.net", + "domains": [""], + "reason": "Control test" + } + ] + } + } + } + } + }, + "unprotectedTemporary": [ + { + "domain": "publisher-company.site", + "reason": "Control test - all sites unprotected" + }, + { + "domain": "ad-company.site", + "reason": "Control test - all sites unprotected" + } + ] +} diff --git a/tsconfig.json b/tsconfig.json index ff41c7e..f905627 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,21 +1,17 @@ { "compilerOptions": { - "target": "es2021", - "module": "ESNext", - "moduleResolution": "node", - "alwaysStrict": true, - "allowJs": true, - "checkJs": true, - "noEmit": true, - "noImplicitReturns": true, - "strictNullChecks": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "skipLibCheck": true + "target": "es2021", + "module": "ESNext", + "moduleResolution": "node", + "alwaysStrict": true, + "allowJs": true, + "checkJs": true, + "noEmit": true, + "noImplicitReturns": true, + "strictNullChecks": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true }, - "exclude": [ - "web-platform-tests", - "node_modules" - ] - } - \ No newline at end of file + "exclude": ["web-platform-tests", "node_modules", "webdriver/src"] +} diff --git a/web-platform-tests b/web-platform-tests index 4110ada..4a8b10d 160000 --- a/web-platform-tests +++ b/web-platform-tests @@ -1 +1 @@ -Subproject commit 4110ada1b66a0d7f2470dc32e4c9366284c7d4bc +Subproject commit 4a8b10d354d0098e56cdadb4cb8c02202d45135d diff --git a/webdriver/.DS_Store b/webdriver/.DS_Store deleted file mode 100644 index eb56c6f..0000000 Binary files a/webdriver/.DS_Store and /dev/null differ diff --git a/webdriver/.gitignore b/webdriver/.gitignore index ea8c4bf..8b77e24 100644 --- a/webdriver/.gitignore +++ b/webdriver/.gitignore @@ -1 +1,3 @@ /target +cacert.pem +output.log diff --git a/webdriver/Cargo.lock b/webdriver/Cargo.lock index 52b6d09..967588d 100644 --- a/webdriver/Cargo.lock +++ b/webdriver/Cargo.lock @@ -277,6 +277,7 @@ dependencies = [ "serde_json", "url", "urlencoding", + "uuid", "webdriver", ] @@ -451,6 +452,18 @@ dependencies = [ "wasi", ] +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + [[package]] name = "gimli" version = "0.31.1" @@ -886,9 +899,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -1116,6 +1129,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "regex" version = "1.11.1" @@ -1197,7 +1216,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -1262,6 +1281,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + [[package]] name = "ryu" version = "1.0.18" @@ -1692,6 +1717,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "vcpkg" version = "0.2.15" @@ -1747,35 +1783,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] -name = "wasm-bindgen" -version = "0.2.99" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "cfg-if", - "once_cell", - "wasm-bindgen-macro", + "wit-bindgen", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.99" +name = "wasm-bindgen" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if", "js-sys", @@ -1786,9 +1819,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1796,28 +1829,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ + "bumpalo", "proc-macro2", "quote", "syn", - "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -1958,6 +1994,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + [[package]] name = "write16" version = "1.0.0" diff --git a/webdriver/Cargo.toml b/webdriver/Cargo.toml index a839851..78f7912 100644 --- a/webdriver/Cargo.toml +++ b/webdriver/Cargo.toml @@ -15,4 +15,5 @@ serde_derive = "1.0.215" serde_json = "1.0.133" url = "2.5.4" urlencoding = "2.1.3" +uuid = { version = "1.11", features = ["v4"] } webdriver = "0.51.0" diff --git a/webdriver/KNOWN_ISSUES.md b/webdriver/KNOWN_ISSUES.md new file mode 100644 index 0000000..55546e1 --- /dev/null +++ b/webdriver/KNOWN_ISSUES.md @@ -0,0 +1,534 @@ +# Known Issues with FindElements Implementation + +This document tracks all known issues encountered during the implementation of the `FindElements` WebDriver command. + +## Issue 1: "Invalid device" Error + +**Status:** ✅ Resolved +**Severity:** Medium +**Location:** macOS Automation Server logs + +### Description + +When executing `FindElements` commands (and other commands), the macOS automation server logs showed: + +``` +Invalid device: 5b7970ec-fbe6-490f-8c3d-15c9a9fd1cf1 +``` + +### Symptoms + +- Error appeared in macOS app logs before script execution +- The script still executed and returned a response (empty array `[]`) +- The error didn't prevent the command from completing, but indicated a session management issue + +### Root Cause Analysis + +**Root Cause:** The `FindElements` handler (and many other handlers) were using `server_request()` which is the iOS-only function that calls `monitor_simulator_logs()`. On macOS, this function tried to use the session ID (a UUID) as a simulator UDID, causing the "Invalid device" error. + +The correct function `server_request_for_platform()` exists and properly handles both iOS and macOS platforms, but it wasn't being used. + +### Fix Applied + +Replaced all calls to `server_request()` with `server_request_for_platform()` throughout the handler, passing the detected platform: + +```rust +// Before (incorrect): +let response = server_request(session_id, "execute", &url_params); + +// After (correct): +let response = server_request_for_platform(session_id, &platform, "execute", &url_params); +``` + +**Commands Fixed:** + +- `FindElements` +- `FindElement` +- `ExecuteScript` +- `ExecuteAsyncScript` +- `ElementClick` +- `Navigate` +- `NewWindow` +- `CloseWindow` +- `SwitchToWindow` +- `GetWindowHandle` +- `GetWindowHandles` +- `GetCurrentUrl` + +### Related Files + +- `shared-web-tests/webdriver/src/handler.rs` - All command handlers updated + +--- + +## Issue 2: FindElements Returns Empty Array + +**Status:** 🔴 Unresolved +**Severity:** High +**Location:** `FindElements` command handler + +### Description + +The `FindElements` command executes successfully but returns an empty array `[]` even when elements matching the selector should exist on the page. + +### Symptoms + +- Command executes without errors +- Response format is correct: `{"requestPath": "/execute", "message": "[]"}` +- `element_ids` vector is empty: `FindElements response: "[]", element_ids: []` +- Test script reports "Found 0 clickable element(s)" + +### Root Cause Analysis + +**Hypothesis 1: JavaScript variables `using` and `value` are undefined** + +- The automation server decodes the `args` JSON string into `[String: String]` +- These dictionary keys should become JavaScript variables via `callAsyncJavaScript` +- If `using` and `value` are undefined, `selectElements(using, value)` would fail silently or return empty results + +**Hypothesis 2: Page not ready when script executes** + +- The script checks `document.readyState != 'complete'` and waits for load event +- However, elements might not be rendered yet even after load event +- The retry logic (5 attempts with exponential backoff) might not be sufficient + +**Hypothesis 3: Selector not matching elements** + +- The CSS selector `"button, input[type=\"button\"], input[type=\"submit\"]"` might not match elements on the page +- Elements might be dynamically created after the script runs +- Elements might be in shadow DOM or iframes + +### Evidence + +- The URL-encoded args are correctly formatted: `args=%7B%22using%22%3A%22css%20selector%22%2C%22value%22%3A%22button%2C%20input%5Btype%3D%5C%22button%5C%22%5D%2C%20input%5Btype%3D%5C%22submit%5C%22%5D%22%7D` +- When decoded: `{"using":"css selector","value":"button, input[type=\"button\"], input[type=\"submit\"]"}` +- The script structure matches `find-element.js` which works correctly + +### Fixes Attempted + +1. ✅ Added error handling to detect undefined `using`/`value` variables in `find-elements.js` +2. ✅ Fixed response parsing to handle the `message` field extraction correctly +3. ✅ Added try-catch error handling to catch JavaScript errors +4. ✅ Added `readyState` check inside retry logic to ensure page is loaded +5. ✅ Fixed `FindElement` response parsing (was incorrectly accessing `parsed["message"]` when response is already the message) +6. ⏳ Changes added but not yet tested (requires rebuild) + +### Next Steps + +1. **Rebuild WebDriver** and test with error handling to see if `using`/`value` are undefined +2. **Add logging** in the JavaScript to log the values of `using` and `value` when the script runs +3. **Verify page state** - check if the page is fully loaded and elements are rendered +4. **Test selector manually** - verify the CSS selector works in browser DevTools +5. **Compare with FindElement** - check if `FindElement` works with the same selector on the same page + +### Related Files + +- `shared-web-tests/webdriver/src/handler.rs` (lines 960-993) - FindElements handler +- `shared-web-tests/webdriver/src/find-elements.js` - JavaScript implementation +- `shared-web-tests/webdriver/src/find-element.js` - Reference implementation (works) + +--- + +## Issue 3: Response Parsing Logic + +**Status:** ✅ Resolved +**Severity:** Low +**Location:** `FindElements` handler response parsing + +### Description + +Initial implementation attempted to parse the response as a JSON object with a `message` field, but `server_request` already extracts the `message` field. + +### Root Cause + +The `make_server_request` function (line 473-502) already extracts the `message` field from the automation server's JSON response and returns it as a string. The `FindElements` handler was incorrectly trying to parse this string as a JSON object and access a `message` field again. + +### Fix Applied + +Changed parsing logic to directly parse the `response` string (which is already the JSON array string) into a `Value::Array`: + +```rust +let element_ids_array: Value = serde_json::from_str(&response) + .unwrap_or(Value::Array(Vec::new())); +``` + +### Related Files + +- `shared-web-tests/webdriver/src/handler.rs` (lines 971-986) + +--- + +## Issue 4: Missing Error Handling for Undefined Variables + +**Status:** ⏳ In Progress +**Severity:** Medium +**Location:** `find-elements.js` + +### Description + +The JavaScript script doesn't check if `using` and `value` variables are defined before using them. If they're undefined, the script would fail silently or throw an error that's not properly handled. + +### Fix Applied + +Added error handling at the start of `findElements()` function: + +```javascript +if (typeof using === 'undefined' || typeof value === 'undefined') { + reject(new Error('using or value is undefined. using: ' + typeof using + ', value: ' + typeof value)); + return; +} +``` + +### Status + +- ✅ Code added to `find-elements.js` +- ✅ Added try-catch wrapper to catch all JavaScript errors +- ✅ Added `readyState` check in retry logic +- ⏳ Not yet tested (requires rebuild) + +### Related Files + +- `shared-web-tests/webdriver/src/find-elements.js` (line 40-43) + +--- + +## Summary + +### Critical Issues (Blocking) + +1. **FindElements Returns Empty Array** - The command doesn't find elements that should exist + +### Non-Critical Issues + +1. **"Invalid device" Error** - Appears in logs but doesn't prevent execution +2. **Missing Error Handling** - Added but not yet tested + +### Resolved Issues + +1. ✅ Response parsing logic fixed + +--- + +## Testing Checklist + +- [ ] Rebuild WebDriver binary +- [ ] Test FindElements with error handling enabled +- [ ] Verify `using` and `value` variables are defined in JavaScript context +- [ ] Test with a simple page that has known button elements +- [ ] Compare behavior with `FindElement` command on same page +- [ ] Check macOS app logs for additional error messages +- [ ] Verify session management and port mapping + +--- + +## Notes + +- The `FindElement` command works correctly, so the pattern should be the same for `FindElements` +- The automation server's `callAsyncJavaScript` API should make dictionary keys available as JavaScript variables +- The "Invalid device" error might be a red herring if the command still executes successfully + +--- + +## Issue 5: "DuckDuckGo quit unexpectedly" Crash Dialog + +**Status:** ✅ Resolved +**Severity:** Medium +**Location:** `quit_macos_app()` function and `teardown_session()` trait method + +### Description + +When the WebDriver server was killed or crashed, the macOS DuckDuckGo app would show a crash dialog because it wasn't receiving clean shutdown signals. + +### Root Cause + +1. `quit_macos_app()` only sent an AppleScript quit command without waiting or retrying +2. `teardown_session()` was commented out and never performed cleanup +3. No graceful shutdown sequence with fallback to SIGTERM before SIGKILL + +### Fix Applied + +1. **Enhanced `quit_macos_app()`** to include: + - AppleScript quit with 5-second wait + - SIGTERM fallback with 3-second wait + - SIGKILL as last resort (may still show dialog) + +2. **Enabled `teardown_session()`** to: + - Detect platform via `Platform::from_env()` + - Call `quit_macos_app()` on explicit session delete + +3. **Added NPM cleanup scripts:** + - `npm run driver:cleanup` - Graceful cleanup of sessions and processes + - `npm run driver:kill` - Force kill for recovery + - `npm run driver:restart:macos` - Cleanup + restart + +### Prevention + +- Always use `npm run driver:cleanup` before starting tests +- Use `--no-keep` flag to auto-close browser when test ends +- Use `npm run test:search-company:auto` which handles cleanup automatically + +--- + +## Issue 6: getText() Returns Empty for Button Elements + +**Status:** 🟡 Documented (Workaround Available) +**Severity:** Low +**Location:** WebDriver `GetElementText` command + +### Description + +The WebDriver `getText()` method returns empty strings for button elements, even when those elements have visible text content. Debug output shows elements are found correctly (e.g., "101 buttons found") but `getText()` returns empty for all of them. + +### Symptoms + +- `findElements()` correctly finds button elements +- `getText()` on those elements returns empty string `""` +- Visual inspection confirms buttons have text content +- Issue appears to be WebDriver-specific, not DOM-related + +### Root Cause + +This appears to be a quirk with how WebDriver's `getText()` implementation handles certain button elements. The WebDriver spec's text extraction algorithm may not handle all button content patterns correctly (e.g., nested elements, pseudo-elements, or specific CSS configurations). + +### Workaround + +Use `executeScript()` to get button text directly via JavaScript instead of `getText()`: + +```javascript +// Instead of: +const text = await button.getText(); + +// Use: +const text = await driver.executeScript( + 'return arguments[0].innerText || arguments[0].textContent || arguments[0].value || "";', + button +); +``` + +### Related Files + +- `shared-web-tests/webdriver/src/handler.rs` - GetElementText handler +- `shared-web-tests/scripts/debug-utils.mjs` - Debug utilities (see Debug Tools section below) +- `shared-web-tests/scripts/diagnose-site.mjs` - Site diagnostic crawler + +--- + +## Debug Tools + +**Location:** `shared-web-tests/scripts/debug-utils.mjs` + +### Available Debug Scripts + +| Script | Description | Returns | +|--------|-------------|---------| +| `actionableElements` | Get all clickable elements (buttons, links, etc.) | Array of `{ tag, text, href, selector, rect, visible }` | +| `findByText` | Find elements containing specific text | Array of `{ tag, text, selector, visible }` | +| `linkAnalysis` | Group links by type (navigation, JS-triggered, external) | `{ navigation: [], jsTriggered: [], external: [] }` | +| `domTracker` | Track DOM mutations (start/stop mode) | `{ added: [], removed: [], attributes: [] }` | +| `debugClick` | Click an element and report what happened | `{ element, events, urlChanged, newUrl }` | +| `formInputs` | Get all form inputs on page | Array of `{ name, type, id, selector, value }` | +| `detectModals` | Check for open modals/dialogs | `{ hasModal: boolean, modals: [] }` | +| `startConsoleCapture` | Begin capturing console.log/warn/error | `{ status: 'capturing' }` | +| `getConsoleLogs` | Retrieve captured console logs | `{ logs: [], count: number }` | +| `clearConsoleLogs` | Clear captured logs without stopping | `{ cleared: number }` | +| `getResourceErrors` | Find failed resource loads | `{ errors: [], resources: [] }` | +| `pageState` | Get page state summary | `{ url, title, readyState, viewport, cookies }` | + +### Helper Functions + +```javascript +import { runDebug, logActionableElements, trackDomChanges, captureConsoleDuring } from './debug-utils.mjs'; + +// Run any debug script +const elements = await runDebug(driver, 'actionableElements'); + +// Log clickable elements with formatting +await logActionableElements(driver, { filter: 'submit', buttonsOnly: true }); + +// Track DOM changes around an action +const changes = await trackDomChanges(driver, async () => { + await element.click(); +}); + +// Capture console during action +const { logs, result } = await captureConsoleDuring(driver, async () => { + return await someAction(); +}); +``` + +### Site Diagnostic Mode + +**Script:** `npm run diagnose -- ` + +Automated crawler that randomly explores a site: + +```bash +# Basic usage +npm run diagnose -- https://example.com + +# With screenshots after each click +npm run diagnose:screenshot -- https://example.com + +# Deep exploration (30 clicks, 5 levels deep) +npm run diagnose:deep -- https://example.com + +# Custom options +npm run diagnose -- https://example.com --max-clicks 20 --max-depth 3 --screenshot --report report.json +``` + +**Options:** +- `--max-clicks N` - Maximum clicks to perform (default: 15) +- `--max-depth N` - Maximum navigation depth (default: 3) +- `--screenshot` - Take screenshot after each click +- `--stay-on-domain` / `--no-stay-on-domain` - Restrict to same domain (default: stay) +- `--keep` - Keep browser open after completion +- `--report FILE` - Save JSON report to file + +**Output:** +- Logs each click with selector, text, and target URL +- Reports DOM changes and console errors per click +- Summarizes pages visited, errors logged, modals encountered +- Identifies potential issues (JS errors, failed clicks, modal blockers) + +--- + +## Issue 7: Popup Blocker Prevents window.open() in Automation + +**Status:** ✅ Resolved (macOS) +**Severity:** High +**Location:** `ElementClick` handler, browser popup blocker + +### Description + +Sites that use `window.open()` on click (e.g., Nintendo's "Add to Cart" button) fail in automation because the browser's popup blocker prevents the new window/tab from opening. This works in normal browser usage but fails under WebDriver automation. + +### Root Cause + +Browsers only allow `window.open()` within a **user activation context** - an event chain initiated by a trusted user gesture. The current `ElementClick` implementation uses JavaScript's `element.click()`: + +```rust +// handler.rs ElementClick handler +element.click(); +return "clicked"; +``` + +This creates a synthetic click event with `isTrusted: false`, which browsers don't consider a user gesture for popup blocking purposes. + +### Why Native Clicks Won't Work + +**Option 1 (Native event dispatch via accessibility APIs) is not viable because:** + +1. **iOS**: No accessibility-based click mechanism available - all interactions must go through WebKit's JavaScript APIs +2. **macOS**: Requires user to grant accessibility permissions (`System Preferences > Security & Privacy > Privacy > Accessibility`), which is not practical for automated testing scenarios +3. Even with accessibility permissions, some browsers may still track the "user initiated" flag separately + +### Fix Applied (macOS) + +**Option 2: Disable popup blocker in automation mode** + +The DDG macOS browser now detects when it's running with the automation server active and bypasses popup blocking for all popups. + +**Implementation:** +- Added `automationSession` case to `PopupPermissionBypassReason` enum +- Modified `shouldAllowPopupBypassingPermissionRequest()` in `PopupHandlingTabExtension` to check `LaunchOptionsHandler().isAutomationSession` and return `.automationSession` bypass reason +- When automation is active (WebDriver port set or UI testing mode), all popups are allowed without permission prompts + +**Files Changed:** +- `apple-browsers/macOS/DuckDuckGo/Tab/TabExtensions/PopupHandlingTabExtension.swift` + +### iOS Status + +iOS implementation still pending - needs similar changes to the iOS popup handling code. + +### Affected Sites (Known) + +- `nintendo.com` - "Add to Cart" opens cart in new tab via `window.open()` + +### Related Files + +- `shared-web-tests/webdriver/src/handler.rs` (lines 1157-1176) - ElementClick handler +- `apple-browsers/macOS/DuckDuckGo/Tab/TabExtensions/PopupHandlingTabExtension.swift` - Popup bypass logic +- `apple-browsers/macOS/DuckDuckGo/Automation/LaunchOptionsHandler.swift` - `isAutomationSession` property + +--- + +## DuckDuckGo-Specific WebDriver Capabilities + +The DuckDuckGo WebDriver implementation supports custom capabilities for testing privacy features. + +### `ddg:privacyConfigURL` + +**Status:** ✅ Implemented +**Platforms:** macOS, iOS Simulator + +Override the bundled privacy remote configuration with a custom URL. The config is **pre-fetched and cached** before the app launches, ensuring the exact config is used without requiring network access at runtime. + +#### Usage + +Pass the capability in the WebDriver `NewSession` request: + +```javascript +const capabilities = { + alwaysMatch: { + 'ddg:privacyConfigURL': 'https://example.com/custom-privacy-config.json' + } +}; + +const session = await driver.newSession({ capabilities }); +``` + +Or when using a WebDriver client: + +```javascript +// Example with webdriverio-style client +const browser = await remote({ + capabilities: { + 'ddg:privacyConfigURL': 'https://privacy-test-pages.site/path/to/config.json' + } +}); +``` + +#### Supported URL Schemes + +- `https://` - Fetched from the network by the WebDriver server +- `http://` - Fetched from the network (useful for local test servers) +- `file://` - Read directly from the local filesystem + +**Local file example:** +```javascript +const capabilities = { + alwaysMatch: { + 'ddg:privacyConfigURL': 'file:///path/to/local-config.json' + } +}; +``` + +#### How It Works + +1. **Pre-fetch**: The WebDriver server fetches the config from the URL before launching the app +2. **Cache**: The config data is written directly to the app's cache location: + - **macOS:** `~/Library/Group Containers//macos-config.json` + - **iOS:** `/privacyConfiguration` +3. **Etag**: A fake etag is set so the app uses the cached config instead of re-fetching +4. **Fallback**: If pre-fetching fails, falls back to setting the URL for runtime fetch + +#### Configuration Groups / Cache Locations + +**macOS:** +- Group: `HKE973VLUW..app-configuration[.suffix]` + (e.g., `HKE973VLUW.com.duckduckgo.macos.browser.app-configuration.debug`) +- File: `~/Library/Group Containers//macos-config.json` +- Etag key: `configurationPrivacyConfigurationEtag` + +**iOS Simulator:** +- Config group: `group.com.duckduckgo.app-configuration` +- Cache group: `group.com.duckduckgo.contentblocker` +- File: `/privacyConfiguration` +- Etag key: `com.duckduckgo.ios.etag.privacyConfiguration` + +#### Notes + +- The config is fetched **once** when the session starts; it's not re-fetched during the session +- For `file://` URLs, the file must exist on the machine running the WebDriver server +- The app must be built with DEBUG or ALPHA configuration for some features to work +- If pre-fetching fails (network error, invalid URL, etc.), the system falls back to setting the URL for runtime fetch diff --git a/webdriver/src/find-element.js b/webdriver/src/find-element.js index 1416d28..03db814 100644 --- a/webdriver/src/find-element.js +++ b/webdriver/src/find-element.js @@ -1,7 +1,7 @@ -if (document.readyState != 'complete') { +if (document.readyState !== 'complete') { return new Promise((resolve) => { window.addEventListener('load', async () => { - let scriptResponse = await runScript(); + const scriptResponse = await runScript(); resolve(scriptResponse); }); }); @@ -9,23 +9,31 @@ if (document.readyState != 'complete') { function selectElement(using, selector) { switch (using) { + case 'id': + return document.getElementById(selector); case 'css selector': return document.querySelector(selector); case 'link text': selector = `//a[contains(text(), '${selector}')]`; + // fallthrough case 'xpath': return document.evaluate(selector, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; + case 'tag name': + return document.getElementsByTagName(selector)[0] || null; + case 'class name': + return document.getElementsByClassName(selector)[0] || null; + case 'name': + return document.getElementsByName(selector)[0] || null; default: throw new Error('Unsupported locator strategy: ' + using); - } + } } - function runScript() { return new Promise((resolve, reject) => { let attempts = 0; function findElement() { - let element = selectElement(using, value); + const element = selectElement(using, value); if (element !== null || attempts >= 5) { if (element === null) { reject(new Error('Element not found after 5 attempts')); @@ -53,4 +61,4 @@ function runScript() { }); } -return runScript(); \ No newline at end of file +return runScript(); diff --git a/webdriver/src/find-elements.js b/webdriver/src/find-elements.js new file mode 100644 index 0000000..3131b17 --- /dev/null +++ b/webdriver/src/find-elements.js @@ -0,0 +1,128 @@ +if (document.readyState !== 'complete') { + return new Promise((resolve) => { + window.addEventListener('load', async () => { + const scriptResponse = await runScript(); + resolve(scriptResponse); + }); + }); +} + +function selectElements(using, selector) { + switch (using) { + case 'id': { + const el = document.getElementById(selector); + return el ? [el] : []; + } + case 'css selector': + return Array.from(document.querySelectorAll(selector)); + case 'link text': { + // XPath for link text + const xpath = `//a[contains(text(), '${selector}')]`; + const result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + const elements = []; + for (let i = 0; i < result.snapshotLength; i++) { + elements.push(result.snapshotItem(i)); + } + return elements; + } + case 'xpath': { + const xpathResult = document.evaluate(selector, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); + const xpathElements = []; + for (let i = 0; i < xpathResult.snapshotLength; i++) { + xpathElements.push(xpathResult.snapshotItem(i)); + } + return xpathElements; + } + case 'tag name': + return Array.from(document.getElementsByTagName(selector)); + case 'class name': + return Array.from(document.getElementsByClassName(selector)); + case 'name': + return Array.from(document.getElementsByName(selector)); + default: + throw new Error('Unsupported locator strategy: ' + using); + } +} + +function runScript() { + return new Promise((resolve, reject) => { + let attempts = 0; + function findElements() { + try { + if (typeof using === 'undefined' || typeof value === 'undefined') { + reject(new Error('using or value is undefined. using: ' + typeof using + ', value: ' + typeof value)); + return; + } + // Ensure page is loaded before searching + if (document.readyState !== 'complete' && attempts === 0) { + // Wait for page to be ready on first attempt + attempts++; + setTimeout(findElements, 100); + return; + } + // Debug logging + console.log('FindElements: using=' + using + ', value=' + value); + console.log('FindElements: document.readyState=' + document.readyState); + console.log('FindElements: document.body exists=' + (document.body !== null)); + const elements = selectElements(using, value); + console.log('FindElements: found ' + elements.length + ' elements'); + if (elements.length > 0 || attempts >= 5) { + if (elements.length === 0 && attempts >= 5) { + // Return debug info if no elements found after retries + // Try direct querySelectorAll to see if selector works + let directResult = 0; + try { + if (document.querySelectorAll) { + directResult = document.querySelectorAll(value).length; + } + } catch (e) { + directResult = 'error: ' + e.message; + } + const debugInfo = { + error: 'No elements found after 5 attempts', + using: typeof using === 'undefined' ? 'undefined' : using, + value: typeof value === 'undefined' ? 'undefined' : value, + readyState: document.readyState, + bodyExists: document.body !== null, + directQueryResult: directResult, + url: window.location.href, + buttonCount: document.querySelectorAll ? document.querySelectorAll('button').length : 'N/A', + inputButtonCount: document.querySelectorAll + ? document.querySelectorAll('input[type="button"], input[type="submit"]').length + : 'N/A', + }; + console.error('FindElements debug:', JSON.stringify(debugInfo)); + // Still return empty array as per WebDriver spec + resolve([]); + return; + } + if (!window.__webdriver_script_results) { + // TODO make a WeakMap and handle references to elements with WeakRef or a similar mechanism + window.__webdriver_script_results = new Map(); + } + const uuids = []; + for (const element of elements) { + let uuid; + if (window.__webdriver_script_results.has(element)) { + uuid = window.__webdriver_script_results.get(element); + } else { + uuid = window.crypto.randomUUID(); + window.__webdriver_script_results.set(element, uuid); + } + uuids.push(uuid); + } + resolve(uuids); + return; + } + attempts++; + const delay = Math.min(10 * Math.pow(2, attempts), 16000); + setTimeout(findElements, delay); + } catch (error) { + reject(new Error('Error in findElements: ' + error.message + '. Stack: ' + (error.stack || 'no stack'))); + } + } + findElements(); + }); +} + +return runScript(); diff --git a/webdriver/src/handler.rs b/webdriver/src/handler.rs index 3508dd6..f33ad7b 100644 --- a/webdriver/src/handler.rs +++ b/webdriver/src/handler.rs @@ -34,6 +34,9 @@ use std::str; use std::process::Child; use std::io::{BufReader, BufRead}; use std::thread; +use std::env; +use std::path::PathBuf; +use uuid::Uuid; #[derive(Clone, PartialEq, Eq, Debug)] @@ -47,7 +50,7 @@ use std::thread; fn command( &self, _params: &Parameters, - body_data: &Value, + _body_data: &Value, ) -> WebDriverResult> { use self::DuckDuckGoExtensionRoute::*; @@ -211,21 +214,39 @@ fn find_or_create_simulator(target_device: &str, target_os: &str) -> Result = None; if let Some(devices) = simulators.get("devices") { for (runtime, device_list) in devices.as_object().unwrap() { info!("Runtime: {:?}", runtime); if runtime.contains(target_os) { for device in device_list.as_array().unwrap() { - if device["name"] == device_name && device["isAvailable"] == true && device["state"] == "Shutdown" { - info!("Found matching simulator {:?}", device); - return Ok(device["udid"].as_str().unwrap().to_string()); + if device["name"] == device_name && device["isAvailable"] == true { + let state = device["state"].as_str().unwrap_or(""); + let udid = device["udid"].as_str().unwrap().to_string(); + + if state == "Shutdown" { + // Prefer shutdown simulators - return immediately + info!("Found matching shutdown simulator {:?}", device); + return Ok(udid); + } else if state == "Booted" && booted_candidate.is_none() { + // Remember first booted simulator as fallback + info!("Found matching booted simulator {:?}", device); + booted_candidate = Some(udid); + } } } } } } - info!("No matching simulator found"); + + // Use booted simulator if no shutdown one was found + if let Some(udid) = booted_candidate { + info!("Reusing booted simulator: {}", udid); + return Ok(udid); + } + + info!("No matching simulator found, creating a new one..."); // Step 3: Create a new simulator if no match is found let create_output = xcrun_command(&[ @@ -236,6 +257,18 @@ fn find_or_create_simulator(target_device: &str, target_os: &str) -> Result Result Self { + let env_value = std::env::var("TARGET_PLATFORM"); + info!("TARGET_PLATFORM env var: {:?}", env_value); + match env_value.as_deref() { + Ok("macos") | Ok("macOS") | Ok("mac") => { + info!("Detected macOS platform"); + Platform::MacOS + }, + Ok(val) => { + info!("TARGET_PLATFORM={} not recognized, defaulting to iOS", val); + Platform::IOS + }, + Err(_) => { + info!("TARGET_PLATFORM not set, defaulting to iOS"); + Platform::IOS // Default to iOS for backward compatibility + } + } + } + + fn bundle_id(&self) -> &'static str { + match self { + Platform::IOS => "com.duckduckgo.mobile.ios", + Platform::MacOS => "com.duckduckgo.macos.browser", + } + } +} + +const APP_BUNDLE_ID_IOS: &str = "com.duckduckgo.mobile.ios"; +const APP_BUNDLE_ID_MACOS: &str = "com.duckduckgo.macos.browser"; +const APP_BUNDLE_ID_MACOS_DEBUG: &str = "com.duckduckgo.macos.browser.debug"; + +// Development team ID for DuckDuckGo macOS apps +const MACOS_DEVELOPMENT_TEAM: &str = "HKE973VLUW"; + +/// DuckDuckGo-specific session capabilities +#[derive(Clone, Debug, Default)] +pub struct DdgCapabilities { + /// Custom URL for privacy configuration (overrides bundled config via cache write) + pub privacy_config_url: Option, + /// Local file path for privacy configuration (uses TEST_PRIVACY_CONFIG_PATH env var) + pub privacy_config_path: Option, +} + +impl DdgCapabilities { + /// Parse DuckDuckGo capabilities from WebDriver NewSession parameters + pub fn from_new_session_params(params: &webdriver::command::NewSessionParameters) -> Self { + let mut caps = DdgCapabilities::default(); + + // NewSessionParameters is an enum, try multiple serialization approaches + if let Ok(value) = serde_json::to_value(params) { + info!("Serialized NewSessionParameters: {}", value); + + // Approach 1: Direct capabilities.alwaysMatch (Spec variant) + if let Some(capabilities) = value.get("capabilities") { + if let Some(always_match) = capabilities.get("alwaysMatch") { + caps.extract_from_value(always_match); + } + if let Some(first_match) = capabilities.get("firstMatch").and_then(|v| v.as_array()) { + for match_caps in first_match { + caps.extract_from_value(match_caps); + } + } + } + + // Approach 2: Spec enum variant wrapper { "Spec": { "alwaysMatch": ... } } + if caps.privacy_config_url.is_none() { + if let Some(spec) = value.get("Spec") { + if let Some(always_match) = spec.get("alwaysMatch") { + caps.extract_from_value(always_match); + } + if let Some(first_match) = spec.get("firstMatch").and_then(|v| v.as_array()) { + for match_caps in first_match { + caps.extract_from_value(match_caps); + } + } + } + } + + // Approach 3: Direct alwaysMatch at root level + if caps.privacy_config_url.is_none() { + if let Some(always_match) = value.get("alwaysMatch") { + caps.extract_from_value(always_match); + } + } + } else { + info!("Failed to serialize NewSessionParameters to JSON"); + } + + info!("Parsed DuckDuckGo capabilities: {:?}", caps); + caps + } + + fn extract_from_value(&mut self, caps: &Value) { + // Look for ddg:privacyConfigURL (writes to cache) + if let Some(url) = caps.get("ddg:privacyConfigURL").and_then(|v| v.as_str()) { + info!("Found ddg:privacyConfigURL: {}", url); + self.privacy_config_url = Some(url.to_string()); + } + // Look for ddg:privacyConfigPath (uses TEST_PRIVACY_CONFIG_PATH env var) + if let Some(path) = caps.get("ddg:privacyConfigPath").and_then(|v| v.as_str()) { + info!("Found ddg:privacyConfigPath: {}", path); + self.privacy_config_path = Some(path.to_string()); + } + } +} + +// Get bundle ID from app's Info.plist +fn get_macos_bundle_id(app_path: &str) -> String { + let info_plist = format!("{}/Contents/Info.plist", app_path); + let output = Command::new("defaults") + .args(&["read", &info_plist, "CFBundleIdentifier"]) + .output(); + + match output { + Ok(out) if out.status.success() => { + String::from_utf8_lossy(&out.stdout).trim().to_string() + }, + _ => { + // Fallback: check if path contains DEBUG + if app_path.contains("DEBUG") || app_path.contains("Debug") { + APP_BUNDLE_ID_MACOS_DEBUG.to_string() + } else { + APP_BUNDLE_ID_MACOS.to_string() + } + } + } +} + +// macOS-specific functions +fn write_macos_defaults(bundle_id: &str, key: &str, key_type: &str, value: &str) { + let output = Command::new("defaults") + .args(&[ + "write", + bundle_id, + key, + &format!("-{}", key_type), + value, + ]) + .output() + .expect("Failed to write defaults"); + if !output.status.success() { + info!( + "Failed to write defaults: {}", + String::from_utf8_lossy(&output.stderr) + ); + } +} + +/// Derive the app configuration group identifier from the bundle ID +/// For macOS DuckDuckGo browser: +/// - Debug: com.duckduckgo.macos.browser.debug -> HKE973VLUW.com.duckduckgo.macos.browser.app-configuration.debug +/// - Release: com.duckduckgo.macos.browser -> HKE973VLUW.com.duckduckgo.macos.browser.app-configuration +fn derive_macos_app_config_group(bundle_id: &str) -> String { + // Pattern: ..app-configuration[.suffix] + // The bundle ID may have a suffix like .debug, .alpha, .review + let known_suffixes = [".debug", ".alpha", ".review", ".ci"]; + + let (base_id, suffix) = known_suffixes + .iter() + .find(|s| bundle_id.ends_with(*s)) + .map(|s| { + let base = &bundle_id[..bundle_id.len() - s.len()]; + (base, *s) + }) + .unwrap_or((bundle_id, "")); + + format!("{}.{}.app-configuration{}", MACOS_DEVELOPMENT_TEAM, base_id, suffix) +} + +/// Write a string value to the app configuration group defaults on macOS +fn write_macos_app_config_defaults(bundle_id: &str, key: &str, value: &str) { + let group_id = derive_macos_app_config_group(bundle_id); + info!("Writing to app config group {}: {} = {}", group_id, key, value); + + let output = Command::new("defaults") + .args(&[ + "write", + &group_id, + key, + "-string", + value, + ]) + .output() + .expect("Failed to write app config defaults"); + + if !output.status.success() { + info!( + "Failed to write app config defaults to {}: {}", + group_id, + String::from_utf8_lossy(&output.stderr) + ); + } +} + +/// Fetch privacy configuration from URL (supports http://, https://, and file://) +fn fetch_privacy_config(config_url: &str) -> Result, String> { + info!("Fetching privacy config from: {}", config_url); + + if config_url.starts_with("file://") { + // Handle local file paths + let file_path = config_url.strip_prefix("file://").unwrap(); + match std::fs::read(file_path) { + Ok(data) => { + info!("Read {} bytes from local file", data.len()); + Ok(data) + }, + Err(e) => Err(format!("Failed to read file {}: {}", file_path, e)) + } + } else { + // Handle HTTP/HTTPS URLs + let client = reqwest::blocking::Client::builder() + .timeout(std::time::Duration::from_secs(30)) + .build() + .map_err(|e| format!("Failed to create HTTP client: {}", e))?; + + let response = client.get(config_url) + .send() + .map_err(|e| format!("Failed to fetch config: {}", e))?; + + if !response.status().is_success() { + return Err(format!("HTTP error: {}", response.status())); + } + + let data = response.bytes() + .map_err(|e| format!("Failed to read response body: {}", e))?; + + info!("Fetched {} bytes from URL", data.len()); + Ok(data.to_vec()) + } +} + +/// Get the macOS app group container path +fn get_macos_group_container_path(group_id: &str) -> Option { + // On macOS, group containers are at ~/Library/Group Containers// + if let Ok(home) = std::env::var("HOME") { + let path = PathBuf::from(home) + .join("Library") + .join("Group Containers") + .join(group_id); + Some(path) + } else { + None + } +} + +/// Set up custom privacy configuration for macOS +/// This pre-fetches the config and writes it directly to the app's cache +fn setup_macos_privacy_config(bundle_id: &str, config_url: &str) { + let group_id = derive_macos_app_config_group(bundle_id); + info!("Setting up custom privacy config for {}", bundle_id); + info!(" Config group: {}", group_id); + info!(" Config URL: {}", config_url); + + // Fetch the config data + let config_data = match fetch_privacy_config(config_url) { + Ok(data) => data, + Err(e) => { + info!("Failed to fetch privacy config: {}", e); + // Fall back to just setting the URL + set_macos_config_url(&group_id, config_url); + return; + } + }; + + // Get the group container path + let container_path = match get_macos_group_container_path(&group_id) { + Some(path) => path, + None => { + info!("Failed to get group container path, falling back to URL mode"); + set_macos_config_url(&group_id, config_url); + return; + } + }; + + // Create the directory if it doesn't exist + if let Err(e) = std::fs::create_dir_all(&container_path) { + info!("Failed to create group container directory: {}", e); + set_macos_config_url(&group_id, config_url); + return; + } + + // Write the config file (macOS uses "macos-config.json") + let config_file = container_path.join("macos-config.json"); + info!("Writing config to: {:?}", config_file); + + if let Err(e) = std::fs::write(&config_file, &config_data) { + info!("Failed to write config file: {}", e); + set_macos_config_url(&group_id, config_url); + return; + } + + // CRITICAL: Write to the GROUP CONTAINER plist, not ~/Library/Preferences + // `defaults write ` writes to ~/Library/Preferences/.plist + // but UserDefaults(suiteName: ) reads from ~/Library/Group Containers//Library/Preferences/.plist + let prefs_dir = container_path.join("Library").join("Preferences"); + let plist_path = prefs_dir.join(format!("{}.plist", group_id)); + + // Create the Preferences directory if needed + if let Err(e) = std::fs::create_dir_all(&prefs_dir) { + info!("Failed to create Preferences directory: {}", e); + set_macos_config_url(&group_id, config_url); + return; + } + + info!("Writing UserDefaults to: {:?}", plist_path); + + // Build the custom config URL pointing to our cached file + let file_url = format!("file://{}", config_file.display()); + + // Use PlistBuddy to set values in the correct plist + // First, create the plist if it doesn't exist + let _ = Command::new("/usr/libexec/PlistBuddy") + .args(&["-c", "Save", plist_path.to_str().unwrap()]) + .output(); + + // Set isInternalUser = true (required for custom config URLs to work) + let output = Command::new("/usr/libexec/PlistBuddy") + .args(&[ + "-c", "Delete :isInternalUser", + plist_path.to_str().unwrap() + ]) + .output(); + // Ignore delete errors (key might not exist) + + let output = Command::new("/usr/libexec/PlistBuddy") + .args(&[ + "-c", "Add :isInternalUser bool true", + plist_path.to_str().unwrap() + ]) + .output() + .expect("Failed to run PlistBuddy"); + + if !output.status.success() { + info!( + "PlistBuddy isInternalUser failed: {}", + String::from_utf8_lossy(&output.stderr) + ); + } else { + info!("Set isInternalUser = true"); + } + + // Set CustomConfigurationURL.privacyConfiguration + let _ = Command::new("/usr/libexec/PlistBuddy") + .args(&[ + "-c", "Delete :CustomConfigurationURL.privacyConfiguration", + plist_path.to_str().unwrap() + ]) + .output(); + + let output = Command::new("/usr/libexec/PlistBuddy") + .args(&[ + "-c", &format!("Add :CustomConfigurationURL.privacyConfiguration string {}", file_url), + plist_path.to_str().unwrap() + ]) + .output() + .expect("Failed to run PlistBuddy"); + + if !output.status.success() { + info!( + "PlistBuddy CustomConfigurationURL failed: {}", + String::from_utf8_lossy(&output.stderr) + ); + } else { + info!("Set CustomConfigurationURL.privacyConfiguration = {}", file_url); + } + + info!("Successfully pre-cached privacy config ({} bytes) and set UserDefaults in group container", config_data.len()); +} + +/// Fallback: Set the custom config URL (used if pre-fetching fails) +fn set_macos_config_url(group_id: &str, config_url: &str) { + info!("Setting config URL fallback mode for group {}", group_id); + + // Set isInternalUser to true (required for custom config URLs to be used) + let output = Command::new("defaults") + .args(&[ + "write", + group_id, + "isInternalUser", + "-bool", + "true", + ]) + .output() + .expect("Failed to write isInternalUser"); + + if !output.status.success() { + info!( + "Failed to set isInternalUser: {}", + String::from_utf8_lossy(&output.stderr) + ); + } + + // Set the custom privacy configuration URL + let output = Command::new("defaults") + .args(&[ + "write", + group_id, + "CustomConfigurationURL.privacyConfiguration", + "-string", + config_url, + ]) + .output() + .expect("Failed to write custom config URL"); + + if !output.status.success() { + info!( + "Failed to set custom config URL: {}", + String::from_utf8_lossy(&output.stderr) + ); + } +} + +fn is_macos_app_running(_bundle_id: &str) -> bool { + // Check if DuckDuckGo app is running using osascript + let output = Command::new("osascript") + .args(&["-e", "tell application \"System Events\" to (name of processes) contains \"DuckDuckGo\""]) + .output(); + + match output { + Ok(out) if out.status.success() => { + let result = String::from_utf8_lossy(&out.stdout); + result.trim() == "true" + }, + _ => false, + } +} + +fn launch_macos_app(app_path: &str, port: u16, ddg_caps: &DdgCapabilities) -> Result<(Child, String), String> { + info!("Launching macOS app at: {}", app_path); + + // Get the bundle ID from the app + let bundle_id = get_macos_bundle_id(app_path); + info!("Detected bundle ID: {}", bundle_id); + + // First, quit any running instance gracefully + if is_macos_app_running(&bundle_id) { + info!("App is running, quitting gracefully..."); + + // Try graceful quit via AppleScript + let _ = Command::new("osascript") + .args(&["-e", &format!("tell application id \"{}\" to quit", bundle_id)]) + .output(); + + // Wait and check if it quit + let mut attempts = 0; + while is_macos_app_running(&bundle_id) && attempts < 30 { + std::thread::sleep(std::time::Duration::from_millis(200)); + attempts += 1; + } + + // If still running, try SIGTERM (graceful termination) + if is_macos_app_running(&bundle_id) { + info!("App still running, sending SIGTERM..."); + let _ = Command::new("pkill") + .args(&["-TERM", "-f", &bundle_id]) + .output(); + + // Wait for graceful shutdown + let mut attempts = 0; + while is_macos_app_running(&bundle_id) && attempts < 20 { + std::thread::sleep(std::time::Duration::from_millis(200)); + attempts += 1; + } + } + + // Last resort: SIGKILL (will show crash dialog, but at least continues) + if is_macos_app_running(&bundle_id) { + info!("App still running, force killing..."); + let _ = Command::new("pkill") + .args(&["-KILL", "-f", &bundle_id]) + .output(); + std::thread::sleep(std::time::Duration::from_millis(500)); + } + } + + // Write the automation port to defaults using correct bundle ID + write_macos_defaults(&bundle_id, "automationPort", "int", &port.to_string()); + write_macos_defaults(&bundle_id, "isUITesting", "bool", "true"); + write_macos_defaults(&bundle_id, "isOnboardingCompleted", "string", "true"); + + // Set up custom privacy configuration if provided via URL (writes to cache) + if let Some(ref config_url) = ddg_caps.privacy_config_url { + setup_macos_privacy_config(&bundle_id, config_url); + } + + // Launch the app + // Remove CI env var to prevent app from thinking it's in UI test mode + // (which would cause it to try loading MockEncryptionKeyStore that doesn't exist) + let child = if let Some(ref config_path) = ddg_caps.privacy_config_path { + // When using privacy_config_path, we launch the binary directly to pass env vars + // The `open -a` command doesn't support passing environment variables to the app + let binary_path = format!("{}/Contents/MacOS/DuckDuckGo", app_path); + info!("Launching binary directly with TEST_PRIVACY_CONFIG_PATH={}", config_path); + Command::new(&binary_path) + .args(&["-isUITesting", "true"]) + .env("TEST_PRIVACY_CONFIG_PATH", config_path) + .env_remove("CI") + .spawn() + .map_err(|e| format!("Failed to launch app binary: {}", e))? + } else { + // Use standard `open -a` approach + Command::new("open") + .args(&["-a", app_path, "--args", "-isUITesting", "true"]) + .env_remove("CI") + .spawn() + .map_err(|e| format!("Failed to launch app: {}", e))? + }; + + Ok((child, bundle_id)) +} + +fn monitor_macos_logs(bundle_id: &str) -> Child { + let child = Command::new("log") + .args(&[ + "stream", + "--info", + "--debug", + "--predicate", + &format!("subsystem == \"{}\"", bundle_id), + ]) + .stdout(Stdio::piped()) + .spawn() + .expect("Failed to start log stream"); + child +} + +fn quit_macos_app_with_port(port: Option) { + info!("Quitting macOS app gracefully via /shutdown endpoint..."); + + // Call the /shutdown endpoint which cleanly closes the automation server + // and then terminates the app via exit(0) - avoiding crash dialogs + let client = reqwest::blocking::Client::builder() + .timeout(std::time::Duration::from_secs(3)) + .build(); + + // If we have the actual port, use it; otherwise try common ports as fallback + let ports_to_try: Vec = match port { + Some(p) => vec![p], + None => (8557..=8570).collect(), // Try a range of ports as fallback + }; + + if let Ok(client) = client { + for port in ports_to_try { + let url = format!("http://localhost:{}/shutdown", port); + info!("Trying shutdown on port {}...", port); + match client.get(&url).send() { + Ok(response) => { + info!("Shutdown response on port {}: {:?}", port, response.status()); + if response.status().is_success() { + break; + } + }, + Err(e) => { + info!("Shutdown on port {} failed: {}", port, e); + } + } + } + } + + // Wait for the app to terminate (the /shutdown endpoint schedules exit after 0.5s) + std::thread::sleep(std::time::Duration::from_millis(1500)); + + // Verify it's not running + for _ in 0..10 { + if !is_macos_app_running("com.duckduckgo.macos.browser") { + info!("macOS app terminated cleanly"); + return; + } + std::thread::sleep(std::time::Duration::from_millis(200)); + } + + // Fallback: if /shutdown didn't work, try AppleScript + info!("App still running, trying AppleScript quit..."); + let _ = Command::new("osascript") + .args(&["-e", "tell application \"DuckDuckGo\" to quit"]) + .output(); + + std::thread::sleep(std::time::Duration::from_millis(1000)); + + if !is_macos_app_running("com.duckduckgo.macos.browser") { + info!("macOS app quit via AppleScript"); + return; + } + + // Last resort - SIGTERM + info!("App not responding, sending SIGTERM..."); + let _ = Command::new("pkill") + .args(&["-TERM", "-f", "DuckDuckGo.app"]) + .output(); +} + +fn server_request_for_platform(session_id: &str, platform: &Platform, method: &str, params: &std::collections::HashMap<&str, &str>) -> String { + match platform { + Platform::IOS => { + // iOS uses simulator logs + let mut child = monitor_simulator_logs(&session_id); + let stdout = child.stdout.take().expect("Failed to capture stdout"); + thread::spawn(move || { + let reader = BufReader::new(stdout); + info!("Simulator logs:"); + for line in reader.lines() { + if let Ok(log_line) = line { + info!("{}", log_line); + } + } + info!("Simulator logs end"); + }); + let port = get_port(session_id); + let result = make_server_request(port, method, params); + let _ = child.kill(); + result + }, + Platform::MacOS => { + // macOS uses direct log stream + let mut child = monitor_macos_logs(APP_BUNDLE_ID_MACOS); + let stdout = child.stdout.take().expect("Failed to capture stdout"); + thread::spawn(move || { + let reader = BufReader::new(stdout); + info!("macOS app logs:"); + for line in reader.lines() { + if let Ok(log_line) = line { + info!("{}", log_line); + } + } + info!("macOS app logs end"); + }); + let port = get_port(session_id); + let result = make_server_request(port, method, params); + let _ = child.kill(); + result + } + } +} + +fn make_server_request(port: u16, method: &str, params: &std::collections::HashMap<&str, &str>) -> String { + let query_string: String = params.iter() + .map(|(key, value)| format!("{}={}", key, value)) + .collect::>() + .join("&"); + let url = format!("http://localhost:{}/{method}?{}", port, query_string); + info!("URL to send: {:?}", url); + let client = reqwest::blocking::Client::new(); + let resp = client.get(url) + .timeout(std::time::Duration::from_secs(30)) + .send() + .map_err(|e| { + if e.is_timeout() { + info!("Request timed out"); + "Request timed out".to_string() + } else { + format!("Request error: {}", e) + } + }) + .expect("Failed to send request") + .text() + .expect("Failed to read response text"); + info!("Response: {:#?}", resp); + + #[derive(Deserialize)] + struct Response { + message: String, + } + let json: Response = serde_json::from_str(&resp).expect("Failed to parse response"); + return json.message; +} + +// iOS-specific constants (kept for backward compatibility) const APP_BUNDLE_ID: &str = "com.duckduckgo.mobile.ios"; fn monitor_simulator_logs(udid: &str) -> Child { @@ -332,6 +1040,159 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { ]); } +/// iOS app configuration group identifier +/// For iOS DuckDuckGo browser: group.com.duckduckgo.app-configuration +const IOS_APP_CONFIG_GROUP: &str = "group.com.duckduckgo.app-configuration"; +/// iOS content blocker group (where config files are stored) +const IOS_CONTENT_BLOCKER_GROUP: &str = "group.com.duckduckgo.contentblocker"; + +/// Write a value to the iOS app configuration group defaults via simulator +fn write_ios_app_config_defaults(udid: &str, key: &str, key_type: &str, value: &str) { + info!("Writing to iOS app config group {}: {} = {}", IOS_APP_CONFIG_GROUP, key, value); + xcrun_command(&[ + "simctl", + "spawn", + udid, + "defaults", + "write", + IOS_APP_CONFIG_GROUP, + key, + &format!("-{}", key_type), + value, + ]); +} + +/// Get the iOS simulator's group container path +fn get_ios_simulator_group_container(udid: &str, group_id: &str) -> Option { + // Use simctl to get the container path + let output = Command::new("xcrun") + .args(&[ + "simctl", + "get_app_container", + udid, + APP_BUNDLE_ID, + "groups", + ]) + .output(); + + match output { + Ok(out) if out.status.success() => { + // Output contains paths for all groups, need to find the right one + let stdout = String::from_utf8_lossy(&out.stdout); + for line in stdout.lines() { + if line.contains(group_id) { + // Line format: "group.com.duckduckgo.contentblocker /path/to/container" + if let Some(path) = line.split_whitespace().last() { + return Some(PathBuf::from(path)); + } + } + } + None + }, + _ => None + } +} + +/// Set up custom privacy configuration for iOS simulator +/// This pre-fetches the config and writes it directly to the app's cache +fn setup_ios_privacy_config(udid: &str, config_url: &str) { + info!("Setting up custom privacy config for iOS simulator {}", udid); + info!(" Config URL: {}", config_url); + + // Fetch the config data + let config_data = match fetch_privacy_config(config_url) { + Ok(data) => data, + Err(e) => { + info!("Failed to fetch privacy config: {}", e); + // Fall back to just setting the URL + set_ios_config_url_fallback(udid, config_url); + return; + } + }; + + // Try to get the group container path + // Note: The app must be installed first for the container to exist + let container_path = get_ios_simulator_group_container(udid, IOS_CONTENT_BLOCKER_GROUP); + + if let Some(container) = container_path { + info!("Found group container: {:?}", container); + + // Write the config file (iOS uses "privacyConfiguration") + let config_file = container.join("privacyConfiguration"); + info!("Writing config to: {:?}", config_file); + + // Use simctl to write the file + let temp_file = std::env::temp_dir().join(format!("privacyConfig-{}.json", udid)); + if let Err(e) = std::fs::write(&temp_file, &config_data) { + info!("Failed to write temp file: {}", e); + set_ios_config_url_fallback(udid, config_url); + return; + } + + // Copy to simulator using simctl + let result = Command::new("xcrun") + .args(&[ + "simctl", + "spawn", + udid, + "cp", + temp_file.to_str().unwrap(), + config_file.to_str().unwrap(), + ]) + .output(); + + // Clean up temp file + let _ = std::fs::remove_file(&temp_file); + + match result { + Ok(out) if out.status.success() => { + info!("Successfully wrote config file to simulator"); + + // Set etag in the content blocker group defaults + let etag = format!("webdriver-{}", std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap_or_default() + .as_secs()); + + // The etag key for iOS (from UserDefaultsETagStorage) + xcrun_command(&[ + "simctl", + "spawn", + udid, + "defaults", + "write", + IOS_CONTENT_BLOCKER_GROUP, + "com.duckduckgo.ios.etag.privacyConfiguration", + "-string", + &etag, + ]); + + info!("Successfully pre-cached privacy config ({} bytes)", config_data.len()); + return; + }, + _ => { + info!("Failed to copy config to simulator, falling back to URL mode"); + } + } + } else { + info!("Could not get group container path, falling back to URL mode"); + } + + // Fall back to setting the URL + set_ios_config_url_fallback(udid, config_url); +} + +/// Fallback: Set the custom config URL for iOS (used if pre-fetching fails) +fn set_ios_config_url_fallback(udid: &str, config_url: &str) { + info!("Using URL fallback mode for iOS"); + + // Set isInternalUser to true in the app config group + write_ios_app_config_defaults(udid, "isInternalUser", "bool", "true"); + + // Set the custom privacy configuration URL + write_ios_app_config_defaults(udid, "CustomConfigurationURL.privacyConfiguration", "string", config_url); +} + impl WebDriverHandler for Handler { fn handle_command( &mut self, @@ -339,130 +1200,335 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { msg: WebDriverMessage, ) -> WebDriverResult { - // Replace with your simulator's UDID and app's bundle identifier - let target_device="iPhone-16"; - let target_os="iOS-18-2"; + let platform = Platform::from_env(); + info!("Target platform: {:?}", platform); + + let target_device = if let Ok(env_path) = std::env::var("TARGET_DEVICE") { + env_path + } else { + "iPhone-16".to_string() + }; + let target_os = if let Ok(env_path) = std::env::var("TARGET_OS") { + env_path + } else { + "iOS-18-2".to_string() + }; info!("Message received {:?}", msg); return match msg.command { - WebDriverCommand::NewSession(_) => { - info!("Starting automation..."); - let simulator_udid = match find_or_create_simulator(target_device, target_os) { - Ok(udid) => udid, - Err(e) => { - info!("Failed to find or create simulator: {}", e); - return Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))); - } - }; - info!("Simulator UDID: {:?}", simulator_udid); - - // Boot the simulator (if it's not already booted) - xcrun_command(&["simctl", "boot", &simulator_udid]); - - // Launch the simulator app - Command::new("open") - .args(&["-a", "Simulator"]) - .status() - .expect("Failed to open the Simulator app"); - info!("Opened Simulator app"); - xcrun_command(&["simctl", "terminate", &simulator_udid, APP_BUNDLE_ID]); - xcrun_command(&["simctl", "uninstall", &simulator_udid, APP_BUNDLE_ID]); - info!("Uninstalled app"); - // Install the app on the simulator - let current_dir = std::env::current_dir().expect("Failed to get current directory"); - let derived_data_path = current_dir.join("../../iOS/DerivedData"); - let derived_data_path = derived_data_path.to_str().expect("Failed to convert path to string"); - let app_path = format!("{derived_data_path}/Build/Products/Debug-iphonesimulator/DuckDuckGo.app"); - info!("App Path: {:?}", app_path); - if !xcrun_command(&["simctl", "install", &simulator_udid, app_path.as_str()]).status.success() { - panic!("Failed to install the app"); - } - info!("Installed app"); - let mut child = monitor_simulator_logs(&simulator_udid); - let stdout = child.stdout.take().expect("Failed to capture stdout"); - thread::spawn(move || { - let reader = BufReader::new(stdout); - info!("Simulator logs:"); - for line in reader.lines() { - if let Ok(log_line) = line { - info!("{}", log_line); + WebDriverCommand::NewSession(ref params) => { + // Parse DuckDuckGo-specific capabilities from the session parameters + let ddg_caps = DdgCapabilities::from_new_session_params(params); + + match platform { + Platform::MacOS => { + info!("Starting macOS automation..."); + + // Generate a unique session ID for macOS + let session_id = Uuid::new_v4().to_string(); + + // Get app path from environment or use default + let app_path = if let Ok(env_path) = std::env::var("MACOS_APP_PATH") { + env_path + } else { + let derived_data_path = if let Ok(env_path) = std::env::var("DERIVED_DATA_PATH") { + PathBuf::from(env_path) + } else { + let current_dir = std::env::current_dir().expect("Failed to get current directory"); + // apple-browsers DerivedData is in the ddg-workflow monorepo + current_dir.join("../ddg-workflow/apple-browsers/DerivedData") + }; + format!("{}/Build/Products/Debug/DuckDuckGo.app", derived_data_path.to_str().expect("Failed to convert path to string")) + }; + + info!("macOS App Path: {:?}", app_path); + + // Get port for this session + let port = get_port(&session_id); + + // Launch the macOS app with DuckDuckGo capabilities + let bundle_id = match launch_macos_app(&app_path, port, &ddg_caps) { + Ok((_, bundle_id)) => { + info!("Launched macOS app"); + bundle_id + }, + Err(e) => { + info!("Failed to launch macOS app: {}", e); + return Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))); + } + }; + + // Start monitoring logs with correct bundle ID + let mut child = monitor_macos_logs(&bundle_id); + let stdout = child.stdout.take().expect("Failed to capture stdout"); + thread::spawn(move || { + let reader = BufReader::new(stdout); + info!("macOS app logs:"); + for line in reader.lines() { + if let Ok(log_line) = line { + info!("{}", log_line); + } + } + info!("macOS app logs end"); + }); + + // Wait for the server to start by testing connectivity + info!("Waiting for automation server on port {}...", port); + let mut attempts = 0; + loop { + // Try to actually connect to the server + let client = reqwest::blocking::Client::builder() + .timeout(std::time::Duration::from_millis(500)) + .build() + .expect("Failed to create client"); + match client.get(format!("http://localhost:{}/getUrl", port)).send() { + Ok(_) => { + info!("Server responding on port {}", port); + break; + } + Err(_) => { + // Server not ready yet + } + } + attempts += 1; + if attempts > 120 { // 60 seconds timeout + panic!("Timeout waiting for automation server to start"); + } + std::thread::sleep(std::time::Duration::from_millis(500)); + } + + // Wait for content blocker rules to be compiled + // This ensures the browser is fully ready before WebDriver considers the session started + info!("Waiting for content blocker to be ready..."); + let cb_start = std::time::Instant::now(); + let mut cb_attempts = 0; + loop { + let client = reqwest::blocking::Client::builder() + .timeout(std::time::Duration::from_millis(500)) + .build() + .expect("Failed to create client"); + match client.get(format!("http://localhost:{}/contentBlockerReady", port)).send() { + Ok(response) => { + if let Ok(text) = response.text() { + // Parse JSON: { "message": "true"|"false", "requestPath": "/contentBlockerReady" } + if let Ok(json) = serde_json::from_str::(&text) { + if let Some(message) = json.get("message").and_then(|v| v.as_str()) { + if message == "true" { + let elapsed = cb_start.elapsed(); + info!("Content blocker ready after {:?} ({} attempts)", elapsed, cb_attempts + 1); + break; + } + } + info!("Content blocker not ready yet (attempt {}, message: {:?})", cb_attempts + 1, json.get("message")); + } else { + info!("Content blocker check: failed to parse JSON (attempt {}): {}", cb_attempts + 1, text); + } + } + } + Err(e) => { + info!("Content blocker check failed (attempt {}): {}", cb_attempts + 1, e); + } + } + cb_attempts += 1; + if cb_attempts > 60 { // 30 seconds timeout for content blocker + info!("Warning: Timeout waiting for content blocker after {:?}, proceeding anyway", cb_start.elapsed()); + break; + } + std::thread::sleep(std::time::Duration::from_millis(500)); + } + + let _ = child.kill(); + let capabilities = Map::new(); + Ok(WebDriverResponse::NewSession(NewSessionResponse { + session_id: session_id, + capabilities: Value::Object(capabilities), + })) + }, + Platform::IOS => { + info!("Starting iOS automation... {:?} {:?}", target_device, target_os); + let simulator_udid = match find_or_create_simulator(&target_device, &target_os) { + Ok(udid) => udid, + Err(e) => { + info!("Failed to find or create simulator: {}", e); + return Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))); + } + }; + info!("Simulator UDID: {:?}", simulator_udid); + + // Boot the simulator (if it's not already booted) + xcrun_command(&["simctl", "boot", &simulator_udid]); + + // Launch the simulator app + Command::new("open") + .args(&["-a", "Simulator"]) + .status() + .expect("Failed to open the Simulator app"); + info!("Opened Simulator app"); + xcrun_command(&["simctl", "terminate", &simulator_udid, APP_BUNDLE_ID]); + xcrun_command(&["simctl", "uninstall", &simulator_udid, APP_BUNDLE_ID]); + info!("Uninstalled app"); + // Install the app on the simulator + let derived_data_path = if let Ok(env_path) = std::env::var("DERIVED_DATA_PATH") { + PathBuf::from(env_path) + } else { + let current_dir = std::env::current_dir().expect("Failed to get current directory"); + current_dir.join("../DerivedData") + }; + let derived_data_path = derived_data_path.to_str().expect("Failed to convert path to string"); + let app_path = format!("{derived_data_path}/Build/Products/Debug-iphonesimulator/DuckDuckGo.app"); + info!("App Path: {:?}", app_path); + if !xcrun_command(&["simctl", "install", &simulator_udid, app_path.as_str()]).status.success() { + panic!("Failed to install the app"); + } + info!("Installed app"); + let mut child = monitor_simulator_logs(&simulator_udid); + let stdout = child.stdout.take().expect("Failed to capture stdout"); + thread::spawn(move || { + let reader = BufReader::new(stdout); + info!("Simulator logs:"); + for line in reader.lines() { + if let Ok(log_line) = line { + info!("{}", log_line); + } + } + info!("Simulator logs end"); + }); + let logger = xcrun_command(&[ + "simctl", + "spawn", + &simulator_udid, + "log", + "config", + "--mode", + "level:debug", + "-subsystem", + &APP_BUNDLE_ID + ]); + if !logger.status.success() { + panic!("Failed to set log level\n{}", String::from_utf8_lossy(&logger.stderr)); } - } - info!("Simulator logs end"); - }); - let logger = xcrun_command(&[ - "simctl", - "spawn", - &simulator_udid, - "log", - "config", - "--mode", - "level:debug", - "-subsystem", - &APP_BUNDLE_ID - ]); - if !logger.status.success() { - panic!("Failed to set log level\n{}", String::from_utf8_lossy(&logger.stderr)); - } - let persist_logs = xcrun_command(&[ - "simctl", - "spawn", - &simulator_udid, - "log", - "config", - "--mode", - "persist:debug", - "-subsystem", - &APP_BUNDLE_ID - ]); - if !persist_logs.status.success() { - panic!("Failed to perist log level\n{}", String::from_utf8_lossy(&persist_logs.stderr)); - } + let persist_logs = xcrun_command(&[ + "simctl", + "spawn", + &simulator_udid, + "log", + "config", + "--mode", + "persist:debug", + "-subsystem", + &APP_BUNDLE_ID + ]); + if !persist_logs.status.success() { + panic!("Failed to perist log level\n{}", String::from_utf8_lossy(&persist_logs.stderr)); + } - write_defaults(&simulator_udid, "isUITesting", "bool", "true"); - write_defaults(&simulator_udid, "isOnboardingCompleted", "string", "true"); - let port = get_port(&simulator_udid); - write_defaults(&simulator_udid, "automationPort", "int", port.to_string().as_str()); + write_defaults(&simulator_udid, "isUITesting", "bool", "true"); + write_defaults(&simulator_udid, "isOnboardingCompleted", "string", "true"); + let port = get_port(&simulator_udid); + write_defaults(&simulator_udid, "automationPort", "int", port.to_string().as_str()); - if !xcrun_command(&[ - "simctl", - "launch", - &simulator_udid, - APP_BUNDLE_ID, - "isUITesting", - "true" - ]).status.success() { - panic!("Failed to launch the app"); - } + // Set up custom privacy configuration if provided + if let Some(ref config_url) = ddg_caps.privacy_config_url { + setup_ios_privacy_config(&simulator_udid, config_url); + } - // Wait for the server to start - loop { - if !port_is_available(port) { - break; + if !xcrun_command(&[ + "simctl", + "launch", + &simulator_udid, + APP_BUNDLE_ID, + "isUITesting", + "true" + ]).status.success() { + panic!("Failed to launch the app"); + } + + // Wait for the server to start + loop { + if !port_is_available(port) { + break; + } + } + + // Wait for content blocker rules to be compiled + // This ensures the browser is fully ready before WebDriver considers the session started + info!("Waiting for content blocker to be ready (iOS)..."); + let cb_start = std::time::Instant::now(); + let mut cb_attempts = 0; + loop { + let client = reqwest::blocking::Client::builder() + .timeout(std::time::Duration::from_millis(500)) + .build() + .expect("Failed to create client"); + match client.get(format!("http://localhost:{}/contentBlockerReady", port)).send() { + Ok(response) => { + if let Ok(text) = response.text() { + // Parse JSON: { "message": "true"|"false", "requestPath": "/contentBlockerReady" } + if let Ok(json) = serde_json::from_str::(&text) { + if let Some(message) = json.get("message").and_then(|v| v.as_str()) { + if message == "true" { + let elapsed = cb_start.elapsed(); + info!("Content blocker ready (iOS) after {:?} ({} attempts)", elapsed, cb_attempts + 1); + break; + } + } + info!("Content blocker not ready yet (iOS, attempt {}, message: {:?})", cb_attempts + 1, json.get("message")); + } else { + info!("Content blocker check (iOS): failed to parse JSON (attempt {}): {}", cb_attempts + 1, text); + } + } + } + Err(e) => { + info!("Content blocker check failed (iOS, attempt {}): {}", cb_attempts + 1, e); + } + } + cb_attempts += 1; + if cb_attempts > 60 { // 30 seconds timeout for content blocker + info!("Warning: Timeout waiting for content blocker (iOS) after {:?}, proceeding anyway", cb_start.elapsed()); + break; + } + std::thread::sleep(std::time::Duration::from_millis(500)); + } + + let _ = child.kill(); // Gracefully kill the child process + let capabilities = Map::new(); + Ok(WebDriverResponse::NewSession(NewSessionResponse { + session_id: simulator_udid.to_string(), + capabilities: Value::Object(capabilities), + })) } } - - let _ = child.kill(); // Gracefully kill the child process - let capabilities = Map::new(); - Ok(WebDriverResponse::NewSession(NewSessionResponse { - session_id: simulator_udid.to_string(), - capabilities: Value::Object(capabilities), - })) }, DeleteSession => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); info!("Deleting session {:?}", session_id); - // Shutdown the simulator - xcrun_command(&["simctl", "shutdown", &session_id]); + match platform { + Platform::MacOS => { + let port = get_port(session_id); + quit_macos_app_with_port(Some(port)); + }, + Platform::IOS => { + // Shutdown the simulator + xcrun_command(&["simctl", "shutdown", &session_id]); + } + } Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))) }, + Status => { + // W3C WebDriver status endpoint - indicates server readiness + let status = serde_json::json!({ + "ready": true, + "message": "DuckDuckGo WebDriver ready" + }); + Ok(WebDriverResponse::Generic(ValueResponse(status))) + }, Get(params) => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); let url = params.url.as_str(); let mut params = std::collections::HashMap::new(); params.insert("url", url); - server_request(session_id, "navigate", ¶ms); + server_request_for_platform(session_id, &platform, "navigate", ¶ms); return Ok(WebDriverResponse::Void); }, ExecuteScript(params) => { @@ -478,10 +1544,57 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { // Join the arguments with commas let script_args_str = script_args_str.join(", "); + // Wrapper that handles: + // 1. Converting element references in args to actual DOM elements + // 2. Converting DOM element returns to element references let script_wrapper = r#" - (function () { - __SCRIPT__ - }(__SCRIPT_ARGS__)); + return (function () { + const ELEMENT_KEY = "element-6066-11e4-a52e-4f735466cecf"; + + // Convert element references in arguments to actual DOM elements + function resolveElementRefs(args) { + return args.map(arg => { + if (arg && typeof arg === 'object' && arg[ELEMENT_KEY]) { + // This is an element reference - look up the actual element + const uuid = arg[ELEMENT_KEY]; + if (window.__webdriver_script_results) { + for (const [el, id] of window.__webdriver_script_results) { + if (id === uuid) { + return el; + } + } + } + throw new Error('Element not found for reference: ' + uuid); + } + return arg; + }); + } + + const rawArgs = [__SCRIPT_ARGS__]; + const resolvedArgs = resolveElementRefs(rawArgs); + + const result = (function () { + __SCRIPT__ + }).apply(null, resolvedArgs); + + // Check if result is a DOM element + if (result instanceof Element || result instanceof Document) { + if (!window.__webdriver_script_results) { + window.__webdriver_script_results = new Map(); + } + let uuid; + if (window.__webdriver_script_results.has(result)) { + uuid = window.__webdriver_script_results.get(result); + } else { + uuid = window.crypto.randomUUID(); + window.__webdriver_script_results.set(result, uuid); + } + const elementRef = {}; + elementRef[ELEMENT_KEY] = uuid; + return elementRef; + } + return result; + }()); "#; // Replace SCRIPT and SCRIPT_ARGS with the actual script and arguments let script = script_wrapper.replace("__SCRIPT__", script).replace("__SCRIPT_ARGS__", script_args_str.as_str()); @@ -490,8 +1603,30 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { let script = urlencoding::encode(&script).to_string(); params.insert("script", script.as_str()); let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let response = server_request(session_id, "execute", ¶ms); - return Ok(WebDriverResponse::Generic(ValueResponse(response.into()))); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + + // Response is the raw message value from the server + // It could be: + // 1. A JSON object string like {"element-6066-...": "uuid"} + // 2. A JSON array or primitive + // 3. A plain string (URL, text content, etc.) + // 4. "null" for null values + // 5. "true"/"false" for booleans + + // Try to parse as JSON first + if let Ok(json_value) = serde_json::from_str::(&response) { + // Check for element reference with standard WebDriver key + if let Some(element_id) = json_value.get(webdriver::common::ELEMENT_KEY).and_then(|v| v.as_str()) { + let mut res = Map::new(); + res.insert(webdriver::common::ELEMENT_KEY.to_string(), Value::String(element_id.to_string())); + return Ok(WebDriverResponse::Generic(ValueResponse(res.into()))); + } + // Return parsed JSON value (could be array, object, null, bool, number) + return Ok(WebDriverResponse::Generic(ValueResponse(json_value))); + } + + // Not valid JSON - treat as plain string + return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(response)))); }, ExecuteAsyncScript(params) => { let script = params.script.as_str(); @@ -534,7 +1669,7 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { let script = urlencoding::encode(&script).to_string(); params.insert("script", script.as_str()); let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let response = server_request(session_id, "execute", ¶ms); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); info!("Script Response: {:#?}", response); let parsed: Value = serde_json::from_str(&response)?; return Ok(WebDriverResponse::Generic(ValueResponse(parsed.into()))); @@ -550,11 +1685,90 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { let json_string = urlencoding::encode(&json_string).to_string(); url_params.insert("args", json_string.as_str()); let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let element = server_request(session_id, "execute", &url_params); + let response = server_request_for_platform(session_id, &platform, "execute", &url_params); + // server_request already extracts the "message" field, so response is the UUID string directly + // The response might be a JSON-encoded string, so try parsing it + let response_clone = response.clone(); + let element_id = if let Ok(parsed) = serde_json::from_str::(&response) { + // If it's a JSON string, extract it + parsed.as_str().unwrap_or(&response).to_string() + } else { + // If it's already a plain string, use it directly + response + }; + info!("FindElement response: {:?}, element_id: {:?}", response_clone, element_id); let mut res = Map::new(); - res.insert(webdriver::common::ELEMENT_KEY.to_string(), Value::String(element)); + res.insert(webdriver::common::ELEMENT_KEY.to_string(), Value::String(element_id)); return Ok(WebDriverResponse::Generic(ValueResponse(res.into()))); }, + FindElements(params) => { + // Read file + let script = include_str!("find-elements.js"); + // URL encode the script + let script = urlencoding::encode(&script).to_string(); + let mut url_params = std::collections::HashMap::new(); + url_params.insert("script", script.as_str()); + let json_string = serde_json::to_string(¶ms).unwrap(); + let json_string = urlencoding::encode(&json_string).to_string(); + url_params.insert("args", json_string.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", &url_params); + info!("FindElements raw response: {:?} (length: {})", response, response.len()); + // server_request extracts the "message" field, which contains a JSON array string like "[\"uuid1\",\"uuid2\",...]" + // The response is the actual string content (not JSON-encoded), so we parse it directly as JSON + let element_ids_array: Value = match serde_json::from_str::(&response) { + Ok(arr @ Value::Array(_)) => { + info!("FindElements: Parsed as array directly ({} elements)", arr.as_array().unwrap().len()); + arr + } + Ok(Value::String(s)) => { + info!("FindElements: Parsed as JSON string, trying to parse inner string: {:?}", s); + // If it's a JSON string (double-encoded), parse it again to get the array + serde_json::from_str::(&s).unwrap_or_else(|e| { + error!("FindElements: Failed to parse inner JSON string: {} (string: {:?})", e, s); + Value::Array(Vec::new()) + }) + } + Ok(error_obj @ Value::Object(_)) => { + info!("FindElements: Parsed as object: {:?}", error_obj); + // Check if it's an error object + if let Some(error_msg) = error_obj.get("error").and_then(|v| v.as_str()) { + error!("FindElements script execution failed: {}", error_msg); + return Ok(WebDriverResponse::Generic(ValueResponse(Value::Array(Vec::new())))); + } + Value::Array(Vec::new()) + } + Ok(other) => { + error!("FindElements: Unexpected response format: {:?}", other); + Value::Array(Vec::new()) + } + Err(e) => { + error!("FindElements: Failed to parse response as JSON: {} (response: {:?})", e, response); + Value::Array(Vec::new()) + } + }; + info!("FindElements: Parsed array type: {:?}, is_array: {}, array_len: {:?}", + element_ids_array, + element_ids_array.is_array(), + element_ids_array.as_array().map(|a| a.len())); + let element_ids: Vec = element_ids_array + .as_array() + .unwrap_or(&Vec::new()) + .iter() + .filter_map(|v| v.as_str().map(|s| s.to_string())) + .collect(); + info!("FindElements response: {:?}, element_ids: {:?}", response, element_ids); + // Return array of element objects + let elements: Vec = element_ids + .into_iter() + .map(|id| { + let mut elem = Map::new(); + elem.insert(webdriver::common::ELEMENT_KEY.to_string(), Value::String(id)); + Value::Object(elem) + }) + .collect(); + return Ok(WebDriverResponse::Generic(ValueResponse(elements.into()))); + }, ElementClick(element_ref) => { let script_body = r#" let element; @@ -583,12 +1797,199 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { let mut params = std::collections::HashMap::new(); params.insert("script", script.as_str()); let session_id = msg.session_id.as_ref().expect("Expected a session id"); - server_request(session_id, "execute", ¶ms); + server_request_for_platform(session_id, &platform, "execute", ¶ms); return Ok(WebDriverResponse::Void); }, + GetElementText(element_ref) => { + let script_body = r#" + if (!window.__webdriver_script_results) { + return ''; + } + for (const [el, id] of window.__webdriver_script_results) { + if (id === elementId) { + return el.textContent || el.innerText || ''; + } + } + return ''; + "#; + let script = [ + format!("let elementId = '{}';", &element_ref), + script_body.to_string(), + ].join(" "); + let script = urlencoding::encode(&script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + // Response might be JSON string, extract text + let text = serde_json::from_str::(&response) + .ok() + .and_then(|v| v.as_str().map(|s| s.to_string())) + .unwrap_or(response); + return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(text)))); + }, + GetElementAttribute(element_ref, attr_name) => { + info!("GetElementAttribute called: element={}, attr={}", element_ref, attr_name); + let script_body = r#" + if (!window.__webdriver_script_results) { + return null; + } + for (const [el, id] of window.__webdriver_script_results) { + if (id === elementId) { + return el.getAttribute(attrName); + } + } + return null; + "#; + let script = [ + format!("let elementId = '{}';", &element_ref), + format!("let attrName = '{}';", &attr_name), + script_body.to_string(), + ].join(" "); + let script = urlencoding::encode(&script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + // Response is the raw attribute value (not JSON-encoded) + // If it's "null" string, return null, otherwise return the string + if response == "null" || response.is_empty() { + return Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))); + } + return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(response)))); + }, + IsDisplayed(element_ref) => { + let script_body = r#" + if (!window.__webdriver_script_results) { + return false; + } + for (const [el, id] of window.__webdriver_script_results) { + if (id === elementId) { + const style = window.getComputedStyle(el); + const rect = el.getBoundingClientRect(); + return style.display !== 'none' && + style.visibility !== 'hidden' && + style.opacity !== '0' && + rect.width > 0 && + rect.height > 0; + } + } + return false; + "#; + let script = [ + format!("let elementId = '{}';", &element_ref), + script_body.to_string(), + ].join(" "); + let script = urlencoding::encode(&script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + // Response is "true" or "false" string, or "1"/"0" + let is_displayed = response == "true" || response == "1"; + return Ok(WebDriverResponse::Generic(ValueResponse(Value::Bool(is_displayed)))); + }, + ElementSendKeys(element_ref, keys) => { + info!("ElementSendKeys called: element={}, keys={:?}", element_ref, keys); + let script_body = r#" + if (!window.__webdriver_script_results) { + throw new Error('No elements found'); + } + let element; + for (const [el, id] of window.__webdriver_script_results) { + if (id === elementId) { + element = el; + break; + } + } + if (!element) { + throw new Error('Element not found: ' + elementId); + } + // Focus the element + element.focus(); + // Set the value - handle different input types + if ('value' in element) { + element.value = textToSend; + } else if (element.isContentEditable) { + element.textContent = textToSend; + } + // Dispatch events to trigger any listeners + element.dispatchEvent(new Event('input', { bubbles: true })); + element.dispatchEvent(new Event('change', { bubbles: true })); + return 'sent'; + "#; + // The keys parameter contains a "text" field with the text to send + let text = keys.text.as_str(); + let script = [ + format!("let elementId = '{}';", &element_ref), + format!("let textToSend = {};", serde_json::to_string(text).unwrap()), + script_body.to_string(), + ].join(" "); + let script = urlencoding::encode(&script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + info!("ElementSendKeys response: {:?}", response); + return Ok(WebDriverResponse::Void); + }, + ElementClear(element_ref) => { + info!("ElementClear called: element={}", element_ref); + let script_body = r#" + if (!window.__webdriver_script_results) { + throw new Error('No elements found'); + } + let element; + for (const [el, id] of window.__webdriver_script_results) { + if (id === elementId) { + element = el; + break; + } + } + if (!element) { + throw new Error('Element not found: ' + elementId); + } + // Focus the element + element.focus(); + // Clear the value + if ('value' in element) { + element.value = ''; + } else if (element.isContentEditable) { + element.textContent = ''; + } + // Dispatch events to trigger any listeners + element.dispatchEvent(new Event('input', { bubbles: true })); + element.dispatchEvent(new Event('change', { bubbles: true })); + return 'cleared'; + "#; + let script = [ + format!("let elementId = '{}';", &element_ref), + script_body.to_string(), + ].join(" "); + let script = urlencoding::encode(&script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + info!("ElementClear response: {:?}", response); + return Ok(WebDriverResponse::Void); + }, + GetTitle => { + let script = "return document.title || '';"; + let script = urlencoding::encode(script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + let title = serde_json::from_str::(&response) + .ok() + .and_then(|v| v.as_str().map(|s| s.to_string())) + .unwrap_or_default(); + return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(title)))); + }, NewWindow(_) => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let window_handle = server_request(session_id, "newWindow", &std::collections::HashMap::new()); + let window_handle = server_request_for_platform(session_id, &platform, "newWindow", &std::collections::HashMap::new()); info!("New window handle: {:#?}", window_handle); #[derive(Deserialize, Debug)] struct ResponseNewWindow { @@ -604,26 +2005,31 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { }, CloseWindow => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let window_handle = server_request(session_id, "closeWindow", &std::collections::HashMap::new()); + let window_handle = server_request_for_platform(session_id, &platform, "closeWindow", &std::collections::HashMap::new()); info!("Close window handle: {:#?}", window_handle); - return Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))); + + let window_handles = server_request_for_platform(session_id, &platform, "getWindowHandles", &std::collections::HashMap::new()); + // Parse json string + let window_handles: Vec = serde_json::from_str(&window_handles).expect("Failed to parse window handles"); + info!("Window handles: {:#?}", window_handles); + return Ok(WebDriverResponse::Generic(ValueResponse(window_handles.into()))); }, SwitchToWindow(params_in) => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); let mut params = std::collections::HashMap::new(); params.insert("handle", params_in.handle.as_str()); - server_request(session_id, "switchToWindow", ¶ms); + server_request_for_platform(session_id, &platform, "switchToWindow", ¶ms); return Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))); }, GetWindowHandle => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let window_handle = server_request(session_id, "getWindowHandle", &std::collections::HashMap::new()); + let window_handle = server_request_for_platform(session_id, &platform, "getWindowHandle", &std::collections::HashMap::new()); info!("Window handle: {:#?}", window_handle); return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(window_handle)))); }, GetWindowHandles => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); - let window_handles = server_request(session_id, "getWindowHandles", &std::collections::HashMap::new()); + let window_handles = server_request_for_platform(session_id, &platform, "getWindowHandles", &std::collections::HashMap::new()); // Parse json string let window_handles: Vec = serde_json::from_str(&window_handles).expect("Failed to parse window handles"); info!("Window handles: {:#?}", window_handles); @@ -632,23 +2038,76 @@ fn write_defaults(udid: &str, key: &str, key_type: &str, value: &str) { GetCurrentUrl => { let session_id = msg.session_id.as_ref().expect("Expected a session id"); info!("Session {:?}", session_id); - let url_string = server_request(session_id, "getUrl", &std::collections::HashMap::new()); + let url_string = server_request_for_platform(session_id, &platform, "getUrl", &std::collections::HashMap::new()); info!("UrlString response: {:#?}", url_string); return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(url_string)))); }, - _ => Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))), + ReleaseActions | PerformActions(_) => { + info!("Actions command - no-op, returning void"); + return Ok(WebDriverResponse::Void); + }, + TakeScreenshot => { + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let response = server_request_for_platform(session_id, &platform, "screenshot", &std::collections::HashMap::new()); + // WebDriver spec requires base64-encoded PNG data + return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(response)))); + }, + TakeElementScreenshot(element_ref) => { + let script_body = r#" + if (!window.__webdriver_script_results) { + return null; + } + for (const [el, id] of window.__webdriver_script_results) { + if (id === elementId) { + const rect = el.getBoundingClientRect(); + return JSON.stringify({ + x: Math.round(rect.x), + y: Math.round(rect.y), + width: Math.round(rect.width), + height: Math.round(rect.height) + }); + } + } + return null; + "#; + let script = [ + format!("let elementId = '{}';", &element_ref), + script_body.to_string(), + ].join(" "); + let script = urlencoding::encode(&script).to_string(); + let mut params = std::collections::HashMap::new(); + params.insert("script", script.as_str()); + let session_id = msg.session_id.as_ref().expect("Expected a session id"); + let rect_response = server_request_for_platform(session_id, &platform, "execute", ¶ms); + + // Parse the rect JSON and pass to screenshot endpoint + let mut screenshot_params = std::collections::HashMap::new(); + screenshot_params.insert("rect", rect_response.as_str()); + let response = server_request_for_platform(session_id, &platform, "screenshot", &screenshot_params); + return Ok(WebDriverResponse::Generic(ValueResponse(Value::String(response)))); + }, + _ => { + info!("Unhandled command: {:?}", msg.command); + Ok(WebDriverResponse::Generic(ValueResponse(Value::Null))) + }, }; } - fn teardown_session(&mut self, kind: SessionTeardownKind) { - println!("Tearing down session"); - info!("Tearing down session"); - /* - let wait_for_shutdown = match kind { - SessionTeardownKind::Deleted => true, - SessionTeardownKind::NotDeleted => false, - }; - self.close_connection(wait_for_shutdown); - */ - } - } \ No newline at end of file + fn teardown_session(&mut self, kind: SessionTeardownKind) { + info!("Tearing down session (kind: {:?})", kind); + + let platform = Platform::from_env(); + match platform { + Platform::MacOS => { + if matches!(kind, SessionTeardownKind::Deleted) { + // Quit app via /shutdown endpoint which cleanly terminates + // without crash dialogs (no port known here, use fallback) + quit_macos_app_with_port(None); + } + }, + Platform::IOS => { + // iOS cleanup handled by DeleteSession command + } + } + } +} \ No newline at end of file diff --git a/webdriver/src/main.rs b/webdriver/src/main.rs index 4fea8bd..9fbb9ad 100644 --- a/webdriver/src/main.rs +++ b/webdriver/src/main.rs @@ -91,6 +91,7 @@ fn inner_main(port: u16) -> ProgramResult<()> { let origin = format!("http://localhost:{}", port); let allow_origins = vec![Url::parse(&origin).unwrap()]; let handler = Handler::new(); + info!("Starting server on {}", address); let listening = webdriver::server::start( address, allow_hosts,