@roxybrowser/playwright 2.0.2-beta.0
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 +115 -0
- package/dist/apiRequestContext.d.ts +52 -0
- package/dist/apiRequestContext.d.ts.map +1 -0
- package/dist/apiRequestContext.js +632 -0
- package/dist/apiRequestContext.js.map +1 -0
- package/dist/ariaSnapshot.d.ts +38 -0
- package/dist/ariaSnapshot.d.ts.map +1 -0
- package/dist/ariaSnapshot.js +1137 -0
- package/dist/ariaSnapshot.js.map +1 -0
- package/dist/assertions.d.ts +2 -0
- package/dist/assertions.d.ts.map +1 -0
- package/dist/assertions.js +6 -0
- package/dist/assertions.js.map +1 -0
- package/dist/bin/roxybrowser-mcp.d.ts +3 -0
- package/dist/bin/roxybrowser-mcp.d.ts.map +1 -0
- package/dist/bin/roxybrowser-mcp.js +7 -0
- package/dist/bin/roxybrowser-mcp.js.map +1 -0
- package/dist/browser.d.ts +15 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +67 -0
- package/dist/browser.js.map +1 -0
- package/dist/browserContext.d.ts +156 -0
- package/dist/browserContext.d.ts.map +1 -0
- package/dist/browserContext.js +1129 -0
- package/dist/browserContext.js.map +1 -0
- package/dist/browserContextClock.d.ts +54 -0
- package/dist/browserContextClock.d.ts.map +1 -0
- package/dist/browserContextClock.js +147 -0
- package/dist/browserContextClock.js.map +1 -0
- package/dist/browserType.d.ts +16 -0
- package/dist/browserType.d.ts.map +1 -0
- package/dist/browserType.js +68 -0
- package/dist/browserType.js.map +1 -0
- package/dist/bundle.d.ts +20 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +20 -0
- package/dist/bundle.js.map +1 -0
- package/dist/clock.d.ts +43 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +70 -0
- package/dist/clock.js.map +1 -0
- package/dist/elementHandle.d.ts +100 -0
- package/dist/elementHandle.d.ts.map +1 -0
- package/dist/elementHandle.js +423 -0
- package/dist/elementHandle.js.map +1 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +19 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluation.d.ts +4 -0
- package/dist/evaluation.d.ts.map +1 -0
- package/dist/evaluation.js +9 -0
- package/dist/evaluation.js.map +1 -0
- package/dist/frame.d.ts +139 -0
- package/dist/frame.d.ts.map +1 -0
- package/dist/frame.js +451 -0
- package/dist/frame.js.map +1 -0
- package/dist/httpHeaders.d.ts +6 -0
- package/dist/httpHeaders.d.ts.map +1 -0
- package/dist/httpHeaders.js +23 -0
- package/dist/httpHeaders.js.map +1 -0
- package/dist/human/controller.d.ts +15 -0
- package/dist/human/controller.d.ts.map +1 -0
- package/dist/human/controller.js +67 -0
- package/dist/human/controller.js.map +1 -0
- package/dist/human/profile.d.ts +5 -0
- package/dist/human/profile.d.ts.map +1 -0
- package/dist/human/profile.js +50 -0
- package/dist/human/profile.js.map +1 -0
- package/dist/human/types.d.ts +28 -0
- package/dist/human/types.d.ts.map +1 -0
- package/dist/human/types.js +2 -0
- package/dist/human/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/inputFiles.d.ts +18 -0
- package/dist/inputFiles.d.ts.map +1 -0
- package/dist/inputFiles.js +192 -0
- package/dist/inputFiles.js.map +1 -0
- package/dist/jsHandle.d.ts +32 -0
- package/dist/jsHandle.d.ts.map +1 -0
- package/dist/jsHandle.js +148 -0
- package/dist/jsHandle.js.map +1 -0
- package/dist/locator.d.ts +190 -0
- package/dist/locator.d.ts.map +1 -0
- package/dist/locator.js +883 -0
- package/dist/locator.js.map +1 -0
- package/dist/locatorSelectors.d.ts +11 -0
- package/dist/locatorSelectors.d.ts.map +1 -0
- package/dist/locatorSelectors.js +50 -0
- package/dist/locatorSelectors.js.map +1 -0
- package/dist/mcp/backend/common.d.ts +4 -0
- package/dist/mcp/backend/common.d.ts.map +1 -0
- package/dist/mcp/backend/common.js +40 -0
- package/dist/mcp/backend/common.js.map +1 -0
- package/dist/mcp/backend/connect.d.ts +10 -0
- package/dist/mcp/backend/connect.d.ts.map +1 -0
- package/dist/mcp/backend/connect.js +30 -0
- package/dist/mcp/backend/connect.js.map +1 -0
- package/dist/mcp/backend/console.d.ts +13 -0
- package/dist/mcp/backend/console.d.ts.map +1 -0
- package/dist/mcp/backend/console.js +36 -0
- package/dist/mcp/backend/console.js.map +1 -0
- package/dist/mcp/backend/context.d.ts +27 -0
- package/dist/mcp/backend/context.d.ts.map +1 -0
- package/dist/mcp/backend/context.js +33 -0
- package/dist/mcp/backend/context.js.map +1 -0
- package/dist/mcp/backend/dialogs.d.ts +7 -0
- package/dist/mcp/backend/dialogs.d.ts.map +1 -0
- package/dist/mcp/backend/dialogs.js +24 -0
- package/dist/mcp/backend/dialogs.js.map +1 -0
- package/dist/mcp/backend/evaluate.d.ts +9 -0
- package/dist/mcp/backend/evaluate.d.ts.map +1 -0
- package/dist/mcp/backend/evaluate.js +31 -0
- package/dist/mcp/backend/evaluate.js.map +1 -0
- package/dist/mcp/backend/files.d.ts +9 -0
- package/dist/mcp/backend/files.d.ts.map +1 -0
- package/dist/mcp/backend/files.js +39 -0
- package/dist/mcp/backend/files.js.map +1 -0
- package/dist/mcp/backend/keyboard.d.ts +22 -0
- package/dist/mcp/backend/keyboard.d.ts.map +1 -0
- package/dist/mcp/backend/keyboard.js +67 -0
- package/dist/mcp/backend/keyboard.js.map +1 -0
- package/dist/mcp/backend/navigate.d.ts +4 -0
- package/dist/mcp/backend/navigate.d.ts.map +1 -0
- package/dist/mcp/backend/navigate.js +82 -0
- package/dist/mcp/backend/navigate.js.map +1 -0
- package/dist/mcp/backend/network.d.ts +17 -0
- package/dist/mcp/backend/network.d.ts.map +1 -0
- package/dist/mcp/backend/network.js +144 -0
- package/dist/mcp/backend/network.js.map +1 -0
- package/dist/mcp/backend/response.d.ts +26 -0
- package/dist/mcp/backend/response.d.ts.map +1 -0
- package/dist/mcp/backend/response.js +109 -0
- package/dist/mcp/backend/response.js.map +1 -0
- package/dist/mcp/backend/runCode.d.ts +6 -0
- package/dist/mcp/backend/runCode.d.ts.map +1 -0
- package/dist/mcp/backend/runCode.js +20 -0
- package/dist/mcp/backend/runCode.js.map +1 -0
- package/dist/mcp/backend/screenshot.d.ts +13 -0
- package/dist/mcp/backend/screenshot.d.ts.map +1 -0
- package/dist/mcp/backend/screenshot.js +37 -0
- package/dist/mcp/backend/screenshot.js.map +1 -0
- package/dist/mcp/backend/snapshot.d.ts +70 -0
- package/dist/mcp/backend/snapshot.d.ts.map +1 -0
- package/dist/mcp/backend/snapshot.js +185 -0
- package/dist/mcp/backend/snapshot.js.map +1 -0
- package/dist/mcp/backend/tab.d.ts +72 -0
- package/dist/mcp/backend/tab.d.ts.map +1 -0
- package/dist/mcp/backend/tab.js +99 -0
- package/dist/mcp/backend/tab.js.map +1 -0
- package/dist/mcp/backend/tabs.d.ts +13 -0
- package/dist/mcp/backend/tabs.d.ts.map +1 -0
- package/dist/mcp/backend/tabs.js +44 -0
- package/dist/mcp/backend/tabs.js.map +1 -0
- package/dist/mcp/backend/tool.d.ts +52 -0
- package/dist/mcp/backend/tool.d.ts.map +1 -0
- package/dist/mcp/backend/tool.js +28 -0
- package/dist/mcp/backend/tool.js.map +1 -0
- package/dist/mcp/backend/tools.d.ts +4 -0
- package/dist/mcp/backend/tools.d.ts.map +1 -0
- package/dist/mcp/backend/tools.js +30 -0
- package/dist/mcp/backend/tools.js.map +1 -0
- package/dist/mcp/connectedBrowser.d.ts +3 -0
- package/dist/mcp/connectedBrowser.d.ts.map +1 -0
- package/dist/mcp/connectedBrowser.js +2153 -0
- package/dist/mcp/connectedBrowser.js.map +1 -0
- package/dist/mcp/errors.d.ts +6 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +12 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/format.d.ts +12 -0
- package/dist/mcp/format.d.ts.map +1 -0
- package/dist/mcp/format.js +48 -0
- package/dist/mcp/format.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/output.d.ts +7 -0
- package/dist/mcp/output.d.ts.map +1 -0
- package/dist/mcp/output.js +39 -0
- package/dist/mcp/output.js.map +1 -0
- package/dist/mcp/runtime.d.ts +122 -0
- package/dist/mcp/runtime.d.ts.map +1 -0
- package/dist/mcp/runtime.js +524 -0
- package/dist/mcp/runtime.js.map +1 -0
- package/dist/mcp/schemas.d.ts +61 -0
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +41 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +117 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/snapshot.d.ts +3 -0
- package/dist/mcp/snapshot.d.ts.map +1 -0
- package/dist/mcp/snapshot.js +3 -0
- package/dist/mcp/snapshot.js.map +1 -0
- package/dist/mcp/tool.d.ts +19 -0
- package/dist/mcp/tool.d.ts.map +1 -0
- package/dist/mcp/tool.js +10 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/mcp/tools/common.d.ts +6 -0
- package/dist/mcp/tools/common.d.ts.map +1 -0
- package/dist/mcp/tools/common.js +34 -0
- package/dist/mcp/tools/common.js.map +1 -0
- package/dist/mcp/tools/connect.d.ts +6 -0
- package/dist/mcp/tools/connect.d.ts.map +1 -0
- package/dist/mcp/tools/connect.js +28 -0
- package/dist/mcp/tools/connect.js.map +1 -0
- package/dist/mcp/tools/console.d.ts +6 -0
- package/dist/mcp/tools/console.d.ts.map +1 -0
- package/dist/mcp/tools/console.js +36 -0
- package/dist/mcp/tools/console.js.map +1 -0
- package/dist/mcp/tools/dialog.d.ts +6 -0
- package/dist/mcp/tools/dialog.d.ts.map +1 -0
- package/dist/mcp/tools/dialog.js +22 -0
- package/dist/mcp/tools/dialog.js.map +1 -0
- package/dist/mcp/tools/evaluate.d.ts +6 -0
- package/dist/mcp/tools/evaluate.d.ts.map +1 -0
- package/dist/mcp/tools/evaluate.js +31 -0
- package/dist/mcp/tools/evaluate.js.map +1 -0
- package/dist/mcp/tools/form.d.ts +6 -0
- package/dist/mcp/tools/form.d.ts.map +1 -0
- package/dist/mcp/tools/form.js +129 -0
- package/dist/mcp/tools/form.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +7 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/keyboard.d.ts +3 -0
- package/dist/mcp/tools/keyboard.d.ts.map +1 -0
- package/dist/mcp/tools/keyboard.js +44 -0
- package/dist/mcp/tools/keyboard.js.map +1 -0
- package/dist/mcp/tools/mouse.d.ts +3 -0
- package/dist/mcp/tools/mouse.d.ts.map +1 -0
- package/dist/mcp/tools/mouse.js +89 -0
- package/dist/mcp/tools/mouse.js.map +1 -0
- package/dist/mcp/tools/navigate.d.ts +6 -0
- package/dist/mcp/tools/navigate.d.ts.map +1 -0
- package/dist/mcp/tools/navigate.js +74 -0
- package/dist/mcp/tools/navigate.js.map +1 -0
- package/dist/mcp/tools/network.d.ts +6 -0
- package/dist/mcp/tools/network.d.ts.map +1 -0
- package/dist/mcp/tools/network.js +142 -0
- package/dist/mcp/tools/network.js.map +1 -0
- package/dist/mcp/tools/runCode.d.ts +6 -0
- package/dist/mcp/tools/runCode.d.ts.map +1 -0
- package/dist/mcp/tools/runCode.js +24 -0
- package/dist/mcp/tools/runCode.js.map +1 -0
- package/dist/mcp/tools/screenshot.d.ts +6 -0
- package/dist/mcp/tools/screenshot.d.ts.map +1 -0
- package/dist/mcp/tools/screenshot.js +46 -0
- package/dist/mcp/tools/screenshot.js.map +1 -0
- package/dist/mcp/tools/snapshot.d.ts +6 -0
- package/dist/mcp/tools/snapshot.d.ts.map +1 -0
- package/dist/mcp/tools/snapshot.js +56 -0
- package/dist/mcp/tools/snapshot.js.map +1 -0
- package/dist/mcp/tools/tabs.d.ts +6 -0
- package/dist/mcp/tools/tabs.d.ts.map +1 -0
- package/dist/mcp/tools/tabs.js +34 -0
- package/dist/mcp/tools/tabs.js.map +1 -0
- package/dist/mcp/transports/http.d.ts +3 -0
- package/dist/mcp/transports/http.d.ts.map +1 -0
- package/dist/mcp/transports/http.js +134 -0
- package/dist/mcp/transports/http.js.map +1 -0
- package/dist/mcp/transports/inMemory.d.ts +3 -0
- package/dist/mcp/transports/inMemory.d.ts.map +1 -0
- package/dist/mcp/transports/inMemory.js +18 -0
- package/dist/mcp/transports/inMemory.js.map +1 -0
- package/dist/mcp/transports/stdio.d.ts +3 -0
- package/dist/mcp/transports/stdio.d.ts.map +1 -0
- package/dist/mcp/transports/stdio.js +16 -0
- package/dist/mcp/transports/stdio.js.map +1 -0
- package/dist/mcp/types.d.ts +193 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/navigationResult.d.ts +10 -0
- package/dist/navigationResult.d.ts.map +1 -0
- package/dist/navigationResult.js +15 -0
- package/dist/navigationResult.js.map +1 -0
- package/dist/page.d.ts +907 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +6385 -0
- package/dist/page.js.map +1 -0
- package/dist/pageApiReport.d.ts +31 -0
- package/dist/pageApiReport.d.ts.map +1 -0
- package/dist/pageApiReport.js +218 -0
- package/dist/pageApiReport.js.map +1 -0
- package/dist/pageResponse.d.ts +18 -0
- package/dist/pageResponse.d.ts.map +1 -0
- package/dist/pageResponse.js +23 -0
- package/dist/pageResponse.js.map +1 -0
- package/dist/processCleanup.d.ts +8 -0
- package/dist/processCleanup.d.ts.map +1 -0
- package/dist/processCleanup.js +413 -0
- package/dist/processCleanup.js.map +1 -0
- package/dist/protocol/adapter.d.ts +406 -0
- package/dist/protocol/adapter.d.ts.map +1 -0
- package/dist/protocol/adapter.js +8 -0
- package/dist/protocol/adapter.js.map +1 -0
- package/dist/protocol/bidi/backend.d.ts +8 -0
- package/dist/protocol/bidi/backend.d.ts.map +1 -0
- package/dist/protocol/bidi/backend.js +3616 -0
- package/dist/protocol/bidi/backend.js.map +1 -0
- package/dist/protocol/bidi/client.d.ts +104 -0
- package/dist/protocol/bidi/client.d.ts.map +1 -0
- package/dist/protocol/bidi/client.js +228 -0
- package/dist/protocol/bidi/client.js.map +1 -0
- package/dist/protocol/capabilities.d.ts +11 -0
- package/dist/protocol/capabilities.d.ts.map +1 -0
- package/dist/protocol/capabilities.js +2 -0
- package/dist/protocol/capabilities.js.map +1 -0
- package/dist/protocol/cdp/backend.d.ts +24 -0
- package/dist/protocol/cdp/backend.d.ts.map +1 -0
- package/dist/protocol/cdp/backend.js +8428 -0
- package/dist/protocol/cdp/backend.js.map +1 -0
- package/dist/protocol/evaluate.d.ts +2 -0
- package/dist/protocol/evaluate.d.ts.map +1 -0
- package/dist/protocol/evaluate.js +14 -0
- package/dist/protocol/evaluate.js.map +1 -0
- package/dist/protocol/evaluationSerializer.d.ts +6 -0
- package/dist/protocol/evaluationSerializer.d.ts.map +1 -0
- package/dist/protocol/evaluationSerializer.js +234 -0
- package/dist/protocol/evaluationSerializer.js.map +1 -0
- package/dist/protocol/keyboardInput.d.ts +34 -0
- package/dist/protocol/keyboardInput.d.ts.map +1 -0
- package/dist/protocol/keyboardInput.js +246 -0
- package/dist/protocol/keyboardInput.js.map +1 -0
- package/dist/protocol/routing.d.ts +40 -0
- package/dist/protocol/routing.d.ts.map +1 -0
- package/dist/protocol/routing.js +2 -0
- package/dist/protocol/routing.js.map +1 -0
- package/dist/protocol/selectorRuntime.d.ts +30 -0
- package/dist/protocol/selectorRuntime.d.ts.map +1 -0
- package/dist/protocol/selectorRuntime.js +1814 -0
- package/dist/protocol/selectorRuntime.js.map +1 -0
- package/dist/protocol/webdriver-classic/backend.d.ts +6 -0
- package/dist/protocol/webdriver-classic/backend.d.ts.map +1 -0
- package/dist/protocol/webdriver-classic/backend.js +158 -0
- package/dist/protocol/webdriver-classic/backend.js.map +1 -0
- package/dist/routeHandler.d.ts +15 -0
- package/dist/routeHandler.d.ts.map +1 -0
- package/dist/routeHandler.js +2 -0
- package/dist/routeHandler.js.map +1 -0
- package/dist/roxybrowser.bundle.js +78236 -0
- package/dist/roxybrowser.bundle.js.map +1 -0
- package/dist/screencast.d.ts +57 -0
- package/dist/screencast.d.ts.map +1 -0
- package/dist/screencast.js +155 -0
- package/dist/screencast.js.map +1 -0
- package/dist/screencastActions.d.ts +2 -0
- package/dist/screencastActions.d.ts.map +1 -0
- package/dist/screencastActions.js +183 -0
- package/dist/screencastActions.js.map +1 -0
- package/dist/screencastOverlay.d.ts +3 -0
- package/dist/screencastOverlay.d.ts.map +1 -0
- package/dist/screencastOverlay.js +119 -0
- package/dist/screencastOverlay.js.map +1 -0
- package/dist/screenshotOptions.d.ts +26 -0
- package/dist/screenshotOptions.d.ts.map +1 -0
- package/dist/screenshotOptions.js +171 -0
- package/dist/screenshotOptions.js.map +1 -0
- package/dist/screenshotPreparation.d.ts +21 -0
- package/dist/screenshotPreparation.d.ts.map +1 -0
- package/dist/screenshotPreparation.js +199 -0
- package/dist/screenshotPreparation.js.map +1 -0
- package/dist/selectOptionValues.d.ts +10 -0
- package/dist/selectOptionValues.d.ts.map +1 -0
- package/dist/selectOptionValues.js +60 -0
- package/dist/selectOptionValues.js.map +1 -0
- package/dist/selectors.d.ts +3 -0
- package/dist/selectors.d.ts.map +1 -0
- package/dist/selectors.js +287 -0
- package/dist/selectors.js.map +1 -0
- package/dist/types/api.d.ts +2164 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/events.d.ts +158 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/options.d.ts +263 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +2 -0
- package/dist/types/options.js.map +1 -0
- package/dist/urlMatch.d.ts +19 -0
- package/dist/urlMatch.d.ts.map +1 -0
- package/dist/urlMatch.js +183 -0
- package/dist/urlMatch.js.map +1 -0
- package/dist/utilityScriptSerializers.d.ts +61 -0
- package/dist/utilityScriptSerializers.d.ts.map +1 -0
- package/dist/utilityScriptSerializers.js +297 -0
- package/dist/utilityScriptSerializers.js.map +1 -0
- package/dist/vendor/playwright/ariaSnapshotEvaluate.d.ts +2 -0
- package/dist/vendor/playwright/ariaSnapshotEvaluate.d.ts.map +1 -0
- package/dist/vendor/playwright/ariaSnapshotEvaluate.js +207 -0
- package/dist/vendor/playwright/ariaSnapshotEvaluate.js.map +1 -0
- package/dist/vendor/playwright/generated/clockSource.d.ts +9 -0
- package/dist/vendor/playwright/generated/clockSource.d.ts.map +1 -0
- package/dist/vendor/playwright/generated/clockSource.js +9 -0
- package/dist/vendor/playwright/generated/clockSource.js.map +1 -0
- package/dist/vendor/playwright/generated/injectedScriptSource.d.ts +9 -0
- package/dist/vendor/playwright/generated/injectedScriptSource.d.ts.map +1 -0
- package/dist/vendor/playwright/generated/injectedScriptSource.js +9 -0
- package/dist/vendor/playwright/generated/injectedScriptSource.js.map +1 -0
- package/dist/video.d.ts +39 -0
- package/dist/video.d.ts.map +1 -0
- package/dist/video.js +235 -0
- package/dist/video.js.map +1 -0
- package/dist/waitForSelector.d.ts +7 -0
- package/dist/waitForSelector.d.ts.map +1 -0
- package/dist/waitForSelector.js +23 -0
- package/dist/waitForSelector.js.map +1 -0
- package/dist/worker.d.ts +45 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +192 -0
- package/dist/worker.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/generate-playwright-snapshot-source.mjs.
|
|
3
|
+
*
|
|
4
|
+
* Source entry: src/vendor/playwright/source/injected/injectedScript.snapshot.ts
|
|
5
|
+
* Do not edit this file directly; edit the readable source files instead and
|
|
6
|
+
* run pnpm build:vendor:snapshot.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PLAYWRIGHT_INJECTED_SCRIPT_SOURCE = "var __roxyPlaywrightSnapshotSource = (function(exports) {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\n\t//#region src/vendor/playwright/source/isomorphic/ariaSnapshot.ts\n\tfunction ariaNodesEqual(a, b) {\n\t\tif (a.role !== b.role || a.name !== b.name) return false;\n\t\tif (!ariaPropsEqual(a, b) || hasPointerCursor(a) !== hasPointerCursor(b)) return false;\n\t\tconst aKeys = Object.keys(a.props);\n\t\tconst bKeys = Object.keys(b.props);\n\t\treturn aKeys.length === bKeys.length && aKeys.every((k) => a.props[k] === b.props[k]);\n\t}\n\tfunction hasPointerCursor(ariaNode) {\n\t\treturn ariaNode.box.cursor === \"pointer\";\n\t}\n\tfunction ariaPropsEqual(a, b) {\n\t\treturn a.active === b.active && a.checked === b.checked && a.disabled === b.disabled && a.expanded === b.expanded && a.invalid === b.invalid && a.selected === b.selected && a.level === b.level && a.pressed === b.pressed;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/isomorphic/stringUtils.ts\n\tvar normalizedWhitespaceCache;\n\tfunction normalizeWhiteSpace(text) {\n\t\tlet result = normalizedWhitespaceCache?.get(text);\n\t\tif (result === void 0) {\n\t\t\tresult = text.replace(/[\\u200b\\u00ad]/g, \"\").trim().replace(/\\s+/g, \" \");\n\t\t\tnormalizedWhitespaceCache?.set(text, result);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction escapeRegExp(s) {\n\t\treturn s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t}\n\tfunction longestCommonSubstring(s1, s2) {\n\t\tconst n = s1.length;\n\t\tconst m = s2.length;\n\t\tlet maxLen = 0;\n\t\tlet endingIndex = 0;\n\t\tconst dp = Array(n + 1).fill(null).map(() => Array(m + 1).fill(0));\n\t\tfor (let i = 1; i <= n; i++) for (let j = 1; j <= m; j++) if (s1[i - 1] === s2[j - 1]) {\n\t\t\tdp[i][j] = dp[i - 1][j - 1] + 1;\n\t\t\tif (dp[i][j] > maxLen) {\n\t\t\t\tmaxLen = dp[i][j];\n\t\t\t\tendingIndex = i;\n\t\t\t}\n\t\t}\n\t\treturn s1.slice(endingIndex - maxLen, endingIndex);\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/isomorphic/yaml.ts\n\t/**\n\t* Copyright (c) Microsoft Corporation.\n\t*\n\t* Licensed under the Apache License, Version 2.0 (the \"License\");\n\t* you may not use this file except in compliance with the License.\n\t* You may obtain a copy of the License at\n\t*\n\t* http://www.apache.org/licenses/LICENSE-2.0\n\t*\n\t* Unless required by applicable law or agreed to in writing, software\n\t* distributed under the License is distributed on an \"AS IS\" BASIS,\n\t* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t* See the License for the specific language governing permissions and\n\t* limitations under the License.\n\t*/\n\tfunction yamlEscapeKeyIfNeeded(str) {\n\t\tif (!yamlStringNeedsQuotes(str)) return str;\n\t\treturn `'` + str.replace(/'/g, `''`) + `'`;\n\t}\n\tfunction yamlEscapeValueIfNeeded(str) {\n\t\tif (!yamlStringNeedsQuotes(str)) return str;\n\t\treturn \"\\\"\" + str.replace(/[\\\\\"\\x00-\\x1f\\x7f-\\x9f]/g, (c) => {\n\t\t\tswitch (c) {\n\t\t\t\tcase \"\\\\\": return \"\\\\\\\\\";\n\t\t\t\tcase \"\\\"\": return \"\\\\\\\"\";\n\t\t\t\tcase \"\\b\": return \"\\\\b\";\n\t\t\t\tcase \"\\f\": return \"\\\\f\";\n\t\t\t\tcase \"\\n\": return \"\\\\n\";\n\t\t\t\tcase \"\\r\": return \"\\\\r\";\n\t\t\t\tcase \"\t\": return \"\\\\t\";\n\t\t\t\tdefault: return \"\\\\x\" + c.charCodeAt(0).toString(16).padStart(2, \"0\");\n\t\t\t}\n\t\t}) + \"\\\"\";\n\t}\n\tfunction yamlStringNeedsQuotes(str) {\n\t\tif (str.length === 0) return true;\n\t\tif (/^\\s|\\s$/.test(str)) return true;\n\t\tif (/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f-\\x9f]/.test(str)) return true;\n\t\tif (/^-/.test(str)) return true;\n\t\tif (/[\\n:](\\s|$)/.test(str)) return true;\n\t\tif (/\\s#/.test(str)) return true;\n\t\tif (/[\\n\\r]/.test(str)) return true;\n\t\tif (/^[&*\\],?!>|@\"'#%]/.test(str)) return true;\n\t\tif (/[{}`]/.test(str)) return true;\n\t\tif (/^\\[/.test(str)) return true;\n\t\tif (!isNaN(Number(str)) || [\n\t\t\t\"y\",\n\t\t\t\"n\",\n\t\t\t\"yes\",\n\t\t\t\"no\",\n\t\t\t\"true\",\n\t\t\t\"false\",\n\t\t\t\"on\",\n\t\t\t\"off\",\n\t\t\t\"null\"\n\t\t].includes(str.toLowerCase())) return true;\n\t\treturn false;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/domUtils.ts\n\tvar globalOptions = {};\n\tfunction setGlobalOptions(options) {\n\t\tglobalOptions = options;\n\t}\n\tfunction parentElementOrShadowHost(element) {\n\t\tif (element.parentElement) return element.parentElement;\n\t\tif (!element.parentNode) return;\n\t\tif (element.parentNode.nodeType === 11 && element.parentNode.host) return element.parentNode.host;\n\t}\n\tfunction enclosingShadowRootOrDocument(element) {\n\t\tlet node = element;\n\t\twhile (node.parentNode) node = node.parentNode;\n\t\tif (node.nodeType === 11 || node.nodeType === 9) return node;\n\t}\n\tfunction enclosingShadowHost(element) {\n\t\twhile (element.parentElement) element = element.parentElement;\n\t\treturn parentElementOrShadowHost(element);\n\t}\n\tfunction closestCrossShadow(element, css, scope) {\n\t\twhile (element) {\n\t\t\tconst closest = element.closest(css);\n\t\t\tif (scope && closest !== scope && closest?.contains(scope)) return;\n\t\t\tif (closest) return closest;\n\t\t\telement = enclosingShadowHost(element);\n\t\t}\n\t}\n\tfunction getElementComputedStyle(element, pseudo) {\n\t\tconst cache = pseudo === \"::before\" ? cacheStyleBefore : pseudo === \"::after\" ? cacheStyleAfter : cacheStyle;\n\t\tif (cache && cache.has(element)) return cache.get(element);\n\t\tconst style = element.ownerDocument && element.ownerDocument.defaultView ? element.ownerDocument.defaultView.getComputedStyle(element, pseudo) : void 0;\n\t\tcache?.set(element, style);\n\t\treturn style;\n\t}\n\tfunction isElementStyleVisibilityVisible(element, style) {\n\t\tstyle = style ?? getElementComputedStyle(element);\n\t\tif (!style) return true;\n\t\tif (Element.prototype.checkVisibility && globalOptions.browserNameForWorkarounds !== \"webkit\") {\n\t\t\tif (!element.checkVisibility()) return false;\n\t\t} else {\n\t\t\tconst detailsOrSummary = element.closest(\"details,summary\");\n\t\t\tif (detailsOrSummary !== element && detailsOrSummary?.nodeName === \"DETAILS\" && !detailsOrSummary.open) return false;\n\t\t}\n\t\tif (style.visibility !== \"visible\") return false;\n\t\treturn true;\n\t}\n\tfunction computeBox(element) {\n\t\tconst style = getElementComputedStyle(element);\n\t\tif (!style) return {\n\t\t\tvisible: true,\n\t\t\tinline: false\n\t\t};\n\t\tconst cursor = style.cursor;\n\t\tif (style.display === \"contents\") {\n\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) {\n\t\t\t\tif (child.nodeType === 1 && isElementVisible(child)) return {\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tinline: false,\n\t\t\t\t\tcursor\n\t\t\t\t};\n\t\t\t\tif (child.nodeType === 3 && isVisibleTextNode(child)) return {\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tcursor\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tvisible: false,\n\t\t\t\tinline: false,\n\t\t\t\tcursor\n\t\t\t};\n\t\t}\n\t\tif (!isElementStyleVisibilityVisible(element, style)) return {\n\t\t\tcursor,\n\t\t\tvisible: false,\n\t\t\tinline: false\n\t\t};\n\t\tconst rect = element.getBoundingClientRect();\n\t\treturn {\n\t\t\tcursor,\n\t\t\tvisible: rect.width > 0 && rect.height > 0,\n\t\t\tinline: style.display === \"inline\"\n\t\t};\n\t}\n\tfunction isElementVisible(element) {\n\t\treturn computeBox(element).visible;\n\t}\n\tfunction isVisibleTextNode(node) {\n\t\tconst range = node.ownerDocument.createRange();\n\t\trange.selectNode(node);\n\t\tconst rect = range.getBoundingClientRect();\n\t\treturn rect.width > 0 && rect.height > 0;\n\t}\n\tfunction elementSafeTagName(element) {\n\t\tconst tagName = element.tagName;\n\t\tif (typeof tagName === \"string\") return tagName.toUpperCase();\n\t\tif (element instanceof HTMLFormElement) return \"FORM\";\n\t\treturn element.tagName.toUpperCase();\n\t}\n\tvar cacheStyle;\n\tvar cacheStyleBefore;\n\tvar cacheStyleAfter;\n\tvar cachesCounter$1 = 0;\n\tfunction beginDOMCaches() {\n\t\t++cachesCounter$1;\n\t\tcacheStyle ??= /* @__PURE__ */ new Map();\n\t\tcacheStyleBefore ??= /* @__PURE__ */ new Map();\n\t\tcacheStyleAfter ??= /* @__PURE__ */ new Map();\n\t}\n\tfunction endDOMCaches() {\n\t\tif (!--cachesCounter$1) {\n\t\t\tcacheStyle = void 0;\n\t\t\tcacheStyleBefore = void 0;\n\t\t\tcacheStyleAfter = void 0;\n\t\t}\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/isomorphic/cssTokenizer.ts\n\tvar between = function(num, first, last) {\n\t\treturn num >= first && num <= last;\n\t};\n\tfunction digit(code) {\n\t\treturn between(code, 48, 57);\n\t}\n\tfunction hexdigit(code) {\n\t\treturn digit(code) || between(code, 65, 70) || between(code, 97, 102);\n\t}\n\tfunction uppercaseletter(code) {\n\t\treturn between(code, 65, 90);\n\t}\n\tfunction lowercaseletter(code) {\n\t\treturn between(code, 97, 122);\n\t}\n\tfunction letter(code) {\n\t\treturn uppercaseletter(code) || lowercaseletter(code);\n\t}\n\tfunction nonascii(code) {\n\t\treturn code >= 128;\n\t}\n\tfunction namestartchar(code) {\n\t\treturn letter(code) || nonascii(code) || code === 95;\n\t}\n\tfunction namechar(code) {\n\t\treturn namestartchar(code) || digit(code) || code === 45;\n\t}\n\tfunction nonprintable(code) {\n\t\treturn between(code, 0, 8) || code === 11 || between(code, 14, 31) || code === 127;\n\t}\n\tfunction newline(code) {\n\t\treturn code === 10;\n\t}\n\tfunction whitespace(code) {\n\t\treturn newline(code) || code === 9 || code === 32;\n\t}\n\tvar maximumallowedcodepoint = 1114111;\n\tvar InvalidCharacterError = class extends Error {\n\t\tconstructor(message) {\n\t\t\tsuper(message);\n\t\t\tthis.name = \"InvalidCharacterError\";\n\t\t}\n\t};\n\tfunction preprocess(str) {\n\t\tconst codepoints = [];\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tlet code = str.charCodeAt(i);\n\t\t\tif (code === 13 && str.charCodeAt(i + 1) === 10) {\n\t\t\t\tcode = 10;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (code === 13 || code === 12) code = 10;\n\t\t\tif (code === 0) code = 65533;\n\t\t\tif (between(code, 55296, 56319) && between(str.charCodeAt(i + 1), 56320, 57343)) {\n\t\t\t\tconst lead = code - 55296;\n\t\t\t\tconst trail = str.charCodeAt(i + 1) - 56320;\n\t\t\t\tcode = Math.pow(2, 16) + lead * Math.pow(2, 10) + trail;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tcodepoints.push(code);\n\t\t}\n\t\treturn codepoints;\n\t}\n\tfunction stringFromCode(code) {\n\t\tif (code <= 65535) return String.fromCharCode(code);\n\t\tcode -= Math.pow(2, 16);\n\t\tconst lead = Math.floor(code / Math.pow(2, 10)) + 55296;\n\t\tconst trail = code % Math.pow(2, 10) + 56320;\n\t\treturn String.fromCharCode(lead) + String.fromCharCode(trail);\n\t}\n\tfunction tokenize(str1) {\n\t\tconst str = preprocess(str1);\n\t\tlet i = -1;\n\t\tconst tokens = [];\n\t\tlet code;\n\t\tlet line = 0;\n\t\tlet column = 0;\n\t\tlet lastLineLength = 0;\n\t\tconst incrLineno = function() {\n\t\t\tline += 1;\n\t\t\tlastLineLength = column;\n\t\t\tcolumn = 0;\n\t\t};\n\t\tconst locStart = {\n\t\t\tline,\n\t\t\tcolumn\n\t\t};\n\t\tconst codepoint = function(i) {\n\t\t\tif (i >= str.length) return -1;\n\t\t\treturn str[i];\n\t\t};\n\t\tconst next = function(num) {\n\t\t\tif (num === void 0) num = 1;\n\t\t\tif (num > 3) throw \"Spec Error: no more than three codepoints of lookahead.\";\n\t\t\treturn codepoint(i + num);\n\t\t};\n\t\tconst consume = function(num) {\n\t\t\tif (num === void 0) num = 1;\n\t\t\ti += num;\n\t\t\tcode = codepoint(i);\n\t\t\tif (newline(code)) incrLineno();\n\t\t\telse column += num;\n\t\t\treturn true;\n\t\t};\n\t\tconst reconsume = function() {\n\t\t\ti -= 1;\n\t\t\tif (newline(code)) {\n\t\t\t\tline -= 1;\n\t\t\t\tcolumn = lastLineLength;\n\t\t\t} else column -= 1;\n\t\t\tlocStart.line = line;\n\t\t\tlocStart.column = column;\n\t\t\treturn true;\n\t\t};\n\t\tconst eof = function(codepoint) {\n\t\t\tif (codepoint === void 0) codepoint = code;\n\t\t\treturn codepoint === -1;\n\t\t};\n\t\tconst consumeAToken = function() {\n\t\t\tconsumeComments();\n\t\t\tconsume();\n\t\t\tif (whitespace(code)) {\n\t\t\t\twhile (whitespace(next())) consume();\n\t\t\t\treturn new WhitespaceToken();\n\t\t\t} else if (code === 34) return consumeAStringToken();\n\t\t\telse if (code === 35) if (namechar(next()) || areAValidEscape(next(1), next(2))) {\n\t\t\t\tconst token = new HashToken(\"\");\n\t\t\t\tif (wouldStartAnIdentifier(next(1), next(2), next(3))) token.type = \"id\";\n\t\t\t\ttoken.value = consumeAName();\n\t\t\t\treturn token;\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 36) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new SuffixMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 39) return consumeAStringToken();\n\t\t\telse if (code === 40) return new OpenParenToken();\n\t\t\telse if (code === 41) return new CloseParenToken();\n\t\t\telse if (code === 42) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new SubstringMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 43) if (startsWithANumber()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 44) return new CommaToken();\n\t\t\telse if (code === 45) if (startsWithANumber()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else if (next(1) === 45 && next(2) === 62) {\n\t\t\t\tconsume(2);\n\t\t\t\treturn new CDCToken();\n\t\t\t} else if (startsWithAnIdentifier()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeAnIdentlikeToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 46) if (startsWithANumber()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 58) return new ColonToken();\n\t\t\telse if (code === 59) return new SemicolonToken();\n\t\t\telse if (code === 60) if (next(1) === 33 && next(2) === 45 && next(3) === 45) {\n\t\t\t\tconsume(3);\n\t\t\t\treturn new CDOToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 64) if (wouldStartAnIdentifier(next(1), next(2), next(3))) return new AtKeywordToken(consumeAName());\n\t\t\telse return new DelimToken(code);\n\t\t\telse if (code === 91) return new OpenSquareToken();\n\t\t\telse if (code === 92) if (startsWithAValidEscape()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeAnIdentlikeToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 93) return new CloseSquareToken();\n\t\t\telse if (code === 94) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new PrefixMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 123) return new OpenCurlyToken();\n\t\t\telse if (code === 124) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new DashMatchToken();\n\t\t\t} else if (next() === 124) {\n\t\t\t\tconsume();\n\t\t\t\treturn new ColumnToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 125) return new CloseCurlyToken();\n\t\t\telse if (code === 126) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new IncludeMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (digit(code)) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else if (namestartchar(code)) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeAnIdentlikeToken();\n\t\t\t} else if (eof()) return new EOFToken();\n\t\t\telse return new DelimToken(code);\n\t\t};\n\t\tconst consumeComments = function() {\n\t\t\twhile (next(1) === 47 && next(2) === 42) {\n\t\t\t\tconsume(2);\n\t\t\t\twhile (true) {\n\t\t\t\t\tconsume();\n\t\t\t\t\tif (code === 42 && next() === 47) {\n\t\t\t\t\t\tconsume();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (eof()) return;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tconst consumeANumericToken = function() {\n\t\t\tconst num = consumeANumber();\n\t\t\tif (wouldStartAnIdentifier(next(1), next(2), next(3))) {\n\t\t\t\tconst token = new DimensionToken();\n\t\t\t\ttoken.value = num.value;\n\t\t\t\ttoken.repr = num.repr;\n\t\t\t\ttoken.type = num.type;\n\t\t\t\ttoken.unit = consumeAName();\n\t\t\t\treturn token;\n\t\t\t} else if (next() === 37) {\n\t\t\t\tconsume();\n\t\t\t\tconst token = new PercentageToken();\n\t\t\t\ttoken.value = num.value;\n\t\t\t\ttoken.repr = num.repr;\n\t\t\t\treturn token;\n\t\t\t} else {\n\t\t\t\tconst token = new NumberToken();\n\t\t\t\ttoken.value = num.value;\n\t\t\t\ttoken.repr = num.repr;\n\t\t\t\ttoken.type = num.type;\n\t\t\t\treturn token;\n\t\t\t}\n\t\t};\n\t\tconst consumeAnIdentlikeToken = function() {\n\t\t\tconst str = consumeAName();\n\t\t\tif (str.toLowerCase() === \"url\" && next() === 40) {\n\t\t\t\tconsume();\n\t\t\t\twhile (whitespace(next(1)) && whitespace(next(2))) consume();\n\t\t\t\tif (next() === 34 || next() === 39) return new FunctionToken(str);\n\t\t\t\telse if (whitespace(next()) && (next(2) === 34 || next(2) === 39)) return new FunctionToken(str);\n\t\t\t\telse return consumeAURLToken();\n\t\t\t} else if (next() === 40) {\n\t\t\t\tconsume();\n\t\t\t\treturn new FunctionToken(str);\n\t\t\t} else return new IdentToken(str);\n\t\t};\n\t\tconst consumeAStringToken = function(endingCodePoint) {\n\t\t\tif (endingCodePoint === void 0) endingCodePoint = code;\n\t\t\tlet string = \"\";\n\t\t\twhile (consume()) if (code === endingCodePoint || eof()) return new StringToken(string);\n\t\t\telse if (newline(code)) {\n\t\t\t\treconsume();\n\t\t\t\treturn new BadStringToken();\n\t\t\t} else if (code === 92) if (eof(next()));\n\t\t\telse if (newline(next())) consume();\n\t\t\telse string += stringFromCode(consumeEscape());\n\t\t\telse string += stringFromCode(code);\n\t\t\tthrow new Error(\"Internal error\");\n\t\t};\n\t\tconst consumeAURLToken = function() {\n\t\t\tconst token = new URLToken(\"\");\n\t\t\twhile (whitespace(next())) consume();\n\t\t\tif (eof(next())) return token;\n\t\t\twhile (consume()) if (code === 41 || eof()) return token;\n\t\t\telse if (whitespace(code)) {\n\t\t\t\twhile (whitespace(next())) consume();\n\t\t\t\tif (next() === 41 || eof(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\treturn token;\n\t\t\t\t} else {\n\t\t\t\t\tconsumeTheRemnantsOfABadURL();\n\t\t\t\t\treturn new BadURLToken();\n\t\t\t\t}\n\t\t\t} else if (code === 34 || code === 39 || code === 40 || nonprintable(code)) {\n\t\t\t\tconsumeTheRemnantsOfABadURL();\n\t\t\t\treturn new BadURLToken();\n\t\t\t} else if (code === 92) if (startsWithAValidEscape()) token.value += stringFromCode(consumeEscape());\n\t\t\telse {\n\t\t\t\tconsumeTheRemnantsOfABadURL();\n\t\t\t\treturn new BadURLToken();\n\t\t\t}\n\t\t\telse token.value += stringFromCode(code);\n\t\t\tthrow new Error(\"Internal error\");\n\t\t};\n\t\tconst consumeEscape = function() {\n\t\t\tconsume();\n\t\t\tif (hexdigit(code)) {\n\t\t\t\tconst digits = [code];\n\t\t\t\tfor (let total = 0; total < 5; total++) if (hexdigit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\tdigits.push(code);\n\t\t\t\t} else break;\n\t\t\t\tif (whitespace(next())) consume();\n\t\t\t\tlet value = parseInt(digits.map(function(x) {\n\t\t\t\t\treturn String.fromCharCode(x);\n\t\t\t\t}).join(\"\"), 16);\n\t\t\t\tif (value > maximumallowedcodepoint) value = 65533;\n\t\t\t\treturn value;\n\t\t\t} else if (eof()) return 65533;\n\t\t\telse return code;\n\t\t};\n\t\tconst areAValidEscape = function(c1, c2) {\n\t\t\tif (c1 !== 92) return false;\n\t\t\tif (newline(c2)) return false;\n\t\t\treturn true;\n\t\t};\n\t\tconst startsWithAValidEscape = function() {\n\t\t\treturn areAValidEscape(code, next());\n\t\t};\n\t\tconst wouldStartAnIdentifier = function(c1, c2, c3) {\n\t\t\tif (c1 === 45) return namestartchar(c2) || c2 === 45 || areAValidEscape(c2, c3);\n\t\t\telse if (namestartchar(c1)) return true;\n\t\t\telse if (c1 === 92) return areAValidEscape(c1, c2);\n\t\t\telse return false;\n\t\t};\n\t\tconst startsWithAnIdentifier = function() {\n\t\t\treturn wouldStartAnIdentifier(code, next(1), next(2));\n\t\t};\n\t\tconst wouldStartANumber = function(c1, c2, c3) {\n\t\t\tif (c1 === 43 || c1 === 45) {\n\t\t\t\tif (digit(c2)) return true;\n\t\t\t\tif (c2 === 46 && digit(c3)) return true;\n\t\t\t\treturn false;\n\t\t\t} else if (c1 === 46) {\n\t\t\t\tif (digit(c2)) return true;\n\t\t\t\treturn false;\n\t\t\t} else if (digit(c1)) return true;\n\t\t\telse return false;\n\t\t};\n\t\tconst startsWithANumber = function() {\n\t\t\treturn wouldStartANumber(code, next(1), next(2));\n\t\t};\n\t\tconst consumeAName = function() {\n\t\t\tlet result = \"\";\n\t\t\twhile (consume()) if (namechar(code)) result += stringFromCode(code);\n\t\t\telse if (startsWithAValidEscape()) result += stringFromCode(consumeEscape());\n\t\t\telse {\n\t\t\t\treconsume();\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow new Error(\"Internal parse error\");\n\t\t};\n\t\tconst consumeANumber = function() {\n\t\t\tlet repr = \"\";\n\t\t\tlet type = \"integer\";\n\t\t\tif (next() === 43 || next() === 45) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t}\n\t\t\twhile (digit(next())) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t}\n\t\t\tif (next(1) === 46 && digit(next(2))) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\ttype = \"number\";\n\t\t\t\twhile (digit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\trepr += stringFromCode(code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst c1 = next(1);\n\t\t\tconst c2 = next(2);\n\t\t\tconst c3 = next(3);\n\t\t\tif ((c1 === 69 || c1 === 101) && digit(c2)) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\ttype = \"number\";\n\t\t\t\twhile (digit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\trepr += stringFromCode(code);\n\t\t\t\t}\n\t\t\t} else if ((c1 === 69 || c1 === 101) && (c2 === 43 || c2 === 45) && digit(c3)) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\ttype = \"number\";\n\t\t\t\twhile (digit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\trepr += stringFromCode(code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst value = convertAStringToANumber(repr);\n\t\t\treturn {\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t\trepr\n\t\t\t};\n\t\t};\n\t\tconst convertAStringToANumber = function(string) {\n\t\t\treturn +string;\n\t\t};\n\t\tconst consumeTheRemnantsOfABadURL = function() {\n\t\t\twhile (consume()) if (code === 41 || eof()) return;\n\t\t\telse if (startsWithAValidEscape()) consumeEscape();\n\t\t};\n\t\tlet iterationCount = 0;\n\t\twhile (!eof(next())) {\n\t\t\ttokens.push(consumeAToken());\n\t\t\titerationCount++;\n\t\t\tif (iterationCount > str.length * 2) throw new Error(\"I'm infinite-looping!\");\n\t\t}\n\t\treturn tokens;\n\t}\n\tvar CSSParserToken = class {\n\t\ttokenType = \"\";\n\t\tvalue;\n\t\ttoJSON() {\n\t\t\treturn { token: this.tokenType };\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.tokenType;\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \"\" + this;\n\t\t}\n\t};\n\tvar BadStringToken = class extends CSSParserToken {\n\t\ttokenType = \"BADSTRING\";\n\t};\n\tvar BadURLToken = class extends CSSParserToken {\n\t\ttokenType = \"BADURL\";\n\t};\n\tvar WhitespaceToken = class extends CSSParserToken {\n\t\ttokenType = \"WHITESPACE\";\n\t\ttoString() {\n\t\t\treturn \"WS\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \" \";\n\t\t}\n\t};\n\tvar CDOToken = class extends CSSParserToken {\n\t\ttokenType = \"CDO\";\n\t\ttoSource() {\n\t\t\treturn \"<!--\";\n\t\t}\n\t};\n\tvar CDCToken = class extends CSSParserToken {\n\t\ttokenType = \"CDC\";\n\t\ttoSource() {\n\t\t\treturn \"-->\";\n\t\t}\n\t};\n\tvar ColonToken = class extends CSSParserToken {\n\t\ttokenType = \":\";\n\t};\n\tvar SemicolonToken = class extends CSSParserToken {\n\t\ttokenType = \";\";\n\t};\n\tvar CommaToken = class extends CSSParserToken {\n\t\ttokenType = \",\";\n\t};\n\tvar GroupingToken = class extends CSSParserToken {\n\t\tvalue = \"\";\n\t\tmirror = \"\";\n\t};\n\tvar OpenCurlyToken = class extends GroupingToken {\n\t\ttokenType = \"{\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"{\";\n\t\t\tthis.mirror = \"}\";\n\t\t}\n\t};\n\tvar CloseCurlyToken = class extends GroupingToken {\n\t\ttokenType = \"}\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"}\";\n\t\t\tthis.mirror = \"{\";\n\t\t}\n\t};\n\tvar OpenSquareToken = class extends GroupingToken {\n\t\ttokenType = \"[\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"[\";\n\t\t\tthis.mirror = \"]\";\n\t\t}\n\t};\n\tvar CloseSquareToken = class extends GroupingToken {\n\t\ttokenType = \"]\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"]\";\n\t\t\tthis.mirror = \"[\";\n\t\t}\n\t};\n\tvar OpenParenToken = class extends GroupingToken {\n\t\ttokenType = \"(\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"(\";\n\t\t\tthis.mirror = \")\";\n\t\t}\n\t};\n\tvar CloseParenToken = class extends GroupingToken {\n\t\ttokenType = \")\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \")\";\n\t\t\tthis.mirror = \"(\";\n\t\t}\n\t};\n\tvar IncludeMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"~=\";\n\t};\n\tvar DashMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"|=\";\n\t};\n\tvar PrefixMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"^=\";\n\t};\n\tvar SuffixMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"$=\";\n\t};\n\tvar SubstringMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"*=\";\n\t};\n\tvar ColumnToken = class extends CSSParserToken {\n\t\ttokenType = \"||\";\n\t};\n\tvar EOFToken = class extends CSSParserToken {\n\t\ttokenType = \"EOF\";\n\t\ttoSource() {\n\t\t\treturn \"\";\n\t\t}\n\t};\n\tvar DelimToken = class extends CSSParserToken {\n\t\ttokenType = \"DELIM\";\n\t\tvalue = \"\";\n\t\tconstructor(code) {\n\t\t\tsuper();\n\t\t\tthis.value = stringFromCode(code);\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"DELIM(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\tif (this.value === \"\\\\\") return \"\\\\\\n\";\n\t\t\telse return this.value;\n\t\t}\n\t};\n\tvar StringValuedToken = class extends CSSParserToken {\n\t\tvalue = \"\";\n\t\tASCIIMatch(str) {\n\t\t\treturn this.value.toLowerCase() === str.toLowerCase();\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\treturn json;\n\t\t}\n\t};\n\tvar IdentToken = class extends StringValuedToken {\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttokenType = \"IDENT\";\n\t\ttoString() {\n\t\t\treturn \"IDENT(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn escapeIdent(this.value);\n\t\t}\n\t};\n\tvar FunctionToken = class extends StringValuedToken {\n\t\ttokenType = \"FUNCTION\";\n\t\tmirror;\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t\tthis.mirror = \")\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"FUNCTION(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn escapeIdent(this.value) + \"(\";\n\t\t}\n\t};\n\tvar AtKeywordToken = class extends StringValuedToken {\n\t\ttokenType = \"AT-KEYWORD\";\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"AT(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \"@\" + escapeIdent(this.value);\n\t\t}\n\t};\n\tvar HashToken = class extends StringValuedToken {\n\t\ttokenType = \"HASH\";\n\t\ttype;\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t\tthis.type = \"unrestricted\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"HASH(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\tjson.type = this.type;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\tif (this.type === \"id\") return \"#\" + escapeIdent(this.value);\n\t\t\telse return \"#\" + escapeHash(this.value);\n\t\t}\n\t};\n\tvar StringToken = class extends StringValuedToken {\n\t\ttokenType = \"STRING\";\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"\\\"\" + escapeString(this.value) + \"\\\"\";\n\t\t}\n\t};\n\tvar URLToken = class extends StringValuedToken {\n\t\ttokenType = \"URL\";\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"URL(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \"url(\\\"\" + escapeString(this.value) + \"\\\")\";\n\t\t}\n\t};\n\tvar NumberToken = class extends CSSParserToken {\n\t\ttokenType = \"NUMBER\";\n\t\ttype;\n\t\trepr;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = \"integer\";\n\t\t\tthis.repr = \"\";\n\t\t}\n\t\ttoString() {\n\t\t\tif (this.type === \"integer\") return \"INT(\" + this.value + \")\";\n\t\t\treturn \"NUMBER(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = super.toJSON();\n\t\t\tjson.value = this.value;\n\t\t\tjson.type = this.type;\n\t\t\tjson.repr = this.repr;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\treturn this.repr;\n\t\t}\n\t};\n\tvar PercentageToken = class extends CSSParserToken {\n\t\ttokenType = \"PERCENTAGE\";\n\t\trepr;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.repr = \"\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"PERCENTAGE(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\tjson.repr = this.repr;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\treturn this.repr + \"%\";\n\t\t}\n\t};\n\tvar DimensionToken = class extends CSSParserToken {\n\t\ttokenType = \"DIMENSION\";\n\t\ttype;\n\t\trepr;\n\t\tunit;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = \"integer\";\n\t\t\tthis.repr = \"\";\n\t\t\tthis.unit = \"\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"DIM(\" + this.value + \",\" + this.unit + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\tjson.type = this.type;\n\t\t\tjson.repr = this.repr;\n\t\t\tjson.unit = this.unit;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\tconst source = this.repr;\n\t\t\tlet unit = escapeIdent(this.unit);\n\t\t\tif (unit[0].toLowerCase() === \"e\" && (unit[1] === \"-\" || between(unit.charCodeAt(1), 48, 57))) unit = \"\\\\65 \" + unit.slice(1, unit.length);\n\t\t\treturn source + unit;\n\t\t}\n\t};\n\tfunction escapeIdent(string) {\n\t\tstring = \"\" + string;\n\t\tlet result = \"\";\n\t\tconst firstcode = string.charCodeAt(0);\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tconst code = string.charCodeAt(i);\n\t\t\tif (code === 0) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n\t\t\tif (between(code, 1, 31) || code === 127 || i === 0 && between(code, 48, 57) || i === 1 && between(code, 48, 57) && firstcode === 45) result += \"\\\\\" + code.toString(16) + \" \";\n\t\t\telse if (code >= 128 || code === 45 || code === 95 || between(code, 48, 57) || between(code, 65, 90) || between(code, 97, 122)) result += string[i];\n\t\t\telse result += \"\\\\\" + string[i];\n\t\t}\n\t\treturn result;\n\t}\n\tfunction escapeHash(string) {\n\t\tstring = \"\" + string;\n\t\tlet result = \"\";\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tconst code = string.charCodeAt(i);\n\t\t\tif (code === 0) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n\t\t\tif (code >= 128 || code === 45 || code === 95 || between(code, 48, 57) || between(code, 65, 90) || between(code, 97, 122)) result += string[i];\n\t\t\telse result += \"\\\\\" + code.toString(16) + \" \";\n\t\t}\n\t\treturn result;\n\t}\n\tfunction escapeString(string) {\n\t\tstring = \"\" + string;\n\t\tlet result = \"\";\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tconst code = string.charCodeAt(i);\n\t\t\tif (code === 0) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n\t\t\tif (between(code, 1, 31) || code === 127) result += \"\\\\\" + code.toString(16) + \" \";\n\t\t\telse if (code === 34 || code === 92) result += \"\\\\\" + string[i];\n\t\t\telse result += string[i];\n\t\t}\n\t\treturn result;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/roleUtils.ts\n\t/**\n\t* Copyright (c) Microsoft Corporation.\n\t*\n\t* Licensed under the Apache License, Version 2.0 (the \"License\");\n\t* you may not use this file except in compliance with the License.\n\t* You may obtain a copy of the License at\n\t*\n\t* http://www.apache.org/licenses/LICENSE-2.0\n\t*\n\t* Unless required by applicable law or agreed to in writing, software\n\t* distributed under the License is distributed on an \"AS IS\" BASIS,\n\t* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t* See the License for the specific language governing permissions and\n\t* limitations under the License.\n\t*/\n\tfunction hasExplicitAccessibleName(e) {\n\t\treturn e.hasAttribute(\"aria-label\") || e.hasAttribute(\"aria-labelledby\");\n\t}\n\tvar kAncestorPreventingLandmark = \"article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]\";\n\tvar kGlobalAriaAttributes = [\n\t\t[\"aria-atomic\", void 0],\n\t\t[\"aria-busy\", void 0],\n\t\t[\"aria-controls\", void 0],\n\t\t[\"aria-current\", void 0],\n\t\t[\"aria-describedby\", void 0],\n\t\t[\"aria-details\", void 0],\n\t\t[\"aria-dropeffect\", void 0],\n\t\t[\"aria-flowto\", void 0],\n\t\t[\"aria-grabbed\", void 0],\n\t\t[\"aria-hidden\", void 0],\n\t\t[\"aria-keyshortcuts\", void 0],\n\t\t[\"aria-label\", [\n\t\t\t\"caption\",\n\t\t\t\"code\",\n\t\t\t\"deletion\",\n\t\t\t\"emphasis\",\n\t\t\t\"generic\",\n\t\t\t\"insertion\",\n\t\t\t\"paragraph\",\n\t\t\t\"presentation\",\n\t\t\t\"strong\",\n\t\t\t\"subscript\",\n\t\t\t\"superscript\"\n\t\t]],\n\t\t[\"aria-labelledby\", [\n\t\t\t\"caption\",\n\t\t\t\"code\",\n\t\t\t\"deletion\",\n\t\t\t\"emphasis\",\n\t\t\t\"generic\",\n\t\t\t\"insertion\",\n\t\t\t\"paragraph\",\n\t\t\t\"presentation\",\n\t\t\t\"strong\",\n\t\t\t\"subscript\",\n\t\t\t\"superscript\"\n\t\t]],\n\t\t[\"aria-live\", void 0],\n\t\t[\"aria-owns\", void 0],\n\t\t[\"aria-relevant\", void 0],\n\t\t[\"aria-roledescription\", [\"generic\"]]\n\t];\n\tfunction hasGlobalAriaAttribute(element, forRole) {\n\t\treturn kGlobalAriaAttributes.some(([attr, prohibited]) => {\n\t\t\treturn !prohibited?.includes(forRole || \"\") && element.hasAttribute(attr);\n\t\t});\n\t}\n\tfunction hasTabIndex(element) {\n\t\treturn !Number.isNaN(Number(String(element.getAttribute(\"tabindex\"))));\n\t}\n\tfunction isFocusable(element) {\n\t\treturn !isNativelyDisabled(element) && (isNativelyFocusable(element) || hasTabIndex(element));\n\t}\n\tfunction isNativelyFocusable(element) {\n\t\tconst tagName = elementSafeTagName(element);\n\t\tif ([\n\t\t\t\"BUTTON\",\n\t\t\t\"DETAILS\",\n\t\t\t\"SELECT\",\n\t\t\t\"TEXTAREA\"\n\t\t].includes(tagName)) return true;\n\t\tif (tagName === \"A\" || tagName === \"AREA\") return element.hasAttribute(\"href\");\n\t\tif (tagName === \"INPUT\") return !element.hidden;\n\t\treturn false;\n\t}\n\tvar kImplicitRoleByTagName = {\n\t\t\"A\": (e) => {\n\t\t\treturn e.hasAttribute(\"href\") ? \"link\" : null;\n\t\t},\n\t\t\"AREA\": (e) => {\n\t\t\treturn e.hasAttribute(\"href\") ? \"link\" : null;\n\t\t},\n\t\t\"ARTICLE\": () => \"article\",\n\t\t\"ASIDE\": () => \"complementary\",\n\t\t\"BLOCKQUOTE\": () => \"blockquote\",\n\t\t\"BUTTON\": () => \"button\",\n\t\t\"CAPTION\": () => \"caption\",\n\t\t\"CODE\": () => \"code\",\n\t\t\"DATALIST\": () => \"listbox\",\n\t\t\"DD\": () => \"definition\",\n\t\t\"DEL\": () => \"deletion\",\n\t\t\"DETAILS\": () => \"group\",\n\t\t\"DFN\": () => \"term\",\n\t\t\"DIALOG\": () => \"dialog\",\n\t\t\"DT\": () => \"term\",\n\t\t\"EM\": () => \"emphasis\",\n\t\t\"FIELDSET\": () => \"group\",\n\t\t\"FIGURE\": () => \"figure\",\n\t\t\"FOOTER\": (e) => closestCrossShadow(e, kAncestorPreventingLandmark) ? null : \"contentinfo\",\n\t\t\"FORM\": (e) => hasExplicitAccessibleName(e) ? \"form\" : null,\n\t\t\"H1\": () => \"heading\",\n\t\t\"H2\": () => \"heading\",\n\t\t\"H3\": () => \"heading\",\n\t\t\"H4\": () => \"heading\",\n\t\t\"H5\": () => \"heading\",\n\t\t\"H6\": () => \"heading\",\n\t\t\"HEADER\": (e) => closestCrossShadow(e, kAncestorPreventingLandmark) ? null : \"banner\",\n\t\t\"HR\": () => \"separator\",\n\t\t\"HTML\": () => \"document\",\n\t\t\"IMG\": (e) => e.getAttribute(\"alt\") === \"\" && !e.getAttribute(\"title\") && !hasGlobalAriaAttribute(e) && !hasTabIndex(e) ? \"presentation\" : \"img\",\n\t\t\"INPUT\": (e) => {\n\t\t\tconst type = e.type.toLowerCase();\n\t\t\tif (type === \"search\") return e.hasAttribute(\"list\") ? \"combobox\" : \"searchbox\";\n\t\t\tif ([\n\t\t\t\t\"email\",\n\t\t\t\t\"tel\",\n\t\t\t\t\"text\",\n\t\t\t\t\"url\",\n\t\t\t\t\"\"\n\t\t\t].includes(type)) {\n\t\t\t\tconst list = getIdRefs(e, e.getAttribute(\"list\"))[0];\n\t\t\t\treturn list && elementSafeTagName(list) === \"DATALIST\" ? \"combobox\" : \"textbox\";\n\t\t\t}\n\t\t\tif (type === \"hidden\") return null;\n\t\t\tif (type === \"file\") return \"button\";\n\t\t\treturn inputTypeToRole[type] || \"textbox\";\n\t\t},\n\t\t\"INS\": () => \"insertion\",\n\t\t\"LI\": () => \"listitem\",\n\t\t\"MAIN\": () => \"main\",\n\t\t\"MARK\": () => \"mark\",\n\t\t\"MATH\": () => \"math\",\n\t\t\"MENU\": () => \"list\",\n\t\t\"METER\": () => \"meter\",\n\t\t\"NAV\": () => \"navigation\",\n\t\t\"OL\": () => \"list\",\n\t\t\"OPTGROUP\": () => \"group\",\n\t\t\"OPTION\": () => \"option\",\n\t\t\"OUTPUT\": () => \"status\",\n\t\t\"P\": () => \"paragraph\",\n\t\t\"PROGRESS\": () => \"progressbar\",\n\t\t\"SEARCH\": () => \"search\",\n\t\t\"SECTION\": (e) => hasExplicitAccessibleName(e) ? \"region\" : null,\n\t\t\"SELECT\": (e) => e.hasAttribute(\"multiple\") || e.size > 1 ? \"listbox\" : \"combobox\",\n\t\t\"STRONG\": () => \"strong\",\n\t\t\"SUB\": () => \"subscript\",\n\t\t\"SUP\": () => \"superscript\",\n\t\t\"SVG\": () => \"img\",\n\t\t\"TABLE\": () => \"table\",\n\t\t\"TBODY\": () => \"rowgroup\",\n\t\t\"TD\": (e) => {\n\t\t\tconst table = closestCrossShadow(e, \"table\");\n\t\t\tconst role = table ? getExplicitAriaRole(table) : \"\";\n\t\t\treturn role === \"grid\" || role === \"treegrid\" ? \"gridcell\" : \"cell\";\n\t\t},\n\t\t\"TEXTAREA\": () => \"textbox\",\n\t\t\"TFOOT\": () => \"rowgroup\",\n\t\t\"TH\": (e) => {\n\t\t\tconst scope = e.getAttribute(\"scope\");\n\t\t\tif (scope === \"col\" || scope === \"colgroup\") return \"columnheader\";\n\t\t\tif (scope === \"row\" || scope === \"rowgroup\") return \"rowheader\";\n\t\t\tconst nextSibling = e.nextElementSibling;\n\t\t\tconst prevSibling = e.previousElementSibling;\n\t\t\tconst row = !!e.parentElement && elementSafeTagName(e.parentElement) === \"TR\" ? e.parentElement : void 0;\n\t\t\tif (!nextSibling && !prevSibling) {\n\t\t\t\tif (row) {\n\t\t\t\t\tconst table = closestCrossShadow(row, \"table\");\n\t\t\t\t\tif (table && table.rows.length <= 1) return null;\n\t\t\t\t}\n\t\t\t\treturn \"columnheader\";\n\t\t\t}\n\t\t\tif (isHeaderCell(nextSibling) && isHeaderCell(prevSibling)) return \"columnheader\";\n\t\t\tif (isNonEmptyDataCell(nextSibling) || isNonEmptyDataCell(prevSibling)) return \"rowheader\";\n\t\t\treturn \"columnheader\";\n\t\t},\n\t\t\"THEAD\": () => \"rowgroup\",\n\t\t\"TIME\": () => \"time\",\n\t\t\"TR\": () => \"row\",\n\t\t\"UL\": () => \"list\"\n\t};\n\tfunction isHeaderCell(element) {\n\t\treturn !!element && elementSafeTagName(element) === \"TH\";\n\t}\n\tfunction isNonEmptyDataCell(element) {\n\t\tif (!element || elementSafeTagName(element) !== \"TD\") return false;\n\t\treturn !!(element.textContent?.trim() || element.children.length > 0);\n\t}\n\tvar kPresentationInheritanceParents = {\n\t\t\"DD\": [\"DL\", \"DIV\"],\n\t\t\"DIV\": [\"DL\"],\n\t\t\"DT\": [\"DL\", \"DIV\"],\n\t\t\"LI\": [\"OL\", \"UL\"],\n\t\t\"TBODY\": [\"TABLE\"],\n\t\t\"TD\": [\"TR\"],\n\t\t\"TFOOT\": [\"TABLE\"],\n\t\t\"TH\": [\"TR\"],\n\t\t\"THEAD\": [\"TABLE\"],\n\t\t\"TR\": [\n\t\t\t\"THEAD\",\n\t\t\t\"TBODY\",\n\t\t\t\"TFOOT\",\n\t\t\t\"TABLE\"\n\t\t]\n\t};\n\tfunction getImplicitAriaRole(element) {\n\t\tconst implicitRole = kImplicitRoleByTagName[elementSafeTagName(element)]?.(element) || \"\";\n\t\tif (!implicitRole) return null;\n\t\tlet ancestor = element;\n\t\twhile (ancestor) {\n\t\t\tconst parent = parentElementOrShadowHost(ancestor);\n\t\t\tconst parents = kPresentationInheritanceParents[elementSafeTagName(ancestor)];\n\t\t\tif (!parents || !parent || !parents.includes(elementSafeTagName(parent))) break;\n\t\t\tconst parentExplicitRole = getExplicitAriaRole(parent);\n\t\t\tif ((parentExplicitRole === \"none\" || parentExplicitRole === \"presentation\") && !hasPresentationConflictResolution(parent, parentExplicitRole)) return parentExplicitRole;\n\t\t\tancestor = parent;\n\t\t}\n\t\treturn implicitRole;\n\t}\n\tvar validRoles = [\n\t\t\"alert\",\n\t\t\"alertdialog\",\n\t\t\"application\",\n\t\t\"article\",\n\t\t\"banner\",\n\t\t\"blockquote\",\n\t\t\"button\",\n\t\t\"caption\",\n\t\t\"cell\",\n\t\t\"checkbox\",\n\t\t\"code\",\n\t\t\"columnheader\",\n\t\t\"combobox\",\n\t\t\"complementary\",\n\t\t\"contentinfo\",\n\t\t\"definition\",\n\t\t\"deletion\",\n\t\t\"dialog\",\n\t\t\"directory\",\n\t\t\"document\",\n\t\t\"emphasis\",\n\t\t\"feed\",\n\t\t\"figure\",\n\t\t\"form\",\n\t\t\"generic\",\n\t\t\"grid\",\n\t\t\"gridcell\",\n\t\t\"group\",\n\t\t\"heading\",\n\t\t\"img\",\n\t\t\"insertion\",\n\t\t\"link\",\n\t\t\"list\",\n\t\t\"listbox\",\n\t\t\"listitem\",\n\t\t\"log\",\n\t\t\"main\",\n\t\t\"mark\",\n\t\t\"marquee\",\n\t\t\"math\",\n\t\t\"meter\",\n\t\t\"menu\",\n\t\t\"menubar\",\n\t\t\"menuitem\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"navigation\",\n\t\t\"none\",\n\t\t\"note\",\n\t\t\"option\",\n\t\t\"paragraph\",\n\t\t\"presentation\",\n\t\t\"progressbar\",\n\t\t\"radio\",\n\t\t\"radiogroup\",\n\t\t\"region\",\n\t\t\"row\",\n\t\t\"rowgroup\",\n\t\t\"rowheader\",\n\t\t\"scrollbar\",\n\t\t\"search\",\n\t\t\"searchbox\",\n\t\t\"separator\",\n\t\t\"slider\",\n\t\t\"spinbutton\",\n\t\t\"status\",\n\t\t\"strong\",\n\t\t\"subscript\",\n\t\t\"superscript\",\n\t\t\"switch\",\n\t\t\"tab\",\n\t\t\"table\",\n\t\t\"tablist\",\n\t\t\"tabpanel\",\n\t\t\"term\",\n\t\t\"textbox\",\n\t\t\"time\",\n\t\t\"timer\",\n\t\t\"toolbar\",\n\t\t\"tooltip\",\n\t\t\"tree\",\n\t\t\"treegrid\",\n\t\t\"treeitem\"\n\t];\n\tfunction getExplicitAriaRole(element) {\n\t\treturn (element.getAttribute(\"role\") || \"\").split(\" \").map((role) => role.trim()).find((role) => validRoles.includes(role)) || null;\n\t}\n\tfunction hasPresentationConflictResolution(element, role) {\n\t\treturn hasGlobalAriaAttribute(element, role) || isFocusable(element);\n\t}\n\tfunction getAriaRole(element) {\n\t\tconst explicitRole = getExplicitAriaRole(element);\n\t\tif (!explicitRole) return getImplicitAriaRole(element);\n\t\tif (explicitRole === \"none\" || explicitRole === \"presentation\") {\n\t\t\tconst implicitRole = getImplicitAriaRole(element);\n\t\t\tif (hasPresentationConflictResolution(element, implicitRole)) return implicitRole;\n\t\t}\n\t\treturn explicitRole;\n\t}\n\tfunction getAriaBoolean(attr) {\n\t\treturn attr === null ? void 0 : attr.toLowerCase() === \"true\";\n\t}\n\tfunction isElementIgnoredForAria(element) {\n\t\treturn [\n\t\t\t\"STYLE\",\n\t\t\t\"SCRIPT\",\n\t\t\t\"NOSCRIPT\",\n\t\t\t\"TEMPLATE\"\n\t\t].includes(elementSafeTagName(element));\n\t}\n\tfunction isElementHiddenForAria(element) {\n\t\tif (isElementIgnoredForAria(element)) return true;\n\t\tconst style = getElementComputedStyle(element);\n\t\tconst isSlot = element.nodeName === \"SLOT\";\n\t\tif (style?.display === \"contents\" && !isSlot) {\n\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) {\n\t\t\t\tif (child.nodeType === 1 && !isElementHiddenForAria(child)) return false;\n\t\t\t\tif (child.nodeType === 3 && isVisibleTextNode(child)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tif (!(element.nodeName === \"OPTION\" && !!element.closest(\"select\")) && !isSlot && !isElementStyleVisibilityVisible(element, style)) return true;\n\t\treturn belongsToDisplayNoneOrAriaHiddenOrNonSlotted(element);\n\t}\n\tfunction belongsToDisplayNoneOrAriaHiddenOrNonSlotted(element) {\n\t\tlet hidden = cacheIsHidden?.get(element);\n\t\tif (hidden === void 0) {\n\t\t\thidden = false;\n\t\t\tif (element.parentElement && element.parentElement.shadowRoot && !element.assignedSlot) hidden = true;\n\t\t\tif (!hidden) {\n\t\t\t\tconst style = getElementComputedStyle(element);\n\t\t\t\thidden = !style || style.display === \"none\" || getAriaBoolean(element.getAttribute(\"aria-hidden\")) === true;\n\t\t\t}\n\t\t\tif (!hidden) {\n\t\t\t\tconst parent = parentElementOrShadowHost(element);\n\t\t\t\tif (parent) hidden = belongsToDisplayNoneOrAriaHiddenOrNonSlotted(parent);\n\t\t\t}\n\t\t\tcacheIsHidden?.set(element, hidden);\n\t\t}\n\t\treturn hidden;\n\t}\n\tfunction getIdRefs(element, ref) {\n\t\tif (!ref) return [];\n\t\tconst root = enclosingShadowRootOrDocument(element);\n\t\tif (!root) return [];\n\t\ttry {\n\t\t\tconst ids = ref.split(\" \").filter((id) => !!id);\n\t\t\tconst result = [];\n\t\t\tfor (const id of ids) {\n\t\t\t\tconst firstElement = root.querySelector(\"#\" + CSS.escape(id));\n\t\t\t\tif (firstElement && !result.includes(firstElement)) result.push(firstElement);\n\t\t\t}\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\treturn [];\n\t\t}\n\t}\n\tfunction trimFlatString(s) {\n\t\treturn s.trim();\n\t}\n\tfunction asFlatString(s) {\n\t\treturn s.split(\"\\xA0\").map((chunk) => chunk.replace(/\\r\\n/g, \"\\n\").replace(/[\\u200b\\u00ad]/g, \"\").replace(/\\s\\s*/g, \" \")).join(\"\\xA0\").trim();\n\t}\n\tfunction queryInAriaOwned(element, selector) {\n\t\tconst result = [...element.querySelectorAll(selector)];\n\t\tfor (const owned of getIdRefs(element, element.getAttribute(\"aria-owns\"))) {\n\t\t\tif (owned.matches(selector)) result.push(owned);\n\t\t\tresult.push(...owned.querySelectorAll(selector));\n\t\t}\n\t\treturn result;\n\t}\n\tfunction getCSSContent(element, pseudo) {\n\t\tconst cache = pseudo === \"::before\" ? cachePseudoContentBefore : pseudo === \"::after\" ? cachePseudoContentAfter : cachePseudoContent;\n\t\tif (cache?.has(element)) return cache?.get(element);\n\t\tconst style = getElementComputedStyle(element, pseudo);\n\t\tlet content;\n\t\tif (style) {\n\t\t\tconst contentValue = style.content;\n\t\t\tif (contentValue && contentValue !== \"none\" && contentValue !== \"normal\") {\n\t\t\t\tif (style.display !== \"none\" && style.visibility !== \"hidden\") content = parseCSSContentPropertyAsString(element, contentValue, !!pseudo);\n\t\t\t}\n\t\t}\n\t\tif (pseudo && content !== void 0) {\n\t\t\tif ((style?.display || \"inline\") !== \"inline\") content = \" \" + content + \" \";\n\t\t}\n\t\tif (cache) cache.set(element, content);\n\t\treturn content;\n\t}\n\tfunction parseCSSContentPropertyAsString(element, content, isPseudo) {\n\t\tif (!content || content === \"none\" || content === \"normal\") return;\n\t\ttry {\n\t\t\tlet tokens = tokenize(content).filter((token) => !(token instanceof WhitespaceToken));\n\t\t\tconst delimIndex = tokens.findIndex((token) => token instanceof DelimToken && token.value === \"/\");\n\t\t\tif (delimIndex !== -1) tokens = tokens.slice(delimIndex + 1);\n\t\t\telse if (!isPseudo) return;\n\t\t\tconst accumulated = [];\n\t\t\tlet index = 0;\n\t\t\twhile (index < tokens.length) if (tokens[index] instanceof StringToken) {\n\t\t\t\taccumulated.push(tokens[index].value);\n\t\t\t\tindex++;\n\t\t\t} else if (index + 2 < tokens.length && tokens[index] instanceof FunctionToken && tokens[index].value === \"attr\" && tokens[index + 1] instanceof IdentToken && tokens[index + 2] instanceof CloseParenToken) {\n\t\t\t\tconst attrName = tokens[index + 1].value;\n\t\t\t\taccumulated.push(element.getAttribute(attrName) || \"\");\n\t\t\t\tindex += 3;\n\t\t\t} else return;\n\t\t\treturn accumulated.join(\"\");\n\t\t} catch {}\n\t}\n\tfunction getAriaLabelledByElements(element) {\n\t\tconst ref = element.getAttribute(\"aria-labelledby\");\n\t\tif (ref === null) return null;\n\t\tconst refs = getIdRefs(element, ref);\n\t\treturn refs.length ? refs : null;\n\t}\n\tfunction allowsNameFromContent(role, targetDescendant) {\n\t\tconst alwaysAllowsNameFromContent = [\n\t\t\t\"button\",\n\t\t\t\"cell\",\n\t\t\t\"checkbox\",\n\t\t\t\"columnheader\",\n\t\t\t\"gridcell\",\n\t\t\t\"heading\",\n\t\t\t\"link\",\n\t\t\t\"menuitem\",\n\t\t\t\"menuitemcheckbox\",\n\t\t\t\"menuitemradio\",\n\t\t\t\"option\",\n\t\t\t\"radio\",\n\t\t\t\"row\",\n\t\t\t\"rowheader\",\n\t\t\t\"switch\",\n\t\t\t\"tab\",\n\t\t\t\"tooltip\",\n\t\t\t\"treeitem\"\n\t\t].includes(role);\n\t\tconst descendantAllowsNameFromContent = targetDescendant && [\n\t\t\t\"\",\n\t\t\t\"caption\",\n\t\t\t\"code\",\n\t\t\t\"contentinfo\",\n\t\t\t\"definition\",\n\t\t\t\"deletion\",\n\t\t\t\"emphasis\",\n\t\t\t\"insertion\",\n\t\t\t\"list\",\n\t\t\t\"listitem\",\n\t\t\t\"mark\",\n\t\t\t\"none\",\n\t\t\t\"paragraph\",\n\t\t\t\"presentation\",\n\t\t\t\"region\",\n\t\t\t\"row\",\n\t\t\t\"rowgroup\",\n\t\t\t\"section\",\n\t\t\t\"strong\",\n\t\t\t\"subscript\",\n\t\t\t\"superscript\",\n\t\t\t\"table\",\n\t\t\t\"term\",\n\t\t\t\"time\"\n\t\t].includes(role);\n\t\treturn alwaysAllowsNameFromContent || descendantAllowsNameFromContent;\n\t}\n\tfunction getElementAccessibleName(element, includeHidden) {\n\t\tconst cache = includeHidden ? cacheAccessibleNameHidden : cacheAccessibleName;\n\t\tlet accessibleName = cache?.get(element);\n\t\tif (accessibleName === void 0) {\n\t\t\taccessibleName = \"\";\n\t\t\tif (![\n\t\t\t\t\"caption\",\n\t\t\t\t\"code\",\n\t\t\t\t\"definition\",\n\t\t\t\t\"deletion\",\n\t\t\t\t\"emphasis\",\n\t\t\t\t\"generic\",\n\t\t\t\t\"insertion\",\n\t\t\t\t\"mark\",\n\t\t\t\t\"paragraph\",\n\t\t\t\t\"presentation\",\n\t\t\t\t\"strong\",\n\t\t\t\t\"subscript\",\n\t\t\t\t\"suggestion\",\n\t\t\t\t\"superscript\",\n\t\t\t\t\"term\",\n\t\t\t\t\"time\"\n\t\t\t].includes(getAriaRole(element) || \"\")) accessibleName = asFlatString(getTextAlternativeInternal(element, {\n\t\t\t\tincludeHidden,\n\t\t\t\tvisitedElements: /* @__PURE__ */ new Set(),\n\t\t\t\tembeddedInTargetElement: \"self\"\n\t\t\t}));\n\t\t\tcache?.set(element, accessibleName);\n\t\t}\n\t\treturn accessibleName;\n\t}\n\tvar kAriaInvalidRoles = [\n\t\t\"application\",\n\t\t\"checkbox\",\n\t\t\"columnheader\",\n\t\t\"combobox\",\n\t\t\"gridcell\",\n\t\t\"listbox\",\n\t\t\"radiogroup\",\n\t\t\"rowheader\",\n\t\t\"searchbox\",\n\t\t\"slider\",\n\t\t\"spinbutton\",\n\t\t\"switch\",\n\t\t\"textbox\",\n\t\t\"tree\"\n\t];\n\tfunction getAriaInvalid(element) {\n\t\tconst ariaInvalid = element.getAttribute(\"aria-invalid\");\n\t\tif (!ariaInvalid || ariaInvalid.trim() === \"\" || ariaInvalid.toLocaleLowerCase() === \"false\") return \"false\";\n\t\tif (ariaInvalid === \"true\" || ariaInvalid === \"grammar\" || ariaInvalid === \"spelling\") return ariaInvalid;\n\t\treturn \"true\";\n\t}\n\tfunction getTextAlternativeInternal(element, options) {\n\t\tif (options.visitedElements.has(element)) return \"\";\n\t\tconst childOptions = {\n\t\t\t...options,\n\t\t\tembeddedInTargetElement: options.embeddedInTargetElement === \"self\" ? \"descendant\" : options.embeddedInTargetElement\n\t\t};\n\t\tif (!options.includeHidden) {\n\t\t\tconst isEmbeddedInHiddenReferenceTraversal = !!options.embeddedInLabelledBy?.hidden || !!options.embeddedInDescribedBy?.hidden || !!options.embeddedInNativeTextAlternative?.hidden || !!options.embeddedInLabel?.hidden;\n\t\t\tif (isElementIgnoredForAria(element) || !isEmbeddedInHiddenReferenceTraversal && isElementHiddenForAria(element)) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t\tconst labelledBy = getAriaLabelledByElements(element);\n\t\tif (!options.embeddedInLabelledBy) {\n\t\t\tconst accessibleName = (labelledBy || []).map((ref) => getTextAlternativeInternal(ref, {\n\t\t\t\t...options,\n\t\t\t\tembeddedInLabelledBy: {\n\t\t\t\t\telement: ref,\n\t\t\t\t\thidden: isElementHiddenForAria(ref)\n\t\t\t\t},\n\t\t\t\tembeddedInDescribedBy: void 0,\n\t\t\t\tembeddedInTargetElement: void 0,\n\t\t\t\tembeddedInLabel: void 0,\n\t\t\t\tembeddedInNativeTextAlternative: void 0\n\t\t\t})).join(\" \");\n\t\t\tif (accessibleName) return accessibleName;\n\t\t}\n\t\tconst role = getAriaRole(element) || \"\";\n\t\tconst tagName = elementSafeTagName(element);\n\t\tif (!!options.embeddedInLabel || !!options.embeddedInLabelledBy || options.embeddedInTargetElement === \"descendant\") {\n\t\t\tconst isOwnLabel = [...element.labels || []].includes(element);\n\t\t\tconst isOwnLabelledBy = (labelledBy || []).includes(element);\n\t\t\tif (!isOwnLabel && !isOwnLabelledBy) {\n\t\t\t\tif (role === \"textbox\") {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\tif (tagName === \"INPUT\" || tagName === \"TEXTAREA\") return element.value;\n\t\t\t\t\treturn element.textContent || \"\";\n\t\t\t\t}\n\t\t\t\tif ([\"combobox\", \"listbox\"].includes(role)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\tlet selectedOptions;\n\t\t\t\t\tif (tagName === \"SELECT\") {\n\t\t\t\t\t\tselectedOptions = [...element.selectedOptions];\n\t\t\t\t\t\tif (!selectedOptions.length && element.options.length) selectedOptions.push(element.options[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst listbox = role === \"combobox\" ? queryInAriaOwned(element, \"*\").find((e) => getAriaRole(e) === \"listbox\") : element;\n\t\t\t\t\t\tselectedOptions = listbox ? queryInAriaOwned(listbox, \"[aria-selected=\\\"true\\\"]\").filter((e) => getAriaRole(e) === \"option\") : [];\n\t\t\t\t\t}\n\t\t\t\t\tif (!selectedOptions.length && tagName === \"INPUT\") return element.value;\n\t\t\t\t\treturn selectedOptions.map((option) => getTextAlternativeInternal(option, childOptions)).join(\" \");\n\t\t\t\t}\n\t\t\t\tif ([\n\t\t\t\t\t\"progressbar\",\n\t\t\t\t\t\"scrollbar\",\n\t\t\t\t\t\"slider\",\n\t\t\t\t\t\"spinbutton\",\n\t\t\t\t\t\"meter\"\n\t\t\t\t].includes(role)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\tif (element.hasAttribute(\"aria-valuetext\")) return element.getAttribute(\"aria-valuetext\") || \"\";\n\t\t\t\t\tif (element.hasAttribute(\"aria-valuenow\")) return element.getAttribute(\"aria-valuenow\") || \"\";\n\t\t\t\t\treturn element.getAttribute(\"value\") || \"\";\n\t\t\t\t}\n\t\t\t\tif ([\"menu\"].includes(role)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst ariaLabel = element.getAttribute(\"aria-label\") || \"\";\n\t\tif (trimFlatString(ariaLabel)) {\n\t\t\toptions.visitedElements.add(element);\n\t\t\treturn ariaLabel;\n\t\t}\n\t\tif (![\"presentation\", \"none\"].includes(role)) {\n\t\t\tif (tagName === \"INPUT\" && [\n\t\t\t\t\"button\",\n\t\t\t\t\"submit\",\n\t\t\t\t\"reset\"\n\t\t\t].includes(element.type)) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst value = element.value || \"\";\n\t\t\t\tif (trimFlatString(value)) return value;\n\t\t\t\tif (element.type === \"submit\") return \"Submit\";\n\t\t\t\tif (element.type === \"reset\") return \"Reset\";\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"INPUT\" && element.type === \"file\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length && !options.embeddedInLabelledBy) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\treturn \"Choose File\";\n\t\t\t}\n\t\t\tif (tagName === \"INPUT\" && element.type === \"image\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length && !options.embeddedInLabelledBy) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\tconst alt = element.getAttribute(\"alt\") || \"\";\n\t\t\t\tif (trimFlatString(alt)) return alt;\n\t\t\t\tconst title = element.getAttribute(\"title\") || \"\";\n\t\t\t\tif (trimFlatString(title)) return title;\n\t\t\t\treturn \"Submit\";\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"BUTTON\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"OUTPUT\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (!labelledBy && (tagName === \"TEXTAREA\" || tagName === \"SELECT\" || tagName === \"INPUT\")) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\tconst usePlaceholder = tagName === \"INPUT\" && [\n\t\t\t\t\t\"text\",\n\t\t\t\t\t\"password\",\n\t\t\t\t\t\"search\",\n\t\t\t\t\t\"tel\",\n\t\t\t\t\t\"email\",\n\t\t\t\t\t\"url\"\n\t\t\t\t].includes(element.type) || tagName === \"TEXTAREA\";\n\t\t\t\tconst placeholder = element.getAttribute(\"placeholder\") || \"\";\n\t\t\t\tconst title = element.getAttribute(\"title\") || \"\";\n\t\t\t\tif (!usePlaceholder || title) return title;\n\t\t\t\treturn placeholder;\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"FIELDSET\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"LEGEND\") return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInNativeTextAlternative: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"FIGURE\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"FIGCAPTION\") return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInNativeTextAlternative: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"IMG\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst alt = element.getAttribute(\"alt\") || \"\";\n\t\t\t\tif (trimFlatString(alt)) return alt;\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"TABLE\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"CAPTION\") return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInNativeTextAlternative: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst summary = element.getAttribute(\"summary\") || \"\";\n\t\t\t\tif (summary) return summary;\n\t\t\t}\n\t\t\tif (tagName === \"AREA\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst alt = element.getAttribute(\"alt\") || \"\";\n\t\t\t\tif (trimFlatString(alt)) return alt;\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"SVG\" || element.ownerSVGElement) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"TITLE\" && child.ownerSVGElement) return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInLabelledBy: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (element.ownerSVGElement && tagName === \"A\") {\n\t\t\t\tconst title = element.getAttribute(\"xlink:title\") || \"\";\n\t\t\t\tif (trimFlatString(title)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\treturn title;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst shouldNameFromContentForSummary = tagName === \"SUMMARY\" && ![\"presentation\", \"none\"].includes(role);\n\t\tif (allowsNameFromContent(role, options.embeddedInTargetElement === \"descendant\") || shouldNameFromContentForSummary || !!options.embeddedInLabelledBy || !!options.embeddedInDescribedBy || !!options.embeddedInLabel || !!options.embeddedInNativeTextAlternative) {\n\t\t\toptions.visitedElements.add(element);\n\t\t\tconst accessibleName = innerAccumulatedElementText(element, childOptions);\n\t\t\tif (options.embeddedInTargetElement === \"self\" ? trimFlatString(accessibleName) : accessibleName) return accessibleName;\n\t\t}\n\t\tif (![\"presentation\", \"none\"].includes(role) || tagName === \"IFRAME\") {\n\t\t\toptions.visitedElements.add(element);\n\t\t\tconst title = element.getAttribute(\"title\") || \"\";\n\t\t\tif (trimFlatString(title)) return title;\n\t\t}\n\t\toptions.visitedElements.add(element);\n\t\treturn \"\";\n\t}\n\tfunction innerAccumulatedElementText(element, options) {\n\t\tconst tokens = [];\n\t\tconst visit = (node, skipSlotted) => {\n\t\t\tif (skipSlotted && node.assignedSlot) return;\n\t\t\tif (node.nodeType === 1) {\n\t\t\t\tconst display = getElementComputedStyle(node)?.display || \"inline\";\n\t\t\t\tlet token = getTextAlternativeInternal(node, options);\n\t\t\t\tif (display !== \"inline\" || node.nodeName === \"BR\") token = \" \" + token + \" \";\n\t\t\t\ttokens.push(token);\n\t\t\t} else if (node.nodeType === 3) tokens.push(node.textContent || \"\");\n\t\t};\n\t\ttokens.push(getCSSContent(element, \"::before\") || \"\");\n\t\tconst content = getCSSContent(element);\n\t\tif (content !== void 0) tokens.push(content);\n\t\telse {\n\t\t\tconst assignedNodes = element.nodeName === \"SLOT\" ? element.assignedNodes() : [];\n\t\t\tif (assignedNodes.length) for (const child of assignedNodes) visit(child, false);\n\t\t\telse {\n\t\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) visit(child, true);\n\t\t\t\tif (element.shadowRoot) for (let child = element.shadowRoot.firstChild; child; child = child.nextSibling) visit(child, true);\n\t\t\t\tfor (const owned of getIdRefs(element, element.getAttribute(\"aria-owns\"))) visit(owned, true);\n\t\t\t}\n\t\t}\n\t\ttokens.push(getCSSContent(element, \"::after\") || \"\");\n\t\treturn tokens.join(\"\");\n\t}\n\tvar kAriaSelectedRoles = [\n\t\t\"gridcell\",\n\t\t\"option\",\n\t\t\"row\",\n\t\t\"tab\",\n\t\t\"rowheader\",\n\t\t\"columnheader\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaSelected(element) {\n\t\tif (elementSafeTagName(element) === \"OPTION\") return element.selected;\n\t\tif (kAriaSelectedRoles.includes(getAriaRole(element) || \"\")) return getAriaBoolean(element.getAttribute(\"aria-selected\")) === true;\n\t\treturn false;\n\t}\n\tvar kAriaCheckedRoles = [\n\t\t\"checkbox\",\n\t\t\"menuitemcheckbox\",\n\t\t\"option\",\n\t\t\"radio\",\n\t\t\"switch\",\n\t\t\"menuitemradio\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaChecked(element) {\n\t\tconst result = getChecked(element, true);\n\t\treturn result === \"error\" ? false : result;\n\t}\n\tfunction getChecked(element, allowMixed) {\n\t\tconst tagName = elementSafeTagName(element);\n\t\tif (allowMixed && tagName === \"INPUT\" && element.indeterminate) return \"mixed\";\n\t\tif (tagName === \"INPUT\" && [\"checkbox\", \"radio\"].includes(element.type)) return element.checked;\n\t\tif (kAriaCheckedRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst checked = element.getAttribute(\"aria-checked\");\n\t\t\tif (checked === \"true\") return true;\n\t\t\tif (allowMixed && checked === \"mixed\") return \"mixed\";\n\t\t\treturn false;\n\t\t}\n\t\treturn \"error\";\n\t}\n\tvar kAriaPressedRoles = [\"button\"];\n\tfunction getAriaPressed(element) {\n\t\tif (kAriaPressedRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst pressed = element.getAttribute(\"aria-pressed\");\n\t\t\tif (pressed === \"true\") return true;\n\t\t\tif (pressed === \"mixed\") return \"mixed\";\n\t\t}\n\t\treturn false;\n\t}\n\tvar kAriaExpandedRoles = [\n\t\t\"application\",\n\t\t\"button\",\n\t\t\"checkbox\",\n\t\t\"combobox\",\n\t\t\"gridcell\",\n\t\t\"link\",\n\t\t\"listbox\",\n\t\t\"menuitem\",\n\t\t\"row\",\n\t\t\"rowheader\",\n\t\t\"tab\",\n\t\t\"treeitem\",\n\t\t\"columnheader\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"rowheader\",\n\t\t\"switch\"\n\t];\n\tfunction getAriaExpanded(element) {\n\t\tif (elementSafeTagName(element) === \"DETAILS\") return element.open;\n\t\tif (kAriaExpandedRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst expanded = element.getAttribute(\"aria-expanded\");\n\t\t\tif (expanded === null) return void 0;\n\t\t\tif (expanded === \"true\") return true;\n\t\t\treturn false;\n\t\t}\n\t}\n\tvar kAriaLevelRoles = [\n\t\t\"heading\",\n\t\t\"listitem\",\n\t\t\"row\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaLevel(element) {\n\t\tconst native = {\n\t\t\t\"H1\": 1,\n\t\t\t\"H2\": 2,\n\t\t\t\"H3\": 3,\n\t\t\t\"H4\": 4,\n\t\t\t\"H5\": 5,\n\t\t\t\"H6\": 6\n\t\t}[elementSafeTagName(element)];\n\t\tif (native) return native;\n\t\tif (kAriaLevelRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst attr = element.getAttribute(\"aria-level\");\n\t\t\tconst value = attr === null ? NaN : Number(attr);\n\t\t\tif (Number.isInteger(value) && value >= 1) return value;\n\t\t}\n\t\treturn 0;\n\t}\n\tvar kAriaDisabledRoles = [\n\t\t\"application\",\n\t\t\"button\",\n\t\t\"composite\",\n\t\t\"gridcell\",\n\t\t\"group\",\n\t\t\"input\",\n\t\t\"link\",\n\t\t\"menuitem\",\n\t\t\"scrollbar\",\n\t\t\"separator\",\n\t\t\"tab\",\n\t\t\"checkbox\",\n\t\t\"columnheader\",\n\t\t\"combobox\",\n\t\t\"grid\",\n\t\t\"listbox\",\n\t\t\"menu\",\n\t\t\"menubar\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"option\",\n\t\t\"radio\",\n\t\t\"radiogroup\",\n\t\t\"row\",\n\t\t\"rowheader\",\n\t\t\"searchbox\",\n\t\t\"select\",\n\t\t\"slider\",\n\t\t\"spinbutton\",\n\t\t\"switch\",\n\t\t\"tablist\",\n\t\t\"textbox\",\n\t\t\"toolbar\",\n\t\t\"tree\",\n\t\t\"treegrid\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaDisabled(element) {\n\t\treturn isNativelyDisabled(element) || hasExplicitAriaDisabled(element);\n\t}\n\tfunction isNativelyDisabled(element) {\n\t\treturn [\n\t\t\t\"BUTTON\",\n\t\t\t\"INPUT\",\n\t\t\t\"SELECT\",\n\t\t\t\"TEXTAREA\",\n\t\t\t\"OPTION\",\n\t\t\t\"OPTGROUP\"\n\t\t].includes(elementSafeTagName(element)) && (element.hasAttribute(\"disabled\") || belongsToDisabledOptGroup(element) || belongsToDisabledFieldSet(element));\n\t}\n\tfunction belongsToDisabledOptGroup(element) {\n\t\treturn elementSafeTagName(element) === \"OPTION\" && !!element.closest(\"OPTGROUP[DISABLED]\");\n\t}\n\tfunction belongsToDisabledFieldSet(element) {\n\t\tconst fieldSetElement = element?.closest(\"FIELDSET[DISABLED]\");\n\t\tif (!fieldSetElement) return false;\n\t\tconst legendElement = fieldSetElement.querySelector(\":scope > LEGEND\");\n\t\treturn !legendElement || !legendElement.contains(element);\n\t}\n\tfunction hasExplicitAriaDisabled(element, isAncestor = false) {\n\t\tif (!element) return false;\n\t\tif (isAncestor || kAriaDisabledRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst attribute = (element.getAttribute(\"aria-disabled\") || \"\").toLowerCase();\n\t\t\tif (attribute === \"true\") return true;\n\t\t\tif (attribute === \"false\") return false;\n\t\t\treturn hasExplicitAriaDisabled(parentElementOrShadowHost(element), true);\n\t\t}\n\t\treturn false;\n\t}\n\tfunction getAccessibleNameFromAssociatedLabels(labels, options) {\n\t\treturn [...labels].map((label) => getTextAlternativeInternal(label, {\n\t\t\t...options,\n\t\t\tembeddedInLabel: {\n\t\t\t\telement: label,\n\t\t\t\thidden: isElementHiddenForAria(label)\n\t\t\t},\n\t\t\tembeddedInNativeTextAlternative: void 0,\n\t\t\tembeddedInLabelledBy: void 0,\n\t\t\tembeddedInDescribedBy: void 0,\n\t\t\tembeddedInTargetElement: void 0\n\t\t})).filter((accessibleName) => !!accessibleName).join(\" \");\n\t}\n\tfunction receivesPointerEvents(element) {\n\t\tconst cache = cachePointerEvents;\n\t\tlet e = element;\n\t\tlet result;\n\t\tconst parents = [];\n\t\tfor (; e; e = parentElementOrShadowHost(e)) {\n\t\t\tconst cached = cache.get(e);\n\t\t\tif (cached !== void 0) {\n\t\t\t\tresult = cached;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tparents.push(e);\n\t\t\tconst style = getElementComputedStyle(e);\n\t\t\tif (!style) {\n\t\t\t\tresult = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst value = style.pointerEvents;\n\t\t\tif (value) {\n\t\t\t\tresult = value !== \"none\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (result === void 0) result = true;\n\t\tfor (const parent of parents) cache.set(parent, result);\n\t\treturn result;\n\t}\n\tvar cacheAccessibleName;\n\tvar cacheAccessibleNameHidden;\n\tvar cacheAccessibleDescription;\n\tvar cacheAccessibleDescriptionHidden;\n\tvar cacheAccessibleErrorMessage;\n\tvar cacheIsHidden;\n\tvar cachePseudoContent;\n\tvar cachePseudoContentBefore;\n\tvar cachePseudoContentAfter;\n\tvar cachePointerEvents;\n\tvar cachesCounter = 0;\n\tfunction beginAriaCaches() {\n\t\tbeginDOMCaches();\n\t\t++cachesCounter;\n\t\tcacheAccessibleName ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleNameHidden ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleDescription ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleDescriptionHidden ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleErrorMessage ??= /* @__PURE__ */ new Map();\n\t\tcacheIsHidden ??= /* @__PURE__ */ new Map();\n\t\tcachePseudoContent ??= /* @__PURE__ */ new Map();\n\t\tcachePseudoContentBefore ??= /* @__PURE__ */ new Map();\n\t\tcachePseudoContentAfter ??= /* @__PURE__ */ new Map();\n\t\tcachePointerEvents ??= /* @__PURE__ */ new Map();\n\t}\n\tfunction endAriaCaches() {\n\t\tif (!--cachesCounter) {\n\t\t\tcacheAccessibleName = void 0;\n\t\t\tcacheAccessibleNameHidden = void 0;\n\t\t\tcacheAccessibleDescription = void 0;\n\t\t\tcacheAccessibleDescriptionHidden = void 0;\n\t\t\tcacheAccessibleErrorMessage = void 0;\n\t\t\tcacheIsHidden = void 0;\n\t\t\tcachePseudoContent = void 0;\n\t\t\tcachePseudoContentBefore = void 0;\n\t\t\tcachePseudoContentAfter = void 0;\n\t\t\tcachePointerEvents = void 0;\n\t\t}\n\t\tendDOMCaches();\n\t}\n\tvar inputTypeToRole = {\n\t\t\"button\": \"button\",\n\t\t\"checkbox\": \"checkbox\",\n\t\t\"image\": \"button\",\n\t\t\"number\": \"spinbutton\",\n\t\t\"radio\": \"radio\",\n\t\t\"range\": \"slider\",\n\t\t\"reset\": \"button\",\n\t\t\"submit\": \"button\"\n\t};\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/ariaSnapshot.ts\n\t/**\n\t* Copyright (c) Microsoft Corporation.\n\t*\n\t* Licensed under the Apache License, Version 2.0 (the \"License\");\n\t* you may not use this file except in compliance with the License.\n\t* You may obtain a copy of the License at\n\t*\n\t* http://www.apache.org/licenses/LICENSE-2.0\n\t*\n\t* Unless required by applicable law or agreed to in writing, software\n\t* distributed under the License is distributed on an \"AS IS\" BASIS,\n\t* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t* See the License for the specific language governing permissions and\n\t* limitations under the License.\n\t*/\n\tvar lastRef = 0;\n\tfunction toInternalOptions(options) {\n\t\tconst renderBoxes = options.boxes;\n\t\tif (options.mode === \"ai\") return {\n\t\t\tvisibility: \"ariaOrVisible\",\n\t\t\trefs: \"interactable\",\n\t\t\trefPrefix: options.refPrefix,\n\t\t\tincludeGenericRole: true,\n\t\t\trenderActive: !options.doNotRenderActive,\n\t\t\trenderCursorPointer: true,\n\t\t\trenderBoxes\n\t\t};\n\t\tif (options.mode === \"autoexpect\") return {\n\t\t\tvisibility: \"ariaAndVisible\",\n\t\t\trefs: \"none\",\n\t\t\trenderBoxes\n\t\t};\n\t\tif (options.mode === \"codegen\") return {\n\t\t\tvisibility: \"aria\",\n\t\t\trefs: \"none\",\n\t\t\trenderStringsAsRegex: true,\n\t\t\trenderBoxes\n\t\t};\n\t\treturn {\n\t\t\tvisibility: \"aria\",\n\t\t\trefs: \"none\",\n\t\t\trenderBoxes\n\t\t};\n\t}\n\tfunction generateAriaTree(rootElement, publicOptions) {\n\t\tconst options = toInternalOptions(publicOptions);\n\t\tconst visited = /* @__PURE__ */ new Set();\n\t\tconst snapshot = {\n\t\t\troot: {\n\t\t\t\trole: \"fragment\",\n\t\t\t\tname: \"\",\n\t\t\t\tchildren: [],\n\t\t\t\tprops: {},\n\t\t\t\tbox: computeBox(rootElement),\n\t\t\t\treceivesPointerEvents: true\n\t\t\t},\n\t\t\telements: /* @__PURE__ */ new Map(),\n\t\t\trefs: /* @__PURE__ */ new Map(),\n\t\t\tiframeRefs: []\n\t\t};\n\t\tsetAriaNodeElement(snapshot.root, rootElement);\n\t\tconst visit = (ariaNode, node, parentElementVisible) => {\n\t\t\tif (visited.has(node)) return;\n\t\t\tvisited.add(node);\n\t\t\tif (node.nodeType === Node.TEXT_NODE && node.nodeValue) {\n\t\t\t\tif (!parentElementVisible) return;\n\t\t\t\tconst text = node.nodeValue;\n\t\t\t\tif (ariaNode.role !== \"textbox\" && text) ariaNode.children.push(node.nodeValue || \"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (node.nodeType !== Node.ELEMENT_NODE) return;\n\t\t\tconst element = node;\n\t\t\tconst isElementVisibleForAria = !isElementHiddenForAria(element);\n\t\t\tlet visible = isElementVisibleForAria;\n\t\t\tif (options.visibility === \"ariaOrVisible\") visible = isElementVisibleForAria || isElementVisible(element);\n\t\t\tif (options.visibility === \"ariaAndVisible\") visible = isElementVisibleForAria && isElementVisible(element);\n\t\t\tif (options.visibility === \"aria\" && !visible) return;\n\t\t\tconst ariaChildren = [];\n\t\t\tif (element.hasAttribute(\"aria-owns\")) {\n\t\t\t\tconst ids = element.getAttribute(\"aria-owns\").split(/\\s+/);\n\t\t\t\tfor (const id of ids) {\n\t\t\t\t\tconst ownedElement = rootElement.ownerDocument.getElementById(id);\n\t\t\t\t\tif (ownedElement) ariaChildren.push(ownedElement);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst childAriaNode = visible ? toAriaNode(element, options) : null;\n\t\t\tif (childAriaNode) {\n\t\t\t\tif (childAriaNode.ref) {\n\t\t\t\t\tsnapshot.elements.set(childAriaNode.ref, element);\n\t\t\t\t\tsnapshot.refs.set(element, childAriaNode.ref);\n\t\t\t\t\tif (childAriaNode.role === \"iframe\") snapshot.iframeRefs.push(childAriaNode.ref);\n\t\t\t\t}\n\t\t\t\tariaNode.children.push(childAriaNode);\n\t\t\t}\n\t\t\tprocessElement(childAriaNode || ariaNode, element, ariaChildren, visible);\n\t\t};\n\t\tfunction processElement(ariaNode, element, ariaChildren, parentElementVisible) {\n\t\t\tconst treatAsBlock = (getElementComputedStyle(element)?.display || \"inline\") !== \"inline\" || element.nodeName === \"BR\" ? \" \" : \"\";\n\t\t\tif (treatAsBlock) ariaNode.children.push(treatAsBlock);\n\t\t\tariaNode.children.push(getCSSContent(element, \"::before\") || \"\");\n\t\t\tconst assignedNodes = element.nodeName === \"SLOT\" ? element.assignedNodes() : [];\n\t\t\tif (assignedNodes.length) for (const child of assignedNodes) visit(ariaNode, child, parentElementVisible);\n\t\t\telse {\n\t\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) if (!child.assignedSlot) visit(ariaNode, child, parentElementVisible);\n\t\t\t\tif (element.shadowRoot) for (let child = element.shadowRoot.firstChild; child; child = child.nextSibling) visit(ariaNode, child, parentElementVisible);\n\t\t\t}\n\t\t\tfor (const child of ariaChildren) visit(ariaNode, child, parentElementVisible);\n\t\t\tariaNode.children.push(getCSSContent(element, \"::after\") || \"\");\n\t\t\tif (treatAsBlock) ariaNode.children.push(treatAsBlock);\n\t\t\tif (ariaNode.children.length === 1 && ariaNode.name === ariaNode.children[0]) ariaNode.children = [];\n\t\t\tif (ariaNode.role === \"link\" && element.hasAttribute(\"href\")) {\n\t\t\t\tconst href = element.getAttribute(\"href\");\n\t\t\t\tariaNode.props[\"url\"] = href;\n\t\t\t}\n\t\t\tif (ariaNode.role === \"textbox\" && element.hasAttribute(\"placeholder\") && element.getAttribute(\"placeholder\") !== ariaNode.name) {\n\t\t\t\tconst placeholder = element.getAttribute(\"placeholder\");\n\t\t\t\tariaNode.props[\"placeholder\"] = placeholder;\n\t\t\t}\n\t\t}\n\t\tbeginAriaCaches();\n\t\ttry {\n\t\t\tvisit(snapshot.root, rootElement, true);\n\t\t} finally {\n\t\t\tendAriaCaches();\n\t\t}\n\t\tnormalizeStringChildren(snapshot.root);\n\t\tnormalizeGenericRoles(snapshot.root);\n\t\treturn snapshot;\n\t}\n\tfunction computeAriaRef(ariaNode, options) {\n\t\tif (options.refs === \"none\") return;\n\t\tif (options.refs === \"interactable\" && (!ariaNode.box.visible || !ariaNode.receivesPointerEvents)) return;\n\t\tconst element = ariaNodeElement(ariaNode);\n\t\tlet ariaRef = element._ariaRef;\n\t\tif (!ariaRef || ariaRef.role !== ariaNode.role || ariaRef.name !== ariaNode.name) {\n\t\t\tariaRef = {\n\t\t\t\trole: ariaNode.role,\n\t\t\t\tname: ariaNode.name,\n\t\t\t\tref: (options.refPrefix ?? \"\") + \"e\" + ++lastRef\n\t\t\t};\n\t\t\telement._ariaRef = ariaRef;\n\t\t}\n\t\tariaNode.ref = ariaRef.ref;\n\t}\n\tfunction toAriaNode(element, options) {\n\t\tconst active = element.ownerDocument.activeElement === element;\n\t\tif (element.nodeName === \"IFRAME\") {\n\t\t\tconst ariaNode = {\n\t\t\t\trole: \"iframe\",\n\t\t\t\tname: \"\",\n\t\t\t\tchildren: [],\n\t\t\t\tprops: {},\n\t\t\t\tbox: computeBox(element),\n\t\t\t\treceivesPointerEvents: true,\n\t\t\t\tactive\n\t\t\t};\n\t\t\tsetAriaNodeElement(ariaNode, element);\n\t\t\tcomputeAriaRef(ariaNode, options);\n\t\t\treturn ariaNode;\n\t\t}\n\t\tconst defaultRole = options.includeGenericRole ? \"generic\" : null;\n\t\tconst role = getAriaRole(element) ?? defaultRole;\n\t\tif (!role || role === \"presentation\" || role === \"none\") return null;\n\t\tconst name = normalizeWhiteSpace(getElementAccessibleName(element, false) || \"\");\n\t\tconst receivesPointerEvents$1 = receivesPointerEvents(element);\n\t\tconst box = computeBox(element);\n\t\tif (role === \"generic\" && box.inline && element.childNodes.length === 1 && element.childNodes[0].nodeType === Node.TEXT_NODE) return null;\n\t\tconst result = {\n\t\t\trole,\n\t\t\tname,\n\t\t\tchildren: [],\n\t\t\tprops: {},\n\t\t\tbox,\n\t\t\treceivesPointerEvents: receivesPointerEvents$1,\n\t\t\tactive\n\t\t};\n\t\tsetAriaNodeElement(result, element);\n\t\tcomputeAriaRef(result, options);\n\t\tif (kAriaCheckedRoles.includes(role)) result.checked = getAriaChecked(element);\n\t\tif (kAriaDisabledRoles.includes(role)) result.disabled = getAriaDisabled(element);\n\t\tif (kAriaExpandedRoles.includes(role)) result.expanded = getAriaExpanded(element);\n\t\tif (kAriaInvalidRoles.includes(role)) {\n\t\t\tconst invalid = getAriaInvalid(element);\n\t\t\tresult.invalid = invalid === \"false\" ? false : invalid === \"true\" ? true : invalid;\n\t\t}\n\t\tif (kAriaLevelRoles.includes(role)) result.level = getAriaLevel(element);\n\t\tif (kAriaPressedRoles.includes(role)) result.pressed = getAriaPressed(element);\n\t\tif (kAriaSelectedRoles.includes(role)) result.selected = getAriaSelected(element);\n\t\tif (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n\t\t\tif (element.type !== \"checkbox\" && element.type !== \"radio\" && element.type !== \"file\") result.children = [element.value];\n\t\t}\n\t\treturn result;\n\t}\n\tfunction normalizeGenericRoles(node) {\n\t\tconst normalizeChildren = (node) => {\n\t\t\tconst result = [];\n\t\t\tfor (const child of node.children || []) {\n\t\t\t\tif (typeof child === \"string\") {\n\t\t\t\t\tresult.push(child);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst normalized = normalizeChildren(child);\n\t\t\t\tresult.push(...normalized);\n\t\t\t}\n\t\t\tif (node.role === \"generic\" && !node.name && result.length <= 1 && result.every((c) => typeof c !== \"string\" && !!c.ref)) return result;\n\t\t\tnode.children = result;\n\t\t\treturn [node];\n\t\t};\n\t\tnormalizeChildren(node);\n\t}\n\tfunction normalizeStringChildren(rootA11yNode) {\n\t\tconst flushChildren = (buffer, normalizedChildren) => {\n\t\t\tif (!buffer.length) return;\n\t\t\tconst text = normalizeWhiteSpace(buffer.join(\"\"));\n\t\t\tif (text) normalizedChildren.push(text);\n\t\t\tbuffer.length = 0;\n\t\t};\n\t\tconst visit = (ariaNode) => {\n\t\t\tconst normalizedChildren = [];\n\t\t\tconst buffer = [];\n\t\t\tfor (const child of ariaNode.children || []) if (typeof child === \"string\") buffer.push(child);\n\t\t\telse {\n\t\t\t\tflushChildren(buffer, normalizedChildren);\n\t\t\t\tvisit(child);\n\t\t\t\tnormalizedChildren.push(child);\n\t\t\t}\n\t\t\tflushChildren(buffer, normalizedChildren);\n\t\t\tariaNode.children = normalizedChildren.length ? normalizedChildren : [];\n\t\t\tif (ariaNode.children.length === 1 && ariaNode.children[0] === ariaNode.name) ariaNode.children = [];\n\t\t};\n\t\tvisit(rootA11yNode);\n\t}\n\tfunction buildByRefMap(root, map = /* @__PURE__ */ new Map()) {\n\t\tif (root?.ref) map.set(root.ref, root);\n\t\tfor (const child of root?.children || []) if (typeof child !== \"string\") buildByRefMap(child, map);\n\t\treturn map;\n\t}\n\tfunction compareSnapshots(ariaSnapshot, previousSnapshot) {\n\t\tconst previousByRef = buildByRefMap(previousSnapshot?.root);\n\t\tconst result = /* @__PURE__ */ new Map();\n\t\tconst visit = (ariaNode, previousNode) => {\n\t\t\tlet same = ariaNode.children.length === previousNode?.children.length && ariaNodesEqual(ariaNode, previousNode);\n\t\t\tlet canBeSkipped = same;\n\t\t\tfor (let childIndex = 0; childIndex < ariaNode.children.length; childIndex++) {\n\t\t\t\tconst child = ariaNode.children[childIndex];\n\t\t\t\tconst previousChild = previousNode?.children[childIndex];\n\t\t\t\tif (typeof child === \"string\") {\n\t\t\t\t\tsame &&= child === previousChild;\n\t\t\t\t\tcanBeSkipped &&= child === previousChild;\n\t\t\t\t} else {\n\t\t\t\t\tlet previous = typeof previousChild !== \"string\" ? previousChild : void 0;\n\t\t\t\t\tif (child.ref) previous = previousByRef.get(child.ref);\n\t\t\t\t\tconst sameChild = visit(child, previous);\n\t\t\t\t\tif (!previous || !sameChild && !child.ref || previous !== previousChild) canBeSkipped = false;\n\t\t\t\t\tsame &&= sameChild && previous === previousChild;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.set(ariaNode, same ? \"same\" : canBeSkipped ? \"skip\" : \"changed\");\n\t\t\treturn same;\n\t\t};\n\t\tvisit(ariaSnapshot.root, previousByRef.get(previousSnapshot?.root?.ref));\n\t\treturn result;\n\t}\n\tfunction filterSnapshotDiff(nodes, statusMap) {\n\t\tconst result = [];\n\t\tconst visit = (ariaNode) => {\n\t\t\tconst status = statusMap.get(ariaNode);\n\t\t\tif (status === \"same\") {} else if (status === \"skip\") {\n\t\t\t\tfor (const child of ariaNode.children) if (typeof child !== \"string\") visit(child);\n\t\t\t} else result.push(ariaNode);\n\t\t};\n\t\tfor (const node of nodes) if (typeof node === \"string\") result.push(node);\n\t\telse visit(node);\n\t\treturn result;\n\t}\n\tfunction indent(depth) {\n\t\treturn \" \".repeat(depth);\n\t}\n\tfunction renderAriaTree(ariaSnapshot, publicOptions, previousSnapshot) {\n\t\tconst options = toInternalOptions(publicOptions);\n\t\tconst lines = [];\n\t\tconst iframeDepths = {};\n\t\tconst includeText = options.renderStringsAsRegex ? textContributesInfo : () => true;\n\t\tconst renderString = options.renderStringsAsRegex ? convertToBestGuessRegex : (str) => str;\n\t\tlet nodesToRender = ariaSnapshot.root.role === \"fragment\" ? ariaSnapshot.root.children : [ariaSnapshot.root];\n\t\tconst statusMap = compareSnapshots(ariaSnapshot, previousSnapshot);\n\t\tif (previousSnapshot) nodesToRender = filterSnapshotDiff(nodesToRender, statusMap);\n\t\tconst visitText = (text, depth) => {\n\t\t\tif (publicOptions.depth && depth > publicOptions.depth) return;\n\t\t\tconst escaped = yamlEscapeValueIfNeeded(renderString(text));\n\t\t\tif (escaped) lines.push(indent(depth) + \"- text: \" + escaped);\n\t\t};\n\t\tconst createKey = (ariaNode, renderCursorPointer) => {\n\t\t\tlet key = ariaNode.role;\n\t\t\tif (ariaNode.name && ariaNode.name.length <= 900) {\n\t\t\t\tconst name = renderString(ariaNode.name);\n\t\t\t\tif (name) {\n\t\t\t\t\tconst stringifiedName = name.startsWith(\"/\") && name.endsWith(\"/\") ? name : JSON.stringify(name);\n\t\t\t\t\tkey += \" \" + stringifiedName;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ariaNode.checked === \"mixed\") key += ` [checked=mixed]`;\n\t\t\tif (ariaNode.checked === true) key += ` [checked]`;\n\t\t\tif (ariaNode.disabled) key += ` [disabled]`;\n\t\t\tif (ariaNode.expanded) key += ` [expanded]`;\n\t\t\tif (ariaNode.active && options.renderActive) key += ` [active]`;\n\t\t\tif (ariaNode.invalid === \"grammar\" || ariaNode.invalid === \"spelling\") key += ` [invalid=${ariaNode.invalid}]`;\n\t\t\tif (ariaNode.invalid === true) key += ` [invalid]`;\n\t\t\tif (ariaNode.level) key += ` [level=${ariaNode.level}]`;\n\t\t\tif (ariaNode.pressed === \"mixed\") key += ` [pressed=mixed]`;\n\t\t\tif (ariaNode.pressed === true) key += ` [pressed]`;\n\t\t\tif (ariaNode.selected === true) key += ` [selected]`;\n\t\t\tif (ariaNode.ref) {\n\t\t\t\tkey += ` [ref=${ariaNode.ref}]`;\n\t\t\t\tif (renderCursorPointer && hasPointerCursor(ariaNode)) key += \" [cursor=pointer]\";\n\t\t\t}\n\t\t\tif (options.renderBoxes) {\n\t\t\t\tconst element = ariaNodeElement(ariaNode);\n\t\t\t\tif (element) {\n\t\t\t\t\tconst r = element.getBoundingClientRect();\n\t\t\t\t\tkey += ` [box=${Math.round(r.x)},${Math.round(r.y)},${Math.round(r.width)},${Math.round(r.height)}]`;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn key;\n\t\t};\n\t\tconst getSingleInlinedTextChild = (ariaNode) => {\n\t\t\treturn ariaNode?.children.length === 1 && typeof ariaNode.children[0] === \"string\" && !Object.keys(ariaNode.props).length ? ariaNode.children[0] : void 0;\n\t\t};\n\t\tconst visit = (ariaNode, depth, renderCursorPointer) => {\n\t\t\tif (publicOptions.depth && depth > publicOptions.depth) return;\n\t\t\tif (ariaNode.role === \"iframe\" && ariaNode.ref) iframeDepths[ariaNode.ref] = depth;\n\t\t\tif (statusMap.get(ariaNode) === \"same\" && ariaNode.ref) {\n\t\t\t\tlines.push(indent(depth) + `- ref=${ariaNode.ref} [unchanged]`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst isDiffRoot = !!previousSnapshot && !depth;\n\t\t\tconst escapedKey = indent(depth) + \"- \" + (isDiffRoot ? \"<changed> \" : \"\") + yamlEscapeKeyIfNeeded(createKey(ariaNode, renderCursorPointer));\n\t\t\tconst singleInlinedTextChild = getSingleInlinedTextChild(ariaNode);\n\t\t\tconst isAtDepthLimit = !!publicOptions.depth && depth === publicOptions.depth;\n\t\t\tif (!singleInlinedTextChild && (!ariaNode.children.length || isAtDepthLimit) && !Object.keys(ariaNode.props).length) lines.push(escapedKey);\n\t\t\telse if (singleInlinedTextChild !== void 0) if (includeText(ariaNode, singleInlinedTextChild)) lines.push(escapedKey + \": \" + yamlEscapeValueIfNeeded(renderString(singleInlinedTextChild)));\n\t\t\telse lines.push(escapedKey);\n\t\t\telse {\n\t\t\t\tlines.push(escapedKey + \":\");\n\t\t\t\tfor (const [name, value] of Object.entries(ariaNode.props)) lines.push(indent(depth + 1) + \"- /\" + name + \": \" + yamlEscapeValueIfNeeded(value));\n\t\t\t\tconst inCursorPointer = !!ariaNode.ref && renderCursorPointer && hasPointerCursor(ariaNode);\n\t\t\t\tfor (const child of ariaNode.children) if (typeof child === \"string\") visitText(includeText(ariaNode, child) ? child : \"\", depth + 1);\n\t\t\t\telse visit(child, depth + 1, renderCursorPointer && !inCursorPointer);\n\t\t\t}\n\t\t};\n\t\tfor (const nodeToRender of nodesToRender) if (typeof nodeToRender === \"string\") visitText(nodeToRender, 0);\n\t\telse visit(nodeToRender, 0, !!options.renderCursorPointer);\n\t\treturn {\n\t\t\ttext: lines.join(\"\\n\"),\n\t\t\tiframeDepths\n\t\t};\n\t}\n\tfunction convertToBestGuessRegex(text) {\n\t\tconst dynamicContent = [\n\t\t\t{\n\t\t\t\tregex: /\\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\\b/,\n\t\t\t\treplacement: \"[0-9a-fA-F-]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b[\\d,.]+[bkmBKM]+\\b/,\n\t\t\t\treplacement: \"[\\\\d,.]+[bkmBKM]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d+[hmsp]+\\b/,\n\t\t\t\treplacement: \"\\\\d+[hmsp]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b[\\d,.]+[hmsp]+\\b/,\n\t\t\t\treplacement: \"[\\\\d,.]+[hmsp]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d+,\\d+\\b/,\n\t\t\t\treplacement: \"\\\\d+,\\\\d+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d+\\.\\d{2,}\\b/,\n\t\t\t\treplacement: \"\\\\d+\\\\.\\\\d+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d{2,}\\.\\d+\\b/,\n\t\t\t\treplacement: \"\\\\d+\\\\.\\\\d+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d{2,}\\b/,\n\t\t\t\treplacement: \"\\\\d+\"\n\t\t\t}\n\t\t];\n\t\tlet pattern = \"\";\n\t\tlet lastIndex = 0;\n\t\tconst combinedRegex = new RegExp(dynamicContent.map((r) => \"(\" + r.regex.source + \")\").join(\"|\"), \"g\");\n\t\ttext.replace(combinedRegex, (match, ...args) => {\n\t\t\tconst offset = args[args.length - 2];\n\t\t\tconst groups = args.slice(0, -2);\n\t\t\tpattern += escapeRegExp(text.slice(lastIndex, offset));\n\t\t\tfor (let i = 0; i < groups.length; i++) if (groups[i]) {\n\t\t\t\tconst { replacement } = dynamicContent[i];\n\t\t\t\tpattern += replacement;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlastIndex = offset + match.length;\n\t\t\treturn match;\n\t\t});\n\t\tif (!pattern) return text;\n\t\tpattern += escapeRegExp(text.slice(lastIndex));\n\t\treturn String(new RegExp(pattern));\n\t}\n\tfunction textContributesInfo(node, text) {\n\t\tif (!text.length) return false;\n\t\tif (!node.name) return true;\n\t\tconst substr = text.length <= 200 && node.name.length <= 200 ? longestCommonSubstring(text, node.name) : \"\";\n\t\tlet filtered = text;\n\t\twhile (substr && filtered.includes(substr)) filtered = filtered.replace(substr, \"\");\n\t\treturn filtered.trim().length / text.length > .1;\n\t}\n\tvar elementSymbol = Symbol(\"element\");\n\tfunction ariaNodeElement(ariaNode) {\n\t\treturn ariaNode[elementSymbol];\n\t}\n\tfunction setAriaNodeElement(ariaNode, element) {\n\t\tariaNode[elementSymbol] = element;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/injectedScript.snapshot.ts\n\tvar InjectedScript = class {\n\t\t_lastAriaSnapshotForTrack = /* @__PURE__ */ new Map();\n\t\t_lastAriaSnapshotForQuery;\n\t\tconstructor(_globalScope, options = {}) {\n\t\t\tsetGlobalOptions({ browserNameForWorkarounds: options.browserName });\n\t\t}\n\t\tariaSnapshot(node, options) {\n\t\t\treturn this.incrementalAriaSnapshot(node, options).full;\n\t\t}\n\t\tincrementalAriaSnapshot(node, options) {\n\t\t\tif (node.nodeType !== Node.ELEMENT_NODE) throw new Error(\"Can only capture aria snapshot of Element nodes.\");\n\t\t\tconst ariaSnapshot = generateAriaTree(node, options);\n\t\t\tconst rendered = renderAriaTree(ariaSnapshot, options);\n\t\t\tlet incremental;\n\t\t\tif (options.track) {\n\t\t\t\tconst previousSnapshot = this._lastAriaSnapshotForTrack.get(options.track);\n\t\t\t\tif (previousSnapshot) incremental = renderAriaTree(ariaSnapshot, options, previousSnapshot).text;\n\t\t\t\tthis._lastAriaSnapshotForTrack.set(options.track, ariaSnapshot);\n\t\t\t}\n\t\t\tthis._lastAriaSnapshotForQuery = ariaSnapshot;\n\t\t\treturn {\n\t\t\t\tfull: rendered.text,\n\t\t\t\tincremental,\n\t\t\t\tiframeRefs: ariaSnapshot.iframeRefs,\n\t\t\t\tiframeDepths: rendered.iframeDepths\n\t\t\t};\n\t\t}\n\t};\n\tglobalThis.__roxyPlaywrightSnapshotBundle = { InjectedScript };\n\t//#endregion\n\texports.InjectedScript = InjectedScript;\n\treturn exports;\n})({});\n";
|
|
9
|
+
//# sourceMappingURL=injectedScriptSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectedScriptSource.d.ts","sourceRoot":"","sources":["../../../../src/vendor/playwright/generated/injectedScriptSource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,iCAAiC,0q0FAA0q0F,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/generate-playwright-snapshot-source.mjs.
|
|
3
|
+
*
|
|
4
|
+
* Source entry: src/vendor/playwright/source/injected/injectedScript.snapshot.ts
|
|
5
|
+
* Do not edit this file directly; edit the readable source files instead and
|
|
6
|
+
* run pnpm build:vendor:snapshot.
|
|
7
|
+
*/
|
|
8
|
+
export const PLAYWRIGHT_INJECTED_SCRIPT_SOURCE = "var __roxyPlaywrightSnapshotSource = (function(exports) {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\n\t//#region src/vendor/playwright/source/isomorphic/ariaSnapshot.ts\n\tfunction ariaNodesEqual(a, b) {\n\t\tif (a.role !== b.role || a.name !== b.name) return false;\n\t\tif (!ariaPropsEqual(a, b) || hasPointerCursor(a) !== hasPointerCursor(b)) return false;\n\t\tconst aKeys = Object.keys(a.props);\n\t\tconst bKeys = Object.keys(b.props);\n\t\treturn aKeys.length === bKeys.length && aKeys.every((k) => a.props[k] === b.props[k]);\n\t}\n\tfunction hasPointerCursor(ariaNode) {\n\t\treturn ariaNode.box.cursor === \"pointer\";\n\t}\n\tfunction ariaPropsEqual(a, b) {\n\t\treturn a.active === b.active && a.checked === b.checked && a.disabled === b.disabled && a.expanded === b.expanded && a.invalid === b.invalid && a.selected === b.selected && a.level === b.level && a.pressed === b.pressed;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/isomorphic/stringUtils.ts\n\tvar normalizedWhitespaceCache;\n\tfunction normalizeWhiteSpace(text) {\n\t\tlet result = normalizedWhitespaceCache?.get(text);\n\t\tif (result === void 0) {\n\t\t\tresult = text.replace(/[\\u200b\\u00ad]/g, \"\").trim().replace(/\\s+/g, \" \");\n\t\t\tnormalizedWhitespaceCache?.set(text, result);\n\t\t}\n\t\treturn result;\n\t}\n\tfunction escapeRegExp(s) {\n\t\treturn s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\t}\n\tfunction longestCommonSubstring(s1, s2) {\n\t\tconst n = s1.length;\n\t\tconst m = s2.length;\n\t\tlet maxLen = 0;\n\t\tlet endingIndex = 0;\n\t\tconst dp = Array(n + 1).fill(null).map(() => Array(m + 1).fill(0));\n\t\tfor (let i = 1; i <= n; i++) for (let j = 1; j <= m; j++) if (s1[i - 1] === s2[j - 1]) {\n\t\t\tdp[i][j] = dp[i - 1][j - 1] + 1;\n\t\t\tif (dp[i][j] > maxLen) {\n\t\t\t\tmaxLen = dp[i][j];\n\t\t\t\tendingIndex = i;\n\t\t\t}\n\t\t}\n\t\treturn s1.slice(endingIndex - maxLen, endingIndex);\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/isomorphic/yaml.ts\n\t/**\n\t* Copyright (c) Microsoft Corporation.\n\t*\n\t* Licensed under the Apache License, Version 2.0 (the \"License\");\n\t* you may not use this file except in compliance with the License.\n\t* You may obtain a copy of the License at\n\t*\n\t* http://www.apache.org/licenses/LICENSE-2.0\n\t*\n\t* Unless required by applicable law or agreed to in writing, software\n\t* distributed under the License is distributed on an \"AS IS\" BASIS,\n\t* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t* See the License for the specific language governing permissions and\n\t* limitations under the License.\n\t*/\n\tfunction yamlEscapeKeyIfNeeded(str) {\n\t\tif (!yamlStringNeedsQuotes(str)) return str;\n\t\treturn `'` + str.replace(/'/g, `''`) + `'`;\n\t}\n\tfunction yamlEscapeValueIfNeeded(str) {\n\t\tif (!yamlStringNeedsQuotes(str)) return str;\n\t\treturn \"\\\"\" + str.replace(/[\\\\\"\\x00-\\x1f\\x7f-\\x9f]/g, (c) => {\n\t\t\tswitch (c) {\n\t\t\t\tcase \"\\\\\": return \"\\\\\\\\\";\n\t\t\t\tcase \"\\\"\": return \"\\\\\\\"\";\n\t\t\t\tcase \"\\b\": return \"\\\\b\";\n\t\t\t\tcase \"\\f\": return \"\\\\f\";\n\t\t\t\tcase \"\\n\": return \"\\\\n\";\n\t\t\t\tcase \"\\r\": return \"\\\\r\";\n\t\t\t\tcase \"\t\": return \"\\\\t\";\n\t\t\t\tdefault: return \"\\\\x\" + c.charCodeAt(0).toString(16).padStart(2, \"0\");\n\t\t\t}\n\t\t}) + \"\\\"\";\n\t}\n\tfunction yamlStringNeedsQuotes(str) {\n\t\tif (str.length === 0) return true;\n\t\tif (/^\\s|\\s$/.test(str)) return true;\n\t\tif (/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f-\\x9f]/.test(str)) return true;\n\t\tif (/^-/.test(str)) return true;\n\t\tif (/[\\n:](\\s|$)/.test(str)) return true;\n\t\tif (/\\s#/.test(str)) return true;\n\t\tif (/[\\n\\r]/.test(str)) return true;\n\t\tif (/^[&*\\],?!>|@\"'#%]/.test(str)) return true;\n\t\tif (/[{}`]/.test(str)) return true;\n\t\tif (/^\\[/.test(str)) return true;\n\t\tif (!isNaN(Number(str)) || [\n\t\t\t\"y\",\n\t\t\t\"n\",\n\t\t\t\"yes\",\n\t\t\t\"no\",\n\t\t\t\"true\",\n\t\t\t\"false\",\n\t\t\t\"on\",\n\t\t\t\"off\",\n\t\t\t\"null\"\n\t\t].includes(str.toLowerCase())) return true;\n\t\treturn false;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/domUtils.ts\n\tvar globalOptions = {};\n\tfunction setGlobalOptions(options) {\n\t\tglobalOptions = options;\n\t}\n\tfunction parentElementOrShadowHost(element) {\n\t\tif (element.parentElement) return element.parentElement;\n\t\tif (!element.parentNode) return;\n\t\tif (element.parentNode.nodeType === 11 && element.parentNode.host) return element.parentNode.host;\n\t}\n\tfunction enclosingShadowRootOrDocument(element) {\n\t\tlet node = element;\n\t\twhile (node.parentNode) node = node.parentNode;\n\t\tif (node.nodeType === 11 || node.nodeType === 9) return node;\n\t}\n\tfunction enclosingShadowHost(element) {\n\t\twhile (element.parentElement) element = element.parentElement;\n\t\treturn parentElementOrShadowHost(element);\n\t}\n\tfunction closestCrossShadow(element, css, scope) {\n\t\twhile (element) {\n\t\t\tconst closest = element.closest(css);\n\t\t\tif (scope && closest !== scope && closest?.contains(scope)) return;\n\t\t\tif (closest) return closest;\n\t\t\telement = enclosingShadowHost(element);\n\t\t}\n\t}\n\tfunction getElementComputedStyle(element, pseudo) {\n\t\tconst cache = pseudo === \"::before\" ? cacheStyleBefore : pseudo === \"::after\" ? cacheStyleAfter : cacheStyle;\n\t\tif (cache && cache.has(element)) return cache.get(element);\n\t\tconst style = element.ownerDocument && element.ownerDocument.defaultView ? element.ownerDocument.defaultView.getComputedStyle(element, pseudo) : void 0;\n\t\tcache?.set(element, style);\n\t\treturn style;\n\t}\n\tfunction isElementStyleVisibilityVisible(element, style) {\n\t\tstyle = style ?? getElementComputedStyle(element);\n\t\tif (!style) return true;\n\t\tif (Element.prototype.checkVisibility && globalOptions.browserNameForWorkarounds !== \"webkit\") {\n\t\t\tif (!element.checkVisibility()) return false;\n\t\t} else {\n\t\t\tconst detailsOrSummary = element.closest(\"details,summary\");\n\t\t\tif (detailsOrSummary !== element && detailsOrSummary?.nodeName === \"DETAILS\" && !detailsOrSummary.open) return false;\n\t\t}\n\t\tif (style.visibility !== \"visible\") return false;\n\t\treturn true;\n\t}\n\tfunction computeBox(element) {\n\t\tconst style = getElementComputedStyle(element);\n\t\tif (!style) return {\n\t\t\tvisible: true,\n\t\t\tinline: false\n\t\t};\n\t\tconst cursor = style.cursor;\n\t\tif (style.display === \"contents\") {\n\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) {\n\t\t\t\tif (child.nodeType === 1 && isElementVisible(child)) return {\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tinline: false,\n\t\t\t\t\tcursor\n\t\t\t\t};\n\t\t\t\tif (child.nodeType === 3 && isVisibleTextNode(child)) return {\n\t\t\t\t\tvisible: true,\n\t\t\t\t\tinline: true,\n\t\t\t\t\tcursor\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tvisible: false,\n\t\t\t\tinline: false,\n\t\t\t\tcursor\n\t\t\t};\n\t\t}\n\t\tif (!isElementStyleVisibilityVisible(element, style)) return {\n\t\t\tcursor,\n\t\t\tvisible: false,\n\t\t\tinline: false\n\t\t};\n\t\tconst rect = element.getBoundingClientRect();\n\t\treturn {\n\t\t\tcursor,\n\t\t\tvisible: rect.width > 0 && rect.height > 0,\n\t\t\tinline: style.display === \"inline\"\n\t\t};\n\t}\n\tfunction isElementVisible(element) {\n\t\treturn computeBox(element).visible;\n\t}\n\tfunction isVisibleTextNode(node) {\n\t\tconst range = node.ownerDocument.createRange();\n\t\trange.selectNode(node);\n\t\tconst rect = range.getBoundingClientRect();\n\t\treturn rect.width > 0 && rect.height > 0;\n\t}\n\tfunction elementSafeTagName(element) {\n\t\tconst tagName = element.tagName;\n\t\tif (typeof tagName === \"string\") return tagName.toUpperCase();\n\t\tif (element instanceof HTMLFormElement) return \"FORM\";\n\t\treturn element.tagName.toUpperCase();\n\t}\n\tvar cacheStyle;\n\tvar cacheStyleBefore;\n\tvar cacheStyleAfter;\n\tvar cachesCounter$1 = 0;\n\tfunction beginDOMCaches() {\n\t\t++cachesCounter$1;\n\t\tcacheStyle ??= /* @__PURE__ */ new Map();\n\t\tcacheStyleBefore ??= /* @__PURE__ */ new Map();\n\t\tcacheStyleAfter ??= /* @__PURE__ */ new Map();\n\t}\n\tfunction endDOMCaches() {\n\t\tif (!--cachesCounter$1) {\n\t\t\tcacheStyle = void 0;\n\t\t\tcacheStyleBefore = void 0;\n\t\t\tcacheStyleAfter = void 0;\n\t\t}\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/isomorphic/cssTokenizer.ts\n\tvar between = function(num, first, last) {\n\t\treturn num >= first && num <= last;\n\t};\n\tfunction digit(code) {\n\t\treturn between(code, 48, 57);\n\t}\n\tfunction hexdigit(code) {\n\t\treturn digit(code) || between(code, 65, 70) || between(code, 97, 102);\n\t}\n\tfunction uppercaseletter(code) {\n\t\treturn between(code, 65, 90);\n\t}\n\tfunction lowercaseletter(code) {\n\t\treturn between(code, 97, 122);\n\t}\n\tfunction letter(code) {\n\t\treturn uppercaseletter(code) || lowercaseletter(code);\n\t}\n\tfunction nonascii(code) {\n\t\treturn code >= 128;\n\t}\n\tfunction namestartchar(code) {\n\t\treturn letter(code) || nonascii(code) || code === 95;\n\t}\n\tfunction namechar(code) {\n\t\treturn namestartchar(code) || digit(code) || code === 45;\n\t}\n\tfunction nonprintable(code) {\n\t\treturn between(code, 0, 8) || code === 11 || between(code, 14, 31) || code === 127;\n\t}\n\tfunction newline(code) {\n\t\treturn code === 10;\n\t}\n\tfunction whitespace(code) {\n\t\treturn newline(code) || code === 9 || code === 32;\n\t}\n\tvar maximumallowedcodepoint = 1114111;\n\tvar InvalidCharacterError = class extends Error {\n\t\tconstructor(message) {\n\t\t\tsuper(message);\n\t\t\tthis.name = \"InvalidCharacterError\";\n\t\t}\n\t};\n\tfunction preprocess(str) {\n\t\tconst codepoints = [];\n\t\tfor (let i = 0; i < str.length; i++) {\n\t\t\tlet code = str.charCodeAt(i);\n\t\t\tif (code === 13 && str.charCodeAt(i + 1) === 10) {\n\t\t\t\tcode = 10;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (code === 13 || code === 12) code = 10;\n\t\t\tif (code === 0) code = 65533;\n\t\t\tif (between(code, 55296, 56319) && between(str.charCodeAt(i + 1), 56320, 57343)) {\n\t\t\t\tconst lead = code - 55296;\n\t\t\t\tconst trail = str.charCodeAt(i + 1) - 56320;\n\t\t\t\tcode = Math.pow(2, 16) + lead * Math.pow(2, 10) + trail;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tcodepoints.push(code);\n\t\t}\n\t\treturn codepoints;\n\t}\n\tfunction stringFromCode(code) {\n\t\tif (code <= 65535) return String.fromCharCode(code);\n\t\tcode -= Math.pow(2, 16);\n\t\tconst lead = Math.floor(code / Math.pow(2, 10)) + 55296;\n\t\tconst trail = code % Math.pow(2, 10) + 56320;\n\t\treturn String.fromCharCode(lead) + String.fromCharCode(trail);\n\t}\n\tfunction tokenize(str1) {\n\t\tconst str = preprocess(str1);\n\t\tlet i = -1;\n\t\tconst tokens = [];\n\t\tlet code;\n\t\tlet line = 0;\n\t\tlet column = 0;\n\t\tlet lastLineLength = 0;\n\t\tconst incrLineno = function() {\n\t\t\tline += 1;\n\t\t\tlastLineLength = column;\n\t\t\tcolumn = 0;\n\t\t};\n\t\tconst locStart = {\n\t\t\tline,\n\t\t\tcolumn\n\t\t};\n\t\tconst codepoint = function(i) {\n\t\t\tif (i >= str.length) return -1;\n\t\t\treturn str[i];\n\t\t};\n\t\tconst next = function(num) {\n\t\t\tif (num === void 0) num = 1;\n\t\t\tif (num > 3) throw \"Spec Error: no more than three codepoints of lookahead.\";\n\t\t\treturn codepoint(i + num);\n\t\t};\n\t\tconst consume = function(num) {\n\t\t\tif (num === void 0) num = 1;\n\t\t\ti += num;\n\t\t\tcode = codepoint(i);\n\t\t\tif (newline(code)) incrLineno();\n\t\t\telse column += num;\n\t\t\treturn true;\n\t\t};\n\t\tconst reconsume = function() {\n\t\t\ti -= 1;\n\t\t\tif (newline(code)) {\n\t\t\t\tline -= 1;\n\t\t\t\tcolumn = lastLineLength;\n\t\t\t} else column -= 1;\n\t\t\tlocStart.line = line;\n\t\t\tlocStart.column = column;\n\t\t\treturn true;\n\t\t};\n\t\tconst eof = function(codepoint) {\n\t\t\tif (codepoint === void 0) codepoint = code;\n\t\t\treturn codepoint === -1;\n\t\t};\n\t\tconst consumeAToken = function() {\n\t\t\tconsumeComments();\n\t\t\tconsume();\n\t\t\tif (whitespace(code)) {\n\t\t\t\twhile (whitespace(next())) consume();\n\t\t\t\treturn new WhitespaceToken();\n\t\t\t} else if (code === 34) return consumeAStringToken();\n\t\t\telse if (code === 35) if (namechar(next()) || areAValidEscape(next(1), next(2))) {\n\t\t\t\tconst token = new HashToken(\"\");\n\t\t\t\tif (wouldStartAnIdentifier(next(1), next(2), next(3))) token.type = \"id\";\n\t\t\t\ttoken.value = consumeAName();\n\t\t\t\treturn token;\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 36) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new SuffixMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 39) return consumeAStringToken();\n\t\t\telse if (code === 40) return new OpenParenToken();\n\t\t\telse if (code === 41) return new CloseParenToken();\n\t\t\telse if (code === 42) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new SubstringMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 43) if (startsWithANumber()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 44) return new CommaToken();\n\t\t\telse if (code === 45) if (startsWithANumber()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else if (next(1) === 45 && next(2) === 62) {\n\t\t\t\tconsume(2);\n\t\t\t\treturn new CDCToken();\n\t\t\t} else if (startsWithAnIdentifier()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeAnIdentlikeToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 46) if (startsWithANumber()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 58) return new ColonToken();\n\t\t\telse if (code === 59) return new SemicolonToken();\n\t\t\telse if (code === 60) if (next(1) === 33 && next(2) === 45 && next(3) === 45) {\n\t\t\t\tconsume(3);\n\t\t\t\treturn new CDOToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 64) if (wouldStartAnIdentifier(next(1), next(2), next(3))) return new AtKeywordToken(consumeAName());\n\t\t\telse return new DelimToken(code);\n\t\t\telse if (code === 91) return new OpenSquareToken();\n\t\t\telse if (code === 92) if (startsWithAValidEscape()) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeAnIdentlikeToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 93) return new CloseSquareToken();\n\t\t\telse if (code === 94) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new PrefixMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 123) return new OpenCurlyToken();\n\t\t\telse if (code === 124) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new DashMatchToken();\n\t\t\t} else if (next() === 124) {\n\t\t\t\tconsume();\n\t\t\t\treturn new ColumnToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (code === 125) return new CloseCurlyToken();\n\t\t\telse if (code === 126) if (next() === 61) {\n\t\t\t\tconsume();\n\t\t\t\treturn new IncludeMatchToken();\n\t\t\t} else return new DelimToken(code);\n\t\t\telse if (digit(code)) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeANumericToken();\n\t\t\t} else if (namestartchar(code)) {\n\t\t\t\treconsume();\n\t\t\t\treturn consumeAnIdentlikeToken();\n\t\t\t} else if (eof()) return new EOFToken();\n\t\t\telse return new DelimToken(code);\n\t\t};\n\t\tconst consumeComments = function() {\n\t\t\twhile (next(1) === 47 && next(2) === 42) {\n\t\t\t\tconsume(2);\n\t\t\t\twhile (true) {\n\t\t\t\t\tconsume();\n\t\t\t\t\tif (code === 42 && next() === 47) {\n\t\t\t\t\t\tconsume();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (eof()) return;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tconst consumeANumericToken = function() {\n\t\t\tconst num = consumeANumber();\n\t\t\tif (wouldStartAnIdentifier(next(1), next(2), next(3))) {\n\t\t\t\tconst token = new DimensionToken();\n\t\t\t\ttoken.value = num.value;\n\t\t\t\ttoken.repr = num.repr;\n\t\t\t\ttoken.type = num.type;\n\t\t\t\ttoken.unit = consumeAName();\n\t\t\t\treturn token;\n\t\t\t} else if (next() === 37) {\n\t\t\t\tconsume();\n\t\t\t\tconst token = new PercentageToken();\n\t\t\t\ttoken.value = num.value;\n\t\t\t\ttoken.repr = num.repr;\n\t\t\t\treturn token;\n\t\t\t} else {\n\t\t\t\tconst token = new NumberToken();\n\t\t\t\ttoken.value = num.value;\n\t\t\t\ttoken.repr = num.repr;\n\t\t\t\ttoken.type = num.type;\n\t\t\t\treturn token;\n\t\t\t}\n\t\t};\n\t\tconst consumeAnIdentlikeToken = function() {\n\t\t\tconst str = consumeAName();\n\t\t\tif (str.toLowerCase() === \"url\" && next() === 40) {\n\t\t\t\tconsume();\n\t\t\t\twhile (whitespace(next(1)) && whitespace(next(2))) consume();\n\t\t\t\tif (next() === 34 || next() === 39) return new FunctionToken(str);\n\t\t\t\telse if (whitespace(next()) && (next(2) === 34 || next(2) === 39)) return new FunctionToken(str);\n\t\t\t\telse return consumeAURLToken();\n\t\t\t} else if (next() === 40) {\n\t\t\t\tconsume();\n\t\t\t\treturn new FunctionToken(str);\n\t\t\t} else return new IdentToken(str);\n\t\t};\n\t\tconst consumeAStringToken = function(endingCodePoint) {\n\t\t\tif (endingCodePoint === void 0) endingCodePoint = code;\n\t\t\tlet string = \"\";\n\t\t\twhile (consume()) if (code === endingCodePoint || eof()) return new StringToken(string);\n\t\t\telse if (newline(code)) {\n\t\t\t\treconsume();\n\t\t\t\treturn new BadStringToken();\n\t\t\t} else if (code === 92) if (eof(next()));\n\t\t\telse if (newline(next())) consume();\n\t\t\telse string += stringFromCode(consumeEscape());\n\t\t\telse string += stringFromCode(code);\n\t\t\tthrow new Error(\"Internal error\");\n\t\t};\n\t\tconst consumeAURLToken = function() {\n\t\t\tconst token = new URLToken(\"\");\n\t\t\twhile (whitespace(next())) consume();\n\t\t\tif (eof(next())) return token;\n\t\t\twhile (consume()) if (code === 41 || eof()) return token;\n\t\t\telse if (whitespace(code)) {\n\t\t\t\twhile (whitespace(next())) consume();\n\t\t\t\tif (next() === 41 || eof(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\treturn token;\n\t\t\t\t} else {\n\t\t\t\t\tconsumeTheRemnantsOfABadURL();\n\t\t\t\t\treturn new BadURLToken();\n\t\t\t\t}\n\t\t\t} else if (code === 34 || code === 39 || code === 40 || nonprintable(code)) {\n\t\t\t\tconsumeTheRemnantsOfABadURL();\n\t\t\t\treturn new BadURLToken();\n\t\t\t} else if (code === 92) if (startsWithAValidEscape()) token.value += stringFromCode(consumeEscape());\n\t\t\telse {\n\t\t\t\tconsumeTheRemnantsOfABadURL();\n\t\t\t\treturn new BadURLToken();\n\t\t\t}\n\t\t\telse token.value += stringFromCode(code);\n\t\t\tthrow new Error(\"Internal error\");\n\t\t};\n\t\tconst consumeEscape = function() {\n\t\t\tconsume();\n\t\t\tif (hexdigit(code)) {\n\t\t\t\tconst digits = [code];\n\t\t\t\tfor (let total = 0; total < 5; total++) if (hexdigit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\tdigits.push(code);\n\t\t\t\t} else break;\n\t\t\t\tif (whitespace(next())) consume();\n\t\t\t\tlet value = parseInt(digits.map(function(x) {\n\t\t\t\t\treturn String.fromCharCode(x);\n\t\t\t\t}).join(\"\"), 16);\n\t\t\t\tif (value > maximumallowedcodepoint) value = 65533;\n\t\t\t\treturn value;\n\t\t\t} else if (eof()) return 65533;\n\t\t\telse return code;\n\t\t};\n\t\tconst areAValidEscape = function(c1, c2) {\n\t\t\tif (c1 !== 92) return false;\n\t\t\tif (newline(c2)) return false;\n\t\t\treturn true;\n\t\t};\n\t\tconst startsWithAValidEscape = function() {\n\t\t\treturn areAValidEscape(code, next());\n\t\t};\n\t\tconst wouldStartAnIdentifier = function(c1, c2, c3) {\n\t\t\tif (c1 === 45) return namestartchar(c2) || c2 === 45 || areAValidEscape(c2, c3);\n\t\t\telse if (namestartchar(c1)) return true;\n\t\t\telse if (c1 === 92) return areAValidEscape(c1, c2);\n\t\t\telse return false;\n\t\t};\n\t\tconst startsWithAnIdentifier = function() {\n\t\t\treturn wouldStartAnIdentifier(code, next(1), next(2));\n\t\t};\n\t\tconst wouldStartANumber = function(c1, c2, c3) {\n\t\t\tif (c1 === 43 || c1 === 45) {\n\t\t\t\tif (digit(c2)) return true;\n\t\t\t\tif (c2 === 46 && digit(c3)) return true;\n\t\t\t\treturn false;\n\t\t\t} else if (c1 === 46) {\n\t\t\t\tif (digit(c2)) return true;\n\t\t\t\treturn false;\n\t\t\t} else if (digit(c1)) return true;\n\t\t\telse return false;\n\t\t};\n\t\tconst startsWithANumber = function() {\n\t\t\treturn wouldStartANumber(code, next(1), next(2));\n\t\t};\n\t\tconst consumeAName = function() {\n\t\t\tlet result = \"\";\n\t\t\twhile (consume()) if (namechar(code)) result += stringFromCode(code);\n\t\t\telse if (startsWithAValidEscape()) result += stringFromCode(consumeEscape());\n\t\t\telse {\n\t\t\t\treconsume();\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow new Error(\"Internal parse error\");\n\t\t};\n\t\tconst consumeANumber = function() {\n\t\t\tlet repr = \"\";\n\t\t\tlet type = \"integer\";\n\t\t\tif (next() === 43 || next() === 45) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t}\n\t\t\twhile (digit(next())) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t}\n\t\t\tif (next(1) === 46 && digit(next(2))) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\ttype = \"number\";\n\t\t\t\twhile (digit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\trepr += stringFromCode(code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst c1 = next(1);\n\t\t\tconst c2 = next(2);\n\t\t\tconst c3 = next(3);\n\t\t\tif ((c1 === 69 || c1 === 101) && digit(c2)) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\ttype = \"number\";\n\t\t\t\twhile (digit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\trepr += stringFromCode(code);\n\t\t\t\t}\n\t\t\t} else if ((c1 === 69 || c1 === 101) && (c2 === 43 || c2 === 45) && digit(c3)) {\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\tconsume();\n\t\t\t\trepr += stringFromCode(code);\n\t\t\t\ttype = \"number\";\n\t\t\t\twhile (digit(next())) {\n\t\t\t\t\tconsume();\n\t\t\t\t\trepr += stringFromCode(code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst value = convertAStringToANumber(repr);\n\t\t\treturn {\n\t\t\t\ttype,\n\t\t\t\tvalue,\n\t\t\t\trepr\n\t\t\t};\n\t\t};\n\t\tconst convertAStringToANumber = function(string) {\n\t\t\treturn +string;\n\t\t};\n\t\tconst consumeTheRemnantsOfABadURL = function() {\n\t\t\twhile (consume()) if (code === 41 || eof()) return;\n\t\t\telse if (startsWithAValidEscape()) consumeEscape();\n\t\t};\n\t\tlet iterationCount = 0;\n\t\twhile (!eof(next())) {\n\t\t\ttokens.push(consumeAToken());\n\t\t\titerationCount++;\n\t\t\tif (iterationCount > str.length * 2) throw new Error(\"I'm infinite-looping!\");\n\t\t}\n\t\treturn tokens;\n\t}\n\tvar CSSParserToken = class {\n\t\ttokenType = \"\";\n\t\tvalue;\n\t\ttoJSON() {\n\t\t\treturn { token: this.tokenType };\n\t\t}\n\t\ttoString() {\n\t\t\treturn this.tokenType;\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \"\" + this;\n\t\t}\n\t};\n\tvar BadStringToken = class extends CSSParserToken {\n\t\ttokenType = \"BADSTRING\";\n\t};\n\tvar BadURLToken = class extends CSSParserToken {\n\t\ttokenType = \"BADURL\";\n\t};\n\tvar WhitespaceToken = class extends CSSParserToken {\n\t\ttokenType = \"WHITESPACE\";\n\t\ttoString() {\n\t\t\treturn \"WS\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \" \";\n\t\t}\n\t};\n\tvar CDOToken = class extends CSSParserToken {\n\t\ttokenType = \"CDO\";\n\t\ttoSource() {\n\t\t\treturn \"<!--\";\n\t\t}\n\t};\n\tvar CDCToken = class extends CSSParserToken {\n\t\ttokenType = \"CDC\";\n\t\ttoSource() {\n\t\t\treturn \"-->\";\n\t\t}\n\t};\n\tvar ColonToken = class extends CSSParserToken {\n\t\ttokenType = \":\";\n\t};\n\tvar SemicolonToken = class extends CSSParserToken {\n\t\ttokenType = \";\";\n\t};\n\tvar CommaToken = class extends CSSParserToken {\n\t\ttokenType = \",\";\n\t};\n\tvar GroupingToken = class extends CSSParserToken {\n\t\tvalue = \"\";\n\t\tmirror = \"\";\n\t};\n\tvar OpenCurlyToken = class extends GroupingToken {\n\t\ttokenType = \"{\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"{\";\n\t\t\tthis.mirror = \"}\";\n\t\t}\n\t};\n\tvar CloseCurlyToken = class extends GroupingToken {\n\t\ttokenType = \"}\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"}\";\n\t\t\tthis.mirror = \"{\";\n\t\t}\n\t};\n\tvar OpenSquareToken = class extends GroupingToken {\n\t\ttokenType = \"[\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"[\";\n\t\t\tthis.mirror = \"]\";\n\t\t}\n\t};\n\tvar CloseSquareToken = class extends GroupingToken {\n\t\ttokenType = \"]\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"]\";\n\t\t\tthis.mirror = \"[\";\n\t\t}\n\t};\n\tvar OpenParenToken = class extends GroupingToken {\n\t\ttokenType = \"(\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \"(\";\n\t\t\tthis.mirror = \")\";\n\t\t}\n\t};\n\tvar CloseParenToken = class extends GroupingToken {\n\t\ttokenType = \")\";\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.value = \")\";\n\t\t\tthis.mirror = \"(\";\n\t\t}\n\t};\n\tvar IncludeMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"~=\";\n\t};\n\tvar DashMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"|=\";\n\t};\n\tvar PrefixMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"^=\";\n\t};\n\tvar SuffixMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"$=\";\n\t};\n\tvar SubstringMatchToken = class extends CSSParserToken {\n\t\ttokenType = \"*=\";\n\t};\n\tvar ColumnToken = class extends CSSParserToken {\n\t\ttokenType = \"||\";\n\t};\n\tvar EOFToken = class extends CSSParserToken {\n\t\ttokenType = \"EOF\";\n\t\ttoSource() {\n\t\t\treturn \"\";\n\t\t}\n\t};\n\tvar DelimToken = class extends CSSParserToken {\n\t\ttokenType = \"DELIM\";\n\t\tvalue = \"\";\n\t\tconstructor(code) {\n\t\t\tsuper();\n\t\t\tthis.value = stringFromCode(code);\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"DELIM(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\tif (this.value === \"\\\\\") return \"\\\\\\n\";\n\t\t\telse return this.value;\n\t\t}\n\t};\n\tvar StringValuedToken = class extends CSSParserToken {\n\t\tvalue = \"\";\n\t\tASCIIMatch(str) {\n\t\t\treturn this.value.toLowerCase() === str.toLowerCase();\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\treturn json;\n\t\t}\n\t};\n\tvar IdentToken = class extends StringValuedToken {\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttokenType = \"IDENT\";\n\t\ttoString() {\n\t\t\treturn \"IDENT(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn escapeIdent(this.value);\n\t\t}\n\t};\n\tvar FunctionToken = class extends StringValuedToken {\n\t\ttokenType = \"FUNCTION\";\n\t\tmirror;\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t\tthis.mirror = \")\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"FUNCTION(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn escapeIdent(this.value) + \"(\";\n\t\t}\n\t};\n\tvar AtKeywordToken = class extends StringValuedToken {\n\t\ttokenType = \"AT-KEYWORD\";\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"AT(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \"@\" + escapeIdent(this.value);\n\t\t}\n\t};\n\tvar HashToken = class extends StringValuedToken {\n\t\ttokenType = \"HASH\";\n\t\ttype;\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t\tthis.type = \"unrestricted\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"HASH(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\tjson.type = this.type;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\tif (this.type === \"id\") return \"#\" + escapeIdent(this.value);\n\t\t\telse return \"#\" + escapeHash(this.value);\n\t\t}\n\t};\n\tvar StringToken = class extends StringValuedToken {\n\t\ttokenType = \"STRING\";\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"\\\"\" + escapeString(this.value) + \"\\\"\";\n\t\t}\n\t};\n\tvar URLToken = class extends StringValuedToken {\n\t\ttokenType = \"URL\";\n\t\tconstructor(val) {\n\t\t\tsuper();\n\t\t\tthis.value = val;\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"URL(\" + this.value + \")\";\n\t\t}\n\t\ttoSource() {\n\t\t\treturn \"url(\\\"\" + escapeString(this.value) + \"\\\")\";\n\t\t}\n\t};\n\tvar NumberToken = class extends CSSParserToken {\n\t\ttokenType = \"NUMBER\";\n\t\ttype;\n\t\trepr;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = \"integer\";\n\t\t\tthis.repr = \"\";\n\t\t}\n\t\ttoString() {\n\t\t\tif (this.type === \"integer\") return \"INT(\" + this.value + \")\";\n\t\t\treturn \"NUMBER(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = super.toJSON();\n\t\t\tjson.value = this.value;\n\t\t\tjson.type = this.type;\n\t\t\tjson.repr = this.repr;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\treturn this.repr;\n\t\t}\n\t};\n\tvar PercentageToken = class extends CSSParserToken {\n\t\ttokenType = \"PERCENTAGE\";\n\t\trepr;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.repr = \"\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"PERCENTAGE(\" + this.value + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\tjson.repr = this.repr;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\treturn this.repr + \"%\";\n\t\t}\n\t};\n\tvar DimensionToken = class extends CSSParserToken {\n\t\ttokenType = \"DIMENSION\";\n\t\ttype;\n\t\trepr;\n\t\tunit;\n\t\tconstructor() {\n\t\t\tsuper();\n\t\t\tthis.type = \"integer\";\n\t\t\tthis.repr = \"\";\n\t\t\tthis.unit = \"\";\n\t\t}\n\t\ttoString() {\n\t\t\treturn \"DIM(\" + this.value + \",\" + this.unit + \")\";\n\t\t}\n\t\ttoJSON() {\n\t\t\tconst json = this.constructor.prototype.constructor.prototype.toJSON.call(this);\n\t\t\tjson.value = this.value;\n\t\t\tjson.type = this.type;\n\t\t\tjson.repr = this.repr;\n\t\t\tjson.unit = this.unit;\n\t\t\treturn json;\n\t\t}\n\t\ttoSource() {\n\t\t\tconst source = this.repr;\n\t\t\tlet unit = escapeIdent(this.unit);\n\t\t\tif (unit[0].toLowerCase() === \"e\" && (unit[1] === \"-\" || between(unit.charCodeAt(1), 48, 57))) unit = \"\\\\65 \" + unit.slice(1, unit.length);\n\t\t\treturn source + unit;\n\t\t}\n\t};\n\tfunction escapeIdent(string) {\n\t\tstring = \"\" + string;\n\t\tlet result = \"\";\n\t\tconst firstcode = string.charCodeAt(0);\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tconst code = string.charCodeAt(i);\n\t\t\tif (code === 0) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n\t\t\tif (between(code, 1, 31) || code === 127 || i === 0 && between(code, 48, 57) || i === 1 && between(code, 48, 57) && firstcode === 45) result += \"\\\\\" + code.toString(16) + \" \";\n\t\t\telse if (code >= 128 || code === 45 || code === 95 || between(code, 48, 57) || between(code, 65, 90) || between(code, 97, 122)) result += string[i];\n\t\t\telse result += \"\\\\\" + string[i];\n\t\t}\n\t\treturn result;\n\t}\n\tfunction escapeHash(string) {\n\t\tstring = \"\" + string;\n\t\tlet result = \"\";\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tconst code = string.charCodeAt(i);\n\t\t\tif (code === 0) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n\t\t\tif (code >= 128 || code === 45 || code === 95 || between(code, 48, 57) || between(code, 65, 90) || between(code, 97, 122)) result += string[i];\n\t\t\telse result += \"\\\\\" + code.toString(16) + \" \";\n\t\t}\n\t\treturn result;\n\t}\n\tfunction escapeString(string) {\n\t\tstring = \"\" + string;\n\t\tlet result = \"\";\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tconst code = string.charCodeAt(i);\n\t\t\tif (code === 0) throw new InvalidCharacterError(\"Invalid character: the input contains U+0000.\");\n\t\t\tif (between(code, 1, 31) || code === 127) result += \"\\\\\" + code.toString(16) + \" \";\n\t\t\telse if (code === 34 || code === 92) result += \"\\\\\" + string[i];\n\t\t\telse result += string[i];\n\t\t}\n\t\treturn result;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/roleUtils.ts\n\t/**\n\t* Copyright (c) Microsoft Corporation.\n\t*\n\t* Licensed under the Apache License, Version 2.0 (the \"License\");\n\t* you may not use this file except in compliance with the License.\n\t* You may obtain a copy of the License at\n\t*\n\t* http://www.apache.org/licenses/LICENSE-2.0\n\t*\n\t* Unless required by applicable law or agreed to in writing, software\n\t* distributed under the License is distributed on an \"AS IS\" BASIS,\n\t* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t* See the License for the specific language governing permissions and\n\t* limitations under the License.\n\t*/\n\tfunction hasExplicitAccessibleName(e) {\n\t\treturn e.hasAttribute(\"aria-label\") || e.hasAttribute(\"aria-labelledby\");\n\t}\n\tvar kAncestorPreventingLandmark = \"article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]\";\n\tvar kGlobalAriaAttributes = [\n\t\t[\"aria-atomic\", void 0],\n\t\t[\"aria-busy\", void 0],\n\t\t[\"aria-controls\", void 0],\n\t\t[\"aria-current\", void 0],\n\t\t[\"aria-describedby\", void 0],\n\t\t[\"aria-details\", void 0],\n\t\t[\"aria-dropeffect\", void 0],\n\t\t[\"aria-flowto\", void 0],\n\t\t[\"aria-grabbed\", void 0],\n\t\t[\"aria-hidden\", void 0],\n\t\t[\"aria-keyshortcuts\", void 0],\n\t\t[\"aria-label\", [\n\t\t\t\"caption\",\n\t\t\t\"code\",\n\t\t\t\"deletion\",\n\t\t\t\"emphasis\",\n\t\t\t\"generic\",\n\t\t\t\"insertion\",\n\t\t\t\"paragraph\",\n\t\t\t\"presentation\",\n\t\t\t\"strong\",\n\t\t\t\"subscript\",\n\t\t\t\"superscript\"\n\t\t]],\n\t\t[\"aria-labelledby\", [\n\t\t\t\"caption\",\n\t\t\t\"code\",\n\t\t\t\"deletion\",\n\t\t\t\"emphasis\",\n\t\t\t\"generic\",\n\t\t\t\"insertion\",\n\t\t\t\"paragraph\",\n\t\t\t\"presentation\",\n\t\t\t\"strong\",\n\t\t\t\"subscript\",\n\t\t\t\"superscript\"\n\t\t]],\n\t\t[\"aria-live\", void 0],\n\t\t[\"aria-owns\", void 0],\n\t\t[\"aria-relevant\", void 0],\n\t\t[\"aria-roledescription\", [\"generic\"]]\n\t];\n\tfunction hasGlobalAriaAttribute(element, forRole) {\n\t\treturn kGlobalAriaAttributes.some(([attr, prohibited]) => {\n\t\t\treturn !prohibited?.includes(forRole || \"\") && element.hasAttribute(attr);\n\t\t});\n\t}\n\tfunction hasTabIndex(element) {\n\t\treturn !Number.isNaN(Number(String(element.getAttribute(\"tabindex\"))));\n\t}\n\tfunction isFocusable(element) {\n\t\treturn !isNativelyDisabled(element) && (isNativelyFocusable(element) || hasTabIndex(element));\n\t}\n\tfunction isNativelyFocusable(element) {\n\t\tconst tagName = elementSafeTagName(element);\n\t\tif ([\n\t\t\t\"BUTTON\",\n\t\t\t\"DETAILS\",\n\t\t\t\"SELECT\",\n\t\t\t\"TEXTAREA\"\n\t\t].includes(tagName)) return true;\n\t\tif (tagName === \"A\" || tagName === \"AREA\") return element.hasAttribute(\"href\");\n\t\tif (tagName === \"INPUT\") return !element.hidden;\n\t\treturn false;\n\t}\n\tvar kImplicitRoleByTagName = {\n\t\t\"A\": (e) => {\n\t\t\treturn e.hasAttribute(\"href\") ? \"link\" : null;\n\t\t},\n\t\t\"AREA\": (e) => {\n\t\t\treturn e.hasAttribute(\"href\") ? \"link\" : null;\n\t\t},\n\t\t\"ARTICLE\": () => \"article\",\n\t\t\"ASIDE\": () => \"complementary\",\n\t\t\"BLOCKQUOTE\": () => \"blockquote\",\n\t\t\"BUTTON\": () => \"button\",\n\t\t\"CAPTION\": () => \"caption\",\n\t\t\"CODE\": () => \"code\",\n\t\t\"DATALIST\": () => \"listbox\",\n\t\t\"DD\": () => \"definition\",\n\t\t\"DEL\": () => \"deletion\",\n\t\t\"DETAILS\": () => \"group\",\n\t\t\"DFN\": () => \"term\",\n\t\t\"DIALOG\": () => \"dialog\",\n\t\t\"DT\": () => \"term\",\n\t\t\"EM\": () => \"emphasis\",\n\t\t\"FIELDSET\": () => \"group\",\n\t\t\"FIGURE\": () => \"figure\",\n\t\t\"FOOTER\": (e) => closestCrossShadow(e, kAncestorPreventingLandmark) ? null : \"contentinfo\",\n\t\t\"FORM\": (e) => hasExplicitAccessibleName(e) ? \"form\" : null,\n\t\t\"H1\": () => \"heading\",\n\t\t\"H2\": () => \"heading\",\n\t\t\"H3\": () => \"heading\",\n\t\t\"H4\": () => \"heading\",\n\t\t\"H5\": () => \"heading\",\n\t\t\"H6\": () => \"heading\",\n\t\t\"HEADER\": (e) => closestCrossShadow(e, kAncestorPreventingLandmark) ? null : \"banner\",\n\t\t\"HR\": () => \"separator\",\n\t\t\"HTML\": () => \"document\",\n\t\t\"IMG\": (e) => e.getAttribute(\"alt\") === \"\" && !e.getAttribute(\"title\") && !hasGlobalAriaAttribute(e) && !hasTabIndex(e) ? \"presentation\" : \"img\",\n\t\t\"INPUT\": (e) => {\n\t\t\tconst type = e.type.toLowerCase();\n\t\t\tif (type === \"search\") return e.hasAttribute(\"list\") ? \"combobox\" : \"searchbox\";\n\t\t\tif ([\n\t\t\t\t\"email\",\n\t\t\t\t\"tel\",\n\t\t\t\t\"text\",\n\t\t\t\t\"url\",\n\t\t\t\t\"\"\n\t\t\t].includes(type)) {\n\t\t\t\tconst list = getIdRefs(e, e.getAttribute(\"list\"))[0];\n\t\t\t\treturn list && elementSafeTagName(list) === \"DATALIST\" ? \"combobox\" : \"textbox\";\n\t\t\t}\n\t\t\tif (type === \"hidden\") return null;\n\t\t\tif (type === \"file\") return \"button\";\n\t\t\treturn inputTypeToRole[type] || \"textbox\";\n\t\t},\n\t\t\"INS\": () => \"insertion\",\n\t\t\"LI\": () => \"listitem\",\n\t\t\"MAIN\": () => \"main\",\n\t\t\"MARK\": () => \"mark\",\n\t\t\"MATH\": () => \"math\",\n\t\t\"MENU\": () => \"list\",\n\t\t\"METER\": () => \"meter\",\n\t\t\"NAV\": () => \"navigation\",\n\t\t\"OL\": () => \"list\",\n\t\t\"OPTGROUP\": () => \"group\",\n\t\t\"OPTION\": () => \"option\",\n\t\t\"OUTPUT\": () => \"status\",\n\t\t\"P\": () => \"paragraph\",\n\t\t\"PROGRESS\": () => \"progressbar\",\n\t\t\"SEARCH\": () => \"search\",\n\t\t\"SECTION\": (e) => hasExplicitAccessibleName(e) ? \"region\" : null,\n\t\t\"SELECT\": (e) => e.hasAttribute(\"multiple\") || e.size > 1 ? \"listbox\" : \"combobox\",\n\t\t\"STRONG\": () => \"strong\",\n\t\t\"SUB\": () => \"subscript\",\n\t\t\"SUP\": () => \"superscript\",\n\t\t\"SVG\": () => \"img\",\n\t\t\"TABLE\": () => \"table\",\n\t\t\"TBODY\": () => \"rowgroup\",\n\t\t\"TD\": (e) => {\n\t\t\tconst table = closestCrossShadow(e, \"table\");\n\t\t\tconst role = table ? getExplicitAriaRole(table) : \"\";\n\t\t\treturn role === \"grid\" || role === \"treegrid\" ? \"gridcell\" : \"cell\";\n\t\t},\n\t\t\"TEXTAREA\": () => \"textbox\",\n\t\t\"TFOOT\": () => \"rowgroup\",\n\t\t\"TH\": (e) => {\n\t\t\tconst scope = e.getAttribute(\"scope\");\n\t\t\tif (scope === \"col\" || scope === \"colgroup\") return \"columnheader\";\n\t\t\tif (scope === \"row\" || scope === \"rowgroup\") return \"rowheader\";\n\t\t\tconst nextSibling = e.nextElementSibling;\n\t\t\tconst prevSibling = e.previousElementSibling;\n\t\t\tconst row = !!e.parentElement && elementSafeTagName(e.parentElement) === \"TR\" ? e.parentElement : void 0;\n\t\t\tif (!nextSibling && !prevSibling) {\n\t\t\t\tif (row) {\n\t\t\t\t\tconst table = closestCrossShadow(row, \"table\");\n\t\t\t\t\tif (table && table.rows.length <= 1) return null;\n\t\t\t\t}\n\t\t\t\treturn \"columnheader\";\n\t\t\t}\n\t\t\tif (isHeaderCell(nextSibling) && isHeaderCell(prevSibling)) return \"columnheader\";\n\t\t\tif (isNonEmptyDataCell(nextSibling) || isNonEmptyDataCell(prevSibling)) return \"rowheader\";\n\t\t\treturn \"columnheader\";\n\t\t},\n\t\t\"THEAD\": () => \"rowgroup\",\n\t\t\"TIME\": () => \"time\",\n\t\t\"TR\": () => \"row\",\n\t\t\"UL\": () => \"list\"\n\t};\n\tfunction isHeaderCell(element) {\n\t\treturn !!element && elementSafeTagName(element) === \"TH\";\n\t}\n\tfunction isNonEmptyDataCell(element) {\n\t\tif (!element || elementSafeTagName(element) !== \"TD\") return false;\n\t\treturn !!(element.textContent?.trim() || element.children.length > 0);\n\t}\n\tvar kPresentationInheritanceParents = {\n\t\t\"DD\": [\"DL\", \"DIV\"],\n\t\t\"DIV\": [\"DL\"],\n\t\t\"DT\": [\"DL\", \"DIV\"],\n\t\t\"LI\": [\"OL\", \"UL\"],\n\t\t\"TBODY\": [\"TABLE\"],\n\t\t\"TD\": [\"TR\"],\n\t\t\"TFOOT\": [\"TABLE\"],\n\t\t\"TH\": [\"TR\"],\n\t\t\"THEAD\": [\"TABLE\"],\n\t\t\"TR\": [\n\t\t\t\"THEAD\",\n\t\t\t\"TBODY\",\n\t\t\t\"TFOOT\",\n\t\t\t\"TABLE\"\n\t\t]\n\t};\n\tfunction getImplicitAriaRole(element) {\n\t\tconst implicitRole = kImplicitRoleByTagName[elementSafeTagName(element)]?.(element) || \"\";\n\t\tif (!implicitRole) return null;\n\t\tlet ancestor = element;\n\t\twhile (ancestor) {\n\t\t\tconst parent = parentElementOrShadowHost(ancestor);\n\t\t\tconst parents = kPresentationInheritanceParents[elementSafeTagName(ancestor)];\n\t\t\tif (!parents || !parent || !parents.includes(elementSafeTagName(parent))) break;\n\t\t\tconst parentExplicitRole = getExplicitAriaRole(parent);\n\t\t\tif ((parentExplicitRole === \"none\" || parentExplicitRole === \"presentation\") && !hasPresentationConflictResolution(parent, parentExplicitRole)) return parentExplicitRole;\n\t\t\tancestor = parent;\n\t\t}\n\t\treturn implicitRole;\n\t}\n\tvar validRoles = [\n\t\t\"alert\",\n\t\t\"alertdialog\",\n\t\t\"application\",\n\t\t\"article\",\n\t\t\"banner\",\n\t\t\"blockquote\",\n\t\t\"button\",\n\t\t\"caption\",\n\t\t\"cell\",\n\t\t\"checkbox\",\n\t\t\"code\",\n\t\t\"columnheader\",\n\t\t\"combobox\",\n\t\t\"complementary\",\n\t\t\"contentinfo\",\n\t\t\"definition\",\n\t\t\"deletion\",\n\t\t\"dialog\",\n\t\t\"directory\",\n\t\t\"document\",\n\t\t\"emphasis\",\n\t\t\"feed\",\n\t\t\"figure\",\n\t\t\"form\",\n\t\t\"generic\",\n\t\t\"grid\",\n\t\t\"gridcell\",\n\t\t\"group\",\n\t\t\"heading\",\n\t\t\"img\",\n\t\t\"insertion\",\n\t\t\"link\",\n\t\t\"list\",\n\t\t\"listbox\",\n\t\t\"listitem\",\n\t\t\"log\",\n\t\t\"main\",\n\t\t\"mark\",\n\t\t\"marquee\",\n\t\t\"math\",\n\t\t\"meter\",\n\t\t\"menu\",\n\t\t\"menubar\",\n\t\t\"menuitem\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"navigation\",\n\t\t\"none\",\n\t\t\"note\",\n\t\t\"option\",\n\t\t\"paragraph\",\n\t\t\"presentation\",\n\t\t\"progressbar\",\n\t\t\"radio\",\n\t\t\"radiogroup\",\n\t\t\"region\",\n\t\t\"row\",\n\t\t\"rowgroup\",\n\t\t\"rowheader\",\n\t\t\"scrollbar\",\n\t\t\"search\",\n\t\t\"searchbox\",\n\t\t\"separator\",\n\t\t\"slider\",\n\t\t\"spinbutton\",\n\t\t\"status\",\n\t\t\"strong\",\n\t\t\"subscript\",\n\t\t\"superscript\",\n\t\t\"switch\",\n\t\t\"tab\",\n\t\t\"table\",\n\t\t\"tablist\",\n\t\t\"tabpanel\",\n\t\t\"term\",\n\t\t\"textbox\",\n\t\t\"time\",\n\t\t\"timer\",\n\t\t\"toolbar\",\n\t\t\"tooltip\",\n\t\t\"tree\",\n\t\t\"treegrid\",\n\t\t\"treeitem\"\n\t];\n\tfunction getExplicitAriaRole(element) {\n\t\treturn (element.getAttribute(\"role\") || \"\").split(\" \").map((role) => role.trim()).find((role) => validRoles.includes(role)) || null;\n\t}\n\tfunction hasPresentationConflictResolution(element, role) {\n\t\treturn hasGlobalAriaAttribute(element, role) || isFocusable(element);\n\t}\n\tfunction getAriaRole(element) {\n\t\tconst explicitRole = getExplicitAriaRole(element);\n\t\tif (!explicitRole) return getImplicitAriaRole(element);\n\t\tif (explicitRole === \"none\" || explicitRole === \"presentation\") {\n\t\t\tconst implicitRole = getImplicitAriaRole(element);\n\t\t\tif (hasPresentationConflictResolution(element, implicitRole)) return implicitRole;\n\t\t}\n\t\treturn explicitRole;\n\t}\n\tfunction getAriaBoolean(attr) {\n\t\treturn attr === null ? void 0 : attr.toLowerCase() === \"true\";\n\t}\n\tfunction isElementIgnoredForAria(element) {\n\t\treturn [\n\t\t\t\"STYLE\",\n\t\t\t\"SCRIPT\",\n\t\t\t\"NOSCRIPT\",\n\t\t\t\"TEMPLATE\"\n\t\t].includes(elementSafeTagName(element));\n\t}\n\tfunction isElementHiddenForAria(element) {\n\t\tif (isElementIgnoredForAria(element)) return true;\n\t\tconst style = getElementComputedStyle(element);\n\t\tconst isSlot = element.nodeName === \"SLOT\";\n\t\tif (style?.display === \"contents\" && !isSlot) {\n\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) {\n\t\t\t\tif (child.nodeType === 1 && !isElementHiddenForAria(child)) return false;\n\t\t\t\tif (child.nodeType === 3 && isVisibleTextNode(child)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tif (!(element.nodeName === \"OPTION\" && !!element.closest(\"select\")) && !isSlot && !isElementStyleVisibilityVisible(element, style)) return true;\n\t\treturn belongsToDisplayNoneOrAriaHiddenOrNonSlotted(element);\n\t}\n\tfunction belongsToDisplayNoneOrAriaHiddenOrNonSlotted(element) {\n\t\tlet hidden = cacheIsHidden?.get(element);\n\t\tif (hidden === void 0) {\n\t\t\thidden = false;\n\t\t\tif (element.parentElement && element.parentElement.shadowRoot && !element.assignedSlot) hidden = true;\n\t\t\tif (!hidden) {\n\t\t\t\tconst style = getElementComputedStyle(element);\n\t\t\t\thidden = !style || style.display === \"none\" || getAriaBoolean(element.getAttribute(\"aria-hidden\")) === true;\n\t\t\t}\n\t\t\tif (!hidden) {\n\t\t\t\tconst parent = parentElementOrShadowHost(element);\n\t\t\t\tif (parent) hidden = belongsToDisplayNoneOrAriaHiddenOrNonSlotted(parent);\n\t\t\t}\n\t\t\tcacheIsHidden?.set(element, hidden);\n\t\t}\n\t\treturn hidden;\n\t}\n\tfunction getIdRefs(element, ref) {\n\t\tif (!ref) return [];\n\t\tconst root = enclosingShadowRootOrDocument(element);\n\t\tif (!root) return [];\n\t\ttry {\n\t\t\tconst ids = ref.split(\" \").filter((id) => !!id);\n\t\t\tconst result = [];\n\t\t\tfor (const id of ids) {\n\t\t\t\tconst firstElement = root.querySelector(\"#\" + CSS.escape(id));\n\t\t\t\tif (firstElement && !result.includes(firstElement)) result.push(firstElement);\n\t\t\t}\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\treturn [];\n\t\t}\n\t}\n\tfunction trimFlatString(s) {\n\t\treturn s.trim();\n\t}\n\tfunction asFlatString(s) {\n\t\treturn s.split(\"\\xA0\").map((chunk) => chunk.replace(/\\r\\n/g, \"\\n\").replace(/[\\u200b\\u00ad]/g, \"\").replace(/\\s\\s*/g, \" \")).join(\"\\xA0\").trim();\n\t}\n\tfunction queryInAriaOwned(element, selector) {\n\t\tconst result = [...element.querySelectorAll(selector)];\n\t\tfor (const owned of getIdRefs(element, element.getAttribute(\"aria-owns\"))) {\n\t\t\tif (owned.matches(selector)) result.push(owned);\n\t\t\tresult.push(...owned.querySelectorAll(selector));\n\t\t}\n\t\treturn result;\n\t}\n\tfunction getCSSContent(element, pseudo) {\n\t\tconst cache = pseudo === \"::before\" ? cachePseudoContentBefore : pseudo === \"::after\" ? cachePseudoContentAfter : cachePseudoContent;\n\t\tif (cache?.has(element)) return cache?.get(element);\n\t\tconst style = getElementComputedStyle(element, pseudo);\n\t\tlet content;\n\t\tif (style) {\n\t\t\tconst contentValue = style.content;\n\t\t\tif (contentValue && contentValue !== \"none\" && contentValue !== \"normal\") {\n\t\t\t\tif (style.display !== \"none\" && style.visibility !== \"hidden\") content = parseCSSContentPropertyAsString(element, contentValue, !!pseudo);\n\t\t\t}\n\t\t}\n\t\tif (pseudo && content !== void 0) {\n\t\t\tif ((style?.display || \"inline\") !== \"inline\") content = \" \" + content + \" \";\n\t\t}\n\t\tif (cache) cache.set(element, content);\n\t\treturn content;\n\t}\n\tfunction parseCSSContentPropertyAsString(element, content, isPseudo) {\n\t\tif (!content || content === \"none\" || content === \"normal\") return;\n\t\ttry {\n\t\t\tlet tokens = tokenize(content).filter((token) => !(token instanceof WhitespaceToken));\n\t\t\tconst delimIndex = tokens.findIndex((token) => token instanceof DelimToken && token.value === \"/\");\n\t\t\tif (delimIndex !== -1) tokens = tokens.slice(delimIndex + 1);\n\t\t\telse if (!isPseudo) return;\n\t\t\tconst accumulated = [];\n\t\t\tlet index = 0;\n\t\t\twhile (index < tokens.length) if (tokens[index] instanceof StringToken) {\n\t\t\t\taccumulated.push(tokens[index].value);\n\t\t\t\tindex++;\n\t\t\t} else if (index + 2 < tokens.length && tokens[index] instanceof FunctionToken && tokens[index].value === \"attr\" && tokens[index + 1] instanceof IdentToken && tokens[index + 2] instanceof CloseParenToken) {\n\t\t\t\tconst attrName = tokens[index + 1].value;\n\t\t\t\taccumulated.push(element.getAttribute(attrName) || \"\");\n\t\t\t\tindex += 3;\n\t\t\t} else return;\n\t\t\treturn accumulated.join(\"\");\n\t\t} catch {}\n\t}\n\tfunction getAriaLabelledByElements(element) {\n\t\tconst ref = element.getAttribute(\"aria-labelledby\");\n\t\tif (ref === null) return null;\n\t\tconst refs = getIdRefs(element, ref);\n\t\treturn refs.length ? refs : null;\n\t}\n\tfunction allowsNameFromContent(role, targetDescendant) {\n\t\tconst alwaysAllowsNameFromContent = [\n\t\t\t\"button\",\n\t\t\t\"cell\",\n\t\t\t\"checkbox\",\n\t\t\t\"columnheader\",\n\t\t\t\"gridcell\",\n\t\t\t\"heading\",\n\t\t\t\"link\",\n\t\t\t\"menuitem\",\n\t\t\t\"menuitemcheckbox\",\n\t\t\t\"menuitemradio\",\n\t\t\t\"option\",\n\t\t\t\"radio\",\n\t\t\t\"row\",\n\t\t\t\"rowheader\",\n\t\t\t\"switch\",\n\t\t\t\"tab\",\n\t\t\t\"tooltip\",\n\t\t\t\"treeitem\"\n\t\t].includes(role);\n\t\tconst descendantAllowsNameFromContent = targetDescendant && [\n\t\t\t\"\",\n\t\t\t\"caption\",\n\t\t\t\"code\",\n\t\t\t\"contentinfo\",\n\t\t\t\"definition\",\n\t\t\t\"deletion\",\n\t\t\t\"emphasis\",\n\t\t\t\"insertion\",\n\t\t\t\"list\",\n\t\t\t\"listitem\",\n\t\t\t\"mark\",\n\t\t\t\"none\",\n\t\t\t\"paragraph\",\n\t\t\t\"presentation\",\n\t\t\t\"region\",\n\t\t\t\"row\",\n\t\t\t\"rowgroup\",\n\t\t\t\"section\",\n\t\t\t\"strong\",\n\t\t\t\"subscript\",\n\t\t\t\"superscript\",\n\t\t\t\"table\",\n\t\t\t\"term\",\n\t\t\t\"time\"\n\t\t].includes(role);\n\t\treturn alwaysAllowsNameFromContent || descendantAllowsNameFromContent;\n\t}\n\tfunction getElementAccessibleName(element, includeHidden) {\n\t\tconst cache = includeHidden ? cacheAccessibleNameHidden : cacheAccessibleName;\n\t\tlet accessibleName = cache?.get(element);\n\t\tif (accessibleName === void 0) {\n\t\t\taccessibleName = \"\";\n\t\t\tif (![\n\t\t\t\t\"caption\",\n\t\t\t\t\"code\",\n\t\t\t\t\"definition\",\n\t\t\t\t\"deletion\",\n\t\t\t\t\"emphasis\",\n\t\t\t\t\"generic\",\n\t\t\t\t\"insertion\",\n\t\t\t\t\"mark\",\n\t\t\t\t\"paragraph\",\n\t\t\t\t\"presentation\",\n\t\t\t\t\"strong\",\n\t\t\t\t\"subscript\",\n\t\t\t\t\"suggestion\",\n\t\t\t\t\"superscript\",\n\t\t\t\t\"term\",\n\t\t\t\t\"time\"\n\t\t\t].includes(getAriaRole(element) || \"\")) accessibleName = asFlatString(getTextAlternativeInternal(element, {\n\t\t\t\tincludeHidden,\n\t\t\t\tvisitedElements: /* @__PURE__ */ new Set(),\n\t\t\t\tembeddedInTargetElement: \"self\"\n\t\t\t}));\n\t\t\tcache?.set(element, accessibleName);\n\t\t}\n\t\treturn accessibleName;\n\t}\n\tvar kAriaInvalidRoles = [\n\t\t\"application\",\n\t\t\"checkbox\",\n\t\t\"columnheader\",\n\t\t\"combobox\",\n\t\t\"gridcell\",\n\t\t\"listbox\",\n\t\t\"radiogroup\",\n\t\t\"rowheader\",\n\t\t\"searchbox\",\n\t\t\"slider\",\n\t\t\"spinbutton\",\n\t\t\"switch\",\n\t\t\"textbox\",\n\t\t\"tree\"\n\t];\n\tfunction getAriaInvalid(element) {\n\t\tconst ariaInvalid = element.getAttribute(\"aria-invalid\");\n\t\tif (!ariaInvalid || ariaInvalid.trim() === \"\" || ariaInvalid.toLocaleLowerCase() === \"false\") return \"false\";\n\t\tif (ariaInvalid === \"true\" || ariaInvalid === \"grammar\" || ariaInvalid === \"spelling\") return ariaInvalid;\n\t\treturn \"true\";\n\t}\n\tfunction getTextAlternativeInternal(element, options) {\n\t\tif (options.visitedElements.has(element)) return \"\";\n\t\tconst childOptions = {\n\t\t\t...options,\n\t\t\tembeddedInTargetElement: options.embeddedInTargetElement === \"self\" ? \"descendant\" : options.embeddedInTargetElement\n\t\t};\n\t\tif (!options.includeHidden) {\n\t\t\tconst isEmbeddedInHiddenReferenceTraversal = !!options.embeddedInLabelledBy?.hidden || !!options.embeddedInDescribedBy?.hidden || !!options.embeddedInNativeTextAlternative?.hidden || !!options.embeddedInLabel?.hidden;\n\t\t\tif (isElementIgnoredForAria(element) || !isEmbeddedInHiddenReferenceTraversal && isElementHiddenForAria(element)) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t\tconst labelledBy = getAriaLabelledByElements(element);\n\t\tif (!options.embeddedInLabelledBy) {\n\t\t\tconst accessibleName = (labelledBy || []).map((ref) => getTextAlternativeInternal(ref, {\n\t\t\t\t...options,\n\t\t\t\tembeddedInLabelledBy: {\n\t\t\t\t\telement: ref,\n\t\t\t\t\thidden: isElementHiddenForAria(ref)\n\t\t\t\t},\n\t\t\t\tembeddedInDescribedBy: void 0,\n\t\t\t\tembeddedInTargetElement: void 0,\n\t\t\t\tembeddedInLabel: void 0,\n\t\t\t\tembeddedInNativeTextAlternative: void 0\n\t\t\t})).join(\" \");\n\t\t\tif (accessibleName) return accessibleName;\n\t\t}\n\t\tconst role = getAriaRole(element) || \"\";\n\t\tconst tagName = elementSafeTagName(element);\n\t\tif (!!options.embeddedInLabel || !!options.embeddedInLabelledBy || options.embeddedInTargetElement === \"descendant\") {\n\t\t\tconst isOwnLabel = [...element.labels || []].includes(element);\n\t\t\tconst isOwnLabelledBy = (labelledBy || []).includes(element);\n\t\t\tif (!isOwnLabel && !isOwnLabelledBy) {\n\t\t\t\tif (role === \"textbox\") {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\tif (tagName === \"INPUT\" || tagName === \"TEXTAREA\") return element.value;\n\t\t\t\t\treturn element.textContent || \"\";\n\t\t\t\t}\n\t\t\t\tif ([\"combobox\", \"listbox\"].includes(role)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\tlet selectedOptions;\n\t\t\t\t\tif (tagName === \"SELECT\") {\n\t\t\t\t\t\tselectedOptions = [...element.selectedOptions];\n\t\t\t\t\t\tif (!selectedOptions.length && element.options.length) selectedOptions.push(element.options[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst listbox = role === \"combobox\" ? queryInAriaOwned(element, \"*\").find((e) => getAriaRole(e) === \"listbox\") : element;\n\t\t\t\t\t\tselectedOptions = listbox ? queryInAriaOwned(listbox, \"[aria-selected=\\\"true\\\"]\").filter((e) => getAriaRole(e) === \"option\") : [];\n\t\t\t\t\t}\n\t\t\t\t\tif (!selectedOptions.length && tagName === \"INPUT\") return element.value;\n\t\t\t\t\treturn selectedOptions.map((option) => getTextAlternativeInternal(option, childOptions)).join(\" \");\n\t\t\t\t}\n\t\t\t\tif ([\n\t\t\t\t\t\"progressbar\",\n\t\t\t\t\t\"scrollbar\",\n\t\t\t\t\t\"slider\",\n\t\t\t\t\t\"spinbutton\",\n\t\t\t\t\t\"meter\"\n\t\t\t\t].includes(role)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\tif (element.hasAttribute(\"aria-valuetext\")) return element.getAttribute(\"aria-valuetext\") || \"\";\n\t\t\t\t\tif (element.hasAttribute(\"aria-valuenow\")) return element.getAttribute(\"aria-valuenow\") || \"\";\n\t\t\t\t\treturn element.getAttribute(\"value\") || \"\";\n\t\t\t\t}\n\t\t\t\tif ([\"menu\"].includes(role)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\treturn \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst ariaLabel = element.getAttribute(\"aria-label\") || \"\";\n\t\tif (trimFlatString(ariaLabel)) {\n\t\t\toptions.visitedElements.add(element);\n\t\t\treturn ariaLabel;\n\t\t}\n\t\tif (![\"presentation\", \"none\"].includes(role)) {\n\t\t\tif (tagName === \"INPUT\" && [\n\t\t\t\t\"button\",\n\t\t\t\t\"submit\",\n\t\t\t\t\"reset\"\n\t\t\t].includes(element.type)) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst value = element.value || \"\";\n\t\t\t\tif (trimFlatString(value)) return value;\n\t\t\t\tif (element.type === \"submit\") return \"Submit\";\n\t\t\t\tif (element.type === \"reset\") return \"Reset\";\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"INPUT\" && element.type === \"file\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length && !options.embeddedInLabelledBy) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\treturn \"Choose File\";\n\t\t\t}\n\t\t\tif (tagName === \"INPUT\" && element.type === \"image\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length && !options.embeddedInLabelledBy) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\tconst alt = element.getAttribute(\"alt\") || \"\";\n\t\t\t\tif (trimFlatString(alt)) return alt;\n\t\t\t\tconst title = element.getAttribute(\"title\") || \"\";\n\t\t\t\tif (trimFlatString(title)) return title;\n\t\t\t\treturn \"Submit\";\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"BUTTON\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"OUTPUT\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (!labelledBy && (tagName === \"TEXTAREA\" || tagName === \"SELECT\" || tagName === \"INPUT\")) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst labels = element.labels || [];\n\t\t\t\tif (labels.length) return getAccessibleNameFromAssociatedLabels(labels, options);\n\t\t\t\tconst usePlaceholder = tagName === \"INPUT\" && [\n\t\t\t\t\t\"text\",\n\t\t\t\t\t\"password\",\n\t\t\t\t\t\"search\",\n\t\t\t\t\t\"tel\",\n\t\t\t\t\t\"email\",\n\t\t\t\t\t\"url\"\n\t\t\t\t].includes(element.type) || tagName === \"TEXTAREA\";\n\t\t\t\tconst placeholder = element.getAttribute(\"placeholder\") || \"\";\n\t\t\t\tconst title = element.getAttribute(\"title\") || \"\";\n\t\t\t\tif (!usePlaceholder || title) return title;\n\t\t\t\treturn placeholder;\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"FIELDSET\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"LEGEND\") return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInNativeTextAlternative: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (!labelledBy && tagName === \"FIGURE\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"FIGCAPTION\") return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInNativeTextAlternative: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"IMG\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst alt = element.getAttribute(\"alt\") || \"\";\n\t\t\t\tif (trimFlatString(alt)) return alt;\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"TABLE\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"CAPTION\") return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInNativeTextAlternative: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst summary = element.getAttribute(\"summary\") || \"\";\n\t\t\t\tif (summary) return summary;\n\t\t\t}\n\t\t\tif (tagName === \"AREA\") {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tconst alt = element.getAttribute(\"alt\") || \"\";\n\t\t\t\tif (trimFlatString(alt)) return alt;\n\t\t\t\treturn element.getAttribute(\"title\") || \"\";\n\t\t\t}\n\t\t\tif (tagName === \"SVG\" || element.ownerSVGElement) {\n\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\tfor (let child = element.firstElementChild; child; child = child.nextElementSibling) if (elementSafeTagName(child) === \"TITLE\" && child.ownerSVGElement) return getTextAlternativeInternal(child, {\n\t\t\t\t\t...childOptions,\n\t\t\t\t\tembeddedInLabelledBy: {\n\t\t\t\t\t\telement: child,\n\t\t\t\t\t\thidden: isElementHiddenForAria(child)\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (element.ownerSVGElement && tagName === \"A\") {\n\t\t\t\tconst title = element.getAttribute(\"xlink:title\") || \"\";\n\t\t\t\tif (trimFlatString(title)) {\n\t\t\t\t\toptions.visitedElements.add(element);\n\t\t\t\t\treturn title;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst shouldNameFromContentForSummary = tagName === \"SUMMARY\" && ![\"presentation\", \"none\"].includes(role);\n\t\tif (allowsNameFromContent(role, options.embeddedInTargetElement === \"descendant\") || shouldNameFromContentForSummary || !!options.embeddedInLabelledBy || !!options.embeddedInDescribedBy || !!options.embeddedInLabel || !!options.embeddedInNativeTextAlternative) {\n\t\t\toptions.visitedElements.add(element);\n\t\t\tconst accessibleName = innerAccumulatedElementText(element, childOptions);\n\t\t\tif (options.embeddedInTargetElement === \"self\" ? trimFlatString(accessibleName) : accessibleName) return accessibleName;\n\t\t}\n\t\tif (![\"presentation\", \"none\"].includes(role) || tagName === \"IFRAME\") {\n\t\t\toptions.visitedElements.add(element);\n\t\t\tconst title = element.getAttribute(\"title\") || \"\";\n\t\t\tif (trimFlatString(title)) return title;\n\t\t}\n\t\toptions.visitedElements.add(element);\n\t\treturn \"\";\n\t}\n\tfunction innerAccumulatedElementText(element, options) {\n\t\tconst tokens = [];\n\t\tconst visit = (node, skipSlotted) => {\n\t\t\tif (skipSlotted && node.assignedSlot) return;\n\t\t\tif (node.nodeType === 1) {\n\t\t\t\tconst display = getElementComputedStyle(node)?.display || \"inline\";\n\t\t\t\tlet token = getTextAlternativeInternal(node, options);\n\t\t\t\tif (display !== \"inline\" || node.nodeName === \"BR\") token = \" \" + token + \" \";\n\t\t\t\ttokens.push(token);\n\t\t\t} else if (node.nodeType === 3) tokens.push(node.textContent || \"\");\n\t\t};\n\t\ttokens.push(getCSSContent(element, \"::before\") || \"\");\n\t\tconst content = getCSSContent(element);\n\t\tif (content !== void 0) tokens.push(content);\n\t\telse {\n\t\t\tconst assignedNodes = element.nodeName === \"SLOT\" ? element.assignedNodes() : [];\n\t\t\tif (assignedNodes.length) for (const child of assignedNodes) visit(child, false);\n\t\t\telse {\n\t\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) visit(child, true);\n\t\t\t\tif (element.shadowRoot) for (let child = element.shadowRoot.firstChild; child; child = child.nextSibling) visit(child, true);\n\t\t\t\tfor (const owned of getIdRefs(element, element.getAttribute(\"aria-owns\"))) visit(owned, true);\n\t\t\t}\n\t\t}\n\t\ttokens.push(getCSSContent(element, \"::after\") || \"\");\n\t\treturn tokens.join(\"\");\n\t}\n\tvar kAriaSelectedRoles = [\n\t\t\"gridcell\",\n\t\t\"option\",\n\t\t\"row\",\n\t\t\"tab\",\n\t\t\"rowheader\",\n\t\t\"columnheader\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaSelected(element) {\n\t\tif (elementSafeTagName(element) === \"OPTION\") return element.selected;\n\t\tif (kAriaSelectedRoles.includes(getAriaRole(element) || \"\")) return getAriaBoolean(element.getAttribute(\"aria-selected\")) === true;\n\t\treturn false;\n\t}\n\tvar kAriaCheckedRoles = [\n\t\t\"checkbox\",\n\t\t\"menuitemcheckbox\",\n\t\t\"option\",\n\t\t\"radio\",\n\t\t\"switch\",\n\t\t\"menuitemradio\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaChecked(element) {\n\t\tconst result = getChecked(element, true);\n\t\treturn result === \"error\" ? false : result;\n\t}\n\tfunction getChecked(element, allowMixed) {\n\t\tconst tagName = elementSafeTagName(element);\n\t\tif (allowMixed && tagName === \"INPUT\" && element.indeterminate) return \"mixed\";\n\t\tif (tagName === \"INPUT\" && [\"checkbox\", \"radio\"].includes(element.type)) return element.checked;\n\t\tif (kAriaCheckedRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst checked = element.getAttribute(\"aria-checked\");\n\t\t\tif (checked === \"true\") return true;\n\t\t\tif (allowMixed && checked === \"mixed\") return \"mixed\";\n\t\t\treturn false;\n\t\t}\n\t\treturn \"error\";\n\t}\n\tvar kAriaPressedRoles = [\"button\"];\n\tfunction getAriaPressed(element) {\n\t\tif (kAriaPressedRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst pressed = element.getAttribute(\"aria-pressed\");\n\t\t\tif (pressed === \"true\") return true;\n\t\t\tif (pressed === \"mixed\") return \"mixed\";\n\t\t}\n\t\treturn false;\n\t}\n\tvar kAriaExpandedRoles = [\n\t\t\"application\",\n\t\t\"button\",\n\t\t\"checkbox\",\n\t\t\"combobox\",\n\t\t\"gridcell\",\n\t\t\"link\",\n\t\t\"listbox\",\n\t\t\"menuitem\",\n\t\t\"row\",\n\t\t\"rowheader\",\n\t\t\"tab\",\n\t\t\"treeitem\",\n\t\t\"columnheader\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"rowheader\",\n\t\t\"switch\"\n\t];\n\tfunction getAriaExpanded(element) {\n\t\tif (elementSafeTagName(element) === \"DETAILS\") return element.open;\n\t\tif (kAriaExpandedRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst expanded = element.getAttribute(\"aria-expanded\");\n\t\t\tif (expanded === null) return void 0;\n\t\t\tif (expanded === \"true\") return true;\n\t\t\treturn false;\n\t\t}\n\t}\n\tvar kAriaLevelRoles = [\n\t\t\"heading\",\n\t\t\"listitem\",\n\t\t\"row\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaLevel(element) {\n\t\tconst native = {\n\t\t\t\"H1\": 1,\n\t\t\t\"H2\": 2,\n\t\t\t\"H3\": 3,\n\t\t\t\"H4\": 4,\n\t\t\t\"H5\": 5,\n\t\t\t\"H6\": 6\n\t\t}[elementSafeTagName(element)];\n\t\tif (native) return native;\n\t\tif (kAriaLevelRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst attr = element.getAttribute(\"aria-level\");\n\t\t\tconst value = attr === null ? NaN : Number(attr);\n\t\t\tif (Number.isInteger(value) && value >= 1) return value;\n\t\t}\n\t\treturn 0;\n\t}\n\tvar kAriaDisabledRoles = [\n\t\t\"application\",\n\t\t\"button\",\n\t\t\"composite\",\n\t\t\"gridcell\",\n\t\t\"group\",\n\t\t\"input\",\n\t\t\"link\",\n\t\t\"menuitem\",\n\t\t\"scrollbar\",\n\t\t\"separator\",\n\t\t\"tab\",\n\t\t\"checkbox\",\n\t\t\"columnheader\",\n\t\t\"combobox\",\n\t\t\"grid\",\n\t\t\"listbox\",\n\t\t\"menu\",\n\t\t\"menubar\",\n\t\t\"menuitemcheckbox\",\n\t\t\"menuitemradio\",\n\t\t\"option\",\n\t\t\"radio\",\n\t\t\"radiogroup\",\n\t\t\"row\",\n\t\t\"rowheader\",\n\t\t\"searchbox\",\n\t\t\"select\",\n\t\t\"slider\",\n\t\t\"spinbutton\",\n\t\t\"switch\",\n\t\t\"tablist\",\n\t\t\"textbox\",\n\t\t\"toolbar\",\n\t\t\"tree\",\n\t\t\"treegrid\",\n\t\t\"treeitem\"\n\t];\n\tfunction getAriaDisabled(element) {\n\t\treturn isNativelyDisabled(element) || hasExplicitAriaDisabled(element);\n\t}\n\tfunction isNativelyDisabled(element) {\n\t\treturn [\n\t\t\t\"BUTTON\",\n\t\t\t\"INPUT\",\n\t\t\t\"SELECT\",\n\t\t\t\"TEXTAREA\",\n\t\t\t\"OPTION\",\n\t\t\t\"OPTGROUP\"\n\t\t].includes(elementSafeTagName(element)) && (element.hasAttribute(\"disabled\") || belongsToDisabledOptGroup(element) || belongsToDisabledFieldSet(element));\n\t}\n\tfunction belongsToDisabledOptGroup(element) {\n\t\treturn elementSafeTagName(element) === \"OPTION\" && !!element.closest(\"OPTGROUP[DISABLED]\");\n\t}\n\tfunction belongsToDisabledFieldSet(element) {\n\t\tconst fieldSetElement = element?.closest(\"FIELDSET[DISABLED]\");\n\t\tif (!fieldSetElement) return false;\n\t\tconst legendElement = fieldSetElement.querySelector(\":scope > LEGEND\");\n\t\treturn !legendElement || !legendElement.contains(element);\n\t}\n\tfunction hasExplicitAriaDisabled(element, isAncestor = false) {\n\t\tif (!element) return false;\n\t\tif (isAncestor || kAriaDisabledRoles.includes(getAriaRole(element) || \"\")) {\n\t\t\tconst attribute = (element.getAttribute(\"aria-disabled\") || \"\").toLowerCase();\n\t\t\tif (attribute === \"true\") return true;\n\t\t\tif (attribute === \"false\") return false;\n\t\t\treturn hasExplicitAriaDisabled(parentElementOrShadowHost(element), true);\n\t\t}\n\t\treturn false;\n\t}\n\tfunction getAccessibleNameFromAssociatedLabels(labels, options) {\n\t\treturn [...labels].map((label) => getTextAlternativeInternal(label, {\n\t\t\t...options,\n\t\t\tembeddedInLabel: {\n\t\t\t\telement: label,\n\t\t\t\thidden: isElementHiddenForAria(label)\n\t\t\t},\n\t\t\tembeddedInNativeTextAlternative: void 0,\n\t\t\tembeddedInLabelledBy: void 0,\n\t\t\tembeddedInDescribedBy: void 0,\n\t\t\tembeddedInTargetElement: void 0\n\t\t})).filter((accessibleName) => !!accessibleName).join(\" \");\n\t}\n\tfunction receivesPointerEvents(element) {\n\t\tconst cache = cachePointerEvents;\n\t\tlet e = element;\n\t\tlet result;\n\t\tconst parents = [];\n\t\tfor (; e; e = parentElementOrShadowHost(e)) {\n\t\t\tconst cached = cache.get(e);\n\t\t\tif (cached !== void 0) {\n\t\t\t\tresult = cached;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tparents.push(e);\n\t\t\tconst style = getElementComputedStyle(e);\n\t\t\tif (!style) {\n\t\t\t\tresult = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst value = style.pointerEvents;\n\t\t\tif (value) {\n\t\t\t\tresult = value !== \"none\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (result === void 0) result = true;\n\t\tfor (const parent of parents) cache.set(parent, result);\n\t\treturn result;\n\t}\n\tvar cacheAccessibleName;\n\tvar cacheAccessibleNameHidden;\n\tvar cacheAccessibleDescription;\n\tvar cacheAccessibleDescriptionHidden;\n\tvar cacheAccessibleErrorMessage;\n\tvar cacheIsHidden;\n\tvar cachePseudoContent;\n\tvar cachePseudoContentBefore;\n\tvar cachePseudoContentAfter;\n\tvar cachePointerEvents;\n\tvar cachesCounter = 0;\n\tfunction beginAriaCaches() {\n\t\tbeginDOMCaches();\n\t\t++cachesCounter;\n\t\tcacheAccessibleName ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleNameHidden ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleDescription ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleDescriptionHidden ??= /* @__PURE__ */ new Map();\n\t\tcacheAccessibleErrorMessage ??= /* @__PURE__ */ new Map();\n\t\tcacheIsHidden ??= /* @__PURE__ */ new Map();\n\t\tcachePseudoContent ??= /* @__PURE__ */ new Map();\n\t\tcachePseudoContentBefore ??= /* @__PURE__ */ new Map();\n\t\tcachePseudoContentAfter ??= /* @__PURE__ */ new Map();\n\t\tcachePointerEvents ??= /* @__PURE__ */ new Map();\n\t}\n\tfunction endAriaCaches() {\n\t\tif (!--cachesCounter) {\n\t\t\tcacheAccessibleName = void 0;\n\t\t\tcacheAccessibleNameHidden = void 0;\n\t\t\tcacheAccessibleDescription = void 0;\n\t\t\tcacheAccessibleDescriptionHidden = void 0;\n\t\t\tcacheAccessibleErrorMessage = void 0;\n\t\t\tcacheIsHidden = void 0;\n\t\t\tcachePseudoContent = void 0;\n\t\t\tcachePseudoContentBefore = void 0;\n\t\t\tcachePseudoContentAfter = void 0;\n\t\t\tcachePointerEvents = void 0;\n\t\t}\n\t\tendDOMCaches();\n\t}\n\tvar inputTypeToRole = {\n\t\t\"button\": \"button\",\n\t\t\"checkbox\": \"checkbox\",\n\t\t\"image\": \"button\",\n\t\t\"number\": \"spinbutton\",\n\t\t\"radio\": \"radio\",\n\t\t\"range\": \"slider\",\n\t\t\"reset\": \"button\",\n\t\t\"submit\": \"button\"\n\t};\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/ariaSnapshot.ts\n\t/**\n\t* Copyright (c) Microsoft Corporation.\n\t*\n\t* Licensed under the Apache License, Version 2.0 (the \"License\");\n\t* you may not use this file except in compliance with the License.\n\t* You may obtain a copy of the License at\n\t*\n\t* http://www.apache.org/licenses/LICENSE-2.0\n\t*\n\t* Unless required by applicable law or agreed to in writing, software\n\t* distributed under the License is distributed on an \"AS IS\" BASIS,\n\t* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t* See the License for the specific language governing permissions and\n\t* limitations under the License.\n\t*/\n\tvar lastRef = 0;\n\tfunction toInternalOptions(options) {\n\t\tconst renderBoxes = options.boxes;\n\t\tif (options.mode === \"ai\") return {\n\t\t\tvisibility: \"ariaOrVisible\",\n\t\t\trefs: \"interactable\",\n\t\t\trefPrefix: options.refPrefix,\n\t\t\tincludeGenericRole: true,\n\t\t\trenderActive: !options.doNotRenderActive,\n\t\t\trenderCursorPointer: true,\n\t\t\trenderBoxes\n\t\t};\n\t\tif (options.mode === \"autoexpect\") return {\n\t\t\tvisibility: \"ariaAndVisible\",\n\t\t\trefs: \"none\",\n\t\t\trenderBoxes\n\t\t};\n\t\tif (options.mode === \"codegen\") return {\n\t\t\tvisibility: \"aria\",\n\t\t\trefs: \"none\",\n\t\t\trenderStringsAsRegex: true,\n\t\t\trenderBoxes\n\t\t};\n\t\treturn {\n\t\t\tvisibility: \"aria\",\n\t\t\trefs: \"none\",\n\t\t\trenderBoxes\n\t\t};\n\t}\n\tfunction generateAriaTree(rootElement, publicOptions) {\n\t\tconst options = toInternalOptions(publicOptions);\n\t\tconst visited = /* @__PURE__ */ new Set();\n\t\tconst snapshot = {\n\t\t\troot: {\n\t\t\t\trole: \"fragment\",\n\t\t\t\tname: \"\",\n\t\t\t\tchildren: [],\n\t\t\t\tprops: {},\n\t\t\t\tbox: computeBox(rootElement),\n\t\t\t\treceivesPointerEvents: true\n\t\t\t},\n\t\t\telements: /* @__PURE__ */ new Map(),\n\t\t\trefs: /* @__PURE__ */ new Map(),\n\t\t\tiframeRefs: []\n\t\t};\n\t\tsetAriaNodeElement(snapshot.root, rootElement);\n\t\tconst visit = (ariaNode, node, parentElementVisible) => {\n\t\t\tif (visited.has(node)) return;\n\t\t\tvisited.add(node);\n\t\t\tif (node.nodeType === Node.TEXT_NODE && node.nodeValue) {\n\t\t\t\tif (!parentElementVisible) return;\n\t\t\t\tconst text = node.nodeValue;\n\t\t\t\tif (ariaNode.role !== \"textbox\" && text) ariaNode.children.push(node.nodeValue || \"\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (node.nodeType !== Node.ELEMENT_NODE) return;\n\t\t\tconst element = node;\n\t\t\tconst isElementVisibleForAria = !isElementHiddenForAria(element);\n\t\t\tlet visible = isElementVisibleForAria;\n\t\t\tif (options.visibility === \"ariaOrVisible\") visible = isElementVisibleForAria || isElementVisible(element);\n\t\t\tif (options.visibility === \"ariaAndVisible\") visible = isElementVisibleForAria && isElementVisible(element);\n\t\t\tif (options.visibility === \"aria\" && !visible) return;\n\t\t\tconst ariaChildren = [];\n\t\t\tif (element.hasAttribute(\"aria-owns\")) {\n\t\t\t\tconst ids = element.getAttribute(\"aria-owns\").split(/\\s+/);\n\t\t\t\tfor (const id of ids) {\n\t\t\t\t\tconst ownedElement = rootElement.ownerDocument.getElementById(id);\n\t\t\t\t\tif (ownedElement) ariaChildren.push(ownedElement);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst childAriaNode = visible ? toAriaNode(element, options) : null;\n\t\t\tif (childAriaNode) {\n\t\t\t\tif (childAriaNode.ref) {\n\t\t\t\t\tsnapshot.elements.set(childAriaNode.ref, element);\n\t\t\t\t\tsnapshot.refs.set(element, childAriaNode.ref);\n\t\t\t\t\tif (childAriaNode.role === \"iframe\") snapshot.iframeRefs.push(childAriaNode.ref);\n\t\t\t\t}\n\t\t\t\tariaNode.children.push(childAriaNode);\n\t\t\t}\n\t\t\tprocessElement(childAriaNode || ariaNode, element, ariaChildren, visible);\n\t\t};\n\t\tfunction processElement(ariaNode, element, ariaChildren, parentElementVisible) {\n\t\t\tconst treatAsBlock = (getElementComputedStyle(element)?.display || \"inline\") !== \"inline\" || element.nodeName === \"BR\" ? \" \" : \"\";\n\t\t\tif (treatAsBlock) ariaNode.children.push(treatAsBlock);\n\t\t\tariaNode.children.push(getCSSContent(element, \"::before\") || \"\");\n\t\t\tconst assignedNodes = element.nodeName === \"SLOT\" ? element.assignedNodes() : [];\n\t\t\tif (assignedNodes.length) for (const child of assignedNodes) visit(ariaNode, child, parentElementVisible);\n\t\t\telse {\n\t\t\t\tfor (let child = element.firstChild; child; child = child.nextSibling) if (!child.assignedSlot) visit(ariaNode, child, parentElementVisible);\n\t\t\t\tif (element.shadowRoot) for (let child = element.shadowRoot.firstChild; child; child = child.nextSibling) visit(ariaNode, child, parentElementVisible);\n\t\t\t}\n\t\t\tfor (const child of ariaChildren) visit(ariaNode, child, parentElementVisible);\n\t\t\tariaNode.children.push(getCSSContent(element, \"::after\") || \"\");\n\t\t\tif (treatAsBlock) ariaNode.children.push(treatAsBlock);\n\t\t\tif (ariaNode.children.length === 1 && ariaNode.name === ariaNode.children[0]) ariaNode.children = [];\n\t\t\tif (ariaNode.role === \"link\" && element.hasAttribute(\"href\")) {\n\t\t\t\tconst href = element.getAttribute(\"href\");\n\t\t\t\tariaNode.props[\"url\"] = href;\n\t\t\t}\n\t\t\tif (ariaNode.role === \"textbox\" && element.hasAttribute(\"placeholder\") && element.getAttribute(\"placeholder\") !== ariaNode.name) {\n\t\t\t\tconst placeholder = element.getAttribute(\"placeholder\");\n\t\t\t\tariaNode.props[\"placeholder\"] = placeholder;\n\t\t\t}\n\t\t}\n\t\tbeginAriaCaches();\n\t\ttry {\n\t\t\tvisit(snapshot.root, rootElement, true);\n\t\t} finally {\n\t\t\tendAriaCaches();\n\t\t}\n\t\tnormalizeStringChildren(snapshot.root);\n\t\tnormalizeGenericRoles(snapshot.root);\n\t\treturn snapshot;\n\t}\n\tfunction computeAriaRef(ariaNode, options) {\n\t\tif (options.refs === \"none\") return;\n\t\tif (options.refs === \"interactable\" && (!ariaNode.box.visible || !ariaNode.receivesPointerEvents)) return;\n\t\tconst element = ariaNodeElement(ariaNode);\n\t\tlet ariaRef = element._ariaRef;\n\t\tif (!ariaRef || ariaRef.role !== ariaNode.role || ariaRef.name !== ariaNode.name) {\n\t\t\tariaRef = {\n\t\t\t\trole: ariaNode.role,\n\t\t\t\tname: ariaNode.name,\n\t\t\t\tref: (options.refPrefix ?? \"\") + \"e\" + ++lastRef\n\t\t\t};\n\t\t\telement._ariaRef = ariaRef;\n\t\t}\n\t\tariaNode.ref = ariaRef.ref;\n\t}\n\tfunction toAriaNode(element, options) {\n\t\tconst active = element.ownerDocument.activeElement === element;\n\t\tif (element.nodeName === \"IFRAME\") {\n\t\t\tconst ariaNode = {\n\t\t\t\trole: \"iframe\",\n\t\t\t\tname: \"\",\n\t\t\t\tchildren: [],\n\t\t\t\tprops: {},\n\t\t\t\tbox: computeBox(element),\n\t\t\t\treceivesPointerEvents: true,\n\t\t\t\tactive\n\t\t\t};\n\t\t\tsetAriaNodeElement(ariaNode, element);\n\t\t\tcomputeAriaRef(ariaNode, options);\n\t\t\treturn ariaNode;\n\t\t}\n\t\tconst defaultRole = options.includeGenericRole ? \"generic\" : null;\n\t\tconst role = getAriaRole(element) ?? defaultRole;\n\t\tif (!role || role === \"presentation\" || role === \"none\") return null;\n\t\tconst name = normalizeWhiteSpace(getElementAccessibleName(element, false) || \"\");\n\t\tconst receivesPointerEvents$1 = receivesPointerEvents(element);\n\t\tconst box = computeBox(element);\n\t\tif (role === \"generic\" && box.inline && element.childNodes.length === 1 && element.childNodes[0].nodeType === Node.TEXT_NODE) return null;\n\t\tconst result = {\n\t\t\trole,\n\t\t\tname,\n\t\t\tchildren: [],\n\t\t\tprops: {},\n\t\t\tbox,\n\t\t\treceivesPointerEvents: receivesPointerEvents$1,\n\t\t\tactive\n\t\t};\n\t\tsetAriaNodeElement(result, element);\n\t\tcomputeAriaRef(result, options);\n\t\tif (kAriaCheckedRoles.includes(role)) result.checked = getAriaChecked(element);\n\t\tif (kAriaDisabledRoles.includes(role)) result.disabled = getAriaDisabled(element);\n\t\tif (kAriaExpandedRoles.includes(role)) result.expanded = getAriaExpanded(element);\n\t\tif (kAriaInvalidRoles.includes(role)) {\n\t\t\tconst invalid = getAriaInvalid(element);\n\t\t\tresult.invalid = invalid === \"false\" ? false : invalid === \"true\" ? true : invalid;\n\t\t}\n\t\tif (kAriaLevelRoles.includes(role)) result.level = getAriaLevel(element);\n\t\tif (kAriaPressedRoles.includes(role)) result.pressed = getAriaPressed(element);\n\t\tif (kAriaSelectedRoles.includes(role)) result.selected = getAriaSelected(element);\n\t\tif (element instanceof HTMLInputElement || element instanceof HTMLTextAreaElement) {\n\t\t\tif (element.type !== \"checkbox\" && element.type !== \"radio\" && element.type !== \"file\") result.children = [element.value];\n\t\t}\n\t\treturn result;\n\t}\n\tfunction normalizeGenericRoles(node) {\n\t\tconst normalizeChildren = (node) => {\n\t\t\tconst result = [];\n\t\t\tfor (const child of node.children || []) {\n\t\t\t\tif (typeof child === \"string\") {\n\t\t\t\t\tresult.push(child);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst normalized = normalizeChildren(child);\n\t\t\t\tresult.push(...normalized);\n\t\t\t}\n\t\t\tif (node.role === \"generic\" && !node.name && result.length <= 1 && result.every((c) => typeof c !== \"string\" && !!c.ref)) return result;\n\t\t\tnode.children = result;\n\t\t\treturn [node];\n\t\t};\n\t\tnormalizeChildren(node);\n\t}\n\tfunction normalizeStringChildren(rootA11yNode) {\n\t\tconst flushChildren = (buffer, normalizedChildren) => {\n\t\t\tif (!buffer.length) return;\n\t\t\tconst text = normalizeWhiteSpace(buffer.join(\"\"));\n\t\t\tif (text) normalizedChildren.push(text);\n\t\t\tbuffer.length = 0;\n\t\t};\n\t\tconst visit = (ariaNode) => {\n\t\t\tconst normalizedChildren = [];\n\t\t\tconst buffer = [];\n\t\t\tfor (const child of ariaNode.children || []) if (typeof child === \"string\") buffer.push(child);\n\t\t\telse {\n\t\t\t\tflushChildren(buffer, normalizedChildren);\n\t\t\t\tvisit(child);\n\t\t\t\tnormalizedChildren.push(child);\n\t\t\t}\n\t\t\tflushChildren(buffer, normalizedChildren);\n\t\t\tariaNode.children = normalizedChildren.length ? normalizedChildren : [];\n\t\t\tif (ariaNode.children.length === 1 && ariaNode.children[0] === ariaNode.name) ariaNode.children = [];\n\t\t};\n\t\tvisit(rootA11yNode);\n\t}\n\tfunction buildByRefMap(root, map = /* @__PURE__ */ new Map()) {\n\t\tif (root?.ref) map.set(root.ref, root);\n\t\tfor (const child of root?.children || []) if (typeof child !== \"string\") buildByRefMap(child, map);\n\t\treturn map;\n\t}\n\tfunction compareSnapshots(ariaSnapshot, previousSnapshot) {\n\t\tconst previousByRef = buildByRefMap(previousSnapshot?.root);\n\t\tconst result = /* @__PURE__ */ new Map();\n\t\tconst visit = (ariaNode, previousNode) => {\n\t\t\tlet same = ariaNode.children.length === previousNode?.children.length && ariaNodesEqual(ariaNode, previousNode);\n\t\t\tlet canBeSkipped = same;\n\t\t\tfor (let childIndex = 0; childIndex < ariaNode.children.length; childIndex++) {\n\t\t\t\tconst child = ariaNode.children[childIndex];\n\t\t\t\tconst previousChild = previousNode?.children[childIndex];\n\t\t\t\tif (typeof child === \"string\") {\n\t\t\t\t\tsame &&= child === previousChild;\n\t\t\t\t\tcanBeSkipped &&= child === previousChild;\n\t\t\t\t} else {\n\t\t\t\t\tlet previous = typeof previousChild !== \"string\" ? previousChild : void 0;\n\t\t\t\t\tif (child.ref) previous = previousByRef.get(child.ref);\n\t\t\t\t\tconst sameChild = visit(child, previous);\n\t\t\t\t\tif (!previous || !sameChild && !child.ref || previous !== previousChild) canBeSkipped = false;\n\t\t\t\t\tsame &&= sameChild && previous === previousChild;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.set(ariaNode, same ? \"same\" : canBeSkipped ? \"skip\" : \"changed\");\n\t\t\treturn same;\n\t\t};\n\t\tvisit(ariaSnapshot.root, previousByRef.get(previousSnapshot?.root?.ref));\n\t\treturn result;\n\t}\n\tfunction filterSnapshotDiff(nodes, statusMap) {\n\t\tconst result = [];\n\t\tconst visit = (ariaNode) => {\n\t\t\tconst status = statusMap.get(ariaNode);\n\t\t\tif (status === \"same\") {} else if (status === \"skip\") {\n\t\t\t\tfor (const child of ariaNode.children) if (typeof child !== \"string\") visit(child);\n\t\t\t} else result.push(ariaNode);\n\t\t};\n\t\tfor (const node of nodes) if (typeof node === \"string\") result.push(node);\n\t\telse visit(node);\n\t\treturn result;\n\t}\n\tfunction indent(depth) {\n\t\treturn \" \".repeat(depth);\n\t}\n\tfunction renderAriaTree(ariaSnapshot, publicOptions, previousSnapshot) {\n\t\tconst options = toInternalOptions(publicOptions);\n\t\tconst lines = [];\n\t\tconst iframeDepths = {};\n\t\tconst includeText = options.renderStringsAsRegex ? textContributesInfo : () => true;\n\t\tconst renderString = options.renderStringsAsRegex ? convertToBestGuessRegex : (str) => str;\n\t\tlet nodesToRender = ariaSnapshot.root.role === \"fragment\" ? ariaSnapshot.root.children : [ariaSnapshot.root];\n\t\tconst statusMap = compareSnapshots(ariaSnapshot, previousSnapshot);\n\t\tif (previousSnapshot) nodesToRender = filterSnapshotDiff(nodesToRender, statusMap);\n\t\tconst visitText = (text, depth) => {\n\t\t\tif (publicOptions.depth && depth > publicOptions.depth) return;\n\t\t\tconst escaped = yamlEscapeValueIfNeeded(renderString(text));\n\t\t\tif (escaped) lines.push(indent(depth) + \"- text: \" + escaped);\n\t\t};\n\t\tconst createKey = (ariaNode, renderCursorPointer) => {\n\t\t\tlet key = ariaNode.role;\n\t\t\tif (ariaNode.name && ariaNode.name.length <= 900) {\n\t\t\t\tconst name = renderString(ariaNode.name);\n\t\t\t\tif (name) {\n\t\t\t\t\tconst stringifiedName = name.startsWith(\"/\") && name.endsWith(\"/\") ? name : JSON.stringify(name);\n\t\t\t\t\tkey += \" \" + stringifiedName;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ariaNode.checked === \"mixed\") key += ` [checked=mixed]`;\n\t\t\tif (ariaNode.checked === true) key += ` [checked]`;\n\t\t\tif (ariaNode.disabled) key += ` [disabled]`;\n\t\t\tif (ariaNode.expanded) key += ` [expanded]`;\n\t\t\tif (ariaNode.active && options.renderActive) key += ` [active]`;\n\t\t\tif (ariaNode.invalid === \"grammar\" || ariaNode.invalid === \"spelling\") key += ` [invalid=${ariaNode.invalid}]`;\n\t\t\tif (ariaNode.invalid === true) key += ` [invalid]`;\n\t\t\tif (ariaNode.level) key += ` [level=${ariaNode.level}]`;\n\t\t\tif (ariaNode.pressed === \"mixed\") key += ` [pressed=mixed]`;\n\t\t\tif (ariaNode.pressed === true) key += ` [pressed]`;\n\t\t\tif (ariaNode.selected === true) key += ` [selected]`;\n\t\t\tif (ariaNode.ref) {\n\t\t\t\tkey += ` [ref=${ariaNode.ref}]`;\n\t\t\t\tif (renderCursorPointer && hasPointerCursor(ariaNode)) key += \" [cursor=pointer]\";\n\t\t\t}\n\t\t\tif (options.renderBoxes) {\n\t\t\t\tconst element = ariaNodeElement(ariaNode);\n\t\t\t\tif (element) {\n\t\t\t\t\tconst r = element.getBoundingClientRect();\n\t\t\t\t\tkey += ` [box=${Math.round(r.x)},${Math.round(r.y)},${Math.round(r.width)},${Math.round(r.height)}]`;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn key;\n\t\t};\n\t\tconst getSingleInlinedTextChild = (ariaNode) => {\n\t\t\treturn ariaNode?.children.length === 1 && typeof ariaNode.children[0] === \"string\" && !Object.keys(ariaNode.props).length ? ariaNode.children[0] : void 0;\n\t\t};\n\t\tconst visit = (ariaNode, depth, renderCursorPointer) => {\n\t\t\tif (publicOptions.depth && depth > publicOptions.depth) return;\n\t\t\tif (ariaNode.role === \"iframe\" && ariaNode.ref) iframeDepths[ariaNode.ref] = depth;\n\t\t\tif (statusMap.get(ariaNode) === \"same\" && ariaNode.ref) {\n\t\t\t\tlines.push(indent(depth) + `- ref=${ariaNode.ref} [unchanged]`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst isDiffRoot = !!previousSnapshot && !depth;\n\t\t\tconst escapedKey = indent(depth) + \"- \" + (isDiffRoot ? \"<changed> \" : \"\") + yamlEscapeKeyIfNeeded(createKey(ariaNode, renderCursorPointer));\n\t\t\tconst singleInlinedTextChild = getSingleInlinedTextChild(ariaNode);\n\t\t\tconst isAtDepthLimit = !!publicOptions.depth && depth === publicOptions.depth;\n\t\t\tif (!singleInlinedTextChild && (!ariaNode.children.length || isAtDepthLimit) && !Object.keys(ariaNode.props).length) lines.push(escapedKey);\n\t\t\telse if (singleInlinedTextChild !== void 0) if (includeText(ariaNode, singleInlinedTextChild)) lines.push(escapedKey + \": \" + yamlEscapeValueIfNeeded(renderString(singleInlinedTextChild)));\n\t\t\telse lines.push(escapedKey);\n\t\t\telse {\n\t\t\t\tlines.push(escapedKey + \":\");\n\t\t\t\tfor (const [name, value] of Object.entries(ariaNode.props)) lines.push(indent(depth + 1) + \"- /\" + name + \": \" + yamlEscapeValueIfNeeded(value));\n\t\t\t\tconst inCursorPointer = !!ariaNode.ref && renderCursorPointer && hasPointerCursor(ariaNode);\n\t\t\t\tfor (const child of ariaNode.children) if (typeof child === \"string\") visitText(includeText(ariaNode, child) ? child : \"\", depth + 1);\n\t\t\t\telse visit(child, depth + 1, renderCursorPointer && !inCursorPointer);\n\t\t\t}\n\t\t};\n\t\tfor (const nodeToRender of nodesToRender) if (typeof nodeToRender === \"string\") visitText(nodeToRender, 0);\n\t\telse visit(nodeToRender, 0, !!options.renderCursorPointer);\n\t\treturn {\n\t\t\ttext: lines.join(\"\\n\"),\n\t\t\tiframeDepths\n\t\t};\n\t}\n\tfunction convertToBestGuessRegex(text) {\n\t\tconst dynamicContent = [\n\t\t\t{\n\t\t\t\tregex: /\\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\\b/,\n\t\t\t\treplacement: \"[0-9a-fA-F-]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b[\\d,.]+[bkmBKM]+\\b/,\n\t\t\t\treplacement: \"[\\\\d,.]+[bkmBKM]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d+[hmsp]+\\b/,\n\t\t\t\treplacement: \"\\\\d+[hmsp]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b[\\d,.]+[hmsp]+\\b/,\n\t\t\t\treplacement: \"[\\\\d,.]+[hmsp]+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d+,\\d+\\b/,\n\t\t\t\treplacement: \"\\\\d+,\\\\d+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d+\\.\\d{2,}\\b/,\n\t\t\t\treplacement: \"\\\\d+\\\\.\\\\d+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d{2,}\\.\\d+\\b/,\n\t\t\t\treplacement: \"\\\\d+\\\\.\\\\d+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tregex: /\\b\\d{2,}\\b/,\n\t\t\t\treplacement: \"\\\\d+\"\n\t\t\t}\n\t\t];\n\t\tlet pattern = \"\";\n\t\tlet lastIndex = 0;\n\t\tconst combinedRegex = new RegExp(dynamicContent.map((r) => \"(\" + r.regex.source + \")\").join(\"|\"), \"g\");\n\t\ttext.replace(combinedRegex, (match, ...args) => {\n\t\t\tconst offset = args[args.length - 2];\n\t\t\tconst groups = args.slice(0, -2);\n\t\t\tpattern += escapeRegExp(text.slice(lastIndex, offset));\n\t\t\tfor (let i = 0; i < groups.length; i++) if (groups[i]) {\n\t\t\t\tconst { replacement } = dynamicContent[i];\n\t\t\t\tpattern += replacement;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlastIndex = offset + match.length;\n\t\t\treturn match;\n\t\t});\n\t\tif (!pattern) return text;\n\t\tpattern += escapeRegExp(text.slice(lastIndex));\n\t\treturn String(new RegExp(pattern));\n\t}\n\tfunction textContributesInfo(node, text) {\n\t\tif (!text.length) return false;\n\t\tif (!node.name) return true;\n\t\tconst substr = text.length <= 200 && node.name.length <= 200 ? longestCommonSubstring(text, node.name) : \"\";\n\t\tlet filtered = text;\n\t\twhile (substr && filtered.includes(substr)) filtered = filtered.replace(substr, \"\");\n\t\treturn filtered.trim().length / text.length > .1;\n\t}\n\tvar elementSymbol = Symbol(\"element\");\n\tfunction ariaNodeElement(ariaNode) {\n\t\treturn ariaNode[elementSymbol];\n\t}\n\tfunction setAriaNodeElement(ariaNode, element) {\n\t\tariaNode[elementSymbol] = element;\n\t}\n\t//#endregion\n\t//#region src/vendor/playwright/source/injected/injectedScript.snapshot.ts\n\tvar InjectedScript = class {\n\t\t_lastAriaSnapshotForTrack = /* @__PURE__ */ new Map();\n\t\t_lastAriaSnapshotForQuery;\n\t\tconstructor(_globalScope, options = {}) {\n\t\t\tsetGlobalOptions({ browserNameForWorkarounds: options.browserName });\n\t\t}\n\t\tariaSnapshot(node, options) {\n\t\t\treturn this.incrementalAriaSnapshot(node, options).full;\n\t\t}\n\t\tincrementalAriaSnapshot(node, options) {\n\t\t\tif (node.nodeType !== Node.ELEMENT_NODE) throw new Error(\"Can only capture aria snapshot of Element nodes.\");\n\t\t\tconst ariaSnapshot = generateAriaTree(node, options);\n\t\t\tconst rendered = renderAriaTree(ariaSnapshot, options);\n\t\t\tlet incremental;\n\t\t\tif (options.track) {\n\t\t\t\tconst previousSnapshot = this._lastAriaSnapshotForTrack.get(options.track);\n\t\t\t\tif (previousSnapshot) incremental = renderAriaTree(ariaSnapshot, options, previousSnapshot).text;\n\t\t\t\tthis._lastAriaSnapshotForTrack.set(options.track, ariaSnapshot);\n\t\t\t}\n\t\t\tthis._lastAriaSnapshotForQuery = ariaSnapshot;\n\t\t\treturn {\n\t\t\t\tfull: rendered.text,\n\t\t\t\tincremental,\n\t\t\t\tiframeRefs: ariaSnapshot.iframeRefs,\n\t\t\t\tiframeDepths: rendered.iframeDepths\n\t\t\t};\n\t\t}\n\t};\n\tglobalThis.__roxyPlaywrightSnapshotBundle = { InjectedScript };\n\t//#endregion\n\texports.InjectedScript = InjectedScript;\n\treturn exports;\n})({});\n";
|
|
9
|
+
//# sourceMappingURL=injectedScriptSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectedScriptSource.js","sourceRoot":"","sources":["../../../../src/vendor/playwright/generated/injectedScriptSource.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,uq0FAAuq0F,CAAC"}
|
package/dist/video.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Video } from "./types/api.js";
|
|
2
|
+
export declare class RoxyVideo implements Video {
|
|
3
|
+
private readonly videoPath;
|
|
4
|
+
private readonly finished;
|
|
5
|
+
constructor(videoPath: string, finished?: Promise<void>);
|
|
6
|
+
delete(): Promise<void>;
|
|
7
|
+
path(): Promise<string>;
|
|
8
|
+
saveAs(path: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class ScreencastFrameRecorder {
|
|
11
|
+
private readonly options;
|
|
12
|
+
private process;
|
|
13
|
+
private unregisterProcessCleanup;
|
|
14
|
+
private stderr;
|
|
15
|
+
private stopped;
|
|
16
|
+
private firstFrameTimestamp;
|
|
17
|
+
private lastFrame;
|
|
18
|
+
private lastWriteNodeTime;
|
|
19
|
+
private frameQueue;
|
|
20
|
+
private lastWritePromise;
|
|
21
|
+
private readonly launchPromise;
|
|
22
|
+
constructor(options: {
|
|
23
|
+
path: string;
|
|
24
|
+
size: {
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
};
|
|
28
|
+
captureFallbackFrame?: () => Promise<Buffer | null>;
|
|
29
|
+
});
|
|
30
|
+
ready(): Promise<void>;
|
|
31
|
+
writeFrame(frame: Buffer, timestamp: number): void;
|
|
32
|
+
stop(): Promise<void>;
|
|
33
|
+
private launch;
|
|
34
|
+
private queueFrame;
|
|
35
|
+
private flushFrameQueue;
|
|
36
|
+
private writeBuffer;
|
|
37
|
+
private closeProcess;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../src/video.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAmB5C,qBAAa,SAAU,YAAW,KAAK;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,OAAO,CAAC,IAAI,CAAqB;IAGxD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK1C;AAED,qBAAa,uBAAuB;IAahC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,OAAO,CAA8D;IAC7E,OAAO,CAAC,wBAAwB,CAA6B;IAC7D,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,SAAS,CAA2E;IAC5F,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,gBAAgB,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAG3B,OAAO,EAAE;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE;YACJ,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KACrD;IAQG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAS5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBb,MAAM;IA0EpB,OAAO,CAAC,UAAU;YA6BJ,eAAe;YAUf,WAAW;YAgBX,YAAY;CA0C3B"}
|