jumpy-lion 0.1.6-beta.30 → 0.1.6-beta.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -795
- package/browser/fonts/macos-bundle/README.md +9 -61
- package/dist/browser-controller.d.ts +8 -3
- package/dist/browser-controller.d.ts.map +1 -1
- package/dist/browser-controller.js +38 -248
- package/dist/browser-controller.js.map +1 -1
- package/dist/browser-plugin.d.ts +68 -106
- package/dist/browser-plugin.d.ts.map +1 -1
- package/dist/browser-plugin.js +210 -705
- package/dist/browser-plugin.js.map +1 -1
- package/dist/browser-process/align-fingerprint-config.d.ts +40 -0
- package/dist/browser-process/align-fingerprint-config.d.ts.map +1 -0
- package/dist/browser-process/align-fingerprint-config.js +79 -0
- package/dist/browser-process/align-fingerprint-config.js.map +1 -0
- package/dist/browser-process/anti-detect-config.d.ts +5 -43
- package/dist/browser-process/anti-detect-config.d.ts.map +1 -1
- package/dist/browser-process/anti-detect-config.js +212 -554
- package/dist/browser-process/anti-detect-config.js.map +1 -1
- package/dist/browser-process/browser.d.ts +19 -137
- package/dist/browser-process/browser.d.ts.map +1 -1
- package/dist/browser-process/browser.js +41 -10
- package/dist/browser-process/browser.js.map +1 -1
- package/dist/browser-process/fingerprint-config.d.ts +103 -0
- package/dist/browser-process/fingerprint-config.d.ts.map +1 -0
- package/dist/browser-process/fingerprint-config.js +245 -0
- package/dist/browser-process/fingerprint-config.js.map +1 -0
- package/dist/browser-process/gpu-family-profiles.d.ts +53 -0
- package/dist/browser-process/gpu-family-profiles.d.ts.map +1 -0
- package/dist/browser-process/gpu-family-profiles.js +395 -0
- package/dist/browser-process/gpu-family-profiles.js.map +1 -0
- package/dist/browser-process/launch-options.d.ts +195 -0
- package/dist/browser-process/launch-options.d.ts.map +1 -0
- package/dist/browser-process/launch-options.js +2 -0
- package/dist/browser-process/launch-options.js.map +1 -0
- package/dist/browser-process/port-allocator.d.ts +46 -0
- package/dist/browser-process/port-allocator.d.ts.map +1 -0
- package/dist/browser-process/port-allocator.js +171 -0
- package/dist/browser-process/port-allocator.js.map +1 -0
- package/dist/browser-process/process.d.ts +35 -0
- package/dist/browser-process/process.d.ts.map +1 -1
- package/dist/browser-process/process.js +110 -0
- package/dist/browser-process/process.js.map +1 -1
- package/dist/browser-process/signal-cleanup.d.ts +37 -0
- package/dist/browser-process/signal-cleanup.d.ts.map +1 -0
- package/dist/browser-process/signal-cleanup.js +93 -0
- package/dist/browser-process/signal-cleanup.js.map +1 -0
- package/dist/connection/cdp-reconnection.d.ts +61 -0
- package/dist/connection/cdp-reconnection.d.ts.map +1 -0
- package/dist/connection/cdp-reconnection.js +98 -0
- package/dist/connection/cdp-reconnection.js.map +1 -0
- package/dist/connection/page-session.d.ts +109 -0
- package/dist/connection/page-session.d.ts.map +1 -0
- package/dist/connection/page-session.js +257 -0
- package/dist/connection/page-session.js.map +1 -0
- package/dist/crawler.d.ts +1 -1
- package/dist/crawler.d.ts.map +1 -1
- package/dist/crawler.js +1 -1
- package/dist/crawler.js.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.d.ts +6 -116
- package/dist/fingerprinting/fingerprint-injector.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-injector.js +50 -535
- package/dist/fingerprinting/fingerprint-injector.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts +6 -2
- package/dist/fingerprinting/fingerprint-overrides/index.d.ts.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/index.js +6 -2
- package/dist/fingerprinting/fingerprint-overrides/index.js.map +1 -1
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts +18 -0
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.js +136 -0
- package/dist/fingerprinting/fingerprint-overrides/navigator-override.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/override.d.ts +137 -0
- package/dist/fingerprinting/fingerprint-overrides/override.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/override.js +14 -0
- package/dist/fingerprinting/fingerprint-overrides/override.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.d.ts +27 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.js +285 -0
- package/dist/fingerprinting/fingerprint-overrides/registry.js.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts +16 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.d.ts.map +1 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.js +175 -0
- package/dist/fingerprinting/fingerprint-overrides/screen-override.js.map +1 -0
- package/dist/fingerprinting/injection-planner.d.ts +178 -0
- package/dist/fingerprinting/injection-planner.d.ts.map +1 -0
- package/dist/fingerprinting/injection-planner.js +376 -0
- package/dist/fingerprinting/injection-planner.js.map +1 -0
- package/dist/fingerprinting/profile-quality.d.ts +24 -0
- package/dist/fingerprinting/profile-quality.d.ts.map +1 -0
- package/dist/fingerprinting/profile-quality.js +165 -0
- package/dist/fingerprinting/profile-quality.js.map +1 -0
- package/dist/fingerprinting/profile-selector.d.ts +101 -0
- package/dist/fingerprinting/profile-selector.d.ts.map +1 -0
- package/dist/fingerprinting/profile-selector.js +156 -0
- package/dist/fingerprinting/profile-selector.js.map +1 -0
- package/dist/fingerprinting/ua-alignment.d.ts +51 -0
- package/dist/fingerprinting/ua-alignment.d.ts.map +1 -0
- package/dist/fingerprinting/ua-alignment.js +146 -0
- package/dist/fingerprinting/ua-alignment.js.map +1 -0
- package/dist/input/dropdown-selector.d.ts +74 -0
- package/dist/input/dropdown-selector.d.ts.map +1 -0
- package/dist/input/dropdown-selector.js +306 -0
- package/dist/input/dropdown-selector.js.map +1 -0
- package/dist/input/element-target.d.ts +117 -0
- package/dist/input/element-target.d.ts.map +1 -0
- package/dist/input/element-target.js +383 -0
- package/dist/input/element-target.js.map +1 -0
- package/dist/input/input-emulator.d.ts +85 -0
- package/dist/input/input-emulator.d.ts.map +1 -0
- package/dist/input/input-emulator.js +319 -0
- package/dist/input/input-emulator.js.map +1 -0
- package/dist/input/input-transport.d.ts +60 -0
- package/dist/input/input-transport.d.ts.map +1 -0
- package/dist/input/input-transport.js +28 -0
- package/dist/input/input-transport.js.map +1 -0
- package/dist/input/recording-transport.d.ts +32 -0
- package/dist/input/recording-transport.d.ts.map +1 -0
- package/dist/input/recording-transport.js +43 -0
- package/dist/input/recording-transport.js.map +1 -0
- package/dist/navigation/page-navigation.d.ts +67 -0
- package/dist/navigation/page-navigation.d.ts.map +1 -0
- package/dist/navigation/page-navigation.js +107 -0
- package/dist/navigation/page-navigation.js.map +1 -0
- package/dist/network/network-watch.d.ts +72 -0
- package/dist/network/network-watch.d.ts.map +1 -0
- package/dist/network/network-watch.js +143 -0
- package/dist/network/network-watch.js.map +1 -0
- package/dist/page.d.ts +59 -117
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +169 -1304
- package/dist/page.js.map +1 -1
- package/dist/session-profile.d.ts +79 -0
- package/dist/session-profile.d.ts.map +1 -0
- package/dist/session-profile.js +124 -0
- package/dist/session-profile.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -4
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts +0 -87
- package/dist/fingerprinting/custom-fingerprint-injector.d.ts.map +0 -1
- package/dist/fingerprinting/custom-fingerprint-injector.js +0 -342
- package/dist/fingerprinting/custom-fingerprint-injector.js.map +0 -1
- package/dist/launcher-wrap.d.ts +0 -10
- package/dist/launcher-wrap.d.ts.map +0 -1
- package/dist/launcher-wrap.js +0 -11
- package/dist/launcher-wrap.js.map +0 -1
|
@@ -1,76 +1,24 @@
|
|
|
1
|
-
# macOS-equivalent font bundle
|
|
1
|
+
# macOS-equivalent font bundle
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- **`install.sh`** — installs the required apt packages, drops the alias file
|
|
8
|
-
into `/etc/fonts/conf.d/`, and rebuilds the font cache.
|
|
9
|
-
|
|
10
|
-
## Why
|
|
11
|
-
|
|
12
|
-
When a Linux host runs the crawler with a macOS fingerprint (`platform:
|
|
13
|
-
'MacIntel'`), Skia (Chromium's font subsystem) consults fontconfig to resolve
|
|
14
|
-
font family names. Without these aliases, "Helvetica" silently substitutes
|
|
15
|
-
to DejaVu Sans / Liberation Sans, producing different glyph rasters and
|
|
16
|
-
`measureText()` widths than real macOS. Anti-bot vendors detect this delta
|
|
17
|
-
through canvas pixel hashing and font-width fingerprinting — a signal that
|
|
18
|
-
survives any pixel-level noise patch.
|
|
19
|
-
|
|
20
|
-
These aliases redirect the resolution to clones that are visually close to
|
|
21
|
-
the macOS originals, narrowing the cross-platform delta enough that a
|
|
22
|
-
moderate noise envelope can mask the residual difference.
|
|
3
|
+
Fontconfig aliases plus an installer that map common macOS font family names
|
|
4
|
+
(Helvetica, SF Pro, Menlo, Lucida Grande, …) to freely-licensed clones, so an
|
|
5
|
+
application rendering with macOS font names on a Linux host resolves to
|
|
6
|
+
visually similar fonts instead of the platform defaults.
|
|
23
7
|
|
|
24
8
|
## Usage (Docker)
|
|
25
9
|
|
|
26
|
-
In your Apify actor `Dockerfile`, copy this directory in and run the
|
|
27
|
-
installer as part of your image build:
|
|
28
|
-
|
|
29
10
|
```dockerfile
|
|
30
|
-
# Bundle Mac-equivalent fonts so Skia rasterizes a Mac-like glyph set even
|
|
31
|
-
# on a Linux host. Must run as root.
|
|
32
11
|
COPY browser/fonts/macos-bundle /tmp/macos-bundle
|
|
33
12
|
RUN bash /tmp/macos-bundle/install.sh && rm -rf /tmp/macos-bundle
|
|
34
13
|
```
|
|
35
14
|
|
|
36
|
-
|
|
15
|
+
Verify inside the container:
|
|
37
16
|
|
|
38
17
|
```bash
|
|
39
18
|
fc-match Helvetica
|
|
40
|
-
# Expect: qhvr.otf: "TeX Gyre Heros" "Regular"
|
|
41
|
-
# NOT: DejaVuSans.ttf: "DejaVu Sans" "Book"
|
|
42
19
|
```
|
|
43
20
|
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
| macOS font | Linux clone | Apt package | License |
|
|
47
|
-
|------------|-------------|-------------|---------|
|
|
48
|
-
| Helvetica / Helvetica Neue | TeX Gyre Heros | `fonts-texgyre` | GUST (BSD-equivalent) |
|
|
49
|
-
| Arial | Arimo | `fonts-croscore` | Apache 2.0 |
|
|
50
|
-
| Times / Times New Roman | Tinos | `fonts-croscore` | Apache 2.0 |
|
|
51
|
-
| Courier / Courier New | Cousine | `fonts-croscore` | Apache 2.0 |
|
|
52
|
-
| SF Pro / SF Pro Display / SF Pro Text | Inter | `fonts-inter` | SIL OFL 1.1 |
|
|
53
|
-
| SF Mono | JetBrains Mono | `fonts-jetbrains-mono` | Apache 2.0 |
|
|
54
|
-
| Menlo | DejaVu Sans Mono | `fonts-dejavu-core` | Bitstream Vera (free) |
|
|
55
|
-
| Monaco | Liberation Mono | `fonts-liberation` | SIL OFL 1.1 |
|
|
56
|
-
| Geneva | Liberation Sans | `fonts-liberation` | SIL OFL 1.1 |
|
|
57
|
-
| Lucida Grande | DejaVu Sans | `fonts-dejavu-core` | Bitstream Vera |
|
|
58
|
-
| New York / Baskerville / Hoefler Text / Charter / Cochin / Didot | Tinos | `fonts-croscore` | Apache 2.0 |
|
|
59
|
-
| Optima / Gill Sans | URW Classico / URW Gothic | `fonts-urw-base35` | GPL+font exception |
|
|
60
|
-
| Avenir / Avenir Next | Inter | `fonts-inter` | SIL OFL 1.1 |
|
|
61
|
-
| Futura | URW Gothic | `fonts-urw-base35` | GPL+font exception |
|
|
62
|
-
| Palatino | TeX Gyre Pagella / P052 | `fonts-texgyre` | GUST |
|
|
63
|
-
| Bookman / Bookman Old Style | TeX Gyre Bonum / URW Bookman | `fonts-texgyre` | GUST |
|
|
64
|
-
| Apple Color Emoji | Noto Color Emoji | `fonts-noto-color-emoji` | SIL OFL 1.1 |
|
|
65
|
-
| Apple SD Gothic Neo / AppleGothic | Noto Sans CJK KR | `fonts-noto-cjk` | SIL OFL 1.1 |
|
|
66
|
-
| Hiragino Sans (JP) | Noto Sans CJK JP | `fonts-noto-cjk` | SIL OFL 1.1 |
|
|
67
|
-
| PingFang SC/TC | Noto Sans CJK SC/TC | `fonts-noto-cjk` | SIL OFL 1.1 |
|
|
68
|
-
| Apple Symbols | Symbola / Noto Sans Symbols | `fonts-symbola`, `fonts-noto-core` | various free |
|
|
69
|
-
|
|
70
|
-
## Limitations
|
|
21
|
+
## License
|
|
71
22
|
|
|
72
|
-
The
|
|
73
|
-
|
|
74
|
-
and sub-pixel positioning algorithms. Pair this bundle with the cromite
|
|
75
|
-
text-rect noise envelope (`F7-B`) and the deterministic font-fallback patch
|
|
76
|
-
(`F7-C`) for full coverage.
|
|
23
|
+
The bundled clones are all freely licensed (Apache-2.0, SIL OFL 1.1, GUST,
|
|
24
|
+
Bitstream Vera). See `install.sh` for the exact apt packages.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { BrowserController } from 'crawlee';
|
|
2
|
-
import type { LaunchBrowserOptions } from './browser-plugin.js';
|
|
3
|
-
import type { CdpLauncher, LaunchReturn } from './launcher-wrap.js';
|
|
2
|
+
import type { CdpLauncher, LaunchBrowserOptions, LaunchReturn } from './browser-plugin.js';
|
|
4
3
|
import type { Cookie } from './page.js';
|
|
5
4
|
import CdpPage from './page.js';
|
|
6
5
|
export type NewPageResult = CdpPage;
|
|
@@ -10,7 +9,6 @@ LaunchReturn, // LaunchResult (CDP client)
|
|
|
10
9
|
{}, // NewPageOptions (empty as there are no specific options)
|
|
11
10
|
NewPageResult> {
|
|
12
11
|
private client?;
|
|
13
|
-
private reconnectAttempts;
|
|
14
12
|
private hasDisconnectListener;
|
|
15
13
|
private isClosing;
|
|
16
14
|
initialize(): Promise<void>;
|
|
@@ -39,6 +37,13 @@ NewPageResult> {
|
|
|
39
37
|
* @private
|
|
40
38
|
*/
|
|
41
39
|
protected _newPage(maxRetries?: number): Promise<NewPageResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Thin delegate to the FingerprintConfig module's post-launch path. It
|
|
42
|
+
* reuses the once-per-launch profile selection (stamped by the plugin's
|
|
43
|
+
* pre-launch native path) or selects here for the system-Chrome fallback,
|
|
44
|
+
* then drives the JS fingerprint injection on the new page. The pre-vs-post
|
|
45
|
+
* decision and the PROFILE_SELECTION_KEY handshake live inside that module.
|
|
46
|
+
*/
|
|
42
47
|
private _maybeOverrideFingerprint;
|
|
43
48
|
/**
|
|
44
49
|
* Records the launch-time inputs the saveSession() helper later needs to read
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-controller.d.ts","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAExD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"browser-controller.d.ts","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAI3F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AAEpC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,iBAAiB,CAC/D,WAAW,EAAE,6CAA6C;AAC1D,oBAAoB,EAAE,gBAAgB;AACtC,YAAY,EAAE,4BAA4B;AAC1C,EAAE,EAAE,0DAA0D;AAC9D,aAAa,CAChB;IACG,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,SAAS,CAAS;IAEpB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAiBjC;;;OAGG;YACW,iBAAiB;IA8B/B;;;OAGG;cACa,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCvC;;;OAGG;cACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtC;;;OAGG;cACa,QAAQ,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAuDhE;;;;;;OAMG;YACW,yBAAyB;IAOvC;;;;;OAKG;YACW,qBAAqB;IAiBnC;;;;OAIG;YACW,oBAAoB;IAUlC;;;OAGG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlF;;;OAGG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ1D,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI5G"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import CDP from 'chrome-remote-interface';
|
|
2
2
|
import { BrowserController, log, utils } from 'crawlee';
|
|
3
|
+
import { applyToPage } from './browser-process/fingerprint-config.js';
|
|
4
|
+
import { runWithRetries, linearBackoff, fixedBackoff } from './connection/cdp-reconnection.js';
|
|
3
5
|
import { PAGE_CLOSED } from './events.js';
|
|
4
|
-
import { CdpFingerprintInjector } from './fingerprinting/fingerprint-injector.js';
|
|
5
|
-
import { generateNonApifyFingerprint } from './fingerprinting/non-apify-fingerprint-generator.js';
|
|
6
6
|
import CdpPage from './page.js';
|
|
7
7
|
import { installSessionInjectionHook } from './session/inject-hook.js';
|
|
8
8
|
export default class CDPBrowserController extends BrowserController {
|
|
@@ -14,12 +14,6 @@ export default class CDPBrowserController extends BrowserController {
|
|
|
14
14
|
writable: true,
|
|
15
15
|
value: void 0
|
|
16
16
|
});
|
|
17
|
-
Object.defineProperty(this, "reconnectAttempts", {
|
|
18
|
-
enumerable: true,
|
|
19
|
-
configurable: true,
|
|
20
|
-
writable: true,
|
|
21
|
-
value: 0
|
|
22
|
-
});
|
|
23
17
|
Object.defineProperty(this, "hasDisconnectListener", {
|
|
24
18
|
enumerable: true,
|
|
25
19
|
configurable: true,
|
|
@@ -34,27 +28,22 @@ export default class CDPBrowserController extends BrowserController {
|
|
|
34
28
|
}); // Flag to track intentional browser closure
|
|
35
29
|
}
|
|
36
30
|
async initialize() {
|
|
31
|
+
// Retry machinery lives in CdpReconnection; this binding connects to
|
|
32
|
+
// the default (root) target without enabling any domain — eager
|
|
33
|
+
// Network.enable/Page.enable are CDP detection vectors.
|
|
37
34
|
const maxInitAttempts = 3;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
attempt++;
|
|
35
|
+
this.client = await runWithRetries({
|
|
36
|
+
label: 'CDP client initialization',
|
|
37
|
+
policy: linearBackoff(maxInitAttempts, 2000),
|
|
38
|
+
attempt: async () => await CDP({
|
|
39
|
+
port: this.launchContext.debuggingPort,
|
|
40
|
+
local: true,
|
|
41
|
+
}),
|
|
42
|
+
onAttemptError: (error, attempt) => {
|
|
50
43
|
log.error(`Failed to initialize CDP client (attempt ${attempt}/${maxInitAttempts})`, error);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// Wait before retrying
|
|
55
|
-
await utils.sleep(2000 * attempt);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
44
|
+
},
|
|
45
|
+
}); // linearBackoff throws on exhaustion, so this is always defined
|
|
46
|
+
this._attachDisconnectListener();
|
|
58
47
|
}
|
|
59
48
|
/**
|
|
60
49
|
* Attach a listener to handle WebSocket disconnections.
|
|
@@ -80,35 +69,30 @@ export default class CDPBrowserController extends BrowserController {
|
|
|
80
69
|
* @private
|
|
81
70
|
*/
|
|
82
71
|
async _attemptReconnect(maxAttempts = 5, delayMs = 2000) {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
await runWithRetries({
|
|
73
|
+
label: 'browser root reconnect',
|
|
74
|
+
policy: fixedBackoff(maxAttempts, delayMs / 2),
|
|
75
|
+
attempt: async (attempt) => {
|
|
76
|
+
log.info(`Reconnect attempt ${attempt} of ${maxAttempts}`);
|
|
77
|
+
// Connect to browser target directly — the root target connect
|
|
78
|
+
// does not create new targets.
|
|
88
79
|
this.client = await CDP({
|
|
89
80
|
port: this.launchContext.debuggingPort,
|
|
90
|
-
target: 'browser',
|
|
81
|
+
target: 'browser',
|
|
91
82
|
local: true,
|
|
92
83
|
});
|
|
93
84
|
// NOTE: Network.enable() and Page.enable() REMOVED - they are CDP detection vectors!
|
|
94
85
|
// These domains will be enabled lazily only when actually needed
|
|
95
86
|
// Enabling them on connect triggers detectable side effects
|
|
96
|
-
this.reconnectAttempts = 0;
|
|
97
87
|
log.info('Reconnected to browser successfully.');
|
|
98
88
|
this.hasDisconnectListener = false;
|
|
99
89
|
this._attachDisconnectListener();
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
log.error('Max reconnect attempts reached.');
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
await utils.sleep(delayMs / 2);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
90
|
+
return true;
|
|
91
|
+
},
|
|
92
|
+
onAttemptError: (error, attempt) => {
|
|
93
|
+
log.error(`Reconnect attempt ${attempt} failed.`, error);
|
|
94
|
+
},
|
|
95
|
+
});
|
|
112
96
|
}
|
|
113
97
|
/**
|
|
114
98
|
* Gracefully closes the browser and associated process.
|
|
@@ -213,209 +197,15 @@ export default class CDPBrowserController extends BrowserController {
|
|
|
213
197
|
}
|
|
214
198
|
throw new Error('Failed to create a new page after maximum retry attempts.');
|
|
215
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Thin delegate to the FingerprintConfig module's post-launch path. It
|
|
202
|
+
* reuses the once-per-launch profile selection (stamped by the plugin's
|
|
203
|
+
* pre-launch native path) or selects here for the system-Chrome fallback,
|
|
204
|
+
* then drives the JS fingerprint injection on the new page. The pre-vs-post
|
|
205
|
+
* decision and the PROFILE_SELECTION_KEY handshake live inside that module.
|
|
206
|
+
*/
|
|
216
207
|
async _maybeOverrideFingerprint(page) {
|
|
217
|
-
|
|
218
|
-
log.debug('No fingerprint provided in launchContext, skipping fingerprint injection');
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
const { fingerprint: launchFingerprint } = this.launchContext;
|
|
223
|
-
let fingerprint = launchFingerprint;
|
|
224
|
-
let fp = fingerprint.fingerprint;
|
|
225
|
-
// ── Non-Apify real-device fingerprint override ───────────────────────
|
|
226
|
-
// When useNonApifyFingerprints is set, replace the Crawlee-provided
|
|
227
|
-
// synthetic fingerprint with a real Chrome device profile. All fields
|
|
228
|
-
// (navigator, screen, GPU, UA-CH) come from the same physical device,
|
|
229
|
-
// guaranteeing cross-property consistency that synthetic generators miss.
|
|
230
|
-
//
|
|
231
|
-
// Native-stealth runs already populated `launchContext.fingerprint`
|
|
232
|
-
// pre-launch in browser-plugin.ts; this block re-runs the same
|
|
233
|
-
// selection logic for the system-Chrome fallback path (where the
|
|
234
|
-
// pre-launch C++ config write was skipped).
|
|
235
|
-
const _fpOpts = this.launchContext.launchOptions?.fingerprintOptions;
|
|
236
|
-
const fingerprintGeneratorOptions = this.launchContext.launchOptions?.fingerprintGeneratorOptions;
|
|
237
|
-
if (_fpOpts?.useNonApifyFingerprints) {
|
|
238
|
-
const userPlatform = _fpOpts?.platform;
|
|
239
|
-
const osHint = (() => {
|
|
240
|
-
// 1. Explicit user platform pin (fingerprintOptions.platform)
|
|
241
|
-
if (userPlatform === 'MacIntel')
|
|
242
|
-
return 'macos';
|
|
243
|
-
if (userPlatform === 'Linux x86_64')
|
|
244
|
-
return 'linux';
|
|
245
|
-
if (userPlatform === 'Win32')
|
|
246
|
-
return 'windows';
|
|
247
|
-
// 2. operatingSystems[0] from fingerprintGeneratorOptions —
|
|
248
|
-
// Phase 1 validation guarantees this cannot contradict #1.
|
|
249
|
-
const fromOpSys = fingerprintGeneratorOptions?.operatingSystems?.[0]?.toLowerCase();
|
|
250
|
-
if (fromOpSys === 'macos' || fromOpSys === 'linux' || fromOpSys === 'windows') {
|
|
251
|
-
return fromOpSys;
|
|
252
|
-
}
|
|
253
|
-
// 3. Existing fingerprint's platform string (Crawlee-generated)
|
|
254
|
-
const p = (fp?.navigator?.platform || '').toLowerCase();
|
|
255
|
-
if (p.includes('mac'))
|
|
256
|
-
return 'macos';
|
|
257
|
-
if (p.includes('linux'))
|
|
258
|
-
return 'linux';
|
|
259
|
-
if (p.includes('win'))
|
|
260
|
-
return 'windows';
|
|
261
|
-
// 4. Host OS fallback
|
|
262
|
-
if (process.platform === 'darwin')
|
|
263
|
-
return 'macos';
|
|
264
|
-
if (process.platform === 'linux')
|
|
265
|
-
return 'linux';
|
|
266
|
-
return 'windows';
|
|
267
|
-
})();
|
|
268
|
-
// When `userPlatform` is unset, derive it from `osHint` so the
|
|
269
|
-
// non-Apify pool's `platformToOs(platform)` mapping (which wins
|
|
270
|
-
// over the `os` field) lands on the same bucket.
|
|
271
|
-
const platformForPool = userPlatform
|
|
272
|
-
?? (osHint === 'macos' ? 'MacIntel'
|
|
273
|
-
: osHint === 'linux' ? 'Linux x86_64'
|
|
274
|
-
: osHint === 'windows' ? 'Win32'
|
|
275
|
-
: undefined);
|
|
276
|
-
// Mirror the seed-source contract from browser-plugin.ts. Production
|
|
277
|
-
// path: extract `session-X` from the proxy URL. Test/A-B path: read
|
|
278
|
-
// `fingerprintOptions.seedKey` so harvest comparisons across hosts (Mac
|
|
279
|
-
// vs Linux Docker) hit the SAME bundled profile without needing a fake
|
|
280
|
-
// proxy.
|
|
281
|
-
const proxySeedKey = this.launchContext.proxyUrl
|
|
282
|
-
? (this.launchContext.proxyUrl.match(/session-([^,&]+)/i)?.[1] ?? null)
|
|
283
|
-
: (typeof _fpOpts?.seedKey === 'string'
|
|
284
|
-
? _fpOpts.seedKey
|
|
285
|
-
: null);
|
|
286
|
-
fingerprint = await generateNonApifyFingerprint({
|
|
287
|
-
platform: platformForPool,
|
|
288
|
-
os: osHint,
|
|
289
|
-
proxySeedKey,
|
|
290
|
-
});
|
|
291
|
-
fp = fingerprint.fingerprint;
|
|
292
|
-
this.launchContext.fingerprint = fingerprint;
|
|
293
|
-
log.info('Using non-Apify real Chrome device fingerprint', {
|
|
294
|
-
requestedPlatform: platformForPool ?? '(none — derived from existing fingerprint)',
|
|
295
|
-
os: osHint,
|
|
296
|
-
platform: fp?.navigator?.platform,
|
|
297
|
-
userAgent: `${(fp?.navigator?.userAgent || '').substring(0, 70)}...`,
|
|
298
|
-
webglRenderer: (fp?.videoCard?.renderer || '').substring(0, 70),
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
// Note: previously a post-launch OS-mismatch detector here regenerated
|
|
302
|
-
// the fingerprint via `new FingerprintGenerator(fingerprintGeneratorOptions)`.
|
|
303
|
-
// It was removed because:
|
|
304
|
-
// - The Apify pool draw had no `isContaminatedProfile` reroll, so it
|
|
305
|
-
// routinely returned profiles like
|
|
306
|
-
// `navigator.platform="Linux x86_64"` paired with a Mac UA — leaking
|
|
307
|
-
// into logs and (on the system-Chrome JS-injection path) into the
|
|
308
|
-
// page DOM.
|
|
309
|
-
// - With Phase 2's plumbing fix above, the pre-launch C++ path and
|
|
310
|
-
// this post-launch fallback both already consult
|
|
311
|
-
// `operatingSystems`, so the mismatch they were trying to correct
|
|
312
|
-
// no longer occurs.
|
|
313
|
-
// - On native-stealth runs, the regenerated value was discarded by
|
|
314
|
-
// the JS-injection skip anyway.
|
|
315
|
-
const webgl = fp?.webgl;
|
|
316
|
-
log.debug('Fingerprint data from generator:', {
|
|
317
|
-
hasFingerprint: !!fp,
|
|
318
|
-
hasHeaders: !!fingerprint.headers,
|
|
319
|
-
navigatorPlatform: fp?.navigator?.platform,
|
|
320
|
-
navigatorUserAgent: `${(fp?.navigator?.userAgent || '').substring(0, 50)}...`,
|
|
321
|
-
screenWidth: fp?.screen?.width,
|
|
322
|
-
screenHeight: fp?.screen?.height,
|
|
323
|
-
webglVendor: webgl?.vendorUnmasked?.substring(0, 30),
|
|
324
|
-
webglRenderer: webgl?.rendererUnmasked?.substring(0, 50),
|
|
325
|
-
});
|
|
326
|
-
// Detect platform from fingerprint or default to Windows for better evasion
|
|
327
|
-
const fingerprintPlatform = fp?.navigator?.platform;
|
|
328
|
-
const platform = fingerprintPlatform || 'Win32'; // Default to Windows instead of Linux
|
|
329
|
-
// Determine if we're running on Apify
|
|
330
|
-
const isApify = process.env.APIFY_IS_AT_HOME === 'true';
|
|
331
|
-
// Get fingerprint options from launch context
|
|
332
|
-
const fingerprintOptions = this.launchContext.launchOptions?.fingerprintOptions || {};
|
|
333
|
-
// Get recommended settings based on environment
|
|
334
|
-
const defaultOptions = isApify
|
|
335
|
-
? CdpFingerprintInjector.getApifyRecommendedSettings()
|
|
336
|
-
: {
|
|
337
|
-
debug: false, // Disable debug logging - anti-bot services detect debug prefixes
|
|
338
|
-
enableAdvancedStealth: true,
|
|
339
|
-
bypassRuntimeEnable: true,
|
|
340
|
-
spoofWebGL: true,
|
|
341
|
-
spoofAudioContext: true,
|
|
342
|
-
spoofClientRects: true,
|
|
343
|
-
spoofFonts: true,
|
|
344
|
-
spoofPerformance: true,
|
|
345
|
-
spoofLocale: true,
|
|
346
|
-
detectTimezone: !!this.launchContext.proxyUrl,
|
|
347
|
-
useFingerprintDefaults: true, // Use hardcoded defaults (set to false to use generated fingerprint data)
|
|
348
|
-
// 2024-2025 new defaults
|
|
349
|
-
bypassCDPDetection: true,
|
|
350
|
-
spoofStorage: true,
|
|
351
|
-
spoofTiming: true,
|
|
352
|
-
enableDataDomeBypass: false,
|
|
353
|
-
webRtcPolicy: 'spoof',
|
|
354
|
-
// Safe defaults for humanized interaction patterns
|
|
355
|
-
humanization: {
|
|
356
|
-
mouse: true,
|
|
357
|
-
keyboard: true,
|
|
358
|
-
scroll: true,
|
|
359
|
-
},
|
|
360
|
-
};
|
|
361
|
-
// Determine effective useFingerprintDefaults value.
|
|
362
|
-
// Real device profiles (useNonApifyFingerprints=true) contain consistent cross-property
|
|
363
|
-
// data measured from a real device — default to using it (useFingerprintDefaults=false).
|
|
364
|
-
// Synthetic Apify-generated fingerprints need the hardcoded defaults to avoid
|
|
365
|
-
// injecting inconsistent generated values, so they keep useFingerprintDefaults=true.
|
|
366
|
-
const usingRealDeviceProfile = !!_fpOpts?.useNonApifyFingerprints;
|
|
367
|
-
const effectiveUseFingerprintDefaults = fingerprintOptions.useFingerprintDefaults
|
|
368
|
-
?? (usingRealDeviceProfile ? false : (defaultOptions.useFingerprintDefaults ?? true));
|
|
369
|
-
// Platform selection logic:
|
|
370
|
-
// - When useFingerprintDefaults is false: prefer generated fingerprint platform
|
|
371
|
-
// - When useFingerprintDefaults is true (default): prefer hardcoded fingerprintOptions.platform
|
|
372
|
-
const effectivePlatform = effectiveUseFingerprintDefaults === false
|
|
373
|
-
? (platform || fingerprintOptions.platform || 'Win32') // Generated fingerprint first
|
|
374
|
-
: (fingerprintOptions.platform || platform || 'Win32'); // Hardcoded option first
|
|
375
|
-
// Check useNativeStealth from all possible locations (in priority order):
|
|
376
|
-
// 1. Top-level launchOptions (e.g. CDPBrowserPlugin constructor arg)
|
|
377
|
-
// 2. Inside fingerprintOptions (e.g. datadome test / crawler launchOptions)
|
|
378
|
-
// 3. At launchContext root (some CDPCrawler launchContext configurations)
|
|
379
|
-
const useNativeStealth = !!this.launchContext.launchOptions?.useNativeStealth ||
|
|
380
|
-
!!this.launchContext.launchOptions?.fingerprintOptions?.useNativeStealth ||
|
|
381
|
-
!!this.launchContext?.useNativeStealth;
|
|
382
|
-
// Resolved locale triple is populated in browser-plugin before launch. Pass the
|
|
383
|
-
// whole thing through so the injector sets navigator.language, Accept-Language,
|
|
384
|
-
// Intl defaults, and timezone from one coherent source of truth.
|
|
385
|
-
const resolvedLocale = this.launchContext.launchOptions?.resolvedLocale;
|
|
386
|
-
// Merge humanization options properly
|
|
387
|
-
const mergedOptions = {
|
|
388
|
-
...defaultOptions,
|
|
389
|
-
...fingerprintOptions,
|
|
390
|
-
useNativeStealth,
|
|
391
|
-
// Explicitly set the computed effective value — the spread above would resolve to
|
|
392
|
-
// defaultOptions.useFingerprintDefaults (always true) when fingerprintOptions
|
|
393
|
-
// does not include the key, so we must override it here.
|
|
394
|
-
useFingerprintDefaults: effectiveUseFingerprintDefaults,
|
|
395
|
-
proxyUrl: this.launchContext.proxyUrl,
|
|
396
|
-
platform: effectivePlatform,
|
|
397
|
-
viewport: this.launchContext.launchOptions?.viewport,
|
|
398
|
-
resolvedLocale,
|
|
399
|
-
// Ensure humanization options are properly merged
|
|
400
|
-
humanization: {
|
|
401
|
-
...defaultOptions.humanization,
|
|
402
|
-
...fingerprintOptions.humanization,
|
|
403
|
-
},
|
|
404
|
-
};
|
|
405
|
-
await CdpFingerprintInjector.injectFingerprint(page, fingerprint, mergedOptions);
|
|
406
|
-
page.setHumanizationOptions(mergedOptions.humanization);
|
|
407
|
-
log.info('Fingerprint injected successfully', {
|
|
408
|
-
platform: mergedOptions.platform,
|
|
409
|
-
isApify,
|
|
410
|
-
hasProxy: !!this.launchContext.proxyUrl,
|
|
411
|
-
useFingerprintDefaults: mergedOptions.useFingerprintDefaults,
|
|
412
|
-
enableDataDomeBypass: mergedOptions.enableDataDomeBypass,
|
|
413
|
-
humanization: mergedOptions.humanization,
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
catch (error) {
|
|
417
|
-
log.error('Error attaching fingerprint', { error });
|
|
418
|
-
}
|
|
208
|
+
await applyToPage(this.launchContext, page);
|
|
419
209
|
}
|
|
420
210
|
/**
|
|
421
211
|
* Records the launch-time inputs the saveSession() helper later needs to read
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-controller.js","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,yBAAyB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAGlG,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAIvE,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,iBAMjD;IAND;;QAOY;;;;;WAAoB;QACpB;;;;mBAAoB,CAAC;WAAC;QACtB;;;;mBAAwB,KAAK;WAAC,CAAC,oCAAoC;QACnE;;;;mBAAY,KAAK;WAAC,CAAC,4CAA4C;IAkf3E,CAAC;IAhfG,KAAK,CAAC,UAAU;QACZ,MAAM,eAAe,GAAG,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,eAAe,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACD,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,aAAuB;oBAChD,KAAK,EAAE,IAAI;iBACd,CAAe,CAAC;gBAGjB,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,OAAO;YACX,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;gBACV,GAAG,CAAC,KAAK,CAAC,4CAA4C,OAAO,IAAI,eAAe,GAAG,EAAE,KAAK,CAAC,CAAC;gBAE5F,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;oBAC9B,MAAM,KAAK,CAAC;gBAChB,CAAC;gBAED,uBAAuB;gBACvB,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,yBAAyB;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB;YAAE,OAAO;QAEvD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBAC5D,OAAO;YACX,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAChE,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC1C,GAAG,CAAC,KAAK,CAAC,uEAAuE,EAAE,KAAK,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC,mDAAmD;IAC1F,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI;QAC3D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC,iBAAiB,GAAG,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,iBAAiB,GAAG,CAAC,OAAO,WAAW,EAAE,CAAC,CAAC;gBAE9E,qCAAqC;gBACrC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC;oBACpB,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,aAAuB;oBAChD,MAAM,EAAE,SAAS,EAAE,6DAA6D;oBAChF,KAAK,EAAE,IAAI;iBACd,CAAe,CAAC;gBAEjB,qFAAqF;gBACrF,iEAAiE;gBACjE,4DAA4D;gBAE5D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACjD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,OAAO;YACX,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,iBAAiB,UAAU,EAAE,KAAK,CAAC,CAAC;gBAExE,IAAI,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE,CAAC;oBACzC,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBAC7C,OAAO;gBACX,CAAC;gBAED,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,MAAM;QAClB,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,OAAO,CAAC,IAAI,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBACnB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC,CACxE;iBACJ,CAAC,CAAC;YACP,CAAC;YACD,4DAA4D;YAC5D,MAAM,OAAO,CAAC,IAAI,CAAC;gBACd,IAAI,CAAC,aAAa,CAAC,OAAiE,CAAC,KAAK,EAAE;gBAC7F,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC5B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,IAAI,CAAC,CAC7E;aACJ,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,GAAG,CAAC,OAAO,CAAC,mDAAmD,EAAE,CAAC,CAAC,CAAC;YACpE,6CAA6C;YAC7C,IAAI,CAAC;gBACD,MAAO,IAAI,CAAC,aAAa,CAAC,OAAiE,CAAC,IAAI,EAAE,CAAC;YACvG,CAAC;YAAC,OAAO,SAAc,EAAE,CAAC;gBACtB,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QAED,2DAA2D;QAC3D,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,KAAK;QACjB,IAAI,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,OAAO,CAAC,IAAI,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;oBACnB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC,CACxE;iBACJ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,+BAA+B;YACvD,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,MAAO,IAAI,CAAC,aAAa,CAAC,OAAiE,CAAC,IAAI,EAAE,CAAC;IACvG,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC;QACnC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,UAAU,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5B,CAAC;gBAED,qCAAqC;gBACrC,gDAAgD;gBAChD,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,EAAE,CAAC,CAAC,qBAAqB;oBAC1D,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBACvD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5B,CAAC;gBAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAO,CAAC;gBAEhC,6BAA6B;gBAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,aAAuB,EAAE,CAAC,CAAC;gBAElG,sBAAsB;gBACtB,MAAM,MAAM,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAE1C,gEAAgE;gBAChE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;oBACxB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,CAAC;gBACV,GAAG,CAAC,KAAK,CAAC,sCAAsC,OAAO,OAAO,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;gBAEnF,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;oBACzB,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;oBACvD,IAAI,CAAC;wBACD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxB,CAAC;oBAAC,OAAO,UAAmB,EAAE,CAAC;wBAC3B,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;oBAClF,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC5E,CAAC;gBAED,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;YACtC,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IACjF,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,IAAa;QACjD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;YACtF,OAAM;QACV,CAAC;QAED,IAAI,CAAC;YACD,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YAC9D,IAAI,WAAW,GAAG,iBAAiB,CAAC;YACpC,IAAI,EAAE,GAAG,WAAW,CAAC,WAAkD,CAAC;YAExE,wEAAwE;YACxE,oEAAoE;YACpE,sEAAsE;YACtE,sEAAsE;YACtE,0EAA0E;YAC1E,EAAE;YACF,oEAAoE;YACpE,+DAA+D;YAC/D,iEAAiE;YACjE,4CAA4C;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,kBAAyD,CAAC;YAC5G,MAAM,2BAA2B,GAC5B,IAAI,CAAC,aAAa,CAAC,aAAqB,EAAE,2BAA2B,CAAC;YAC3E,IAAI,OAAO,EAAE,uBAAuB,EAAE,CAAC;gBACnC,MAAM,YAAY,GAAG,OAAO,EAAE,QACuB,CAAC;gBACtD,MAAM,MAAM,GAAkC,CAAC,GAAG,EAAE;oBAChD,8DAA8D;oBAC9D,IAAI,YAAY,KAAK,UAAU;wBAAE,OAAO,OAAO,CAAC;oBAChD,IAAI,YAAY,KAAK,cAAc;wBAAE,OAAO,OAAO,CAAC;oBACpD,IAAI,YAAY,KAAK,OAAO;wBAAE,OAAO,SAAS,CAAC;oBAC/C,4DAA4D;oBAC5D,8DAA8D;oBAC9D,MAAM,SAAS,GAAG,2BAA2B,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;oBACpF,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5E,OAAO,SAAS,CAAC;oBACrB,CAAC;oBACD,gEAAgE;oBAChE,MAAM,CAAC,GAAG,CAAE,EAAE,EAAE,SAAqC,EAAE,QAAkB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/F,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,OAAO,OAAO,CAAC;oBACtC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;wBAAE,OAAO,OAAO,CAAC;oBACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,OAAO,SAAS,CAAC;oBACxC,sBAAsB;oBACtB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;wBAAE,OAAO,OAAO,CAAC;oBAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;wBAAE,OAAO,OAAO,CAAC;oBACjD,OAAO,SAAS,CAAC;gBACrB,CAAC,CAAC,EAAE,CAAC;gBACL,+DAA+D;gBAC/D,gEAAgE;gBAChE,iDAAiD;gBACjD,MAAM,eAAe,GACjB,YAAY;uBACT,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU;wBAC/B,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc;4BACrC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO;gCAChC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACrB,qEAAqE;gBACrE,oEAAoE;gBACpE,wEAAwE;gBACxE,uEAAuE;gBACvE,SAAS;gBACT,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;oBAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;oBACvE,CAAC,CAAC,CAAC,OAAQ,OAA+C,EAAE,OAAO,KAAK,QAAQ;wBAC5E,CAAC,CAAG,OAAmC,CAAC,OAAkB;wBAC1D,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChB,WAAW,GAAG,MAAM,2BAA2B,CAAC;oBAC5C,QAAQ,EAAE,eAAe;oBACzB,EAAE,EAAE,MAAM;oBACV,YAAY;iBACf,CAAuB,CAAC;gBACzB,EAAE,GAAG,WAAW,CAAC,WAAkD,CAAC;gBACpE,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,gDAAgD,EAAE;oBACvD,iBAAiB,EAAE,eAAe,IAAI,4CAA4C;oBAClF,EAAE,EAAE,MAAM;oBACV,QAAQ,EAAG,EAAE,EAAE,SAAqC,EAAE,QAAQ;oBAC9D,SAAS,EAAE,GAAG,CAAG,EAAE,EAAE,SAAqC,EAAE,SAAoB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;oBAC7G,aAAa,EAAE,CAAE,EAAE,EAAE,SAAqC,EAAE,QAAkB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;iBACzG,CAAC,CAAC;YACP,CAAC;YAED,uEAAuE;YACvE,+EAA+E;YAC/E,0BAA0B;YAC1B,uEAAuE;YACvE,uCAAuC;YACvC,yEAAyE;YACzE,sEAAsE;YACtE,gBAAgB;YAChB,qEAAqE;YACrE,qDAAqD;YACrD,sEAAsE;YACtE,wBAAwB;YACxB,qEAAqE;YACrE,oCAAoC;YAEpC,MAAM,KAAK,GAAG,EAAE,EAAE,KAA2C,CAAC;YAE9D,GAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE;gBAC1C,cAAc,EAAE,CAAC,CAAC,EAAE;gBACpB,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO;gBACjC,iBAAiB,EAAG,EAAE,EAAE,SAAqC,EAAE,QAAQ;gBACvE,kBAAkB,EAAE,GAAG,CAAG,EAAE,EAAE,SAAqC,EAAE,SAAoB,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;gBACtH,WAAW,EAAG,EAAE,EAAE,MAAkC,EAAE,KAAK;gBAC3D,YAAY,EAAG,EAAE,EAAE,MAAkC,EAAE,MAAM;gBAC7D,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBACpD,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;aAC3D,CAAC,CAAC;YAEH,4EAA4E;YAC5E,MAAM,mBAAmB,GAAI,EAAE,EAAE,SAAqC,EAAE,QAA8B,CAAC;YACvG,MAAM,QAAQ,GAAG,mBAAmB,IAAI,OAAO,CAAC,CAAC,sCAAsC;YAEvF,sCAAsC;YACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,MAAM,CAAC;YAExD,8CAA8C;YAC9C,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,kBAAkB,IAAI,EAAE,CAAC;YAEtF,gDAAgD;YAChD,MAAM,cAAc,GAAG,OAAO;gBAC1B,CAAC,CAAC,sBAAsB,CAAC,2BAA2B,EAAE;gBACtD,CAAC,CAAC;oBACE,KAAK,EAAE,KAAK,EAAE,kEAAkE;oBAChF,qBAAqB,EAAE,IAAI;oBAC3B,mBAAmB,EAAE,IAAI;oBACzB,UAAU,EAAE,IAAI;oBAChB,iBAAiB,EAAE,IAAI;oBACvB,gBAAgB,EAAE,IAAI;oBACtB,UAAU,EAAE,IAAI;oBAChB,gBAAgB,EAAE,IAAI;oBACtB,WAAW,EAAE,IAAI;oBACjB,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ;oBAC7C,sBAAsB,EAAE,IAAI,EAAE,0EAA0E;oBACxG,yBAAyB;oBACzB,kBAAkB,EAAE,IAAI;oBACxB,YAAY,EAAE,IAAI;oBAClB,WAAW,EAAE,IAAI;oBACjB,oBAAoB,EAAE,KAAK;oBAC3B,YAAY,EAAE,OAAgB;oBAC9B,mDAAmD;oBACnD,YAAY,EAAE;wBACV,KAAK,EAAE,IAAI;wBACX,QAAQ,EAAE,IAAI;wBACd,MAAM,EAAE,IAAI;qBACf;iBACJ,CAAC;YAEN,oDAAoD;YACpD,wFAAwF;YACxF,yFAAyF;YACzF,8EAA8E;YAC9E,qFAAqF;YACrF,MAAM,sBAAsB,GAAG,CAAC,CAAC,OAAO,EAAE,uBAAuB,CAAC;YAClE,MAAM,+BAA+B,GAAG,kBAAkB,CAAC,sBAAsB;mBAC1E,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,sBAAsB,IAAI,IAAI,CAAC,CAAC,CAAC;YAE1F,4BAA4B;YAC5B,gFAAgF;YAChF,gGAAgG;YAChG,MAAM,iBAAiB,GAAG,+BAA+B,KAAK,KAAK;gBAC/D,CAAC,CAAC,CAAC,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,8BAA8B;gBACrF,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,IAAI,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,yBAAyB;YAErF,0EAA0E;YAC1E,uEAAuE;YACvE,8EAA8E;YAC9E,4EAA4E;YAC5E,MAAM,gBAAgB,GAClB,CAAC,CAAE,IAAI,CAAC,aAAa,CAAC,aAAqB,EAAE,gBAAgB;gBAC7D,CAAC,CAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,kBAA0B,EAAE,gBAAgB;gBACjF,CAAC,CAAE,IAAI,CAAC,aAAqB,EAAE,gBAAgB,CAAC;YAEpD,gFAAgF;YAChF,gFAAgF;YAChF,iEAAiE;YACjE,MAAM,cAAc,GAAI,IAAI,CAAC,aAAa,CAAC,aAAqB,EAAE,cAAc,CAAC;YAEjF,sCAAsC;YACtC,MAAM,aAAa,GAAG;gBAClB,GAAG,cAAc;gBACjB,GAAG,kBAAkB;gBACrB,gBAAgB;gBAChB,kFAAkF;gBAClF,8EAA8E;gBAC9E,yDAAyD;gBACzD,sBAAsB,EAAE,+BAA+B;gBACvD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACrC,QAAQ,EAAE,iBAA0D;gBACpE,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ;gBACpD,cAAc;gBACd,kDAAkD;gBAClD,YAAY,EAAE;oBACV,GAAG,cAAc,CAAC,YAAY;oBAC9B,GAAG,kBAAkB,CAAC,YAAY;iBACrC;aACJ,CAAC;YAEF,MAAM,sBAAsB,CAAC,iBAAiB,CAC1C,IAAI,EACJ,WAAW,EACX,aAAa,CAChB,CAAA;YAED,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YAExD,GAAG,CAAC,IAAI,CAAC,mCAAmC,EAAE;gBAC1C,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,OAAO;gBACP,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACvC,sBAAsB,EAAE,aAAa,CAAC,sBAAsB;gBAC5D,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;gBACxD,YAAY,EAAE,aAAa,CAAC,YAAY;aAC3C,CAAC,CAAC;QAEP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACvD,CAAC;IAEL,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,qBAAqB,CAAC,IAAmB;QACnD,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,EAAE,CAAC;YAC7D,IAAI,CAAC,iBAAiB,CAAC;gBACnB,iBAAiB,EAAG,aAAiD,CAAC,iBAA0B;gBAChG,kBAAkB,EAAE,CAAC,aAAa,CAAC,kBAAkB,IAAI,EAAE,CAA4B;gBACvF,cAAc,EAAG,aAA8C,CAAC,cAAuB;gBACvF,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,WAAoB;gBACpD,WAAW,EAAE,aAAa,CAAC,WAAW;gBACtC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;gBACrC,aAAa,EAAG,aAA6C,CAAC,aAAsB;aACvF,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAmB;QAClD,MAAM,MAAM,GAAI,IAAI,CAAC,aAAa,CAAC,aAA6C,EAAE,aAAa,CAAC;QAChG,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC;YACD,MAAM,2BAA2B,CAAC,IAAI,EAAE,MAAe,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,WAAW,CAAC,IAAmB,EAAE,OAAiB;QAC9D,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,WAAW,CAAC,IAAmB;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,EAAE,UAAU,EAAE,CAAC;QACzC,OAAO,OAAO,IAAI,EAAE,CAAC;IACzB,CAAC;IAEQ,qBAAqB,CAAC,SAA6B,EAAE,YAAiB;QAC3E,8DAA8D;QAC9D,OAAO,EAAE,CAAC;IACd,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"browser-controller.js","sourceRoot":"","sources":["../src/browser-controller.ts"],"names":[],"mappings":"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"}
|