diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..f3a2f3a74
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+restored-src/.claude-sandbox/
+restored-src/tmp-debug*.log
+restored-src/ui-debug.log
diff --git a/README.md b/README.md
index 04e97ab6e..aade64473 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,50 @@
本仓库通过 npm 发布包(`@anthropic-ai/claude-code`)内附带的 source map(`cli.js.map`)还原的 TypeScript 源码,版本为 `2.1.88`。
+## 运行
+
+当前仓库里真正可直接运行的是 npm 发布包内的打包产物 `package/cli.js`,不是 `restored-src`。
+
+```bash
+npm run version:claude
+npm start -- --help
+```
+
+重新提取源码可直接执行:
+
+```bash
+npm run extract
+```
+
+`restored-src` 目前仍是还原后的研究素材,不包含完整官方构建配置,不能视为已恢复成可直接编译运行的源码工程。
+
+如果后续目标是把 `restored-src` 也修到可运行,需要继续补官方构建期宏、路径别名以及还原结果里缺失的依赖文件;当前这一步只把仓库修到“可以直接运行打包版 CLI,并能重新提取源码”。
+
+当前仓库也额外提供了 `restored-src` 的最小启动壳,方便继续排查源码工程的运行阻塞:
+
+```bash
+cd restored-src
+bun run bootstrap:manifests
+```
+
+如果在 Windows 上从 `restored-src` 或其子目录直接执行 `bun`,Bun 1.3.7 目前会额外打印一条与仓库根目录相关的伪 `EPERM`:
+
+```text
+error: Cannot read file "F:\Projects\claude-code-sourcemap\": EPERM
+```
+
+这条噪音不来自 `restored-src` 源码本身;从仓库根目录启动同一入口则不会出现。为了走干净链路,仓库根还提供了无噪音包装脚本:
+
+```bash
+bun run restored:help
+bun run restored:version
+bun run restored:cli -- --bare -p "ping"
+bun run version:claude
+bun run help
+```
+
+它会先为还原出来但缺少 `package.json` 的依赖包生成最小入口清单,再用 Bun 启动入口;这仍然不代表 `restored-src` 已完全恢复为官方可构建工程。
+
## 来源
- npm 包:[@anthropic-ai/claude-code](https://www.npmjs.com/package/@anthropic-ai/claude-code)
diff --git a/extract-sources.js b/extract-sources.js
index 635f7047e..0db3fa783 100644
--- a/extract-sources.js
+++ b/extract-sources.js
@@ -1,4 +1,3 @@
-const { SourceMapConsumer } = require('source-map');
const fs = require('fs');
const path = require('path');
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..80e6b609a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "claude-code-sourcemap",
+ "private": true,
+ "version": "0.1.0",
+ "description": "Research workspace for the reconstructed Claude Code 2.1.88 package and extracted sources.",
+ "scripts": {
+ "extract": "node extract-sources.js",
+ "claude": "node package/cli.js",
+ "start": "node package/cli.js",
+ "version:claude": "node package/cli.js -v",
+ "restored:cli": "bun --preload ./restored-src/macro-shim.cjs ./restored-src/src/entrypoints/cli.tsx",
+ "restored:help": "bun --preload ./restored-src/macro-shim.cjs ./restored-src/src/entrypoints/cli.tsx --help",
+ "restored:version": "bun --preload ./restored-src/macro-shim.cjs ./restored-src/src/entrypoints/cli.tsx -v"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+}
diff --git a/restored-src/macro-shim.cjs b/restored-src/macro-shim.cjs
new file mode 100644
index 000000000..dc2e1f0e3
--- /dev/null
+++ b/restored-src/macro-shim.cjs
@@ -0,0 +1,39 @@
+const fs = require("fs");
+const path = require("path");
+
+function readPackagedVersion() {
+ try {
+ const pkgPath = path.join(__dirname, "..", "package", "package.json");
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
+ return {
+ version: pkg.version || "0.0.0",
+ packageName: pkg.name || "@anthropic-ai/claude-code",
+ };
+ } catch {
+ return {
+ version: "0.0.0",
+ packageName: "@anthropic-ai/claude-code",
+ };
+ }
+}
+
+const packaged = readPackagedVersion();
+
+globalThis.MACRO = new Proxy(
+ {
+ VERSION: packaged.version,
+ PACKAGE_URL: packaged.packageName,
+ NATIVE_PACKAGE_URL: packaged.packageName,
+ FEEDBACK_CHANNEL: "the Claude Code issue tracker",
+ ISSUES_EXPLAINER: "file an issue in the Claude Code issue tracker",
+ BUILD_TIME: "",
+ },
+ {
+ get(target, prop) {
+ if (prop in target) {
+ return target[prop];
+ }
+ return "";
+ },
+ },
+);
diff --git a/restored-src/node_modules/@alcalzone/ansi-tokenize/package.json b/restored-src/node_modules/@alcalzone/ansi-tokenize/package.json
new file mode 100644
index 000000000..f270c2085
--- /dev/null
+++ b/restored-src/node_modules/@alcalzone/ansi-tokenize/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@alcalzone/ansi-tokenize",
+ "private": true,
+ "main": "./build/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@ant/claude-for-chrome-mcp/package.json b/restored-src/node_modules/@ant/claude-for-chrome-mcp/package.json
new file mode 100644
index 000000000..bee50eced
--- /dev/null
+++ b/restored-src/node_modules/@ant/claude-for-chrome-mcp/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@ant/claude-for-chrome-mcp",
+ "private": true,
+ "main": "./src/index.ts",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@ant/computer-use-input/package.json b/restored-src/node_modules/@ant/computer-use-input/package.json
new file mode 100644
index 000000000..a17ecb2e0
--- /dev/null
+++ b/restored-src/node_modules/@ant/computer-use-input/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@ant/computer-use-input",
+ "private": true,
+ "main": "./js/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@ant/computer-use-mcp/package.json b/restored-src/node_modules/@ant/computer-use-mcp/package.json
new file mode 100644
index 000000000..6a655983b
--- /dev/null
+++ b/restored-src/node_modules/@ant/computer-use-mcp/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@ant/computer-use-mcp",
+ "private": true,
+ "main": "./src/index.ts",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@ant/computer-use-swift/package.json b/restored-src/node_modules/@ant/computer-use-swift/package.json
new file mode 100644
index 000000000..43c22bfbb
--- /dev/null
+++ b/restored-src/node_modules/@ant/computer-use-swift/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@ant/computer-use-swift",
+ "private": true,
+ "main": "./js/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@anthropic-ai/bedrock-sdk/package.json b/restored-src/node_modules/@anthropic-ai/bedrock-sdk/package.json
new file mode 100644
index 000000000..46a15b64b
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/bedrock-sdk/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@anthropic-ai/bedrock-sdk",
+ "private": true,
+ "main": "./index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@anthropic-ai/foundry-sdk/package.json b/restored-src/node_modules/@anthropic-ai/foundry-sdk/package.json
new file mode 100644
index 000000000..2b12ac2b0
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/foundry-sdk/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@anthropic-ai/foundry-sdk",
+ "private": true,
+ "main": "./index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@anthropic-ai/mcpb/package.json b/restored-src/node_modules/@anthropic-ai/mcpb/package.json
new file mode 100644
index 000000000..80fc10d34
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/mcpb/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@anthropic-ai/mcpb",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@anthropic-ai/sandbox-runtime/package.json b/restored-src/node_modules/@anthropic-ai/sandbox-runtime/package.json
new file mode 100644
index 000000000..ffe2cc488
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/sandbox-runtime/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@anthropic-ai/sandbox-runtime",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@anthropic-ai/sdk/package.json b/restored-src/node_modules/@anthropic-ai/sdk/package.json
new file mode 100644
index 000000000..85b529dfc
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/sdk/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@anthropic-ai/sdk",
+ "private": true,
+ "main": "./index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@anthropic-ai/sdk/resources/shared.mjs b/restored-src/node_modules/@anthropic-ai/sdk/resources/shared.mjs
new file mode 100644
index 000000000..e23bc6c8b
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/sdk/resources/shared.mjs
@@ -0,0 +1,6 @@
+// Reconstructed workspace shim.
+// The source map extraction missed this file, but resources/index.mjs re-exports it.
+// An empty module is sufficient for runtime loading in this workspace because
+// the current CLI path does not consume any concrete values from it.
+
+export {};
diff --git a/restored-src/node_modules/@anthropic-ai/vertex-sdk/package.json b/restored-src/node_modules/@anthropic-ai/vertex-sdk/package.json
new file mode 100644
index 000000000..c1ae1999d
--- /dev/null
+++ b/restored-src/node_modules/@anthropic-ai/vertex-sdk/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@anthropic-ai/vertex-sdk",
+ "private": true,
+ "main": "./index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@aws-crypto/crc32/package.json b/restored-src/node_modules/@aws-crypto/crc32/package.json
new file mode 100644
index 000000000..44ecf4209
--- /dev/null
+++ b/restored-src/node_modules/@aws-crypto/crc32/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-crypto/crc32",
+ "private": true,
+ "main": "./build/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-crypto/sha256-js/package.json b/restored-src/node_modules/@aws-crypto/sha256-js/package.json
new file mode 100644
index 000000000..a95007e85
--- /dev/null
+++ b/restored-src/node_modules/@aws-crypto/sha256-js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-crypto/sha256-js",
+ "private": true,
+ "main": "./build/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-crypto/util/package.json b/restored-src/node_modules/@aws-crypto/util/package.json
new file mode 100644
index 000000000..5496602b7
--- /dev/null
+++ b/restored-src/node_modules/@aws-crypto/util/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-crypto/util",
+ "private": true,
+ "main": "./build/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/client-bedrock-runtime/package.json b/restored-src/node_modules/@aws-sdk/client-bedrock-runtime/package.json
new file mode 100644
index 000000000..8e84f8fcd
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/client-bedrock-runtime/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/client-bedrock-runtime",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/client-bedrock/package.json b/restored-src/node_modules/@aws-sdk/client-bedrock/package.json
new file mode 100644
index 000000000..7edf4634e
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/client-bedrock/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/client-bedrock",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/client-cognito-identity/package.json b/restored-src/node_modules/@aws-sdk/client-cognito-identity/package.json
new file mode 100644
index 000000000..8c75301ba
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/client-cognito-identity/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/client-cognito-identity",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/client-sso/package.json b/restored-src/node_modules/@aws-sdk/client-sso/package.json
new file mode 100644
index 000000000..37e6864f0
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/client-sso/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/client-sso",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/client-sts/package.json b/restored-src/node_modules/@aws-sdk/client-sts/package.json
new file mode 100644
index 000000000..00e2fa98d
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/client-sts/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/client-sts",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/core/package.json b/restored-src/node_modules/@aws-sdk/core/package.json
new file mode 100644
index 000000000..570b1d5f1
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/core/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/core",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json
new file mode 100644
index 000000000..2216f5968
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-cognito-identity/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-cognito-identity",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-env/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-env/package.json
new file mode 100644
index 000000000..0753b6b79
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-env/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-env",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-http/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-http/package.json
new file mode 100644
index 000000000..212ac0583
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-http/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-http",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-ini/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-ini/package.json
new file mode 100644
index 000000000..c3125f1b6
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-ini/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-ini",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-login/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-login/package.json
new file mode 100644
index 000000000..b3c186e1f
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-login/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-login",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-node/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-node/package.json
new file mode 100644
index 000000000..2bcbd2505
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-process/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-process/package.json
new file mode 100644
index 000000000..9599e2575
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-process/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-process",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-sso/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-sso/package.json
new file mode 100644
index 000000000..5c9df7068
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-sso/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-sso",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-provider-web-identity/package.json b/restored-src/node_modules/@aws-sdk/credential-provider-web-identity/package.json
new file mode 100644
index 000000000..62bbcf120
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-provider-web-identity/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-provider-web-identity",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/credential-providers/package.json b/restored-src/node_modules/@aws-sdk/credential-providers/package.json
new file mode 100644
index 000000000..ab134e45a
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/credential-providers/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/credential-providers",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/eventstream-handler-node/package.json b/restored-src/node_modules/@aws-sdk/eventstream-handler-node/package.json
new file mode 100644
index 000000000..dd160ef46
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/eventstream-handler-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/eventstream-handler-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/middleware-eventstream/package.json b/restored-src/node_modules/@aws-sdk/middleware-eventstream/package.json
new file mode 100644
index 000000000..6aafda7ad
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/middleware-eventstream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/middleware-eventstream",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/middleware-host-header/package.json b/restored-src/node_modules/@aws-sdk/middleware-host-header/package.json
new file mode 100644
index 000000000..3be588e71
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/middleware-host-header/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/middleware-host-header",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/middleware-logger/package.json b/restored-src/node_modules/@aws-sdk/middleware-logger/package.json
new file mode 100644
index 000000000..1659a7f8e
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/middleware-logger/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/middleware-logger",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/middleware-recursion-detection/package.json b/restored-src/node_modules/@aws-sdk/middleware-recursion-detection/package.json
new file mode 100644
index 000000000..31703559a
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/middleware-recursion-detection/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/middleware-recursion-detection",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/middleware-user-agent/package.json b/restored-src/node_modules/@aws-sdk/middleware-user-agent/package.json
new file mode 100644
index 000000000..5ecb3cb0a
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/middleware-user-agent/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/middleware-user-agent",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/middleware-websocket/package.json b/restored-src/node_modules/@aws-sdk/middleware-websocket/package.json
new file mode 100644
index 000000000..d7960ee02
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/middleware-websocket/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/middleware-websocket",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/nested-clients/package.json b/restored-src/node_modules/@aws-sdk/nested-clients/package.json
new file mode 100644
index 000000000..162fa95e9
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/nested-clients/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/nested-clients",
+ "private": true,
+ "main": "./dist-cjs/submodules/sts/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/region-config-resolver/package.json b/restored-src/node_modules/@aws-sdk/region-config-resolver/package.json
new file mode 100644
index 000000000..1b8831e3b
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/region-config-resolver/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/region-config-resolver",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/token-providers/package.json b/restored-src/node_modules/@aws-sdk/token-providers/package.json
new file mode 100644
index 000000000..60882e598
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/token-providers/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/token-providers",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/util-endpoints/package.json b/restored-src/node_modules/@aws-sdk/util-endpoints/package.json
new file mode 100644
index 000000000..65603af30
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/util-endpoints/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/util-endpoints",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/util-format-url/package.json b/restored-src/node_modules/@aws-sdk/util-format-url/package.json
new file mode 100644
index 000000000..facd873a4
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/util-format-url/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/util-format-url",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/util-user-agent-node/package.json b/restored-src/node_modules/@aws-sdk/util-user-agent-node/package.json
new file mode 100644
index 000000000..56237ad0c
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/util-user-agent-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/util-user-agent-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/util-utf8-browser/package.json b/restored-src/node_modules/@aws-sdk/util-utf8-browser/package.json
new file mode 100644
index 000000000..8a729a22b
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/util-utf8-browser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/util-utf8-browser",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws-sdk/xml-builder/package.json b/restored-src/node_modules/@aws-sdk/xml-builder/package.json
new file mode 100644
index 000000000..4027cb064
--- /dev/null
+++ b/restored-src/node_modules/@aws-sdk/xml-builder/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws-sdk/xml-builder",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@aws/lambda-invoke-store/package.json b/restored-src/node_modules/@aws/lambda-invoke-store/package.json
new file mode 100644
index 000000000..24556a81a
--- /dev/null
+++ b/restored-src/node_modules/@aws/lambda-invoke-store/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@aws/lambda-invoke-store",
+ "private": true,
+ "main": "./dist-cjs/invoke-store.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@azure/abort-controller/package.json b/restored-src/node_modules/@azure/abort-controller/package.json
new file mode 100644
index 000000000..125904037
--- /dev/null
+++ b/restored-src/node_modules/@azure/abort-controller/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/abort-controller",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/core-client/package.json b/restored-src/node_modules/@azure/core-client/package.json
new file mode 100644
index 000000000..d2acd5abc
--- /dev/null
+++ b/restored-src/node_modules/@azure/core-client/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/core-client",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/core-rest-pipeline/package.json b/restored-src/node_modules/@azure/core-rest-pipeline/package.json
new file mode 100644
index 000000000..99fea53ba
--- /dev/null
+++ b/restored-src/node_modules/@azure/core-rest-pipeline/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/core-rest-pipeline",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/core-tracing/package.json b/restored-src/node_modules/@azure/core-tracing/package.json
new file mode 100644
index 000000000..a8d79314c
--- /dev/null
+++ b/restored-src/node_modules/@azure/core-tracing/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/core-tracing",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/core-util/package.json b/restored-src/node_modules/@azure/core-util/package.json
new file mode 100644
index 000000000..2b89a35c4
--- /dev/null
+++ b/restored-src/node_modules/@azure/core-util/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/core-util",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/identity/package.json b/restored-src/node_modules/@azure/identity/package.json
new file mode 100644
index 000000000..16f2fef53
--- /dev/null
+++ b/restored-src/node_modules/@azure/identity/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/identity",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/logger/package.json b/restored-src/node_modules/@azure/logger/package.json
new file mode 100644
index 000000000..ce7bdc264
--- /dev/null
+++ b/restored-src/node_modules/@azure/logger/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/logger",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/msal-common/package.json b/restored-src/node_modules/@azure/msal-common/package.json
new file mode 100644
index 000000000..b11d07f4e
--- /dev/null
+++ b/restored-src/node_modules/@azure/msal-common/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/msal-common",
+ "private": true,
+ "main": "./dist/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@azure/msal-node/package.json b/restored-src/node_modules/@azure/msal-node/package.json
new file mode 100644
index 000000000..feb75e736
--- /dev/null
+++ b/restored-src/node_modules/@azure/msal-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@azure/msal-node",
+ "private": true,
+ "main": "./dist/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@commander-js/extra-typings/package.json b/restored-src/node_modules/@commander-js/extra-typings/package.json
new file mode 100644
index 000000000..4ca0000e9
--- /dev/null
+++ b/restored-src/node_modules/@commander-js/extra-typings/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@commander-js/extra-typings",
+ "private": true,
+ "main": "./esm.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@growthbook/growthbook/package.json b/restored-src/node_modules/@growthbook/growthbook/package.json
new file mode 100644
index 000000000..32722e841
--- /dev/null
+++ b/restored-src/node_modules/@growthbook/growthbook/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@growthbook/growthbook",
+ "private": true,
+ "main": "./dist/esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@grpc/grpc-js/package.json b/restored-src/node_modules/@grpc/grpc-js/package.json
new file mode 100644
index 000000000..66284dd14
--- /dev/null
+++ b/restored-src/node_modules/@grpc/grpc-js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@grpc/grpc-js",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@grpc/proto-loader/package.json b/restored-src/node_modules/@grpc/proto-loader/package.json
new file mode 100644
index 000000000..5c999a4d4
--- /dev/null
+++ b/restored-src/node_modules/@grpc/proto-loader/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@grpc/proto-loader",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@img/colour/package.json b/restored-src/node_modules/@img/colour/package.json
new file mode 100644
index 000000000..605e2f40d
--- /dev/null
+++ b/restored-src/node_modules/@img/colour/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@img/colour",
+ "private": true,
+ "main": "./index.cjs",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@inquirer/confirm/package.json b/restored-src/node_modules/@inquirer/confirm/package.json
new file mode 100644
index 000000000..be00e1eb9
--- /dev/null
+++ b/restored-src/node_modules/@inquirer/confirm/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@inquirer/confirm",
+ "private": true,
+ "main": "./dist/esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@inquirer/core/package.json b/restored-src/node_modules/@inquirer/core/package.json
new file mode 100644
index 000000000..ad42b77fc
--- /dev/null
+++ b/restored-src/node_modules/@inquirer/core/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@inquirer/core",
+ "private": true,
+ "main": "./dist/esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@inquirer/figures/package.json b/restored-src/node_modules/@inquirer/figures/package.json
new file mode 100644
index 000000000..80d776ddc
--- /dev/null
+++ b/restored-src/node_modules/@inquirer/figures/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@inquirer/figures",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@inquirer/input/package.json b/restored-src/node_modules/@inquirer/input/package.json
new file mode 100644
index 000000000..3ca2fbe0c
--- /dev/null
+++ b/restored-src/node_modules/@inquirer/input/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@inquirer/input",
+ "private": true,
+ "main": "./dist/esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@inquirer/prompts/package.json b/restored-src/node_modules/@inquirer/prompts/package.json
new file mode 100644
index 000000000..e095d223e
--- /dev/null
+++ b/restored-src/node_modules/@inquirer/prompts/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@inquirer/prompts",
+ "private": true,
+ "main": "./dist/esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@inquirer/select/package.json b/restored-src/node_modules/@inquirer/select/package.json
new file mode 100644
index 000000000..353cdbe07
--- /dev/null
+++ b/restored-src/node_modules/@inquirer/select/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@inquirer/select",
+ "private": true,
+ "main": "./dist/esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@js-sdsl/ordered-map/package.json b/restored-src/node_modules/@js-sdsl/ordered-map/package.json
new file mode 100644
index 000000000..2a0eed86e
--- /dev/null
+++ b/restored-src/node_modules/@js-sdsl/ordered-map/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@js-sdsl/ordered-map",
+ "private": true,
+ "main": "./dist/cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@mixmark-io/domino/package.json b/restored-src/node_modules/@mixmark-io/domino/package.json
new file mode 100644
index 000000000..80834afaf
--- /dev/null
+++ b/restored-src/node_modules/@mixmark-io/domino/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@mixmark-io/domino",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/client/auth.js b/restored-src/node_modules/@modelcontextprotocol/sdk/client/auth.js
new file mode 100644
index 000000000..eee2948fe
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/client/auth.js
@@ -0,0 +1 @@
+export * from '../dist/esm/client/auth.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/client/index.js b/restored-src/node_modules/@modelcontextprotocol/sdk/client/index.js
new file mode 100644
index 000000000..331abcc39
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/client/index.js
@@ -0,0 +1 @@
+export * from '../dist/esm/client/index.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/client/sse.js b/restored-src/node_modules/@modelcontextprotocol/sdk/client/sse.js
new file mode 100644
index 000000000..5a936b546
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/client/sse.js
@@ -0,0 +1 @@
+export * from '../dist/esm/client/sse.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/client/stdio.js b/restored-src/node_modules/@modelcontextprotocol/sdk/client/stdio.js
new file mode 100644
index 000000000..9b7f6b769
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/client/stdio.js
@@ -0,0 +1 @@
+export * from '../dist/esm/client/stdio.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/client/streamableHttp.js b/restored-src/node_modules/@modelcontextprotocol/sdk/client/streamableHttp.js
new file mode 100644
index 000000000..eb8dca4cb
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/client/streamableHttp.js
@@ -0,0 +1 @@
+export * from '../dist/esm/client/streamableHttp.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js b/restored-src/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
index 62f7fd0ef..287cceacf 100644
--- a/restored-src/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js
@@ -5,7 +5,6 @@
// ----------------------------------------------------
import * as z4mini from 'zod/v4-mini';
import { getObjectShape, safeParse, isZ4Schema, getLiteralValue } from './zod-compat.js';
-import { zodToJsonSchema } from 'zod-to-json-schema';
function mapMiniTarget(t) {
if (!t)
return 'draft-7';
@@ -23,11 +22,9 @@ export function toJsonSchemaCompat(schema, opts) {
io: opts?.pipeStrategy ?? 'input'
});
}
- // v3 branch — use vendored converter
- return zodToJsonSchema(schema, {
- strictUnions: opts?.strictUnions ?? true,
- pipeStrategy: opts?.pipeStrategy ?? 'input'
- });
+ // Restored source builds do not include the vendored Zod v3 converter.
+ // Return a permissive object schema instead of failing module evaluation.
+ return { type: 'object', additionalProperties: true };
}
export function getMethodLiteral(schema) {
const shape = getObjectShape(schema);
@@ -48,4 +45,4 @@ export function parseWithCompat(schema, data) {
}
return result.data;
}
-//# sourceMappingURL=zod-json-schema-compat.js.map
\ No newline at end of file
+//# sourceMappingURL=zod-json-schema-compat.js.map
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/package.json b/restored-src/node_modules/@modelcontextprotocol/sdk/package.json
new file mode 100644
index 000000000..006004942
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@modelcontextprotocol/sdk",
+ "private": true,
+ "main": "./dist/esm/client/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/server/auth/errors.js b/restored-src/node_modules/@modelcontextprotocol/sdk/server/auth/errors.js
new file mode 100644
index 000000000..a72388c8c
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/server/auth/errors.js
@@ -0,0 +1 @@
+export * from '../../dist/esm/server/auth/errors.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/server/index.js b/restored-src/node_modules/@modelcontextprotocol/sdk/server/index.js
new file mode 100644
index 000000000..d3bea2f8a
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/server/index.js
@@ -0,0 +1 @@
+export * from '../dist/esm/server/index.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/server/stdio.js b/restored-src/node_modules/@modelcontextprotocol/sdk/server/stdio.js
new file mode 100644
index 000000000..cc15d5625
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/server/stdio.js
@@ -0,0 +1 @@
+export * from '../dist/esm/server/stdio.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/shared/auth.js b/restored-src/node_modules/@modelcontextprotocol/sdk/shared/auth.js
new file mode 100644
index 000000000..c1a77b03e
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/shared/auth.js
@@ -0,0 +1 @@
+export * from '../dist/esm/shared/auth.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/shared/transport.js b/restored-src/node_modules/@modelcontextprotocol/sdk/shared/transport.js
new file mode 100644
index 000000000..710d9a4db
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/shared/transport.js
@@ -0,0 +1 @@
+export * from '../dist/esm/shared/transport.js'
diff --git a/restored-src/node_modules/@modelcontextprotocol/sdk/types.js b/restored-src/node_modules/@modelcontextprotocol/sdk/types.js
new file mode 100644
index 000000000..e724ec460
--- /dev/null
+++ b/restored-src/node_modules/@modelcontextprotocol/sdk/types.js
@@ -0,0 +1 @@
+export * from './dist/esm/types.js'
diff --git a/restored-src/node_modules/@opentelemetry/api-logs/package.json b/restored-src/node_modules/@opentelemetry/api-logs/package.json
new file mode 100644
index 000000000..af5d19053
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/api-logs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/api-logs",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/api/package.json b/restored-src/node_modules/@opentelemetry/api/package.json
new file mode 100644
index 000000000..625d7ed05
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/api/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/api",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/core/package.json b/restored-src/node_modules/@opentelemetry/core/package.json
new file mode 100644
index 000000000..080db35fa
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/core/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/core",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-grpc/package.json b/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-grpc/package.json
new file mode 100644
index 000000000..c35034031
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-grpc/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-logs-otlp-grpc",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-http/package.json b/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-http/package.json
new file mode 100644
index 000000000..b6b278b79
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-http/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-logs-otlp-http",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json b/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json
new file mode 100644
index 000000000..433669a9e
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-logs-otlp-proto/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-logs-otlp-proto",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-grpc/package.json b/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-grpc/package.json
new file mode 100644
index 000000000..6d0a5879c
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-grpc/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-metrics-otlp-grpc",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-http/package.json b/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-http/package.json
new file mode 100644
index 000000000..cfa4aa96a
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-http/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-metrics-otlp-http",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json b/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json
new file mode 100644
index 000000000..7b8d41973
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-metrics-otlp-proto/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-metrics-otlp-proto",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-prometheus/package.json b/restored-src/node_modules/@opentelemetry/exporter-prometheus/package.json
new file mode 100644
index 000000000..468412c7b
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-prometheus/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-prometheus",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-grpc/package.json b/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-grpc/package.json
new file mode 100644
index 000000000..aa40093f6
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-grpc/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-trace-otlp-grpc",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-http/package.json b/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-http/package.json
new file mode 100644
index 000000000..d58aa659e
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-http/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-trace-otlp-http",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json b/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json
new file mode 100644
index 000000000..6f73f201d
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/exporter-trace-otlp-proto/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/exporter-trace-otlp-proto",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/otlp-exporter-base/package.json b/restored-src/node_modules/@opentelemetry/otlp-exporter-base/package.json
new file mode 100644
index 000000000..647a535c2
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/otlp-exporter-base/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/otlp-exporter-base",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/otlp-grpc-exporter-base/package.json b/restored-src/node_modules/@opentelemetry/otlp-grpc-exporter-base/package.json
new file mode 100644
index 000000000..75f223802
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/otlp-grpc-exporter-base/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/otlp-grpc-exporter-base",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/otlp-transformer/package.json b/restored-src/node_modules/@opentelemetry/otlp-transformer/package.json
new file mode 100644
index 000000000..fd6440366
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/otlp-transformer/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/otlp-transformer",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/resources/package.json b/restored-src/node_modules/@opentelemetry/resources/package.json
new file mode 100644
index 000000000..af73fea38
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/resources/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/resources",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/sdk-logs/package.json b/restored-src/node_modules/@opentelemetry/sdk-logs/package.json
new file mode 100644
index 000000000..506b7e51e
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/sdk-logs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/sdk-logs",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/sdk-metrics/package.json b/restored-src/node_modules/@opentelemetry/sdk-metrics/package.json
new file mode 100644
index 000000000..390f57167
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/sdk-metrics/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/sdk-metrics",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/sdk-trace-base/package.json b/restored-src/node_modules/@opentelemetry/sdk-trace-base/package.json
new file mode 100644
index 000000000..14399a234
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/sdk-trace-base/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/sdk-trace-base",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@opentelemetry/semantic-conventions/package.json b/restored-src/node_modules/@opentelemetry/semantic-conventions/package.json
new file mode 100644
index 000000000..b2209d4e1
--- /dev/null
+++ b/restored-src/node_modules/@opentelemetry/semantic-conventions/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@opentelemetry/semantic-conventions",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@pondwader/socks5-server/package.json b/restored-src/node_modules/@pondwader/socks5-server/package.json
new file mode 100644
index 000000000..145f8447e
--- /dev/null
+++ b/restored-src/node_modules/@pondwader/socks5-server/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@pondwader/socks5-server",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/aspromise/package.json b/restored-src/node_modules/@protobufjs/aspromise/package.json
new file mode 100644
index 000000000..408277e58
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/aspromise/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/aspromise",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/base64/package.json b/restored-src/node_modules/@protobufjs/base64/package.json
new file mode 100644
index 000000000..eafd6e5fe
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/base64/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/base64",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/codegen/package.json b/restored-src/node_modules/@protobufjs/codegen/package.json
new file mode 100644
index 000000000..b79949929
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/codegen/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/codegen",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/eventemitter/package.json b/restored-src/node_modules/@protobufjs/eventemitter/package.json
new file mode 100644
index 000000000..61034b3c5
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/eventemitter/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/eventemitter",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/fetch/package.json b/restored-src/node_modules/@protobufjs/fetch/package.json
new file mode 100644
index 000000000..5251f6f46
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/fetch/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/fetch",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/float/package.json b/restored-src/node_modules/@protobufjs/float/package.json
new file mode 100644
index 000000000..3e8507587
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/float/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/float",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/inquire/package.json b/restored-src/node_modules/@protobufjs/inquire/package.json
new file mode 100644
index 000000000..6a8397124
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/inquire/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/inquire",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/path/package.json b/restored-src/node_modules/@protobufjs/path/package.json
new file mode 100644
index 000000000..1cf0df9f7
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/path/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/path",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/pool/package.json b/restored-src/node_modules/@protobufjs/pool/package.json
new file mode 100644
index 000000000..003ed6f5a
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/pool/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/pool",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@protobufjs/utf8/package.json b/restored-src/node_modules/@protobufjs/utf8/package.json
new file mode 100644
index 000000000..94d27d46b
--- /dev/null
+++ b/restored-src/node_modules/@protobufjs/utf8/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@protobufjs/utf8",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/config-resolver/package.json b/restored-src/node_modules/@smithy/config-resolver/package.json
new file mode 100644
index 000000000..cfb9ccdf2
--- /dev/null
+++ b/restored-src/node_modules/@smithy/config-resolver/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/config-resolver",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/core/package.json b/restored-src/node_modules/@smithy/core/package.json
new file mode 100644
index 000000000..a4cd7f4c4
--- /dev/null
+++ b/restored-src/node_modules/@smithy/core/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/core",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/credential-provider-imds/package.json b/restored-src/node_modules/@smithy/credential-provider-imds/package.json
new file mode 100644
index 000000000..117746efd
--- /dev/null
+++ b/restored-src/node_modules/@smithy/credential-provider-imds/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/credential-provider-imds",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/eventstream-codec/package.json b/restored-src/node_modules/@smithy/eventstream-codec/package.json
new file mode 100644
index 000000000..cd40f5aac
--- /dev/null
+++ b/restored-src/node_modules/@smithy/eventstream-codec/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/eventstream-codec",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/eventstream-serde-browser/package.json b/restored-src/node_modules/@smithy/eventstream-serde-browser/package.json
new file mode 100644
index 000000000..acf662507
--- /dev/null
+++ b/restored-src/node_modules/@smithy/eventstream-serde-browser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/eventstream-serde-browser",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/eventstream-serde-config-resolver/package.json b/restored-src/node_modules/@smithy/eventstream-serde-config-resolver/package.json
new file mode 100644
index 000000000..da368c89a
--- /dev/null
+++ b/restored-src/node_modules/@smithy/eventstream-serde-config-resolver/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/eventstream-serde-config-resolver",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/eventstream-serde-node/package.json b/restored-src/node_modules/@smithy/eventstream-serde-node/package.json
new file mode 100644
index 000000000..4b100dfc0
--- /dev/null
+++ b/restored-src/node_modules/@smithy/eventstream-serde-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/eventstream-serde-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/eventstream-serde-universal/package.json b/restored-src/node_modules/@smithy/eventstream-serde-universal/package.json
new file mode 100644
index 000000000..1be48c58d
--- /dev/null
+++ b/restored-src/node_modules/@smithy/eventstream-serde-universal/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/eventstream-serde-universal",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/fetch-http-handler/package.json b/restored-src/node_modules/@smithy/fetch-http-handler/package.json
new file mode 100644
index 000000000..d1a9f7f78
--- /dev/null
+++ b/restored-src/node_modules/@smithy/fetch-http-handler/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/fetch-http-handler",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/hash-node/package.json b/restored-src/node_modules/@smithy/hash-node/package.json
new file mode 100644
index 000000000..e9c578828
--- /dev/null
+++ b/restored-src/node_modules/@smithy/hash-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/hash-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/is-array-buffer/package.json b/restored-src/node_modules/@smithy/is-array-buffer/package.json
new file mode 100644
index 000000000..3b56ed236
--- /dev/null
+++ b/restored-src/node_modules/@smithy/is-array-buffer/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/is-array-buffer",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/middleware-content-length/package.json b/restored-src/node_modules/@smithy/middleware-content-length/package.json
new file mode 100644
index 000000000..6af594369
--- /dev/null
+++ b/restored-src/node_modules/@smithy/middleware-content-length/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/middleware-content-length",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/middleware-endpoint/package.json b/restored-src/node_modules/@smithy/middleware-endpoint/package.json
new file mode 100644
index 000000000..ba966bf3d
--- /dev/null
+++ b/restored-src/node_modules/@smithy/middleware-endpoint/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/middleware-endpoint",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/middleware-retry/package.json b/restored-src/node_modules/@smithy/middleware-retry/package.json
new file mode 100644
index 000000000..00d2725e3
--- /dev/null
+++ b/restored-src/node_modules/@smithy/middleware-retry/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/middleware-retry",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/middleware-serde/package.json b/restored-src/node_modules/@smithy/middleware-serde/package.json
new file mode 100644
index 000000000..8d7bed936
--- /dev/null
+++ b/restored-src/node_modules/@smithy/middleware-serde/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/middleware-serde",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/middleware-stack/package.json b/restored-src/node_modules/@smithy/middleware-stack/package.json
new file mode 100644
index 000000000..cc806141e
--- /dev/null
+++ b/restored-src/node_modules/@smithy/middleware-stack/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/middleware-stack",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/node-config-provider/package.json b/restored-src/node_modules/@smithy/node-config-provider/package.json
new file mode 100644
index 000000000..10aedce71
--- /dev/null
+++ b/restored-src/node_modules/@smithy/node-config-provider/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/node-config-provider",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/node-http-handler/package.json b/restored-src/node_modules/@smithy/node-http-handler/package.json
new file mode 100644
index 000000000..9bc5e38b8
--- /dev/null
+++ b/restored-src/node_modules/@smithy/node-http-handler/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/node-http-handler",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/property-provider/package.json b/restored-src/node_modules/@smithy/property-provider/package.json
new file mode 100644
index 000000000..6fe364a02
--- /dev/null
+++ b/restored-src/node_modules/@smithy/property-provider/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/property-provider",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/protocol-http/package.json b/restored-src/node_modules/@smithy/protocol-http/package.json
new file mode 100644
index 000000000..90bd37331
--- /dev/null
+++ b/restored-src/node_modules/@smithy/protocol-http/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/protocol-http",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/querystring-builder/package.json b/restored-src/node_modules/@smithy/querystring-builder/package.json
new file mode 100644
index 000000000..af17f0dfe
--- /dev/null
+++ b/restored-src/node_modules/@smithy/querystring-builder/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/querystring-builder",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/querystring-parser/package.json b/restored-src/node_modules/@smithy/querystring-parser/package.json
new file mode 100644
index 000000000..ccd14e2e4
--- /dev/null
+++ b/restored-src/node_modules/@smithy/querystring-parser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/querystring-parser",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/service-error-classification/package.json b/restored-src/node_modules/@smithy/service-error-classification/package.json
new file mode 100644
index 000000000..4fdbe1190
--- /dev/null
+++ b/restored-src/node_modules/@smithy/service-error-classification/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/service-error-classification",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/shared-ini-file-loader/package.json b/restored-src/node_modules/@smithy/shared-ini-file-loader/package.json
new file mode 100644
index 000000000..d443f2a0c
--- /dev/null
+++ b/restored-src/node_modules/@smithy/shared-ini-file-loader/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/shared-ini-file-loader",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/signature-v4/package.json b/restored-src/node_modules/@smithy/signature-v4/package.json
new file mode 100644
index 000000000..051e22d08
--- /dev/null
+++ b/restored-src/node_modules/@smithy/signature-v4/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/signature-v4",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/smithy-client/package.json b/restored-src/node_modules/@smithy/smithy-client/package.json
new file mode 100644
index 000000000..329d199a7
--- /dev/null
+++ b/restored-src/node_modules/@smithy/smithy-client/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/smithy-client",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/types/package.json b/restored-src/node_modules/@smithy/types/package.json
new file mode 100644
index 000000000..45478cd78
--- /dev/null
+++ b/restored-src/node_modules/@smithy/types/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/types",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/url-parser/package.json b/restored-src/node_modules/@smithy/url-parser/package.json
new file mode 100644
index 000000000..59af042c3
--- /dev/null
+++ b/restored-src/node_modules/@smithy/url-parser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/url-parser",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-base64/package.json b/restored-src/node_modules/@smithy/util-base64/package.json
new file mode 100644
index 000000000..65ec8f0be
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-base64/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-base64",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-body-length-browser/package.json b/restored-src/node_modules/@smithy/util-body-length-browser/package.json
new file mode 100644
index 000000000..43e99410a
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-body-length-browser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-body-length-browser",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-body-length-node/package.json b/restored-src/node_modules/@smithy/util-body-length-node/package.json
new file mode 100644
index 000000000..7929a81e4
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-body-length-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-body-length-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-buffer-from/package.json b/restored-src/node_modules/@smithy/util-buffer-from/package.json
new file mode 100644
index 000000000..9bae8cf21
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-buffer-from/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-buffer-from",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-config-provider/package.json b/restored-src/node_modules/@smithy/util-config-provider/package.json
new file mode 100644
index 000000000..6315d30b0
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-config-provider/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-config-provider",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-defaults-mode-node/package.json b/restored-src/node_modules/@smithy/util-defaults-mode-node/package.json
new file mode 100644
index 000000000..705859bab
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-defaults-mode-node/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-defaults-mode-node",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-endpoints/package.json b/restored-src/node_modules/@smithy/util-endpoints/package.json
new file mode 100644
index 000000000..8243f78c2
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-endpoints/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-endpoints",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-hex-encoding/package.json b/restored-src/node_modules/@smithy/util-hex-encoding/package.json
new file mode 100644
index 000000000..aa95f5e15
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-hex-encoding/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-hex-encoding",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-middleware/package.json b/restored-src/node_modules/@smithy/util-middleware/package.json
new file mode 100644
index 000000000..dd80ec21f
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-middleware/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-middleware",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-retry/package.json b/restored-src/node_modules/@smithy/util-retry/package.json
new file mode 100644
index 000000000..6b24c7bf6
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-retry/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-retry",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-stream/package.json b/restored-src/node_modules/@smithy/util-stream/package.json
new file mode 100644
index 000000000..9e0ff4eb2
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-stream",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-uri-escape/package.json b/restored-src/node_modules/@smithy/util-uri-escape/package.json
new file mode 100644
index 000000000..fce510c0a
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-uri-escape/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-uri-escape",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/util-utf8/package.json b/restored-src/node_modules/@smithy/util-utf8/package.json
new file mode 100644
index 000000000..7a2b79979
--- /dev/null
+++ b/restored-src/node_modules/@smithy/util-utf8/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/util-utf8",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@smithy/uuid/package.json b/restored-src/node_modules/@smithy/uuid/package.json
new file mode 100644
index 000000000..aa884e6d3
--- /dev/null
+++ b/restored-src/node_modules/@smithy/uuid/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@smithy/uuid",
+ "private": true,
+ "main": "./dist-cjs/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/@typespec/ts-http-runtime/package.json b/restored-src/node_modules/@typespec/ts-http-runtime/package.json
new file mode 100644
index 000000000..252a3a91a
--- /dev/null
+++ b/restored-src/node_modules/@typespec/ts-http-runtime/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@typespec/ts-http-runtime",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/@xmldom/xmldom/package.json b/restored-src/node_modules/@xmldom/xmldom/package.json
new file mode 100644
index 000000000..7f9066c01
--- /dev/null
+++ b/restored-src/node_modules/@xmldom/xmldom/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "@xmldom/xmldom",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/agent-base/package.json b/restored-src/node_modules/agent-base/package.json
new file mode 100644
index 000000000..d82f8bf34
--- /dev/null
+++ b/restored-src/node_modules/agent-base/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "agent-base",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ajv-formats/package.json b/restored-src/node_modules/ajv-formats/package.json
new file mode 100644
index 000000000..494b78835
--- /dev/null
+++ b/restored-src/node_modules/ajv-formats/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ajv-formats",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ajv/dist/refs/data.json b/restored-src/node_modules/ajv/dist/refs/data.json
new file mode 100644
index 000000000..b33bf5c38
--- /dev/null
+++ b/restored-src/node_modules/ajv/dist/refs/data.json
@@ -0,0 +1,10 @@
+{
+ "$id": "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",
+ "type": "object",
+ "properties": {
+ "$data": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": true
+}
diff --git a/restored-src/node_modules/ajv/dist/refs/json-schema-draft-07.json b/restored-src/node_modules/ajv/dist/refs/json-schema-draft-07.json
new file mode 100644
index 000000000..f9e2852f1
--- /dev/null
+++ b/restored-src/node_modules/ajv/dist/refs/json-schema-draft-07.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://json-schema.org/draft-07/schema#",
+ "title": "Draft 7 schema meta-schema (restored build stub)",
+ "definitions": {
+ "schemaArray": {
+ "type": "array",
+ "items": {
+ "$ref": "#"
+ }
+ },
+ "nonNegativeInteger": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "nonNegativeIntegerDefault0": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/nonNegativeInteger"
+ },
+ {
+ "default": 0
+ }
+ ]
+ },
+ "simpleTypes": {
+ "enum": [
+ "array",
+ "boolean",
+ "integer",
+ "null",
+ "number",
+ "object",
+ "string"
+ ]
+ },
+ "stringArray": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "default": []
+ }
+ },
+ "type": [
+ "object",
+ "boolean"
+ ]
+}
diff --git a/restored-src/node_modules/ajv/package.json b/restored-src/node_modules/ajv/package.json
new file mode 100644
index 000000000..fa343f7a8
--- /dev/null
+++ b/restored-src/node_modules/ajv/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ajv",
+ "private": true,
+ "main": "./dist/ajv.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ansi-escapes/package.json b/restored-src/node_modules/ansi-escapes/package.json
new file mode 100644
index 000000000..ab879d7d1
--- /dev/null
+++ b/restored-src/node_modules/ansi-escapes/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ansi-escapes",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ansi-regex/package.json b/restored-src/node_modules/ansi-regex/package.json
new file mode 100644
index 000000000..59dd18666
--- /dev/null
+++ b/restored-src/node_modules/ansi-regex/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ansi-regex",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ansi-styles/index.js b/restored-src/node_modules/ansi-styles/index.js
index 5d82581a1..000b253f2 100644
--- a/restored-src/node_modules/ansi-styles/index.js
+++ b/restored-src/node_modules/ansi-styles/index.js
@@ -146,10 +146,18 @@ function assembleStyles() {
styles.color.close = '\u001B[39m';
styles.bgColor.close = '\u001B[49m';
- setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
+ setLazyProperty(styles.color, 'ansi', () => {
+ const converters = makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false);
+ const ansi = code => `\u001B[${code}m`;
+ return Object.assign(ansi, converters);
+ });
setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
- setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
+ setLazyProperty(styles.bgColor, 'ansi', () => {
+ const converters = makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true);
+ const ansi = code => `\u001B[${code}m`;
+ return Object.assign(ansi, converters);
+ });
setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
diff --git a/restored-src/node_modules/ansi-styles/package.json b/restored-src/node_modules/ansi-styles/package.json
new file mode 100644
index 000000000..471da7ce9
--- /dev/null
+++ b/restored-src/node_modules/ansi-styles/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ansi-styles",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/asciichart/package.json b/restored-src/node_modules/asciichart/package.json
new file mode 100644
index 000000000..9741be045
--- /dev/null
+++ b/restored-src/node_modules/asciichart/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "asciichart",
+ "private": true,
+ "main": "./asciichart.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/asynckit/package.json b/restored-src/node_modules/asynckit/package.json
new file mode 100644
index 000000000..3d8ff4e6e
--- /dev/null
+++ b/restored-src/node_modules/asynckit/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "asynckit",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/auto-bind/package.json b/restored-src/node_modules/auto-bind/package.json
new file mode 100644
index 000000000..6950e111d
--- /dev/null
+++ b/restored-src/node_modules/auto-bind/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "auto-bind",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/axios/package.json b/restored-src/node_modules/axios/package.json
new file mode 100644
index 000000000..36fa9405c
--- /dev/null
+++ b/restored-src/node_modules/axios/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "axios",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/base64-js/package.json b/restored-src/node_modules/base64-js/package.json
new file mode 100644
index 000000000..868c926d0
--- /dev/null
+++ b/restored-src/node_modules/base64-js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "base64-js",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/bidi-js/package.json b/restored-src/node_modules/bidi-js/package.json
new file mode 100644
index 000000000..8443b7984
--- /dev/null
+++ b/restored-src/node_modules/bidi-js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "bidi-js",
+ "private": true,
+ "main": "./dist/bidi.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/bignumber.js/package.json b/restored-src/node_modules/bignumber.js/package.json
new file mode 100644
index 000000000..a315e1027
--- /dev/null
+++ b/restored-src/node_modules/bignumber.js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "bignumber.js",
+ "private": true,
+ "main": "./bignumber.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/buffer-equal-constant-time/package.json b/restored-src/node_modules/buffer-equal-constant-time/package.json
new file mode 100644
index 000000000..0a7156cca
--- /dev/null
+++ b/restored-src/node_modules/buffer-equal-constant-time/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "buffer-equal-constant-time",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/bundle-name/package.json b/restored-src/node_modules/bundle-name/package.json
new file mode 100644
index 000000000..56d6505ab
--- /dev/null
+++ b/restored-src/node_modules/bundle-name/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "bundle-name",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/call-bind-apply-helpers/package.json b/restored-src/node_modules/call-bind-apply-helpers/package.json
new file mode 100644
index 000000000..8ad5a7e82
--- /dev/null
+++ b/restored-src/node_modules/call-bind-apply-helpers/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "call-bind-apply-helpers",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/chalk/package.json b/restored-src/node_modules/chalk/package.json
new file mode 100644
index 000000000..ed909ce7d
--- /dev/null
+++ b/restored-src/node_modules/chalk/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "chalk",
+ "private": true,
+ "main": "./source/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/chalk/source/index.js b/restored-src/node_modules/chalk/source/index.js
index 75ec66350..1f3b3db95 100644
--- a/restored-src/node_modules/chalk/source/index.js
+++ b/restored-src/node_modules/chalk/source/index.js
@@ -227,3 +227,4 @@ chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-di
chalk.stderr.supportsColor = stderrColor;
module.exports = chalk;
+module.exports.Chalk = Chalk;
diff --git a/restored-src/node_modules/chokidar/package.json b/restored-src/node_modules/chokidar/package.json
new file mode 100644
index 000000000..fcf0f1807
--- /dev/null
+++ b/restored-src/node_modules/chokidar/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "chokidar",
+ "private": true,
+ "main": "./esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/cli-boxes/boxes.json b/restored-src/node_modules/cli-boxes/boxes.json
new file mode 100644
index 000000000..5d71dcb77
--- /dev/null
+++ b/restored-src/node_modules/cli-boxes/boxes.json
@@ -0,0 +1,42 @@
+{
+ "single": {
+ "topLeft": "┌",
+ "topRight": "┐",
+ "bottomRight": "┘",
+ "bottomLeft": "└",
+ "horizontal": "─",
+ "vertical": "│"
+ },
+ "double": {
+ "topLeft": "╔",
+ "topRight": "╗",
+ "bottomRight": "╝",
+ "bottomLeft": "╚",
+ "horizontal": "═",
+ "vertical": "║"
+ },
+ "round": {
+ "topLeft": "╭",
+ "topRight": "╮",
+ "bottomRight": "╯",
+ "bottomLeft": "╰",
+ "horizontal": "─",
+ "vertical": "│"
+ },
+ "bold": {
+ "topLeft": "┏",
+ "topRight": "┓",
+ "bottomRight": "┛",
+ "bottomLeft": "┗",
+ "horizontal": "━",
+ "vertical": "┃"
+ },
+ "classic": {
+ "topLeft": "+",
+ "topRight": "+",
+ "bottomRight": "+",
+ "bottomLeft": "+",
+ "horizontal": "-",
+ "vertical": "|"
+ }
+}
diff --git a/restored-src/node_modules/cli-boxes/package.json b/restored-src/node_modules/cli-boxes/package.json
new file mode 100644
index 000000000..96e3712e8
--- /dev/null
+++ b/restored-src/node_modules/cli-boxes/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "cli-boxes",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/cli-highlight/package.json b/restored-src/node_modules/cli-highlight/package.json
new file mode 100644
index 000000000..67609c94d
--- /dev/null
+++ b/restored-src/node_modules/cli-highlight/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "cli-highlight",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/cli-width/package.json b/restored-src/node_modules/cli-width/package.json
new file mode 100644
index 000000000..2fa37e9a8
--- /dev/null
+++ b/restored-src/node_modules/cli-width/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "cli-width",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/code-excerpt/package.json b/restored-src/node_modules/code-excerpt/package.json
new file mode 100644
index 000000000..e7e5d5706
--- /dev/null
+++ b/restored-src/node_modules/code-excerpt/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "code-excerpt",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/color-convert/package.json b/restored-src/node_modules/color-convert/package.json
new file mode 100644
index 000000000..42e59bf4b
--- /dev/null
+++ b/restored-src/node_modules/color-convert/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "color-convert",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/color-name/package.json b/restored-src/node_modules/color-name/package.json
new file mode 100644
index 000000000..dca1bd107
--- /dev/null
+++ b/restored-src/node_modules/color-name/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "color-name",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/combined-stream/package.json b/restored-src/node_modules/combined-stream/package.json
new file mode 100644
index 000000000..554d95d7e
--- /dev/null
+++ b/restored-src/node_modules/combined-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "combined-stream",
+ "private": true,
+ "main": "./lib/combined_stream.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/commander/package.json b/restored-src/node_modules/commander/package.json
new file mode 100644
index 000000000..217c4d5a3
--- /dev/null
+++ b/restored-src/node_modules/commander/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "commander",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/convert-to-spaces/package.json b/restored-src/node_modules/convert-to-spaces/package.json
new file mode 100644
index 000000000..cbeacc5d8
--- /dev/null
+++ b/restored-src/node_modules/convert-to-spaces/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "convert-to-spaces",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/cross-spawn/package.json b/restored-src/node_modules/cross-spawn/package.json
new file mode 100644
index 000000000..69128d207
--- /dev/null
+++ b/restored-src/node_modules/cross-spawn/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "cross-spawn",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/cssfilter/package.json b/restored-src/node_modules/cssfilter/package.json
new file mode 100644
index 000000000..c6b70af26
--- /dev/null
+++ b/restored-src/node_modules/cssfilter/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "cssfilter",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/debug/package.json b/restored-src/node_modules/debug/package.json
new file mode 100644
index 000000000..cefbcee6e
--- /dev/null
+++ b/restored-src/node_modules/debug/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "debug",
+ "private": true,
+ "main": "./src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/default-browser-id/package.json b/restored-src/node_modules/default-browser-id/package.json
new file mode 100644
index 000000000..406e0bdc1
--- /dev/null
+++ b/restored-src/node_modules/default-browser-id/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "default-browser-id",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/default-browser/package.json b/restored-src/node_modules/default-browser/package.json
new file mode 100644
index 000000000..8d315bc42
--- /dev/null
+++ b/restored-src/node_modules/default-browser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "default-browser",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/define-lazy-prop/package.json b/restored-src/node_modules/define-lazy-prop/package.json
new file mode 100644
index 000000000..8efc68592
--- /dev/null
+++ b/restored-src/node_modules/define-lazy-prop/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "define-lazy-prop",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/delayed-stream/package.json b/restored-src/node_modules/delayed-stream/package.json
new file mode 100644
index 000000000..6cf39a653
--- /dev/null
+++ b/restored-src/node_modules/delayed-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "delayed-stream",
+ "private": true,
+ "main": "./lib/delayed_stream.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/detect-libc/package.json b/restored-src/node_modules/detect-libc/package.json
new file mode 100644
index 000000000..2328d0418
--- /dev/null
+++ b/restored-src/node_modules/detect-libc/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "detect-libc",
+ "private": true,
+ "main": "./lib/detect-libc.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/diff/libesm/util/params.js b/restored-src/node_modules/diff/libesm/util/params.js
new file mode 100644
index 000000000..e9eeecf38
--- /dev/null
+++ b/restored-src/node_modules/diff/libesm/util/params.js
@@ -0,0 +1,11 @@
+export function generateOptions(options, defaults = {}) {
+ if (options === undefined) {
+ return { ...defaults };
+ }
+
+ if (typeof options === "function") {
+ return { ...defaults, callback: options };
+ }
+
+ return { ...defaults, ...options };
+}
diff --git a/restored-src/node_modules/diff/package.json b/restored-src/node_modules/diff/package.json
new file mode 100644
index 000000000..3912eead4
--- /dev/null
+++ b/restored-src/node_modules/diff/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "diff",
+ "private": true,
+ "main": "./libesm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/dijkstrajs/package.json b/restored-src/node_modules/dijkstrajs/package.json
new file mode 100644
index 000000000..5b82430bc
--- /dev/null
+++ b/restored-src/node_modules/dijkstrajs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "dijkstrajs",
+ "private": true,
+ "main": "./dijkstra.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/dom-mutator/package.json b/restored-src/node_modules/dom-mutator/package.json
new file mode 100644
index 000000000..a127e3a5d
--- /dev/null
+++ b/restored-src/node_modules/dom-mutator/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "dom-mutator",
+ "private": true,
+ "main": "./dist/dom-mutator.cjs.production.min.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/dunder-proto/package.json b/restored-src/node_modules/dunder-proto/package.json
new file mode 100644
index 000000000..5b8726dff
--- /dev/null
+++ b/restored-src/node_modules/dunder-proto/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "dunder-proto",
+ "private": true,
+ "main": "./get.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ecdsa-sig-formatter/package.json b/restored-src/node_modules/ecdsa-sig-formatter/package.json
new file mode 100644
index 000000000..c4425e262
--- /dev/null
+++ b/restored-src/node_modules/ecdsa-sig-formatter/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ecdsa-sig-formatter",
+ "private": true,
+ "main": "./src/ecdsa-sig-formatter.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/emoji-regex/package.json b/restored-src/node_modules/emoji-regex/package.json
new file mode 100644
index 000000000..407e5ecc4
--- /dev/null
+++ b/restored-src/node_modules/emoji-regex/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "emoji-regex",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/env-paths/package.json b/restored-src/node_modules/env-paths/package.json
new file mode 100644
index 000000000..9539a9c68
--- /dev/null
+++ b/restored-src/node_modules/env-paths/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "env-paths",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/es-define-property/package.json b/restored-src/node_modules/es-define-property/package.json
new file mode 100644
index 000000000..942980bd3
--- /dev/null
+++ b/restored-src/node_modules/es-define-property/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "es-define-property",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/es-errors/package.json b/restored-src/node_modules/es-errors/package.json
new file mode 100644
index 000000000..4f5422a31
--- /dev/null
+++ b/restored-src/node_modules/es-errors/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "es-errors",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/es-object-atoms/package.json b/restored-src/node_modules/es-object-atoms/package.json
new file mode 100644
index 000000000..56a0e07c5
--- /dev/null
+++ b/restored-src/node_modules/es-object-atoms/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "es-object-atoms",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/es-set-tostringtag/package.json b/restored-src/node_modules/es-set-tostringtag/package.json
new file mode 100644
index 000000000..478fa57ab
--- /dev/null
+++ b/restored-src/node_modules/es-set-tostringtag/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "es-set-tostringtag",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/escape-string-regexp/package.json b/restored-src/node_modules/escape-string-regexp/package.json
new file mode 100644
index 000000000..7508c2b06
--- /dev/null
+++ b/restored-src/node_modules/escape-string-regexp/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "escape-string-regexp",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/eventsource-parser/package.json b/restored-src/node_modules/eventsource-parser/package.json
new file mode 100644
index 000000000..616135d64
--- /dev/null
+++ b/restored-src/node_modules/eventsource-parser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "eventsource-parser",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/eventsource-parser/stream.js b/restored-src/node_modules/eventsource-parser/stream.js
new file mode 100644
index 000000000..814b5edbc
--- /dev/null
+++ b/restored-src/node_modules/eventsource-parser/stream.js
@@ -0,0 +1 @@
+export * from './dist/stream.js'
diff --git a/restored-src/node_modules/eventsource/package.json b/restored-src/node_modules/eventsource/package.json
new file mode 100644
index 000000000..dab267b2d
--- /dev/null
+++ b/restored-src/node_modules/eventsource/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "eventsource",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/execa/package.json b/restored-src/node_modules/execa/package.json
new file mode 100644
index 000000000..f5bbb4914
--- /dev/null
+++ b/restored-src/node_modules/execa/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "execa",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/extend/package.json b/restored-src/node_modules/extend/package.json
new file mode 100644
index 000000000..8f85930c5
--- /dev/null
+++ b/restored-src/node_modules/extend/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "extend",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/fast-deep-equal/package.json b/restored-src/node_modules/fast-deep-equal/package.json
new file mode 100644
index 000000000..1778606eb
--- /dev/null
+++ b/restored-src/node_modules/fast-deep-equal/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "fast-deep-equal",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/fast-uri/package.json b/restored-src/node_modules/fast-uri/package.json
new file mode 100644
index 000000000..b8e48adeb
--- /dev/null
+++ b/restored-src/node_modules/fast-uri/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "fast-uri",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/fast-xml-parser/package.json b/restored-src/node_modules/fast-xml-parser/package.json
new file mode 100644
index 000000000..76da6bebc
--- /dev/null
+++ b/restored-src/node_modules/fast-xml-parser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "fast-xml-parser",
+ "private": true,
+ "main": "./lib/fxp.cjs",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/fflate/package.json b/restored-src/node_modules/fflate/package.json
new file mode 100644
index 000000000..15c9bdb7a
--- /dev/null
+++ b/restored-src/node_modules/fflate/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "fflate",
+ "private": true,
+ "main": "./esm/index.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/figures/package.json b/restored-src/node_modules/figures/package.json
new file mode 100644
index 000000000..9a400e444
--- /dev/null
+++ b/restored-src/node_modules/figures/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "figures",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/flora-colossus/package.json b/restored-src/node_modules/flora-colossus/package.json
new file mode 100644
index 000000000..f68a6441e
--- /dev/null
+++ b/restored-src/node_modules/flora-colossus/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "flora-colossus",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/follow-redirects/package.json b/restored-src/node_modules/follow-redirects/package.json
new file mode 100644
index 000000000..ac30124e3
--- /dev/null
+++ b/restored-src/node_modules/follow-redirects/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "follow-redirects",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/form-data/package.json b/restored-src/node_modules/form-data/package.json
new file mode 100644
index 000000000..f8bd3dcd3
--- /dev/null
+++ b/restored-src/node_modules/form-data/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "form-data",
+ "private": true,
+ "main": "./lib/form_data.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/fs-extra/package.json b/restored-src/node_modules/fs-extra/package.json
new file mode 100644
index 000000000..4b008a03d
--- /dev/null
+++ b/restored-src/node_modules/fs-extra/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "fs-extra",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/function-bind/package.json b/restored-src/node_modules/function-bind/package.json
new file mode 100644
index 000000000..c9e3b8230
--- /dev/null
+++ b/restored-src/node_modules/function-bind/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "function-bind",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/fuse.js/package.json b/restored-src/node_modules/fuse.js/package.json
new file mode 100644
index 000000000..5e2ea77ba
--- /dev/null
+++ b/restored-src/node_modules/fuse.js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "fuse.js",
+ "private": true,
+ "main": "./dist/fuse.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/galactus/package.json b/restored-src/node_modules/galactus/package.json
new file mode 100644
index 000000000..168a5b953
--- /dev/null
+++ b/restored-src/node_modules/galactus/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "galactus",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/gaxios/package.json b/restored-src/node_modules/gaxios/package.json
new file mode 100644
index 000000000..f649e7841
--- /dev/null
+++ b/restored-src/node_modules/gaxios/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "gaxios",
+ "private": true,
+ "main": "./build/src/gaxios.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/gcp-metadata/package.json b/restored-src/node_modules/gcp-metadata/package.json
new file mode 100644
index 000000000..cba221491
--- /dev/null
+++ b/restored-src/node_modules/gcp-metadata/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "gcp-metadata",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/get-east-asian-width/package.json b/restored-src/node_modules/get-east-asian-width/package.json
new file mode 100644
index 000000000..a03b5f13c
--- /dev/null
+++ b/restored-src/node_modules/get-east-asian-width/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "get-east-asian-width",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/get-intrinsic/package.json b/restored-src/node_modules/get-intrinsic/package.json
new file mode 100644
index 000000000..d6ca9f5b8
--- /dev/null
+++ b/restored-src/node_modules/get-intrinsic/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "get-intrinsic",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/get-proto/package.json b/restored-src/node_modules/get-proto/package.json
new file mode 100644
index 000000000..f75136b79
--- /dev/null
+++ b/restored-src/node_modules/get-proto/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "get-proto",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/get-stream/package.json b/restored-src/node_modules/get-stream/package.json
new file mode 100644
index 000000000..8b191ff37
--- /dev/null
+++ b/restored-src/node_modules/get-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "get-stream",
+ "private": true,
+ "main": "./source/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/google-auth-library/package.json b/restored-src/node_modules/google-auth-library/package.json
new file mode 100644
index 000000000..7400bbf0c
--- /dev/null
+++ b/restored-src/node_modules/google-auth-library/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "google-auth-library",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/google-logging-utils/package.json b/restored-src/node_modules/google-logging-utils/package.json
new file mode 100644
index 000000000..cb767bc26
--- /dev/null
+++ b/restored-src/node_modules/google-logging-utils/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "google-logging-utils",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/gopd/package.json b/restored-src/node_modules/gopd/package.json
new file mode 100644
index 000000000..4dffa8244
--- /dev/null
+++ b/restored-src/node_modules/gopd/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "gopd",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/graceful-fs/package.json b/restored-src/node_modules/graceful-fs/package.json
new file mode 100644
index 000000000..814677dd0
--- /dev/null
+++ b/restored-src/node_modules/graceful-fs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "graceful-fs",
+ "private": true,
+ "main": "./graceful-fs.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/gtoken/package.json b/restored-src/node_modules/gtoken/package.json
new file mode 100644
index 000000000..7de1e2f0a
--- /dev/null
+++ b/restored-src/node_modules/gtoken/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "gtoken",
+ "private": true,
+ "main": "./build/src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/has-flag/package.json b/restored-src/node_modules/has-flag/package.json
new file mode 100644
index 000000000..7a5eff60b
--- /dev/null
+++ b/restored-src/node_modules/has-flag/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "has-flag",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/has-symbols/package.json b/restored-src/node_modules/has-symbols/package.json
new file mode 100644
index 000000000..0e5a72735
--- /dev/null
+++ b/restored-src/node_modules/has-symbols/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "has-symbols",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/has-tostringtag/package.json b/restored-src/node_modules/has-tostringtag/package.json
new file mode 100644
index 000000000..0a2baf2ec
--- /dev/null
+++ b/restored-src/node_modules/has-tostringtag/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "has-tostringtag",
+ "private": true,
+ "main": "./shams.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/hasown/package.json b/restored-src/node_modules/hasown/package.json
new file mode 100644
index 000000000..374e886f0
--- /dev/null
+++ b/restored-src/node_modules/hasown/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "hasown",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/highlight.js/package.json b/restored-src/node_modules/highlight.js/package.json
new file mode 100644
index 000000000..c55c93c95
--- /dev/null
+++ b/restored-src/node_modules/highlight.js/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "highlight.js",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/http-proxy-agent/package.json b/restored-src/node_modules/http-proxy-agent/package.json
new file mode 100644
index 000000000..c6277ba4d
--- /dev/null
+++ b/restored-src/node_modules/http-proxy-agent/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "http-proxy-agent",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/https-proxy-agent/package.json b/restored-src/node_modules/https-proxy-agent/package.json
new file mode 100644
index 000000000..356c19ef2
--- /dev/null
+++ b/restored-src/node_modules/https-proxy-agent/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "https-proxy-agent",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/human-signals/package.json b/restored-src/node_modules/human-signals/package.json
new file mode 100644
index 000000000..74bfe2da8
--- /dev/null
+++ b/restored-src/node_modules/human-signals/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "human-signals",
+ "private": true,
+ "main": "./build/src/main.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/ignore/package.json b/restored-src/node_modules/ignore/package.json
new file mode 100644
index 000000000..149098b91
--- /dev/null
+++ b/restored-src/node_modules/ignore/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ignore",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/indent-string/package.json b/restored-src/node_modules/indent-string/package.json
new file mode 100644
index 000000000..1fc5e56c4
--- /dev/null
+++ b/restored-src/node_modules/indent-string/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "indent-string",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/is-docker/package.json b/restored-src/node_modules/is-docker/package.json
new file mode 100644
index 000000000..d7fe66b9c
--- /dev/null
+++ b/restored-src/node_modules/is-docker/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "is-docker",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/is-fullwidth-code-point/package.json b/restored-src/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 000000000..047f3cb8a
--- /dev/null
+++ b/restored-src/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "is-fullwidth-code-point",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/is-inside-container/package.json b/restored-src/node_modules/is-inside-container/package.json
new file mode 100644
index 000000000..9d1e9f4ae
--- /dev/null
+++ b/restored-src/node_modules/is-inside-container/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "is-inside-container",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/is-stream/index.js b/restored-src/node_modules/is-stream/index.js
index 2e43434da..4b3f81d8a 100644
--- a/restored-src/node_modules/is-stream/index.js
+++ b/restored-src/node_modules/is-stream/index.js
@@ -26,3 +26,8 @@ isStream.transform = stream =>
typeof stream._transform === 'function';
module.exports = isStream;
+module.exports.isStream = isStream;
+module.exports.isWritableStream = isStream.writable;
+module.exports.isReadableStream = isStream.readable;
+module.exports.isDuplexStream = isStream.duplex;
+module.exports.isTransformStream = isStream.transform;
diff --git a/restored-src/node_modules/is-stream/package.json b/restored-src/node_modules/is-stream/package.json
new file mode 100644
index 000000000..78ed8eb14
--- /dev/null
+++ b/restored-src/node_modules/is-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "is-stream",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/is-unicode-supported/package.json b/restored-src/node_modules/is-unicode-supported/package.json
new file mode 100644
index 000000000..7a22ec0c9
--- /dev/null
+++ b/restored-src/node_modules/is-unicode-supported/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "is-unicode-supported",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/is-wsl/package.json b/restored-src/node_modules/is-wsl/package.json
new file mode 100644
index 000000000..a07765ff1
--- /dev/null
+++ b/restored-src/node_modules/is-wsl/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "is-wsl",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/isexe/package.json b/restored-src/node_modules/isexe/package.json
new file mode 100644
index 000000000..efbac8516
--- /dev/null
+++ b/restored-src/node_modules/isexe/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "isexe",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/json-bigint/package.json b/restored-src/node_modules/json-bigint/package.json
new file mode 100644
index 000000000..8af8d02bc
--- /dev/null
+++ b/restored-src/node_modules/json-bigint/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "json-bigint",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/json-schema-traverse/package.json b/restored-src/node_modules/json-schema-traverse/package.json
new file mode 100644
index 000000000..f72aa6641
--- /dev/null
+++ b/restored-src/node_modules/json-schema-traverse/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "json-schema-traverse",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/jsonc-parser/package.json b/restored-src/node_modules/jsonc-parser/package.json
new file mode 100644
index 000000000..d6dbc53c7
--- /dev/null
+++ b/restored-src/node_modules/jsonc-parser/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "jsonc-parser",
+ "private": true,
+ "main": "./lib/esm/main.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/jsonfile/package.json b/restored-src/node_modules/jsonfile/package.json
new file mode 100644
index 000000000..3ac235751
--- /dev/null
+++ b/restored-src/node_modules/jsonfile/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "jsonfile",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/jsonwebtoken/package.json b/restored-src/node_modules/jsonwebtoken/package.json
new file mode 100644
index 000000000..070ed337a
--- /dev/null
+++ b/restored-src/node_modules/jsonwebtoken/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "jsonwebtoken",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/jwa/package.json b/restored-src/node_modules/jwa/package.json
new file mode 100644
index 000000000..b22dcf2fb
--- /dev/null
+++ b/restored-src/node_modules/jwa/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "jwa",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/jws/package.json b/restored-src/node_modules/jws/package.json
new file mode 100644
index 000000000..9b39ea53d
--- /dev/null
+++ b/restored-src/node_modules/jws/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "jws",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash-es/lodash.js b/restored-src/node_modules/lodash-es/lodash.js
index 25b790ec1..95b590723 100644
--- a/restored-src/node_modules/lodash-es/lodash.js
+++ b/restored-src/node_modules/lodash-es/lodash.js
@@ -1,331 +1,11 @@
-/**
- * @license
- * Lodash (Custom Build)
- * Build: `lodash modularize exports="es" -o ./`
- * Copyright OpenJS Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-export { default as add } from './add.js';
-export { default as after } from './after.js';
-export { default as ary } from './ary.js';
-export { default as assign } from './assign.js';
-export { default as assignIn } from './assignIn.js';
-export { default as assignInWith } from './assignInWith.js';
-export { default as assignWith } from './assignWith.js';
-export { default as at } from './at.js';
-export { default as attempt } from './attempt.js';
-export { default as before } from './before.js';
-export { default as bind } from './bind.js';
-export { default as bindAll } from './bindAll.js';
-export { default as bindKey } from './bindKey.js';
-export { default as camelCase } from './camelCase.js';
-export { default as capitalize } from './capitalize.js';
-export { default as castArray } from './castArray.js';
-export { default as ceil } from './ceil.js';
-export { default as chain } from './chain.js';
-export { default as chunk } from './chunk.js';
-export { default as clamp } from './clamp.js';
-export { default as clone } from './clone.js';
-export { default as cloneDeep } from './cloneDeep.js';
-export { default as cloneDeepWith } from './cloneDeepWith.js';
-export { default as cloneWith } from './cloneWith.js';
-export { default as commit } from './commit.js';
-export { default as compact } from './compact.js';
-export { default as concat } from './concat.js';
-export { default as cond } from './cond.js';
-export { default as conforms } from './conforms.js';
-export { default as conformsTo } from './conformsTo.js';
-export { default as constant } from './constant.js';
-export { default as countBy } from './countBy.js';
-export { default as create } from './create.js';
-export { default as curry } from './curry.js';
-export { default as curryRight } from './curryRight.js';
-export { default as debounce } from './debounce.js';
-export { default as deburr } from './deburr.js';
-export { default as defaultTo } from './defaultTo.js';
-export { default as defaults } from './defaults.js';
-export { default as defaultsDeep } from './defaultsDeep.js';
-export { default as defer } from './defer.js';
-export { default as delay } from './delay.js';
-export { default as difference } from './difference.js';
-export { default as differenceBy } from './differenceBy.js';
-export { default as differenceWith } from './differenceWith.js';
-export { default as divide } from './divide.js';
-export { default as drop } from './drop.js';
-export { default as dropRight } from './dropRight.js';
-export { default as dropRightWhile } from './dropRightWhile.js';
-export { default as dropWhile } from './dropWhile.js';
-export { default as each } from './each.js';
-export { default as eachRight } from './eachRight.js';
-export { default as endsWith } from './endsWith.js';
-export { default as entries } from './entries.js';
-export { default as entriesIn } from './entriesIn.js';
-export { default as eq } from './eq.js';
-export { default as escape } from './escape.js';
-export { default as escapeRegExp } from './escapeRegExp.js';
-export { default as every } from './every.js';
-export { default as extend } from './extend.js';
-export { default as extendWith } from './extendWith.js';
-export { default as fill } from './fill.js';
-export { default as filter } from './filter.js';
-export { default as find } from './find.js';
-export { default as findIndex } from './findIndex.js';
-export { default as findKey } from './findKey.js';
-export { default as findLast } from './findLast.js';
-export { default as findLastIndex } from './findLastIndex.js';
-export { default as findLastKey } from './findLastKey.js';
-export { default as first } from './first.js';
-export { default as flatMap } from './flatMap.js';
-export { default as flatMapDeep } from './flatMapDeep.js';
-export { default as flatMapDepth } from './flatMapDepth.js';
-export { default as flatten } from './flatten.js';
-export { default as flattenDeep } from './flattenDeep.js';
-export { default as flattenDepth } from './flattenDepth.js';
-export { default as flip } from './flip.js';
-export { default as floor } from './floor.js';
-export { default as flow } from './flow.js';
-export { default as flowRight } from './flowRight.js';
-export { default as forEach } from './forEach.js';
-export { default as forEachRight } from './forEachRight.js';
-export { default as forIn } from './forIn.js';
-export { default as forInRight } from './forInRight.js';
-export { default as forOwn } from './forOwn.js';
-export { default as forOwnRight } from './forOwnRight.js';
-export { default as fromPairs } from './fromPairs.js';
-export { default as functions } from './functions.js';
-export { default as functionsIn } from './functionsIn.js';
-export { default as get } from './get.js';
-export { default as groupBy } from './groupBy.js';
-export { default as gt } from './gt.js';
-export { default as gte } from './gte.js';
-export { default as has } from './has.js';
-export { default as hasIn } from './hasIn.js';
-export { default as head } from './head.js';
-export { default as identity } from './identity.js';
-export { default as inRange } from './inRange.js';
-export { default as includes } from './includes.js';
-export { default as indexOf } from './indexOf.js';
-export { default as initial } from './initial.js';
-export { default as intersection } from './intersection.js';
-export { default as intersectionBy } from './intersectionBy.js';
-export { default as intersectionWith } from './intersectionWith.js';
-export { default as invert } from './invert.js';
-export { default as invertBy } from './invertBy.js';
-export { default as invoke } from './invoke.js';
-export { default as invokeMap } from './invokeMap.js';
-export { default as isArguments } from './isArguments.js';
-export { default as isArray } from './isArray.js';
-export { default as isArrayBuffer } from './isArrayBuffer.js';
-export { default as isArrayLike } from './isArrayLike.js';
-export { default as isArrayLikeObject } from './isArrayLikeObject.js';
-export { default as isBoolean } from './isBoolean.js';
-export { default as isBuffer } from './isBuffer.js';
-export { default as isDate } from './isDate.js';
-export { default as isElement } from './isElement.js';
-export { default as isEmpty } from './isEmpty.js';
-export { default as isEqual } from './isEqual.js';
-export { default as isEqualWith } from './isEqualWith.js';
-export { default as isError } from './isError.js';
-export { default as isFinite } from './isFinite.js';
-export { default as isFunction } from './isFunction.js';
-export { default as isInteger } from './isInteger.js';
-export { default as isLength } from './isLength.js';
-export { default as isMap } from './isMap.js';
-export { default as isMatch } from './isMatch.js';
-export { default as isMatchWith } from './isMatchWith.js';
-export { default as isNaN } from './isNaN.js';
-export { default as isNative } from './isNative.js';
-export { default as isNil } from './isNil.js';
-export { default as isNull } from './isNull.js';
-export { default as isNumber } from './isNumber.js';
-export { default as isObject } from './isObject.js';
-export { default as isObjectLike } from './isObjectLike.js';
-export { default as isPlainObject } from './isPlainObject.js';
-export { default as isRegExp } from './isRegExp.js';
-export { default as isSafeInteger } from './isSafeInteger.js';
-export { default as isSet } from './isSet.js';
-export { default as isString } from './isString.js';
-export { default as isSymbol } from './isSymbol.js';
-export { default as isTypedArray } from './isTypedArray.js';
-export { default as isUndefined } from './isUndefined.js';
-export { default as isWeakMap } from './isWeakMap.js';
-export { default as isWeakSet } from './isWeakSet.js';
-export { default as iteratee } from './iteratee.js';
-export { default as join } from './join.js';
-export { default as kebabCase } from './kebabCase.js';
-export { default as keyBy } from './keyBy.js';
-export { default as keys } from './keys.js';
-export { default as keysIn } from './keysIn.js';
-export { default as last } from './last.js';
-export { default as lastIndexOf } from './lastIndexOf.js';
-export { default as lodash } from './wrapperLodash.js';
-export { default as lowerCase } from './lowerCase.js';
-export { default as lowerFirst } from './lowerFirst.js';
-export { default as lt } from './lt.js';
-export { default as lte } from './lte.js';
-export { default as map } from './map.js';
-export { default as mapKeys } from './mapKeys.js';
-export { default as mapValues } from './mapValues.js';
-export { default as matches } from './matches.js';
-export { default as matchesProperty } from './matchesProperty.js';
-export { default as max } from './max.js';
-export { default as maxBy } from './maxBy.js';
-export { default as mean } from './mean.js';
-export { default as meanBy } from './meanBy.js';
-export { default as memoize } from './memoize.js';
-export { default as merge } from './merge.js';
-export { default as mergeWith } from './mergeWith.js';
-export { default as method } from './method.js';
-export { default as methodOf } from './methodOf.js';
-export { default as min } from './min.js';
-export { default as minBy } from './minBy.js';
-export { default as mixin } from './mixin.js';
-export { default as multiply } from './multiply.js';
-export { default as negate } from './negate.js';
-export { default as next } from './next.js';
-export { default as noop } from './noop.js';
-export { default as now } from './now.js';
-export { default as nth } from './nth.js';
-export { default as nthArg } from './nthArg.js';
-export { default as omit } from './omit.js';
-export { default as omitBy } from './omitBy.js';
-export { default as once } from './once.js';
-export { default as orderBy } from './orderBy.js';
-export { default as over } from './over.js';
-export { default as overArgs } from './overArgs.js';
-export { default as overEvery } from './overEvery.js';
-export { default as overSome } from './overSome.js';
-export { default as pad } from './pad.js';
-export { default as padEnd } from './padEnd.js';
-export { default as padStart } from './padStart.js';
-export { default as parseInt } from './parseInt.js';
-export { default as partial } from './partial.js';
-export { default as partialRight } from './partialRight.js';
-export { default as partition } from './partition.js';
-export { default as pick } from './pick.js';
-export { default as pickBy } from './pickBy.js';
-export { default as plant } from './plant.js';
-export { default as property } from './property.js';
-export { default as propertyOf } from './propertyOf.js';
-export { default as pull } from './pull.js';
-export { default as pullAll } from './pullAll.js';
-export { default as pullAllBy } from './pullAllBy.js';
-export { default as pullAllWith } from './pullAllWith.js';
-export { default as pullAt } from './pullAt.js';
-export { default as random } from './random.js';
-export { default as range } from './range.js';
-export { default as rangeRight } from './rangeRight.js';
-export { default as rearg } from './rearg.js';
-export { default as reduce } from './reduce.js';
-export { default as reduceRight } from './reduceRight.js';
-export { default as reject } from './reject.js';
-export { default as remove } from './remove.js';
-export { default as repeat } from './repeat.js';
-export { default as replace } from './replace.js';
-export { default as rest } from './rest.js';
-export { default as result } from './result.js';
-export { default as reverse } from './reverse.js';
-export { default as round } from './round.js';
-export { default as sample } from './sample.js';
-export { default as sampleSize } from './sampleSize.js';
-export { default as set } from './set.js';
-export { default as setWith } from './setWith.js';
-export { default as shuffle } from './shuffle.js';
-export { default as size } from './size.js';
-export { default as slice } from './slice.js';
-export { default as snakeCase } from './snakeCase.js';
-export { default as some } from './some.js';
-export { default as sortBy } from './sortBy.js';
-export { default as sortedIndex } from './sortedIndex.js';
-export { default as sortedIndexBy } from './sortedIndexBy.js';
-export { default as sortedIndexOf } from './sortedIndexOf.js';
-export { default as sortedLastIndex } from './sortedLastIndex.js';
-export { default as sortedLastIndexBy } from './sortedLastIndexBy.js';
-export { default as sortedLastIndexOf } from './sortedLastIndexOf.js';
-export { default as sortedUniq } from './sortedUniq.js';
-export { default as sortedUniqBy } from './sortedUniqBy.js';
-export { default as split } from './split.js';
-export { default as spread } from './spread.js';
-export { default as startCase } from './startCase.js';
-export { default as startsWith } from './startsWith.js';
-export { default as stubArray } from './stubArray.js';
-export { default as stubFalse } from './stubFalse.js';
-export { default as stubObject } from './stubObject.js';
-export { default as stubString } from './stubString.js';
-export { default as stubTrue } from './stubTrue.js';
-export { default as subtract } from './subtract.js';
-export { default as sum } from './sum.js';
-export { default as sumBy } from './sumBy.js';
-export { default as tail } from './tail.js';
-export { default as take } from './take.js';
-export { default as takeRight } from './takeRight.js';
-export { default as takeRightWhile } from './takeRightWhile.js';
-export { default as takeWhile } from './takeWhile.js';
-export { default as tap } from './tap.js';
-export { default as template } from './template.js';
-export { default as templateSettings } from './templateSettings.js';
-export { default as throttle } from './throttle.js';
-export { default as thru } from './thru.js';
-export { default as times } from './times.js';
-export { default as toArray } from './toArray.js';
-export { default as toFinite } from './toFinite.js';
-export { default as toInteger } from './toInteger.js';
-export { default as toIterator } from './toIterator.js';
-export { default as toJSON } from './toJSON.js';
-export { default as toLength } from './toLength.js';
-export { default as toLower } from './toLower.js';
-export { default as toNumber } from './toNumber.js';
-export { default as toPairs } from './toPairs.js';
-export { default as toPairsIn } from './toPairsIn.js';
-export { default as toPath } from './toPath.js';
-export { default as toPlainObject } from './toPlainObject.js';
-export { default as toSafeInteger } from './toSafeInteger.js';
-export { default as toString } from './toString.js';
-export { default as toUpper } from './toUpper.js';
-export { default as transform } from './transform.js';
-export { default as trim } from './trim.js';
-export { default as trimEnd } from './trimEnd.js';
-export { default as trimStart } from './trimStart.js';
-export { default as truncate } from './truncate.js';
-export { default as unary } from './unary.js';
-export { default as unescape } from './unescape.js';
-export { default as union } from './union.js';
-export { default as unionBy } from './unionBy.js';
-export { default as unionWith } from './unionWith.js';
-export { default as uniq } from './uniq.js';
-export { default as uniqBy } from './uniqBy.js';
-export { default as uniqWith } from './uniqWith.js';
-export { default as uniqueId } from './uniqueId.js';
-export { default as unset } from './unset.js';
-export { default as unzip } from './unzip.js';
-export { default as unzipWith } from './unzipWith.js';
-export { default as update } from './update.js';
-export { default as updateWith } from './updateWith.js';
-export { default as upperCase } from './upperCase.js';
-export { default as upperFirst } from './upperFirst.js';
-export { default as value } from './value.js';
-export { default as valueOf } from './valueOf.js';
-export { default as values } from './values.js';
-export { default as valuesIn } from './valuesIn.js';
-export { default as without } from './without.js';
-export { default as words } from './words.js';
-export { default as wrap } from './wrap.js';
-export { default as wrapperAt } from './wrapperAt.js';
-export { default as wrapperChain } from './wrapperChain.js';
-export { default as wrapperCommit } from './commit.js';
-export { default as wrapperLodash } from './wrapperLodash.js';
-export { default as wrapperNext } from './next.js';
-export { default as wrapperPlant } from './plant.js';
-export { default as wrapperReverse } from './wrapperReverse.js';
-export { default as wrapperToIterator } from './toIterator.js';
-export { default as wrapperValue } from './wrapperValue.js';
-export { default as xor } from './xor.js';
-export { default as xorBy } from './xorBy.js';
-export { default as xorWith } from './xorWith.js';
-export { default as zip } from './zip.js';
-export { default as zipObject } from './zipObject.js';
-export { default as zipObjectDeep } from './zipObjectDeep.js';
-export { default as zipWith } from './zipWith.js';
-export { default } from './lodash.default.js';
+import cloneDeep from './cloneDeep.js'
+import isEqual from './isEqual.js'
+import memoize from './memoize.js'
+
+export { cloneDeep, isEqual, memoize }
+
+export default {
+ cloneDeep,
+ isEqual,
+ memoize,
+}
diff --git a/restored-src/node_modules/lodash-es/package.json b/restored-src/node_modules/lodash-es/package.json
new file mode 100644
index 000000000..7cd911253
--- /dev/null
+++ b/restored-src/node_modules/lodash-es/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash-es",
+ "private": true,
+ "main": "./lodash.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/lodash.camelcase/package.json b/restored-src/node_modules/lodash.camelcase/package.json
new file mode 100644
index 000000000..703f8c59d
--- /dev/null
+++ b/restored-src/node_modules/lodash.camelcase/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.camelcase",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.debounce/package.json b/restored-src/node_modules/lodash.debounce/package.json
new file mode 100644
index 000000000..6058ed6e2
--- /dev/null
+++ b/restored-src/node_modules/lodash.debounce/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.debounce",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.includes/package.json b/restored-src/node_modules/lodash.includes/package.json
new file mode 100644
index 000000000..8c4dea3a0
--- /dev/null
+++ b/restored-src/node_modules/lodash.includes/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.includes",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.isboolean/package.json b/restored-src/node_modules/lodash.isboolean/package.json
new file mode 100644
index 000000000..5c4ecb7aa
--- /dev/null
+++ b/restored-src/node_modules/lodash.isboolean/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.isboolean",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.isinteger/package.json b/restored-src/node_modules/lodash.isinteger/package.json
new file mode 100644
index 000000000..1b3cc9cc3
--- /dev/null
+++ b/restored-src/node_modules/lodash.isinteger/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.isinteger",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.isnumber/package.json b/restored-src/node_modules/lodash.isnumber/package.json
new file mode 100644
index 000000000..33e44da4a
--- /dev/null
+++ b/restored-src/node_modules/lodash.isnumber/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.isnumber",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.isplainobject/package.json b/restored-src/node_modules/lodash.isplainobject/package.json
new file mode 100644
index 000000000..ae0aff844
--- /dev/null
+++ b/restored-src/node_modules/lodash.isplainobject/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.isplainobject",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.isstring/package.json b/restored-src/node_modules/lodash.isstring/package.json
new file mode 100644
index 000000000..67e9e7397
--- /dev/null
+++ b/restored-src/node_modules/lodash.isstring/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.isstring",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lodash.once/package.json b/restored-src/node_modules/lodash.once/package.json
new file mode 100644
index 000000000..6ac09fcde
--- /dev/null
+++ b/restored-src/node_modules/lodash.once/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lodash.once",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/long/package.json b/restored-src/node_modules/long/package.json
new file mode 100644
index 000000000..21cb159fc
--- /dev/null
+++ b/restored-src/node_modules/long/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "long",
+ "private": true,
+ "main": "./umd/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/lru-cache/package.json b/restored-src/node_modules/lru-cache/package.json
new file mode 100644
index 000000000..11f59291b
--- /dev/null
+++ b/restored-src/node_modules/lru-cache/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "lru-cache",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/marked/package.json b/restored-src/node_modules/marked/package.json
new file mode 100644
index 000000000..f4d96724a
--- /dev/null
+++ b/restored-src/node_modules/marked/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "marked",
+ "private": true,
+ "main": "./lib/marked.esm.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/math-intrinsics/package.json b/restored-src/node_modules/math-intrinsics/package.json
new file mode 100644
index 000000000..4501d8143
--- /dev/null
+++ b/restored-src/node_modules/math-intrinsics/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "math-intrinsics",
+ "private": true,
+ "main": "./abs.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/merge-stream/package.json b/restored-src/node_modules/merge-stream/package.json
new file mode 100644
index 000000000..329fdb0e7
--- /dev/null
+++ b/restored-src/node_modules/merge-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "merge-stream",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/mime-types/package.json b/restored-src/node_modules/mime-types/package.json
new file mode 100644
index 000000000..28d3e25d9
--- /dev/null
+++ b/restored-src/node_modules/mime-types/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "mime-types",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/mimic-fn/package.json b/restored-src/node_modules/mimic-fn/package.json
new file mode 100644
index 000000000..37c4f6803
--- /dev/null
+++ b/restored-src/node_modules/mimic-fn/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "mimic-fn",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/ms/package.json b/restored-src/node_modules/ms/package.json
new file mode 100644
index 000000000..ee0e1b0e9
--- /dev/null
+++ b/restored-src/node_modules/ms/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ms",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/mute-stream/package.json b/restored-src/node_modules/mute-stream/package.json
new file mode 100644
index 000000000..80bda849e
--- /dev/null
+++ b/restored-src/node_modules/mute-stream/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "mute-stream",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/node-fetch/package.json b/restored-src/node_modules/node-fetch/package.json
new file mode 100644
index 000000000..96a49ca9c
--- /dev/null
+++ b/restored-src/node_modules/node-fetch/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "node-fetch",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/node-forge/package.json b/restored-src/node_modules/node-forge/package.json
new file mode 100644
index 000000000..5599a5b04
--- /dev/null
+++ b/restored-src/node_modules/node-forge/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "node-forge",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/npm-run-path/package.json b/restored-src/node_modules/npm-run-path/package.json
new file mode 100644
index 000000000..1e156c895
--- /dev/null
+++ b/restored-src/node_modules/npm-run-path/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "npm-run-path",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/onetime/package.json b/restored-src/node_modules/onetime/package.json
new file mode 100644
index 000000000..da726d7d4
--- /dev/null
+++ b/restored-src/node_modules/onetime/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "onetime",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/open/package.json b/restored-src/node_modules/open/package.json
new file mode 100644
index 000000000..5fbc03d2a
--- /dev/null
+++ b/restored-src/node_modules/open/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "open",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/p-map/package.json b/restored-src/node_modules/p-map/package.json
new file mode 100644
index 000000000..4562f26aa
--- /dev/null
+++ b/restored-src/node_modules/p-map/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "p-map",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/parse5-htmlparser2-tree-adapter/package.json b/restored-src/node_modules/parse5-htmlparser2-tree-adapter/package.json
new file mode 100644
index 000000000..0ad04936c
--- /dev/null
+++ b/restored-src/node_modules/parse5-htmlparser2-tree-adapter/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "parse5-htmlparser2-tree-adapter",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/parse5/package.json b/restored-src/node_modules/parse5/package.json
new file mode 100644
index 000000000..a78874fcf
--- /dev/null
+++ b/restored-src/node_modules/parse5/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "parse5",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/path-key/package.json b/restored-src/node_modules/path-key/package.json
new file mode 100644
index 000000000..8adb949ec
--- /dev/null
+++ b/restored-src/node_modules/path-key/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "path-key",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/picomatch/package.json b/restored-src/node_modules/picomatch/package.json
new file mode 100644
index 000000000..b28db561f
--- /dev/null
+++ b/restored-src/node_modules/picomatch/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "picomatch",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/pkce-challenge/package.json b/restored-src/node_modules/pkce-challenge/package.json
new file mode 100644
index 000000000..a84f08bee
--- /dev/null
+++ b/restored-src/node_modules/pkce-challenge/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "pkce-challenge",
+ "private": true,
+ "main": "./dist/index.node.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/plist/package.json b/restored-src/node_modules/plist/package.json
new file mode 100644
index 000000000..0b89e063c
--- /dev/null
+++ b/restored-src/node_modules/plist/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "plist",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/pngjs/package.json b/restored-src/node_modules/pngjs/package.json
new file mode 100644
index 000000000..7453e3e8f
--- /dev/null
+++ b/restored-src/node_modules/pngjs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "pngjs",
+ "private": true,
+ "main": "./lib/png.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/pretty-bytes/package.json b/restored-src/node_modules/pretty-bytes/package.json
new file mode 100644
index 000000000..5002d055a
--- /dev/null
+++ b/restored-src/node_modules/pretty-bytes/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "pretty-bytes",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/proper-lockfile/package.json b/restored-src/node_modules/proper-lockfile/package.json
new file mode 100644
index 000000000..73fcd9397
--- /dev/null
+++ b/restored-src/node_modules/proper-lockfile/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "proper-lockfile",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/protobufjs/package.json b/restored-src/node_modules/protobufjs/package.json
new file mode 100644
index 000000000..9aeb17315
--- /dev/null
+++ b/restored-src/node_modules/protobufjs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "protobufjs",
+ "private": true,
+ "main": "./src/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/proxy-from-env/package.json b/restored-src/node_modules/proxy-from-env/package.json
new file mode 100644
index 000000000..ffdc3269a
--- /dev/null
+++ b/restored-src/node_modules/proxy-from-env/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "proxy-from-env",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/punycode/package.json b/restored-src/node_modules/punycode/package.json
new file mode 100644
index 000000000..89327dc2e
--- /dev/null
+++ b/restored-src/node_modules/punycode/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "punycode",
+ "private": true,
+ "main": "./punycode.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/qrcode/package.json b/restored-src/node_modules/qrcode/package.json
new file mode 100644
index 000000000..643158371
--- /dev/null
+++ b/restored-src/node_modules/qrcode/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "qrcode",
+ "private": true,
+ "main": "./lib/core/qrcode.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/react-reconciler/constants.js b/restored-src/node_modules/react-reconciler/constants.js
new file mode 100644
index 000000000..3af820fdc
--- /dev/null
+++ b/restored-src/node_modules/react-reconciler/constants.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./cjs/react-reconciler-constants.production.js");
diff --git a/restored-src/node_modules/react-reconciler/package.json b/restored-src/node_modules/react-reconciler/package.json
new file mode 100644
index 000000000..5630dbfc7
--- /dev/null
+++ b/restored-src/node_modules/react-reconciler/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "react-reconciler",
+ "private": true,
+ "main": "./cjs/react-reconciler.production.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/react/compiler-runtime.js b/restored-src/node_modules/react/compiler-runtime.js
new file mode 100644
index 000000000..38f1426ef
--- /dev/null
+++ b/restored-src/node_modules/react/compiler-runtime.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./cjs/react-compiler-runtime.production.js");
diff --git a/restored-src/node_modules/react/jsx-dev-runtime.js b/restored-src/node_modules/react/jsx-dev-runtime.js
new file mode 100644
index 000000000..f3435ec9f
--- /dev/null
+++ b/restored-src/node_modules/react/jsx-dev-runtime.js
@@ -0,0 +1,10 @@
+"use strict";
+
+const jsxRuntime = require("./jsx-runtime.js");
+
+function jsxDEV(type, props, key) {
+ return jsxRuntime.jsx(type, props, key);
+}
+
+exports.Fragment = jsxRuntime.Fragment;
+exports.jsxDEV = jsxDEV;
diff --git a/restored-src/node_modules/react/jsx-runtime.js b/restored-src/node_modules/react/jsx-runtime.js
new file mode 100644
index 000000000..4b39fce94
--- /dev/null
+++ b/restored-src/node_modules/react/jsx-runtime.js
@@ -0,0 +1,15 @@
+"use strict";
+
+const React = require("./cjs/react.production.js");
+
+function jsx(type, props, key) {
+ if (key === undefined) {
+ return React.createElement(type, props);
+ }
+
+ return React.createElement(type, { ...props, key });
+}
+
+exports.Fragment = React.Fragment;
+exports.jsx = jsx;
+exports.jsxs = jsx;
diff --git a/restored-src/node_modules/react/package.json b/restored-src/node_modules/react/package.json
new file mode 100644
index 000000000..3f8e64ea6
--- /dev/null
+++ b/restored-src/node_modules/react/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "react",
+ "private": true,
+ "main": "./cjs/react.production.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/readdirp/package.json b/restored-src/node_modules/readdirp/package.json
new file mode 100644
index 000000000..b23e47b1d
--- /dev/null
+++ b/restored-src/node_modules/readdirp/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "readdirp",
+ "private": true,
+ "main": "./esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/retry/package.json b/restored-src/node_modules/retry/package.json
new file mode 100644
index 000000000..9bbeefcb4
--- /dev/null
+++ b/restored-src/node_modules/retry/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "retry",
+ "private": true,
+ "main": "./lib/retry.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/run-applescript/package.json b/restored-src/node_modules/run-applescript/package.json
new file mode 100644
index 000000000..d03f37a96
--- /dev/null
+++ b/restored-src/node_modules/run-applescript/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "run-applescript",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/safe-buffer/package.json b/restored-src/node_modules/safe-buffer/package.json
new file mode 100644
index 000000000..4b83608e5
--- /dev/null
+++ b/restored-src/node_modules/safe-buffer/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "safe-buffer",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/scheduler/package.json b/restored-src/node_modules/scheduler/package.json
new file mode 100644
index 000000000..4aab9b035
--- /dev/null
+++ b/restored-src/node_modules/scheduler/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "scheduler",
+ "private": true,
+ "main": "./cjs/scheduler.production.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/semver/package.json b/restored-src/node_modules/semver/package.json
new file mode 100644
index 000000000..d4f1d7798
--- /dev/null
+++ b/restored-src/node_modules/semver/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "semver",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/sharp/package.json b/restored-src/node_modules/sharp/package.json
new file mode 100644
index 000000000..f9ecfc87c
--- /dev/null
+++ b/restored-src/node_modules/sharp/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "sharp",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/shebang-command/package.json b/restored-src/node_modules/shebang-command/package.json
new file mode 100644
index 000000000..9583cbb72
--- /dev/null
+++ b/restored-src/node_modules/shebang-command/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "shebang-command",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/shebang-regex/package.json b/restored-src/node_modules/shebang-regex/package.json
new file mode 100644
index 000000000..e553f1f28
--- /dev/null
+++ b/restored-src/node_modules/shebang-regex/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "shebang-regex",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/shell-quote/package.json b/restored-src/node_modules/shell-quote/package.json
new file mode 100644
index 000000000..6c260fe91
--- /dev/null
+++ b/restored-src/node_modules/shell-quote/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "shell-quote",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/signal-exit/index.js b/restored-src/node_modules/signal-exit/index.js
index 93703f369..ccc8d3b88 100644
--- a/restored-src/node_modules/signal-exit/index.js
+++ b/restored-src/node_modules/signal-exit/index.js
@@ -78,6 +78,7 @@ if (!processOk(process)) {
return remove
}
+ module.exports.onExit = module.exports
var unload = function unload () {
if (!loaded || !processOk(global.process)) {
diff --git a/restored-src/node_modules/signal-exit/package.json b/restored-src/node_modules/signal-exit/package.json
new file mode 100644
index 000000000..4b993243f
--- /dev/null
+++ b/restored-src/node_modules/signal-exit/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "signal-exit",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/stack-utils/package.json b/restored-src/node_modules/stack-utils/package.json
new file mode 100644
index 000000000..77b8f0727
--- /dev/null
+++ b/restored-src/node_modules/stack-utils/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "stack-utils",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/string-width/package.json b/restored-src/node_modules/string-width/package.json
new file mode 100644
index 000000000..8a9014044
--- /dev/null
+++ b/restored-src/node_modules/string-width/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "string-width",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/strip-ansi/package.json b/restored-src/node_modules/strip-ansi/package.json
new file mode 100644
index 000000000..a98ca699c
--- /dev/null
+++ b/restored-src/node_modules/strip-ansi/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "strip-ansi",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/strip-final-newline/package.json b/restored-src/node_modules/strip-final-newline/package.json
new file mode 100644
index 000000000..4f4dc3af2
--- /dev/null
+++ b/restored-src/node_modules/strip-final-newline/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "strip-final-newline",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/supports-color/package.json b/restored-src/node_modules/supports-color/package.json
new file mode 100644
index 000000000..e70b4c32b
--- /dev/null
+++ b/restored-src/node_modules/supports-color/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "supports-color",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/supports-hyperlinks/package.json b/restored-src/node_modules/supports-hyperlinks/package.json
new file mode 100644
index 000000000..8407158ba
--- /dev/null
+++ b/restored-src/node_modules/supports-hyperlinks/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "supports-hyperlinks",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/tr46/package.json b/restored-src/node_modules/tr46/package.json
new file mode 100644
index 000000000..c3cdcde30
--- /dev/null
+++ b/restored-src/node_modules/tr46/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "tr46",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/tree-kill/package.json b/restored-src/node_modules/tree-kill/package.json
new file mode 100644
index 000000000..161d6468e
--- /dev/null
+++ b/restored-src/node_modules/tree-kill/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "tree-kill",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/tslib/package.json b/restored-src/node_modules/tslib/package.json
new file mode 100644
index 000000000..99f34db0b
--- /dev/null
+++ b/restored-src/node_modules/tslib/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "tslib",
+ "private": true,
+ "main": "./tslib.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/turndown/package.json b/restored-src/node_modules/turndown/package.json
new file mode 100644
index 000000000..14e9cd422
--- /dev/null
+++ b/restored-src/node_modules/turndown/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "turndown",
+ "private": true,
+ "main": "./lib/turndown.cjs.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/undici/package.json b/restored-src/node_modules/undici/package.json
new file mode 100644
index 000000000..9f13a415d
--- /dev/null
+++ b/restored-src/node_modules/undici/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "undici",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/universalify/package.json b/restored-src/node_modules/universalify/package.json
new file mode 100644
index 000000000..75cf1f6cd
--- /dev/null
+++ b/restored-src/node_modules/universalify/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "universalify",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/usehooks-ts/package.json b/restored-src/node_modules/usehooks-ts/package.json
new file mode 100644
index 000000000..5a1b33a49
--- /dev/null
+++ b/restored-src/node_modules/usehooks-ts/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "usehooks-ts",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/uuid/package.json b/restored-src/node_modules/uuid/package.json
new file mode 100644
index 000000000..a74d13bbb
--- /dev/null
+++ b/restored-src/node_modules/uuid/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "uuid",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/vscode-jsonrpc/package.json b/restored-src/node_modules/vscode-jsonrpc/package.json
new file mode 100644
index 000000000..a8ba8056e
--- /dev/null
+++ b/restored-src/node_modules/vscode-jsonrpc/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "vscode-jsonrpc",
+ "private": true,
+ "main": "./lib/node/main.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/webidl-conversions/package.json b/restored-src/node_modules/webidl-conversions/package.json
new file mode 100644
index 000000000..7121ca829
--- /dev/null
+++ b/restored-src/node_modules/webidl-conversions/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "webidl-conversions",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/whatwg-url/package.json b/restored-src/node_modules/whatwg-url/package.json
new file mode 100644
index 000000000..8d0ac2e62
--- /dev/null
+++ b/restored-src/node_modules/whatwg-url/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "whatwg-url",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/which/package.json b/restored-src/node_modules/which/package.json
new file mode 100644
index 000000000..e40298d3b
--- /dev/null
+++ b/restored-src/node_modules/which/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "which",
+ "private": true,
+ "main": "./which.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/wrap-ansi/package.json b/restored-src/node_modules/wrap-ansi/package.json
new file mode 100644
index 000000000..830551d77
--- /dev/null
+++ b/restored-src/node_modules/wrap-ansi/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "wrap-ansi",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/ws/package.json b/restored-src/node_modules/ws/package.json
new file mode 100644
index 000000000..d74a5b441
--- /dev/null
+++ b/restored-src/node_modules/ws/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "ws",
+ "private": true,
+ "main": "./wrapper.mjs",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/wsl-utils/package.json b/restored-src/node_modules/wsl-utils/package.json
new file mode 100644
index 000000000..b4d3ca1fc
--- /dev/null
+++ b/restored-src/node_modules/wsl-utils/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "wsl-utils",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/xmlbuilder/package.json b/restored-src/node_modules/xmlbuilder/package.json
new file mode 100644
index 000000000..2a03d3837
--- /dev/null
+++ b/restored-src/node_modules/xmlbuilder/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "xmlbuilder",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/xss/package.json b/restored-src/node_modules/xss/package.json
new file mode 100644
index 000000000..ce51f9c1f
--- /dev/null
+++ b/restored-src/node_modules/xss/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "xss",
+ "private": true,
+ "main": "./lib/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/yaml/package.json b/restored-src/node_modules/yaml/package.json
new file mode 100644
index 000000000..7e86413c1
--- /dev/null
+++ b/restored-src/node_modules/yaml/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "yaml",
+ "private": true,
+ "main": "./dist/index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/yoctocolors-cjs/package.json b/restored-src/node_modules/yoctocolors-cjs/package.json
new file mode 100644
index 000000000..988809a0e
--- /dev/null
+++ b/restored-src/node_modules/yoctocolors-cjs/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "yoctocolors-cjs",
+ "private": true,
+ "main": "./index.js",
+ "type": "commonjs"
+}
diff --git a/restored-src/node_modules/zod-to-json-schema/dist/esm/index.js b/restored-src/node_modules/zod-to-json-schema/dist/esm/index.js
index cdfb5306e..1643f6278 100644
--- a/restored-src/node_modules/zod-to-json-schema/dist/esm/index.js
+++ b/restored-src/node_modules/zod-to-json-schema/dist/esm/index.js
@@ -1,40 +1,4 @@
-export * from "./Options.js";
-export * from "./Refs.js";
-export * from "./errorMessages.js";
-export * from "./getRelativePath.js";
-export * from "./parseDef.js";
-export * from "./parseTypes.js";
-export * from "./parsers/any.js";
-export * from "./parsers/array.js";
-export * from "./parsers/bigint.js";
-export * from "./parsers/boolean.js";
-export * from "./parsers/branded.js";
-export * from "./parsers/catch.js";
-export * from "./parsers/date.js";
-export * from "./parsers/default.js";
-export * from "./parsers/effects.js";
-export * from "./parsers/enum.js";
-export * from "./parsers/intersection.js";
-export * from "./parsers/literal.js";
-export * from "./parsers/map.js";
-export * from "./parsers/nativeEnum.js";
-export * from "./parsers/never.js";
-export * from "./parsers/null.js";
-export * from "./parsers/nullable.js";
-export * from "./parsers/number.js";
-export * from "./parsers/object.js";
-export * from "./parsers/optional.js";
-export * from "./parsers/pipeline.js";
-export * from "./parsers/promise.js";
-export * from "./parsers/readonly.js";
-export * from "./parsers/record.js";
-export * from "./parsers/set.js";
-export * from "./parsers/string.js";
-export * from "./parsers/tuple.js";
-export * from "./parsers/undefined.js";
-export * from "./parsers/union.js";
-export * from "./parsers/unknown.js";
-export * from "./selectParser.js";
-export * from "./zodToJsonSchema.js";
-import { zodToJsonSchema } from "./zodToJsonSchema.js";
-export default zodToJsonSchema;
+export * from './zodToJsonSchema.js'
+import { zodToJsonSchema } from './zodToJsonSchema.js'
+
+export default zodToJsonSchema
diff --git a/restored-src/node_modules/zod-to-json-schema/package.json b/restored-src/node_modules/zod-to-json-schema/package.json
new file mode 100644
index 000000000..d30fe1375
--- /dev/null
+++ b/restored-src/node_modules/zod-to-json-schema/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "zod-to-json-schema",
+ "private": true,
+ "main": "./dist/esm/index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/zod/package.json b/restored-src/node_modules/zod/package.json
new file mode 100644
index 000000000..48567f643
--- /dev/null
+++ b/restored-src/node_modules/zod/package.json
@@ -0,0 +1,6 @@
+{
+ "name": "zod",
+ "private": true,
+ "main": "./index.js",
+ "type": "module"
+}
diff --git a/restored-src/node_modules/zod/v3/helpers/typeAliases.js b/restored-src/node_modules/zod/v3/helpers/typeAliases.js
new file mode 100644
index 000000000..cb0ff5c3b
--- /dev/null
+++ b/restored-src/node_modules/zod/v3/helpers/typeAliases.js
@@ -0,0 +1 @@
+export {};
diff --git a/restored-src/node_modules/zod/v3/index.js b/restored-src/node_modules/zod/v3/index.js
new file mode 100644
index 000000000..070524f04
--- /dev/null
+++ b/restored-src/node_modules/zod/v3/index.js
@@ -0,0 +1 @@
+export * from './external.js'
diff --git a/restored-src/node_modules/zod/v4-mini/index.js b/restored-src/node_modules/zod/v4-mini/index.js
index 87b293a4f..0dcdf5a90 100644
--- a/restored-src/node_modules/zod/v4-mini/index.js
+++ b/restored-src/node_modules/zod/v4-mini/index.js
@@ -1 +1 @@
-export * from "../v4/mini/index.js";
+export * from '../v4/index.js'
diff --git a/restored-src/node_modules/zod/v4/core/json-schema.js b/restored-src/node_modules/zod/v4/core/json-schema.js
new file mode 100644
index 000000000..e3806290f
--- /dev/null
+++ b/restored-src/node_modules/zod/v4/core/json-schema.js
@@ -0,0 +1 @@
+export * from './to-json-schema.js'
diff --git a/restored-src/node_modules/zod/v4/mini/external.js b/restored-src/node_modules/zod/v4/mini/external.js
index d42478c56..19b3108a1 100644
--- a/restored-src/node_modules/zod/v4/mini/external.js
+++ b/restored-src/node_modules/zod/v4/mini/external.js
@@ -1,13 +1 @@
-export * as core from "../core/index.js";
-export * from "./parse.js";
-export * from "./schemas.js";
-export * from "./checks.js";
-export { globalRegistry, registry, config, $output, $input, $brand, function, clone, regexes, treeifyError, prettifyError, formatError, flattenError, toJSONSchema, TimePrecision, NEVER, } from "../core/index.js";
-export * as locales from "../locales/index.js";
-/** A special constant with type `never` */
-// export const NEVER = {} as never;
-// iso
-export * as iso from "./iso.js";
-export { ZodMiniISODateTime, ZodMiniISODate, ZodMiniISOTime, ZodMiniISODuration, } from "./iso.js";
-// coerce
-export * as coerce from "./coerce.js";
+export * from '../index.js'
diff --git a/restored-src/node_modules/zod/v4/mini/index.js b/restored-src/node_modules/zod/v4/mini/index.js
index f6c2a2649..19b3108a1 100644
--- a/restored-src/node_modules/zod/v4/mini/index.js
+++ b/restored-src/node_modules/zod/v4/mini/index.js
@@ -1,3 +1 @@
-import * as z from "./external.js";
-export * from "./external.js";
-export { z };
+export * from '../index.js'
diff --git a/restored-src/package.json b/restored-src/package.json
new file mode 100644
index 000000000..3cf185fea
--- /dev/null
+++ b/restored-src/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "claude-code-restored-src",
+ "private": true,
+ "version": "0.1.0",
+ "type": "module",
+ "scripts": {
+ "bootstrap:manifests": "node ./scripts/synthesize-node-module-manifests.cjs",
+ "version:claude": "bun --preload ./macro-shim.cjs src/entrypoints/cli.tsx -v",
+ "help": "bun --preload ./macro-shim.cjs src/entrypoints/cli.tsx --help"
+ }
+}
diff --git a/restored-src/scripts/synthesize-node-module-manifests.cjs b/restored-src/scripts/synthesize-node-module-manifests.cjs
new file mode 100644
index 000000000..137711515
--- /dev/null
+++ b/restored-src/scripts/synthesize-node-module-manifests.cjs
@@ -0,0 +1,238 @@
+const fs = require("fs");
+const path = require("path");
+
+const NODE_MODULES_DIR = path.resolve(__dirname, "..", "node_modules");
+
+const ENTRY_CANDIDATES = [
+ "index.mjs",
+ "esm.mjs",
+ "index.js",
+ "index.cjs",
+ "main.js",
+ "main.mjs",
+ "wrapper.mjs",
+ "source/index.mjs",
+ "source/index.js",
+ "src/index.mjs",
+ "src/index.ts",
+ "src/index.js",
+ "src/main.js",
+ "src/main.mjs",
+ "dist/index.mjs",
+ "dist/index.js",
+ "dist/index.cjs",
+ "dist/main.mjs",
+ "dist/main.js",
+ "dist/main.cjs",
+ "dist-cjs/index.js",
+ "dist-cjs/index.cjs",
+ "dist-cjs/main.js",
+ "dist-cjs/main.cjs",
+ "lib/index.mjs",
+ "lib/index.js",
+ "lib/index.cjs",
+ "lib/main.mjs",
+ "lib/main.js",
+ "lib/main.cjs",
+ "lib/esm/main.js",
+ "lib/node/main.js",
+ "build/index.mjs",
+ "build/index.js",
+ "build/index.cjs",
+ "build/src/main.js",
+ "cjs/index.js",
+ "cjs/index.cjs",
+];
+
+const ENTRY_EXTENSIONS = new Set([".js", ".mjs", ".cjs", ".ts", ".tsx"]);
+
+function normalizeName(value) {
+ return value.toLowerCase().replace(/[^a-z0-9]/g, "");
+}
+
+function listPackages(rootDir) {
+ const packages = [];
+ for (const entry of fs.readdirSync(rootDir, { withFileTypes: true })) {
+ if (!entry.isDirectory()) continue;
+ if (entry.name.startsWith("@")) {
+ const scopeDir = path.join(rootDir, entry.name);
+ for (const scopedEntry of fs.readdirSync(scopeDir, { withFileTypes: true })) {
+ if (!scopedEntry.isDirectory()) continue;
+ packages.push({
+ name: `${entry.name}/${scopedEntry.name}`,
+ dir: path.join(scopeDir, scopedEntry.name),
+ });
+ }
+ continue;
+ }
+ packages.push({
+ name: entry.name,
+ dir: path.join(rootDir, entry.name),
+ });
+ }
+ return packages;
+}
+
+function chooseCandidate(dir, pkgName) {
+ for (const relPath of ENTRY_CANDIDATES) {
+ const fullPath = path.join(dir, relPath);
+ if (fs.existsSync(fullPath) && fs.statSync(fullPath).isFile()) {
+ return relPath;
+ }
+ }
+
+ const baseName = pkgName.split("/").pop();
+ const matches = [];
+
+ function walk(currentDir, depth) {
+ if (depth > 3) return;
+ for (const entry of fs.readdirSync(currentDir, { withFileTypes: true })) {
+ const fullPath = path.join(currentDir, entry.name);
+ const relPath = path.relative(dir, fullPath).replace(/\\/g, "/");
+ if (entry.isDirectory()) {
+ walk(fullPath, depth + 1);
+ continue;
+ }
+ if (!ENTRY_EXTENSIONS.has(path.extname(entry.name))) continue;
+ matches.push(relPath);
+ }
+ }
+
+ walk(dir, 0);
+
+ if (matches.length === 1) {
+ return matches[0];
+ }
+
+ const preferred = matches
+ .filter((relPath) => {
+ const fileName = path.basename(relPath);
+ return (
+ fileName === `${baseName}.mjs` ||
+ fileName === `${baseName}.js` ||
+ fileName === `${baseName}.cjs` ||
+ fileName === `${baseName}.ts` ||
+ fileName === `${baseName}.tsx` ||
+ fileName === `${baseName}.production.js`
+ );
+ })
+ .sort((a, b) => a.length - b.length);
+
+ if (preferred.length > 0) {
+ return preferred[0];
+ }
+
+ const normalizedVariants = new Set([
+ normalizeName(baseName),
+ normalizeName(baseName.replace(/[-.]?(?:es|module)$/i, "")),
+ normalizeName(baseName.replace(/[-.]?js$/i, "")),
+ ]);
+
+ const matchingPackageNames = matches
+ .filter((relPath) => {
+ const fileName = path.basename(relPath, path.extname(relPath));
+ return normalizedVariants.has(normalizeName(fileName));
+ })
+ .sort((a, b) => a.length - b.length);
+
+ if (matchingPackageNames.length > 0) {
+ return matchingPackageNames[0];
+ }
+
+ const fallbackIndex = matches
+ .filter((relPath) => /^(.+\/)?index\.(mjs|js|cjs|ts|tsx)$/.test(relPath))
+ .sort((a, b) => a.length - b.length);
+
+ if (fallbackIndex.length > 0) {
+ return fallbackIndex[0];
+ }
+
+ const rootFileFallback = matches
+ .filter((relPath) => !relPath.includes("/") && !path.basename(relPath).startsWith("_"))
+ .sort((a, b) => a.length - b.length);
+
+ if (rootFileFallback.length > 0) {
+ return rootFileFallback[0];
+ }
+
+ return null;
+}
+
+function detectModuleType(entryPath) {
+ const ext = path.extname(entryPath);
+ if (ext === ".mjs") return "module";
+ if (ext === ".cjs") return "commonjs";
+
+ const source = fs.readFileSync(entryPath, "utf8");
+ const hasEsmSyntax =
+ /^\s*import\s/m.test(source) ||
+ /^\s*export\s/m.test(source) ||
+ source.includes("import.meta");
+ const hasCommonJsSyntax =
+ source.includes("module.exports") ||
+ source.includes("exports.") ||
+ source.includes("require(");
+
+ if (hasEsmSyntax && !hasCommonJsSyntax) {
+ return "module";
+ }
+
+ return "commonjs";
+}
+
+function writeManifest(pkg) {
+ const manifestPath = path.join(pkg.dir, "package.json");
+ if (fs.existsSync(manifestPath)) {
+ return { status: "existing" };
+ }
+
+ const entry = chooseCandidate(pkg.dir, pkg.name);
+ if (!entry) {
+ return { status: "missing-entry" };
+ }
+
+ const entryPath = path.join(pkg.dir, entry);
+ const type = detectModuleType(entryPath);
+ const manifest = {
+ name: pkg.name,
+ private: true,
+ main: `./${entry.replace(/\\/g, "/")}`,
+ type,
+ };
+
+ fs.writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, "utf8");
+ return { status: "written", entry: manifest.main, type };
+}
+
+function main() {
+ const packages = listPackages(NODE_MODULES_DIR);
+ let written = 0;
+ let existing = 0;
+ const missing = [];
+
+ for (const pkg of packages) {
+ const result = writeManifest(pkg);
+ if (result.status === "written") {
+ written += 1;
+ } else if (result.status === "existing") {
+ existing += 1;
+ } else {
+ missing.push(pkg.name);
+ }
+ }
+
+ console.log(
+ JSON.stringify(
+ {
+ packages: packages.length,
+ written,
+ existing,
+ missing,
+ },
+ null,
+ 2,
+ ),
+ );
+}
+
+main();
diff --git a/restored-src/src/commands/insights.ts b/restored-src/src/commands/insights.ts
index f66380a7c..7583d49f4 100644
--- a/restored-src/src/commands/insights.ts
+++ b/restored-src/src/commands/insights.ts
@@ -1,5 +1,5 @@
import { execFileSync } from 'child_process'
-import { diffLines } from 'diff'
+import { diffLines } from 'diff/libesm/diff/line.js'
import { constants as fsConstants } from 'fs'
import {
copyFile,
diff --git a/restored-src/src/components/StructuredDiff/Fallback.tsx b/restored-src/src/components/StructuredDiff/Fallback.tsx
index 8948d7688..c33566f57 100644
--- a/restored-src/src/components/StructuredDiff/Fallback.tsx
+++ b/restored-src/src/components/StructuredDiff/Fallback.tsx
@@ -1,5 +1,6 @@
import { c as _c } from "react/compiler-runtime";
-import { diffWordsWithSpace, type StructuredPatchHunk } from 'diff';
+import type { StructuredPatchHunk } from 'diff';
+import { diffWordsWithSpace } from 'diff/libesm/diff/word.js';
import * as React from 'react';
import { useMemo } from 'react';
import type { ThemeName } from 'src/utils/theme.js';
@@ -484,4 +485,4 @@ export function numberDiffLines(diff: LineObject[], startLine: number): DiffLine
}
return result;
}
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWZmV29yZHNXaXRoU3BhY2UiLCJTdHJ1Y3R1cmVkUGF0Y2hIdW5rIiwiUmVhY3QiLCJ1c2VNZW1vIiwiVGhlbWVOYW1lIiwic3RyaW5nV2lkdGgiLCJCb3giLCJOb1NlbGVjdCIsIlRleHQiLCJ1c2VUaGVtZSIsIndyYXBUZXh0IiwiRGlmZkxpbmUiLCJjb2RlIiwidHlwZSIsImkiLCJvcmlnaW5hbENvZGUiLCJ3b3JkRGlmZiIsIm1hdGNoZWRMaW5lIiwiTGluZU9iamVjdCIsIkRpZmZQYXJ0IiwiYWRkZWQiLCJyZW1vdmVkIiwidmFsdWUiLCJQcm9wcyIsInBhdGNoIiwiZGltIiwid2lkdGgiLCJDSEFOR0VfVEhSRVNIT0xEIiwiU3RydWN0dXJlZERpZmZGYWxsYmFjayIsInQwIiwiJCIsIl9jIiwidGhlbWUiLCJ0MSIsImxpbmVzIiwib2xkU3RhcnQiLCJmb3JtYXREaWZmIiwiZGlmZiIsInQyIiwibWFwIiwiX3RlbXAiLCJ0MyIsIm5vZGUiLCJ0cmFuc2Zvcm1MaW5lc1RvT2JqZWN0cyIsInN0YXJ0c1dpdGgiLCJzbGljZSIsInByb2Nlc3NBZGphY2VudExpbmVzIiwibGluZU9iamVjdHMiLCJwcm9jZXNzZWRMaW5lcyIsImxlbmd0aCIsImN1cnJlbnQiLCJyZW1vdmVMaW5lcyIsImoiLCJsaW5lIiwicHVzaCIsImFkZExpbmVzIiwicGFpckNvdW50IiwiTWF0aCIsIm1pbiIsImsiLCJyZW1vdmVMaW5lIiwiYWRkTGluZSIsImZpbHRlciIsIkJvb2xlYW4iLCJjYWxjdWxhdGVXb3JkRGlmZnMiLCJvbGRUZXh0IiwibmV3VGV4dCIsInJlc3VsdCIsImlnbm9yZUNhc2UiLCJnZW5lcmF0ZVdvcmREaWZmRWxlbWVudHMiLCJpdGVtIiwibWF4V2lkdGgiLCJvdmVycmlkZVRoZW1lIiwiUmVhY3ROb2RlIiwicmVtb3ZlZExpbmVUZXh0IiwiYWRkZWRMaW5lVGV4dCIsIndvcmREaWZmcyIsInRvdGFsTGVuZ3RoIiwiY2hhbmdlZExlbmd0aCIsInBhcnQiLCJyZWR1Y2UiLCJzdW0iLCJjaGFuZ2VSYXRpbyIsImRpZmZQcmVmaXgiLCJkaWZmUHJlZml4V2lkdGgiLCJhdmFpbGFibGVDb250ZW50V2lkdGgiLCJtYXgiLCJ3cmFwcGVkTGluZXMiLCJjb250ZW50IiwiY29udGVudFdpZHRoIiwiY3VycmVudExpbmUiLCJjdXJyZW50TGluZVdpZHRoIiwiZm9yRWFjaCIsInBhcnRJbmRleCIsInNob3VsZFNob3ciLCJwYXJ0QmdDb2xvciIsInBhcnRXcmFwcGVkIiwicGFydExpbmVzIiwic3BsaXQiLCJwYXJ0TGluZSIsImxpbmVJZHgiLCJsaW5lSW5kZXgiLCJrZXkiLCJsaW5lQmdDb2xvciIsImxpbmVOdW0iLCJ1bmRlZmluZWQiLCJsaW5lTnVtU3RyIiwidG9TdHJpbmciLCJwYWRTdGFydCIsInJlcGVhdCIsInVzZWRXaWR0aCIsInBhZGRpbmciLCJzdGFydGluZ0xpbmVOdW1iZXIiLCJzYWZlV2lkdGgiLCJmbG9vciIsImxzIiwibnVtYmVyRGlmZkxpbmVzIiwibWF4TGluZU51bWJlciIsImZsYXRNYXAiLCJ3b3JkRGlmZkVsZW1lbnRzIiwid3JhcHBlZFRleHQiLCJzaWdpbCIsImJnQ29sb3IiLCJzdGFydExpbmUiLCJxdWV1ZSIsInNoaWZ0IiwibnVtUmVtb3ZlZCJdLCJzb3VyY2VzIjpbIkZhbGxiYWNrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWZmV29yZHNXaXRoU3BhY2UsIHR5cGUgU3RydWN0dXJlZFBhdGNoSHVuayB9IGZyb20gJ2RpZmYnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgVGhlbWVOYW1lIH0gZnJvbSAnc3JjL3V0aWxzL3RoZW1lLmpzJ1xuaW1wb3J0IHsgc3RyaW5nV2lkdGggfSBmcm9tICcuLi8uLi9pbmsvc3RyaW5nV2lkdGguanMnXG5pbXBvcnQgeyBCb3gsIE5vU2VsZWN0LCBUZXh0LCB1c2VUaGVtZSwgd3JhcFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5cbi8qXG4gKiBTdHJ1Y3R1cmVkRGlmZkZhbGxiYWNrIENvbXBvbmVudDogV29yZC1MZXZlbCBEaWZmIEhpZ2hsaWdodGluZyBFeGFtcGxlXG4gKlxuICogVGhpcyBjb21wb25lbnQgc2hvd3MgZGlmZiBjaGFuZ2VzIHdpdGggd29yZC1sZXZlbCBoaWdobGlnaHRpbmcuIEhlcmUncyBhIHdhbGt0aHJvdWdoOlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBcbiAqIC8vIE9yaWdpbmFsIGNvZGVcbiAqIGZ1bmN0aW9uIG9sZE5hbWUocGFyYW0pIHtcbiAqICAgcmV0dXJuIHBhcmFtLm9sZFByb3BlcnR5O1xuICogfVxuICpcbiAqIC8vIENoYW5nZWQgY29kZVxuICogZnVuY3Rpb24gbmV3TmFtZShwYXJhbSkge1xuICogICByZXR1cm4gcGFyYW0ubmV3UHJvcGVydHk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBQcm9jZXNzaW5nIGZsb3c6XG4gKiAxLiBDb21wb25lbnQgcmVjZWl2ZXMgYSBwYXRjaCB3aXRoIGxpbmVzIGluY2x1ZGluZyAnKycgYW5kICctJyBwcmVmaXhlc1xuICogMi4gTGluZXMgYXJlIHRyYW5zZm9ybWVkIGludG8gb2JqZWN0cyB3aXRoIHR5cGUgKGFkZC9yZW1vdmUvbm9jaGFuZ2UpXG4gKiAzLiBSZWxhdGVkIGFkZC9yZW1vdmUgbGluZXMgYXJlIHBhaXJlZCAoZS5nLiwgb2xkTmFtZSB3aXRoIG5ld05hbWUpXG4gKiA0LiBXb3JkLWxldmVsIGRpZmZpbmcgaWRlbnRpZmllcyBzcGVjaWZpYyBjaGFuZ2VkIHBhcnRzOlxuICogICAgW1xuICogICAgICB7IHZhbHVlOiAnZnVuY3Rpb24gJywgYWRkZWQ6IHVuZGVmaW5lZCwgcmVtb3ZlZDogdW5kZWZpbmVkIH0sICAvLyBDb21tb25cbiAqICAgICAgeyB2YWx1ZTogJ29sZE5hbWUnLCByZW1vdmVkOiB0cnVlIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlZFxuICogICAgICB7IHZhbHVlOiAnbmV3TmFtZScsIGFkZGVkOiB0cnVlIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGRlZFxuICogICAgICB7IHZhbHVlOiAnKHBhcmFtKSB7JywgYWRkZWQ6IHVuZGVmaW5lZCwgcmVtb3ZlZDogdW5kZWZpbmVkIH0gICAvLyBDb21tb25cbiAqICAgIF1cbiAqIDUuIFJlbmRlcnMgd2l0aCBlbmhhbmNlZCBoaWdobGlnaHRpbmc6XG4gKiAgICAtIENvbW1vbiBwYXJ0cyBhcmUgc2hvd24gbm9ybWFsbHlcbiAqICAgIC0gUmVtb3ZlZCB3b3JkcyBnZXQgYSBkYXJrZXIgcmVkIGJhY2tncm91bmRcbiAqICAgIC0gQWRkZWQgd29yZHMgZ2V0IGEgZGFya2VyIGdyZWVuIGJhY2tncm91bmRcbiAqXG4gKiBUaGlzIHByb2R1Y2VzIGEgdmlzdWFsbHkgY2xlYXIgZGlmZiB3aGVyZSB1c2VycyBjYW4gc2VlIGV4YWN0bHkgd2hpY2ggd29yZHNcbiAqIGNoYW5nZWQgcmF0aGVyIHRoYW4ganVzdCB3aGljaCBsaW5lcyB3ZXJlIG1vZGlmaWVkLlxuICovXG5cbi8vIERlZmluZSBEaWZmTGluZSBpbnRlcmZhY2UgdG8gYmUgdXNlZCB0aHJvdWdob3V0IHRoZSBmaWxlXG5pbnRlcmZhY2UgRGlmZkxpbmUge1xuICBjb2RlOiBzdHJpbmdcbiAgdHlwZTogJ2FkZCcgfCAncmVtb3ZlJyB8ICdub2NoYW5nZSdcbiAgaTogbnVtYmVyXG4gIG9yaWdpbmFsQ29kZTogc3RyaW5nXG4gIHdvcmREaWZmPzogYm9vbGVhbiAvLyBGbGFnIGZvciB3b3JkLWxldmVsIGRpZmZpbmdcbiAgbWF0Y2hlZExpbmU/OiBEaWZmTGluZVxufVxuXG4vLyBMaW5lIG9iamVjdCB0eXBlIGZvciBpbnRlcm5hbCBmdW5jdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgTGluZU9iamVjdCB7XG4gIGNvZGU6IHN0cmluZ1xuICBpOiBudW1iZXJcbiAgdHlwZTogJ2FkZCcgfCAncmVtb3ZlJyB8ICdub2NoYW5nZSdcbiAgb3JpZ2luYWxDb2RlOiBzdHJpbmdcbiAgd29yZERpZmY/OiBib29sZWFuXG4gIG1hdGNoZWRMaW5lPzogTGluZU9iamVjdFxufVxuXG4vLyBUeXBlIGZvciB3b3JkLWxldmVsIGRpZmYgcGFydHNcbmludGVyZmFjZSBEaWZmUGFydCB7XG4gIGFkZGVkPzogYm9vbGVhblxuICByZW1vdmVkPzogYm9vbGVhblxuICB2YWx1ZTogc3RyaW5nXG59XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHBhdGNoOiBTdHJ1Y3R1cmVkUGF0Y2hIdW5rXG4gIGRpbTogYm9vbGVhblxuICB3aWR0aDogbnVtYmVyXG59XG5cbi8vIFRocmVzaG9sZCBmb3Igd2hlbiB3ZSBzaG93IGEgZnVsbC1saW5lIGRpZmYgaW5zdGVhZCBvZiB3b3JkLWxldmVsIGRpZmZpbmdcbmNvbnN0IENIQU5HRV9USFJFU0hPTEQgPSAwLjRcblxuZXhwb3J0IGZ1bmN0aW9uIFN0cnVjdHVyZWREaWZmRmFsbGJhY2soe1xuICBwYXRjaCxcbiAgZGltLFxuICB3aWR0aCxcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW3RoZW1lXSA9IHVzZVRoZW1lKClcbiAgY29uc3QgZGlmZiA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZm9ybWF0RGlmZihwYXRjaC5saW5lcywgcGF0Y2gub2xkU3RhcnQsIHdpZHRoLCBkaW0sIHRoZW1lKSxcbiAgICBbcGF0Y2gubGluZXMsIHBhdGNoLm9sZFN0YXJ0LCB3aWR0aCwgZGltLCB0aGVtZV0sXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGZsZXhHcm93PXsxfT5cbiAgICAgIHtkaWZmLm1hcCgobm9kZSwgaSkgPT4gKFxuICAgICAgICA8Qm94IGtleT17aX0+e25vZGV9PC9Cb3g+XG4gICAgICApKX1cbiAgICA8L0JveD5cbiAgKVxufVxuXG4vLyBUcmFuc2Zvcm0gbGluZXMgdG8gbGluZSBvYmplY3RzIHdpdGggdHlwZSBpbmZvcm1hdGlvblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUxpbmVzVG9PYmplY3RzKGxpbmVzOiBzdHJpbmdbXSk6IExpbmVPYmplY3RbXSB7XG4gIHJldHVybiBsaW5lcy5tYXAoY29kZSA9PiB7XG4gICAgaWYgKGNvZGUuc3RhcnRzV2l0aCgnKycpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiBjb2RlLnNsaWNlKDEpLFxuICAgICAgICBpOiAwLFxuICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgb3JpZ2luYWxDb2RlOiBjb2RlLnNsaWNlKDEpLFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29kZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGNvZGUuc2xpY2UoMSksXG4gICAgICAgIGk6IDAsXG4gICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICBvcmlnaW5hbENvZGU6IGNvZGUuc2xpY2UoMSksXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiBjb2RlLnNsaWNlKDEpLFxuICAgICAgaTogMCxcbiAgICAgIHR5cGU6ICdub2NoYW5nZScsXG4gICAgICBvcmlnaW5hbENvZGU6IGNvZGUuc2xpY2UoMSksXG4gICAgfVxuICB9KVxufVxuXG4vLyBHcm91cCBhZGphY2VudCBhZGQvcmVtb3ZlIGxpbmVzIGZvciB3b3JkLWxldmVsIGRpZmZpbmdcbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQWRqYWNlbnRMaW5lcyhsaW5lT2JqZWN0czogTGluZU9iamVjdFtdKTogTGluZU9iamVjdFtdIHtcbiAgY29uc3QgcHJvY2Vzc2VkTGluZXM6IExpbmVPYmplY3RbXSA9IFtdXG4gIGxldCBpID0gMFxuXG4gIHdoaWxlIChpIDwgbGluZU9iamVjdHMubGVuZ3RoKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGxpbmVPYmplY3RzW2ldXG4gICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICBpKytcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gRmluZCBhIHNlcXVlbmNlIG9mIHJlbW92ZSBmb2xsb3dlZCBieSBhZGQgKHBvc3NpYmxlIHdvcmQtbGV2ZWwgZGlmZiBjYW5kaWRhdGVzKVxuICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICBjb25zdCByZW1vdmVMaW5lczogTGluZU9iamVjdFtdID0gW2N1cnJlbnRdXG4gICAgICBsZXQgaiA9IGkgKyAxXG5cbiAgICAgIC8vIENvbGxlY3QgY29uc2VjdXRpdmUgcmVtb3ZlIGxpbmVzXG4gICAgICB3aGlsZSAoaiA8IGxpbmVPYmplY3RzLmxlbmd0aCAmJiBsaW5lT2JqZWN0c1tqXT8udHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGxpbmVPYmplY3RzW2pdXG4gICAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgICAgcmVtb3ZlTGluZXMucHVzaChsaW5lKVxuICAgICAgICB9XG4gICAgICAgIGorK1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYWRkIGxpbmVzIGZvbGxvd2luZyB0aGUgcmVtb3ZlIGxpbmVzXG4gICAgICBjb25zdCBhZGRMaW5lczogTGluZU9iamVjdFtdID0gW11cbiAgICAgIHdoaWxlIChqIDwgbGluZU9iamVjdHMubGVuZ3RoICYmIGxpbmVPYmplY3RzW2pdPy50eXBlID09PSAnYWRkJykge1xuICAgICAgICBjb25zdCBsaW5lID0gbGluZU9iamVjdHNbal1cbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBhZGRMaW5lcy5wdXNoKGxpbmUpXG4gICAgICAgIH1cbiAgICAgICAgaisrXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgYm90aCByZW1vdmUgYW5kIGFkZCBsaW5lcywgcGVyZm9ybSB3b3JkLWxldmVsIGRpZmZpbmdcbiAgICAgIGlmIChyZW1vdmVMaW5lcy5sZW5ndGggPiAwICYmIGFkZExpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gRm9yIHdvcmQgZGlmZmluZywgd2UnbGwgY29tcGFyZSBlYWNoIHBhaXIgb2YgbGluZXMgb3IgdGhlIGNsb3Nlc3QgYXZhaWxhYmxlIG1hdGNoXG4gICAgICAgIGNvbnN0IHBhaXJDb3VudCA9IE1hdGgubWluKHJlbW92ZUxpbmVzLmxlbmd0aCwgYWRkTGluZXMubGVuZ3RoKVxuXG4gICAgICAgIC8vIEFkZCBwYWlyZWQgbGluZXMgd2l0aCB3b3JkIGRpZmYgaW5mb1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHBhaXJDb3VudDsgaysrKSB7XG4gICAgICAgICAgY29uc3QgcmVtb3ZlTGluZSA9IHJlbW92ZUxpbmVzW2tdXG4gICAgICAgICAgY29uc3QgYWRkTGluZSA9IGFkZExpbmVzW2tdXG5cbiAgICAgICAgICBpZiAocmVtb3ZlTGluZSAmJiBhZGRMaW5lKSB7XG4gICAgICAgICAgICByZW1vdmVMaW5lLndvcmREaWZmID0gdHJ1ZVxuICAgICAgICAgICAgYWRkTGluZS53b3JkRGlmZiA9IHRydWVcblxuICAgICAgICAgICAgLy8gU3RvcmUgdGhlIG1hdGNoZWQgcGFpciBmb3IgbGF0ZXIgd29yZCBkaWZmaW5nXG4gICAgICAgICAgICByZW1vdmVMaW5lLm1hdGNoZWRMaW5lID0gYWRkTGluZVxuICAgICAgICAgICAgYWRkTGluZS5tYXRjaGVkTGluZSA9IHJlbW92ZUxpbmVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYWxsIHJlbW92ZSBsaW5lcyAoYm90aCBwYWlyZWQgYW5kIHVucGFpcmVkKVxuICAgICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKC4uLnJlbW92ZUxpbmVzLmZpbHRlcihCb29sZWFuKSlcblxuICAgICAgICAvLyBUaGVuIGFkZCBhbGwgYWRkIGxpbmVzIChib3RoIHBhaXJlZCBhbmQgdW5wYWlyZWQpXG4gICAgICAgIHByb2Nlc3NlZExpbmVzLnB1c2goLi4uYWRkTGluZXMuZmlsdGVyKEJvb2xlYW4pKVxuXG4gICAgICAgIGkgPSBqIC8vIFNraXAgYWxsIHRoZSBsaW5lcyB3ZSd2ZSBwcm9jZXNzZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIG1hdGNoaW5nIGFkZCBsaW5lcywganVzdCBhZGQgdGhlIGN1cnJlbnQgcmVtb3ZlIGxpbmVcbiAgICAgICAgcHJvY2Vzc2VkTGluZXMucHVzaChjdXJyZW50KVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm90IGEgcmVtb3ZlIGxpbmUsIGp1c3QgYWRkIGl0XG4gICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKGN1cnJlbnQpXG4gICAgICBpKytcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvY2Vzc2VkTGluZXNcbn1cblxuLy8gQ2FsY3VsYXRlIHdvcmQtbGV2ZWwgZGlmZnMgYmV0d2VlbiB0d28gdGV4dCBzdHJpbmdzXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlV29yZERpZmZzKFxuICBvbGRUZXh0OiBzdHJpbmcsXG4gIG5ld1RleHQ6IHN0cmluZyxcbik6IERpZmZQYXJ0W10ge1xuICAvLyBVc2UgZGlmZldvcmRzV2l0aFNwYWNlIGluc3RlYWQgb2YgZGlmZldvcmRzIHRvIHByZXNlcnZlIHdoaXRlc3BhY2VcbiAgLy8gVGhpcyBlbnN1cmVzIHNwYWNlcyBiZXR3ZWVuIHRva2VucyBsaWtlID4gYW5kIHsgYXJlIHByZXNlcnZlZFxuICBjb25zdCByZXN1bHQgPSBkaWZmV29yZHNXaXRoU3BhY2Uob2xkVGV4dCwgbmV3VGV4dCwgeyBpZ25vcmVDYXNlOiBmYWxzZSB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gUHJvY2VzcyB3b3JkLWxldmVsIGRpZmZzIHdpdGggbWFudWFsIHdyYXBwaW5nIHN1cHBvcnRcbmZ1bmN0aW9uIGdlbmVyYXRlV29yZERpZmZFbGVtZW50cyhcbiAgaXRlbTogRGlmZkxpbmUsXG4gIHdpZHRoOiBudW1iZXIsXG4gIG1heFdpZHRoOiBudW1iZXIsXG4gIGRpbTogYm9vbGVhbixcbiAgb3ZlcnJpZGVUaGVtZT86IFRoZW1lTmFtZSxcbik6IFJlYWN0LlJlYWN0Tm9kZVtdIHwgbnVsbCB7XG4gIGNvbnN0IHsgdHlwZSwgaSwgd29yZERpZmYsIG1hdGNoZWRMaW5lLCBvcmlnaW5hbENvZGUgfSA9IGl0ZW1cblxuICBpZiAoIXdvcmREaWZmIHx8ICFtYXRjaGVkTGluZSkge1xuICAgIHJldHVybiBudWxsIC8vIFRoaXMgZnVuY3Rpb24gb25seSBoYW5kbGVzIHdvcmQtbGV2ZWwgZGlmZiByZW5kZXJpbmdcbiAgfVxuXG4gIGNvbnN0IHJlbW92ZWRMaW5lVGV4dCA9XG4gICAgdHlwZSA9PT0gJ3JlbW92ZScgPyBvcmlnaW5hbENvZGUgOiBtYXRjaGVkTGluZS5vcmlnaW5hbENvZGVcbiAgY29uc3QgYWRkZWRMaW5lVGV4dCA9XG4gICAgdHlwZSA9PT0gJ3JlbW92ZScgPyBtYXRjaGVkTGluZS5vcmlnaW5hbENvZGUgOiBvcmlnaW5hbENvZGVcblxuICBjb25zdCB3b3JkRGlmZnMgPSBjYWxjdWxhdGVXb3JkRGlmZnMocmVtb3ZlZExpbmVUZXh0LCBhZGRlZExpbmVUZXh0KVxuXG4gIC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugd29yZC1sZXZlbCBkaWZmaW5nXG4gIGNvbnN0IHRvdGFsTGVuZ3RoID0gcmVtb3ZlZExpbmVUZXh0Lmxlbmd0aCArIGFkZGVkTGluZVRleHQubGVuZ3RoXG4gIGNvbnN0IGNoYW5nZWRMZW5ndGggPSB3b3JkRGlmZnNcbiAgICAuZmlsdGVyKHBhcnQgPT4gcGFydC5hZGRlZCB8fCBwYXJ0LnJlbW92ZWQpXG4gICAgLnJlZHVjZSgoc3VtLCBwYXJ0KSA9PiBzdW0gKyBwYXJ0LnZhbHVlLmxlbmd0aCwgMClcbiAgY29uc3QgY2hhbmdlUmF0aW8gPSBjaGFuZ2VkTGVuZ3RoIC8gdG90YWxMZW5ndGhcblxuICBpZiAoY2hhbmdlUmF0aW8gPiBDSEFOR0VfVEhSRVNIT0xEIHx8IGRpbSkge1xuICAgIHJldHVybiBudWxsIC8vIEZhbGwgYmFjayB0byBzdGFuZGFyZCByZW5kZXJpbmcgZm9yIG1ham9yIGNoYW5nZXNcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBhdmFpbGFibGUgd2lkdGggZm9yIGNvbnRlbnRcbiAgY29uc3QgZGlmZlByZWZpeCA9IHR5cGUgPT09ICdhZGQnID8gJysnIDogJy0nXG4gIGNvbnN0IGRpZmZQcmVmaXhXaWR0aCA9IGRpZmZQcmVmaXgubGVuZ3RoXG4gIGNvbnN0IGF2YWlsYWJsZUNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KFxuICAgIDEsXG4gICAgd2lkdGggLSBtYXhXaWR0aCAtIDEgLSBkaWZmUHJlZml4V2lkdGgsXG4gIClcblxuICAvLyBNYW51YWxseSB3cmFwIHRoZSB3b3JkIGRpZmYgcGFydHMgd2l0aCBiZXR0ZXIgc3BhY2UgZWZmaWNpZW5jeVxuICBjb25zdCB3cmFwcGVkTGluZXM6IHsgY29udGVudDogUmVhY3QuUmVhY3ROb2RlW107IGNvbnRlbnRXaWR0aDogbnVtYmVyIH1bXSA9XG4gICAgW11cbiAgbGV0IGN1cnJlbnRMaW5lOiBSZWFjdC5SZWFjdE5vZGVbXSA9IFtdXG4gIGxldCBjdXJyZW50TGluZVdpZHRoID0gMFxuXG4gIHdvcmREaWZmcy5mb3JFYWNoKChwYXJ0LCBwYXJ0SW5kZXgpID0+IHtcbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBwYXJ0IHNob3VsZCBiZSBzaG93biBmb3IgdGhpcyBsaW5lIHR5cGVcbiAgICBsZXQgc2hvdWxkU2hvdyA9IGZhbHNlXG4gICAgbGV0IHBhcnRCZ0NvbG9yOiAnZGlmZkFkZGVkV29yZCcgfCAnZGlmZlJlbW92ZWRXb3JkJyB8IHVuZGVmaW5lZFxuXG4gICAgaWYgKHR5cGUgPT09ICdhZGQnKSB7XG4gICAgICBpZiAocGFydC5hZGRlZCkge1xuICAgICAgICBzaG91bGRTaG93ID0gdHJ1ZVxuICAgICAgICBwYXJ0QmdDb2xvciA9ICdkaWZmQWRkZWRXb3JkJ1xuICAgICAgfSBlbHNlIGlmICghcGFydC5yZW1vdmVkKSB7XG4gICAgICAgIHNob3VsZFNob3cgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgaWYgKHBhcnQucmVtb3ZlZCkge1xuICAgICAgICBzaG91bGRTaG93ID0gdHJ1ZVxuICAgICAgICBwYXJ0QmdDb2xvciA9ICdkaWZmUmVtb3ZlZFdvcmQnXG4gICAgICB9IGVsc2UgaWYgKCFwYXJ0LmFkZGVkKSB7XG4gICAgICAgIHNob3VsZFNob3cgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzaG91bGRTaG93KSByZXR1cm5cblxuICAgIC8vIFVzZSB3cmFwVGV4dCB0byB3cmFwIHRoaXMgaW5kaXZpZHVhbCBwYXJ0IGlmIGl0J3MgbG9uZ1xuICAgIGNvbnN0IHBhcnRXcmFwcGVkID0gd3JhcFRleHQocGFydC52YWx1ZSwgYXZhaWxhYmxlQ29udGVudFdpZHRoLCAnd3JhcCcpXG4gICAgY29uc3QgcGFydExpbmVzID0gcGFydFdyYXBwZWQuc3BsaXQoJ1xcbicpXG5cbiAgICBwYXJ0TGluZXMuZm9yRWFjaCgocGFydExpbmUsIGxpbmVJZHgpID0+IHtcbiAgICAgIGlmICghcGFydExpbmUpIHJldHVyblxuXG4gICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHN0YXJ0IGEgbmV3IGxpbmVcbiAgICAgIGlmIChcbiAgICAgICAgbGluZUlkeCA+IDAgfHxcbiAgICAgICAgY3VycmVudExpbmVXaWR0aCArIHN0cmluZ1dpZHRoKHBhcnRMaW5lKSA+IGF2YWlsYWJsZUNvbnRlbnRXaWR0aFxuICAgICAgKSB7XG4gICAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgd3JhcHBlZExpbmVzLnB1c2goe1xuICAgICAgICAgICAgY29udGVudDogWy4uLmN1cnJlbnRMaW5lXSxcbiAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogY3VycmVudExpbmVXaWR0aCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGN1cnJlbnRMaW5lID0gW11cbiAgICAgICAgICBjdXJyZW50TGluZVdpZHRoID0gMFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRMaW5lLnB1c2goXG4gICAgICAgIDxUZXh0XG4gICAgICAgICAga2V5PXtgcGFydC0ke3BhcnRJbmRleH0tJHtsaW5lSWR4fWB9XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtwYXJ0QmdDb2xvcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtwYXJ0TGluZX1cbiAgICAgICAgPC9UZXh0PixcbiAgICAgIClcblxuICAgICAgY3VycmVudExpbmVXaWR0aCArPSBzdHJpbmdXaWR0aChwYXJ0TGluZSlcbiAgICB9KVxuICB9KVxuXG4gIGlmIChjdXJyZW50TGluZS5sZW5ndGggPiAwKSB7XG4gICAgd3JhcHBlZExpbmVzLnB1c2goeyBjb250ZW50OiBjdXJyZW50TGluZSwgY29udGVudFdpZHRoOiBjdXJyZW50TGluZVdpZHRoIH0pXG4gIH1cblxuICAvLyBSZW5kZXIgZWFjaCB3cmFwcGVkIGxpbmUgYXMgYSBzZXBhcmF0ZSBUZXh0IGVsZW1lbnRcbiAgcmV0dXJuIHdyYXBwZWRMaW5lcy5tYXAoKHsgY29udGVudCwgY29udGVudFdpZHRoIH0sIGxpbmVJbmRleCkgPT4ge1xuICAgIGNvbnN0IGtleSA9IGAke3R5cGV9LSR7aX0tJHtsaW5lSW5kZXh9YFxuICAgIGNvbnN0IGxpbmVCZ0NvbG9yID1cbiAgICAgIHR5cGUgPT09ICdhZGQnXG4gICAgICAgID8gZGltXG4gICAgICAgICAgPyAnZGlmZkFkZGVkRGltbWVkJ1xuICAgICAgICAgIDogJ2RpZmZBZGRlZCdcbiAgICAgICAgOiBkaW1cbiAgICAgICAgICA/ICdkaWZmUmVtb3ZlZERpbW1lZCdcbiAgICAgICAgICA6ICdkaWZmUmVtb3ZlZCdcbiAgICBjb25zdCBsaW5lTnVtID0gbGluZUluZGV4ID09PSAwID8gaSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IGxpbmVOdW1TdHIgPVxuICAgICAgKGxpbmVOdW0gIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGxpbmVOdW0udG9TdHJpbmcoKS5wYWRTdGFydChtYXhXaWR0aClcbiAgICAgICAgOiAnICcucmVwZWF0KG1heFdpZHRoKSkgKyAnICdcbiAgICAvLyBDYWxjdWxhdGUgcGFkZGluZyB0byBmaWxsIHRoZSBlbnRpcmUgdGVybWluYWwgd2lkdGhcbiAgICBjb25zdCB1c2VkV2lkdGggPSBsaW5lTnVtU3RyLmxlbmd0aCArIGRpZmZQcmVmaXhXaWR0aCArIGNvbnRlbnRXaWR0aFxuICAgIGNvbnN0IHBhZGRpbmcgPSBNYXRoLm1heCgwLCB3aWR0aCAtIHVzZWRXaWR0aClcblxuICAgIHJldHVybiAoXG4gICAgICA8Qm94IGtleT17a2V5fSBmbGV4RGlyZWN0aW9uPVwicm93XCI+XG4gICAgICAgIDxOb1NlbGVjdCBmcm9tTGVmdEVkZ2U+XG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGNvbG9yPXtvdmVycmlkZVRoZW1lID8gJ3RleHQnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtsaW5lQmdDb2xvcn1cbiAgICAgICAgICAgIGRpbUNvbG9yPXtkaW19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xpbmVOdW1TdHJ9XG4gICAgICAgICAgICB7ZGlmZlByZWZpeH1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvTm9TZWxlY3Q+XG4gICAgICAgIDxUZXh0XG4gICAgICAgICAgY29sb3I9e292ZXJyaWRlVGhlbWUgPyAndGV4dCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtsaW5lQmdDb2xvcn1cbiAgICAgICAgICBkaW1Db2xvcj17ZGltfVxuICAgICAgICA+XG4gICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgeycgJy5yZXBlYXQocGFkZGluZyl9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvQm94PlxuICAgIClcbiAgfSlcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlmZihcbiAgbGluZXM6IHN0cmluZ1tdLFxuICBzdGFydGluZ0xpbmVOdW1iZXI6IG51bWJlcixcbiAgd2lkdGg6IG51bWJlcixcbiAgZGltOiBib29sZWFuLFxuICBvdmVycmlkZVRoZW1lPzogVGhlbWVOYW1lLFxuKTogUmVhY3QuUmVhY3ROb2RlW10ge1xuICAvLyBFbnN1cmUgd2lkdGggaXMgYXQgbGVhc3QgMSB0byBwcmV2ZW50IHJlbmRlcmluZyBpc3N1ZXMgd2l0aCB2ZXJ5IG5hcnJvdyB0ZXJtaW5hbHNcbiAgY29uc3Qgc2FmZVdpZHRoID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih3aWR0aCkpXG5cbiAgLy8gU3RlcCAxOiBUcmFuc2Zvcm0gbGluZXMgdG8gbGluZSBvYmplY3RzIHdpdGggdHlwZSBpbmZvcm1hdGlvblxuICBjb25zdCBsaW5lT2JqZWN0cyA9IHRyYW5zZm9ybUxpbmVzVG9PYmplY3RzKGxpbmVzKVxuXG4gIC8vIFN0ZXAgMjogR3JvdXAgYWRqYWNlbnQgYWRkL3JlbW92ZSBsaW5lcyBmb3Igd29yZC1sZXZlbCBkaWZmaW5nXG4gIGNvbnN0IHByb2Nlc3NlZExpbmVzID0gcHJvY2Vzc0FkamFjZW50TGluZXMobGluZU9iamVjdHMpXG5cbiAgLy8gU3RlcCAzOiBOdW1iZXIgdGhlIGRpZmYgbGluZXNcbiAgY29uc3QgbHMgPSBudW1iZXJEaWZmTGluZXMocHJvY2Vzc2VkTGluZXMsIHN0YXJ0aW5nTGluZU51bWJlcilcblxuICAvLyBGaW5kIG1heCBsaW5lIG51bWJlciB3aWR0aCBmb3IgYWxpZ25tZW50XG4gIGNvbnN0IG1heExpbmVOdW1iZXIgPSBNYXRoLm1heCguLi5scy5tYXAoKHsgaSB9KSA9PiBpKSwgMClcbiAgY29uc3QgbWF4V2lkdGggPSBNYXRoLm1heChtYXhMaW5lTnVtYmVyLnRvU3RyaW5nKCkubGVuZ3RoICsgMSwgMClcblxuICAvLyBTdGVwIDQ6IFJlbmRlciBmb3JtYXR0aW5nXG4gIHJldHVybiBscy5mbGF0TWFwKChpdGVtKTogUmVhY3QuUmVhY3ROb2RlW10gPT4ge1xuICAgIGNvbnN0IHsgdHlwZSwgY29kZSwgaSwgd29yZERpZmYsIG1hdGNoZWRMaW5lIH0gPSBpdGVtXG5cbiAgICAvLyBIYW5kbGUgd29yZC1sZXZlbCBkaWZmaW5nIGZvciBhZGQvcmVtb3ZlIHBhaXJzXG4gICAgaWYgKHdvcmREaWZmICYmIG1hdGNoZWRMaW5lKSB7XG4gICAgICBjb25zdCB3b3JkRGlmZkVsZW1lbnRzID0gZ2VuZXJhdGVXb3JkRGlmZkVsZW1lbnRzKFxuICAgICAgICBpdGVtLFxuICAgICAgICBzYWZlV2lkdGgsXG4gICAgICAgIG1heFdpZHRoLFxuICAgICAgICBkaW0sXG4gICAgICAgIG92ZXJyaWRlVGhlbWUsXG4gICAgICApXG5cbiAgICAgIC8vIHdvcmQtZGlmZiBtaWdodCByZWZ1c2UgKGUuZy4gZHVlIHRvIGxpbmVzIGJlaW5nIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50KSBpbiB3aGljaFxuICAgICAgLy8gY2FzZSB3ZSdsbCBmYWxsIHRocm91Z2ggdG8gbm9ybWFsIHJlbmRlcmluIGdiZWxvd1xuICAgICAgaWYgKHdvcmREaWZmRWxlbWVudHMgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHdvcmREaWZmRWxlbWVudHNcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdGFuZGFyZCByZW5kZXJpbmcgZm9yIGxpbmVzIHdpdGhvdXQgd29yZCBkaWZmaW5nIG9yIGFzIGZhbGxiYWNrXG4gICAgLy8gQ2FsY3VsYXRlIGF2YWlsYWJsZSB3aWR0aCBhY2NvdW50aW5nIGZvciBsaW5lIG51bWJlciArIHNwYWNlICsgZGlmZiBwcmVmaXhcbiAgICBjb25zdCBkaWZmUHJlZml4V2lkdGggPSAyIC8vIFwiICBcIiBmb3IgdW5jaGFuZ2VkLCBcIisgXCIgb3IgXCItIFwiIGZvciBjaGFuZ2VzXG4gICAgY29uc3QgYXZhaWxhYmxlQ29udGVudFdpZHRoID0gTWF0aC5tYXgoXG4gICAgICAxLFxuICAgICAgc2FmZVdpZHRoIC0gbWF4V2lkdGggLSAxIC0gZGlmZlByZWZpeFdpZHRoLFxuICAgICkgLy8gLTEgZm9yIHNwYWNlIGFmdGVyIGxpbmUgbnVtYmVyXG4gICAgY29uc3Qgd3JhcHBlZFRleHQgPSB3cmFwVGV4dChjb2RlLCBhdmFpbGFibGVDb250ZW50V2lkdGgsICd3cmFwJylcbiAgICBjb25zdCB3cmFwcGVkTGluZXMgPSB3cmFwcGVkVGV4dC5zcGxpdCgnXFxuJylcblxuICAgIHJldHVybiB3cmFwcGVkTGluZXMubWFwKChsaW5lLCBsaW5lSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke3R5cGV9LSR7aX0tJHtsaW5lSW5kZXh9YFxuICAgICAgY29uc3QgbGluZU51bSA9IGxpbmVJbmRleCA9PT0gMCA/IGkgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGxpbmVOdW1TdHIgPVxuICAgICAgICAobGluZU51bSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBsaW5lTnVtLnRvU3RyaW5nKCkucGFkU3RhcnQobWF4V2lkdGgpXG4gICAgICAgICAgOiAnICcucmVwZWF0KG1heFdpZHRoKSkgKyAnICdcbiAgICAgIGNvbnN0IHNpZ2lsID0gdHlwZSA9PT0gJ2FkZCcgPyAnKycgOiB0eXBlID09PSAncmVtb3ZlJyA/ICctJyA6ICcgJ1xuICAgICAgLy8gQ2FsY3VsYXRlIHBhZGRpbmcgdG8gZmlsbCB0aGUgZW50aXJlIHRlcm1pbmFsIHdpZHRoXG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSBsaW5lTnVtU3RyLmxlbmd0aCArIDEgKyBzdHJpbmdXaWR0aChsaW5lKSAvLyBsaW5lTnVtICsgc2lnaWwgKyBjb2RlXG4gICAgICBjb25zdCBwYWRkaW5nID0gTWF0aC5tYXgoMCwgc2FmZVdpZHRoIC0gY29udGVudFdpZHRoKVxuXG4gICAgICBjb25zdCBiZ0NvbG9yID1cbiAgICAgICAgdHlwZSA9PT0gJ2FkZCdcbiAgICAgICAgICA/IGRpbVxuICAgICAgICAgICAgPyAnZGlmZkFkZGVkRGltbWVkJ1xuICAgICAgICAgICAgOiAnZGlmZkFkZGVkJ1xuICAgICAgICAgIDogdHlwZSA9PT0gJ3JlbW92ZSdcbiAgICAgICAgICAgID8gZGltXG4gICAgICAgICAgICAgID8gJ2RpZmZSZW1vdmVkRGltbWVkJ1xuICAgICAgICAgICAgICA6ICdkaWZmUmVtb3ZlZCdcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgIC8vIEd1dHRlciAobGluZSBudW1iZXIgKyBzaWdpbCkgaXMgd3JhcHBlZCBpbiA8Tm9TZWxlY3Q+IHNvIGZ1bGxzY3JlZW5cbiAgICAgIC8vIHRleHQgc2VsZWN0aW9uIHlpZWxkcyBjbGVhbiBjb2RlLiBiZ0NvbG9yIGNhcnJpZXMgYWNyb3NzIGJvdGggYm94ZXNcbiAgICAgIC8vIHNvIHRoZSB2aXN1YWwgY29udGludWl0eSAoc29saWQgcmVkL2dyZWVuIGJhcikgaXMgdW5jaGFuZ2VkLlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBrZXk9e2tleX0gZmxleERpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgICAgIDxOb1NlbGVjdCBmcm9tTGVmdEVkZ2U+XG4gICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICBjb2xvcj17b3ZlcnJpZGVUaGVtZSA/ICd0ZXh0JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtiZ0NvbG9yfVxuICAgICAgICAgICAgICBkaW1Db2xvcj17ZGltIHx8IHR5cGUgPT09ICdub2NoYW5nZSd9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsaW5lTnVtU3RyfVxuICAgICAgICAgICAgICB7c2lnaWx9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9Ob1NlbGVjdD5cbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgY29sb3I9e292ZXJyaWRlVGhlbWUgPyAndGV4dCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9e2JnQ29sb3J9XG4gICAgICAgICAgICBkaW1Db2xvcj17ZGltfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsaW5lfVxuICAgICAgICAgICAgeycgJy5yZXBlYXQocGFkZGluZyl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgIClcbiAgICB9KVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyRGlmZkxpbmVzKFxuICBkaWZmOiBMaW5lT2JqZWN0W10sXG4gIHN0YXJ0TGluZTogbnVtYmVyLFxuKTogRGlmZkxpbmVbXSB7XG4gIGxldCBpID0gc3RhcnRMaW5lXG4gIGNvbnN0IHJlc3VsdDogRGlmZkxpbmVbXSA9IFtdXG4gIGNvbnN0IHF1ZXVlID0gWy4uLmRpZmZdXG5cbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjdXJyZW50ID0gcXVldWUuc2hpZnQoKSFcbiAgICBjb25zdCB7IGNvZGUsIHR5cGUsIG9yaWdpbmFsQ29kZSwgd29yZERpZmYsIG1hdGNoZWRMaW5lIH0gPSBjdXJyZW50XG4gICAgY29uc3QgbGluZSA9IHtcbiAgICAgIGNvZGUsXG4gICAgICB0eXBlLFxuICAgICAgaSxcbiAgICAgIG9yaWdpbmFsQ29kZSxcbiAgICAgIHdvcmREaWZmLFxuICAgICAgbWF0Y2hlZExpbmUsXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGNvdW50ZXJzIGJhc2VkIG9uIGNoYW5nZSB0eXBlXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdub2NoYW5nZSc6XG4gICAgICAgIGkrK1xuICAgICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgaSsrXG4gICAgICAgIHJlc3VsdC5wdXNoKGxpbmUpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdyZW1vdmUnOiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGxpbmUpXG4gICAgICAgIGxldCBudW1SZW1vdmVkID0gMFxuICAgICAgICB3aGlsZSAocXVldWVbMF0/LnR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgaSsrXG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IHF1ZXVlLnNoaWZ0KCkhXG4gICAgICAgICAgY29uc3QgeyBjb2RlLCB0eXBlLCBvcmlnaW5hbENvZGUsIHdvcmREaWZmLCBtYXRjaGVkTGluZSB9ID0gY3VycmVudFxuICAgICAgICAgIGNvbnN0IGxpbmUgPSB7XG4gICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBvcmlnaW5hbENvZGUsXG4gICAgICAgICAgICB3b3JkRGlmZixcbiAgICAgICAgICAgIG1hdGNoZWRMaW5lLFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgICAgIG51bVJlbW92ZWQrK1xuICAgICAgICB9XG4gICAgICAgIGkgLT0gbnVtUmVtb3ZlZFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLGtCQUFrQixFQUFFLEtBQUtDLG1CQUFtQixRQUFRLE1BQU07QUFDbkUsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUMvQixjQUFjQyxTQUFTLFFBQVEsb0JBQW9CO0FBQ25ELFNBQVNDLFdBQVcsUUFBUSwwQkFBMEI7QUFDdEQsU0FBU0MsR0FBRyxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxRQUFRLFFBQVEsY0FBYzs7QUFFdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVQyxRQUFRLENBQUM7RUFD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
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWZmV29yZHNXaXRoU3BhY2UiLCJTdHJ1Y3R1cmVkUGF0Y2hIdW5rIiwiUmVhY3QiLCJ1c2VNZW1vIiwiVGhlbWVOYW1lIiwic3RyaW5nV2lkdGgiLCJCb3giLCJOb1NlbGVjdCIsIlRleHQiLCJ1c2VUaGVtZSIsIndyYXBUZXh0IiwiRGlmZkxpbmUiLCJjb2RlIiwidHlwZSIsImkiLCJvcmlnaW5hbENvZGUiLCJ3b3JkRGlmZiIsIm1hdGNoZWRMaW5lIiwiTGluZU9iamVjdCIsIkRpZmZQYXJ0IiwiYWRkZWQiLCJyZW1vdmVkIiwidmFsdWUiLCJQcm9wcyIsInBhdGNoIiwiZGltIiwid2lkdGgiLCJDSEFOR0VfVEhSRVNIT0xEIiwiU3RydWN0dXJlZERpZmZGYWxsYmFjayIsInQwIiwiJCIsIl9jIiwidGhlbWUiLCJ0MSIsImxpbmVzIiwib2xkU3RhcnQiLCJmb3JtYXREaWZmIiwiZGlmZiIsInQyIiwibWFwIiwiX3RlbXAiLCJ0MyIsIm5vZGUiLCJ0cmFuc2Zvcm1MaW5lc1RvT2JqZWN0cyIsInN0YXJ0c1dpdGgiLCJzbGljZSIsInByb2Nlc3NBZGphY2VudExpbmVzIiwibGluZU9iamVjdHMiLCJwcm9jZXNzZWRMaW5lcyIsImxlbmd0aCIsImN1cnJlbnQiLCJyZW1vdmVMaW5lcyIsImoiLCJsaW5lIiwicHVzaCIsImFkZExpbmVzIiwicGFpckNvdW50IiwiTWF0aCIsIm1pbiIsImsiLCJyZW1vdmVMaW5lIiwiYWRkTGluZSIsImZpbHRlciIsIkJvb2xlYW4iLCJjYWxjdWxhdGVXb3JkRGlmZnMiLCJvbGRUZXh0IiwibmV3VGV4dCIsInJlc3VsdCIsImlnbm9yZUNhc2UiLCJnZW5lcmF0ZVdvcmREaWZmRWxlbWVudHMiLCJpdGVtIiwibWF4V2lkdGgiLCJvdmVycmlkZVRoZW1lIiwiUmVhY3ROb2RlIiwicmVtb3ZlZExpbmVUZXh0IiwiYWRkZWRMaW5lVGV4dCIsIndvcmREaWZmcyIsInRvdGFsTGVuZ3RoIiwiY2hhbmdlZExlbmd0aCIsInBhcnQiLCJyZWR1Y2UiLCJzdW0iLCJjaGFuZ2VSYXRpbyIsImRpZmZQcmVmaXgiLCJkaWZmUHJlZml4V2lkdGgiLCJhdmFpbGFibGVDb250ZW50V2lkdGgiLCJtYXgiLCJ3cmFwcGVkTGluZXMiLCJjb250ZW50IiwiY29udGVudFdpZHRoIiwiY3VycmVudExpbmUiLCJjdXJyZW50TGluZVdpZHRoIiwiZm9yRWFjaCIsInBhcnRJbmRleCIsInNob3VsZFNob3ciLCJwYXJ0QmdDb2xvciIsInBhcnRXcmFwcGVkIiwicGFydExpbmVzIiwic3BsaXQiLCJwYXJ0TGluZSIsImxpbmVJZHgiLCJsaW5lSW5kZXgiLCJrZXkiLCJsaW5lQmdDb2xvciIsImxpbmVOdW0iLCJ1bmRlZmluZWQiLCJsaW5lTnVtU3RyIiwidG9TdHJpbmciLCJwYWRTdGFydCIsInJlcGVhdCIsInVzZWRXaWR0aCIsInBhZGRpbmciLCJzdGFydGluZ0xpbmVOdW1iZXIiLCJzYWZlV2lkdGgiLCJmbG9vciIsImxzIiwibnVtYmVyRGlmZkxpbmVzIiwibWF4TGluZU51bWJlciIsImZsYXRNYXAiLCJ3b3JkRGlmZkVsZW1lbnRzIiwid3JhcHBlZFRleHQiLCJzaWdpbCIsImJnQ29sb3IiLCJzdGFydExpbmUiLCJxdWV1ZSIsInNoaWZ0IiwibnVtUmVtb3ZlZCJdLCJzb3VyY2VzIjpbIkZhbGxiYWNrLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWZmV29yZHNXaXRoU3BhY2UsIHR5cGUgU3RydWN0dXJlZFBhdGNoSHVuayB9IGZyb20gJ2RpZmYnXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgVGhlbWVOYW1lIH0gZnJvbSAnc3JjL3V0aWxzL3RoZW1lLmpzJ1xuaW1wb3J0IHsgc3RyaW5nV2lkdGggfSBmcm9tICcuLi8uLi9pbmsvc3RyaW5nV2lkdGguanMnXG5pbXBvcnQgeyBCb3gsIE5vU2VsZWN0LCBUZXh0LCB1c2VUaGVtZSwgd3JhcFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5cbi8qXG4gKiBTdHJ1Y3R1cmVkRGlmZkZhbGxiYWNrIENvbXBvbmVudDogV29yZC1MZXZlbCBEaWZmIEhpZ2hsaWdodGluZyBFeGFtcGxlXG4gKlxuICogVGhpcyBjb21wb25lbnQgc2hvd3MgZGlmZiBjaGFuZ2VzIHdpdGggd29yZC1sZXZlbCBoaWdobGlnaHRpbmcuIEhlcmUncyBhIHdhbGt0aHJvdWdoOlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGBcbiAqIC8vIE9yaWdpbmFsIGNvZGVcbiAqIGZ1bmN0aW9uIG9sZE5hbWUocGFyYW0pIHtcbiAqICAgcmV0dXJuIHBhcmFtLm9sZFByb3BlcnR5O1xuICogfVxuICpcbiAqIC8vIENoYW5nZWQgY29kZVxuICogZnVuY3Rpb24gbmV3TmFtZShwYXJhbSkge1xuICogICByZXR1cm4gcGFyYW0ubmV3UHJvcGVydHk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBQcm9jZXNzaW5nIGZsb3c6XG4gKiAxLiBDb21wb25lbnQgcmVjZWl2ZXMgYSBwYXRjaCB3aXRoIGxpbmVzIGluY2x1ZGluZyAnKycgYW5kICctJyBwcmVmaXhlc1xuICogMi4gTGluZXMgYXJlIHRyYW5zZm9ybWVkIGludG8gb2JqZWN0cyB3aXRoIHR5cGUgKGFkZC9yZW1vdmUvbm9jaGFuZ2UpXG4gKiAzLiBSZWxhdGVkIGFkZC9yZW1vdmUgbGluZXMgYXJlIHBhaXJlZCAoZS5nLiwgb2xkTmFtZSB3aXRoIG5ld05hbWUpXG4gKiA0LiBXb3JkLWxldmVsIGRpZmZpbmcgaWRlbnRpZmllcyBzcGVjaWZpYyBjaGFuZ2VkIHBhcnRzOlxuICogICAgW1xuICogICAgICB7IHZhbHVlOiAnZnVuY3Rpb24gJywgYWRkZWQ6IHVuZGVmaW5lZCwgcmVtb3ZlZDogdW5kZWZpbmVkIH0sICAvLyBDb21tb25cbiAqICAgICAgeyB2YWx1ZTogJ29sZE5hbWUnLCByZW1vdmVkOiB0cnVlIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlZFxuICogICAgICB7IHZhbHVlOiAnbmV3TmFtZScsIGFkZGVkOiB0cnVlIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGRlZFxuICogICAgICB7IHZhbHVlOiAnKHBhcmFtKSB7JywgYWRkZWQ6IHVuZGVmaW5lZCwgcmVtb3ZlZDogdW5kZWZpbmVkIH0gICAvLyBDb21tb25cbiAqICAgIF1cbiAqIDUuIFJlbmRlcnMgd2l0aCBlbmhhbmNlZCBoaWdobGlnaHRpbmc6XG4gKiAgICAtIENvbW1vbiBwYXJ0cyBhcmUgc2hvd24gbm9ybWFsbHlcbiAqICAgIC0gUmVtb3ZlZCB3b3JkcyBnZXQgYSBkYXJrZXIgcmVkIGJhY2tncm91bmRcbiAqICAgIC0gQWRkZWQgd29yZHMgZ2V0IGEgZGFya2VyIGdyZWVuIGJhY2tncm91bmRcbiAqXG4gKiBUaGlzIHByb2R1Y2VzIGEgdmlzdWFsbHkgY2xlYXIgZGlmZiB3aGVyZSB1c2VycyBjYW4gc2VlIGV4YWN0bHkgd2hpY2ggd29yZHNcbiAqIGNoYW5nZWQgcmF0aGVyIHRoYW4ganVzdCB3aGljaCBsaW5lcyB3ZXJlIG1vZGlmaWVkLlxuICovXG5cbi8vIERlZmluZSBEaWZmTGluZSBpbnRlcmZhY2UgdG8gYmUgdXNlZCB0aHJvdWdob3V0IHRoZSBmaWxlXG5pbnRlcmZhY2UgRGlmZkxpbmUge1xuICBjb2RlOiBzdHJpbmdcbiAgdHlwZTogJ2FkZCcgfCAncmVtb3ZlJyB8ICdub2NoYW5nZSdcbiAgaTogbnVtYmVyXG4gIG9yaWdpbmFsQ29kZTogc3RyaW5nXG4gIHdvcmREaWZmPzogYm9vbGVhbiAvLyBGbGFnIGZvciB3b3JkLWxldmVsIGRpZmZpbmdcbiAgbWF0Y2hlZExpbmU/OiBEaWZmTGluZVxufVxuXG4vLyBMaW5lIG9iamVjdCB0eXBlIGZvciBpbnRlcm5hbCBmdW5jdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgTGluZU9iamVjdCB7XG4gIGNvZGU6IHN0cmluZ1xuICBpOiBudW1iZXJcbiAgdHlwZTogJ2FkZCcgfCAncmVtb3ZlJyB8ICdub2NoYW5nZSdcbiAgb3JpZ2luYWxDb2RlOiBzdHJpbmdcbiAgd29yZERpZmY/OiBib29sZWFuXG4gIG1hdGNoZWRMaW5lPzogTGluZU9iamVjdFxufVxuXG4vLyBUeXBlIGZvciB3b3JkLWxldmVsIGRpZmYgcGFydHNcbmludGVyZmFjZSBEaWZmUGFydCB7XG4gIGFkZGVkPzogYm9vbGVhblxuICByZW1vdmVkPzogYm9vbGVhblxuICB2YWx1ZTogc3RyaW5nXG59XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHBhdGNoOiBTdHJ1Y3R1cmVkUGF0Y2hIdW5rXG4gIGRpbTogYm9vbGVhblxuICB3aWR0aDogbnVtYmVyXG59XG5cbi8vIFRocmVzaG9sZCBmb3Igd2hlbiB3ZSBzaG93IGEgZnVsbC1saW5lIGRpZmYgaW5zdGVhZCBvZiB3b3JkLWxldmVsIGRpZmZpbmdcbmNvbnN0IENIQU5HRV9USFJFU0hPTEQgPSAwLjRcblxuZXhwb3J0IGZ1bmN0aW9uIFN0cnVjdHVyZWREaWZmRmFsbGJhY2soe1xuICBwYXRjaCxcbiAgZGltLFxuICB3aWR0aCxcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgW3RoZW1lXSA9IHVzZVRoZW1lKClcbiAgY29uc3QgZGlmZiA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZm9ybWF0RGlmZihwYXRjaC5saW5lcywgcGF0Y2gub2xkU3RhcnQsIHdpZHRoLCBkaW0sIHRoZW1lKSxcbiAgICBbcGF0Y2gubGluZXMsIHBhdGNoLm9sZFN0YXJ0LCB3aWR0aCwgZGltLCB0aGVtZV0sXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGZsZXhHcm93PXsxfT5cbiAgICAgIHtkaWZmLm1hcCgobm9kZSwgaSkgPT4gKFxuICAgICAgICA8Qm94IGtleT17aX0+e25vZGV9PC9Cb3g+XG4gICAgICApKX1cbiAgICA8L0JveD5cbiAgKVxufVxuXG4vLyBUcmFuc2Zvcm0gbGluZXMgdG8gbGluZSBvYmplY3RzIHdpdGggdHlwZSBpbmZvcm1hdGlvblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUxpbmVzVG9PYmplY3RzKGxpbmVzOiBzdHJpbmdbXSk6IExpbmVPYmplY3RbXSB7XG4gIHJldHVybiBsaW5lcy5tYXAoY29kZSA9PiB7XG4gICAgaWYgKGNvZGUuc3RhcnRzV2l0aCgnKycpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2RlOiBjb2RlLnNsaWNlKDEpLFxuICAgICAgICBpOiAwLFxuICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgb3JpZ2luYWxDb2RlOiBjb2RlLnNsaWNlKDEpLFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY29kZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvZGU6IGNvZGUuc2xpY2UoMSksXG4gICAgICAgIGk6IDAsXG4gICAgICAgIHR5cGU6ICdyZW1vdmUnLFxuICAgICAgICBvcmlnaW5hbENvZGU6IGNvZGUuc2xpY2UoMSksXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiBjb2RlLnNsaWNlKDEpLFxuICAgICAgaTogMCxcbiAgICAgIHR5cGU6ICdub2NoYW5nZScsXG4gICAgICBvcmlnaW5hbENvZGU6IGNvZGUuc2xpY2UoMSksXG4gICAgfVxuICB9KVxufVxuXG4vLyBHcm91cCBhZGphY2VudCBhZGQvcmVtb3ZlIGxpbmVzIGZvciB3b3JkLWxldmVsIGRpZmZpbmdcbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQWRqYWNlbnRMaW5lcyhsaW5lT2JqZWN0czogTGluZU9iamVjdFtdKTogTGluZU9iamVjdFtdIHtcbiAgY29uc3QgcHJvY2Vzc2VkTGluZXM6IExpbmVPYmplY3RbXSA9IFtdXG4gIGxldCBpID0gMFxuXG4gIHdoaWxlIChpIDwgbGluZU9iamVjdHMubGVuZ3RoKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGxpbmVPYmplY3RzW2ldXG4gICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICBpKytcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gRmluZCBhIHNlcXVlbmNlIG9mIHJlbW92ZSBmb2xsb3dlZCBieSBhZGQgKHBvc3NpYmxlIHdvcmQtbGV2ZWwgZGlmZiBjYW5kaWRhdGVzKVxuICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICBjb25zdCByZW1vdmVMaW5lczogTGluZU9iamVjdFtdID0gW2N1cnJlbnRdXG4gICAgICBsZXQgaiA9IGkgKyAxXG5cbiAgICAgIC8vIENvbGxlY3QgY29uc2VjdXRpdmUgcmVtb3ZlIGxpbmVzXG4gICAgICB3aGlsZSAoaiA8IGxpbmVPYmplY3RzLmxlbmd0aCAmJiBsaW5lT2JqZWN0c1tqXT8udHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGxpbmVPYmplY3RzW2pdXG4gICAgICAgIGlmIChsaW5lKSB7XG4gICAgICAgICAgcmVtb3ZlTGluZXMucHVzaChsaW5lKVxuICAgICAgICB9XG4gICAgICAgIGorK1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYWRkIGxpbmVzIGZvbGxvd2luZyB0aGUgcmVtb3ZlIGxpbmVzXG4gICAgICBjb25zdCBhZGRMaW5lczogTGluZU9iamVjdFtdID0gW11cbiAgICAgIHdoaWxlIChqIDwgbGluZU9iamVjdHMubGVuZ3RoICYmIGxpbmVPYmplY3RzW2pdPy50eXBlID09PSAnYWRkJykge1xuICAgICAgICBjb25zdCBsaW5lID0gbGluZU9iamVjdHNbal1cbiAgICAgICAgaWYgKGxpbmUpIHtcbiAgICAgICAgICBhZGRMaW5lcy5wdXNoKGxpbmUpXG4gICAgICAgIH1cbiAgICAgICAgaisrXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgYm90aCByZW1vdmUgYW5kIGFkZCBsaW5lcywgcGVyZm9ybSB3b3JkLWxldmVsIGRpZmZpbmdcbiAgICAgIGlmIChyZW1vdmVMaW5lcy5sZW5ndGggPiAwICYmIGFkZExpbmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gRm9yIHdvcmQgZGlmZmluZywgd2UnbGwgY29tcGFyZSBlYWNoIHBhaXIgb2YgbGluZXMgb3IgdGhlIGNsb3Nlc3QgYXZhaWxhYmxlIG1hdGNoXG4gICAgICAgIGNvbnN0IHBhaXJDb3VudCA9IE1hdGgubWluKHJlbW92ZUxpbmVzLmxlbmd0aCwgYWRkTGluZXMubGVuZ3RoKVxuXG4gICAgICAgIC8vIEFkZCBwYWlyZWQgbGluZXMgd2l0aCB3b3JkIGRpZmYgaW5mb1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHBhaXJDb3VudDsgaysrKSB7XG4gICAgICAgICAgY29uc3QgcmVtb3ZlTGluZSA9IHJlbW92ZUxpbmVzW2tdXG4gICAgICAgICAgY29uc3QgYWRkTGluZSA9IGFkZExpbmVzW2tdXG5cbiAgICAgICAgICBpZiAocmVtb3ZlTGluZSAmJiBhZGRMaW5lKSB7XG4gICAgICAgICAgICByZW1vdmVMaW5lLndvcmREaWZmID0gdHJ1ZVxuICAgICAgICAgICAgYWRkTGluZS53b3JkRGlmZiA9IHRydWVcblxuICAgICAgICAgICAgLy8gU3RvcmUgdGhlIG1hdGNoZWQgcGFpciBmb3IgbGF0ZXIgd29yZCBkaWZmaW5nXG4gICAgICAgICAgICByZW1vdmVMaW5lLm1hdGNoZWRMaW5lID0gYWRkTGluZVxuICAgICAgICAgICAgYWRkTGluZS5tYXRjaGVkTGluZSA9IHJlbW92ZUxpbmVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYWxsIHJlbW92ZSBsaW5lcyAoYm90aCBwYWlyZWQgYW5kIHVucGFpcmVkKVxuICAgICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKC4uLnJlbW92ZUxpbmVzLmZpbHRlcihCb29sZWFuKSlcblxuICAgICAgICAvLyBUaGVuIGFkZCBhbGwgYWRkIGxpbmVzIChib3RoIHBhaXJlZCBhbmQgdW5wYWlyZWQpXG4gICAgICAgIHByb2Nlc3NlZExpbmVzLnB1c2goLi4uYWRkTGluZXMuZmlsdGVyKEJvb2xlYW4pKVxuXG4gICAgICAgIGkgPSBqIC8vIFNraXAgYWxsIHRoZSBsaW5lcyB3ZSd2ZSBwcm9jZXNzZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIG1hdGNoaW5nIGFkZCBsaW5lcywganVzdCBhZGQgdGhlIGN1cnJlbnQgcmVtb3ZlIGxpbmVcbiAgICAgICAgcHJvY2Vzc2VkTGluZXMucHVzaChjdXJyZW50KVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm90IGEgcmVtb3ZlIGxpbmUsIGp1c3QgYWRkIGl0XG4gICAgICBwcm9jZXNzZWRMaW5lcy5wdXNoKGN1cnJlbnQpXG4gICAgICBpKytcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvY2Vzc2VkTGluZXNcbn1cblxuLy8gQ2FsY3VsYXRlIHdvcmQtbGV2ZWwgZGlmZnMgYmV0d2VlbiB0d28gdGV4dCBzdHJpbmdzXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlV29yZERpZmZzKFxuICBvbGRUZXh0OiBzdHJpbmcsXG4gIG5ld1RleHQ6IHN0cmluZyxcbik6IERpZmZQYXJ0W10ge1xuICAvLyBVc2UgZGlmZldvcmRzV2l0aFNwYWNlIGluc3RlYWQgb2YgZGlmZldvcmRzIHRvIHByZXNlcnZlIHdoaXRlc3BhY2VcbiAgLy8gVGhpcyBlbnN1cmVzIHNwYWNlcyBiZXR3ZWVuIHRva2VucyBsaWtlID4gYW5kIHsgYXJlIHByZXNlcnZlZFxuICBjb25zdCByZXN1bHQgPSBkaWZmV29yZHNXaXRoU3BhY2Uob2xkVGV4dCwgbmV3VGV4dCwgeyBpZ25vcmVDYXNlOiBmYWxzZSB9KVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLy8gUHJvY2VzcyB3b3JkLWxldmVsIGRpZmZzIHdpdGggbWFudWFsIHdyYXBwaW5nIHN1cHBvcnRcbmZ1bmN0aW9uIGdlbmVyYXRlV29yZERpZmZFbGVtZW50cyhcbiAgaXRlbTogRGlmZkxpbmUsXG4gIHdpZHRoOiBudW1iZXIsXG4gIG1heFdpZHRoOiBudW1iZXIsXG4gIGRpbTogYm9vbGVhbixcbiAgb3ZlcnJpZGVUaGVtZT86IFRoZW1lTmFtZSxcbik6IFJlYWN0LlJlYWN0Tm9kZVtdIHwgbnVsbCB7XG4gIGNvbnN0IHsgdHlwZSwgaSwgd29yZERpZmYsIG1hdGNoZWRMaW5lLCBvcmlnaW5hbENvZGUgfSA9IGl0ZW1cblxuICBpZiAoIXdvcmREaWZmIHx8ICFtYXRjaGVkTGluZSkge1xuICAgIHJldHVybiBudWxsIC8vIFRoaXMgZnVuY3Rpb24gb25seSBoYW5kbGVzIHdvcmQtbGV2ZWwgZGlmZiByZW5kZXJpbmdcbiAgfVxuXG4gIGNvbnN0IHJlbW92ZWRMaW5lVGV4dCA9XG4gICAgdHlwZSA9PT0gJ3JlbW92ZScgPyBvcmlnaW5hbENvZGUgOiBtYXRjaGVkTGluZS5vcmlnaW5hbENvZGVcbiAgY29uc3QgYWRkZWRMaW5lVGV4dCA9XG4gICAgdHlwZSA9PT0gJ3JlbW92ZScgPyBtYXRjaGVkTGluZS5vcmlnaW5hbENvZGUgOiBvcmlnaW5hbENvZGVcblxuICBjb25zdCB3b3JkRGlmZnMgPSBjYWxjdWxhdGVXb3JkRGlmZnMocmVtb3ZlZExpbmVUZXh0LCBhZGRlZExpbmVUZXh0KVxuXG4gIC8vIENoZWNrIGlmIHdlIHNob3VsZCB1c2Ugd29yZC1sZXZlbCBkaWZmaW5nXG4gIGNvbnN0IHRvdGFsTGVuZ3RoID0gcmVtb3ZlZExpbmVUZXh0Lmxlbmd0aCArIGFkZGVkTGluZVRleHQubGVuZ3RoXG4gIGNvbnN0IGNoYW5nZWRMZW5ndGggPSB3b3JkRGlmZnNcbiAgICAuZmlsdGVyKHBhcnQgPT4gcGFydC5hZGRlZCB8fCBwYXJ0LnJlbW92ZWQpXG4gICAgLnJlZHVjZSgoc3VtLCBwYXJ0KSA9PiBzdW0gKyBwYXJ0LnZhbHVlLmxlbmd0aCwgMClcbiAgY29uc3QgY2hhbmdlUmF0aW8gPSBjaGFuZ2VkTGVuZ3RoIC8gdG90YWxMZW5ndGhcblxuICBpZiAoY2hhbmdlUmF0aW8gPiBDSEFOR0VfVEhSRVNIT0xEIHx8IGRpbSkge1xuICAgIHJldHVybiBudWxsIC8vIEZhbGwgYmFjayB0byBzdGFuZGFyZCByZW5kZXJpbmcgZm9yIG1ham9yIGNoYW5nZXNcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBhdmFpbGFibGUgd2lkdGggZm9yIGNvbnRlbnRcbiAgY29uc3QgZGlmZlByZWZpeCA9IHR5cGUgPT09ICdhZGQnID8gJysnIDogJy0nXG4gIGNvbnN0IGRpZmZQcmVmaXhXaWR0aCA9IGRpZmZQcmVmaXgubGVuZ3RoXG4gIGNvbnN0IGF2YWlsYWJsZUNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KFxuICAgIDEsXG4gICAgd2lkdGggLSBtYXhXaWR0aCAtIDEgLSBkaWZmUHJlZml4V2lkdGgsXG4gIClcblxuICAvLyBNYW51YWxseSB3cmFwIHRoZSB3b3JkIGRpZmYgcGFydHMgd2l0aCBiZXR0ZXIgc3BhY2UgZWZmaWNpZW5jeVxuICBjb25zdCB3cmFwcGVkTGluZXM6IHsgY29udGVudDogUmVhY3QuUmVhY3ROb2RlW107IGNvbnRlbnRXaWR0aDogbnVtYmVyIH1bXSA9XG4gICAgW11cbiAgbGV0IGN1cnJlbnRMaW5lOiBSZWFjdC5SZWFjdE5vZGVbXSA9IFtdXG4gIGxldCBjdXJyZW50TGluZVdpZHRoID0gMFxuXG4gIHdvcmREaWZmcy5mb3JFYWNoKChwYXJ0LCBwYXJ0SW5kZXgpID0+IHtcbiAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBwYXJ0IHNob3VsZCBiZSBzaG93biBmb3IgdGhpcyBsaW5lIHR5cGVcbiAgICBsZXQgc2hvdWxkU2hvdyA9IGZhbHNlXG4gICAgbGV0IHBhcnRCZ0NvbG9yOiAnZGlmZkFkZGVkV29yZCcgfCAnZGlmZlJlbW92ZWRXb3JkJyB8IHVuZGVmaW5lZFxuXG4gICAgaWYgKHR5cGUgPT09ICdhZGQnKSB7XG4gICAgICBpZiAocGFydC5hZGRlZCkge1xuICAgICAgICBzaG91bGRTaG93ID0gdHJ1ZVxuICAgICAgICBwYXJ0QmdDb2xvciA9ICdkaWZmQWRkZWRXb3JkJ1xuICAgICAgfSBlbHNlIGlmICghcGFydC5yZW1vdmVkKSB7XG4gICAgICAgIHNob3VsZFNob3cgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncmVtb3ZlJykge1xuICAgICAgaWYgKHBhcnQucmVtb3ZlZCkge1xuICAgICAgICBzaG91bGRTaG93ID0gdHJ1ZVxuICAgICAgICBwYXJ0QmdDb2xvciA9ICdkaWZmUmVtb3ZlZFdvcmQnXG4gICAgICB9IGVsc2UgaWYgKCFwYXJ0LmFkZGVkKSB7XG4gICAgICAgIHNob3VsZFNob3cgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFzaG91bGRTaG93KSByZXR1cm5cblxuICAgIC8vIFVzZSB3cmFwVGV4dCB0byB3cmFwIHRoaXMgaW5kaXZpZHVhbCBwYXJ0IGlmIGl0J3MgbG9uZ1xuICAgIGNvbnN0IHBhcnRXcmFwcGVkID0gd3JhcFRleHQocGFydC52YWx1ZSwgYXZhaWxhYmxlQ29udGVudFdpZHRoLCAnd3JhcCcpXG4gICAgY29uc3QgcGFydExpbmVzID0gcGFydFdyYXBwZWQuc3BsaXQoJ1xcbicpXG5cbiAgICBwYXJ0TGluZXMuZm9yRWFjaCgocGFydExpbmUsIGxpbmVJZHgpID0+IHtcbiAgICAgIGlmICghcGFydExpbmUpIHJldHVyblxuXG4gICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHN0YXJ0IGEgbmV3IGxpbmVcbiAgICAgIGlmIChcbiAgICAgICAgbGluZUlkeCA+IDAgfHxcbiAgICAgICAgY3VycmVudExpbmVXaWR0aCArIHN0cmluZ1dpZHRoKHBhcnRMaW5lKSA+IGF2YWlsYWJsZUNvbnRlbnRXaWR0aFxuICAgICAgKSB7XG4gICAgICAgIGlmIChjdXJyZW50TGluZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgd3JhcHBlZExpbmVzLnB1c2goe1xuICAgICAgICAgICAgY29udGVudDogWy4uLmN1cnJlbnRMaW5lXSxcbiAgICAgICAgICAgIGNvbnRlbnRXaWR0aDogY3VycmVudExpbmVXaWR0aCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGN1cnJlbnRMaW5lID0gW11cbiAgICAgICAgICBjdXJyZW50TGluZVdpZHRoID0gMFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnRMaW5lLnB1c2goXG4gICAgICAgIDxUZXh0XG4gICAgICAgICAga2V5PXtgcGFydC0ke3BhcnRJbmRleH0tJHtsaW5lSWR4fWB9XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtwYXJ0QmdDb2xvcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtwYXJ0TGluZX1cbiAgICAgICAgPC9UZXh0PixcbiAgICAgIClcblxuICAgICAgY3VycmVudExpbmVXaWR0aCArPSBzdHJpbmdXaWR0aChwYXJ0TGluZSlcbiAgICB9KVxuICB9KVxuXG4gIGlmIChjdXJyZW50TGluZS5sZW5ndGggPiAwKSB7XG4gICAgd3JhcHBlZExpbmVzLnB1c2goeyBjb250ZW50OiBjdXJyZW50TGluZSwgY29udGVudFdpZHRoOiBjdXJyZW50TGluZVdpZHRoIH0pXG4gIH1cblxuICAvLyBSZW5kZXIgZWFjaCB3cmFwcGVkIGxpbmUgYXMgYSBzZXBhcmF0ZSBUZXh0IGVsZW1lbnRcbiAgcmV0dXJuIHdyYXBwZWRMaW5lcy5tYXAoKHsgY29udGVudCwgY29udGVudFdpZHRoIH0sIGxpbmVJbmRleCkgPT4ge1xuICAgIGNvbnN0IGtleSA9IGAke3R5cGV9LSR7aX0tJHtsaW5lSW5kZXh9YFxuICAgIGNvbnN0IGxpbmVCZ0NvbG9yID1cbiAgICAgIHR5cGUgPT09ICdhZGQnXG4gICAgICAgID8gZGltXG4gICAgICAgICAgPyAnZGlmZkFkZGVkRGltbWVkJ1xuICAgICAgICAgIDogJ2RpZmZBZGRlZCdcbiAgICAgICAgOiBkaW1cbiAgICAgICAgICA/ICdkaWZmUmVtb3ZlZERpbW1lZCdcbiAgICAgICAgICA6ICdkaWZmUmVtb3ZlZCdcbiAgICBjb25zdCBsaW5lTnVtID0gbGluZUluZGV4ID09PSAwID8gaSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IGxpbmVOdW1TdHIgPVxuICAgICAgKGxpbmVOdW0gIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGxpbmVOdW0udG9TdHJpbmcoKS5wYWRTdGFydChtYXhXaWR0aClcbiAgICAgICAgOiAnICcucmVwZWF0KG1heFdpZHRoKSkgKyAnICdcbiAgICAvLyBDYWxjdWxhdGUgcGFkZGluZyB0byBmaWxsIHRoZSBlbnRpcmUgdGVybWluYWwgd2lkdGhcbiAgICBjb25zdCB1c2VkV2lkdGggPSBsaW5lTnVtU3RyLmxlbmd0aCArIGRpZmZQcmVmaXhXaWR0aCArIGNvbnRlbnRXaWR0aFxuICAgIGNvbnN0IHBhZGRpbmcgPSBNYXRoLm1heCgwLCB3aWR0aCAtIHVzZWRXaWR0aClcblxuICAgIHJldHVybiAoXG4gICAgICA8Qm94IGtleT17a2V5fSBmbGV4RGlyZWN0aW9uPVwicm93XCI+XG4gICAgICAgIDxOb1NlbGVjdCBmcm9tTGVmdEVkZ2U+XG4gICAgICAgICAgPFRleHRcbiAgICAgICAgICAgIGNvbG9yPXtvdmVycmlkZVRoZW1lID8gJ3RleHQnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtsaW5lQmdDb2xvcn1cbiAgICAgICAgICAgIGRpbUNvbG9yPXtkaW19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2xpbmVOdW1TdHJ9XG4gICAgICAgICAgICB7ZGlmZlByZWZpeH1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvTm9TZWxlY3Q+XG4gICAgICAgIDxUZXh0XG4gICAgICAgICAgY29sb3I9e292ZXJyaWRlVGhlbWUgPyAndGV4dCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtsaW5lQmdDb2xvcn1cbiAgICAgICAgICBkaW1Db2xvcj17ZGltfVxuICAgICAgICA+XG4gICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgeycgJy5yZXBlYXQocGFkZGluZyl9XG4gICAgICAgIDwvVGV4dD5cbiAgICAgIDwvQm94PlxuICAgIClcbiAgfSlcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGlmZihcbiAgbGluZXM6IHN0cmluZ1tdLFxuICBzdGFydGluZ0xpbmVOdW1iZXI6IG51bWJlcixcbiAgd2lkdGg6IG51bWJlcixcbiAgZGltOiBib29sZWFuLFxuICBvdmVycmlkZVRoZW1lPzogVGhlbWVOYW1lLFxuKTogUmVhY3QuUmVhY3ROb2RlW10ge1xuICAvLyBFbnN1cmUgd2lkdGggaXMgYXQgbGVhc3QgMSB0byBwcmV2ZW50IHJlbmRlcmluZyBpc3N1ZXMgd2l0aCB2ZXJ5IG5hcnJvdyB0ZXJtaW5hbHNcbiAgY29uc3Qgc2FmZVdpZHRoID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcih3aWR0aCkpXG5cbiAgLy8gU3RlcCAxOiBUcmFuc2Zvcm0gbGluZXMgdG8gbGluZSBvYmplY3RzIHdpdGggdHlwZSBpbmZvcm1hdGlvblxuICBjb25zdCBsaW5lT2JqZWN0cyA9IHRyYW5zZm9ybUxpbmVzVG9PYmplY3RzKGxpbmVzKVxuXG4gIC8vIFN0ZXAgMjogR3JvdXAgYWRqYWNlbnQgYWRkL3JlbW92ZSBsaW5lcyBmb3Igd29yZC1sZXZlbCBkaWZmaW5nXG4gIGNvbnN0IHByb2Nlc3NlZExpbmVzID0gcHJvY2Vzc0FkamFjZW50TGluZXMobGluZU9iamVjdHMpXG5cbiAgLy8gU3RlcCAzOiBOdW1iZXIgdGhlIGRpZmYgbGluZXNcbiAgY29uc3QgbHMgPSBudW1iZXJEaWZmTGluZXMocHJvY2Vzc2VkTGluZXMsIHN0YXJ0aW5nTGluZU51bWJlcilcblxuICAvLyBGaW5kIG1heCBsaW5lIG51bWJlciB3aWR0aCBmb3IgYWxpZ25tZW50XG4gIGNvbnN0IG1heExpbmVOdW1iZXIgPSBNYXRoLm1heCguLi5scy5tYXAoKHsgaSB9KSA9PiBpKSwgMClcbiAgY29uc3QgbWF4V2lkdGggPSBNYXRoLm1heChtYXhMaW5lTnVtYmVyLnRvU3RyaW5nKCkubGVuZ3RoICsgMSwgMClcblxuICAvLyBTdGVwIDQ6IFJlbmRlciBmb3JtYXR0aW5nXG4gIHJldHVybiBscy5mbGF0TWFwKChpdGVtKTogUmVhY3QuUmVhY3ROb2RlW10gPT4ge1xuICAgIGNvbnN0IHsgdHlwZSwgY29kZSwgaSwgd29yZERpZmYsIG1hdGNoZWRMaW5lIH0gPSBpdGVtXG5cbiAgICAvLyBIYW5kbGUgd29yZC1sZXZlbCBkaWZmaW5nIGZvciBhZGQvcmVtb3ZlIHBhaXJzXG4gICAgaWYgKHdvcmREaWZmICYmIG1hdGNoZWRMaW5lKSB7XG4gICAgICBjb25zdCB3b3JkRGlmZkVsZW1lbnRzID0gZ2VuZXJhdGVXb3JkRGlmZkVsZW1lbnRzKFxuICAgICAgICBpdGVtLFxuICAgICAgICBzYWZlV2lkdGgsXG4gICAgICAgIG1heFdpZHRoLFxuICAgICAgICBkaW0sXG4gICAgICAgIG92ZXJyaWRlVGhlbWUsXG4gICAgICApXG5cbiAgICAgIC8vIHdvcmQtZGlmZiBtaWdodCByZWZ1c2UgKGUuZy4gZHVlIHRvIGxpbmVzIGJlaW5nIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50KSBpbiB3aGljaFxuICAgICAgLy8gY2FzZSB3ZSdsbCBmYWxsIHRocm91Z2ggdG8gbm9ybWFsIHJlbmRlcmluIGdiZWxvd1xuICAgICAgaWYgKHdvcmREaWZmRWxlbWVudHMgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHdvcmREaWZmRWxlbWVudHNcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTdGFuZGFyZCByZW5kZXJpbmcgZm9yIGxpbmVzIHdpdGhvdXQgd29yZCBkaWZmaW5nIG9yIGFzIGZhbGxiYWNrXG4gICAgLy8gQ2FsY3VsYXRlIGF2YWlsYWJsZSB3aWR0aCBhY2NvdW50aW5nIGZvciBsaW5lIG51bWJlciArIHNwYWNlICsgZGlmZiBwcmVmaXhcbiAgICBjb25zdCBkaWZmUHJlZml4V2lkdGggPSAyIC8vIFwiICBcIiBmb3IgdW5jaGFuZ2VkLCBcIisgXCIgb3IgXCItIFwiIGZvciBjaGFuZ2VzXG4gICAgY29uc3QgYXZhaWxhYmxlQ29udGVudFdpZHRoID0gTWF0aC5tYXgoXG4gICAgICAxLFxuICAgICAgc2FmZVdpZHRoIC0gbWF4V2lkdGggLSAxIC0gZGlmZlByZWZpeFdpZHRoLFxuICAgICkgLy8gLTEgZm9yIHNwYWNlIGFmdGVyIGxpbmUgbnVtYmVyXG4gICAgY29uc3Qgd3JhcHBlZFRleHQgPSB3cmFwVGV4dChjb2RlLCBhdmFpbGFibGVDb250ZW50V2lkdGgsICd3cmFwJylcbiAgICBjb25zdCB3cmFwcGVkTGluZXMgPSB3cmFwcGVkVGV4dC5zcGxpdCgnXFxuJylcblxuICAgIHJldHVybiB3cmFwcGVkTGluZXMubWFwKChsaW5lLCBsaW5lSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke3R5cGV9LSR7aX0tJHtsaW5lSW5kZXh9YFxuICAgICAgY29uc3QgbGluZU51bSA9IGxpbmVJbmRleCA9PT0gMCA/IGkgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGxpbmVOdW1TdHIgPVxuICAgICAgICAobGluZU51bSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBsaW5lTnVtLnRvU3RyaW5nKCkucGFkU3RhcnQobWF4V2lkdGgpXG4gICAgICAgICAgOiAnICcucmVwZWF0KG1heFdpZHRoKSkgKyAnICdcbiAgICAgIGNvbnN0IHNpZ2lsID0gdHlwZSA9PT0gJ2FkZCcgPyAnKycgOiB0eXBlID09PSAncmVtb3ZlJyA/ICctJyA6ICcgJ1xuICAgICAgLy8gQ2FsY3VsYXRlIHBhZGRpbmcgdG8gZmlsbCB0aGUgZW50aXJlIHRlcm1pbmFsIHdpZHRoXG4gICAgICBjb25zdCBjb250ZW50V2lkdGggPSBsaW5lTnVtU3RyLmxlbmd0aCArIDEgKyBzdHJpbmdXaWR0aChsaW5lKSAvLyBsaW5lTnVtICsgc2lnaWwgKyBjb2RlXG4gICAgICBjb25zdCBwYWRkaW5nID0gTWF0aC5tYXgoMCwgc2FmZVdpZHRoIC0gY29udGVudFdpZHRoKVxuXG4gICAgICBjb25zdCBiZ0NvbG9yID1cbiAgICAgICAgdHlwZSA9PT0gJ2FkZCdcbiAgICAgICAgICA/IGRpbVxuICAgICAgICAgICAgPyAnZGlmZkFkZGVkRGltbWVkJ1xuICAgICAgICAgICAgOiAnZGlmZkFkZGVkJ1xuICAgICAgICAgIDogdHlwZSA9PT0gJ3JlbW92ZSdcbiAgICAgICAgICAgID8gZGltXG4gICAgICAgICAgICAgID8gJ2RpZmZSZW1vdmVkRGltbWVkJ1xuICAgICAgICAgICAgICA6ICdkaWZmUmVtb3ZlZCdcbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgIC8vIEd1dHRlciAobGluZSBudW1iZXIgKyBzaWdpbCkgaXMgd3JhcHBlZCBpbiA8Tm9TZWxlY3Q+IHNvIGZ1bGxzY3JlZW5cbiAgICAgIC8vIHRleHQgc2VsZWN0aW9uIHlpZWxkcyBjbGVhbiBjb2RlLiBiZ0NvbG9yIGNhcnJpZXMgYWNyb3NzIGJvdGggYm94ZXNcbiAgICAgIC8vIHNvIHRoZSB2aXN1YWwgY29udGludWl0eSAoc29saWQgcmVkL2dyZWVuIGJhcikgaXMgdW5jaGFuZ2VkLlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEJveCBrZXk9e2tleX0gZmxleERpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgICAgIDxOb1NlbGVjdCBmcm9tTGVmdEVkZ2U+XG4gICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICBjb2xvcj17b3ZlcnJpZGVUaGVtZSA/ICd0ZXh0JyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yPXtiZ0NvbG9yfVxuICAgICAgICAgICAgICBkaW1Db2xvcj17ZGltIHx8IHR5cGUgPT09ICdub2NoYW5nZSd9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtsaW5lTnVtU3RyfVxuICAgICAgICAgICAgICB7c2lnaWx9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9Ob1NlbGVjdD5cbiAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgY29sb3I9e292ZXJyaWRlVGhlbWUgPyAndGV4dCcgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9e2JnQ29sb3J9XG4gICAgICAgICAgICBkaW1Db2xvcj17ZGltfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtsaW5lfVxuICAgICAgICAgICAgeycgJy5yZXBlYXQocGFkZGluZyl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgIClcbiAgICB9KVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyRGlmZkxpbmVzKFxuICBkaWZmOiBMaW5lT2JqZWN0W10sXG4gIHN0YXJ0TGluZTogbnVtYmVyLFxuKTogRGlmZkxpbmVbXSB7XG4gIGxldCBpID0gc3RhcnRMaW5lXG4gIGNvbnN0IHJlc3VsdDogRGlmZkxpbmVbXSA9IFtdXG4gIGNvbnN0IHF1ZXVlID0gWy4uLmRpZmZdXG5cbiAgd2hpbGUgKHF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBjdXJyZW50ID0gcXVldWUuc2hpZnQoKSFcbiAgICBjb25zdCB7IGNvZGUsIHR5cGUsIG9yaWdpbmFsQ29kZSwgd29yZERpZmYsIG1hdGNoZWRMaW5lIH0gPSBjdXJyZW50XG4gICAgY29uc3QgbGluZSA9IHtcbiAgICAgIGNvZGUsXG4gICAgICB0eXBlLFxuICAgICAgaSxcbiAgICAgIG9yaWdpbmFsQ29kZSxcbiAgICAgIHdvcmREaWZmLFxuICAgICAgbWF0Y2hlZExpbmUsXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGNvdW50ZXJzIGJhc2VkIG9uIGNoYW5nZSB0eXBlXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdub2NoYW5nZSc6XG4gICAgICAgIGkrK1xuICAgICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnYWRkJzpcbiAgICAgICAgaSsrXG4gICAgICAgIHJlc3VsdC5wdXNoKGxpbmUpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdyZW1vdmUnOiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGxpbmUpXG4gICAgICAgIGxldCBudW1SZW1vdmVkID0gMFxuICAgICAgICB3aGlsZSAocXVldWVbMF0/LnR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgaSsrXG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IHF1ZXVlLnNoaWZ0KCkhXG4gICAgICAgICAgY29uc3QgeyBjb2RlLCB0eXBlLCBvcmlnaW5hbENvZGUsIHdvcmREaWZmLCBtYXRjaGVkTGluZSB9ID0gY3VycmVudFxuICAgICAgICAgIGNvbnN0IGxpbmUgPSB7XG4gICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBvcmlnaW5hbENvZGUsXG4gICAgICAgICAgICB3b3JkRGlmZixcbiAgICAgICAgICAgIG1hdGNoZWRMaW5lLFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaChsaW5lKVxuICAgICAgICAgIG51bVJlbW92ZWQrK1xuICAgICAgICB9XG4gICAgICAgIGkgLT0gbnVtUmVtb3ZlZFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLGtCQUFrQixFQUFFLEtBQUtDLG1CQUFtQixRQUFRLE1BQU07QUFDbkUsT0FBTyxLQUFLQyxLQUFLLE1BQU0sT0FBTztBQUM5QixTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUMvQixjQUFjQyxTQUFTLFFBQVEsb0JBQW9CO0FBQ25ELFNBQVNDLFdBQVcsUUFBUSwwQkFBMEI7QUFDdEQsU0FBU0MsR0FBRyxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxRQUFRLFFBQVEsY0FBYzs7QUFFdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVQyxRQUFRLENBQUM7RUFD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
diff --git a/restored-src/src/components/StructuredDiff/colorDiff.ts b/restored-src/src/components/StructuredDiff/colorDiff.ts
index d3abaa280..97bdc72a2 100644
--- a/restored-src/src/components/StructuredDiff/colorDiff.ts
+++ b/restored-src/src/components/StructuredDiff/colorDiff.ts
@@ -3,7 +3,7 @@ import {
ColorFile,
getSyntaxTheme as nativeGetSyntaxTheme,
type SyntaxTheme,
-} from 'color-diff-napi'
+} from '../../native-ts/color-diff/index.js'
import { isEnvDefinedFalsy } from '../../utils/envUtils.js'
export type ColorModuleUnavailableReason = 'env'
diff --git a/restored-src/src/entrypoints/sdk/controlTypes.ts b/restored-src/src/entrypoints/sdk/controlTypes.ts
new file mode 100644
index 000000000..336ce12bb
--- /dev/null
+++ b/restored-src/src/entrypoints/sdk/controlTypes.ts
@@ -0,0 +1 @@
+export {}
diff --git a/restored-src/src/entrypoints/sdk/coreTypes.generated.ts b/restored-src/src/entrypoints/sdk/coreTypes.generated.ts
new file mode 100644
index 000000000..336ce12bb
--- /dev/null
+++ b/restored-src/src/entrypoints/sdk/coreTypes.generated.ts
@@ -0,0 +1 @@
+export {}
diff --git a/restored-src/src/entrypoints/sdk/runtimeTypes.ts b/restored-src/src/entrypoints/sdk/runtimeTypes.ts
new file mode 100644
index 000000000..336ce12bb
--- /dev/null
+++ b/restored-src/src/entrypoints/sdk/runtimeTypes.ts
@@ -0,0 +1 @@
+export {}
diff --git a/restored-src/src/entrypoints/sdk/settingsTypes.generated.ts b/restored-src/src/entrypoints/sdk/settingsTypes.generated.ts
new file mode 100644
index 000000000..336ce12bb
--- /dev/null
+++ b/restored-src/src/entrypoints/sdk/settingsTypes.generated.ts
@@ -0,0 +1 @@
+export {}
diff --git a/restored-src/src/entrypoints/sdk/toolTypes.ts b/restored-src/src/entrypoints/sdk/toolTypes.ts
new file mode 100644
index 000000000..336ce12bb
--- /dev/null
+++ b/restored-src/src/entrypoints/sdk/toolTypes.ts
@@ -0,0 +1 @@
+export {}
diff --git a/restored-src/src/ink/components/Box.tsx b/restored-src/src/ink/components/Box.tsx
index 67f2500ff..83b692f3a 100644
--- a/restored-src/src/ink/components/Box.tsx
+++ b/restored-src/src/ink/components/Box.tsx
@@ -1,5 +1,5 @@
import { c as _c } from "react/compiler-runtime";
-import '../global.d.ts';
+import type {} from '../global.d.ts';
import React, { type PropsWithChildren, type Ref } from 'react';
import type { Except } from 'type-fest';
import type { DOMElement } from '../dom.js';
@@ -211,4 +211,4 @@ function Box(t0) {
return t4;
}
export default Box;
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlByb3BzV2l0aENoaWxkcmVuIiwiUmVmIiwiRXhjZXB0IiwiRE9NRWxlbWVudCIsIkNsaWNrRXZlbnQiLCJGb2N1c0V2ZW50IiwiS2V5Ym9hcmRFdmVudCIsIlN0eWxlcyIsIndhcm4iLCJQcm9wcyIsInJlZiIsInRhYkluZGV4IiwiYXV0b0ZvY3VzIiwib25DbGljayIsImV2ZW50Iiwib25Gb2N1cyIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyIiwib25CbHVyQ2FwdHVyZSIsIm9uS2V5RG93biIsIm9uS2V5RG93bkNhcHR1cmUiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJCb3giLCJ0MCIsIiQiLCJfYyIsImNoaWxkcmVuIiwiZmxleERpcmVjdGlvbiIsImZsZXhHcm93IiwiZmxleFNocmluayIsImZsZXhXcmFwIiwic3R5bGUiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJ0MTUiLCJ0MTYiLCJ0MTciLCJ0MTgiLCJ1bmRlZmluZWQiLCJpZk5vdEludGVnZXIiLCJtYXJnaW4iLCJtYXJnaW5YIiwibWFyZ2luWSIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInBhZGRpbmciLCJwYWRkaW5nWCIsInBhZGRpbmdZIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsImdhcCIsImNvbHVtbkdhcCIsInJvd0dhcCIsIm92ZXJmbG93WCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIl0sInNvdXJjZXMiOlsiQm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uL2dsb2JhbC5kLnRzJ1xuaW1wb3J0IFJlYWN0LCB7IHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEV4Y2VwdCB9IGZyb20gJ3R5cGUtZmVzdCdcbmltcG9ydCB0eXBlIHsgRE9NRWxlbWVudCB9IGZyb20gJy4uL2RvbS5qcydcbmltcG9ydCB0eXBlIHsgQ2xpY2tFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9jbGljay1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgRm9jdXNFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9mb2N1cy1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzLmpzJ1xuaW1wb3J0ICogYXMgd2FybiBmcm9tICcuLi93YXJuLmpzJ1xuXG5leHBvcnQgdHlwZSBQcm9wcyA9IEV4Y2VwdDxTdHlsZXMsICd0ZXh0V3JhcCc+ICYge1xuICByZWY/OiBSZWY8RE9NRWxlbWVudD5cbiAgLyoqXG4gICAqIFRhYiBvcmRlciBpbmRleC4gTm9kZXMgd2l0aCBgdGFiSW5kZXggPj0gMGAgcGFydGljaXBhdGUgaW5cbiAgICogVGFiL1NoaWZ0K1RhYiBjeWNsaW5nOyBgLTFgIG1lYW5zIHByb2dyYW1tYXRpY2FsbHkgZm9jdXNhYmxlIG9ubHkuXG4gICAqL1xuICB0YWJJbmRleD86IG51bWJlclxuICAvKipcbiAgICogRm9jdXMgdGhpcyBlbGVtZW50IHdoZW4gaXQgbW91bnRzLiBMaWtlIHRoZSBIVE1MIGBhdXRvZm9jdXNgXG4gICAqIGF0dHJpYnV0ZSDigJQgdGhlIEZvY3VzTWFuYWdlciBjYWxscyBgZm9jdXMobm9kZSlgIGR1cmluZyB0aGVcbiAgICogcmVjb25jaWxlcidzIGBjb21taXRNb3VudGAgcGhhc2UuXG4gICAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuXG4gIC8qKlxuICAgKiBGaXJlZCBvbiBsZWZ0LWJ1dHRvbiBjbGljayAocHJlc3MgKyByZWxlYXNlIHdpdGhvdXQgZHJhZykuIE9ubHkgd29ya3NcbiAgICogaW5zaWRlIGA8QWx0ZXJuYXRlU2NyZWVuPmAgd2hlcmUgbW91c2UgdHJhY2tpbmcgaXMgZW5hYmxlZCDigJQgbm8tb3BcbiAgICogb3RoZXJ3aXNlLiBUaGUgZXZlbnQgYnViYmxlcyBmcm9tIHRoZSBkZWVwZXN0IGhpdCBCb3ggdXAgdGhyb3VnaFxuICAgKiBhbmNlc3RvcnM7IGNhbGwgYGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpYCB0byBzdG9wIGJ1YmJsaW5nLlxuICAgKi9cbiAgb25DbGljaz86IChldmVudDogQ2xpY2tFdmVudCkgPT4gdm9pZFxuICBvbkZvY3VzPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkXG4gIG9uRm9jdXNDYXB0dXJlPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkXG4gIG9uQmx1cj86IChldmVudDogRm9jdXNFdmVudCkgPT4gdm9pZFxuICBvbkJsdXJDYXB0dXJlPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkXG4gIG9uS2V5RG93bj86IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZFxuICBvbktleURvd25DYXB0dXJlPzogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBtb3VzZSBtb3ZlcyBpbnRvIHRoaXMgQm94J3MgcmVuZGVyZWQgcmVjdC4gTGlrZSBET01cbiAgICogYG1vdXNlZW50ZXJgLCBkb2VzIE5PVCBidWJibGUg4oCUIG1vdmluZyBiZXR3ZWVuIGNoaWxkcmVuIGRvZXMgbm90XG4gICAqIHJlLWZpcmUgb24gdGhlIHBhcmVudC4gT25seSB3b3JrcyBpbnNpZGUgYDxBbHRlcm5hdGVTY3JlZW4+YCB3aGVyZVxuICAgKiBtb2RlLTEwMDMgbW91c2UgdHJhY2tpbmcgaXMgZW5hYmxlZC5cbiAgICovXG4gIG9uTW91c2VFbnRlcj86ICgpID0+IHZvaWRcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIG1vdXNlIG1vdmVzIG91dCBvZiB0aGlzIEJveCdzIHJlbmRlcmVkIHJlY3QuICovXG4gIG9uTW91c2VMZWF2ZT86ICgpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBgPEJveD5gIGlzIGFuIGVzc2VudGlhbCBJbmsgY29tcG9uZW50IHRvIGJ1aWxkIHlvdXIgbGF5b3V0LiBJdCdzIGxpa2UgYDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+YCBpbiB0aGUgYnJvd3Nlci5cbiAqL1xuZnVuY3Rpb24gQm94KHtcbiAgY2hpbGRyZW4sXG4gIGZsZXhXcmFwID0gJ25vd3JhcCcsXG4gIGZsZXhEaXJlY3Rpb24gPSAncm93JyxcbiAgZmxleEdyb3cgPSAwLFxuICBmbGV4U2hyaW5rID0gMSxcbiAgcmVmLFxuICB0YWJJbmRleCxcbiAgYXV0b0ZvY3VzLFxuICBvbkNsaWNrLFxuICBvbkZvY3VzLFxuICBvbkZvY3VzQ2FwdHVyZSxcbiAgb25CbHVyLFxuICBvbkJsdXJDYXB0dXJlLFxuICBvbk1vdXNlRW50ZXIsXG4gIG9uTW91c2VMZWF2ZSxcbiAgb25LZXlEb3duLFxuICBvbktleURvd25DYXB0dXJlLFxuICAuLi5zdHlsZVxufTogUHJvcHNXaXRoQ2hpbGRyZW48UHJvcHM+KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgLy8gV2FybiBpZiBzcGFjaW5nIHZhbHVlcyBhcmUgbm90IGludGVnZXJzIHRvIHByZXZlbnQgZnJhY3Rpb25hbCBsYXlvdXQgZGltZW5zaW9uc1xuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5tYXJnaW4sICdtYXJnaW4nKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5tYXJnaW5YLCAnbWFyZ2luWCcpXG4gIHdhcm4uaWZOb3RJbnRlZ2VyKHN0eWxlLm1hcmdpblksICdtYXJnaW5ZJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUubWFyZ2luVG9wLCAnbWFyZ2luVG9wJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUubWFyZ2luQm90dG9tLCAnbWFyZ2luQm90dG9tJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUubWFyZ2luTGVmdCwgJ21hcmdpbkxlZnQnKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5tYXJnaW5SaWdodCwgJ21hcmdpblJpZ2h0JylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZywgJ3BhZGRpbmcnKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5wYWRkaW5nWCwgJ3BhZGRpbmdYJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZ1ksICdwYWRkaW5nWScpXG4gIHdhcm4uaWZOb3RJbnRlZ2VyKHN0eWxlLnBhZGRpbmdUb3AsICdwYWRkaW5nVG9wJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZ0JvdHRvbSwgJ3BhZGRpbmdCb3R0b20nKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5wYWRkaW5nTGVmdCwgJ3BhZGRpbmdMZWZ0JylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZ1JpZ2h0LCAncGFkZGluZ1JpZ2h0JylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUuZ2FwLCAnZ2FwJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUuY29sdW1uR2FwLCAnY29sdW1uR2FwJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucm93R2FwLCAncm93R2FwJylcblxuICByZXR1cm4gKFxuICAgIDxpbmstYm94XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICBvbkZvY3VzQ2FwdHVyZT17b25Gb2N1c0NhcHR1cmV9XG4gICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgIG9uQmx1ckNhcHR1cmU9e29uQmx1ckNhcHR1cmV9XG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIG9uTW91c2VMZWF2ZT17b25Nb3VzZUxlYXZlfVxuICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICBvbktleURvd25DYXB0dXJlPXtvbktleURvd25DYXB0dXJlfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgZmxleFdyYXAsXG4gICAgICAgIGZsZXhEaXJlY3Rpb24sXG4gICAgICAgIGZsZXhHcm93LFxuICAgICAgICBmbGV4U2hyaW5rLFxuICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgb3ZlcmZsb3dYOiBzdHlsZS5vdmVyZmxvd1ggPz8gc3R5bGUub3ZlcmZsb3cgPz8gJ3Zpc2libGUnLFxuICAgICAgICBvdmVyZmxvd1k6IHN0eWxlLm92ZXJmbG93WSA/PyBzdHlsZS5vdmVyZmxvdyA/PyAndmlzaWJsZScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2luay1ib3g+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQm94XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGdCQUFnQjtBQUN2QixPQUFPQSxLQUFLLElBQUksS0FBS0MsaUJBQWlCLEVBQUUsS0FBS0MsR0FBRyxRQUFRLE9BQU87QUFDL0QsY0FBY0MsTUFBTSxRQUFRLFdBQVc7QUFDdkMsY0FBY0MsVUFBVSxRQUFRLFdBQVc7QUFDM0MsY0FBY0MsVUFBVSxRQUFRLDBCQUEwQjtBQUMxRCxjQUFjQyxVQUFVLFFBQVEsMEJBQTBCO0FBQzFELGNBQWNDLGFBQWEsUUFBUSw2QkFBNkI7QUFDaEUsY0FBY0MsTUFBTSxRQUFRLGNBQWM7QUFDMUMsT0FBTyxLQUFLQyxJQUFJLE1BQU0sWUFBWTtBQUVsQyxPQUFPLEtBQUtDLEtBQUssR0FBR1AsTUFBTSxDQUFDSyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUc7RUFDL0NHLEdBQUcsQ0FBQyxFQUFFVCxHQUFHLENBQUNFLFVBQVUsQ0FBQztFQUNyQjtBQUNGO0FBQ0E7QUFDQTtFQUNFUSxRQUFRLENBQUMsRUFBRSxNQUFNO0VBQ2pCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsU0FBUyxDQUFDLEVBQUUsT0FBTztFQUNu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
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlByb3BzV2l0aENoaWxkcmVuIiwiUmVmIiwiRXhjZXB0IiwiRE9NRWxlbWVudCIsIkNsaWNrRXZlbnQiLCJGb2N1c0V2ZW50IiwiS2V5Ym9hcmRFdmVudCIsIlN0eWxlcyIsIndhcm4iLCJQcm9wcyIsInJlZiIsInRhYkluZGV4IiwiYXV0b0ZvY3VzIiwib25DbGljayIsImV2ZW50Iiwib25Gb2N1cyIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyIiwib25CbHVyQ2FwdHVyZSIsIm9uS2V5RG93biIsIm9uS2V5RG93bkNhcHR1cmUiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJCb3giLCJ0MCIsIiQiLCJfYyIsImNoaWxkcmVuIiwiZmxleERpcmVjdGlvbiIsImZsZXhHcm93IiwiZmxleFNocmluayIsImZsZXhXcmFwIiwic3R5bGUiLCJ0MSIsInQyIiwidDMiLCJ0NCIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJ0MTMiLCJ0MTQiLCJ0MTUiLCJ0MTYiLCJ0MTciLCJ0MTgiLCJ1bmRlZmluZWQiLCJpZk5vdEludGVnZXIiLCJtYXJnaW4iLCJtYXJnaW5YIiwibWFyZ2luWSIsIm1hcmdpblRvcCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsInBhZGRpbmciLCJwYWRkaW5nWCIsInBhZGRpbmdZIiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsImdhcCIsImNvbHVtbkdhcCIsInJvd0dhcCIsIm92ZXJmbG93WCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIl0sInNvdXJjZXMiOlsiQm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4uL2dsb2JhbC5kLnRzJ1xuaW1wb3J0IFJlYWN0LCB7IHR5cGUgUHJvcHNXaXRoQ2hpbGRyZW4sIHR5cGUgUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEV4Y2VwdCB9IGZyb20gJ3R5cGUtZmVzdCdcbmltcG9ydCB0eXBlIHsgRE9NRWxlbWVudCB9IGZyb20gJy4uL2RvbS5qcydcbmltcG9ydCB0eXBlIHsgQ2xpY2tFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9jbGljay1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgRm9jdXNFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9mb2N1cy1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzLmpzJ1xuaW1wb3J0ICogYXMgd2FybiBmcm9tICcuLi93YXJuLmpzJ1xuXG5leHBvcnQgdHlwZSBQcm9wcyA9IEV4Y2VwdDxTdHlsZXMsICd0ZXh0V3JhcCc+ICYge1xuICByZWY/OiBSZWY8RE9NRWxlbWVudD5cbiAgLyoqXG4gICAqIFRhYiBvcmRlciBpbmRleC4gTm9kZXMgd2l0aCBgdGFiSW5kZXggPj0gMGAgcGFydGljaXBhdGUgaW5cbiAgICogVGFiL1NoaWZ0K1RhYiBjeWNsaW5nOyBgLTFgIG1lYW5zIHByb2dyYW1tYXRpY2FsbHkgZm9jdXNhYmxlIG9ubHkuXG4gICAqL1xuICB0YWJJbmRleD86IG51bWJlclxuICAvKipcbiAgICogRm9jdXMgdGhpcyBlbGVtZW50IHdoZW4gaXQgbW91bnRzLiBMaWtlIHRoZSBIVE1MIGBhdXRvZm9jdXNgXG4gICAqIGF0dHJpYnV0ZSDigJQgdGhlIEZvY3VzTWFuYWdlciBjYWxscyBgZm9jdXMobm9kZSlgIGR1cmluZyB0aGVcbiAgICogcmVjb25jaWxlcidzIGBjb21taXRNb3VudGAgcGhhc2UuXG4gICAqL1xuICBhdXRvRm9jdXM/OiBib29sZWFuXG4gIC8qKlxuICAgKiBGaXJlZCBvbiBsZWZ0LWJ1dHRvbiBjbGljayAocHJlc3MgKyByZWxlYXNlIHdpdGhvdXQgZHJhZykuIE9ubHkgd29ya3NcbiAgICogaW5zaWRlIGA8QWx0ZXJuYXRlU2NyZWVuPmAgd2hlcmUgbW91c2UgdHJhY2tpbmcgaXMgZW5hYmxlZCDigJQgbm8tb3BcbiAgICogb3RoZXJ3aXNlLiBUaGUgZXZlbnQgYnViYmxlcyBmcm9tIHRoZSBkZWVwZXN0IGhpdCBCb3ggdXAgdGhyb3VnaFxuICAgKiBhbmNlc3RvcnM7IGNhbGwgYGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpYCB0byBzdG9wIGJ1YmJsaW5nLlxuICAgKi9cbiAgb25DbGljaz86IChldmVudDogQ2xpY2tFdmVudCkgPT4gdm9pZFxuICBvbkZvY3VzPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkXG4gIG9uRm9jdXNDYXB0dXJlPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkXG4gIG9uQmx1cj86IChldmVudDogRm9jdXNFdmVudCkgPT4gdm9pZFxuICBvbkJsdXJDYXB0dXJlPzogKGV2ZW50OiBGb2N1c0V2ZW50KSA9PiB2b2lkXG4gIG9uS2V5RG93bj86IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZFxuICBvbktleURvd25DYXB0dXJlPzogKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB2b2lkXG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBtb3VzZSBtb3ZlcyBpbnRvIHRoaXMgQm94J3MgcmVuZGVyZWQgcmVjdC4gTGlrZSBET01cbiAgICogYG1vdXNlZW50ZXJgLCBkb2VzIE5PVCBidWJibGUg4oCUIG1vdmluZyBiZXR3ZWVuIGNoaWxkcmVuIGRvZXMgbm90XG4gICAqIHJlLWZpcmUgb24gdGhlIHBhcmVudC4gT25seSB3b3JrcyBpbnNpZGUgYDxBbHRlcm5hdGVTY3JlZW4+YCB3aGVyZVxuICAgKiBtb2RlLTEwMDMgbW91c2UgdHJhY2tpbmcgaXMgZW5hYmxlZC5cbiAgICovXG4gIG9uTW91c2VFbnRlcj86ICgpID0+IHZvaWRcbiAgLyoqIEZpcmVkIHdoZW4gdGhlIG1vdXNlIG1vdmVzIG91dCBvZiB0aGlzIEJveCdzIHJlbmRlcmVkIHJlY3QuICovXG4gIG9uTW91c2VMZWF2ZT86ICgpID0+IHZvaWRcbn1cblxuLyoqXG4gKiBgPEJveD5gIGlzIGFuIGVzc2VudGlhbCBJbmsgY29tcG9uZW50IHRvIGJ1aWxkIHlvdXIgbGF5b3V0LiBJdCdzIGxpa2UgYDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4XCI+YCBpbiB0aGUgYnJvd3Nlci5cbiAqL1xuZnVuY3Rpb24gQm94KHtcbiAgY2hpbGRyZW4sXG4gIGZsZXhXcmFwID0gJ25vd3JhcCcsXG4gIGZsZXhEaXJlY3Rpb24gPSAncm93JyxcbiAgZmxleEdyb3cgPSAwLFxuICBmbGV4U2hyaW5rID0gMSxcbiAgcmVmLFxuICB0YWJJbmRleCxcbiAgYXV0b0ZvY3VzLFxuICBvbkNsaWNrLFxuICBvbkZvY3VzLFxuICBvbkZvY3VzQ2FwdHVyZSxcbiAgb25CbHVyLFxuICBvbkJsdXJDYXB0dXJlLFxuICBvbk1vdXNlRW50ZXIsXG4gIG9uTW91c2VMZWF2ZSxcbiAgb25LZXlEb3duLFxuICBvbktleURvd25DYXB0dXJlLFxuICAuLi5zdHlsZVxufTogUHJvcHNXaXRoQ2hpbGRyZW48UHJvcHM+KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgLy8gV2FybiBpZiBzcGFjaW5nIHZhbHVlcyBhcmUgbm90IGludGVnZXJzIHRvIHByZXZlbnQgZnJhY3Rpb25hbCBsYXlvdXQgZGltZW5zaW9uc1xuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5tYXJnaW4sICdtYXJnaW4nKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5tYXJnaW5YLCAnbWFyZ2luWCcpXG4gIHdhcm4uaWZOb3RJbnRlZ2VyKHN0eWxlLm1hcmdpblksICdtYXJnaW5ZJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUubWFyZ2luVG9wLCAnbWFyZ2luVG9wJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUubWFyZ2luQm90dG9tLCAnbWFyZ2luQm90dG9tJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUubWFyZ2luTGVmdCwgJ21hcmdpbkxlZnQnKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5tYXJnaW5SaWdodCwgJ21hcmdpblJpZ2h0JylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZywgJ3BhZGRpbmcnKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5wYWRkaW5nWCwgJ3BhZGRpbmdYJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZ1ksICdwYWRkaW5nWScpXG4gIHdhcm4uaWZOb3RJbnRlZ2VyKHN0eWxlLnBhZGRpbmdUb3AsICdwYWRkaW5nVG9wJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZ0JvdHRvbSwgJ3BhZGRpbmdCb3R0b20nKVxuICB3YXJuLmlmTm90SW50ZWdlcihzdHlsZS5wYWRkaW5nTGVmdCwgJ3BhZGRpbmdMZWZ0JylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucGFkZGluZ1JpZ2h0LCAncGFkZGluZ1JpZ2h0JylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUuZ2FwLCAnZ2FwJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUuY29sdW1uR2FwLCAnY29sdW1uR2FwJylcbiAgd2Fybi5pZk5vdEludGVnZXIoc3R5bGUucm93R2FwLCAncm93R2FwJylcblxuICByZXR1cm4gKFxuICAgIDxpbmstYm94XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgIGF1dG9Gb2N1cz17YXV0b0ZvY3VzfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICBvbkZvY3VzQ2FwdHVyZT17b25Gb2N1c0NhcHR1cmV9XG4gICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgIG9uQmx1ckNhcHR1cmU9e29uQmx1ckNhcHR1cmV9XG4gICAgICBvbk1vdXNlRW50ZXI9e29uTW91c2VFbnRlcn1cbiAgICAgIG9uTW91c2VMZWF2ZT17b25Nb3VzZUxlYXZlfVxuICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICBvbktleURvd25DYXB0dXJlPXtvbktleURvd25DYXB0dXJlfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgZmxleFdyYXAsXG4gICAgICAgIGZsZXhEaXJlY3Rpb24sXG4gICAgICAgIGZsZXhHcm93LFxuICAgICAgICBmbGV4U2hyaW5rLFxuICAgICAgICAuLi5zdHlsZSxcbiAgICAgICAgb3ZlcmZsb3dYOiBzdHlsZS5vdmVyZmxvd1ggPz8gc3R5bGUub3ZlcmZsb3cgPz8gJ3Zpc2libGUnLFxuICAgICAgICBvdmVyZmxvd1k6IHN0eWxlLm92ZXJmbG93WSA/PyBzdHlsZS5vdmVyZmxvdyA/PyAndmlzaWJsZScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2luay1ib3g+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQm94XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLGdCQUFnQjtBQUN2QixPQUFPQSxLQUFLLElBQUksS0FBS0MsaUJBQWlCLEVBQUUsS0FBS0MsR0FBRyxRQUFRLE9BQU87QUFDL0QsY0FBY0MsTUFBTSxRQUFRLFdBQVc7QUFDdkMsY0FBY0MsVUFBVSxRQUFRLFdBQVc7QUFDM0MsY0FBY0MsVUFBVSxRQUFRLDBCQUEwQjtBQUMxRCxjQUFjQyxVQUFVLFFBQVEsMEJBQTBCO0FBQzFELGNBQWNDLGFBQWEsUUFBUSw2QkFBNkI7QUFDaEUsY0FBY0MsTUFBTSxRQUFRLGNBQWM7QUFDMUMsT0FBTyxLQUFLQyxJQUFJLE1BQU0sWUFBWTtBQUVsQyxPQUFPLEtBQUtDLEtBQUssR0FBR1AsTUFBTSxDQUFDSyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUc7RUFDL0NHLEdBQUcsQ0FBQyxFQUFFVCxHQUFHLENBQUNFLFVBQVUsQ0FBQztFQUNyQjtBQUNGO0FBQ0E7QUFDQTtFQUNFUSxRQUFRLENBQUMsRUFBRSxNQUFNO0VBQ2pCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsU0FBUyxDQUFDLEVBQUUsT0FBTztFQUNuQjtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsT0FBTyxDQUFDLEVBQUUsQ0FBQ0MsS0FBSyxFQUFFVixVQUFVLEVBQUUsR0FBRyxJQUFJO0VBQ3JDVyxPQUFPLENBQUMsRUFBRSxDQUFDRCxLQUFLLEVBQUVULFVBQVUsRUFBRSxHQUFHLElBQUk7RUFDckNXLGNBQWMsQ0FBQyxFQUFFLENBQUNGLEtBQUssRUFBRVQsVUFBVSxFQUFFLEdBQUcsSUFBSTtFQUM1Q1ksTUFBTSxDQUFDLEVBQUUsQ0FBQ0gsS0FBSyxFQUFFVCxVQUFVLEVBQUUsR0FBRyxJQUFJO0VBQ3BDYSxhQUFhLENBQUMsRUFBRSxDQUFDSixLQUFLLEVBQUVULFVBQVUsRUFBRSxHQUFHLElBQUk7RUFDM0NjLFNBQVMsQ0FBQyxFQUFFLENBQUNMLEtBQUssRUFBRVIsYUFBYSxFQUFFLEdBQUcsSUFBSTtFQUMxQ2MsZ0JBQWdCLENBQUMsRUFBRSxDQUFDTixLQUFLLEVBQUVSLGFBQWEsRUFBRSxHQUFHLElBQUk7RUFDakQ7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VlLFlBQVksQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJO0VBQ3pCO0VBQ0FDLFlBQVksQ0FBQyxFQUFFLEdBQUcsR0FBRyxJQUFJO0FBQzNCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsU0FBQUMsSUFBQUMsRUFBQTtFQUFBLE1BQUFDLENBQUEsR0FBQUMsRUFBQTtFQUFBLElBQUFkLFNBQUE7RUFBQSxJQUFBZSxRQUFBO0VBQUEsSUFBQUMsYUFBQTtFQUFBLElBQUFDLFFBQUE7RUFBQSxJQUFBQyxVQUFBO0VBQUEsSUFBQUMsUUFBQTtFQUFBLElBQUFkLE1BQUE7RUFBQSxJQUFBQyxhQUFBO0VBQUEsSUFBQUwsT0FBQTtFQUFBLElBQUFFLE9BQUE7RUFBQSxJQUFBQyxjQUFBO0VBQUEsSUFBQUcsU0FBQTtFQUFBLElBQUFDLGdCQUFBO0VBQUEsSUFBQUMsWUFBQTtFQUFBLElBQUFDLFlBQUE7RUFBQSxJQUFBWixHQUFBO0VBQUEsSUFBQXNCLEtBQUE7RUFBQSxJQUFBckIsUUFBQTtFQUFBLElBQUFjLENBQUEsUUFBQUQsRUFBQTtJQUFhO01BQUFHLFFBQUEsRUFBQU0sRUFBQTtNQUFBRixRQUFBLEVBQUFHLEVBQUE7TUFBQU4sYUFBQSxFQUFBTyxFQUFBO01BQUFOLFFBQUEsRUFBQU8sRUFBQTtNQUFBTixVQUFBLEVBQUFPLEVBQUE7TUFBQTNCLEdBQUEsRUFBQTRCLEVBQUE7TUFBQTNCLFFBQUEsRUFBQTRCLEVBQUE7TUFBQTNCLFNBQUEsRUFBQTRCLEVBQUE7TUFBQTNCLE9BQUEsRUFBQTRCLEVBQUE7TUFBQTFCLE9BQUEsRUFBQTJCLEdBQUE7TUFBQTFCLGNBQUEsRUFBQTJCLEdBQUE7TUFBQTFCLE1BQUEsRUFBQTJCLEdBQUE7TUFBQTFCLGFBQUEsRUFBQTJCLEdBQUE7TUFBQXhCLFlBQUEsRUFBQXlCLEdBQUE7TUFBQXhCLFlBQUEsRUFBQXlCLEdBQUE7TUFBQTVCLFNBQUEsRUFBQTZCLEdBQUE7TUFBQTVCLGdCQUFBLEVBQUE2QixHQUFBO01BQUEsR0FBQUM7SUFBQSxJQUFBMUIsRUFtQmM7SUFuQmRHLFFBQUEsR0FBQU0sRUFBQTtJQUFBdkIsR0FBQSxHQUFBNEIsRUFBQTtJQUFBM0IsUUFBQSxHQUFBNEIsRUFBQTtJQUFBM0IsU0FBQSxHQUFBNEIsRUFBQTtJQUFBM0IsT0FBQSxHQUFBNEIsRUFBQTtJQUFBMUIsT0FBQSxHQUFBMkIsR0FBQTtJQUFBMUIsY0FBQSxHQUFBMkIsR0FBQTtJQUFBMUIsTUFBQSxHQUFBMkIsR0FBQTtJQUFBMUIsYUFBQSxHQUFBMkIsR0FBQTtJQUFBeEIsWUFBQSxHQUFBeUIsR0FBQTtJQUFBeEIsWUFBQSxHQUFBeUIsR0FBQTtJQUFBNUIsU0FBQSxHQUFBNkIsR0FBQTtJQUFBNUIsZ0JBQUEsR0FBQTZCLEdBQUE7SUFBQWpCLEtBQUEsR0FBQWtCLEdBQUE7SUFFWG5CLFFBQUEsR0FBQUcsRUFBbUIsS0FBbkJpQixTQUFtQixHQUFuQixRQUFtQixHQUFuQmpCLEVBQW1CO0lBQ25CTixhQUFBLEdBQUFPLEVBQXFCLEtBQXJCZ0IsU0FBcUIsR0FBckIsS0FBcUIsR0FBckJoQixFQUFxQjtJQUNyQk4sUUFBQSxHQUFBTyxFQUFZLEtBQVplLFNBQVksR0FBWixDQUFZLEdBQVpmLEVBQVk7SUFDWk4sVUFBQSxHQUFBTyxFQUFjLEtBQWRjLFNBQWMsR0FBZCxDQUFjLEdBQWRkLEVBQWM7SUFnQmQ3QixJQUFJLENBQUE0QyxZQUFhLENBQUNwQixLQUFLLENBQUFxQixNQUFPLEVBQUUsUUFBUSxDQUFDO0lBQ3pDN0MsSUFBSSxDQUFBNEMsWUFBYSxDQUFDcEIsS0FBSyxDQUFBc0IsT0FBUSxFQUFFLFNBQVMsQ0FBQztJQUMzQzlDLElBQUksQ0FBQTRDLFlBQWEsQ0FBQ3BCLEtBQUssQ0FBQXVCLE9BQVEsRUFBRSxTQUFTLENBQUM7SUFDM0MvQyxJQUFJLENBQUE0QyxZQUFhLENBQUNwQixLQUFLLENBQUF3QixTQUFVLEVBQUUsV0FBVyxDQUFDO0lBQy9DaEQsSUFBSSxDQUFBNEMsWUFBYSxDQUFDcEIsS0FBSyxDQUFBeUIsWUFBYSxFQUFFLGNBQWMsQ0FBQztJQUNyRGpELElBQUksQ0FBQTRDLFlBQWEsQ0FBQ3BCLEtBQUssQ0FBQTBCLFVBQVcsRUFBRSxZQUFZLENBQUM7SUFDakRsRCxJQUFJLENBQUE0QyxZQUFhLENBQUNwQixLQUFLLENBQUEyQixXQUFZLEVBQUUsYUFBYSxDQUFDO0lBQ25EbkQsSUFBSSxDQUFBNEMsWUFBYSxDQUFDcEIsS0FBSyxDQUFBNEIsT0FBUSxFQUFFLFNBQVMsQ0FBQztJQUMzQ3BELElBQUksQ0FBQTRDLFlBQWEsQ0FBQ3BCLEtBQUssQ0FBQTZCLFFBQVMsRUFBRSxVQUFVLENBQUM7SUFDN0NyRCxJQUFJLENBQUE0QyxZQUFhLENBQUNwQixLQUFLLENBQUE4QixRQUFTLEVBQUUsVUFBVSxDQUFDO0lBQzdDdEQsSUFBSSxDQUFBNEMsWUFBYSxDQUFDcEIsS0FBSyxDQUFBK0IsVUFBVyxFQUFFLFlBQVksQ0FBQztJQUNqRHZELElBQUksQ0FBQTRDLFlBQWEsQ0FBQ3BCLEtBQUssQ0FBQWdDLGFBQWMsRUFBRSxlQUFlLENBQUM7SUFDdkR4RCxJQUFJLENBQUE0QyxZQUFhLENBQUNwQixLQUFLLENBQUFpQyxXQUFZLEVBQUUsYUFBYSxDQUFDO0lBQ25EekQsSUFBSSxDQUFBNEMsWUFBYSxDQUFDcEIsS0FBSyxDQUFBa0MsWUFBYSxFQUFFLGNBQWMsQ0FBQztJQUNyRDFELElBQUksQ0FBQTRDLFlBQWEsQ0FBQ3BCLEtBQUssQ0FBQW1DLEdBQUksRUFBRSxLQUFLLENBQUM7SUFDbkMzRCxJQUFJLENBQUE0QyxZQUFhLENBQUNwQixLQUFLLENBQUFvQyxTQUFVLEVBQUUsV0FBVyxDQUFDO0lBQy9DNUQsSUFBSSxDQUFBNEMsWUFBYSxDQUFDcEIsS0FBSyxDQUFBcUMsTUFBTyxFQUFFLFFBQVEsQ0FBQztJQUFBNUMsQ0FBQSxNQUFBRCxFQUFBO0lBQUFDLENBQUEsTUFBQWIsU0FBQTtJQUFBYSxDQUFBLE1BQUFFLFFBQUE7SUFBQUYsQ0FBQSxNQUFBRyxhQUFBO0lBQUFILENBQUEsTUFBQUksUUFBQTtJQUFBSixDQUFBLE1BQUFLLFVBQUE7SUFBQUwsQ0FBQSxNQUFBTSxRQUFBO0lBQUFOLENBQUEsTUFBQVIsTUFBQTtJQUFBUSxDQUFBLE1BQUFQLGFBQUE7SUFBQU8sQ0FBQSxNQUFBWixPQUFBO0lBQUFZLENBQUEsT0FBQVYsT0FBQTtJQUFBVSxDQUFBLE9BQUFULGNBQUE7SUFBQVMsQ0FBQSxPQUFBTixTQUFBO0lBQUFNLENBQUEsT0FBQUwsZ0JBQUE7SUFBQUssQ0FBQSxPQUFBSixZQUFBO0lBQUFJLENBQUEsT0FBQUgsWUFBQTtJQUFBRyxDQUFBLE9BQUFmLEdBQUE7SUFBQWUsQ0FBQSxPQUFBTyxLQUFBO0lBQUFQLENBQUEsT0FBQWQsUUFBQTtFQUFBO0lBQUFDLFNBQUEsR0FBQWEsQ0FBQTtJQUFBRSxRQUFBLEdBQUFGLENBQUE7SUFBQUcsYUFBQSxHQUFBSCxDQUFBO0lBQUFJLFFBQUEsR0FBQUosQ0FBQTtJQUFBSyxVQUFBLEdBQUFMLENBQUE7SUFBQU0sUUFBQSxHQUFBTixDQUFBO0lBQUFSLE1BQUEsR0FBQVEsQ0FBQTtJQUFBUCxhQUFBLEdBQUFPLENBQUE7SUFBQVosT0FBQSxHQUFBWSxDQUFBO0lBQUFWLE9BQUEsR0FBQVUsQ0FBQTtJQUFBVCxjQUFBLEdBQUFTLENBQUE7SUFBQU4sU0FBQSxHQUFBTSxDQUFBO0lBQUFMLGdCQUFBLEdBQUFLLENBQUE7SUFBQUosWUFBQSxHQUFBSSxDQUFBO0lBQUFILFlBQUEsR0FBQUcsQ0FBQTtJQUFBZixHQUFBLEdBQUFlLENBQUE7SUFBQU8sS0FBQSxHQUFBUCxDQUFBO0lBQUFkLFFBQUEsR0FBQWMsQ0FBQTtFQUFBO0VBc0J4QixNQUFBUSxFQUFBLEdBQUFELEtBQUssQ0FBQXNDLFNBQTRCLElBQWR0QyxLQUFLLENBQUF1QyxRQUFzQixJQUE5QyxTQUE4QztFQUM5QyxNQUFBckMsRUFBQSxHQUFBRixLQUFLLENBQUF3QyxTQUE0QixJQUFkeEMsS0FBSyxDQUFBdUMsUUFBc0IsSUFBOUMsU0FBOEM7RUFBQSxJQUFBcEMsRUFBQTtFQUFBLElBQUFWLENBQUEsU0FBQUcsYUFBQSxJQUFBSCxDQUFBLFNBQUFJLFFBQUEsSUFBQUosQ0FBQSxTQUFBSyxVQUFBLElBQUFMLENBQUEsU0FBQU0sUUFBQSxJQUFBTixDQUFBLFNBQUFPLEtBQUEsSUFBQVAsQ0FBQSxTQUFBUSxFQUFBLElBQUFSLENBQUEsU0FBQVMsRUFBQTtJQVBwREMsRUFBQTtNQUFBSixRQUFBO01BQUFILGFBQUE7TUFBQUMsUUFBQTtNQUFBQyxVQUFBO01BQUEsR0FLRkUsS0FBSztNQUFBc0MsU0FBQSxFQUNHckMsRUFBOEM7TUFBQXVDLFNBQUEsRUFDOUN0QztJQUNiLENBQUM7SUFBQVQsQ0FBQSxPQUFBRyxhQUFBO0lBQUFILENBQUEsT0FBQUksUUFBQTtJQUFBSixDQUFBLE9BQUFLLFVBQUE7SUFBQUwsQ0FBQSxPQUFBTSxRQUFBO0lBQUFOLENBQUEsT0FBQU8sS0FBQTtJQUFBUCxDQUFBLE9BQUFRLEVBQUE7SUFBQVIsQ0FBQSxPQUFBUyxFQUFBO0lBQUFULENBQUEsT0FBQVUsRUFBQTtFQUFBO0lBQUFBLEVBQUEsR0FBQVYsQ0FBQTtFQUFBO0VBQUEsSUFBQVcsRUFBQTtFQUFBLElBQUFYLENBQUEsU0FBQWIsU0FBQSxJQUFBYSxDQUFBLFNBQUFFLFFBQUEsSUFBQUYsQ0FBQSxTQUFBUixNQUFBLElBQUFRLENBQUEsU0FBQVAsYUFBQSxJQUFBTyxDQUFBLFNBQUFaLE9BQUEsSUFBQVksQ0FBQSxTQUFBVixPQUFBLElBQUFVLENBQUEsU0FBQVQsY0FBQSxJQUFBUyxDQUFBLFNBQUFOLFNBQUEsSUFBQU0sQ0FBQSxTQUFBTCxnQkFBQSxJQUFBSyxDQUFBLFNBQUFKLFlBQUEsSUFBQUksQ0FBQSxTQUFBSCxZQUFBLElBQUFHLENBQUEsU0FBQWYsR0FBQSxJQUFBZSxDQUFBLFNBQUFVLEVBQUEsSUFBQVYsQ0FBQSxTQUFBZCxRQUFBO0lBckJIeUIsRUFBQSxXQXdCVSxDQXZCSDFCLEdBQUcsQ0FBSEEsSUFBRSxDQUFDLENBQ0VDLFFBQVEsQ0FBUkEsU0FBTyxDQUFDLENBQ1BDLFNBQVMsQ0FBVEEsVUFBUSxDQUFDLENBQ1hDLE9BQU8sQ0FBUEEsUUFBTSxDQUFDLENBQ1BFLE9BQU8sQ0FBUEEsUUFBTSxDQUFDLENBQ0FDLGNBQWMsQ0FBZEEsZUFBYSxDQUFDLENBQ3RCQyxNQUFNLENBQU5BLE9BQUssQ0FBQyxDQUNDQyxhQUFhLENBQWJBLGNBQVksQ0FBQyxDQUNkRyxZQUFZLENBQVpBLGFBQVcsQ0FBQyxDQUNaQyxZQUFZLENBQVpBLGFBQVcsQ0FBQyxDQUNmSCxTQUFTLENBQVRBLFVBQVEsQ0FBQyxDQUNGQyxnQkFBZ0IsQ0FBaEJBLGlCQUFlLENBQUMsQ0FDM0IsS0FRTixDQVJNLENBQUFlLEVBUVAsQ0FBQyxDQUVBUixTQUFPLENBQ1YsRUF4QkEsT0F3QlU7SUFBQUYsQ0FBQSxPQUFBYixTQUFBO0lBQUFhLENBQUEsT0FBQUUsUUFBQTtJQUFBRixDQUFBLE9BQUFSLE1BQUE7SUFBQVEsQ0FBQSxPQUFBUCxhQUFBO0lBQUFPLENBQUEsT0FBQVosT0FBQTtJQUFBWSxDQUFBLE9BQUFWLE9BQUE7SUFBQVUsQ0FBQSxPQUFBVCxjQUFBO0lBQUFTLENBQUEsT0FBQU4sU0FBQTtJQUFBTSxDQUFBLE9BQUFMLGdCQUFBO0lBQUFLLENBQUEsT0FBQUosWUFBQTtJQUFBSSxDQUFBLE9BQUFILFlBQUE7SUFBQUcsQ0FBQSxPQUFBZixHQUFBO0lBQUFlLENBQUEsT0FBQVUsRUFBQTtJQUFBVixDQUFBLE9BQUFkLFFBQUE7SUFBQWMsQ0FBQSxPQUFBVyxFQUFBO0VBQUE7SUFBQUEsRUFBQSxHQUFBWCxDQUFBO0VBQUE7RUFBQSxPQXhCVlcsRUF3QlU7QUFBQTtBQUlkLGVBQWViLEdBQUciLCJpZ25vcmVMaXN0IjpbXX0=
diff --git a/restored-src/src/ink/components/ScrollBox.tsx b/restored-src/src/ink/components/ScrollBox.tsx
index 03e4a31cb..59aa6bb3b 100644
--- a/restored-src/src/ink/components/ScrollBox.tsx
+++ b/restored-src/src/ink/components/ScrollBox.tsx
@@ -5,7 +5,7 @@ import type { DOMElement } from '../dom.js';
import { markDirty, scheduleRenderFrom } from '../dom.js';
import { markCommitStart } from '../reconciler.js';
import type { Styles } from '../styles.js';
-import '../global.d.ts';
+import type {} from '../global.d.ts';
import Box from './Box.js';
export type ScrollBoxHandle = {
scrollTo: (y: number) => void;
@@ -234,4 +234,4 @@ function ScrollBox({
;
}
export default ScrollBox;
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlByb3BzV2l0aENoaWxkcmVuIiwiUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZVJlZiIsInVzZVN0YXRlIiwiRXhjZXB0IiwibWFya1Njcm9sbEFjdGl2aXR5IiwiRE9NRWxlbWVudCIsIm1hcmtEaXJ0eSIsInNjaGVkdWxlUmVuZGVyRnJvbSIsIm1hcmtDb21taXRTdGFydCIsIlN0eWxlcyIsIkJveCIsIlNjcm9sbEJveEhhbmRsZSIsInNjcm9sbFRvIiwieSIsInNjcm9sbEJ5IiwiZHkiLCJzY3JvbGxUb0VsZW1lbnQiLCJlbCIsIm9mZnNldCIsInNjcm9sbFRvQm90dG9tIiwiZ2V0U2Nyb2xsVG9wIiwiZ2V0UGVuZGluZ0RlbHRhIiwiZ2V0U2Nyb2xsSGVpZ2h0IiwiZ2V0RnJlc2hTY3JvbGxIZWlnaHQiLCJnZXRWaWV3cG9ydEhlaWdodCIsImdldFZpZXdwb3J0VG9wIiwiaXNTdGlja3kiLCJzdWJzY3JpYmUiLCJsaXN0ZW5lciIsInNldENsYW1wQm91bmRzIiwibWluIiwibWF4IiwiU2Nyb2xsQm94UHJvcHMiLCJyZWYiLCJzdGlja3lTY3JvbGwiLCJTY3JvbGxCb3giLCJjaGlsZHJlbiIsInN0eWxlIiwiUmVhY3ROb2RlIiwiZG9tUmVmIiwiZm9yY2VSZW5kZXIiLCJsaXN0ZW5lcnNSZWYiLCJTZXQiLCJyZW5kZXJRdWV1ZWRSZWYiLCJub3RpZnkiLCJsIiwiY3VycmVudCIsInNjcm9sbE11dGF0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsInBlbmRpbmdTY3JvbGxEZWx0YSIsInVuZGVmaW5lZCIsInNjcm9sbEFuY2hvciIsInNjcm9sbFRvcCIsIk1hdGgiLCJmbG9vciIsImJveCIsIm4iLCJzY3JvbGxIZWlnaHQiLCJjb250ZW50IiwiY2hpbGROb2RlcyIsInlvZ2FOb2RlIiwiZ2V0Q29tcHV0ZWRIZWlnaHQiLCJzY3JvbGxWaWV3cG9ydEhlaWdodCIsInNjcm9sbFZpZXdwb3J0VG9wIiwiQm9vbGVhbiIsImF0dHJpYnV0ZXMiLCJhZGQiLCJkZWxldGUiLCJzY3JvbGxDbGFtcE1pbiIsInNjcm9sbENsYW1wTWF4IiwiZmxleFdyYXAiLCJmbGV4RGlyZWN0aW9uIiwiZmxleEdyb3ciLCJmbGV4U2hyaW5rIiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIl0sInNvdXJjZXMiOlsiU2Nyb2xsQm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdHlwZSBSZWYsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBFeGNlcHQgfSBmcm9tICd0eXBlLWZlc3QnXG5pbXBvcnQgeyBtYXJrU2Nyb2xsQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9ib290c3RyYXAvc3RhdGUuanMnXG5pbXBvcnQgdHlwZSB7IERPTUVsZW1lbnQgfSBmcm9tICcuLi9kb20uanMnXG5pbXBvcnQgeyBtYXJrRGlydHksIHNjaGVkdWxlUmVuZGVyRnJvbSB9IGZyb20gJy4uL2RvbS5qcydcbmltcG9ydCB7IG1hcmtDb21taXRTdGFydCB9IGZyb20gJy4uL3JlY29uY2lsZXIuanMnXG5pbXBvcnQgdHlwZSB7IFN0eWxlcyB9IGZyb20gJy4uL3N0eWxlcy5qcydcbmltcG9ydCAnLi4vZ2xvYmFsLmQudHMnXG5pbXBvcnQgQm94IGZyb20gJy4vQm94LmpzJ1xuXG5leHBvcnQgdHlwZSBTY3JvbGxCb3hIYW5kbGUgPSB7XG4gIHNjcm9sbFRvOiAoeTogbnVtYmVyKSA9PiB2b2lkXG4gIHNjcm9sbEJ5OiAoZHk6IG51bWJlcikgPT4gdm9pZFxuICAvKipcbiAgICogU2Nyb2xsIHNvIGBlbGAncyB0b3AgaXMgYXQgdGhlIHZpZXdwb3J0IHRvcCAocGx1cyBgb2Zmc2V0YCkuIFVubGlrZVxuICAgKiBzY3JvbGxUbyB3aGljaCBiYWtlcyBhIG51bWJlciB0aGF0J3Mgc3RhbGUgYnkgdGhlIHRpbWUgdGhlIHRocm90dGxlZFxuICAgKiByZW5kZXIgZmlyZXMsIHRoaXMgZGVmZXJzIHRoZSBwb3NpdGlvbiByZWFkIHRvIHJlbmRlciB0aW1lIOKAlFxuICAgKiByZW5kZXItbm9kZS10by1vdXRwdXQgcmVhZHMgYGVsLnlvZ2FOb2RlLmdldENvbXB1dGVkVG9wKClgIGluIHRoZVxuICAgKiBTQU1FIFlvZ2EgcGFzcyB0aGF0IGNvbXB1dGVzIHNjcm9sbEhlaWdodC4gRGV0ZXJtaW5pc3RpYy4gT25lLXNob3QuXG4gICAqL1xuICBzY3JvbGxUb0VsZW1lbnQ6IChlbDogRE9NRWxlbWVudCwgb2Zmc2V0PzogbnVtYmVyKSA9PiB2b2lkXG4gIHNjcm9sbFRvQm90dG9tOiAoKSA9PiB2b2lkXG4gIGdldFNjcm9sbFRvcDogKCkgPT4gbnVtYmVyXG4gIGdldFBlbmRpbmdEZWx0YTogKCkgPT4gbnVtYmVyXG4gIGdldFNjcm9sbEhlaWdodDogKCkgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBMaWtlIGdldFNjcm9sbEhlaWdodCwgYnV0IHJlYWRzIFlvZ2EgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgY2FjaGVkXG4gICAqIHZhbHVlIHdyaXR0ZW4gYnkgcmVuZGVyLW5vZGUtdG8tb3V0cHV0ICh0aHJvdHRsZWQsIHVwIHRvIDE2bXMgc3RhbGUpLlxuICAgKiBVc2Ugd2hlbiB5b3UgbmVlZCBhIGZyZXNoIHZhbHVlIGluIHVzZUxheW91dEVmZmVjdCBhZnRlciBhIFJlYWN0IGNvbW1pdFxuICAgKiB0aGF0IGdyZXcgY29udGVudC4gU2xpZ2h0bHkgbW9yZSBleHBlbnNpdmUgKG5hdGl2ZSBZb2dhIGNhbGwpLlxuICAgKi9cbiAgZ2V0RnJlc2hTY3JvbGxIZWlnaHQ6ICgpID0+IG51bWJlclxuICBnZXRWaWV3cG9ydEhlaWdodDogKCkgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBzY3JlZW4tYnVmZmVyIHJvdyBvZiB0aGUgZmlyc3QgdmlzaWJsZSBjb250ZW50IGxpbmUgKGluc2lkZVxuICAgKiBwYWRkaW5nKS4gVXNlZCBmb3IgZHJhZy10by1zY3JvbGwgZWRnZSBkZXRlY3Rpb24uXG4gICAqL1xuICBnZXRWaWV3cG9ydFRvcDogKCkgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBUcnVlIHdoZW4gc2Nyb2xsIGlzIHBpbm5lZCB0byB0aGUgYm90dG9tLiBTZXQgYnkgc2Nyb2xsVG9Cb3R0b20sIHRoZVxuICAgKiBpbml0aWFsIHN0aWNreVNjcm9sbCBhdHRyaWJ1dGUsIGFuZCBieSB0aGUgcmVuZGVyZXIgd2hlbiBwb3NpdGlvbmFsXG4gICAqIGZvbGxvdyBmaXJlcyAoc2Nyb2xsVG9wIGF0IHByZXZNYXgsIGNvbnRlbnQgZ3Jvd3MpLiBDbGVhcmVkIGJ5XG4gICAqIHNjcm9sbFRvL3Njcm9sbEJ5LiBTdGFibGUgc2lnbmFsIGZvciBcImF0IGJvdHRvbVwiIHRoYXQgZG9lc24ndCBkZXBlbmQgb25cbiAgICogbGF5b3V0IHZhbHVlcyAodW5saWtlIHNjcm9sbFRvcCt2aWV3cG9ydEggPj0gc2Nyb2xsSGVpZ2h0KS5cbiAgICovXG4gIGlzU3RpY2t5OiAoKSA9PiBib29sZWFuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gaW1wZXJhdGl2ZSBzY3JvbGwgY2hhbmdlcyAoc2Nyb2xsVG8vc2Nyb2xsQnkvc2Nyb2xsVG9Cb3R0b20pLlxuICAgKiBEb2VzIE5PVCBmaXJlIGZvciBzdGlja3lTY3JvbGwgdXBkYXRlcyBkb25lIGJ5IHRoZSBJbmsgcmVuZGVyZXIg4oCUIHRob3NlXG4gICAqIGhhcHBlbiBkdXJpbmcgSW5rJ3MgcmVuZGVyIHBoYXNlIGFmdGVyIFJlYWN0IGhhcyBjb21taXR0ZWQuIENhbGxlcnMgdGhhdFxuICAgKiBjYXJlIGFib3V0IHRoZSBzdGlja3kgY2FzZSBzaG91bGQgdHJlYXQgXCJhdCBib3R0b21cIiBhcyBhIGZhbGxiYWNrLlxuICAgKi9cbiAgc3Vic2NyaWJlOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIFNldCB0aGUgcmVuZGVyLXRpbWUgc2Nyb2xsVG9wIGNsYW1wIHRvIHRoZSBjdXJyZW50bHktbW91bnRlZCBjaGlsZHJlbidzXG4gICAqIGNvdmVyYWdlIHNwYW4uIENhbGxlZCBieSB1c2VWaXJ0dWFsU2Nyb2xsIGFmdGVyIGNvbXB1dGluZyBpdHMgcmFuZ2U7XG4gICAqIHJlbmRlci1ub2RlLXRvLW91dHB1dCBjbGFtcHMgc2Nyb2xsVG9wIHRvIFttaW4sIG1heF0gc28gYnVyc3Qgc2Nyb2xsVG9cbiAgICogY2FsbHMgdGhhdCByYWNlIHBhc3QgUmVhY3QncyBhc3luYyByZS1yZW5kZXIgc2hvdyB0aGUgZWRnZSBvZiBtb3VudGVkXG4gICAqIGNvbnRlbnQgaW5zdGVhZCBvZiBibGFuayBzcGFjZXIuIFBhc3MgdW5kZWZpbmVkIHRvIGRpc2FibGUgKHN0aWNreSxcbiAgICogY29sZCBzdGFydCkuXG4gICAqL1xuICBzZXRDbGFtcEJvdW5kczogKG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkLCBtYXg6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBTY3JvbGxCb3hQcm9wcyA9IEV4Y2VwdDxcbiAgU3R5bGVzLFxuICAndGV4dFdyYXAnIHwgJ292ZXJmbG93JyB8ICdvdmVyZmxvd1gnIHwgJ292ZXJmbG93WSdcbj4gJiB7XG4gIHJlZj86IFJlZjxTY3JvbGxCb3hIYW5kbGU+XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGF1dG9tYXRpY2FsbHkgcGlucyBzY3JvbGwgcG9zaXRpb24gdG8gdGhlIGJvdHRvbSB3aGVuIGNvbnRlbnRcbiAgICogZ3Jvd3MuIFVuc2V0IG1hbnVhbGx5IHZpYSBzY3JvbGxUby9zY3JvbGxCeSB0byBicmVhayB0aGUgc3RpY2tpbmVzcy5cbiAgICovXG4gIHN0aWNreVNjcm9sbD86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBBIEJveCB3aXRoIGBvdmVyZmxvdzogc2Nyb2xsYCBhbmQgYW4gaW1wZXJhdGl2ZSBzY3JvbGwgQVBJLlxuICpcbiAqIENoaWxkcmVuIGFyZSBsYWlkIG91dCBhdCB0aGVpciBmdWxsIFlvZ2EtY29tcHV0ZWQgaGVpZ2h0IGluc2lkZSBhXG4gKiBjb25zdHJhaW5lZCBjb250YWluZXIuIEF0IHJlbmRlciB0aW1lLCBvbmx5IGNoaWxkcmVuIGludGVyc2VjdGluZyB0aGVcbiAqIHZpc2libGUgd2luZG93IChzY3JvbGxUb3AuLnNjcm9sbFRvcCtoZWlnaHQpIGFyZSByZW5kZXJlZCAodmlld3BvcnRcbiAqIGN1bGxpbmcpLiBDb250ZW50IGlzIHRyYW5zbGF0ZWQgYnkgLXNjcm9sbFRvcCBhbmQgY2xpcHBlZCB0byB0aGUgYm94IGJvdW5kcy5cbiAqXG4gKiBXb3JrcyBiZXN0IGluc2lkZSBhIGZ1bGxzY3JlZW4gKGNvbnN0cmFpbmVkLWhlaWdodCByb290KSBJbmsgdHJlZS5cbiAqL1xuZnVuY3Rpb24gU2Nyb2xsQm94KHtcbiAgY2hpbGRyZW4sXG4gIHJlZixcbiAgc3RpY2t5U2Nyb2xsLFxuICAuLi5zdHlsZVxufTogUHJvcHNXaXRoQ2hpbGRyZW48U2Nyb2xsQm94UHJvcHM+KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgZG9tUmVmID0gdXNlUmVmPERPTUVsZW1lbnQ+KG51bGwpXG4gIC8vIHNjcm9sbFRvL3Njcm9sbEJ5IGJ5cGFzcyBSZWFjdDogdGhleSBtdXRhdGUgc2Nyb2xsVG9wIG9uIHRoZSBET00gbm9kZSxcbiAgLy8gbWFyayBpdCBkaXJ0eSwgYW5kIGNhbGwgdGhlIHJvb3QncyB0aHJvdHRsZWQgc2NoZWR1bGVSZW5kZXIgZGlyZWN0bHkuXG4gIC8vIFRoZSBJbmsgcmVuZGVyZXIgcmVhZHMgc2Nyb2xsVG9wIGZyb20gdGhlIG5vZGUg4oCUIG5vIFJlYWN0IHN0YXRlIG5lZWRlZCxcbiAgLy8gbm8gcmVjb25jaWxlciBvdmVyaGVhZCBwZXIgd2hlZWwgZXZlbnQuIFRoZSBtaWNyb3Rhc2sgZGVmZXIgY29hbGVzY2VzXG4gIC8vIG11bHRpcGxlIHNjcm9sbEJ5IGNhbGxzIGluIG9uZSBpbnB1dCBiYXRjaCAoZGlzY3JldGVVcGRhdGVzKSBpbnRvIG9uZVxuICAvLyByZW5kZXIg4oCUIG90aGVyd2lzZSBzY2hlZHVsZVJlbmRlcidzIGxlYWRpbmcgZWRnZSBmaXJlcyBvbiB0aGUgRklSU1RcbiAgLy8gZXZlbnQgYmVmb3JlIHN1YnNlcXVlbnQgZXZlbnRzIG11dGF0ZSBzY3JvbGxUb3AuIHNjcm9sbFRvQm90dG9tIHN0aWxsXG4gIC8vIGZvcmNlcyBhIFJlYWN0IHJlbmRlcjogc3RpY2t5IGlzIGF0dHJpYnV0ZS1vYnNlcnZlZCwgbm8gRE9NLW9ubHkgcGF0aC5cbiAgY29uc3QgWywgZm9yY2VSZW5kZXJdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgbGlzdGVuZXJzUmVmID0gdXNlUmVmKG5ldyBTZXQ8KCkgPT4gdm9pZD4oKSlcbiAgY29uc3QgcmVuZGVyUXVldWVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IG5vdGlmeSA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGwgb2YgbGlzdGVuZXJzUmVmLmN1cnJlbnQpIGwoKVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsTXV0YXRlZChlbDogRE9NRWxlbWVudCk6IHZvaWQge1xuICAgIC8vIFNpZ25hbCBiYWNrZ3JvdW5kIGludGVydmFscyAoSURFIHBvbGwsIExTUCBwb2xsLCBHQ1MgZmV0Y2gsIG9ycGhhblxuICAgIC8vIGNoZWNrKSB0byBza2lwIHRoZWlyIG5leHQgdGljayDigJQgdGhleSBjb21wZXRlIGZvciB0aGUgZXZlbnQgbG9vcCBhbmRcbiAgICAvLyBjb250cmlidXRlZCB0byAxNDAybXMgbWF4IGZyYW1lIGdhcHMgZHVyaW5nIHNjcm9sbCBkcmFpbi5cbiAgICBtYXJrU2Nyb2xsQWN0aXZpdHkoKVxuICAgIG1hcmtEaXJ0eShlbClcbiAgICBtYXJrQ29tbWl0U3RhcnQoKVxuICAgIG5vdGlmeSgpXG4gICAgaWYgKHJlbmRlclF1ZXVlZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICByZW5kZXJRdWV1ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICByZW5kZXJRdWV1ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY2hlZHVsZVJlbmRlckZyb20oZWwpXG4gICAgfSlcbiAgfVxuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUoXG4gICAgcmVmLFxuICAgICgpOiBTY3JvbGxCb3hIYW5kbGUgPT4gKHtcbiAgICAgIHNjcm9sbFRvKHk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBlbCA9IGRvbVJlZi5jdXJyZW50XG4gICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICAvLyBFeHBsaWNpdCBmYWxzZSBvdmVycmlkZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gbWFudWFsIHNjcm9sbFxuICAgICAgICAvLyBicmVha3Mgc3RpY2tpbmVzcy4gUmVuZGVyIGNvZGUgY2hlY2tzID8/IHByZWNlZGVuY2UuXG4gICAgICAgIGVsLnN0aWNreVNjcm9sbCA9IGZhbHNlXG4gICAgICAgIGVsLnBlbmRpbmdTY3JvbGxEZWx0YSA9IHVuZGVmaW5lZFxuICAgICAgICBlbC5zY3JvbGxBbmNob3IgPSB1bmRlZmluZWRcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcih5KSlcbiAgICAgICAgc2Nyb2xsTXV0YXRlZChlbClcbiAgICAgIH0sXG4gICAgICBzY3JvbGxUb0VsZW1lbnQoZWw6IERPTUVsZW1lbnQsIG9mZnNldCA9IDApIHtcbiAgICAgICAgY29uc3QgYm94ID0gZG9tUmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKCFib3gpIHJldHVyblxuICAgICAgICBib3guc3RpY2t5U2Nyb2xsID0gZmFsc2VcbiAgICAgICAgYm94LnBlbmRpbmdTY3JvbGxEZWx0YSA9IHVuZGVmaW5lZFxuICAgICAgICBib3guc2Nyb2xsQW5jaG9yID0geyBlbCwgb2Zmc2V0IH1cbiAgICAgICAgc2Nyb2xsTXV0YXRlZChib3gpXG4gICAgICB9LFxuICAgICAgc2Nyb2xsQnkoZHk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBlbCA9IGRvbVJlZi5jdXJyZW50XG4gICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICBlbC5zdGlja3lTY3JvbGwgPSBmYWxzZVxuICAgICAgICAvLyBXaGVlbCBpbnB1dCBjYW5jZWxzIGFueSBpbi1mbGlnaHQgYW5jaG9yIHNlZWsg4oCUIHVzZXIgb3ZlcnJpZGUuXG4gICAgICAgIGVsLnNjcm9sbEFuY2hvciA9IHVuZGVmaW5lZFxuICAgICAgICAvLyBBY2N1bXVsYXRlIGluIHBlbmRpbmdTY3JvbGxEZWx0YTsgcmVuZGVyZXIgZHJhaW5zIGl0IGF0IGEgY2FwcGVkXG4gICAgICAgIC8vIHJhdGUgc28gZmFzdCBmbGlja3Mgc2hvdyBpbnRlcm1lZGlhdGUgZnJhbWVzLiBQdXJlIGFjY3VtdWxhdG9yOlxuICAgICAgICAvLyBzY3JvbGwtdXAgZm9sbG93ZWQgYnkgc2Nyb2xsLWRvd24gbmF0dXJhbGx5IGNhbmNlbHMuXG4gICAgICAgIGVsLnBlbmRpbmdTY3JvbGxEZWx0YSA9IChlbC5wZW5kaW5nU2Nyb2xsRGVsdGEgPz8gMCkgKyBNYXRoLmZsb29yKGR5KVxuICAgICAgICBzY3JvbGxNdXRhdGVkKGVsKVxuICAgICAgfSxcbiAgICAgIHNjcm9sbFRvQm90dG9tKCkge1xuICAgICAgICBjb25zdCBlbCA9IGRvbVJlZi5jdXJyZW50XG4gICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICBlbC5wZW5kaW5nU2Nyb2xsRGVsdGEgPSB1bmRlZmluZWRcbiAgICAgICAgZWwuc3RpY2t5U2Nyb2xsID0gdHJ1ZVxuICAgICAgICBtYXJrRGlydHkoZWwpXG4gICAgICAgIG5vdGlmeSgpXG4gICAgICAgIGZvcmNlUmVuZGVyKG4gPT4gbiArIDEpXG4gICAgICB9LFxuICAgICAgZ2V0U2Nyb2xsVG9wKCkge1xuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnNjcm9sbFRvcCA/PyAwXG4gICAgICB9LFxuICAgICAgZ2V0UGVuZGluZ0RlbHRhKCkge1xuICAgICAgICAvLyBBY2N1bXVsYXRlZC1idXQtbm90LXlldC1kcmFpbmVkIGRlbHRhLiB1c2VWaXJ0dWFsU2Nyb2xsIG5lZWRzXG4gICAgICAgIC8vIHRoaXMgdG8gbW91bnQgdGhlIHVuaW9uIFtjb21taXR0ZWQsIGNvbW1pdHRlZCtwZW5kaW5nXSByYW5nZSDigJRcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGludGVybWVkaWF0ZSBkcmFpbiBmcmFtZXMgZmluZCBubyBjaGlsZHJlbiAoYmxhbmspLlxuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnBlbmRpbmdTY3JvbGxEZWx0YSA/PyAwXG4gICAgICB9LFxuICAgICAgZ2V0U2Nyb2xsSGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnNjcm9sbEhlaWdodCA/PyAwXG4gICAgICB9LFxuICAgICAgZ2V0RnJlc2hTY3JvbGxIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb21SZWYuY3VycmVudD8uY2hpbGROb2Rlc1swXSBhcyBET01FbGVtZW50IHwgdW5kZWZpbmVkXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29udGVudD8ueW9nYU5vZGU/LmdldENvbXB1dGVkSGVpZ2h0KCkgPz9cbiAgICAgICAgICBkb21SZWYuY3VycmVudD8uc2Nyb2xsSGVpZ2h0ID8/XG4gICAgICAgICAgMFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgZ2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiBkb21SZWYuY3VycmVudD8uc2Nyb2xsVmlld3BvcnRIZWlnaHQgPz8gMFxuICAgICAgfSxcbiAgICAgIGdldFZpZXdwb3J0VG9wKCkge1xuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnNjcm9sbFZpZXdwb3J0VG9wID8/IDBcbiAgICAgIH0sXG4gICAgICBpc1N0aWNreSgpIHtcbiAgICAgICAgY29uc3QgZWwgPSBkb21SZWYuY3VycmVudFxuICAgICAgICBpZiAoIWVsKSByZXR1cm4gZmFsc2VcbiAgICAgICAgcmV0dXJuIGVsLnN0aWNreVNjcm9sbCA/PyBCb29sZWFuKGVsLmF0dHJpYnV0ZXNbJ3N0aWNreVNjcm9sbCddKVxuICAgICAgfSxcbiAgICAgIHN1YnNjcmliZShsaXN0ZW5lcjogKCkgPT4gdm9pZCkge1xuICAgICAgICBsaXN0ZW5lcnNSZWYuY3VycmVudC5hZGQobGlzdGVuZXIpXG4gICAgICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lcnNSZWYuY3VycmVudC5kZWxldGUobGlzdGVuZXIpXG4gICAgICB9LFxuICAgICAgc2V0Q2xhbXBCb3VuZHMobWluLCBtYXgpIHtcbiAgICAgICAgY29uc3QgZWwgPSBkb21SZWYuY3VycmVudFxuICAgICAgICBpZiAoIWVsKSByZXR1cm5cbiAgICAgICAgZWwuc2Nyb2xsQ2xhbXBNaW4gPSBtaW5cbiAgICAgICAgZWwuc2Nyb2xsQ2xhbXBNYXggPSBtYXhcbiAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gbm90aWZ5L3Njcm9sbE11dGF0ZWQgYXJlIGlubGluZSAobm8gdXNlQ2FsbGJhY2spIGJ1dCBvbmx5IGNsb3NlIG92ZXJcbiAgICAvLyByZWZzICsgaW1wb3J0cyDigJQgc3RhYmxlLiBFbXB0eSBkZXBzIGF2b2lkcyByZWJ1aWxkaW5nIHRoZSBoYW5kbGUgb25cbiAgICAvLyBldmVyeSByZW5kZXIgKHdoaWNoIHJlLXJlZ2lzdGVycyB0aGUgcmVmID0gY2h1cm4pLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbXSxcbiAgKVxuXG4gIC8vIFN0cnVjdHVyZTogb3V0ZXIgdmlld3BvcnQgKG92ZXJmbG93OnNjcm9sbCwgY29uc3RyYWluZWQgaGVpZ2h0KSA+XG4gIC8vIGlubmVyIGNvbnRlbnQgKGZsZXhHcm93OjEsIGZsZXhTaHJpbms6MCDigJQgZmlsbHMgYXQgbGVhc3QgdGhlIHZpZXdwb3J0XG4gIC8vIGJ1dCBncm93cyBiZXlvbmQgaXQgZm9yIHRhbGwgY29udGVudCkuIGZsZXhHcm93OjEgbGV0cyBjaGlsZHJlbiB1c2VcbiAgLy8gc3BhY2VycyB0byBwaW4gZWxlbWVudHMgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2Nyb2xsIGFyZWEuIFlvZ2Enc1xuICAvLyBPdmVyZmxvdy5TY3JvbGwgcHJldmVudHMgdGhlIHZpZXdwb3J0IGZyb20gZ3Jvd2luZyB0byBmaXQgdGhlIGNvbnRlbnQuXG4gIC8vIFRoZSByZW5kZXJlciBjb21wdXRlcyBzY3JvbGxIZWlnaHQgZnJvbSB0aGUgY29udGVudCBib3ggYW5kIGN1bGxzXG4gIC8vIGNvbnRlbnQncyBjaGlsZHJlbiBiYXNlZCBvbiBzY3JvbGxUb3AuXG4gIC8vXG4gIC8vIHN0aWNreVNjcm9sbCBpcyBwYXNzZWQgYXMgYSBET00gYXR0cmlidXRlICh2aWEgaW5rLWJveCBkaXJlY3RseSkgc28gaXQnc1xuICAvLyBhdmFpbGFibGUgb24gdGhlIGZpcnN0IHJlbmRlciDigJQgcmVmIGNhbGxiYWNrcyBmaXJlIGFmdGVyIHRoZSBpbml0aWFsXG4gIC8vIGNvbW1pdCwgd2hpY2ggaXMgdG9vIGxhdGUgZm9yIHRoZSBmaXJzdCBmcmFtZS5cbiAgcmV0dXJuIChcbiAgICA8aW5rLWJveFxuICAgICAgcmVmPXtlbCA9PiB7XG4gICAgICAgIGRvbVJlZi5jdXJyZW50ID0gZWxcbiAgICAgICAgaWYgKGVsKSBlbC5zY3JvbGxUb3AgPz89IDBcbiAgICAgIH19XG4gICAgICBzdHlsZT17e1xuICAgICAgICBmbGV4V3JhcDogJ25vd3JhcCcsXG4gICAgICAgIGZsZXhEaXJlY3Rpb246IHN0eWxlLmZsZXhEaXJlY3Rpb24gPz8gJ3JvdycsXG4gICAgICAgIGZsZXhHcm93OiBzdHlsZS5mbGV4R3JvdyA/PyAwLFxuICAgICAgICBmbGV4U2hyaW5rOiBzdHlsZS5mbGV4U2hyaW5rID8/IDEsXG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICBvdmVyZmxvd1g6ICdzY3JvbGwnLFxuICAgICAgICBvdmVyZmxvd1k6ICdzY3JvbGwnLFxuICAgICAgfX1cbiAgICAgIHsuLi4oc3RpY2t5U2Nyb2xsID8geyBzdGlja3lTY3JvbGw6IHRydWUgfSA6IHt9KX1cbiAgICA+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBmbGV4R3Jvdz17MX0gZmxleFNocmluaz17MH0gd2lkdGg9XCIxMDAlXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQm94PlxuICAgIDwvaW5rLWJveD5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBTY3JvbGxCb3hcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUNWLEtBQUtDLGlCQUFpQixFQUN0QixLQUFLQyxHQUFHLEVBQ1JDLG1CQUFtQixFQUNuQkMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLGNBQWNDLE1BQU0sUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLGtCQUFrQixRQUFRLDBCQUEwQjtBQUM3RCxjQUFjQyxVQUFVLFFBQVEsV0FBVztBQUMzQyxTQUFTQyxTQUFTLEVBQUVDLGtCQUFrQixRQUFRLFdBQVc7QUFDekQsU0FBU0MsZUFBZSxRQUFRLGtCQUFrQjtBQUNsRCxjQUFjQyxNQUFNLFFBQVEsY0FBYztBQUMxQyxPQUFPLGdCQUFnQjtBQUN2QixPQUFPQyxHQUFHLE1BQU0sVUFBVTtBQUUxQixPQUFPLEtBQUtDLGVBQWUsR0FBRztFQUM1QkMsUUFBUSxFQUFFLENBQUNDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJO0VBQzdCQyxRQUFRLEVBQUUsQ0FBQ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUk7RUFDOUI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsZUFBZSxFQUFFLENBQUNDLEVBQUUsRUFBRVosVUFBVSxFQUFFYSxNQUFlLENBQVIsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJO0VBQzFEQyxjQUFjLEVBQUUsR0FBRyxHQUFHLElBQUk7RUFDMUJDLFlBQVksRUFBRSxHQUFHLEdBQUcsTUFBTTtFQUMxQkMsZUFBZSxFQUFFLEdB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
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlByb3BzV2l0aENoaWxkcmVuIiwiUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsInVzZVJlZiIsInVzZVN0YXRlIiwiRXhjZXB0IiwibWFya1Njcm9sbEFjdGl2aXR5IiwiRE9NRWxlbWVudCIsIm1hcmtEaXJ0eSIsInNjaGVkdWxlUmVuZGVyRnJvbSIsIm1hcmtDb21taXRTdGFydCIsIlN0eWxlcyIsIkJveCIsIlNjcm9sbEJveEhhbmRsZSIsInNjcm9sbFRvIiwieSIsInNjcm9sbEJ5IiwiZHkiLCJzY3JvbGxUb0VsZW1lbnQiLCJlbCIsIm9mZnNldCIsInNjcm9sbFRvQm90dG9tIiwiZ2V0U2Nyb2xsVG9wIiwiZ2V0UGVuZGluZ0RlbHRhIiwiZ2V0U2Nyb2xsSGVpZ2h0IiwiZ2V0RnJlc2hTY3JvbGxIZWlnaHQiLCJnZXRWaWV3cG9ydEhlaWdodCIsImdldFZpZXdwb3J0VG9wIiwiaXNTdGlja3kiLCJzdWJzY3JpYmUiLCJsaXN0ZW5lciIsInNldENsYW1wQm91bmRzIiwibWluIiwibWF4IiwiU2Nyb2xsQm94UHJvcHMiLCJyZWYiLCJzdGlja3lTY3JvbGwiLCJTY3JvbGxCb3giLCJjaGlsZHJlbiIsInN0eWxlIiwiUmVhY3ROb2RlIiwiZG9tUmVmIiwiZm9yY2VSZW5kZXIiLCJsaXN0ZW5lcnNSZWYiLCJTZXQiLCJyZW5kZXJRdWV1ZWRSZWYiLCJub3RpZnkiLCJsIiwiY3VycmVudCIsInNjcm9sbE11dGF0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsInBlbmRpbmdTY3JvbGxEZWx0YSIsInVuZGVmaW5lZCIsInNjcm9sbEFuY2hvciIsInNjcm9sbFRvcCIsIk1hdGgiLCJmbG9vciIsImJveCIsIm4iLCJzY3JvbGxIZWlnaHQiLCJjb250ZW50IiwiY2hpbGROb2RlcyIsInlvZ2FOb2RlIiwiZ2V0Q29tcHV0ZWRIZWlnaHQiLCJzY3JvbGxWaWV3cG9ydEhlaWdodCIsInNjcm9sbFZpZXdwb3J0VG9wIiwiQm9vbGVhbiIsImF0dHJpYnV0ZXMiLCJhZGQiLCJkZWxldGUiLCJzY3JvbGxDbGFtcE1pbiIsInNjcm9sbENsYW1wTWF4IiwiZmxleFdyYXAiLCJmbGV4RGlyZWN0aW9uIiwiZmxleEdyb3ciLCJmbGV4U2hyaW5rIiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIl0sInNvdXJjZXMiOlsiU2Nyb2xsQm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdHlwZSBQcm9wc1dpdGhDaGlsZHJlbixcbiAgdHlwZSBSZWYsXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHR5cGUgeyBFeGNlcHQgfSBmcm9tICd0eXBlLWZlc3QnXG5pbXBvcnQgeyBtYXJrU2Nyb2xsQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9ib290c3RyYXAvc3RhdGUuanMnXG5pbXBvcnQgdHlwZSB7IERPTUVsZW1lbnQgfSBmcm9tICcuLi9kb20uanMnXG5pbXBvcnQgeyBtYXJrRGlydHksIHNjaGVkdWxlUmVuZGVyRnJvbSB9IGZyb20gJy4uL2RvbS5qcydcbmltcG9ydCB7IG1hcmtDb21taXRTdGFydCB9IGZyb20gJy4uL3JlY29uY2lsZXIuanMnXG5pbXBvcnQgdHlwZSB7IFN0eWxlcyB9IGZyb20gJy4uL3N0eWxlcy5qcydcbmltcG9ydCAnLi4vZ2xvYmFsLmQudHMnXG5pbXBvcnQgQm94IGZyb20gJy4vQm94LmpzJ1xuXG5leHBvcnQgdHlwZSBTY3JvbGxCb3hIYW5kbGUgPSB7XG4gIHNjcm9sbFRvOiAoeTogbnVtYmVyKSA9PiB2b2lkXG4gIHNjcm9sbEJ5OiAoZHk6IG51bWJlcikgPT4gdm9pZFxuICAvKipcbiAgICogU2Nyb2xsIHNvIGBlbGAncyB0b3AgaXMgYXQgdGhlIHZpZXdwb3J0IHRvcCAocGx1cyBgb2Zmc2V0YCkuIFVubGlrZVxuICAgKiBzY3JvbGxUbyB3aGljaCBiYWtlcyBhIG51bWJlciB0aGF0J3Mgc3RhbGUgYnkgdGhlIHRpbWUgdGhlIHRocm90dGxlZFxuICAgKiByZW5kZXIgZmlyZXMsIHRoaXMgZGVmZXJzIHRoZSBwb3NpdGlvbiByZWFkIHRvIHJlbmRlciB0aW1lIOKAlFxuICAgKiByZW5kZXItbm9kZS10by1vdXRwdXQgcmVhZHMgYGVsLnlvZ2FOb2RlLmdldENvbXB1dGVkVG9wKClgIGluIHRoZVxuICAgKiBTQU1FIFlvZ2EgcGFzcyB0aGF0IGNvbXB1dGVzIHNjcm9sbEhlaWdodC4gRGV0ZXJtaW5pc3RpYy4gT25lLXNob3QuXG4gICAqL1xuICBzY3JvbGxUb0VsZW1lbnQ6IChlbDogRE9NRWxlbWVudCwgb2Zmc2V0PzogbnVtYmVyKSA9PiB2b2lkXG4gIHNjcm9sbFRvQm90dG9tOiAoKSA9PiB2b2lkXG4gIGdldFNjcm9sbFRvcDogKCkgPT4gbnVtYmVyXG4gIGdldFBlbmRpbmdEZWx0YTogKCkgPT4gbnVtYmVyXG4gIGdldFNjcm9sbEhlaWdodDogKCkgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBMaWtlIGdldFNjcm9sbEhlaWdodCwgYnV0IHJlYWRzIFlvZ2EgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgY2FjaGVkXG4gICAqIHZhbHVlIHdyaXR0ZW4gYnkgcmVuZGVyLW5vZGUtdG8tb3V0cHV0ICh0aHJvdHRsZWQsIHVwIHRvIDE2bXMgc3RhbGUpLlxuICAgKiBVc2Ugd2hlbiB5b3UgbmVlZCBhIGZyZXNoIHZhbHVlIGluIHVzZUxheW91dEVmZmVjdCBhZnRlciBhIFJlYWN0IGNvbW1pdFxuICAgKiB0aGF0IGdyZXcgY29udGVudC4gU2xpZ2h0bHkgbW9yZSBleHBlbnNpdmUgKG5hdGl2ZSBZb2dhIGNhbGwpLlxuICAgKi9cbiAgZ2V0RnJlc2hTY3JvbGxIZWlnaHQ6ICgpID0+IG51bWJlclxuICBnZXRWaWV3cG9ydEhlaWdodDogKCkgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBBYnNvbHV0ZSBzY3JlZW4tYnVmZmVyIHJvdyBvZiB0aGUgZmlyc3QgdmlzaWJsZSBjb250ZW50IGxpbmUgKGluc2lkZVxuICAgKiBwYWRkaW5nKS4gVXNlZCBmb3IgZHJhZy10by1zY3JvbGwgZWRnZSBkZXRlY3Rpb24uXG4gICAqL1xuICBnZXRWaWV3cG9ydFRvcDogKCkgPT4gbnVtYmVyXG4gIC8qKlxuICAgKiBUcnVlIHdoZW4gc2Nyb2xsIGlzIHBpbm5lZCB0byB0aGUgYm90dG9tLiBTZXQgYnkgc2Nyb2xsVG9Cb3R0b20sIHRoZVxuICAgKiBpbml0aWFsIHN0aWNreVNjcm9sbCBhdHRyaWJ1dGUsIGFuZCBieSB0aGUgcmVuZGVyZXIgd2hlbiBwb3NpdGlvbmFsXG4gICAqIGZvbGxvdyBmaXJlcyAoc2Nyb2xsVG9wIGF0IHByZXZNYXgsIGNvbnRlbnQgZ3Jvd3MpLiBDbGVhcmVkIGJ5XG4gICAqIHNjcm9sbFRvL3Njcm9sbEJ5LiBTdGFibGUgc2lnbmFsIGZvciBcImF0IGJvdHRvbVwiIHRoYXQgZG9lc24ndCBkZXBlbmQgb25cbiAgICogbGF5b3V0IHZhbHVlcyAodW5saWtlIHNjcm9sbFRvcCt2aWV3cG9ydEggPj0gc2Nyb2xsSGVpZ2h0KS5cbiAgICovXG4gIGlzU3RpY2t5OiAoKSA9PiBib29sZWFuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gaW1wZXJhdGl2ZSBzY3JvbGwgY2hhbmdlcyAoc2Nyb2xsVG8vc2Nyb2xsQnkvc2Nyb2xsVG9Cb3R0b20pLlxuICAgKiBEb2VzIE5PVCBmaXJlIGZvciBzdGlja3lTY3JvbGwgdXBkYXRlcyBkb25lIGJ5IHRoZSBJbmsgcmVuZGVyZXIg4oCUIHRob3NlXG4gICAqIGhhcHBlbiBkdXJpbmcgSW5rJ3MgcmVuZGVyIHBoYXNlIGFmdGVyIFJlYWN0IGhhcyBjb21taXR0ZWQuIENhbGxlcnMgdGhhdFxuICAgKiBjYXJlIGFib3V0IHRoZSBzdGlja3kgY2FzZSBzaG91bGQgdHJlYXQgXCJhdCBib3R0b21cIiBhcyBhIGZhbGxiYWNrLlxuICAgKi9cbiAgc3Vic2NyaWJlOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIFNldCB0aGUgcmVuZGVyLXRpbWUgc2Nyb2xsVG9wIGNsYW1wIHRvIHRoZSBjdXJyZW50bHktbW91bnRlZCBjaGlsZHJlbidzXG4gICAqIGNvdmVyYWdlIHNwYW4uIENhbGxlZCBieSB1c2VWaXJ0dWFsU2Nyb2xsIGFmdGVyIGNvbXB1dGluZyBpdHMgcmFuZ2U7XG4gICAqIHJlbmRlci1ub2RlLXRvLW91dHB1dCBjbGFtcHMgc2Nyb2xsVG9wIHRvIFttaW4sIG1heF0gc28gYnVyc3Qgc2Nyb2xsVG9cbiAgICogY2FsbHMgdGhhdCByYWNlIHBhc3QgUmVhY3QncyBhc3luYyByZS1yZW5kZXIgc2hvdyB0aGUgZWRnZSBvZiBtb3VudGVkXG4gICAqIGNvbnRlbnQgaW5zdGVhZCBvZiBibGFuayBzcGFjZXIuIFBhc3MgdW5kZWZpbmVkIHRvIGRpc2FibGUgKHN0aWNreSxcbiAgICogY29sZCBzdGFydCkuXG4gICAqL1xuICBzZXRDbGFtcEJvdW5kczogKG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkLCBtYXg6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBTY3JvbGxCb3hQcm9wcyA9IEV4Y2VwdDxcbiAgU3R5bGVzLFxuICAndGV4dFdyYXAnIHwgJ292ZXJmbG93JyB8ICdvdmVyZmxvd1gnIHwgJ292ZXJmbG93WSdcbj4gJiB7XG4gIHJlZj86IFJlZjxTY3JvbGxCb3hIYW5kbGU+XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGF1dG9tYXRpY2FsbHkgcGlucyBzY3JvbGwgcG9zaXRpb24gdG8gdGhlIGJvdHRvbSB3aGVuIGNvbnRlbnRcbiAgICogZ3Jvd3MuIFVuc2V0IG1hbnVhbGx5IHZpYSBzY3JvbGxUby9zY3JvbGxCeSB0byBicmVhayB0aGUgc3RpY2tpbmVzcy5cbiAgICovXG4gIHN0aWNreVNjcm9sbD86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBBIEJveCB3aXRoIGBvdmVyZmxvdzogc2Nyb2xsYCBhbmQgYW4gaW1wZXJhdGl2ZSBzY3JvbGwgQVBJLlxuICpcbiAqIENoaWxkcmVuIGFyZSBsYWlkIG91dCBhdCB0aGVpciBmdWxsIFlvZ2EtY29tcHV0ZWQgaGVpZ2h0IGluc2lkZSBhXG4gKiBjb25zdHJhaW5lZCBjb250YWluZXIuIEF0IHJlbmRlciB0aW1lLCBvbmx5IGNoaWxkcmVuIGludGVyc2VjdGluZyB0aGVcbiAqIHZpc2libGUgd2luZG93IChzY3JvbGxUb3AuLnNjcm9sbFRvcCtoZWlnaHQpIGFyZSByZW5kZXJlZCAodmlld3BvcnRcbiAqIGN1bGxpbmcpLiBDb250ZW50IGlzIHRyYW5zbGF0ZWQgYnkgLXNjcm9sbFRvcCBhbmQgY2xpcHBlZCB0byB0aGUgYm94IGJvdW5kcy5cbiAqXG4gKiBXb3JrcyBiZXN0IGluc2lkZSBhIGZ1bGxzY3JlZW4gKGNvbnN0cmFpbmVkLWhlaWdodCByb290KSBJbmsgdHJlZS5cbiAqL1xuZnVuY3Rpb24gU2Nyb2xsQm94KHtcbiAgY2hpbGRyZW4sXG4gIHJlZixcbiAgc3RpY2t5U2Nyb2xsLFxuICAuLi5zdHlsZVxufTogUHJvcHNXaXRoQ2hpbGRyZW48U2Nyb2xsQm94UHJvcHM+KTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgZG9tUmVmID0gdXNlUmVmPERPTUVsZW1lbnQ+KG51bGwpXG4gIC8vIHNjcm9sbFRvL3Njcm9sbEJ5IGJ5cGFzcyBSZWFjdDogdGhleSBtdXRhdGUgc2Nyb2xsVG9wIG9uIHRoZSBET00gbm9kZSxcbiAgLy8gbWFyayBpdCBkaXJ0eSwgYW5kIGNhbGwgdGhlIHJvb3QncyB0aHJvdHRsZWQgc2NoZWR1bGVSZW5kZXIgZGlyZWN0bHkuXG4gIC8vIFRoZSBJbmsgcmVuZGVyZXIgcmVhZHMgc2Nyb2xsVG9wIGZyb20gdGhlIG5vZGUg4oCUIG5vIFJlYWN0IHN0YXRlIG5lZWRlZCxcbiAgLy8gbm8gcmVjb25jaWxlciBvdmVyaGVhZCBwZXIgd2hlZWwgZXZlbnQuIFRoZSBtaWNyb3Rhc2sgZGVmZXIgY29hbGVzY2VzXG4gIC8vIG11bHRpcGxlIHNjcm9sbEJ5IGNhbGxzIGluIG9uZSBpbnB1dCBiYXRjaCAoZGlzY3JldGVVcGRhdGVzKSBpbnRvIG9uZVxuICAvLyByZW5kZXIg4oCUIG90aGVyd2lzZSBzY2hlZHVsZVJlbmRlcidzIGxlYWRpbmcgZWRnZSBmaXJlcyBvbiB0aGUgRklSU1RcbiAgLy8gZXZlbnQgYmVmb3JlIHN1YnNlcXVlbnQgZXZlbnRzIG11dGF0ZSBzY3JvbGxUb3AuIHNjcm9sbFRvQm90dG9tIHN0aWxsXG4gIC8vIGZvcmNlcyBhIFJlYWN0IHJlbmRlcjogc3RpY2t5IGlzIGF0dHJpYnV0ZS1vYnNlcnZlZCwgbm8gRE9NLW9ubHkgcGF0aC5cbiAgY29uc3QgWywgZm9yY2VSZW5kZXJdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgbGlzdGVuZXJzUmVmID0gdXNlUmVmKG5ldyBTZXQ8KCkgPT4gdm9pZD4oKSlcbiAgY29uc3QgcmVuZGVyUXVldWVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IG5vdGlmeSA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGwgb2YgbGlzdGVuZXJzUmVmLmN1cnJlbnQpIGwoKVxuICB9XG5cbiAgZnVuY3Rpb24gc2Nyb2xsTXV0YXRlZChlbDogRE9NRWxlbWVudCk6IHZvaWQge1xuICAgIC8vIFNpZ25hbCBiYWNrZ3JvdW5kIGludGVydmFscyAoSURFIHBvbGwsIExTUCBwb2xsLCBHQ1MgZmV0Y2gsIG9ycGhhblxuICAgIC8vIGNoZWNrKSB0byBza2lwIHRoZWlyIG5leHQgdGljayDigJQgdGhleSBjb21wZXRlIGZvciB0aGUgZXZlbnQgbG9vcCBhbmRcbiAgICAvLyBjb250cmlidXRlZCB0byAxNDAybXMgbWF4IGZyYW1lIGdhcHMgZHVyaW5nIHNjcm9sbCBkcmFpbi5cbiAgICBtYXJrU2Nyb2xsQWN0aXZpdHkoKVxuICAgIG1hcmtEaXJ0eShlbClcbiAgICBtYXJrQ29tbWl0U3RhcnQoKVxuICAgIG5vdGlmeSgpXG4gICAgaWYgKHJlbmRlclF1ZXVlZFJlZi5jdXJyZW50KSByZXR1cm5cbiAgICByZW5kZXJRdWV1ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICByZW5kZXJRdWV1ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzY2hlZHVsZVJlbmRlckZyb20oZWwpXG4gICAgfSlcbiAgfVxuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUoXG4gICAgcmVmLFxuICAgICgpOiBTY3JvbGxCb3hIYW5kbGUgPT4gKHtcbiAgICAgIHNjcm9sbFRvKHk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBlbCA9IGRvbVJlZi5jdXJyZW50XG4gICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICAvLyBFeHBsaWNpdCBmYWxzZSBvdmVycmlkZXMgdGhlIERPTSBhdHRyaWJ1dGUgc28gbWFudWFsIHNjcm9sbFxuICAgICAgICAvLyBicmVha3Mgc3RpY2tpbmVzcy4gUmVuZGVyIGNvZGUgY2hlY2tzID8/IHByZWNlZGVuY2UuXG4gICAgICAgIGVsLnN0aWNreVNjcm9sbCA9IGZhbHNlXG4gICAgICAgIGVsLnBlbmRpbmdTY3JvbGxEZWx0YSA9IHVuZGVmaW5lZFxuICAgICAgICBlbC5zY3JvbGxBbmNob3IgPSB1bmRlZmluZWRcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcih5KSlcbiAgICAgICAgc2Nyb2xsTXV0YXRlZChlbClcbiAgICAgIH0sXG4gICAgICBzY3JvbGxUb0VsZW1lbnQoZWw6IERPTUVsZW1lbnQsIG9mZnNldCA9IDApIHtcbiAgICAgICAgY29uc3QgYm94ID0gZG9tUmVmLmN1cnJlbnRcbiAgICAgICAgaWYgKCFib3gpIHJldHVyblxuICAgICAgICBib3guc3RpY2t5U2Nyb2xsID0gZmFsc2VcbiAgICAgICAgYm94LnBlbmRpbmdTY3JvbGxEZWx0YSA9IHVuZGVmaW5lZFxuICAgICAgICBib3guc2Nyb2xsQW5jaG9yID0geyBlbCwgb2Zmc2V0IH1cbiAgICAgICAgc2Nyb2xsTXV0YXRlZChib3gpXG4gICAgICB9LFxuICAgICAgc2Nyb2xsQnkoZHk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBlbCA9IGRvbVJlZi5jdXJyZW50XG4gICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICBlbC5zdGlja3lTY3JvbGwgPSBmYWxzZVxuICAgICAgICAvLyBXaGVlbCBpbnB1dCBjYW5jZWxzIGFueSBpbi1mbGlnaHQgYW5jaG9yIHNlZWsg4oCUIHVzZXIgb3ZlcnJpZGUuXG4gICAgICAgIGVsLnNjcm9sbEFuY2hvciA9IHVuZGVmaW5lZFxuICAgICAgICAvLyBBY2N1bXVsYXRlIGluIHBlbmRpbmdTY3JvbGxEZWx0YTsgcmVuZGVyZXIgZHJhaW5zIGl0IGF0IGEgY2FwcGVkXG4gICAgICAgIC8vIHJhdGUgc28gZmFzdCBmbGlja3Mgc2hvdyBpbnRlcm1lZGlhdGUgZnJhbWVzLiBQdXJlIGFjY3VtdWxhdG9yOlxuICAgICAgICAvLyBzY3JvbGwtdXAgZm9sbG93ZWQgYnkgc2Nyb2xsLWRvd24gbmF0dXJhbGx5IGNhbmNlbHMuXG4gICAgICAgIGVsLnBlbmRpbmdTY3JvbGxEZWx0YSA9IChlbC5wZW5kaW5nU2Nyb2xsRGVsdGEgPz8gMCkgKyBNYXRoLmZsb29yKGR5KVxuICAgICAgICBzY3JvbGxNdXRhdGVkKGVsKVxuICAgICAgfSxcbiAgICAgIHNjcm9sbFRvQm90dG9tKCkge1xuICAgICAgICBjb25zdCBlbCA9IGRvbVJlZi5jdXJyZW50XG4gICAgICAgIGlmICghZWwpIHJldHVyblxuICAgICAgICBlbC5wZW5kaW5nU2Nyb2xsRGVsdGEgPSB1bmRlZmluZWRcbiAgICAgICAgZWwuc3RpY2t5U2Nyb2xsID0gdHJ1ZVxuICAgICAgICBtYXJrRGlydHkoZWwpXG4gICAgICAgIG5vdGlmeSgpXG4gICAgICAgIGZvcmNlUmVuZGVyKG4gPT4gbiArIDEpXG4gICAgICB9LFxuICAgICAgZ2V0U2Nyb2xsVG9wKCkge1xuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnNjcm9sbFRvcCA/PyAwXG4gICAgICB9LFxuICAgICAgZ2V0UGVuZGluZ0RlbHRhKCkge1xuICAgICAgICAvLyBBY2N1bXVsYXRlZC1idXQtbm90LXlldC1kcmFpbmVkIGRlbHRhLiB1c2VWaXJ0dWFsU2Nyb2xsIG5lZWRzXG4gICAgICAgIC8vIHRoaXMgdG8gbW91bnQgdGhlIHVuaW9uIFtjb21taXR0ZWQsIGNvbW1pdHRlZCtwZW5kaW5nXSByYW5nZSDigJRcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGludGVybWVkaWF0ZSBkcmFpbiBmcmFtZXMgZmluZCBubyBjaGlsZHJlbiAoYmxhbmspLlxuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnBlbmRpbmdTY3JvbGxEZWx0YSA/PyAwXG4gICAgICB9LFxuICAgICAgZ2V0U2Nyb2xsSGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnNjcm9sbEhlaWdodCA/PyAwXG4gICAgICB9LFxuICAgICAgZ2V0RnJlc2hTY3JvbGxIZWlnaHQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb21SZWYuY3VycmVudD8uY2hpbGROb2Rlc1swXSBhcyBET01FbGVtZW50IHwgdW5kZWZpbmVkXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgY29udGVudD8ueW9nYU5vZGU/LmdldENvbXB1dGVkSGVpZ2h0KCkgPz9cbiAgICAgICAgICBkb21SZWYuY3VycmVudD8uc2Nyb2xsSGVpZ2h0ID8/XG4gICAgICAgICAgMFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgZ2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiBkb21SZWYuY3VycmVudD8uc2Nyb2xsVmlld3BvcnRIZWlnaHQgPz8gMFxuICAgICAgfSxcbiAgICAgIGdldFZpZXdwb3J0VG9wKCkge1xuICAgICAgICByZXR1cm4gZG9tUmVmLmN1cnJlbnQ/LnNjcm9sbFZpZXdwb3J0VG9wID8/IDBcbiAgICAgIH0sXG4gICAgICBpc1N0aWNreSgpIHtcbiAgICAgICAgY29uc3QgZWwgPSBkb21SZWYuY3VycmVudFxuICAgICAgICBpZiAoIWVsKSByZXR1cm4gZmFsc2VcbiAgICAgICAgcmV0dXJuIGVsLnN0aWNreVNjcm9sbCA/PyBCb29sZWFuKGVsLmF0dHJpYnV0ZXNbJ3N0aWNreVNjcm9sbCddKVxuICAgICAgfSxcbiAgICAgIHN1YnNjcmliZShsaXN0ZW5lcjogKCkgPT4gdm9pZCkge1xuICAgICAgICBsaXN0ZW5lcnNSZWYuY3VycmVudC5hZGQobGlzdGVuZXIpXG4gICAgICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lcnNSZWYuY3VycmVudC5kZWxldGUobGlzdGVuZXIpXG4gICAgICB9LFxuICAgICAgc2V0Q2xhbXBCb3VuZHMobWluLCBtYXgpIHtcbiAgICAgICAgY29uc3QgZWwgPSBkb21SZWYuY3VycmVudFxuICAgICAgICBpZiAoIWVsKSByZXR1cm5cbiAgICAgICAgZWwuc2Nyb2xsQ2xhbXBNaW4gPSBtaW5cbiAgICAgICAgZWwuc2Nyb2xsQ2xhbXBNYXggPSBtYXhcbiAgICAgIH0sXG4gICAgfSksXG4gICAgLy8gbm90aWZ5L3Njcm9sbE11dGF0ZWQgYXJlIGlubGluZSAobm8gdXNlQ2FsbGJhY2spIGJ1dCBvbmx5IGNsb3NlIG92ZXJcbiAgICAvLyByZWZzICsgaW1wb3J0cyDigJQgc3RhYmxlLiBFbXB0eSBkZXBzIGF2b2lkcyByZWJ1aWxkaW5nIHRoZSBoYW5kbGUgb25cbiAgICAvLyBldmVyeSByZW5kZXIgKHdoaWNoIHJlLXJlZ2lzdGVycyB0aGUgcmVmID0gY2h1cm4pLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICBbXSxcbiAgKVxuXG4gIC8vIFN0cnVjdHVyZTogb3V0ZXIgdmlld3BvcnQgKG92ZXJmbG93OnNjcm9sbCwgY29uc3RyYWluZWQgaGVpZ2h0KSA+XG4gIC8vIGlubmVyIGNvbnRlbnQgKGZsZXhHcm93OjEsIGZsZXhTaHJpbms6MCDigJQgZmlsbHMgYXQgbGVhc3QgdGhlIHZpZXdwb3J0XG4gIC8vIGJ1dCBncm93cyBiZXlvbmQgaXQgZm9yIHRhbGwgY29udGVudCkuIGZsZXhHcm93OjEgbGV0cyBjaGlsZHJlbiB1c2VcbiAgLy8gc3BhY2VycyB0byBwaW4gZWxlbWVudHMgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2Nyb2xsIGFyZWEuIFlvZ2Enc1xuICAvLyBPdmVyZmxvdy5TY3JvbGwgcHJldmVudHMgdGhlIHZpZXdwb3J0IGZyb20gZ3Jvd2luZyB0byBmaXQgdGhlIGNvbnRlbnQuXG4gIC8vIFRoZSByZW5kZXJlciBjb21wdXRlcyBzY3JvbGxIZWlnaHQgZnJvbSB0aGUgY29udGVudCBib3ggYW5kIGN1bGxzXG4gIC8vIGNvbnRlbnQncyBjaGlsZHJlbiBiYXNlZCBvbiBzY3JvbGxUb3AuXG4gIC8vXG4gIC8vIHN0aWNreVNjcm9sbCBpcyBwYXNzZWQgYXMgYSBET00gYXR0cmlidXRlICh2aWEgaW5rLWJveCBkaXJlY3RseSkgc28gaXQnc1xuICAvLyBhdmFpbGFibGUgb24gdGhlIGZpcnN0IHJlbmRlciDigJQgcmVmIGNhbGxiYWNrcyBmaXJlIGFmdGVyIHRoZSBpbml0aWFsXG4gIC8vIGNvbW1pdCwgd2hpY2ggaXMgdG9vIGxhdGUgZm9yIHRoZSBmaXJzdCBmcmFtZS5cbiAgcmV0dXJuIChcbiAgICA8aW5rLWJveFxuICAgICAgcmVmPXtlbCA9PiB7XG4gICAgICAgIGRvbVJlZi5jdXJyZW50ID0gZWxcbiAgICAgICAgaWYgKGVsKSBlbC5zY3JvbGxUb3AgPz89IDBcbiAgICAgIH19XG4gICAgICBzdHlsZT17e1xuICAgICAgICBmbGV4V3JhcDogJ25vd3JhcCcsXG4gICAgICAgIGZsZXhEaXJlY3Rpb246IHN0eWxlLmZsZXhEaXJlY3Rpb24gPz8gJ3JvdycsXG4gICAgICAgIGZsZXhHcm93OiBzdHlsZS5mbGV4R3JvdyA/PyAwLFxuICAgICAgICBmbGV4U2hyaW5rOiBzdHlsZS5mbGV4U2hyaW5rID8/IDEsXG4gICAgICAgIC4uLnN0eWxlLFxuICAgICAgICBvdmVyZmxvd1g6ICdzY3JvbGwnLFxuICAgICAgICBvdmVyZmxvd1k6ICdzY3JvbGwnLFxuICAgICAgfX1cbiAgICAgIHsuLi4oc3RpY2t5U2Nyb2xsID8geyBzdGlja3lTY3JvbGw6IHRydWUgfSA6IHt9KX1cbiAgICA+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBmbGV4R3Jvdz17MX0gZmxleFNocmluaz17MH0gd2lkdGg9XCIxMDAlXCI+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQm94PlxuICAgIDwvaW5rLWJveD5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBTY3JvbGxCb3hcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUNWLEtBQUtDLGlCQUFpQixFQUN0QixLQUFLQyxHQUFHLEVBQ1JDLG1CQUFtQixFQUNuQkMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLGNBQWNDLE1BQU0sUUFBUSxXQUFXO0FBQ3ZDLFNBQVNDLGtCQUFrQixRQUFRLDBCQUEwQjtBQUM3RCxjQUFjQyxVQUFVLFFBQVEsV0FBVztBQUMzQyxTQUFTQyxTQUFTLEVBQUVDLGtCQUFrQixRQUFRLFdBQVc7QUFDekQsU0FBU0MsZUFBZSxRQUFRLGtCQUFrQjtBQUNsRCxjQUFjQyxNQUFNLFFBQVEsY0FBYztBQUMxQyxPQUFPLGdCQUFnQjtBQUN2QixPQUFPQyxHQUFHLE1BQU0sVUFBVTtBQUUxQixPQUFPLEtBQUtDLGVBQWUsR0FBRztFQUM1QkMsUUFBUSxFQUFFLENBQUNDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJO0VBQzdCQyxRQUFRLEVBQUUsQ0FBQ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUk7RUFDOUI7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsZUFBZSxFQUFFLENBQUNDLEVBQUUsRUFBRVosVUFBVSxFQUFFYSxNQUFlLENBQVIsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJO0VBQzFEQyxjQUFjLEVBQUUsR0FBRyxHQUFHLElBQUk7RUFDMUJDLFlBQVksRUFBRSxHQUFHLEdBQUcsTUFBTTtFQUMxQkMsZUFBZSxFQUFFLEdB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
diff --git a/restored-src/src/ink/global.d.ts b/restored-src/src/ink/global.d.ts
new file mode 100644
index 000000000..336ce12bb
--- /dev/null
+++ b/restored-src/src/ink/global.d.ts
@@ -0,0 +1 @@
+export {}
diff --git a/restored-src/src/native-ts/color-diff/index.ts b/restored-src/src/native-ts/color-diff/index.ts
index d2757d3d1..dcedbc3db 100644
--- a/restored-src/src/native-ts/color-diff/index.ts
+++ b/restored-src/src/native-ts/color-diff/index.ts
@@ -17,7 +17,7 @@
* getSyntaxTheme always returns the default for the given Claude theme.
*/
-import { diffArrays } from 'diff'
+import { diffArrays } from 'diff/libesm/diff/array.js'
import type * as hljsNamespace from 'highlight.js'
import { basename, extname } from 'path'
diff --git a/restored-src/src/services/analytics/firstPartyEventLogger.ts b/restored-src/src/services/analytics/firstPartyEventLogger.ts
index e3a501d74..18578683d 100644
--- a/restored-src/src/services/analytics/firstPartyEventLogger.ts
+++ b/restored-src/src/services/analytics/firstPartyEventLogger.ts
@@ -9,7 +9,7 @@ import {
ATTR_SERVICE_VERSION,
} from '@opentelemetry/semantic-conventions'
import { randomUUID } from 'crypto'
-import { isEqual } from 'lodash-es'
+import isEqual from 'lodash-es/isEqual.js'
import { getOrCreateUserID } from '../../utils/config.js'
import { logForDebugging } from '../../utils/debug.js'
import { logError } from '../../utils/log.js'
diff --git a/restored-src/src/services/analytics/growthbook.ts b/restored-src/src/services/analytics/growthbook.ts
index c71bba849..c36f20d2e 100644
--- a/restored-src/src/services/analytics/growthbook.ts
+++ b/restored-src/src/services/analytics/growthbook.ts
@@ -1,5 +1,6 @@
-import { GrowthBook } from '@growthbook/growthbook'
-import { isEqual, memoize } from 'lodash-es'
+import { GrowthBook } from '@growthbook/growthbook/dist/esm/GrowthBook.mjs'
+import isEqual from 'lodash-es/isEqual.js'
+import memoize from 'lodash-es/memoize.js'
import {
getIsNonInteractiveSession,
getSessionTrustAccepted,
diff --git a/restored-src/src/services/api/promptCacheBreakDetection.ts b/restored-src/src/services/api/promptCacheBreakDetection.ts
index 1599d537e..90151d28b 100644
--- a/restored-src/src/services/api/promptCacheBreakDetection.ts
+++ b/restored-src/src/services/api/promptCacheBreakDetection.ts
@@ -1,6 +1,6 @@
import type { BetaToolUnion } from '@anthropic-ai/sdk/resources/beta/messages/messages.mjs'
import type { TextBlockParam } from '@anthropic-ai/sdk/resources/index.mjs'
-import { createPatch } from 'diff'
+import { createPatch } from 'diff/libesm/patch/create.js'
import { mkdir, writeFile } from 'fs/promises'
import { join } from 'path'
import type { AgentId } from 'src/types/ids.js'
diff --git a/restored-src/src/skills/bundled/claudeApiContent.ts b/restored-src/src/skills/bundled/claudeApiContent.ts
index cba76a3b3..7baf6fc84 100644
--- a/restored-src/src/skills/bundled/claudeApiContent.ts
+++ b/restored-src/src/skills/bundled/claudeApiContent.ts
@@ -1,38 +1,6 @@
-// Content for the claude-api bundled skill.
-// Each .md file is inlined as a string at build time via Bun's text loader.
+// Restored source builds do not include the bundled Claude API markdown
+// documentation tree. Provide placeholders so skill registration can load.
-import csharpClaudeApi from './claude-api/csharp/claude-api.md'
-import curlExamples from './claude-api/curl/examples.md'
-import goClaudeApi from './claude-api/go/claude-api.md'
-import javaClaudeApi from './claude-api/java/claude-api.md'
-import phpClaudeApi from './claude-api/php/claude-api.md'
-import pythonAgentSdkPatterns from './claude-api/python/agent-sdk/patterns.md'
-import pythonAgentSdkReadme from './claude-api/python/agent-sdk/README.md'
-import pythonClaudeApiBatches from './claude-api/python/claude-api/batches.md'
-import pythonClaudeApiFilesApi from './claude-api/python/claude-api/files-api.md'
-import pythonClaudeApiReadme from './claude-api/python/claude-api/README.md'
-import pythonClaudeApiStreaming from './claude-api/python/claude-api/streaming.md'
-import pythonClaudeApiToolUse from './claude-api/python/claude-api/tool-use.md'
-import rubyClaudeApi from './claude-api/ruby/claude-api.md'
-import skillPrompt from './claude-api/SKILL.md'
-import sharedErrorCodes from './claude-api/shared/error-codes.md'
-import sharedLiveSources from './claude-api/shared/live-sources.md'
-import sharedModels from './claude-api/shared/models.md'
-import sharedPromptCaching from './claude-api/shared/prompt-caching.md'
-import sharedToolUseConcepts from './claude-api/shared/tool-use-concepts.md'
-import typescriptAgentSdkPatterns from './claude-api/typescript/agent-sdk/patterns.md'
-import typescriptAgentSdkReadme from './claude-api/typescript/agent-sdk/README.md'
-import typescriptClaudeApiBatches from './claude-api/typescript/claude-api/batches.md'
-import typescriptClaudeApiFilesApi from './claude-api/typescript/claude-api/files-api.md'
-import typescriptClaudeApiReadme from './claude-api/typescript/claude-api/README.md'
-import typescriptClaudeApiStreaming from './claude-api/typescript/claude-api/streaming.md'
-import typescriptClaudeApiToolUse from './claude-api/typescript/claude-api/tool-use.md'
-
-// @[MODEL LAUNCH]: Update the model IDs/names below. These are substituted into {{VAR}}
-// placeholders in the .md files at runtime before the skill prompt is sent.
-// After updating these constants, manually update the two files that still hardcode models:
-// - claude-api/SKILL.md (Current Models pricing table)
-// - claude-api/shared/models.md (full model catalog with legacy versions and alias mappings)
export const SKILL_MODEL_VARS = {
OPUS_ID: 'claude-opus-4-6',
OPUS_NAME: 'Claude Opus 4.6',
@@ -40,36 +8,15 @@ export const SKILL_MODEL_VARS = {
SONNET_NAME: 'Claude Sonnet 4.6',
HAIKU_ID: 'claude-haiku-4-5',
HAIKU_NAME: 'Claude Haiku 4.5',
- // Previous Sonnet ID — used in "do not append date suffixes" example in SKILL.md.
PREV_SONNET_ID: 'claude-sonnet-4-5',
} satisfies Record
-export const SKILL_PROMPT: string = skillPrompt
+export const SKILL_PROMPT = `# Claude API
+
+Bundled Claude API documentation is unavailable in this restored source build.
+`
export const SKILL_FILES: Record = {
- 'csharp/claude-api.md': csharpClaudeApi,
- 'curl/examples.md': curlExamples,
- 'go/claude-api.md': goClaudeApi,
- 'java/claude-api.md': javaClaudeApi,
- 'php/claude-api.md': phpClaudeApi,
- 'python/agent-sdk/README.md': pythonAgentSdkReadme,
- 'python/agent-sdk/patterns.md': pythonAgentSdkPatterns,
- 'python/claude-api/README.md': pythonClaudeApiReadme,
- 'python/claude-api/batches.md': pythonClaudeApiBatches,
- 'python/claude-api/files-api.md': pythonClaudeApiFilesApi,
- 'python/claude-api/streaming.md': pythonClaudeApiStreaming,
- 'python/claude-api/tool-use.md': pythonClaudeApiToolUse,
- 'ruby/claude-api.md': rubyClaudeApi,
- 'shared/error-codes.md': sharedErrorCodes,
- 'shared/live-sources.md': sharedLiveSources,
- 'shared/models.md': sharedModels,
- 'shared/prompt-caching.md': sharedPromptCaching,
- 'shared/tool-use-concepts.md': sharedToolUseConcepts,
- 'typescript/agent-sdk/README.md': typescriptAgentSdkReadme,
- 'typescript/agent-sdk/patterns.md': typescriptAgentSdkPatterns,
- 'typescript/claude-api/README.md': typescriptClaudeApiReadme,
- 'typescript/claude-api/batches.md': typescriptClaudeApiBatches,
- 'typescript/claude-api/files-api.md': typescriptClaudeApiFilesApi,
- 'typescript/claude-api/streaming.md': typescriptClaudeApiStreaming,
- 'typescript/claude-api/tool-use.md': typescriptClaudeApiToolUse,
+ 'shared/live-sources.md':
+ 'Bundled Claude API reference files are unavailable in this restored source build.\n',
}
diff --git a/restored-src/src/skills/bundled/verifyContent.ts b/restored-src/src/skills/bundled/verifyContent.ts
index a90044fdd..8088e60c8 100644
--- a/restored-src/src/skills/bundled/verifyContent.ts
+++ b/restored-src/src/skills/bundled/verifyContent.ts
@@ -1,13 +1,18 @@
-// Content for the verify bundled skill.
-// Each .md file is inlined as a string at build time via Bun's text loader.
+// Restored source builds do not include the bundled markdown assets that the
+// official build inlines here. Keep the module surface intact with placeholders.
-import cliMd from './verify/examples/cli.md'
-import serverMd from './verify/examples/server.md'
-import skillMd from './verify/SKILL.md'
+export const SKILL_MD = `---
+description: Verify a code change does what it should by running the app.
+---
-export const SKILL_MD: string = skillMd
+# Verify
+
+Bundled verify skill content is unavailable in this restored source build.
+`
export const SKILL_FILES: Record = {
- 'examples/cli.md': cliMd,
- 'examples/server.md': serverMd,
+ 'examples/cli.md':
+ 'CLI verification example is unavailable in this restored source build.\n',
+ 'examples/server.md':
+ 'Server verification example is unavailable in this restored source build.\n',
}
diff --git a/restored-src/src/tools/FileEditTool/utils.ts b/restored-src/src/tools/FileEditTool/utils.ts
index 2520ed553..1a4362ce8 100644
--- a/restored-src/src/tools/FileEditTool/utils.ts
+++ b/restored-src/src/tools/FileEditTool/utils.ts
@@ -1,4 +1,5 @@
-import { type StructuredPatchHunk, structuredPatch } from 'diff'
+import type { StructuredPatchHunk } from 'diff'
+import { structuredPatch } from 'diff/libesm/patch/create.js'
import { logError } from 'src/utils/log.js'
import { expandPath } from 'src/utils/path.js'
import { countCharInString } from 'src/utils/stringUtils.js'
diff --git a/restored-src/src/tools/SkillTool/prompt.ts b/restored-src/src/tools/SkillTool/prompt.ts
index b05a58f3d..1bd61fa07 100644
--- a/restored-src/src/tools/SkillTool/prompt.ts
+++ b/restored-src/src/tools/SkillTool/prompt.ts
@@ -1,4 +1,4 @@
-import { memoize } from 'lodash-es'
+import memoize from 'lodash-es/memoize.js'
import type { Command } from 'src/commands.js'
import {
getCommandName,
diff --git a/restored-src/src/tools/TungstenTool/TungstenLiveMonitor.tsx b/restored-src/src/tools/TungstenTool/TungstenLiveMonitor.tsx
new file mode 100644
index 000000000..1340073be
--- /dev/null
+++ b/restored-src/src/tools/TungstenTool/TungstenLiveMonitor.tsx
@@ -0,0 +1,3 @@
+export function TungstenLiveMonitor() {
+ return null
+}
diff --git a/restored-src/src/tools/TungstenTool/TungstenTool.ts b/restored-src/src/tools/TungstenTool/TungstenTool.ts
new file mode 100644
index 000000000..5e37fb727
--- /dev/null
+++ b/restored-src/src/tools/TungstenTool/TungstenTool.ts
@@ -0,0 +1,40 @@
+import { z } from 'zod/v4'
+
+const UNAVAILABLE_MESSAGE =
+ 'TungstenTool is unavailable in this restored source build.'
+
+const inputSchema = z.object({}).passthrough()
+
+export const TungstenTool = {
+ name: 'TungstenTool',
+ inputSchema,
+ maxResultSizeChars: 0,
+ async call() {
+ throw new Error(UNAVAILABLE_MESSAGE)
+ },
+ async checkPermissions() {
+ throw new Error(UNAVAILABLE_MESSAGE)
+ },
+ async description() {
+ return UNAVAILABLE_MESSAGE
+ },
+ async prompt() {
+ return UNAVAILABLE_MESSAGE
+ },
+ isConcurrencySafe() {
+ return true
+ },
+ isEnabled() {
+ return false
+ },
+ isReadOnly() {
+ return false
+ },
+ userFacingName() {
+ return 'TungstenTool'
+ },
+}
+
+export function clearSessionsWithTungstenUsage(): void {}
+
+export function resetInitializationState(): void {}
diff --git a/restored-src/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx b/restored-src/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx
new file mode 100644
index 000000000..f1b153ac9
--- /dev/null
+++ b/restored-src/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx
@@ -0,0 +1,3 @@
+export function WorkflowPermissionRequest() {
+ return null
+}
diff --git a/restored-src/src/tools/WorkflowTool/WorkflowTool.ts b/restored-src/src/tools/WorkflowTool/WorkflowTool.ts
new file mode 100644
index 000000000..69cfdd346
--- /dev/null
+++ b/restored-src/src/tools/WorkflowTool/WorkflowTool.ts
@@ -0,0 +1,35 @@
+import { z } from 'zod/v4'
+import { WORKFLOW_TOOL_NAME } from './constants.js'
+
+const UNAVAILABLE_MESSAGE =
+ 'WorkflowTool is unavailable in this restored source build.'
+
+export const WorkflowTool = {
+ name: WORKFLOW_TOOL_NAME,
+ inputSchema: z.object({}).passthrough(),
+ maxResultSizeChars: 0,
+ async call() {
+ throw new Error(UNAVAILABLE_MESSAGE)
+ },
+ async checkPermissions() {
+ throw new Error(UNAVAILABLE_MESSAGE)
+ },
+ async description() {
+ return UNAVAILABLE_MESSAGE
+ },
+ async prompt() {
+ return UNAVAILABLE_MESSAGE
+ },
+ isConcurrencySafe() {
+ return true
+ },
+ isEnabled() {
+ return false
+ },
+ isReadOnly() {
+ return false
+ },
+ userFacingName() {
+ return WORKFLOW_TOOL_NAME
+ },
+}
diff --git a/restored-src/src/tools/WorkflowTool/bundled/index.js b/restored-src/src/tools/WorkflowTool/bundled/index.js
new file mode 100644
index 000000000..ea54c8246
--- /dev/null
+++ b/restored-src/src/tools/WorkflowTool/bundled/index.js
@@ -0,0 +1 @@
+export function initBundledWorkflows() {}
diff --git a/restored-src/src/tools/WorkflowTool/constants.ts b/restored-src/src/tools/WorkflowTool/constants.ts
new file mode 100644
index 000000000..473d974fa
--- /dev/null
+++ b/restored-src/src/tools/WorkflowTool/constants.ts
@@ -0,0 +1 @@
+export const WORKFLOW_TOOL_NAME = 'WorkflowTool'
diff --git a/restored-src/src/tools/WorkflowTool/createWorkflowCommand.ts b/restored-src/src/tools/WorkflowTool/createWorkflowCommand.ts
new file mode 100644
index 000000000..a042354d1
--- /dev/null
+++ b/restored-src/src/tools/WorkflowTool/createWorkflowCommand.ts
@@ -0,0 +1,3 @@
+export function getWorkflowCommands() {
+ return []
+}
diff --git a/restored-src/src/types/connectorText.ts b/restored-src/src/types/connectorText.ts
new file mode 100644
index 000000000..0b99904fe
--- /dev/null
+++ b/restored-src/src/types/connectorText.ts
@@ -0,0 +1,22 @@
+export type ConnectorTextBlock = {
+ type: 'connector_text'
+ connector_text: string
+}
+
+export type ConnectorTextDelta = {
+ type: 'connector_text_delta'
+ connector_text: string
+}
+
+export function isConnectorTextBlock(
+ value: unknown,
+): value is ConnectorTextBlock {
+ return (
+ typeof value === 'object' &&
+ value !== null &&
+ 'type' in value &&
+ (value as { type?: unknown }).type === 'connector_text' &&
+ 'connector_text' in value &&
+ typeof (value as { connector_text?: unknown }).connector_text === 'string'
+ )
+}
diff --git a/restored-src/src/utils/diff.ts b/restored-src/src/utils/diff.ts
index 38e7c1bf6..24628d74e 100644
--- a/restored-src/src/utils/diff.ts
+++ b/restored-src/src/utils/diff.ts
@@ -1,4 +1,5 @@
-import { type StructuredPatchHunk, structuredPatch } from 'diff'
+import type { StructuredPatchHunk } from 'diff'
+import { structuredPatch } from 'diff/libesm/patch/create.js'
import { logEvent } from 'src/services/analytics/index.js'
import { getLocCounter } from '../bootstrap/state.js'
import { addToTotalLinesChanged } from '../cost-tracker.js'
diff --git a/restored-src/src/utils/execFileNoThrow.ts b/restored-src/src/utils/execFileNoThrow.ts
index c21a6f01d..fbe0fbdb0 100644
--- a/restored-src/src/utils/execFileNoThrow.ts
+++ b/restored-src/src/utils/execFileNoThrow.ts
@@ -1,8 +1,9 @@
-// This file represents useful wrappers over node:child_process
-// These wrappers ease error handling and cross-platform compatbility
-// By using execa, Windows automatically gets shell escaping + BAT / CMD handling
+// This file represents useful wrappers over node:child_process.
+// It intentionally avoids shell semantics by default: callers pass an
+// executable plus argv, so spawning the file directly is both safer and more
+// predictable than routing through cross-spawn/cmd.exe.
-import { type ExecaError, execa } from 'execa'
+import { spawn } from 'child_process'
import { getCwd } from '../utils/cwd.js'
import { logError } from './log.js'
@@ -106,45 +107,123 @@ export function execFileNoThrowWithCwd(
},
): Promise<{ stdout: string; stderr: string; code: number; error?: string }> {
return new Promise(resolve => {
- // Use execa for cross-platform .bat/.cmd compatibility on Windows
- execa(file, args, {
- maxBuffer,
- signal: abortSignal,
- timeout: finalTimeout,
- cwd: finalCwd,
- env: finalEnv,
- shell,
- stdin: finalStdin,
- input: finalInput,
- reject: false, // Don't throw on non-zero exit codes
- })
- .then(result => {
- if (result.failed) {
- if (finalPreserveOutput) {
- const errorCode = result.exitCode ?? 1
- void resolve({
- stdout: result.stdout || '',
- stderr: result.stderr || '',
- code: errorCode,
- error: getErrorMessage(
- result as unknown as ExecaResultWithError,
- errorCode,
- ),
- })
- } else {
- void resolve({ stdout: '', stderr: '', code: result.exitCode ?? 1 })
- }
- } else {
- void resolve({
- stdout: result.stdout,
- stderr: result.stderr,
- code: 0,
- })
- }
+ const stdinMode = finalInput !== undefined ? 'pipe' : (finalStdin ?? 'pipe')
+ let child
+ try {
+ child = spawn(file, args, {
+ cwd: finalCwd,
+ env: finalEnv,
+ shell,
+ signal: abortSignal,
+ stdio: [stdinMode, 'pipe', 'pipe'],
+ windowsHide: true,
})
- .catch((error: ExecaError) => {
- logError(error)
- void resolve({ stdout: '', stderr: '', code: 1 })
+ } catch (error) {
+ logError(error)
+ resolve({
+ stdout: '',
+ stderr: '',
+ code: 1,
+ error: error instanceof Error ? error.message : String(error),
})
+ return
+ }
+
+ let stdout = ''
+ let stderr = ''
+ let settled = false
+ let timedOut = false
+ let timer: ReturnType | undefined
+
+ const finish = (result: {
+ stdout: string
+ stderr: string
+ code: number
+ error?: string
+ }) => {
+ if (settled) return
+ settled = true
+ clearTimeout(timer)
+ resolve(result)
+ }
+
+ const appendChunk = (
+ current: string,
+ chunk: Buffer | string,
+ ): { next: string; overflowed: boolean } => {
+ const text = typeof chunk === 'string' ? chunk : chunk.toString('utf8')
+ if (maxBuffer === undefined) {
+ return { next: current + text, overflowed: false }
+ }
+ const next = current + text
+ if (next.length <= maxBuffer) {
+ return { next, overflowed: false }
+ }
+ return {
+ next: next.slice(0, maxBuffer),
+ overflowed: true,
+ }
+ }
+
+ child.stdout?.on('data', chunk => {
+ const result = appendChunk(stdout, chunk)
+ stdout = result.next
+ if (result.overflowed) {
+ child.kill()
+ }
+ })
+
+ child.stderr?.on('data', chunk => {
+ const result = appendChunk(stderr, chunk)
+ stderr = result.next
+ if (result.overflowed) {
+ child.kill()
+ }
+ })
+
+ child.on('error', error => {
+ logError(error)
+ finish({ stdout: '', stderr: '', code: 1, error: error.message })
+ })
+
+ child.on('close', (code, signal) => {
+ const exitCode = typeof code === 'number' ? code : 1
+ if (exitCode === 0 && !signal && !timedOut) {
+ finish({ stdout, stderr, code: 0 })
+ return
+ }
+
+ const output = finalPreserveOutput ? { stdout, stderr } : { stdout: '', stderr: '' }
+ const signalName = typeof signal === 'string' ? signal : undefined
+ finish({
+ ...output,
+ code: exitCode,
+ error: timedOut
+ ? `timed out after ${finalTimeout}ms`
+ : getErrorMessage(
+ {
+ shortMessage:
+ output.stderr.trim() || output.stdout.trim() || undefined,
+ signal: signalName,
+ },
+ exitCode,
+ ),
+ })
+ })
+
+ if (finalInput !== undefined && child.stdin) {
+ child.stdin.end(finalInput)
+ }
+
+ if (stdinMode === 'ignore') {
+ child.stdin?.end()
+ }
+
+ if (finalTimeout !== undefined && finalTimeout > 0) {
+ timer = setTimeout(() => {
+ timedOut = true
+ child.kill()
+ }, finalTimeout)
+ }
})
}
diff --git a/restored-src/src/utils/fileHistory.ts b/restored-src/src/utils/fileHistory.ts
index 4e227d997..4849b2c11 100644
--- a/restored-src/src/utils/fileHistory.ts
+++ b/restored-src/src/utils/fileHistory.ts
@@ -1,5 +1,5 @@
import { createHash, type UUID } from 'crypto'
-import { diffLines } from 'diff'
+import { diffLines } from 'diff/libesm/diff/line.js'
import type { Stats } from 'fs'
import {
chmod,
diff --git a/restored-src/src/utils/ripgrep.ts b/restored-src/src/utils/ripgrep.ts
index 683da0516..06d128e6b 100644
--- a/restored-src/src/utils/ripgrep.ts
+++ b/restored-src/src/utils/ripgrep.ts
@@ -1,5 +1,6 @@
import type { ChildProcess, ExecFileException } from 'child_process'
import { execFile, spawn } from 'child_process'
+import { existsSync } from 'fs'
import memoize from 'lodash-es/memoize.js'
import { homedir } from 'os'
import * as path from 'path'
@@ -61,6 +62,17 @@ const getRipgrepConfig = memoize((): RipgrepConfig => {
? path.resolve(rgRoot, `${process.arch}-win32`, 'rg.exe')
: path.resolve(rgRoot, `${process.arch}-${process.platform}`, 'rg')
+ if (existsSync(command)) {
+ return { mode: 'builtin', command, args: [] }
+ }
+
+ // Restored-source/dev shells may not carry the vendored ripgrep artifact.
+ // Fall back to a system rg if one is available rather than hard-failing.
+ const { cmd: fallbackSystemPath } = findExecutable('rg', [])
+ if (fallbackSystemPath !== 'rg') {
+ return { mode: 'system', command: 'rg', args: [] }
+ }
+
return { mode: 'builtin', command, args: [] }
})
diff --git a/restored-src/src/utils/sandbox/sandbox-adapter.ts b/restored-src/src/utils/sandbox/sandbox-adapter.ts
index 170ecac78..aac8813ad 100644
--- a/restored-src/src/utils/sandbox/sandbox-adapter.ts
+++ b/restored-src/src/utils/sandbox/sandbox-adapter.ts
@@ -22,7 +22,7 @@ import {
} from '@anthropic-ai/sandbox-runtime'
import { rmSync, statSync } from 'fs'
import { readFile } from 'fs/promises'
-import { memoize } from 'lodash-es'
+import memoize from 'lodash-es/memoize.js'
import { join, resolve, sep } from 'path'
import {
getAdditionalDirectoriesForClaudeMd,
diff --git a/restored-src/src/utils/settings/mdm/rawRead.ts b/restored-src/src/utils/settings/mdm/rawRead.ts
index 18aeacafd..ef067398a 100644
--- a/restored-src/src/utils/settings/mdm/rawRead.ts
+++ b/restored-src/src/utils/settings/mdm/rawRead.ts
@@ -34,15 +34,21 @@ function execFilePromise(
args: string[],
): Promise<{ stdout: string; code: number | null }> {
return new Promise(resolve => {
- execFile(
- cmd,
- args,
- { encoding: 'utf-8', timeout: MDM_SUBPROCESS_TIMEOUT_MS },
- (err, stdout) => {
- // biome-ignore lint/nursery/noFloatingPromises: resolve() is not a floating promise
- resolve({ stdout: stdout ?? '', code: err ? 1 : 0 })
- },
- )
+ try {
+ execFile(
+ cmd,
+ args,
+ { encoding: 'utf-8', timeout: MDM_SUBPROCESS_TIMEOUT_MS },
+ (err, stdout) => {
+ // biome-ignore lint/nursery/noFloatingPromises: resolve() is not a floating promise
+ resolve({ stdout: stdout ?? '', code: err ? 1 : 0 })
+ },
+ )
+ } catch {
+ // Fail open: MDM startup probes must never block the CLI if the host
+ // forbids spawning platform helpers such as `reg`/`plutil`.
+ resolve({ stdout: '', code: 1 })
+ }
})
}
diff --git a/restored-src/src/utils/windowsPaths.ts b/restored-src/src/utils/windowsPaths.ts
index c0774ea87..4a2635fe6 100644
--- a/restored-src/src/utils/windowsPaths.ts
+++ b/restored-src/src/utils/windowsPaths.ts
@@ -1,24 +1,20 @@
+import { existsSync } from 'fs'
import memoize from 'lodash-es/memoize.js'
import * as path from 'path'
import * as pathWin32 from 'path/win32'
import { getCwd } from './cwd.js'
import { logForDebugging } from './debug.js'
-import { execSync_DEPRECATED } from './execSyncWrapper.js'
import { memoizeWithLRU } from './memoize.js'
import { getPlatform } from './platform.js'
+import { whichSync } from './which.js'
/**
- * Check if a file or directory exists on Windows using the dir command
+ * Check if a file or directory exists on Windows.
* @param path - The path to check
* @returns true if the path exists, false otherwise
*/
function checkPathExists(path: string): boolean {
- try {
- execSync_DEPRECATED(`dir "${path}"`, { stdio: 'pipe' })
- return true
- } catch {
- return false
- }
+ return existsSync(path)
}
/**
@@ -44,39 +40,26 @@ function findExecutable(executable: string): string | null {
}
}
- // Fall back to where.exe
- try {
- const result = execSync_DEPRECATED(`where.exe ${executable}`, {
- stdio: 'pipe',
- encoding: 'utf8',
- }).trim()
-
- // SECURITY: Filter out any results from the current directory
- // to prevent executing malicious git.bat/cmd/exe files
- const paths = result.split('\r\n').filter(Boolean)
- const cwd = getCwd().toLowerCase()
-
- for (const candidatePath of paths) {
- // Normalize and compare paths to ensure we're not in current directory
- const normalizedPath = path.resolve(candidatePath).toLowerCase()
- const pathDir = path.dirname(normalizedPath).toLowerCase()
-
- // Skip if the executable is in the current working directory
- if (pathDir === cwd || normalizedPath.startsWith(cwd + path.sep)) {
- logForDebugging(
- `Skipping potentially malicious executable in current directory: ${candidatePath}`,
- )
- continue
- }
+ const candidatePath = whichSync(executable)
+ if (!candidatePath) {
+ return null
+ }
- // Return the first valid path that's not in the current directory
- return candidatePath
- }
+ // SECURITY: Filter out any results from the current directory
+ // to prevent executing malicious git.bat/cmd/exe files
+ const cwd = getCwd().toLowerCase()
+ const normalizedPath = path.resolve(candidatePath).toLowerCase()
+ const pathDir = path.dirname(normalizedPath).toLowerCase()
- return null
- } catch {
+ // Skip if the executable is in the current working directory
+ if (pathDir === cwd || normalizedPath.startsWith(cwd + path.sep)) {
+ logForDebugging(
+ `Skipping potentially malicious executable in current directory: ${candidatePath}`,
+ )
return null
}
+
+ return candidatePath
}
/**
diff --git a/restored-src/tsconfig.json b/restored-src/tsconfig.json
new file mode 100644
index 000000000..9fbf8dc02
--- /dev/null
+++ b/restored-src/tsconfig.json
@@ -0,0 +1,18 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "jsx": "react-jsx",
+ "allowJs": true,
+ "checkJs": false,
+ "baseUrl": ".",
+ "paths": {
+ "src/*": [
+ "src/*"
+ ]
+ },
+ "skipLibCheck": true,
+ "noEmit": true
+ }
+}