experimental-agent 0.1.1 → 0.1.2
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/dist/agent-workflow.d.mts +3 -2
- package/dist/agent-workflow.d.ts +3 -2
- package/dist/agent-workflow.js +29 -29
- package/dist/agent-workflow.mjs +1 -2
- package/dist/{chunk-GJETDXOU.mjs → chunk-2SPAJ777.mjs} +5 -1
- package/dist/chunk-6J462JGP.mjs +1267 -0
- package/dist/{chunk-T2UUL6VC.mjs → chunk-E7TOPGHY.mjs} +3 -3
- package/dist/chunk-ILPVXRI5.mjs +2026 -0
- package/dist/chunk-ORE6LK2L.mjs +344 -0
- package/dist/chunk-W4SSZPDX.mjs +106 -0
- package/dist/{types-DuTc4UQW.d.mts → client-CKLwB-ES.d.mts} +730 -3
- package/dist/{types-DuTc4UQW.d.ts → client-CKLwB-ES.d.ts} +730 -3
- package/dist/{client-66JIQLSA.mjs → client-YUU54ZZH.mjs} +1 -1
- package/dist/{handler-BQY5SOI2.mjs → handler-LDFBSCRA.mjs} +1 -1
- package/dist/index.d.mts +4 -18
- package/dist/index.d.ts +4 -18
- package/dist/index.js +67 -40
- package/dist/index.mjs +21 -16
- package/dist/lifecycle-workflow.d.mts +2 -3
- package/dist/lifecycle-workflow.d.ts +2 -3
- package/dist/lifecycle-workflow.js +19 -15
- package/dist/lifecycle-workflow.mjs +1 -2
- package/dist/local-fs-handlers-SY2RDXZE.mjs +314 -0
- package/dist/next/loader.js +3 -3
- package/dist/next/loader.mjs +1 -1
- package/dist/next.js +3 -5
- package/dist/next.mjs +2 -4
- package/dist/{sandbox-27X2DSE3.mjs → sandbox-GPCA35PJ.mjs} +2 -3
- package/dist/{storage-KQYV42J4.mjs → storage-LL6IA24R.mjs} +2 -2
- package/package.json +2 -2
- package/dist/chunk-2IIWVPZB.mjs +0 -334
- package/dist/chunk-A63YU65A.mjs +0 -20
- package/dist/chunk-RDKDLHXM.mjs +0 -2031
- package/dist/chunk-VGJISV6O.mjs +0 -108
- package/dist/chunk-VS7U6SXN.mjs +0 -1261
- package/dist/client-DjcE0ATp.d.mts +0 -710
- package/dist/client-DwrDzn4_.d.ts +0 -710
- package/dist/local-fs-handlers-Q5W52DKV.mjs +0 -290
package/dist/next.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
package_default
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-E7TOPGHY.mjs";
|
|
4
4
|
import {
|
|
5
5
|
__require
|
|
6
6
|
} from "./chunk-BJTO5JO5.mjs";
|
|
@@ -118,11 +118,9 @@ export function __init${a.exportName[0].toUpperCase()}${a.exportName.slice(
|
|
|
118
118
|
1
|
|
119
119
|
)}(agent) {
|
|
120
120
|
agent.rpc = ${a.uniqueId}Rpc;
|
|
121
|
-
registerRpc(agent._agentName, ${a.uniqueId}Rpc);
|
|
122
121
|
}`
|
|
123
122
|
).join("\n");
|
|
124
123
|
const stepsContent = `// Auto-generated by withAgent - do not edit
|
|
125
|
-
import { registerRpc } from "experimental-agent";
|
|
126
124
|
${rpcFunctions}
|
|
127
125
|
${initFunctions}
|
|
128
126
|
`;
|
|
@@ -226,4 +224,4 @@ function withAgent(configOrFn, agentConfig) {
|
|
|
226
224
|
export {
|
|
227
225
|
withAgent
|
|
228
226
|
};
|
|
229
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgdGhlIHByb2plY3QgdXNlcyBzcmMvYXBwIG9yIGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuICogUmV0dXJucyB0aGUgYXBwIGRpcmVjdG9yeSBwYXRoIHJlbGF0aXZlIHRvIGN3ZC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwRGlyKGN3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjQXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiwgXCJhcHBcIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRNYXRjaGVzID0gY29udGVudC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbiAgcmVnaXN0ZXJScGMoYWdlbnQuX2FnZW50TmFtZSwgJHthLnVuaXF1ZUlkfVJwYyk7XG59YFxuICAgIClcbiAgICAuam9pbihcIlxcblwiKTtcblxuICBjb25zdCBzdGVwc0NvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gZG8gbm90IGVkaXRcbmltcG9ydCB7IHJlZ2lzdGVyUnBjIH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudFwiO1xuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBzdHJpbmdbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBpZiAoZGVidWcpIHtcbiAgICBwcm9jZXNzLmVudi5BR0VOVF9ERUJVRyA9IFwiMVwiO1xuICB9XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFtsb2FkZXJQYXRoLCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OztBQUFBLFlBQVksWUFBWTtBQUN4QixZQUFZLFFBQVE7QUFDcEIsWUFBWSxVQUFVO0FBU3RCLElBQU0sZUFBZSxnQkFBSTtBQUN6QixJQUFNLHlCQUF5QjtBQUMvQixJQUFNLGlCQUFpQjtBQUN2QixJQUFNLHFCQUFxQjtBQUMzQixJQUFNLHdCQUF3QixDQUFDLFNBQVMsT0FBTyxhQUFhLFNBQVM7QUFTckUsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLE1BQUksT0FBTztBQUNYLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDbkMsVUFBTSxPQUFPLElBQUksV0FBVyxDQUFDO0FBRTdCLFlBQVEsUUFBUSxLQUFLLE9BQU87QUFFNUIsWUFBUTtBQUFBLEVBQ1Y7QUFDQSxTQUFPLEtBQUssSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDL0M7QUFNQSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsUUFBTSxZQUFpQixVQUFLLEtBQUssT0FBTyxLQUFLO0FBQzdDLE1BQU8sY0FBVyxTQUFTLEdBQUc7QUFDNUIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPO0FBQ1Q7QUFLQSxTQUFTLGFBQWEsS0FBYSxPQUFpQztBQUNsRSxRQUFNLFNBQTBCLENBQUM7QUFFakMsUUFBTSxhQUFhLENBQU0sVUFBSyxLQUFLLEtBQUssR0FBRyxH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
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL25leHQvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTmV4dENvbmZpZyB9IGZyb20gXCJuZXh0XCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuLi8uLi9wYWNrYWdlLmpzb25cIjtcblxuZXhwb3J0IHR5cGUgV2l0aEFnZW50Q29uZmlnID0ge1xuICAvKiogRW5hYmxlIGRlYnVnIGxvZ2dpbmcgKi9cbiAgZGVidWc/OiBib29sZWFuO1xufTtcblxuY29uc3QgUEFDS0FHRV9OQU1FID0gcGtnLm5hbWU7XG5jb25zdCBBR0VOVF9QUk9UT0NPTF9WRVJTSU9OID0gXCJ2MVwiO1xuY29uc3QgRklMRV9FWFRfUkVHRVggPSAvXFwuKHRzfHRzeHxqc3xqc3gpJC87XG5jb25zdCBBR0VOVF9FWFBPUlRfUkVHRVggPSAvZXhwb3J0XFxzK2NvbnN0XFxzKyhcXHcrKVxccyo9XFxzKmFnZW50XFxzKlxcKC9nO1xuY29uc3QgREVGQVVMVF9XT1JLRkxPV19ESVJTID0gW1wicGFnZXNcIiwgXCJhcHBcIiwgXCJzcmMvcGFnZXNcIiwgXCJzcmMvYXBwXCJdO1xuXG50eXBlIERldGVjdGVkQWdlbnQgPSB7XG4gIGV4cG9ydE5hbWU6IHN0cmluZztcbiAgZmlsZVBhdGg6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyOiBleHBvcnROYW1lIG9yIGV4cG9ydE5hbWVfaGFzaCBpZiBkdXBsaWNhdGVzIGV4aXN0ICovXG4gIHVuaXF1ZUlkOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBzaG9ydEhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgaGFzaCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9CaXR3aXNlT3BlcmF0b3JzOiBpbnRlbnRpb25hbCBoYXNoIGNvbXB1dGF0aW9uXG4gICAgaGFzaCA9IChoYXNoIDw8IDUpIC0gaGFzaCArIGNoYXI7XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0JpdHdpc2VPcGVyYXRvcnM6IGNvbnZlcnQgdG8gMzItYml0IGludGVnZXJcbiAgICBoYXNoICY9IGhhc2g7XG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpLnRvU3RyaW5nKDM2KS5zbGljZSgwLCA2KTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgdGhlIHByb2plY3QgdXNlcyBzcmMvYXBwIG9yIGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlLlxuICogUmV0dXJucyB0aGUgYXBwIGRpcmVjdG9yeSBwYXRoIHJlbGF0aXZlIHRvIGN3ZC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXBwRGlyKGN3ZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjQXBwRGlyID0gcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiwgXCJhcHBcIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHNyY0FwcERpcikpIHtcbiAgICByZXR1cm4gXCJzcmMvYXBwXCI7XG4gIH1cbiAgcmV0dXJuIFwiYXBwXCI7XG59XG5cbi8qKlxuICogU2NhbnMgZm9yIGFnZW50IGV4cG9ydHMgaW4gdGhlIHByb2plY3QuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdEFnZW50cyhjd2Q6IHN0cmluZywgZGVidWc6IGJvb2xlYW4pOiBEZXRlY3RlZEFnZW50W10ge1xuICBjb25zdCBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSA9IFtdO1xuXG4gIGNvbnN0IGRpcnNUb1NjYW4gPSBbcGF0aC5qb2luKGN3ZCwgXCJzcmNcIiksIGN3ZF07XG5cbiAgZnVuY3Rpb24gc2NhbkRpcihkaXI6IHN0cmluZykge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cmllcyA9IGZzLnJlYWRkaXJTeW5jKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4oZGlyLCBlbnRyeS5uYW1lKTtcbiAgICAgIGlmIChcbiAgICAgICAgZW50cnkuaXNEaXJlY3RvcnkoKSAmJlxuICAgICAgICAhZW50cnkubmFtZS5zdGFydHNXaXRoKFwiLlwiKSAmJlxuICAgICAgICBlbnRyeS5uYW1lICE9PSBcIm5vZGVfbW9kdWxlc1wiICYmXG4gICAgICAgIGVudHJ5Lm5hbWUgIT09IFwic3JjXCJcbiAgICAgICkge1xuICAgICAgICBzY2FuRGlyKGZ1bGxQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAoZW50cnkuaXNGaWxlKCkgJiYgRklMRV9FWFRfUkVHRVgudGVzdChlbnRyeS5uYW1lKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZnVsbFBhdGgsIFwidXRmLThcIik7XG4gICAgICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoUEFDS0FHRV9OQU1FKSAmJiBjb250ZW50LmluY2x1ZGVzKFwiYWdlbnQoXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBvcnRNYXRjaGVzID0gY29udGVudC5tYXRjaEFsbChBR0VOVF9FWFBPUlRfUkVHRVgpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRjaCBvZiBleHBvcnRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIGFnZW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBvcnROYW1lOiBtYXRjaFsxXSxcbiAgICAgICAgICAgICAgICBmaWxlUGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICAgICAgdW5pcXVlSWQ6IFwiXCIsIC8vIFdpbGwgYmUgc2V0IGFmdGVyIGFsbCBhZ2VudHMgYXJlIGZvdW5kXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGBbd2l0aEFnZW50XSBGb3VuZCBhZ2VudDogJHttYXRjaFsxXX0gaW4gJHtmdWxsUGF0aH1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSWdub3JlIHJlYWQgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IGRpciBvZiBkaXJzVG9TY2FuKSB7XG4gICAgc2NhbkRpcihkaXIpO1xuICB9XG5cbiAgLy8gQXNzaWduIHVuaXF1ZSBJRHMgLSBhZGQgaGFzaCBzdWZmaXggaWYgZHVwbGljYXRlIGV4cG9ydCBuYW1lcyBleGlzdFxuICBjb25zdCBuYW1lQ291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgZm9yIChjb25zdCBhZ2VudCBvZiBhZ2VudHMpIHtcbiAgICBuYW1lQ291bnRzLnNldChcbiAgICAgIGFnZW50LmV4cG9ydE5hbWUsXG4gICAgICAobmFtZUNvdW50cy5nZXQoYWdlbnQuZXhwb3J0TmFtZSkgfHwgMCkgKyAxXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWdlbnQgb2YgYWdlbnRzKSB7XG4gICAgY29uc3QgY291bnQgPSBuYW1lQ291bnRzLmdldChhZ2VudC5leHBvcnROYW1lKSA/PyAwO1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYCR7YWdlbnQuZXhwb3J0TmFtZX1fJHtzaG9ydEhhc2goYWdlbnQuZmlsZVBhdGgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZW50LnVuaXF1ZUlkID0gYWdlbnQuZXhwb3J0TmFtZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWdlbnRzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhbGwgYWdlbnQgZmlsZXMgaW4gLndlbGwta25vd24vYWdlbnQvdjEvOlxuICogLSBzdGVwcy5qczogUlBDIHN0ZXAgZnVuY3Rpb25zIHdpdGggXCJ1c2Ugc3RlcFwiXG4gKiAtIHJvdXRlLmpzOiB0cmlnZ2VycyB3b3JrZmxvdyBkaXNjb3ZlcnlcbiAqL1xuZnVuY3Rpb24gZ2VuZXJhdGVBZ2VudEZpbGVzKFxuICBhZ2VudHM6IERldGVjdGVkQWdlbnRbXSxcbiAgb3V0cHV0RGlyOiBzdHJpbmcsXG4gIF9jd2Q6IHN0cmluZyxcbiAgZGVidWc6IGJvb2xlYW5cbik6IHZvaWQge1xuICBpZiAoYWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBObyBhZ2VudHMgZm91bmQsIHNraXBwaW5nIGdlbmVyYXRpb25cIik7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvdXRwdXREaXIpKSB7XG4gICAgZnMubWtkaXJTeW5jKG91dHB1dERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RlcCBmdW5jdGlvbnMgdGhhdCB1c2UgZHluYW1pYyBpbXBvcnQuXG4gICAqIER5bmFtaWMgaW1wb3J0IGVuc3VyZXMgdGhlIGFnZW50IG1vZHVsZSBsb2FkcyAoaW5jbHVkaW5nIGxvYWRlci1pbmplY3RlZCBpbml0KVxuICAgKiB3aGVuIHRoZSBzdGVwIHJ1bnMgaW4gd29ya2Zsb3cgY29udGV4dCwgYXZvaWRpbmcgdGhlIFwibm90IGluaXRpYWxpemVkXCIgZXJyb3IuXG4gICAqXG4gICAqIFVzZXMgdW5pcXVlSWQgZm9yIGZ1bmN0aW9uIG5hbWVzIHRvIGhhbmRsZSBkdXBsaWNhdGUgZXhwb3J0IG5hbWVzIGFjcm9zcyBmaWxlcy5cbiAgICovXG4gIGNvbnN0IHJwY0Z1bmN0aW9ucyA9IGFnZW50c1xuICAgIC5tYXAoKGEpID0+IHtcbiAgICAgIC8vIENhbGN1bGF0ZSByZWxhdGl2ZSBwYXRoIGZyb20gc3RlcHMuanMgdG8gdGhlIGFnZW50IGZpbGVcbiAgICAgIGxldCBhZ2VudFJlbFBhdGggPSBwYXRoXG4gICAgICAgIC5yZWxhdGl2ZShvdXRwdXREaXIsIGEuZmlsZVBhdGgpXG4gICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcblxuICAgICAgaWYgKCFhZ2VudFJlbFBhdGguc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgICAgYWdlbnRSZWxQYXRoID0gYC4vJHthZ2VudFJlbFBhdGh9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBcbmV4cG9ydCBjb25zdCAke2EudW5pcXVlSWR9UnBjID0gYXN5bmMgKHBhcmFtcykgPT4ge1xuICBcInVzZSBzdGVwXCI7XG4gIGNvbnN0IHsgJHthLmV4cG9ydE5hbWV9IH0gPSBhd2FpdCBpbXBvcnQoXCIke2FnZW50UmVsUGF0aH1cIik7XG4gIGNvbnN0IHJlcyA9IGF3YWl0ICR7YS5leHBvcnROYW1lfS5oYW5kbGVyKHBhcmFtcyk7XG4gIGlmIChyZXMgaW5zdGFuY2VvZiBSZXNwb25zZSkge1xuICAgIHJldHVybiByZXMuanNvbigpO1xuICB9XG4gIHJldHVybiByZXM7XG59O2A7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcblxuICAvKipcbiAgICogSW5pdCBmdW5jdGlvbnMgd2lyZSB1cCBhZ2VudC5ycGMgaW4gdGhlIG1haW4gYXBwIGNvbnRleHQuXG4gICAqIFVzZXMgZXhwb3J0TmFtZSBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgKGxvYWRlciBtYXRjaGVzIGJ5IGV4cG9ydCBuYW1lKSxcbiAgICogYnV0IHJlZmVyZW5jZXMgdW5pcXVlSWQgZm9yIHRoZSBScGMgZnVuY3Rpb24uXG4gICAqL1xuICBjb25zdCBpbml0RnVuY3Rpb25zID0gYWdlbnRzXG4gICAgLm1hcChcbiAgICAgIChhKSA9PiBgXG5leHBvcnQgZnVuY3Rpb24gX19pbml0JHthLmV4cG9ydE5hbWVbMF0udG9VcHBlckNhc2UoKX0ke2EuZXhwb3J0TmFtZS5zbGljZShcbiAgICAgICAgMVxuICAgICAgKX0oYWdlbnQpIHtcbiAgYWdlbnQucnBjID0gJHthLnVuaXF1ZUlkfVJwYztcbn1gXG4gICAgKVxuICAgIC5qb2luKFwiXFxuXCIpO1xuXG4gIGNvbnN0IHN0ZXBzQ29udGVudCA9IGAvLyBBdXRvLWdlbmVyYXRlZCBieSB3aXRoQWdlbnQgLSBkbyBub3QgZWRpdFxuJHtycGNGdW5jdGlvbnN9XG4ke2luaXRGdW5jdGlvbnN9XG5gO1xuXG4gIGNvbnN0IHN0ZXBzUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwic3RlcHMuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMoc3RlcHNQYXRoLCBzdGVwc0NvbnRlbnQpO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSByb3V0ZS5qcyB0aGF0IGltcG9ydHMgc3RlcHMuanMuXG4gICAqIFRoaXMgZW5zdXJlcyB3b3JrZmxvdyBkaXNjb3ZlcnMgdGhlIFwidXNlIHN0ZXBcIiBmdW5jdGlvbnMuXG4gICAqIE5vIGFjdHVhbCBoYW5kbGVyIG5lZWRlZCAtIHN0b3JhZ2UgUlBDIHVzZXMgdGhlIHN0ZXAgZnVuY3Rpb24gZGlyZWN0bHkuXG4gICAqL1xuICBjb25zdCByb3V0ZUNvbnRlbnQgPSBgLy8gQXV0by1nZW5lcmF0ZWQgYnkgd2l0aEFnZW50IC0gdHJpZ2dlcnMgd29ya2Zsb3cgZGlzY292ZXJ5XG5pbXBvcnQgXCIuL3N0ZXBzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gR0VUKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKFwib2tcIik7XG59XG5gO1xuXG4gIGNvbnN0IHJvdXRlUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXIsIFwicm91dGUuanNcIik7XG4gIGZzLndyaXRlRmlsZVN5bmMocm91dGVQYXRoLCByb3V0ZUNvbnRlbnQpO1xuXG4gIC8vIEFkZCAuZ2l0aWdub3JlXG4gIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4ob3V0cHV0RGlyLCBcIi5naXRpZ25vcmVcIik7XG4gIGlmICghZnMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgIGZzLndyaXRlRmlsZVN5bmMoZ2l0aWdub3JlUGF0aCwgXCIqXFxuXCIpO1xuICB9XG5cbiAgaWYgKGRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coYFt3aXRoQWdlbnRdIEdlbmVyYXRlZCBhZ2VudCBmaWxlcyBhdCAke291dHB1dERpcn1gKTtcbiAgfVxufVxuXG50eXBlIFR1cmJvcGFja1J1bGUgPSB7XG4gIGxvYWRlcnM/OiBzdHJpbmdbXTtcbiAgY29uZGl0aW9uPzoge1xuICAgIGFsbD86IHVua25vd25bXTtcbiAgICBhbnk/OiB1bmtub3duW107XG4gICAgcGF0aD86IFJlZ0V4cDtcbiAgICBjb250ZW50PzogUmVnRXhwO1xuICAgIG5vdD86IHVua25vd247XG4gIH07XG59O1xuXG50eXBlIFdvcmtmbG93Q29uZmlnRm4gPSAoXG4gIHBoYXNlOiBzdHJpbmcsXG4gIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbikgPT4gUHJvbWlzZTxOZXh0Q29uZmlnPjtcblxudHlwZSBOZXh0Q29uZmlnSW5wdXQgPVxuICB8IE5leHRDb25maWdcbiAgfCAoKFxuICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgIGN0eDogeyBkZWZhdWx0Q29uZmlnOiBOZXh0Q29uZmlnIH1cbiAgICApID0+IFByb21pc2U8TmV4dENvbmZpZz4pO1xuXG4vKipcbiAqIE5leHQuanMgcGx1Z2luIHRoYXQgY29uZmlndXJlcyBhZ2VudCBzdXBwb3J0LlxuICpcbiAqIC0gRGV0ZWN0cyBhZ2VudHMgYW5kIGdlbmVyYXRlcyBSUEMgc3RlcHMgd2l0aCBcInVzZSBzdGVwXCIgaW4gLndlbGwta25vd24vYWdlbnQvdjEvXG4gKiAtIEdlbmVyYXRlcyBBR0VOVF9TRUNSRVQgZm9yIHNlY3VyZSBSUEMgY2FsbHNcbiAqIC0gV3JhcHMgd2l0aFdvcmtmbG93IGZvciB3b3JrZmxvdyBzdXBwb3J0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBuZXh0LmNvbmZpZy50c1xuICogaW1wb3J0IHsgd2l0aEFnZW50IH0gZnJvbSBcImV4cGVyaW1lbnRhbC1hZ2VudC9uZXh0XCI7XG4gKlxuICogLy8gT3B0aW9uIDE6IHdpdGhBZ2VudCBoYW5kbGVzIGV2ZXJ5dGhpbmcgKHJlY29tbWVuZGVkKVxuICogZXhwb3J0IGRlZmF1bHQgd2l0aEFnZW50KHt9KTtcbiAqXG4gKiAvLyBPcHRpb24gMjogQ29tcG9zZSB3aXRoIG90aGVyIHBsdWdpbnNcbiAqIGV4cG9ydCBkZWZhdWx0IHdpdGhBZ2VudCh3aXRoU29tZU90aGVyUGx1Z2luKHt9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhBZ2VudChcbiAgY29uZmlnT3JGbjogTmV4dENvbmZpZ0lucHV0LFxuICBhZ2VudENvbmZpZz86IFdpdGhBZ2VudENvbmZpZ1xuKTogV29ya2Zsb3dDb25maWdGbiB7XG4gIGNvbnN0IGRlYnVnID0gYWdlbnRDb25maWc/LmRlYnVnID8/IGZhbHNlO1xuICBpZiAoZGVidWcpIHtcbiAgICBwcm9jZXNzLmVudi5BR0VOVF9ERUJVRyA9IFwiMVwiO1xuICB9XG4gIGNvbnN0IGN3ZCA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgLy8gRGV0ZWN0IGFwcCBkaXJlY3Rvcnkgc3RydWN0dXJlIChzcmMvYXBwIHZzIGFwcClcbiAgY29uc3QgYXBwRGlyID0gZ2V0QXBwRGlyKGN3ZCk7XG4gIGNvbnN0IGFnZW50RGlyID0gYCR7YXBwRGlyfS8ud2VsbC1rbm93bi9hZ2VudC8ke0FHRU5UX1BST1RPQ09MX1ZFUlNJT059YDtcblxuICAvLyBEZXRlY3QgYWdlbnRzIGFuZCBnZW5lcmF0ZSBmaWxlcyBGSVJTVCAoYmVmb3JlIHdvcmtmbG93IGRpc2NvdmVycyB0aGVtKVxuICBjb25zdCBhZ2VudHMgPSBkZXRlY3RBZ2VudHMoY3dkLCBkZWJ1Zyk7XG4gIGNvbnN0IG91dHB1dERpciA9IHBhdGguam9pbihjd2QsIGFnZW50RGlyKTtcbiAgZ2VuZXJhdGVBZ2VudEZpbGVzKGFnZW50cywgb3V0cHV0RGlyLCBjd2QsIGRlYnVnKTtcblxuICBjb25zdCBhZ2VudEZpbGVQYXRocyA9IGFnZW50cy5tYXAoKGEpID0+IGEuZmlsZVBhdGgpO1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiLi9uZXh0L2xvYWRlclwiKTtcblxuICBpZiAoZGVidWcpIHtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGxvYWRlciBwYXRoOlwiLCBsb2FkZXJQYXRoKTtcbiAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIGFnZW50IGZpbGVzOlwiLCBhZ2VudEZpbGVQYXRocyk7XG4gICAgY29uc29sZS5sb2coXCJbd2l0aEFnZW50XSBhZ2VudCBkaXI6XCIsIGFnZW50RGlyKTtcbiAgfVxuXG4gIC8vIEJ1aWxkIHJlZ2V4IHRvIG1hdGNoIGFnZW50IGZpbGUgcGF0aHNcbiAgY29uc3QgYWdlbnRQYXRoUmVnZXggPVxuICAgIGFnZW50RmlsZVBhdGhzLmxlbmd0aCA+IDBcbiAgICAgID8gbmV3IFJlZ0V4cChcbiAgICAgICAgICBgJHthZ2VudEZpbGVQYXRoc1xuICAgICAgICAgICAgLm1hcCgocCkgPT5cbiAgICAgICAgICAgICAgcGF0aFxuICAgICAgICAgICAgICAgIC5yZWxhdGl2ZShjd2QsIHApXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmpvaW4oXCJ8XCIpfSRgXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcblxuICAvKipcbiAgICogQWx3YXlzIHBhc3MgdGhyb3VnaCB3aXRoV29ya2Zsb3cgLSBpdCBoYW5kbGVzIGJvdGggTmV4dENvbmZpZyBhbmQgYXN5bmMgZnVuY3Rpb25zLlxuICAgKiBUaGlzIGVuc3VyZXMgd29ya2Zsb3cgaXMgYWx3YXlzIGNvbmZpZ3VyZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGUgdXNlciBwYXNzZWQuXG4gICAqL1xuICBsZXQgd2l0aFdvcmtmbG93OiAoXG4gICAgY29uZmlnOiBOZXh0Q29uZmlnSW5wdXQsXG4gICAgb3B0aW9ucz86IHsgd29ya2Zsb3dzPzogeyBkaXJzPzogc3RyaW5nW10gfSB9XG4gICkgPT4gV29ya2Zsb3dDb25maWdGbjtcbiAgdHJ5IHtcbiAgICB3aXRoV29ya2Zsb3cgPSByZXF1aXJlKFwid29ya2Zsb3cvbmV4dFwiKS53aXRoV29ya2Zsb3c7XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3dpdGhBZ2VudF0gd29ya2Zsb3cvbmV4dCBub3QgZm91bmQuIE1ha2Ugc3VyZSB3b3JrZmxvdyBpcyBpbnN0YWxsZWQuXCJcbiAgICApO1xuICAgIHJldHVybiB0eXBlb2YgY29uZmlnT3JGbiA9PT0gXCJmdW5jdGlvblwiXG4gICAgICA/IGNvbmZpZ09yRm5cbiAgICAgIDogYXN5bmMgKCkgPT4gY29uZmlnT3JGbjtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb25maWdGbiA9IHdpdGhXb3JrZmxvdyhjb25maWdPckZuLCB7XG4gICAgd29ya2Zsb3dzOiB7XG4gICAgICBkaXJzOiBbLi4uREVGQVVMVF9XT1JLRkxPV19ESVJTLCBhZ2VudERpcl0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHdyYXBwZXIgdGhhdCBydW5zIEFGVEVSIHdvcmtmbG93IHByb2Nlc3NlcywgdGhlbiBhZGRzIG91ciBsb2FkZXIuXG4gICAqIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd29ya2Zsb3cgb3ZlcndyaXRlcyB0dXJib3BhY2sgcnVsZXMgLSB3ZSBuZWVkIHRvXG4gICAqIG1vZGlmeSB0aGVtIGFmdGVyIHdvcmtmbG93IGlzIGRvbmUuXG4gICAqL1xuICByZXR1cm4gYXN5bmMgKHBoYXNlLCBjdHgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29uZmlnID0gYXdhaXQgYmFzZUNvbmZpZ0ZuKHBoYXNlLCBjdHgpO1xuXG4gICAgLy8gU2V0IHVwIEFHRU5UX1NFQ1JFVCBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoIXByb2Nlc3MuZW52LkFHRU5UX1NFQ1JFVCkge1xuICAgICAgbmV4dENvbmZpZy5lbnYgPSB7XG4gICAgICAgIC4uLm5leHRDb25maWcuZW52LFxuICAgICAgICBBR0VOVF9TRUNSRVQ6IGNyeXB0by5yYW5kb21VVUlEKCksXG4gICAgICB9O1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3dpdGhBZ2VudF0gR2VuZXJhdGVkIEFHRU5UX1NFQ1JFVFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWFnZW50UGF0aFJlZ2V4IHx8IGFnZW50RmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG5leHRDb25maWc7XG4gICAgfVxuXG4gICAgLy8gTW9kaWZ5IHR1cmJvcGFjayBydWxlcyB0byBpbmNsdWRlIG91ciBsb2FkZXIgZm9yIGFnZW50IGZpbGVzXG4gICAgY29uc3QgcnVsZXMgPSAobmV4dENvbmZpZy50dXJib3BhY2s/LnJ1bGVzIHx8IHt9KSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBUdXJib3BhY2tSdWxlXG4gICAgPjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFtcIioudHNcIiwgXCIqLnRzeFwiLCBcIiouanNcIiwgXCIqLmpzeFwiXSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdSdWxlID0gcnVsZXNba2V5XTtcbiAgICAgIGlmICghZXhpc3RpbmdSdWxlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFdvcmtmbG93J3MgcnVsZSBoYXM6IGNvbmRpdGlvbi5hbGwgPSBbeyBub3Q6IHBhdGggfSwgeyBjb250ZW50OiAvdXNlIHN0ZXB8Li4uLyB9XVxuICAgICAgICogV2Ugd2FudDogcnVuIGxvYWRlciBpZiB3b3JrZmxvdydzIGNvbmRpdGlvbnMgbWF0Y2ggT1IgaXQncyBhbiBhZ2VudCBmaWxlLlxuICAgICAgICogU28gd2Ugd3JhcCBpbjogY29uZGl0aW9uLmFueSA9IFtleGlzdGluZ0NvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XVxuICAgICAgICovXG4gICAgICBydWxlc1trZXldID0ge1xuICAgICAgICAuLi5leGlzdGluZ1J1bGUsXG4gICAgICAgIGxvYWRlcnM6IFtsb2FkZXJQYXRoLCAuLi4oZXhpc3RpbmdSdWxlLmxvYWRlcnMgfHwgW10pXSxcbiAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgYW55OiBbZXhpc3RpbmdSdWxlLmNvbmRpdGlvbiwgeyBwYXRoOiBhZ2VudFBhdGhSZWdleCB9XSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjb25maWd1cmUgd2VicGFjayBmb3Igbm9uLXR1cmJvcGFjayBidWlsZHNcbiAgICBjb25zdCBleGlzdGluZ1dlYnBhY2sgPSBuZXh0Q29uZmlnLndlYnBhY2s7XG4gICAgbmV4dENvbmZpZy53ZWJwYWNrID0gKHdlYnBhY2tDb25maWcsIGNvbnRleHQpID0+IHtcbiAgICAgIHdlYnBhY2tDb25maWcubW9kdWxlLnJ1bGVzLnB1c2goe1xuICAgICAgICB0ZXN0OiAocmVzb3VyY2VQYXRoOiBzdHJpbmcpID0+IGFnZW50RmlsZVBhdGhzLmluY2x1ZGVzKHJlc291cmNlUGF0aCksXG4gICAgICAgIHVzZTogW3sgbG9hZGVyOiBsb2FkZXJQYXRoIH1dLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrPy4od2VicGFja0NvbmZpZywgY29udGV4dCkgPz8gd2VicGFja0NvbmZpZztcbiAgICB9O1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIlt3aXRoQWdlbnRdIEFkZGVkIGFnZW50IGxvYWRlciB0byB0dXJib3BhY2sgcnVsZXNcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRDb25maWc7XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OztBQUFBLFlBQVksWUFBWTtBQUN4QixZQUFZLFFBQVE7QUFDcEIsWUFBWSxVQUFVO0FBU3RCLElBQU0sZUFBZSxnQkFBSTtBQUN6QixJQUFNLHlCQUF5QjtBQUMvQixJQUFNLGlCQUFpQjtBQUN2QixJQUFNLHFCQUFxQjtBQUMzQixJQUFNLHdCQUF3QixDQUFDLFNBQVMsT0FBTyxhQUFhLFNBQVM7QUFTckUsU0FBUyxVQUFVLEtBQXFCO0FBQ3RDLE1BQUksT0FBTztBQUNYLFdBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDbkMsVUFBTSxPQUFPLElBQUksV0FBVyxDQUFDO0FBRTdCLFlBQVEsUUFBUSxLQUFLLE9BQU87QUFFNUIsWUFBUTtBQUFBLEVBQ1Y7QUFDQSxTQUFPLEtBQUssSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFDL0M7QUFNQSxTQUFTLFVBQVUsS0FBcUI7QUFDdEMsUUFBTSxZQUFpQixVQUFLLEtBQUssT0FBTyxLQUFLO0FBQzdDLE1BQU8sY0FBVyxTQUFTLEdBQUc7QUFDNUIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPO0FBQ1Q7QUFLQSxTQUFTLGFBQWEsS0FBYSxPQUFpQztBQUNsRSxRQUFNLFNBQTBCLENBQUM7QUFFakMsUUFBTSxhQUFhLENBQU0sVUFBSyxLQUFLLEtBQUssR0FBRyxHQUFHO0FBRTlDLFdBQVMsUUFBUSxLQUFhO0FBQzVCLFFBQUksQ0FBSSxjQUFXLEdBQUcsR0FBRztBQUN2QjtBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQWEsZUFBWSxLQUFLLEVBQUUsZUFB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
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getSandbox
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-A63YU65A.mjs";
|
|
3
|
+
} from "./chunk-6J462JGP.mjs";
|
|
4
|
+
import "./chunk-W4SSZPDX.mjs";
|
|
6
5
|
import "./chunk-HJGPUEFC.mjs";
|
|
7
6
|
import "./chunk-BJTO5JO5.mjs";
|
|
8
7
|
export {
|
|
@@ -2,12 +2,12 @@ import "./chunk-TAXLUVIC.mjs";
|
|
|
2
2
|
import {
|
|
3
3
|
STORAGE_RPC_METHODS,
|
|
4
4
|
handleStorageRpc
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-2SPAJ777.mjs";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_NAMESPACE,
|
|
8
8
|
LOCAL_STORAGE_VERSION,
|
|
9
9
|
getStorage
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ORE6LK2L.mjs";
|
|
11
11
|
import "./chunk-HJGPUEFC.mjs";
|
|
12
12
|
import "./chunk-BJTO5JO5.mjs";
|
|
13
13
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "experimental-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"ai": "^6.0.0",
|
|
59
|
-
"workflow": "https://workflow-docs-
|
|
59
|
+
"workflow": "https://workflow-docs-6sokmamy6.vercel.sh/workflow.tgz"
|
|
60
60
|
},
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public"
|
package/dist/chunk-2IIWVPZB.mjs
DELETED
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MessageNotFoundError,
|
|
3
|
-
SandboxNotFoundError,
|
|
4
|
-
SessionNotFoundError,
|
|
5
|
-
StorageError
|
|
6
|
-
} from "./chunk-HJGPUEFC.mjs";
|
|
7
|
-
|
|
8
|
-
// src/storage/client.ts
|
|
9
|
-
function getStorageClient(rpcFn, name) {
|
|
10
|
-
async function rpc(method, params) {
|
|
11
|
-
const result = await rpcFn({ name, method, params });
|
|
12
|
-
if ("error" in result) {
|
|
13
|
-
throw new StorageError({ reason: result.error.message });
|
|
14
|
-
}
|
|
15
|
-
return result.result;
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
session: {
|
|
19
|
-
get: async (id) => {
|
|
20
|
-
try {
|
|
21
|
-
const result = await rpc("session.get", { id });
|
|
22
|
-
if (result === null) {
|
|
23
|
-
return new SessionNotFoundError({ id });
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
} catch (e) {
|
|
27
|
-
if (e instanceof StorageError) {
|
|
28
|
-
return e;
|
|
29
|
-
}
|
|
30
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
set: async (session) => {
|
|
34
|
-
try {
|
|
35
|
-
return await rpc("session.set", session);
|
|
36
|
-
} catch (e) {
|
|
37
|
-
if (e instanceof StorageError) {
|
|
38
|
-
return e;
|
|
39
|
-
}
|
|
40
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
list: async (opts) => {
|
|
44
|
-
try {
|
|
45
|
-
return await rpc("session.list", {
|
|
46
|
-
tags: opts?.tags,
|
|
47
|
-
order: opts?.order,
|
|
48
|
-
cursor: opts?.cursor,
|
|
49
|
-
limit: opts?.limit
|
|
50
|
-
});
|
|
51
|
-
} catch (e) {
|
|
52
|
-
if (e instanceof StorageError) {
|
|
53
|
-
return e;
|
|
54
|
-
}
|
|
55
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
tag: {
|
|
59
|
-
set: async ({ sessionId, tags }) => {
|
|
60
|
-
try {
|
|
61
|
-
return await rpc("session.tag.set", { sessionId, tags });
|
|
62
|
-
} catch (e) {
|
|
63
|
-
if (e instanceof StorageError) {
|
|
64
|
-
return e;
|
|
65
|
-
}
|
|
66
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
message: {
|
|
72
|
-
list: async (sessionId, opts) => {
|
|
73
|
-
try {
|
|
74
|
-
return await rpc("message.list", {
|
|
75
|
-
sessionId,
|
|
76
|
-
cursor: opts?.cursor,
|
|
77
|
-
limit: opts?.limit
|
|
78
|
-
});
|
|
79
|
-
} catch (e) {
|
|
80
|
-
if (e instanceof StorageError) {
|
|
81
|
-
return e;
|
|
82
|
-
}
|
|
83
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
84
|
-
}
|
|
85
|
-
},
|
|
86
|
-
get: async (id) => {
|
|
87
|
-
try {
|
|
88
|
-
const result = await rpc("message.get", { id });
|
|
89
|
-
if (result === null) {
|
|
90
|
-
return new MessageNotFoundError({ id });
|
|
91
|
-
}
|
|
92
|
-
return result;
|
|
93
|
-
} catch (e) {
|
|
94
|
-
if (e instanceof StorageError) {
|
|
95
|
-
return e;
|
|
96
|
-
}
|
|
97
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
set: async (message) => {
|
|
101
|
-
try {
|
|
102
|
-
return await rpc("message.set", message);
|
|
103
|
-
} catch (e) {
|
|
104
|
-
if (e instanceof StorageError) {
|
|
105
|
-
return e;
|
|
106
|
-
}
|
|
107
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
part: {
|
|
112
|
-
listByMessage: async (messageId, opts) => {
|
|
113
|
-
try {
|
|
114
|
-
const result = await rpc("part.listByMessage", {
|
|
115
|
-
messageId,
|
|
116
|
-
cursor: opts?.cursor,
|
|
117
|
-
limit: opts?.limit
|
|
118
|
-
});
|
|
119
|
-
return result;
|
|
120
|
-
} catch (e) {
|
|
121
|
-
if (e instanceof StorageError) {
|
|
122
|
-
return e;
|
|
123
|
-
}
|
|
124
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
listBySession: async (sessionId, opts) => {
|
|
128
|
-
try {
|
|
129
|
-
const result = await rpc("part.listBySession", {
|
|
130
|
-
sessionId,
|
|
131
|
-
cursor: opts?.cursor,
|
|
132
|
-
limit: opts?.limit
|
|
133
|
-
});
|
|
134
|
-
return result;
|
|
135
|
-
} catch (e) {
|
|
136
|
-
if (e instanceof StorageError) {
|
|
137
|
-
return e;
|
|
138
|
-
}
|
|
139
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
set: async (part) => {
|
|
143
|
-
try {
|
|
144
|
-
return await rpc("part.set", part);
|
|
145
|
-
} catch (e) {
|
|
146
|
-
if (e instanceof StorageError) {
|
|
147
|
-
return e;
|
|
148
|
-
}
|
|
149
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
delete: async (id) => {
|
|
153
|
-
try {
|
|
154
|
-
await rpc("part.delete", { id });
|
|
155
|
-
} catch (e) {
|
|
156
|
-
if (e instanceof StorageError) {
|
|
157
|
-
return e;
|
|
158
|
-
}
|
|
159
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
sandbox: {
|
|
164
|
-
get: async (key) => {
|
|
165
|
-
try {
|
|
166
|
-
const result = await rpc("sandbox.get", { key });
|
|
167
|
-
if (result === null) {
|
|
168
|
-
return new SandboxNotFoundError({ id: key });
|
|
169
|
-
}
|
|
170
|
-
return result;
|
|
171
|
-
} catch (e) {
|
|
172
|
-
if (e instanceof StorageError) {
|
|
173
|
-
return e;
|
|
174
|
-
}
|
|
175
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
getBySession: async (sessionId) => {
|
|
179
|
-
try {
|
|
180
|
-
const result = await rpc("sandbox.getBySession", { sessionId });
|
|
181
|
-
if (result === null) {
|
|
182
|
-
return new SandboxNotFoundError({ id: sessionId });
|
|
183
|
-
}
|
|
184
|
-
return result;
|
|
185
|
-
} catch (e) {
|
|
186
|
-
if (e instanceof StorageError) {
|
|
187
|
-
return e;
|
|
188
|
-
}
|
|
189
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
set: async (record) => {
|
|
193
|
-
try {
|
|
194
|
-
await rpc("sandbox.set", record);
|
|
195
|
-
return record;
|
|
196
|
-
} catch (e) {
|
|
197
|
-
if (e instanceof StorageError) {
|
|
198
|
-
return e;
|
|
199
|
-
}
|
|
200
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
list: async (opts) => {
|
|
204
|
-
try {
|
|
205
|
-
return await rpc("sandbox.list", {
|
|
206
|
-
tags: opts?.tags,
|
|
207
|
-
order: opts?.order,
|
|
208
|
-
cursor: opts?.cursor,
|
|
209
|
-
limit: opts?.limit
|
|
210
|
-
});
|
|
211
|
-
} catch (e) {
|
|
212
|
-
if (e instanceof StorageError) {
|
|
213
|
-
return e;
|
|
214
|
-
}
|
|
215
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
tag: {
|
|
219
|
-
set: async ({ sandboxId, tags }) => {
|
|
220
|
-
try {
|
|
221
|
-
return await rpc("sandbox.tag.set", { sandboxId, tags });
|
|
222
|
-
} catch (e) {
|
|
223
|
-
if (e instanceof StorageError) {
|
|
224
|
-
return e;
|
|
225
|
-
}
|
|
226
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
},
|
|
230
|
-
acquireLock: async (record, lockTimeoutMs) => {
|
|
231
|
-
try {
|
|
232
|
-
return await rpc("sandbox.acquireLock", {
|
|
233
|
-
record,
|
|
234
|
-
lockTimeoutMs
|
|
235
|
-
});
|
|
236
|
-
} catch (e) {
|
|
237
|
-
if (e instanceof StorageError) {
|
|
238
|
-
return e;
|
|
239
|
-
}
|
|
240
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
setup: {
|
|
245
|
-
get: async (key) => {
|
|
246
|
-
try {
|
|
247
|
-
return await rpc("setup.get", { key });
|
|
248
|
-
} catch (e) {
|
|
249
|
-
if (e instanceof StorageError) {
|
|
250
|
-
return e;
|
|
251
|
-
}
|
|
252
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
253
|
-
}
|
|
254
|
-
},
|
|
255
|
-
set: async (snapshot) => {
|
|
256
|
-
try {
|
|
257
|
-
await rpc("setup.set", snapshot);
|
|
258
|
-
return snapshot;
|
|
259
|
-
} catch (e) {
|
|
260
|
-
if (e instanceof StorageError) {
|
|
261
|
-
return e;
|
|
262
|
-
}
|
|
263
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
264
|
-
}
|
|
265
|
-
},
|
|
266
|
-
acquireLock: async (key, lockId, lockTimeoutMs) => {
|
|
267
|
-
try {
|
|
268
|
-
return await rpc("setup.acquireLock", {
|
|
269
|
-
key,
|
|
270
|
-
lockId,
|
|
271
|
-
lockTimeoutMs
|
|
272
|
-
});
|
|
273
|
-
} catch (e) {
|
|
274
|
-
if (e instanceof StorageError) {
|
|
275
|
-
return e;
|
|
276
|
-
}
|
|
277
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
command: {
|
|
282
|
-
get: async (id) => {
|
|
283
|
-
try {
|
|
284
|
-
return await rpc("command.get", { id });
|
|
285
|
-
} catch (e) {
|
|
286
|
-
if (e instanceof StorageError) {
|
|
287
|
-
return e;
|
|
288
|
-
}
|
|
289
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
290
|
-
}
|
|
291
|
-
},
|
|
292
|
-
set: async (command) => {
|
|
293
|
-
try {
|
|
294
|
-
return await rpc("command.set", command);
|
|
295
|
-
} catch (e) {
|
|
296
|
-
if (e instanceof StorageError) {
|
|
297
|
-
return e;
|
|
298
|
-
}
|
|
299
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
300
|
-
}
|
|
301
|
-
},
|
|
302
|
-
list: async (sessionId, opts) => {
|
|
303
|
-
try {
|
|
304
|
-
const result = await rpc("command.list", {
|
|
305
|
-
sessionId,
|
|
306
|
-
includeFinished: opts?.includeFinished,
|
|
307
|
-
cursor: opts?.cursor,
|
|
308
|
-
limit: opts?.limit
|
|
309
|
-
});
|
|
310
|
-
return result;
|
|
311
|
-
} catch (e) {
|
|
312
|
-
if (e instanceof StorageError) {
|
|
313
|
-
return e;
|
|
314
|
-
}
|
|
315
|
-
return new StorageError({ reason: String(e), cause: e });
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
var DEFAULT_NAMESPACE = "default";
|
|
322
|
-
var LOCAL_STORAGE_VERSION = "v1";
|
|
323
|
-
function getStorage(opts) {
|
|
324
|
-
const name = opts.config.name ?? DEFAULT_NAMESPACE;
|
|
325
|
-
return getStorageClient(opts.rpc, name);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
export {
|
|
329
|
-
getStorageClient,
|
|
330
|
-
DEFAULT_NAMESPACE,
|
|
331
|
-
LOCAL_STORAGE_VERSION,
|
|
332
|
-
getStorage
|
|
333
|
-
};
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3N0b3JhZ2UvY2xpZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQge1xuICBNZXNzYWdlTm90Rm91bmRFcnJvcixcbiAgU2FuZGJveE5vdEZvdW5kRXJyb3IsXG4gIFNlc3Npb25Ob3RGb3VuZEVycm9yLFxuICBTdG9yYWdlRXJyb3IsXG59IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmFnZU1ldGhvZHMgfSBmcm9tIFwiLi9ycGNcIjtcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgTGlzdFJlc3VsdCxcbiAgUGFydCxcbiAgU2V0dXBTbmFwc2hvdCxcbiAgU3RvcmFnZSxcbiAgU3RvcmFnZUNvbmZpZyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxudHlwZSBScGNSZXNwb25zZTxUPiA9XG4gIHwgeyByZXN1bHQ6IFQgfVxuICB8IHsgZXJyb3I6IHsgY29kZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSB9O1xuXG5leHBvcnQgdHlwZSBScGNGbiA9IChwYXJhbXM6IHtcbiAgbmFtZT86IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhcmFtczogdW5rbm93bjtcbn0pID0+IFByb21pc2U8UnBjUmVzcG9uc2U8dW5rbm93bj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmFnZUNsaWVudChycGNGbjogUnBjRm4sIG5hbWU/OiBzdHJpbmcpOiBTdG9yYWdlIHtcbiAgYXN5bmMgZnVuY3Rpb24gcnBjPE0gZXh0ZW5kcyBrZXlvZiBTdG9yYWdlTWV0aG9kcz4oXG4gICAgbWV0aG9kOiBNLFxuICAgIHBhcmFtczogei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tNXVtcInBhcmFtc1wiXT5cbiAgKTogUHJvbWlzZTx6LmluZmVyPFN0b3JhZ2VNZXRob2RzW01dW1wicmVzdWx0XCJdPj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0ZuKHsgbmFtZSwgbWV0aG9kLCBwYXJhbXMgfSk7XG5cbiAgICBpZiAoXCJlcnJvclwiIGluIHJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogcmVzdWx0LmVycm9yLm1lc3NhZ2UgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQgYXMgei5pbmZlcjxTdG9yYWdlTWV0aG9kc1tNXVtcInJlc3VsdFwiXT47XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNlc3Npb246IHtcbiAgICAgIGdldDogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwic2Vzc2lvbi5nZXRcIiwgeyBpZCB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNlc3Npb25Ob3RGb3VuZEVycm9yKHsgaWQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2V0OiBhc3luYyAoc2Vzc2lvbikgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLnNldFwiLCBzZXNzaW9uKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaXN0OiBhc3luYyAob3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLmxpc3RcIiwge1xuICAgICAgICAgICAgdGFnczogb3B0cz8udGFncyxcbiAgICAgICAgICAgIG9yZGVyOiBvcHRzPy5vcmRlcixcbiAgICAgICAgICAgIGN1cnNvcjogb3B0cz8uY3Vyc29yLFxuICAgICAgICAgICAgbGltaXQ6IG9wdHM/LmxpbWl0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRhZzoge1xuICAgICAgICBzZXQ6IGFzeW5jICh7IHNlc3Npb25JZCwgdGFncyB9KSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJzZXNzaW9uLnRhZy5zZXRcIiwgeyBzZXNzaW9uSWQsIHRhZ3MgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgbWVzc2FnZToge1xuICAgICAgbGlzdDogYXN5bmMgKHNlc3Npb25JZCwgb3B0cykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBycGMoXCJtZXNzYWdlLmxpc3RcIiwge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0OiBhc3luYyAoaWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJtZXNzYWdlLmdldFwiLCB7IGlkIH0pO1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTWVzc2FnZU5vdEZvdW5kRXJyb3IoeyBpZCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChtZXNzYWdlKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHJwYyhcIm1lc3NhZ2Uuc2V0XCIsIG1lc3NhZ2UpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHBhcnQ6IHtcbiAgICAgIGxpc3RCeU1lc3NhZ2U6IGFzeW5jIChtZXNzYWdlSWQsIG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJwYXJ0Lmxpc3RCeU1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBMaXN0UmVzdWx0PFBhcnQ+O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxpc3RCeVNlc3Npb246IGFzeW5jIChzZXNzaW9uSWQsIG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJwYXJ0Lmxpc3RCeVNlc3Npb25cIiwge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBMaXN0UmVzdWx0PFBhcnQ+O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHNldDogYXN5bmMgKHBhcnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcInBhcnQuc2V0XCIsIHBhcnQpKSBhcyBQYXJ0O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlbGV0ZTogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgcnBjKFwicGFydC5kZWxldGVcIiwgeyBpZCB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBnZXQ6IGFzeW5jIChrZXkpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJzYW5kYm94LmdldFwiLCB7IGtleSB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNhbmRib3hOb3RGb3VuZEVycm9yKHsgaWQ6IGtleSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBnZXRCeVNlc3Npb246IGFzeW5jIChzZXNzaW9uSWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGMoXCJzYW5kYm94LmdldEJ5U2Vzc2lvblwiLCB7IHNlc3Npb25JZCB9KTtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNhbmRib3hOb3RGb3VuZEVycm9yKHsgaWQ6IHNlc3Npb25JZCB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChyZWNvcmQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBycGMoXCJzYW5kYm94LnNldFwiLCByZWNvcmQpO1xuICAgICAgICAgIHJldHVybiByZWNvcmQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbGlzdDogYXN5bmMgKG9wdHMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwic2FuZGJveC5saXN0XCIsIHtcbiAgICAgICAgICAgIHRhZ3M6IG9wdHM/LnRhZ3MsXG4gICAgICAgICAgICBvcmRlcjogb3B0cz8ub3JkZXIsXG4gICAgICAgICAgICBjdXJzb3I6IG9wdHM/LmN1cnNvcixcbiAgICAgICAgICAgIGxpbWl0OiBvcHRzPy5saW1pdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YWc6IHtcbiAgICAgICAgc2V0OiBhc3luYyAoeyBzYW5kYm94SWQsIHRhZ3MgfSkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcnBjKFwic2FuZGJveC50YWcuc2V0XCIsIHsgc2FuZGJveElkLCB0YWdzIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGFjcXVpcmVMb2NrOiBhc3luYyAocmVjb3JkLCBsb2NrVGltZW91dE1zKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJzYW5kYm94LmFjcXVpcmVMb2NrXCIsIHtcbiAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgIGxvY2tUaW1lb3V0TXMsXG4gICAgICAgICAgfSkpIGFzIGltcG9ydChcIi4vdHlwZXNcIikuU2FuZGJveFJlY29yZCB8IG51bGw7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN0b3JhZ2VFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgU3RvcmFnZUVycm9yKHsgcmVhc29uOiBTdHJpbmcoZSksIGNhdXNlOiBlIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0sXG4gICAgc2V0dXA6IHtcbiAgICAgIGdldDogYXN5bmMgKGtleSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiAoYXdhaXQgcnBjKFwic2V0dXAuZ2V0XCIsIHsga2V5IH0pKSBhcyBTZXR1cFNuYXBzaG90IHwgbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChzbmFwc2hvdCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJwYyhcInNldHVwLnNldFwiLCBzbmFwc2hvdCk7XG4gICAgICAgICAgcmV0dXJuIHNuYXBzaG90O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGFjcXVpcmVMb2NrOiBhc3luYyAoa2V5LCBsb2NrSWQsIGxvY2tUaW1lb3V0TXMpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGF3YWl0IHJwYyhcInNldHVwLmFjcXVpcmVMb2NrXCIsIHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGxvY2tJZCxcbiAgICAgICAgICAgIGxvY2tUaW1lb3V0TXMsXG4gICAgICAgICAgfSkpIGFzIFNldHVwU25hcHNob3QgfCBudWxsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIGNvbW1hbmQ6IHtcbiAgICAgIGdldDogYXN5bmMgKGlkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJjb21tYW5kLmdldFwiLCB7IGlkIH0pKSBhcyBDb21tYW5kIHwgbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzZXQ6IGFzeW5jIChjb21tYW5kKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIChhd2FpdCBycGMoXCJjb21tYW5kLnNldFwiLCBjb21tYW5kKSkgYXMgQ29tbWFuZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RvcmFnZUVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWdlRXJyb3IoeyByZWFzb246IFN0cmluZyhlKSwgY2F1c2U6IGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsaXN0OiBhc3luYyAoc2Vzc2lvbklkLCBvcHRzKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjKFwiY29tbWFuZC5saXN0XCIsIHtcbiAgICAgICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgICAgIGluY2x1ZGVGaW5pc2hlZDogb3B0cz8uaW5jbHVkZUZpbmlzaGVkLFxuICAgICAgICAgICAgY3Vyc29yOiBvcHRzPy5jdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogb3B0cz8ubGltaXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBMaXN0UmVzdWx0PENvbW1hbmQ+O1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTdG9yYWdlRXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFN0b3JhZ2VFcnJvcih7IHJlYXNvbjogU3RyaW5nKGUpLCBjYXVzZTogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSBcImRlZmF1bHRcIjtcbmV4cG9ydCBjb25zdCBMT0NBTF9TVE9SQUdFX1ZFUlNJT04gPSBcInYxXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yYWdlKG9wdHM6IHtcbiAgY29uZmlnOiBTdG9yYWdlQ29uZmlnO1xuICBycGM6IFJwY0ZuO1xufSk6IFN0b3JhZ2Uge1xuICBjb25zdCBuYW1lID0gb3B0cy5jb25maWcubmFtZSA/PyBERUZBVUxUX05BTUVTUEFDRTtcbiAgcmV0dXJuIGdldFN0b3JhZ2VDbGllbnQob3B0cy5ycGMsIG5hbWUpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7QUEyQk8sU0FBUyxpQkFBaUIsT0FBYyxNQUF3QjtBQUNyRSxpQkFBZSxJQUNiLFFBQ0EsUUFDK0M7QUFDL0MsVUFBTSxTQUFTLE1BQU0sTUFBTSxFQUFFLE1BQU0sUUFBUSxPQUFPLENBQUM7QUFFbkQsUUFBSSxXQUFXLFFBQVE7QUFDckIsWUFBTSxJQUFJLGFBQWEsRUFBRSxRQUFRLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFBQSxJQUN6RDtBQUVBLFdBQU8sT0FBTztBQUFBLEVBQ2hCO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLE1BQ1AsS0FBSyxPQUFPLE9BQU87QUFDakIsWUFBSTtBQUNGLGdCQUFNLFNBQVMsTUFBTSxJQUFJLGVBQWUsRUFBRSxHQUFHLENBQUM7QUFDOUMsY0FBSSxXQUFXLE1BQU07QUFDbkIsbUJBQU8sSUFBSSxxQkFBcUIsRUFB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
|
package/dist/chunk-A63YU65A.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// src/rpc-registry.ts
|
|
2
|
-
var registry = /* @__PURE__ */ new Map();
|
|
3
|
-
function registerRpc(name, fn) {
|
|
4
|
-
registry.set(name, fn);
|
|
5
|
-
}
|
|
6
|
-
function resolveRpc(name) {
|
|
7
|
-
const fn = registry.get(name);
|
|
8
|
-
if (!fn) {
|
|
9
|
-
throw new Error(
|
|
10
|
-
`No RPC registered for agent "${name}". Ensure withAgent is set up in next.config.ts.`
|
|
11
|
-
);
|
|
12
|
-
}
|
|
13
|
-
return fn;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
registerRpc,
|
|
18
|
-
resolveRpc
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3JwYy1yZWdpc3RyeS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBNb2R1bGUtbGV2ZWwgcmVnaXN0cnkgZm9yIGFnZW50IFJQQyBmdW5jdGlvbnMuXG4gKlxuICogUlBDIGZ1bmN0aW9ucyBhcmUgYXN5bmMgc3RlcCBmdW5jdGlvbnMgZ2VuZXJhdGVkIGJ5IHRoZSBOZXh0LmpzIGxvYWRlclxuICogKGluIHN0ZXBzLmpzKS4gVGhleSBjYW5ub3QgYmUgc2VyaWFsaXplZCBieSBkZXZhbHVlLCBzbyB0aGV5IG11c3Qgbm90XG4gKiBhcHBlYXIgaW4gd29ya2Zsb3cgYXJndW1lbnRzLiBJbnN0ZWFkLCB0aGUgbG9hZGVyIGluaXQgcmVnaXN0ZXJzIGVhY2hcbiAqIGFnZW50J3MgUlBDIGhlcmUsIGFuZCB3b3JrZmxvdyBzdGVwIGZ1bmN0aW9ucyBsb29rIGl0IHVwIGJ5IGFnZW50IG5hbWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBScGNQYXlsb2FkLCBScGNSZXN1bHQgfSBmcm9tIFwiLi9jbGllbnRcIjtcblxudHlwZSBScGNGbiA9IChwYXJhbXM6IFJwY1BheWxvYWQpID0+IFByb21pc2U8UnBjUmVzdWx0PjtcblxuY29uc3QgcmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgUnBjRm4+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclJwYyhuYW1lOiBzdHJpbmcsIGZuOiBScGNGbik6IHZvaWQge1xuICByZWdpc3RyeS5zZXQobmFtZSwgZm4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJwYyhuYW1lOiBzdHJpbmcpOiBScGNGbiB7XG4gIGNvbnN0IGZuID0gcmVnaXN0cnkuZ2V0KG5hbWUpO1xuICBpZiAoIWZuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYE5vIFJQQyByZWdpc3RlcmVkIGZvciBhZ2VudCBcIiR7bmFtZX1cIi4gRW5zdXJlIHdpdGhBZ2VudCBpcyBzZXQgdXAgaW4gbmV4dC5jb25maWcudHMuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGZuO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQWFBLElBQU0sV0FBVyxvQkFBSSxJQUFtQjtBQUVqQyxTQUFTLFlBQVksTUFBYyxJQUFpQjtBQUN6RCxXQUFTLElBQUksTUFBTSxFQUFFO0FBQ3ZCO0FBRU8sU0FBUyxXQUFXLE1BQXFCO0FBQzlDLFFBQU0sS0FBSyxTQUFTLElBQUksSUFBSTtBQUM1QixNQUFJLENBQUMsSUFBSTtBQUNQLFVBQU0sSUFBSTtBQUFBLE1BQ1IsZ0NBQWdDLElBQUk7QUFBQSxJQUN0QztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|