@dbx-tools/appkit-mastra 0.9.95 → 0.9.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +238 -285
- package/index.ts +4 -5
- package/lib/index.d.ts +4 -5
- package/lib/index.js +4 -5
- package/lib/src/agents.d.ts +5 -3
- package/lib/src/agents.js +70 -19
- package/lib/src/chat.d.ts +3 -1
- package/lib/src/chat.js +98 -12
- package/lib/src/config.d.ts +7 -1
- package/lib/src/config.js +6 -2
- package/lib/src/model.d.ts +3 -6
- package/lib/src/model.js +11 -94
- package/lib/src/monty-sandbox.d.ts +3 -7
- package/lib/src/monty-sandbox.js +17 -28
- package/lib/src/openapi-tool.js +3 -12
- package/lib/src/plugin.js +3 -1
- package/lib/src/server.js +1 -1
- package/lib/src/skill-paths.d.ts +1 -1
- package/lib/src/skill-paths.js +2 -2
- package/lib/src/workspaces.d.ts +53 -92
- package/lib/src/workspaces.js +319 -192
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -22
- package/src/agents.ts +69 -18
- package/src/chat.ts +103 -11
- package/src/config.ts +13 -2
- package/src/model.ts +10 -108
- package/src/monty-sandbox.ts +23 -33
- package/src/openapi-tool.ts +2 -11
- package/src/plugin.ts +2 -0
- package/src/server.ts +22 -20
- package/src/skill-paths.ts +1 -1
- package/src/workspaces.ts +485 -266
- package/lib/src/serving-sanitize.d.ts +0 -6
- package/lib/src/serving-sanitize.js +0 -7
- package/src/serving-sanitize.ts +0 -19
package/lib/src/openapi-tool.js
CHANGED
|
@@ -7,16 +7,7 @@ import { readFile } from "node:fs/promises";
|
|
|
7
7
|
import { object } from "@dbx-tools/shared-core";
|
|
8
8
|
import { urlBuilder } from "@dbx-tools/shared-core/net";
|
|
9
9
|
import { z } from "zod";
|
|
10
|
-
const HTTP_METHODS = [
|
|
11
|
-
"GET",
|
|
12
|
-
"POST",
|
|
13
|
-
"PUT",
|
|
14
|
-
"PATCH",
|
|
15
|
-
"DELETE",
|
|
16
|
-
"OPTIONS",
|
|
17
|
-
"HEAD",
|
|
18
|
-
"TRACE",
|
|
19
|
-
];
|
|
10
|
+
const HTTP_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD", "TRACE"];
|
|
20
11
|
const JsonObjectSchema = z
|
|
21
12
|
.record(z.string(), z.unknown())
|
|
22
13
|
.describe("A JSON object embedded in an OpenAPI document.");
|
|
@@ -141,7 +132,7 @@ function operationUrl(document, sourceUrl, path) {
|
|
|
141
132
|
? base.withPathAppend(path).toString()
|
|
142
133
|
: `${server.replace(/\/$/, "")}/${path.replace(/^\//, "")}`;
|
|
143
134
|
}
|
|
144
|
-
return sourceUrl ? urlBuilder(sourceUrl)?.withPathReplace(path).toString() ?? path : path;
|
|
135
|
+
return sourceUrl ? (urlBuilder(sourceUrl)?.withPathReplace(path).toString() ?? path) : path;
|
|
145
136
|
}
|
|
146
137
|
function resolveReferences(document, value, active = new Set()) {
|
|
147
138
|
if (Array.isArray(value))
|
|
@@ -181,4 +172,4 @@ if (import.meta.main) {
|
|
|
181
172
|
throw new Error("Usage: bun openapi-tool.ts <openapi-url-or-file>");
|
|
182
173
|
console.log(JSON.stringify(await openApiTools(source), null, 2));
|
|
183
174
|
}
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGktdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLDRCQUE0QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxZQUFZLEdBQUc7SUFDbkIsS0FBSztJQUNMLE1BQU07SUFDTixLQUFLO0lBQ0wsT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsTUFBTTtJQUNOLE9BQU87Q0FDQyxDQUFDO0FBRVgsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDO0tBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQy9CLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBRTlELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUM3QixNQUFNLENBQUM7SUFDTixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLHNDQUFzQyxDQUFDO0NBQzFFLENBQUM7S0FDRCxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV2QyxNQUFNLHdCQUF3QixHQUFHLENBQUM7S0FDL0IsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLENBQUM7U0FDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLHNCQUFzQixDQUFDO1NBQzFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQztDQUMxRCxDQUFDO0tBQ0QsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFeEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDO0tBQzVCLE1BQU0s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QUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsTUFBTTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNqRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3BlbkFQSSBvcGVyYXRpb24gbG9hZGluZyBhbmQgSlNPTiBTY2hlbWEgZXh0cmFjdGlvbi5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB1cmxCdWlsZGVyLCB0eXBlIFVybEJ1aWxkZXIgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9uZXRcIjtcbmltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTcgfSBmcm9tIFwianNvbi1zY2hlbWFcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IEhUVFBfTUVUSE9EUyA9IFtcbiAgXCJHRVRcIixcbiAgXCJQT1NUXCIsXG4gIFwiUFVUXCIsXG4gIFwiUEFUQ0hcIixcbiAgXCJERUxFVEVcIixcbiAgXCJPUFRJT05TXCIsXG4gIFwiSEVBRFwiLFxuICBcIlRSQUNFXCIsXG5dIGFzIGNvbnN0O1xuXG5jb25zdCBKc29uT2JqZWN0U2NoZW1hID0gelxuICAucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKVxuICAuZGVzY3JpYmUoXCJBIEpTT04gb2JqZWN0IGVtYmVkZGVkIGluIGFuIE9wZW5BUEkgZG9jdW1lbnQuXCIpO1xuXG5jb25zdCBPcGVuQXBpTWVkaWFUeXBlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzY2hlbWE6IEpzb25PYmplY3RTY2hlbWEuZGVzY3JpYmUoXCJUaGUgSlNPTiBTY2hlbWEgZm9yIHRoaXMgbWVkaWEgdHlwZS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIk9uZSBPcGVuQVBJIG1lZGlhIHR5cGUuXCIpO1xuXG5jb25zdCBPcGVuQXBpUmVxdWVzdEJvZHlTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGNvbnRlbnQ6IHpcbiAgICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYSlcbiAgICAgIC5kZXNjcmliZShcIlJlcXVlc3QgbWVkaWEgdHlwZXMga2V5ZWQgYnkgY29udGVudCB0eXBlLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiQW4gT3BlbkFQSSByZXF1ZXN0IGJvZHkuXCIpO1xuXG5jb25zdCBPcGVuQXBpUmVzcG9uc2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGNvbnRlbnQ6IHpcbiAgICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJSZXNwb25zZSBtZWRpYSB0eXBlcyBrZXllZCBieSBjb250ZW50IHR5cGUuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJPbmUgT3BlbkFQSSByZXNwb25zZS5cIik7XG5cbmNvbnN0IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG9wZXJhdGlvbklkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIHN0YWJsZSBvcGVyYXRpb24gaWRlbnRpZmllci5cIiksXG4gICAgc3VtbWFyeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHNob3J0IG9wZXJhdGlvbiBzdW1tYXJ5LlwiKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGZ1bGwgb3BlcmF0aW9uIGRlc2NyaXB0aW9uLlwiKSxcbiAgICByZXF1ZXN0Qm9keTogT3BlbkFwaVJlcXVlc3RCb2R5U2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgICBcIlRoZSBvcHRpb25hbCBvcGVyYXRpb24gcmVxdWVzdCBib2R5LlwiLFxuICAgICksXG4gICAgcmVzcG9uc2VzOiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIE9wZW5BcGlSZXNwb25zZVNjaGVtYSlcbiAgICAgIC5kZXNjcmliZShcIk9wZXJhdGlvbiByZXNwb25zZXMga2V5ZWQgYnkgSFRUUCBzdGF0dXMuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJUaGUgT3BlbkFQSSBmaWVsZHMgcmVxdWlyZWQgdG8gZGVmaW5lIGEgdG9vbC5cIik7XG5cbmNvbnN0IE9wZW5BcGlQYXRoU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBnZXQ6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBwb3N0OiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgcHV0OiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgcGF0Y2g6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBkZWxldGU6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBvcHRpb25zOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgaGVhZDogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHRyYWNlOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5kZXNjcmliZShcIk9wZXJhdGlvbnMgYXZhaWxhYmxlIGF0IG9uZSBPcGVuQVBJIHBhdGguXCIpO1xuXG5jb25zdCBPcGVuQXBpRG9jdW1lbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHBhdGhzOiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIE9wZW5BcGlQYXRoU2NoZW1hKVxuICAgICAgLnJlZmluZSgocGF0aHMpID0+IE9iamVjdC5rZXlzKHBhdGhzKS5sZW5ndGggPiAwLCBcIk9wZW5BUEkgcGF0aHMgbXVzdCBub3QgYmUgZW1wdHlcIilcbiAgICAgIC5kZXNjcmliZShcIk9wZW5BUEkgcGF0aCBpdGVtcyBrZXllZCBieSBVUkwgcGF0aC5cIiksXG4gICAgY29tcG9uZW50czogSnNvbk9iamVjdFNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmV1c2FibGUgT3BlbkFQSSBjb21wb25lbnRzLlwiKSxcbiAgICBzZXJ2ZXJzOiB6XG4gICAgICAuYXJyYXkoXG4gICAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgICB1cmw6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJTZXJ2ZXIgYmFzZSBVUkwuXCIpLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJPcGVuQVBJIHNlcnZlciBkZWZpbml0aW9ucy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkFuIE9wZW5BUEkgZG9jdW1lbnQgdXNlZCB0byBkZWZpbmUgSFRUUCB0b29scy5cIik7XG5cbnR5cGUgT3BlbkFwaURvY3VtZW50ID0gei5pbmZlcjx0eXBlb2YgT3BlbkFwaURvY3VtZW50U2NoZW1hPjtcbnR5cGUgT3BlbkFwaU9wZXJhdGlvbiA9IHouaW5mZXI8dHlwZW9mIE9wZW5BcGlPcGVyYXRpb25TY2hlbWE+O1xuXG4vKiogSFRUUCBtZXRob2Qgc3VwcG9ydGVkIGJ5IGFuIHtAbGluayBPcGVuQXBpVG9vbH0uICovXG5leHBvcnQgdHlwZSBPcGVuQXBpSHR0cE1ldGhvZCA9ICh0eXBlb2YgSFRUUF9NRVRIT0RTKVtudW1iZXJdO1xuXG4vKiogT25lIGV4ZWN1dGFibGUgSFRUUCBvcGVyYXRpb24gZGVyaXZlZCBmcm9tIGFuIE9wZW5BUEkgZG9jdW1lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BcGlUb29sIHtcbiAgLyoqIFN0YWJsZSBvcGVyYXRpb24gaWRlbnRpZmllci4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIE1vZGVsLWZhY2luZyBvcGVyYXRpb24gZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBSZXNvbHZlZCBvcGVyYXRpb24gVVJMLCBvciB0aGUgT3BlbkFQSSBwYXRoIGZvciBhIGxvY2FsIGRvY3VtZW50IHdpdGhvdXQgYSBzZXJ2ZXIgVVJMLiAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqIEhUVFAgbWV0aG9kIHVzZWQgYnkgdGhlIG9wZXJhdGlvbi4gKi9cbiAgbWV0aG9kOiBPcGVuQXBpSHR0cE1ldGhvZDtcbiAgLyoqIEpTT04gU2NoZW1hIGRlc2NyaWJpbmcgb3BlcmF0aW9uIGlucHV0LiAqL1xuICBpbnB1dFNjaGVtYTogSlNPTlNjaGVtYTc7XG4gIC8qKiBKU09OIFNjaGVtYSBkZXNjcmliaW5nIGEgc3VjY2Vzc2Z1bCBvcGVyYXRpb24gcmVzdWx0LiAqL1xuICBvdXRwdXRTY2hlbWE6IEpTT05TY2hlbWE3O1xufVxuXG4vKiogUmVxdWVzdCBvcHRpb25zIHVzZWQgd2hpbGUgbG9hZGluZyBhbiBPcGVuQVBJIGRvY3VtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuQXBpVG9vbHNPcHRpb25zIHtcbiAgLyoqIENhbmNlbHMgYW4gSFRUUCByZXF1ZXN0IG9yIGZpbGUgcmVhZC4gKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBIZWFkZXJzIHNlbnQgd2hlbiBgc291cmNlYCBpcyBhbiBIVFRQKFMpIFVSTC4gKi9cbiAgaGVhZGVycz86IFJlcXVlc3RJbml0W1wiaGVhZGVyc1wiXTtcbn1cblxuLyoqIExvYWQgYW4gSFRUUChTKSBVUkwgb3IgbG9jYWwgZmlsZSBhbmQgcmV0dXJuIGl0cyBPcGVuQVBJIG9wZXJhdGlvbnMgYXMgdG9vbCBzY2hlbWFzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5BcGlUb29scyhcbiAgc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IE9wZW5BcGlUb29sc09wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8T3BlbkFwaVRvb2xbXT4ge1xuICBjb25zdCBzb3VyY2VVcmwgPSBodHRwVXJsKHNvdXJjZSk7XG4gIGNvbnN0IGRvY3VtZW50ID0gT3BlbkFwaURvY3VtZW50U2NoZW1hLnBhcnNlKFxuICAgIHNvdXJjZVVybFxuICAgICAgPyBhd2FpdCBmZXRjaERvY3VtZW50KHNvdXJjZVVybCwgb3B0aW9ucylcbiAgICAgIDogYXdhaXQgcmVhZERvY3VtZW50KHNvdXJjZSwgb3B0aW9ucy5zaWduYWwpLFxuICApO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZG9jdW1lbnQucGF0aHMpLmZsYXRNYXAoKFtwYXRoLCBpdGVtXSkgPT5cbiAgICBIVFRQX01FVEhPRFMuZmxhdE1hcCgobWV0aG9kKSA9PiB7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBpdGVtW21ldGhvZC50b0xvd2VyQ2FzZSgpIGFzIExvd2VyY2FzZTxPcGVuQXBpSHR0cE1ldGhvZD5dO1xuICAgICAgcmV0dXJuIG9wZXJhdGlvbiA/IFtvcGVyYXRpb25Ub29sKGRvY3VtZW50LCBzb3VyY2VVcmwsIHBhdGgsIG1ldGhvZCwgb3BlcmF0aW9uKV0gOiBbXTtcbiAgICB9KSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gaHR0cFVybChzb3VyY2U6IHN0cmluZyk6IFVybEJ1aWxkZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHNvdXJjZS50cmltKCk7XG4gIGlmICghdmFsdWUuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgJiYgIXZhbHVlLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdXJsID0gdXJsQnVpbGRlcih2YWx1ZSk7XG4gIHJldHVybiB1cmw/LnNjaGVtZSA9PT0gXCJodHRwXCIgfHwgdXJsPy5zY2hlbWUgPT09IFwiaHR0cHNcIiA/IHVybCA6IHVuZGVmaW5lZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hEb2N1bWVudCh1cmw6IFVSTCwgb3B0aW9uczogT3BlbkFwaVRvb2xzT3B0aW9ucyk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgIHNpZ25hbDogb3B0aW9ucy5zaWduYWwsXG4gICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICB9KTtcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgT3BlbkFQSSByZXF1ZXN0IGZhaWxlZCB3aXRoIEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3VybH1gKTtcbiAgfVxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRG9jdW1lbnQocGF0aDogc3RyaW5nLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dW5rbm93bj4ge1xuICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShwYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiwgc2lnbmFsIH0pKTtcbn1cblxuZnVuY3Rpb24gb3BlcmF0aW9uVG9vbChcbiAgZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCxcbiAgc291cmNlVXJsOiBVUkwgfCB1bmRlZmluZWQsXG4gIHBhdGg6IHN0cmluZyxcbiAgbWV0aG9kOiBPcGVuQXBpSHR0cE1ldGhvZCxcbiAgb3BlcmF0aW9uOiBPcGVuQXBpT3BlcmF0aW9uLFxuKTogT3BlbkFwaVRvb2wge1xuICBjb25zdCByZXF1ZXN0U2NoZW1hID0ganNvblNjaGVtYShvcGVyYXRpb24ucmVxdWVzdEJvZHk/LmNvbnRlbnQpID8/IHsgdHlwZTogXCJvYmplY3RcIiB9O1xuICBjb25zdCByZXNwb25zZVNjaGVtYSA9IHN1Y2Nlc3NmdWxSZXNwb25zZVNjaGVtYShvcGVyYXRpb24pO1xuICByZXR1cm4ge1xuICAgIGlkOiBvcGVyYXRpb24ub3BlcmF0aW9uSWQsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBvcGVyYXRpb24uZGVzY3JpcHRpb24/LnRyaW0oKSB8fCBvcGVyYXRpb24uc3VtbWFyeT8udHJpbSgpIHx8IG9wZXJhdGlvbi5vcGVyYXRpb25JZCxcbiAgICB1cmw6IG9wZXJhdGlvblVybChkb2N1bWVudCwgc291cmNlVXJsLCBwYXRoKSxcbiAgICBtZXRob2QsXG4gICAgaW5wdXRTY2hlbWE6IHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCByZXF1ZXN0U2NoZW1hKSBhcyBKU09OU2NoZW1hNyxcbiAgICBvdXRwdXRTY2hlbWE6IHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCByZXNwb25zZVNjaGVtYSkgYXMgSlNPTlNjaGVtYTcsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3NmdWxSZXNwb25zZVNjaGVtYShvcGVyYXRpb246IE9wZW5BcGlPcGVyYXRpb24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGZvciAoY29uc3QgW3N0YXR1cywgcmVzcG9uc2VdIG9mIE9iamVjdC5lbnRyaWVzKG9wZXJhdGlvbi5yZXNwb25zZXMpKSB7XG4gICAgY29uc3Qgc2NoZW1hID0ganNvblNjaGVtYShyZXNwb25zZS5jb250ZW50KTtcbiAgICBpZiAoL14yKD86XFxkezJ9fFhYKSQvaS50ZXN0KHN0YXR1cykgJiYgc2NoZW1hKSByZXR1cm4gc2NoZW1hO1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24ganNvblNjaGVtYShcbiAgY29udGVudDogUmVjb3JkPHN0cmluZywgei5pbmZlcjx0eXBlb2YgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYT4+IHwgdW5kZWZpbmVkLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQge1xuICBjb25zdCBtZWRpYVR5cGUgPSBPYmplY3QuZW50cmllcyhjb250ZW50ID8/IHt9KS5maW5kKChbdHlwZV0pID0+XG4gICAgL15hcHBsaWNhdGlvblxcLyg/OlteKztdK1xcKyk/anNvbig/Ojt8JCkvaS50ZXN0KHR5cGUpLFxuICApO1xuICByZXR1cm4gbWVkaWFUeXBlPy5bMV0uc2NoZW1hO1xufVxuXG5mdW5jdGlvbiBvcGVyYXRpb25VcmwoZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCwgc291cmNlVXJsOiBVUkwgfCB1bmRlZmluZWQsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNlcnZlciA9IGRvY3VtZW50LnNlcnZlcnM/LlswXT8udXJsO1xuICBpZiAoc2VydmVyKSB7XG4gICAgY29uc3QgYmFzZSA9IHNvdXJjZVVybCA/IHVybEJ1aWxkZXIobmV3IFVSTChzZXJ2ZXIsIHNvdXJjZVVybCkpIDogaHR0cFVybChzZXJ2ZXIpO1xuICAgIHJldHVybiBiYXNlXG4gICAgICA/IGJhc2Uud2l0aFBhdGhBcHBlbmQocGF0aCkudG9TdHJpbmcoKVxuICAgICAgOiBgJHtzZXJ2ZXIucmVwbGFjZSgvXFwvJC8sIFwiXCIpfS8ke3BhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpfWA7XG4gIH1cbiAgcmV0dXJuIHNvdXJjZVVybCA/IHVybEJ1aWxkZXIoc291cmNlVXJsKT8ud2l0aFBhdGhSZXBsYWNlKHBhdGgpLnRvU3RyaW5nKCkgPz8gcGF0aCA6IHBhdGg7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogT3BlbkFwaURvY3VtZW50LFxuICB2YWx1ZTogdW5rbm93bixcbiAgYWN0aXZlOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldCgpLFxuKTogdW5rbm93biB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSkgPT4gcmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIGl0ZW0sIGFjdGl2ZSkpO1xuICBpZiAoIW9iamVjdC5pc1JlY29yZCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgY29uc3QgcmVmZXJlbmNlID0gdHlwZW9mIHZhbHVlLiRyZWYgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS4kcmVmIDogdW5kZWZpbmVkO1xuICBpZiAocmVmZXJlbmNlKSB7XG4gICAgaWYgKGFjdGl2ZS5oYXMocmVmZXJlbmNlKSkgdGhyb3cgbmV3IEVycm9yKGBDeWNsaWMgT3BlbkFQSSByZWZlcmVuY2U6ICR7cmVmZXJlbmNlfWApO1xuICAgIGNvbnN0IHRhcmdldCA9IHJlZmVyZW5jZVRhcmdldChkb2N1bWVudCwgcmVmZXJlbmNlKTtcbiAgICBjb25zdCBuZXh0ID0gbmV3IFNldChhY3RpdmUpLmFkZChyZWZlcmVuY2UpO1xuICAgIGNvbnN0IHsgJHJlZjogX2lnbm9yZWQsIC4uLnNpYmxpbmdzIH0gPSB2YWx1ZTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCB0YXJnZXQsIG5leHQpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICAgIC4uLihyZXNvbHZlUmVmZXJlbmNlcyhkb2N1bWVudCwgc2libGluZ3MsIG5leHQpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICB9O1xuICB9XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXModmFsdWUpLm1hcCgoW2tleSwgY2hpbGRdKSA9PiBba2V5LCByZXNvbHZlUmVmZXJlbmNlcyhkb2N1bWVudCwgY2hpbGQsIGFjdGl2ZSldKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVmZXJlbmNlVGFyZ2V0KGRvY3VtZW50OiBPcGVuQXBpRG9jdW1lbnQsIHJlZmVyZW5jZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICghcmVmZXJlbmNlLnN0YXJ0c1dpdGgoXCIjL1wiKSkgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBPcGVuQVBJIHJlZmVyZW5jZTogJHtyZWZlcmVuY2V9YCk7XG4gIGxldCBjdXJyZW50OiB1bmtub3duID0gZG9jdW1lbnQ7XG4gIGZvciAoY29uc3QgcmF3U2VnbWVudCBvZiByZWZlcmVuY2Uuc2xpY2UoMikuc3BsaXQoXCIvXCIpKSB7XG4gICAgY29uc3Qgc2VnbWVudCA9IHJhd1NlZ21lbnQucmVwbGFjZUFsbChcIn4xXCIsIFwiL1wiKS5yZXBsYWNlQWxsKFwifjBcIiwgXCJ+XCIpO1xuICAgIGlmICghb2JqZWN0LmlzUmVjb3JkKGN1cnJlbnQpIHx8ICEoc2VnbWVudCBpbiBjdXJyZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlc29sdmVkIE9wZW5BUEkgcmVmZXJlbmNlOiAke3JlZmVyZW5jZX1gKTtcbiAgICB9XG4gICAgY3VycmVudCA9IGN1cnJlbnRbc2VnbWVudF07XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59XG5cbmlmIChpbXBvcnQubWV0YS5tYWluKSB7XG4gIGNvbnN0IHNvdXJjZSA9IHByb2Nlc3MuYXJndlsyXTtcbiAgaWYgKCFzb3VyY2UpIHRocm93IG5ldyBFcnJvcihcIlVzYWdlOiBidW4gb3BlbmFwaS10b29sLnRzIDxvcGVuYXBpLXVybC1vci1maWxlPlwiKTtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoYXdhaXQgb3BlbkFwaVRvb2xzKHNvdXJjZSksIG51bGwsIDIpKTtcbn1cbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGktdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLDRCQUE0QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFcEcsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDO0tBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQy9CLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBRTlELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUM3QixNQUFNLENBQUM7SUFDTixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLHNDQUFzQyxDQUFDO0NBQzFFLENBQUM7S0FDRCxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV2QyxNQUFNLHdCQUF3QixHQUFHLENBQUM7S0FDL0IsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLENBQUM7U0FDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLHNCQUFzQixDQUFDO1NBQzFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQztDQUMxRCxDQUFDO0tBQ0QsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFeEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDO0tBQzVCLE1BQU0s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QUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLE1BQU07UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDakYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wZW5BUEkgb3BlcmF0aW9uIGxvYWRpbmcgYW5kIEpTT04gU2NoZW1hIGV4dHJhY3Rpb24uXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBvYmplY3QgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgdXJsQnVpbGRlciwgdHlwZSBVcmxCdWlsZGVyIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmUvbmV0XCI7XG5pbXBvcnQgdHlwZSB7IEpTT05TY2hlbWE3IH0gZnJvbSBcImpzb24tc2NoZW1hXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBIVFRQX01FVEhPRFMgPSBbXCJHRVRcIiwgXCJQT1NUXCIsIFwiUFVUXCIsIFwiUEFUQ0hcIiwgXCJERUxFVEVcIiwgXCJPUFRJT05TXCIsIFwiSEVBRFwiLCBcIlRSQUNFXCJdIGFzIGNvbnN0O1xuXG5jb25zdCBKc29uT2JqZWN0U2NoZW1hID0gelxuICAucmVjb3JkKHouc3RyaW5nKCksIHoudW5rbm93bigpKVxuICAuZGVzY3JpYmUoXCJBIEpTT04gb2JqZWN0IGVtYmVkZGVkIGluIGFuIE9wZW5BUEkgZG9jdW1lbnQuXCIpO1xuXG5jb25zdCBPcGVuQXBpTWVkaWFUeXBlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBzY2hlbWE6IEpzb25PYmplY3RTY2hlbWEuZGVzY3JpYmUoXCJUaGUgSlNPTiBTY2hlbWEgZm9yIHRoaXMgbWVkaWEgdHlwZS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIk9uZSBPcGVuQVBJIG1lZGlhIHR5cGUuXCIpO1xuXG5jb25zdCBPcGVuQXBpUmVxdWVzdEJvZHlTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGNvbnRlbnQ6IHpcbiAgICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYSlcbiAgICAgIC5kZXNjcmliZShcIlJlcXVlc3QgbWVkaWEgdHlwZXMga2V5ZWQgYnkgY29udGVudCB0eXBlLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiQW4gT3BlbkFQSSByZXF1ZXN0IGJvZHkuXCIpO1xuXG5jb25zdCBPcGVuQXBpUmVzcG9uc2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGNvbnRlbnQ6IHpcbiAgICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYSlcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJSZXNwb25zZSBtZWRpYSB0eXBlcyBrZXllZCBieSBjb250ZW50IHR5cGUuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJPbmUgT3BlbkFQSSByZXNwb25zZS5cIik7XG5cbmNvbnN0IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG9wZXJhdGlvbklkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiVGhlIHN0YWJsZSBvcGVyYXRpb24gaWRlbnRpZmllci5cIiksXG4gICAgc3VtbWFyeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIHNob3J0IG9wZXJhdGlvbiBzdW1tYXJ5LlwiKSxcbiAgICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiVGhlIGZ1bGwgb3BlcmF0aW9uIGRlc2NyaXB0aW9uLlwiKSxcbiAgICByZXF1ZXN0Qm9keTogT3BlbkFwaVJlcXVlc3RCb2R5U2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXG4gICAgICBcIlRoZSBvcHRpb25hbCBvcGVyYXRpb24gcmVxdWVzdCBib2R5LlwiLFxuICAgICksXG4gICAgcmVzcG9uc2VzOiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIE9wZW5BcGlSZXNwb25zZVNjaGVtYSlcbiAgICAgIC5kZXNjcmliZShcIk9wZXJhdGlvbiByZXNwb25zZXMga2V5ZWQgYnkgSFRUUCBzdGF0dXMuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJUaGUgT3BlbkFQSSBmaWVsZHMgcmVxdWlyZWQgdG8gZGVmaW5lIGEgdG9vbC5cIik7XG5cbmNvbnN0IE9wZW5BcGlQYXRoU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBnZXQ6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBwb3N0OiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgcHV0OiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgcGF0Y2g6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBkZWxldGU6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBvcHRpb25zOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgaGVhZDogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHRyYWNlOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5kZXNjcmliZShcIk9wZXJhdGlvbnMgYXZhaWxhYmxlIGF0IG9uZSBPcGVuQVBJIHBhdGguXCIpO1xuXG5jb25zdCBPcGVuQXBpRG9jdW1lbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHBhdGhzOiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIE9wZW5BcGlQYXRoU2NoZW1hKVxuICAgICAgLnJlZmluZSgocGF0aHMpID0+IE9iamVjdC5rZXlzKHBhdGhzKS5sZW5ndGggPiAwLCBcIk9wZW5BUEkgcGF0aHMgbXVzdCBub3QgYmUgZW1wdHlcIilcbiAgICAgIC5kZXNjcmliZShcIk9wZW5BUEkgcGF0aCBpdGVtcyBrZXllZCBieSBVUkwgcGF0aC5cIiksXG4gICAgY29tcG9uZW50czogSnNvbk9iamVjdFNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiUmV1c2FibGUgT3BlbkFQSSBjb21wb25lbnRzLlwiKSxcbiAgICBzZXJ2ZXJzOiB6XG4gICAgICAuYXJyYXkoXG4gICAgICAgIHoub2JqZWN0KHtcbiAgICAgICAgICB1cmw6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJTZXJ2ZXIgYmFzZSBVUkwuXCIpLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5vcHRpb25hbCgpXG4gICAgICAuZGVzY3JpYmUoXCJPcGVuQVBJIHNlcnZlciBkZWZpbml0aW9ucy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkFuIE9wZW5BUEkgZG9jdW1lbnQgdXNlZCB0byBkZWZpbmUgSFRUUCB0b29scy5cIik7XG5cbnR5cGUgT3BlbkFwaURvY3VtZW50ID0gei5pbmZlcjx0eXBlb2YgT3BlbkFwaURvY3VtZW50U2NoZW1hPjtcbnR5cGUgT3BlbkFwaU9wZXJhdGlvbiA9IHouaW5mZXI8dHlwZW9mIE9wZW5BcGlPcGVyYXRpb25TY2hlbWE+O1xuXG4vKiogSFRUUCBtZXRob2Qgc3VwcG9ydGVkIGJ5IGFuIHtAbGluayBPcGVuQXBpVG9vbH0uICovXG5leHBvcnQgdHlwZSBPcGVuQXBpSHR0cE1ldGhvZCA9ICh0eXBlb2YgSFRUUF9NRVRIT0RTKVtudW1iZXJdO1xuXG4vKiogT25lIGV4ZWN1dGFibGUgSFRUUCBvcGVyYXRpb24gZGVyaXZlZCBmcm9tIGFuIE9wZW5BUEkgZG9jdW1lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BcGlUb29sIHtcbiAgLyoqIFN0YWJsZSBvcGVyYXRpb24gaWRlbnRpZmllci4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIE1vZGVsLWZhY2luZyBvcGVyYXRpb24gZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBSZXNvbHZlZCBvcGVyYXRpb24gVVJMLCBvciB0aGUgT3BlbkFQSSBwYXRoIGZvciBhIGxvY2FsIGRvY3VtZW50IHdpdGhvdXQgYSBzZXJ2ZXIgVVJMLiAqL1xuICB1cmw6IHN0cmluZztcbiAgLyoqIEhUVFAgbWV0aG9kIHVzZWQgYnkgdGhlIG9wZXJhdGlvbi4gKi9cbiAgbWV0aG9kOiBPcGVuQXBpSHR0cE1ldGhvZDtcbiAgLyoqIEpTT04gU2NoZW1hIGRlc2NyaWJpbmcgb3BlcmF0aW9uIGlucHV0LiAqL1xuICBpbnB1dFNjaGVtYTogSlNPTlNjaGVtYTc7XG4gIC8qKiBKU09OIFNjaGVtYSBkZXNjcmliaW5nIGEgc3VjY2Vzc2Z1bCBvcGVyYXRpb24gcmVzdWx0LiAqL1xuICBvdXRwdXRTY2hlbWE6IEpTT05TY2hlbWE3O1xufVxuXG4vKiogUmVxdWVzdCBvcHRpb25zIHVzZWQgd2hpbGUgbG9hZGluZyBhbiBPcGVuQVBJIGRvY3VtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuQXBpVG9vbHNPcHRpb25zIHtcbiAgLyoqIENhbmNlbHMgYW4gSFRUUCByZXF1ZXN0IG9yIGZpbGUgcmVhZC4gKi9cbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBIZWFkZXJzIHNlbnQgd2hlbiBgc291cmNlYCBpcyBhbiBIVFRQKFMpIFVSTC4gKi9cbiAgaGVhZGVycz86IFJlcXVlc3RJbml0W1wiaGVhZGVyc1wiXTtcbn1cblxuLyoqIExvYWQgYW4gSFRUUChTKSBVUkwgb3IgbG9jYWwgZmlsZSBhbmQgcmV0dXJuIGl0cyBPcGVuQVBJIG9wZXJhdGlvbnMgYXMgdG9vbCBzY2hlbWFzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5BcGlUb29scyhcbiAgc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM6IE9wZW5BcGlUb29sc09wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8T3BlbkFwaVRvb2xbXT4ge1xuICBjb25zdCBzb3VyY2VVcmwgPSBodHRwVXJsKHNvdXJjZSk7XG4gIGNvbnN0IGRvY3VtZW50ID0gT3BlbkFwaURvY3VtZW50U2NoZW1hLnBhcnNlKFxuICAgIHNvdXJjZVVybFxuICAgICAgPyBhd2FpdCBmZXRjaERvY3VtZW50KHNvdXJjZVVybCwgb3B0aW9ucylcbiAgICAgIDogYXdhaXQgcmVhZERvY3VtZW50KHNvdXJjZSwgb3B0aW9ucy5zaWduYWwpLFxuICApO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZG9jdW1lbnQucGF0aHMpLmZsYXRNYXAoKFtwYXRoLCBpdGVtXSkgPT5cbiAgICBIVFRQX01FVEhPRFMuZmxhdE1hcCgobWV0aG9kKSA9PiB7XG4gICAgICBjb25zdCBvcGVyYXRpb24gPSBpdGVtW21ldGhvZC50b0xvd2VyQ2FzZSgpIGFzIExvd2VyY2FzZTxPcGVuQXBpSHR0cE1ldGhvZD5dO1xuICAgICAgcmV0dXJuIG9wZXJhdGlvbiA/IFtvcGVyYXRpb25Ub29sKGRvY3VtZW50LCBzb3VyY2VVcmwsIHBhdGgsIG1ldGhvZCwgb3BlcmF0aW9uKV0gOiBbXTtcbiAgICB9KSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gaHR0cFVybChzb3VyY2U6IHN0cmluZyk6IFVybEJ1aWxkZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHNvdXJjZS50cmltKCk7XG4gIGlmICghdmFsdWUuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgJiYgIXZhbHVlLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdXJsID0gdXJsQnVpbGRlcih2YWx1ZSk7XG4gIHJldHVybiB1cmw/LnNjaGVtZSA9PT0gXCJodHRwXCIgfHwgdXJsPy5zY2hlbWUgPT09IFwiaHR0cHNcIiA/IHVybCA6IHVuZGVmaW5lZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hEb2N1bWVudCh1cmw6IFVSTCwgb3B0aW9uczogT3BlbkFwaVRvb2xzT3B0aW9ucyk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgIHNpZ25hbDogb3B0aW9ucy5zaWduYWwsXG4gICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICB9KTtcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgT3BlbkFQSSByZXF1ZXN0IGZhaWxlZCB3aXRoIEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9OiAke3VybH1gKTtcbiAgfVxuICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRG9jdW1lbnQocGF0aDogc3RyaW5nLCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dW5rbm93bj4ge1xuICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShwYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiwgc2lnbmFsIH0pKTtcbn1cblxuZnVuY3Rpb24gb3BlcmF0aW9uVG9vbChcbiAgZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCxcbiAgc291cmNlVXJsOiBVUkwgfCB1bmRlZmluZWQsXG4gIHBhdGg6IHN0cmluZyxcbiAgbWV0aG9kOiBPcGVuQXBpSHR0cE1ldGhvZCxcbiAgb3BlcmF0aW9uOiBPcGVuQXBpT3BlcmF0aW9uLFxuKTogT3BlbkFwaVRvb2wge1xuICBjb25zdCByZXF1ZXN0U2NoZW1hID0ganNvblNjaGVtYShvcGVyYXRpb24ucmVxdWVzdEJvZHk/LmNvbnRlbnQpID8/IHsgdHlwZTogXCJvYmplY3RcIiB9O1xuICBjb25zdCByZXNwb25zZVNjaGVtYSA9IHN1Y2Nlc3NmdWxSZXNwb25zZVNjaGVtYShvcGVyYXRpb24pO1xuICByZXR1cm4ge1xuICAgIGlkOiBvcGVyYXRpb24ub3BlcmF0aW9uSWQsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBvcGVyYXRpb24uZGVzY3JpcHRpb24/LnRyaW0oKSB8fCBvcGVyYXRpb24uc3VtbWFyeT8udHJpbSgpIHx8IG9wZXJhdGlvbi5vcGVyYXRpb25JZCxcbiAgICB1cmw6IG9wZXJhdGlvblVybChkb2N1bWVudCwgc291cmNlVXJsLCBwYXRoKSxcbiAgICBtZXRob2QsXG4gICAgaW5wdXRTY2hlbWE6IHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCByZXF1ZXN0U2NoZW1hKSBhcyBKU09OU2NoZW1hNyxcbiAgICBvdXRwdXRTY2hlbWE6IHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCByZXNwb25zZVNjaGVtYSkgYXMgSlNPTlNjaGVtYTcsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHN1Y2Nlc3NmdWxSZXNwb25zZVNjaGVtYShvcGVyYXRpb246IE9wZW5BcGlPcGVyYXRpb24pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGZvciAoY29uc3QgW3N0YXR1cywgcmVzcG9uc2VdIG9mIE9iamVjdC5lbnRyaWVzKG9wZXJhdGlvbi5yZXNwb25zZXMpKSB7XG4gICAgY29uc3Qgc2NoZW1hID0ganNvblNjaGVtYShyZXNwb25zZS5jb250ZW50KTtcbiAgICBpZiAoL14yKD86XFxkezJ9fFhYKSQvaS50ZXN0KHN0YXR1cykgJiYgc2NoZW1hKSByZXR1cm4gc2NoZW1hO1xuICB9XG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24ganNvblNjaGVtYShcbiAgY29udGVudDogUmVjb3JkPHN0cmluZywgei5pbmZlcjx0eXBlb2YgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYT4+IHwgdW5kZWZpbmVkLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQge1xuICBjb25zdCBtZWRpYVR5cGUgPSBPYmplY3QuZW50cmllcyhjb250ZW50ID8/IHt9KS5maW5kKChbdHlwZV0pID0+XG4gICAgL15hcHBsaWNhdGlvblxcLyg/OlteKztdK1xcKyk/anNvbig/Ojt8JCkvaS50ZXN0KHR5cGUpLFxuICApO1xuICByZXR1cm4gbWVkaWFUeXBlPy5bMV0uc2NoZW1hO1xufVxuXG5mdW5jdGlvbiBvcGVyYXRpb25VcmwoZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCwgc291cmNlVXJsOiBVUkwgfCB1bmRlZmluZWQsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHNlcnZlciA9IGRvY3VtZW50LnNlcnZlcnM/LlswXT8udXJsO1xuICBpZiAoc2VydmVyKSB7XG4gICAgY29uc3QgYmFzZSA9IHNvdXJjZVVybCA/IHVybEJ1aWxkZXIobmV3IFVSTChzZXJ2ZXIsIHNvdXJjZVVybCkpIDogaHR0cFVybChzZXJ2ZXIpO1xuICAgIHJldHVybiBiYXNlXG4gICAgICA/IGJhc2Uud2l0aFBhdGhBcHBlbmQocGF0aCkudG9TdHJpbmcoKVxuICAgICAgOiBgJHtzZXJ2ZXIucmVwbGFjZSgvXFwvJC8sIFwiXCIpfS8ke3BhdGgucmVwbGFjZSgvXlxcLy8sIFwiXCIpfWA7XG4gIH1cbiAgcmV0dXJuIHNvdXJjZVVybCA/ICh1cmxCdWlsZGVyKHNvdXJjZVVybCk/LndpdGhQYXRoUmVwbGFjZShwYXRoKS50b1N0cmluZygpID8/IHBhdGgpIDogcGF0aDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVJlZmVyZW5jZXMoXG4gIGRvY3VtZW50OiBPcGVuQXBpRG9jdW1lbnQsXG4gIHZhbHVlOiB1bmtub3duLFxuICBhY3RpdmU6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KCksXG4pOiB1bmtub3duIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubWFwKChpdGVtKSA9PiByZXNvbHZlUmVmZXJlbmNlcyhkb2N1bWVudCwgaXRlbSwgYWN0aXZlKSk7XG4gIGlmICghb2JqZWN0LmlzUmVjb3JkKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICBjb25zdCByZWZlcmVuY2UgPSB0eXBlb2YgdmFsdWUuJHJlZiA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlLiRyZWYgOiB1bmRlZmluZWQ7XG4gIGlmIChyZWZlcmVuY2UpIHtcbiAgICBpZiAoYWN0aXZlLmhhcyhyZWZlcmVuY2UpKSB0aHJvdyBuZXcgRXJyb3IoYEN5Y2xpYyBPcGVuQVBJIHJlZmVyZW5jZTogJHtyZWZlcmVuY2V9YCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmVmZXJlbmNlVGFyZ2V0KGRvY3VtZW50LCByZWZlcmVuY2UpO1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KGFjdGl2ZSkuYWRkKHJlZmVyZW5jZSk7XG4gICAgY29uc3QgeyAkcmVmOiBfaWdub3JlZCwgLi4uc2libGluZ3MgfSA9IHZhbHVlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi4ocmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIHRhcmdldCwgbmV4dCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLFxuICAgICAgLi4uKHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCBzaWJsaW5ncywgbmV4dCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyh2YWx1ZSkubWFwKChba2V5LCBjaGlsZF0pID0+IFtrZXksIHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCBjaGlsZCwgYWN0aXZlKV0pLFxuICApO1xufVxuXG5mdW5jdGlvbiByZWZlcmVuY2VUYXJnZXQoZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCwgcmVmZXJlbmNlOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgaWYgKCFyZWZlcmVuY2Uuc3RhcnRzV2l0aChcIiMvXCIpKSB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIE9wZW5BUEkgcmVmZXJlbmNlOiAke3JlZmVyZW5jZX1gKTtcbiAgbGV0IGN1cnJlbnQ6IHVua25vd24gPSBkb2N1bWVudDtcbiAgZm9yIChjb25zdCByYXdTZWdtZW50IG9mIHJlZmVyZW5jZS5zbGljZSgyKS5zcGxpdChcIi9cIikpIHtcbiAgICBjb25zdCBzZWdtZW50ID0gcmF3U2VnbWVudC5yZXBsYWNlQWxsKFwifjFcIiwgXCIvXCIpLnJlcGxhY2VBbGwoXCJ+MFwiLCBcIn5cIik7XG4gICAgaWYgKCFvYmplY3QuaXNSZWNvcmQoY3VycmVudCkgfHwgIShzZWdtZW50IGluIGN1cnJlbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVzb2x2ZWQgT3BlbkFQSSByZWZlcmVuY2U6ICR7cmVmZXJlbmNlfWApO1xuICAgIH1cbiAgICBjdXJyZW50ID0gY3VycmVudFtzZWdtZW50XTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cblxuaWYgKGltcG9ydC5tZXRhLm1haW4pIHtcbiAgY29uc3Qgc291cmNlID0gcHJvY2Vzcy5hcmd2WzJdO1xuICBpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKFwiVXNhZ2U6IGJ1biBvcGVuYXBpLXRvb2wudHMgPG9wZW5hcGktdXJsLW9yLWZpbGU+XCIpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShhd2FpdCBvcGVuQXBpVG9vbHMoc291cmNlKSwgbnVsbCwgMikpO1xufVxuIl19
|