@cartanova/qgrid-cli 2.9.7 → 2.9.10
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/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +3 -2
- package/bundle/dist/application/qgrid/qgrid.types.js +2 -2
- package/bundle/dist/application/request-log/request-log.model.js +2 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +4 -2
- package/bundle/dist/utils/providers/common/model-cost.js +11 -2
- package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +3 -2
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +86 -5
- package/bundle/src/application/qgrid/qgrid-image-generation.test.ts +7 -1
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +13 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +2 -1
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +2 -2
- package/bundle/src/application/qgrid/qgrid.types.ts +2 -2
- package/bundle/src/application/request-log/request-log.model.ts +2 -0
- package/bundle/src/application/sonamu.generated.http +4 -2
- package/bundle/src/utils/providers/anthropic/anthropic-constants.test.ts +5 -1
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +4 -2
- package/bundle/src/utils/providers/common/effort.test.ts +1 -0
- package/bundle/src/utils/providers/common/model-cost.test.ts +5 -0
- package/bundle/src/utils/providers/common/model-cost.ts +15 -0
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +1 -1
- package/bundle/src/utils/providers/openai/openai-backend-protocol.test.ts +5 -0
- package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +2 -2
- package/bundle/src/utils/providers/openai/openai-dispatcher.test.ts +115 -0
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +136 -1
- package/bundle/web-dist/client/assets/index-DJpa8UaG.js +106 -0
- package/bundle/web-dist/client/assets/index-D_sagzsR.css +1 -0
- package/bundle/web-dist/client/assets/logs-COwHodGU.js +1 -0
- package/bundle/web-dist/client/assets/{monit-7tcWgB20.js → monit-C6ZRFTQr.js} +1 -1
- package/bundle/web-dist/client/assets/request-model-eygfdRv7.js +1 -0
- package/bundle/web-dist/client/assets/{routes-CSVp9aNn.js → routes-CrMRMQvC.js} +1 -1
- package/bundle/web-dist/client/assets/{services.generated-C6jfEwfK.js → services.generated-Bg2XkD-D.js} +1 -1
- package/bundle/web-dist/client/assets/settings-BVhU4Oul.js +1 -0
- package/bundle/web-dist/client/assets/show-DA-1k3Mt.js +2 -0
- package/bundle/web-dist/client/assets/tokens-DliSEDiF.js +1 -0
- package/bundle/web-dist/client/assets/{use-oauth-login-flow-DTrmdduV.js → use-oauth-login-flow-C0qa-nOp.js} +1 -1
- package/bundle/web-dist/client/assets/{use-update-token-mutation-BIvO70-M.js → use-update-token-mutation-Dkv_HG-C.js} +1 -1
- package/bundle/web-dist/client/index.html +3 -3
- package/bundle/web-dist/server/assets/{lazyRouteComponent-C_k4R5n6.js → lazyRouteComponent-DyizoQKi.js} +2 -2
- package/bundle/web-dist/server/assets/{logs-lBOU5eUP.js → logs-DO8zBdBR.js} +12 -5
- package/bundle/web-dist/server/assets/{monit-BW2X1D23.js → monit-COH4MckI.js} +2 -2
- package/bundle/web-dist/server/assets/{plus-DilmHifT.js → plus-C1D8z9o0.js} +1 -1
- package/bundle/web-dist/server/assets/{react-dom-CHRRsKwb.js → react-dom-PfWvArTX.js} +1 -1
- package/bundle/web-dist/server/assets/request-model-DXclJfdP.js +13 -0
- package/bundle/web-dist/server/assets/{routes-B408iqh1.js → routes-Btja-741.js} +4 -4
- package/bundle/web-dist/server/assets/{services.generated-buX3cJzR.js → services.generated-BsKOUSXl.js} +1 -1
- package/bundle/web-dist/server/assets/{settings-CFoXQaAg.js → settings-DPcWGvy-.js} +3 -3
- package/bundle/web-dist/server/assets/{show-CcZJO6WF.js → show-CMXbb3TJ.js} +10 -4
- package/bundle/web-dist/server/assets/{tokens-C32lycTe.js → tokens-DAUmTrgO.js} +15 -11
- package/bundle/web-dist/server/assets/{use-oauth-login-flow-DCjxIa80.js → use-oauth-login-flow-GsGwqefs.js} +1 -1
- package/bundle/web-dist/server/assets/{use-update-token-mutation-CqK8i8Fa.js → use-update-token-mutation-RujWERvj.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +273 -52
- package/package.json +1 -1
- package/skills/qgrid/SKILL.md +10 -1
- package/skills/qgrid/references/anthropic-claude-code-runtime.md +3 -2
- package/skills/qgrid/references/decision-rationale.md +11 -2
- package/skills/qgrid/references/openai-codex-runtime.md +27 -3
- package/skills/qgrid/references/request-log-run-lifecycle.md +3 -1
- package/skills/qgrid/references/sonamu-api-web-flow.md +9 -1
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +2 -0
- package/skills/qgrid/references/verification-and-debugging.md +4 -1
- package/bundle/web-dist/client/assets/index-BshX4Gd8.css +0 -1
- package/bundle/web-dist/client/assets/index-D4MEKFjK.js +0 -106
- package/bundle/web-dist/client/assets/logs-BWhH8t7Y.js +0 -1
- package/bundle/web-dist/client/assets/settings-CYgR0YTh.js +0 -1
- package/bundle/web-dist/client/assets/show-Cg8n_Mxg.js +0 -2
- package/bundle/web-dist/client/assets/tokens-B5yg6bP1.js +0 -1
- /package/bundle/web-dist/client/assets/{plus-p4vtg6LN.js → plus-CknMNCP5.js} +0 -0
|
@@ -95,7 +95,7 @@ async function beforeQuery(args) {
|
|
|
95
95
|
project_name: args.projectName,
|
|
96
96
|
history: filterHistoryForStorage(args.history),
|
|
97
97
|
tools: args.tools?.length ? args.tools : void 0,
|
|
98
|
-
is_image_generation: args.imageGeneration,
|
|
98
|
+
is_image_generation: args.imageGeneration === "auto" ? false : args.imageGeneration,
|
|
99
99
|
json_schema: args.jsonSchema ?? null
|
|
100
100
|
});
|
|
101
101
|
}
|
|
@@ -172,6 +172,7 @@ async function afterQuery(requestLogId, stepIndex, args, result) {
|
|
|
172
172
|
cost_usd: agg.cost_usd,
|
|
173
173
|
cost_source: agg.cost_source,
|
|
174
174
|
image_cost_usd: imageCostMicroUsd,
|
|
175
|
+
...imageParts.length > 0 ? { is_image_generation: true } : {},
|
|
175
176
|
image_cost_method: imageCostMicroUsd !== null ? imageGenerationCostMethod(args.imageGenerationOptions, result) : null,
|
|
176
177
|
history: filterHistoryForStorage(args.history)
|
|
177
178
|
});
|
|
@@ -275,4 +276,4 @@ async function performStaleRunCleanup() {
|
|
|
275
276
|
//#endregion
|
|
276
277
|
export { afterQuery, assertNativeRunAdmission, beforeQuery, finishActiveNativeRunsForRestart, finishRunAborted, finishRunWithError, resetNativeRunRegistryForTests };
|
|
277
278
|
|
|
278
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcnVuLWxpZmVjeWNsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvcWdyaWQtcnVuLWxpZmVjeWNsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi8uLi9pMThuL3NkLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgaXNSZXN0YXJ0UGVuZGluZyB9IGZyb20gXCIuLi8uLi91dGlscy9zZXJ2ZXItcmVzdGFydFwiO1xuaW1wb3J0IHsgUmVxdWVzdExvZ01vZGVsIH0gZnJvbSBcIi4uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsXCI7XG5pbXBvcnQge1xuICBlc3RpbWF0ZUltYWdlR2VuZXJhdGlvbkNvc3RNaWNyb1VzZCxcbiAgaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZCxcbn0gZnJvbSBcIi4vcWdyaWQtaW1hZ2UtZ2VuZXJhdGlvblwiO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMsXG4gIGZvcm1hdFJlc3BvbnNlRm9yTG9nLFxuICBnZXRJbWFnZVBhcnRzLFxufSBmcm9tIFwiLi9xZ3JpZC1yZXNwb25zZS1mb3JtYXRcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRSdW5Db250ZXh0LCB0eXBlIFF1ZXJ5SW5wdXQsIHR5cGUgUXVlcnlPdXRwdXQgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJydW4tbGlmZWN5Y2xlXCJdKTtcbmNvbnN0IFNUQUxFX1JVTl9USFJFU0hPTERfTVMgPSAzMCAqIDYwICogMTAwMDtcbmNvbnN0IFNUQUxFX0NMRUFOVVBfSU5URVJWQUxfTVMgPSA2MCAqIDEwMDA7XG5sZXQgc3RhbGVDbGVhbnVwSW5GbGlnaHQ6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG5sZXQgbGFzdFN0YWxlQ2xlYW51cFN0YXJ0ZWRBdCA9IDA7XG5jb25zdCBhY3RpdmVOYXRpdmVSdW5SZWZzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbmNvbnN0IGludGVycnVwdGVkTmF0aXZlUnVuSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5jb25zdCBhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzID0gbmV3IE1hcDxudW1iZXIsIFNldDxQcm9taXNlPHZvaWQ+Pj4oKTtcblxuZnVuY3Rpb24gcmVzdGFydFVuYXZhaWxhYmxlKCk6IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiB7XG4gIHJldHVybiBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwicWdyaWQucmVzdGFydFBlbmRpbmdcIikoKSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTmF0aXZlUnVuKHJlcXVlc3RMb2dJZDogbnVtYmVyKTogdm9pZCB7XG4gIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuc2V0KHJlcXVlc3RMb2dJZCwgKGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gMCkgKyAxKTtcbn1cblxuZnVuY3Rpb24gcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQ6IG51bWJlcik6IHZvaWQge1xuICBjb25zdCByZWZzID0gYWN0aXZlTmF0aXZlUnVuUmVmcy5nZXQocmVxdWVzdExvZ0lkKTtcbiAgaWYgKHJlZnMgPT09IHVuZGVmaW5lZCB8fCByZWZzIDw9IDEpIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIGVsc2UgYWN0aXZlTmF0aXZlUnVuUmVmcy5zZXQocmVxdWVzdExvZ0lkLCByZWZzIC0gMSk7XG59XG5cbmZ1bmN0aW9uIHRyYWNrTmF0aXZlRmluYWxpemVyPFQ+KHJlcXVlc3RMb2dJZDogbnVtYmVyLCBmaW5hbGl6ZTogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvcGVyYXRpb24gPSBmaW5hbGl6ZSgpO1xuICBjb25zdCBzZXR0bGVkID0gb3BlcmF0aW9uLnRoZW4oXG4gICAgKCkgPT4gdW5kZWZpbmVkLFxuICAgICgpID0+IHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgZmluYWxpemVycyA9IGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gbmV3IFNldDxQcm9taXNlPHZvaWQ+PigpO1xuICBmaW5hbGl6ZXJzLmFkZChzZXR0bGVkKTtcbiAgYWN0aXZlTmF0aXZlRmluYWxpemVycy5zZXQocmVxdWVzdExvZ0lkLCBmaW5hbGl6ZXJzKTtcbiAgdm9pZCBzZXR0bGVkLnRoZW4oKCkgPT4ge1xuICAgIGZpbmFsaXplcnMuZGVsZXRlKHNldHRsZWQpO1xuICAgIGlmIChmaW5hbGl6ZXJzLnNpemUgPT09IDApIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH0pO1xuICByZXR1cm4gb3BlcmF0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmF0aXZlUnVuQWRtaXNzaW9uKCk6IHZvaWQge1xuICBpZiAoaXNSZXN0YXJ0UGVuZGluZygpKSB0aHJvdyByZXN0YXJ0VW5hdmFpbGFibGUoKTtcbn1cblxuZnVuY3Rpb24gd2l0aFByb3ZpZGVyUHJlZml4KFxuICByb3V0ZU1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIW1vZGVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAobW9kZWwuaW5jbHVkZXMoXCIvXCIpKSByZXR1cm4gbW9kZWw7XG4gIGNvbnN0IHNsYXNoID0gcm91dGVNb2RlbD8uaW5kZXhPZihcIi9cIikgPz8gLTE7XG4gIGNvbnN0IHByb3ZpZGVyID0gc2xhc2ggPiAwID8gcm91dGVNb2RlbD8uc2xpY2UoMCwgc2xhc2gpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcHJvdmlkZXIgPyBgJHtwcm92aWRlcn0vJHttb2RlbH1gIDogbW9kZWw7XG59XG5cbi8qKlxuICogaGlzdG9yeeuKlCDsm5Drs7gg6re464yA66GcIOyggOyepe2VmOq4sOuztOuLpOuKlCwgcnVuIOu2hOyEneyXkCDtlYTsmpTtlZwgdXNlci9hc3Npc3RhbnQg7KCV67O066eMIO2VhO2EsOunge2VtOyEnCDsoIDsnqVcbiAqL1xuZnVuY3Rpb24gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UocmF3SGlzdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gIGlmICghcmF3SGlzdG9yeSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IEpTT04ucGFyc2UocmF3SGlzdG9yeSkgYXMgdW5rbm93bltdO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0gfHwgdHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIChyZWNvcmQucm9sZSA9PT0gXCJ1c2VyXCIgfHwgcmVjb3JkLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPiAwID8gZmlsdGVyZWQgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQYXJzZWFibGVKc29uKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEpTT04ucGFyc2UodGV4dCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBSdW5MaWZlY3ljbGVSZXN1bHQgPSB7XG4gIHJ1bkNvbnRleHQ/OiBRZ3JpZFJ1bkNvbnRleHQ7XG59O1xuXG4vKipcbiAqIGxvZ2dlci1lbmFibGVkIHF1ZXJ5L3N0cmVhbSDsnZHri7Ug7KCE7ZuE7JeQIO2YuOy2nC5cbiAqXG4gKiAxKSBiZWZvcmVRdWVyeTogcnVuIOyDneyEsS/qs4Tsho0gKyB0b29sIHJlc3VsdCDsmYTro4wgKyBzdGFsZSB0b29sLXdhaXQgY2xlYW51cFxuICogMikgYWZ0ZXJRdWVyeTogZ2VuZXJhdGUgc3RlcCArIHRvb2wtY2FsbCBzdGVwICsgZmluaXNoL2tlZXAtb3BlblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmVmb3JlUXVlcnkoYXJnczogUXVlcnlJbnB1dCk6IFByb21pc2U8e1xuICByZXF1ZXN0TG9nSWQ6IG51bWJlcjtcbiAgc3RlcEluZGV4OiBudW1iZXI7XG59PiB7XG4gIGFzc2VydE5hdGl2ZVJ1bkFkbWlzc2lvbigpO1xuXG4gIGxldCByZXF1ZXN0TG9nSWQ6IG51bWJlcjtcbiAgbGV0IHN0ZXBJbmRleCA9IDA7XG5cbiAgLy8gcmVxdWVzdExvZ0lkIOqwgCDsnojsnYQg65WM66eMIOq4sOyhtCBydW4g7Jew7J6lLiB0aHJlYWRDb29yZCDrp4wg7J6I64qUIGNvbnYg64qUIOyDiCBydW4g7Jy866GcIOyLnOyekS5cbiAgLy8gY29udGludWF0aW9uIOydgCBjcmVhdGVSdW4g7J2EIOqxtOuEiOubsOuvgOuhnCBydW4g7J2YIHRvb2xzIOuKlCDssqsg7Iqk7YWdIOyepeywqeu2hOycvOuhnCDqs6DsoJXrkJzri6Qg4oCUXG4gIC8vIEFJIFNESyBwcmVwYXJlU3RlcC9hY3RpdmVUb29scyDroZwg7Iqk7YWd66eI64ukIO2ItOyFi+ydtCDrsJTrgIzslrTrj4Qg66Gc6re47JeQ64qUIOuwmOyYgeuQmOyngCDslYrripTri6QuXG4gIGlmIChhcmdzLnJ1bkNvbnRleHQ/LnJlcXVlc3RMb2dJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVxdWVzdExvZ0lkID0gYXJncy5ydW5Db250ZXh0LnJlcXVlc3RMb2dJZDtcbiAgICAvLyBjbGVhbnVw6rO8IOqwmeydgCBEQiBhZHZpc29yeSBsb2Nr7J2EIOyeoeqzoCB0b29sIOqysOqzvCDrsJjsmIEgKyDri6TsnYwgc3RlcCDsmIjslb3snYQg7ZWcXG4gICAgLy8gdHJhbnNhY3Rpb27sl5DshJwg7LKY66as7ZWc64ukLiDsl6zrn6wgcWdyaWQg7ZSE66Gc7IS47IqkIOyCrOydtOyXkOyEnOuPhCBzdGFsZSBleHBpcnnqsIBcbiAgICAvLyDrj4TssKkg7KSR7J24IGZvbGxvdy11cOydhCBlcnJvcuuhnCDrja7slrTsk7Dsp4Ag66q77ZWc64ukLlxuICAgIHN0ZXBJbmRleCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jb250aW51ZVRvb2xSdW4ocmVxdWVzdExvZ0lkLCBhcmdzLnRvb2xSZXN1bHRzID8/IFtdKTtcbiAgICBhd2FpdCBjbGVhbnVwU3RhbGVSdW5zKCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY2xlYW51cFN0YWxlUnVucygpO1xuICAgIHJlcXVlc3RMb2dJZCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jcmVhdGVSdW4oe1xuICAgICAgdXNlcl9wcm9tcHQ6IGFyZ3MucHJvbXB0LFxuICAgICAgc3lzdGVtX3Byb21wdDogYXJncy5zeXN0ZW0sXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogYXJncy5tb2RlbCxcbiAgICAgIGVmZm9ydDogYXJncy5lZmZvcnQsXG4gICAgICBwcm9qZWN0X25hbWU6IGFyZ3MucHJvamVjdE5hbWUsXG4gICAgICBoaXN0b3J5OiBmaWx0ZXJIaXN0b3J5Rm9yU3RvcmFnZShhcmdzLmhpc3RvcnkpLFxuICAgICAgdG9vbHM6IGFyZ3MudG9vbHM/Lmxlbmd0aCA/IGFyZ3MudG9vbHMgOiB1bmRlZmluZWQsXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBhcmdzLmltYWdlR2VuZXJhdGlvbixcbiAgICAgIGpzb25fc2NoZW1hOiBhcmdzLmpzb25TY2hlbWEgPz8gbnVsbCxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIERCIOykgOu5hCDspJHsl5Ag7J6s7Iuc7J6R7J20IOyLnOyekeuQkOuLpOuptCBwcm92aWRlciDsi6TtlonsnLzroZwg64SY7Ja06rCA7KeAIOyViuuKlOuLpC5cbiAgLy8g7J20IOyalOyyreydgCDsnqzsi5zsnpEgc25hcHNob3Tsl5Ag7JeG7JeI7Jy866+A66GcIOuwqeq4iCDspIDruYTtlZwgcnVu7J2EIOyngeygkSDrp4jqsJDtlZzri6QuXG4gIGlmIChpc1Jlc3RhcnRQZW5kaW5nKCkpIHtcbiAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiZXJyb3JcIiwgXCJzZXJ2ZXIgcmVzdGFydGVkXCIpO1xuICAgIHRocm93IHJlc3RhcnRVbmF2YWlsYWJsZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJOYXRpdmVSdW4ocmVxdWVzdExvZ0lkKTtcbiAgcmV0dXJuIHsgcmVxdWVzdExvZ0lkLCBzdGVwSW5kZXggfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFmdGVyUXVlcnkoXG4gIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICBzdGVwSW5kZXg6IG51bWJlcixcbiAgYXJnczogUXVlcnlJbnB1dCxcbiAgcmVzdWx0OiBRdWVyeU91dHB1dCxcbik6IFByb21pc2U8UnVuTGlmZWN5Y2xlUmVzdWx0PiB7XG4gIGlmIChpbnRlcnJ1cHRlZE5hdGl2ZVJ1bklkcy5oYXMocmVxdWVzdExvZ0lkKSkgcmV0dXJuIHt9O1xuXG4gIHJldHVybiB0cmFja05hdGl2ZUZpbmFsaXplcihyZXF1ZXN0TG9nSWQsIGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gcHJvdmlkZXLqsIAgY2Fub25pY2FsIG1vZGVs7J2EIOuPjOugpOykmOuPhCDsmpTssq0gcm91dGUg7J6Q7LK0KFsxbV0g65OxKeuKlCDrs7TsobTtlZzri6QuXG4gICAgICBjb25zdCByZXF1ZXN0ZWRNb2RlbE5hbWUgPSB3aXRoUHJvdmlkZXJQcmVmaXgoXG4gICAgICAgIGFyZ3MubW9kZWwsXG4gICAgICAgIGFyZ3MubW9kZWwgPz8gcmVzdWx0LnJlcXVlc3RlZE1vZGVsID8/IHJlc3VsdC5tb2RlbCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzZXJ2ZWRNb2RlbE5hbWUgPSB3aXRoUHJvdmlkZXJQcmVmaXgoYXJncy5tb2RlbCwgcmVzdWx0Lm1vZGVsKTtcblxuICAgICAgLy8gZ2VuZXJhdGUgc3RlcCDquLDroZ1cbiAgICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5hcHBlbmRTdGVwKHJlcXVlc3RMb2dJZCwge1xuICAgICAgICBzdGVwX2luZGV4OiBzdGVwSW5kZXgsXG4gICAgICAgIHR5cGU6IFwiZ2VuZXJhdGVcIixcbiAgICAgICAgbW9kZWxfbmFtZTogc2VydmVkTW9kZWxOYW1lLFxuICAgICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogcmVxdWVzdGVkTW9kZWxOYW1lLFxuICAgICAgICBmYWxsYmFja19jb3VudDogcmVzdWx0Lm1vZGVsRmFsbGJhY2tzPy5sZW5ndGggPz8gMCxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiByZXN1bHQudXNhZ2UuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiByZXN1bHQudXNhZ2Uub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9yZWFkX2lucHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2VucyxcbiAgICAgICAgY29zdF91c2Q6IE1hdGgucm91bmQocmVzdWx0LmNvc3RVc2QgKiAxXzAwMF8wMDApLFxuICAgICAgICBjb3N0X3NvdXJjZTogcmVzdWx0LmNvc3RTb3VyY2UsXG4gICAgICAgIGR1cmF0aW9uX21zOiByZXN1bHQuZHVyYXRpb25NcyxcbiAgICAgICAgdHRmdF9tczogcmVzdWx0LnR0ZnRNcyxcbiAgICAgICAgZmluaXNoX3JlYXNvbjogcmVzdWx0LmZpbmlzaFJlYXNvbixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbWFnZVBhcnRzID0gZ2V0SW1hZ2VQYXJ0cyhyZXN1bHQpO1xuICAgICAgY29uc3QgaW1hZ2VDb3N0TWljcm9Vc2QgPSBlc3RpbWF0ZUltYWdlR2VuZXJhdGlvbkNvc3RNaWNyb1VzZChcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICApO1xuICAgICAgZm9yIChjb25zdCBzdGVwIG9mIGJ1aWxkSW1hZ2VHZW5lcmF0aW9uVG9vbFN0ZXBzKGFyZ3MsIGltYWdlUGFydHMsIHN0ZXBJbmRleCkpIHtcbiAgICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFwcGVuZFN0ZXAocmVxdWVzdExvZ0lkLCBzdGVwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5maW5pc2hSZWFzb24gPT09IFwidG9vbC1jYWxsc1wiKSB7XG4gICAgICAgIC8vIHRvb2wtY2FsbCBzdGVw7J2EIOymieyLnCDquLDroZ3tlZjqs6AsIOuLpOydjCBmb2xsb3ctdXDsnbQg6rCZ7J2AIHJvd+yXkCDqsrDqs7zrpbwg7LGE7Jq064ukLlxuICAgICAgICBjb25zdCB0b29sQ2FsbHMgPSByZXN1bHQuY29udGVudC5maWx0ZXIoKGMpID0+IGMudHlwZSA9PT0gXCJ0b29sLWNhbGxcIik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9vbENhbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdGMgPSB0b29sQ2FsbHNbaV0hO1xuICAgICAgICAgIGlmICh0Yy50eXBlICE9PSBcInRvb2wtY2FsbFwiKSBjb250aW51ZTtcbiAgICAgICAgICBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYXBwZW5kU3RlcChyZXF1ZXN0TG9nSWQsIHtcbiAgICAgICAgICAgIHN0ZXBfaW5kZXg6IHN0ZXBJbmRleCxcbiAgICAgICAgICAgIHR5cGU6IFwidG9vbF9jYWxsXCIsXG4gICAgICAgICAgICB0b29sX2NhbGxfaW5kZXg6IGltYWdlUGFydHMubGVuZ3RoICsgaSxcbiAgICAgICAgICAgIHRvb2xfY2FsbF9pZDogdGMudG9vbENhbGxJZCxcbiAgICAgICAgICAgIHRvb2xfbmFtZTogdGMudG9vbE5hbWUsXG4gICAgICAgICAgICB0b29sX2FyZ3M6IHRjLmlucHV0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgcnVuQ29udGV4dDogeyByZXF1ZXN0TG9nSWQgfSB9O1xuICAgICAgfVxuXG4gICAgICAvLyBmaW5pc2hSZWFzb24gPT09IFwic3RvcFwiIOKGkiBydW4g7KKF66OMICjsoITssrQgc3RlcCB1c2FnZSDtlansgrApXG4gICAgICBjb25zdCBhZ2cgPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYWdncmVnYXRlU3RlcFVzYWdlKHJlcXVlc3RMb2dJZCk7XG4gICAgICBjb25zdCByZXNwb25zZVRleHQgPSBmb3JtYXRSZXNwb25zZUZvckxvZyhyZXN1bHQpO1xuICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmZpbmlzaFJ1bihyZXF1ZXN0TG9nSWQsIHtcbiAgICAgICAgc3RhdHVzOiBcInN1Y2NlZWRlZFwiLFxuICAgICAgICByZXNwb25zZTogcmVzcG9uc2VUZXh0LFxuICAgICAgICAvLyBzdHJ1Y3R1cmVkIOyalOyyreunjCDtjJDsoJXtlZzri6QuIGRldGkg67Cw7LmY7J2YIGJyb2tlbiBKU09OIOulmOulvCDrqqnroZ3sl5DshJwg67CU66GcXG4gICAgICAgIC8vIOq1rOuzhO2VmOq4sCDsnITtlZwg6riw66Gd7J2066mwLCDruYRzdHJ1Y3R1cmVkIOyalOyyreydgCBudWxsIOuhnCDrgqjripTri6QuXG4gICAgICAgIHJlc3BvbnNlX2pzb25fb2s6IGFyZ3MuanNvblNjaGVtYSA/IGlzUGFyc2VhYmxlSnNvbihyZXNwb25zZVRleHQpIDogbnVsbCxcbiAgICAgICAgdG9rZW5fbmFtZTogcmVzdWx0LnRva2VuTmFtZSxcbiAgICAgICAgaW5wdXRfdG9rZW5zOiBhZ2cuaW5wdXRfdG9rZW5zLFxuICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2cub3V0cHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IGFnZy5jYWNoZV9yZWFkX3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fdG9rZW5zOiBhZ2cuY2FjaGVfY3JlYXRpb25fdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IGFnZy5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogYWdnLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2VucyxcbiAgICAgICAgZHVyYXRpb25fbXM6IGFnZy5kdXJhdGlvbl9tcyxcbiAgICAgICAgLy8gbXVsdGktc3RlcCBydW4g67aA66qo7J2YIOuqqOuNuOydgCDstZzsooUgdHVybuydhCDshJzruZntlZwg66qo64247J2064ukLlxuICAgICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogcmVxdWVzdGVkTW9kZWxOYW1lLFxuICAgICAgICBtb2RlbF9uYW1lOiBzZXJ2ZWRNb2RlbE5hbWUsXG4gICAgICAgIGZhbGxiYWNrX2NvdW50OiBhZ2cuZmFsbGJhY2tfY291bnQsXG4gICAgICAgIGNvc3RfdXNkOiBhZ2cuY29zdF91c2QsXG4gICAgICAgIGNvc3Rfc291cmNlOiBhZ2cuY29zdF9zb3VyY2UsXG4gICAgICAgIGltYWdlX2Nvc3RfdXNkOiBpbWFnZUNvc3RNaWNyb1VzZCxcbiAgICAgICAgaW1hZ2VfY29zdF9tZXRob2Q6XG4gICAgICAgICAgaW1hZ2VDb3N0TWljcm9Vc2QgIT09IG51bGxcbiAgICAgICAgICAgID8gaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZChhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMsIHJlc3VsdClcbiAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgaGlzdG9yeTogZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UoYXJncy5oaXN0b3J5KSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge307XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJlbGVhc2VOYXRpdmVSdW4ocmVxdWVzdExvZ0lkKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluaXNoUnVuV2l0aEVycm9yKFxuICByZXF1ZXN0TG9nSWQ6IG51bWJlcixcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcsXG4gIGFyZ3M/OiBRdWVyeUlucHV0LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpbnRlcnJ1cHRlZE5hdGl2ZVJ1bklkcy5oYXMocmVxdWVzdExvZ0lkKSkgcmV0dXJuO1xuICByZXR1cm4gdHJhY2tOYXRpdmVGaW5hbGl6ZXIocmVxdWVzdExvZ0lkLCBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpbmlzaFRlcm1pbmFsUnVuKHJlcXVlc3RMb2dJZCwgXCJlcnJvclwiLCBlcnJvck1lc3NhZ2UsIGFyZ3MpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICByZWxlYXNlTmF0aXZlUnVuKHJlcXVlc3RMb2dJZCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaFJ1bkFib3J0ZWQocmVxdWVzdExvZ0lkOiBudW1iZXIsIGFyZ3M/OiBRdWVyeUlucHV0KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChpbnRlcnJ1cHRlZE5hdGl2ZVJ1bklkcy5oYXMocmVxdWVzdExvZ0lkKSkgcmV0dXJuO1xuICByZXR1cm4gdHJhY2tOYXRpdmVGaW5hbGl6ZXIocmVxdWVzdExvZ0lkLCBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpbmlzaFRlcm1pbmFsUnVuKHJlcXVlc3RMb2dJZCwgXCJhYm9ydGVkXCIsIFwiY2xpZW50IGRpc2Nvbm5lY3RlZFwiLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKiDtmITsnqwg7J20IO2UhOuhnOyEuOyKpOqwgCBwcm92aWRlcuulvCDsi6Ttlokg7KSR7J24IG5hdGl2ZSBydW7rp4wg7J6s7Iuc7J6RIOyYpOulmOuhnCDrp4jqsJDtlZzri6QuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluaXNoQWN0aXZlTmF0aXZlUnVuc0ZvclJlc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlcXVlc3RMb2dJZHMgPSBbLi4uYWN0aXZlTmF0aXZlUnVuUmVmcy5rZXlzKCldO1xuICBmb3IgKGNvbnN0IHJlcXVlc3RMb2dJZCBvZiByZXF1ZXN0TG9nSWRzKSB7XG4gICAgaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuYWRkKHJlcXVlc3RMb2dJZCk7XG4gICAgYWN0aXZlTmF0aXZlUnVuUmVmcy5kZWxldGUocmVxdWVzdExvZ0lkKTtcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHJlcXVlc3RMb2dJZHMubWFwKGFzeW5jIChyZXF1ZXN0TG9nSWQpID0+IHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gW10pO1xuICAgICAgYXdhaXQgZmluaXNoVGVybWluYWxSdW4ocmVxdWVzdExvZ0lkLCBcImVycm9yXCIsIFwic2VydmVyIHJlc3RhcnRlZFwiKTtcbiAgICB9KSxcbiAgKTtcbn1cblxuLyoqIO2UhOuhnOyEuOyKpCDsoITsl60gcmVnaXN0cnnrpbwg6rKp66as7ZW07JW8IO2VmOuKlCDri6jsnIQg7YWM7Iqk7Yq4IOyghOyaqS4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldE5hdGl2ZVJ1blJlZ2lzdHJ5Rm9yVGVzdHMoKTogdm9pZCB7XG4gIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuY2xlYXIoKTtcbiAgaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuY2xlYXIoKTtcbiAgYWN0aXZlTmF0aXZlRmluYWxpemVycy5jbGVhcigpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5pc2hUZXJtaW5hbFJ1bihcbiAgcmVxdWVzdExvZ0lkOiBudW1iZXIsXG4gIHN0YXR1czogXCJlcnJvclwiIHwgXCJhYm9ydGVkXCIsXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICBhcmdzPzogUXVlcnlJbnB1dCxcbik6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGxldCBhZ2dyZWdhdGU6IEF3YWl0ZWQ8UmV0dXJuVHlwZTx0eXBlb2YgUmVxdWVzdExvZ01vZGVsLmFnZ3JlZ2F0ZVN0ZXBVc2FnZT4+IHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICBhZ2dyZWdhdGUgPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYWdncmVnYXRlU3RlcFVzYWdlKHJlcXVlc3RMb2dJZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nZ2VyLmVycm9yKGBhZ2dyZWdhdGVTdGVwVXNhZ2UgZmFpbGVkIHdoaWxlIGZpbmlzaGluZyAke3N0YXR1c306ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmZpbmlzaFJ1bihyZXF1ZXN0TG9nSWQsIHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIGVycm9yX21lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgIGhpc3Rvcnk6IGFyZ3MgPyBmaWx0ZXJIaXN0b3J5Rm9yU3RvcmFnZShhcmdzLmhpc3RvcnkpIDogdW5kZWZpbmVkLFxuICAgICAgLi4uKGFnZ3JlZ2F0ZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIGlucHV0X3Rva2VuczogYWdncmVnYXRlLmlucHV0X3Rva2VucyxcbiAgICAgICAgICAgIG91dHB1dF90b2tlbnM6IGFnZ3JlZ2F0ZS5vdXRwdXRfdG9rZW5zLFxuICAgICAgICAgICAgY2FjaGVfcmVhZF90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9yZWFkX3Rva2VucyxcbiAgICAgICAgICAgIGNhY2hlX2NyZWF0aW9uX3Rva2VuczogYWdncmVnYXRlLmNhY2hlX2NyZWF0aW9uX3Rva2VucyxcbiAgICAgICAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogYWdncmVnYXRlLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyxcbiAgICAgICAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX3Rva2VuczogYWdncmVnYXRlLmNhY2hlX2NyZWF0aW9uXzFoX3Rva2VucyxcbiAgICAgICAgICAgIGR1cmF0aW9uX21zOiBhZ2dyZWdhdGUuZHVyYXRpb25fbXMsXG4gICAgICAgICAgICBmYWxsYmFja19jb3VudDogYWdncmVnYXRlLmZhbGxiYWNrX2NvdW50LFxuICAgICAgICAgICAgY29zdF91c2Q6IGFnZ3JlZ2F0ZS5jb3N0X3VzZCxcbiAgICAgICAgICAgIGNvc3Rfc291cmNlOiBhZ2dyZWdhdGUuY29zdF9zb3VyY2UsXG4gICAgICAgICAgfVxuICAgICAgICA6IHt9KSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5lcnJvcihgZmluaXNoVGVybWluYWxSdW4oJHtzdGF0dXN9KSBmYWlsZWQ6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW51cFN0YWxlUnVucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHN0YWxlQ2xlYW51cEluRmxpZ2h0KSB7XG4gICAgYXdhaXQgc3RhbGVDbGVhbnVwSW5GbGlnaHQ7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgaWYgKG5vdyAtIGxhc3RTdGFsZUNsZWFudXBTdGFydGVkQXQgPCBTVEFMRV9DTEVBTlVQX0lOVEVSVkFMX01TKSByZXR1cm47XG4gIGxhc3RTdGFsZUNsZWFudXBTdGFydGVkQXQgPSBub3c7XG5cbiAgY29uc3QgY2xlYW51cCA9IHBlcmZvcm1TdGFsZVJ1bkNsZWFudXAoKTtcbiAgc3RhbGVDbGVhbnVwSW5GbGlnaHQgPSBjbGVhbnVwO1xuICB0cnkge1xuICAgIGF3YWl0IGNsZWFudXA7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHN0YWxlQ2xlYW51cEluRmxpZ2h0ID09PSBjbGVhbnVwKSBzdGFsZUNsZWFudXBJbkZsaWdodCA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBwZXJmb3JtU3RhbGVSdW5DbGVhbnVwKCk6IFByb21pc2U8dm9pZD4ge1xuICB0cnkge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IFwidG9vbC1jYWxsIHJ1bjogbm8gZm9sbG93LXVwIHdpdGhpbiAzMCBtaW51dGVzXCI7XG4gICAgY29uc3Qgc3RhbGVJZHMgPSBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuZXhwaXJlU3RhbGVUb29sV2FpdGluZ1J1bnMoXG4gICAgICBTVEFMRV9SVU5fVEhSRVNIT0xEX01TLFxuICAgICAgZXJyb3JNZXNzYWdlLFxuICAgICk7XG4gICAgY29uc3QgY2xlYW5lZENvdW50ID0gc3RhbGVJZHMubGVuZ3RoO1xuICAgIGlmIChjbGVhbmVkQ291bnQgPiAwKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgY2xlYW5lZCB1cCAke2NsZWFuZWRDb3VudH0gc3RhbGUgcnVubmluZyByZXF1ZXN0IGxvZ3NgKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoYHN0YWxlIGNsZWFudXAgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7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
|
|
279
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcnVuLWxpZmVjeWNsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvcWdyaWQtcnVuLWxpZmVjeWNsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcInNvbmFtdVwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi8uLi9pMThuL3NkLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgaXNSZXN0YXJ0UGVuZGluZyB9IGZyb20gXCIuLi8uLi91dGlscy9zZXJ2ZXItcmVzdGFydFwiO1xuaW1wb3J0IHsgUmVxdWVzdExvZ01vZGVsIH0gZnJvbSBcIi4uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsXCI7XG5pbXBvcnQge1xuICBlc3RpbWF0ZUltYWdlR2VuZXJhdGlvbkNvc3RNaWNyb1VzZCxcbiAgaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZCxcbn0gZnJvbSBcIi4vcWdyaWQtaW1hZ2UtZ2VuZXJhdGlvblwiO1xuaW1wb3J0IHtcbiAgYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMsXG4gIGZvcm1hdFJlc3BvbnNlRm9yTG9nLFxuICBnZXRJbWFnZVBhcnRzLFxufSBmcm9tIFwiLi9xZ3JpZC1yZXNwb25zZS1mb3JtYXRcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRSdW5Db250ZXh0LCB0eXBlIFF1ZXJ5SW5wdXQsIHR5cGUgUXVlcnlPdXRwdXQgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJydW4tbGlmZWN5Y2xlXCJdKTtcbmNvbnN0IFNUQUxFX1JVTl9USFJFU0hPTERfTVMgPSAzMCAqIDYwICogMTAwMDtcbmNvbnN0IFNUQUxFX0NMRUFOVVBfSU5URVJWQUxfTVMgPSA2MCAqIDEwMDA7XG5sZXQgc3RhbGVDbGVhbnVwSW5GbGlnaHQ6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG5sZXQgbGFzdFN0YWxlQ2xlYW51cFN0YXJ0ZWRBdCA9IDA7XG5jb25zdCBhY3RpdmVOYXRpdmVSdW5SZWZzID0gbmV3IE1hcDxudW1iZXIsIG51bWJlcj4oKTtcbmNvbnN0IGludGVycnVwdGVkTmF0aXZlUnVuSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5jb25zdCBhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzID0gbmV3IE1hcDxudW1iZXIsIFNldDxQcm9taXNlPHZvaWQ+Pj4oKTtcblxuZnVuY3Rpb24gcmVzdGFydFVuYXZhaWxhYmxlKCk6IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiB7XG4gIHJldHVybiBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwicWdyaWQucmVzdGFydFBlbmRpbmdcIikoKSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTmF0aXZlUnVuKHJlcXVlc3RMb2dJZDogbnVtYmVyKTogdm9pZCB7XG4gIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuc2V0KHJlcXVlc3RMb2dJZCwgKGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gMCkgKyAxKTtcbn1cblxuZnVuY3Rpb24gcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQ6IG51bWJlcik6IHZvaWQge1xuICBjb25zdCByZWZzID0gYWN0aXZlTmF0aXZlUnVuUmVmcy5nZXQocmVxdWVzdExvZ0lkKTtcbiAgaWYgKHJlZnMgPT09IHVuZGVmaW5lZCB8fCByZWZzIDw9IDEpIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIGVsc2UgYWN0aXZlTmF0aXZlUnVuUmVmcy5zZXQocmVxdWVzdExvZ0lkLCByZWZzIC0gMSk7XG59XG5cbmZ1bmN0aW9uIHRyYWNrTmF0aXZlRmluYWxpemVyPFQ+KHJlcXVlc3RMb2dJZDogbnVtYmVyLCBmaW5hbGl6ZTogKCkgPT4gUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICBjb25zdCBvcGVyYXRpb24gPSBmaW5hbGl6ZSgpO1xuICBjb25zdCBzZXR0bGVkID0gb3BlcmF0aW9uLnRoZW4oXG4gICAgKCkgPT4gdW5kZWZpbmVkLFxuICAgICgpID0+IHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgZmluYWxpemVycyA9IGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZ2V0KHJlcXVlc3RMb2dJZCkgPz8gbmV3IFNldDxQcm9taXNlPHZvaWQ+PigpO1xuICBmaW5hbGl6ZXJzLmFkZChzZXR0bGVkKTtcbiAgYWN0aXZlTmF0aXZlRmluYWxpemVycy5zZXQocmVxdWVzdExvZ0lkLCBmaW5hbGl6ZXJzKTtcbiAgdm9pZCBzZXR0bGVkLnRoZW4oKCkgPT4ge1xuICAgIGZpbmFsaXplcnMuZGVsZXRlKHNldHRsZWQpO1xuICAgIGlmIChmaW5hbGl6ZXJzLnNpemUgPT09IDApIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH0pO1xuICByZXR1cm4gb3BlcmF0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0TmF0aXZlUnVuQWRtaXNzaW9uKCk6IHZvaWQge1xuICBpZiAoaXNSZXN0YXJ0UGVuZGluZygpKSB0aHJvdyByZXN0YXJ0VW5hdmFpbGFibGUoKTtcbn1cblxuZnVuY3Rpb24gd2l0aFByb3ZpZGVyUHJlZml4KFxuICByb3V0ZU1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIG1vZGVsOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIW1vZGVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAobW9kZWwuaW5jbHVkZXMoXCIvXCIpKSByZXR1cm4gbW9kZWw7XG4gIGNvbnN0IHNsYXNoID0gcm91dGVNb2RlbD8uaW5kZXhPZihcIi9cIikgPz8gLTE7XG4gIGNvbnN0IHByb3ZpZGVyID0gc2xhc2ggPiAwID8gcm91dGVNb2RlbD8uc2xpY2UoMCwgc2xhc2gpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gcHJvdmlkZXIgPyBgJHtwcm92aWRlcn0vJHttb2RlbH1gIDogbW9kZWw7XG59XG5cbi8qKlxuICogaGlzdG9yeeuKlCDsm5Drs7gg6re464yA66GcIOyggOyepe2VmOq4sOuztOuLpOuKlCwgcnVuIOu2hOyEneyXkCDtlYTsmpTtlZwgdXNlci9hc3Npc3RhbnQg7KCV67O066eMIO2VhO2EsOunge2VtOyEnCDsoIDsnqVcbiAqL1xuZnVuY3Rpb24gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UocmF3SGlzdG9yeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gIGlmICghcmF3SGlzdG9yeSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICBjb25zdCBpdGVtcyA9IEpTT04ucGFyc2UocmF3SGlzdG9yeSkgYXMgdW5rbm93bltdO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICBpZiAoIWl0ZW0gfHwgdHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICByZXR1cm4gcmVjb3JkLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIChyZWNvcmQucm9sZSA9PT0gXCJ1c2VyXCIgfHwgcmVjb3JkLnJvbGUgPT09IFwiYXNzaXN0YW50XCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBmaWx0ZXJlZC5sZW5ndGggPiAwID8gZmlsdGVyZWQgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQYXJzZWFibGVKc29uKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEpTT04ucGFyc2UodGV4dCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBSdW5MaWZlY3ljbGVSZXN1bHQgPSB7XG4gIHJ1bkNvbnRleHQ/OiBRZ3JpZFJ1bkNvbnRleHQ7XG59O1xuXG4vKipcbiAqIGxvZ2dlci1lbmFibGVkIHF1ZXJ5L3N0cmVhbSDsnZHri7Ug7KCE7ZuE7JeQIO2YuOy2nC5cbiAqXG4gKiAxKSBiZWZvcmVRdWVyeTogcnVuIOyDneyEsS/qs4Tsho0gKyB0b29sIHJlc3VsdCDsmYTro4wgKyBzdGFsZSB0b29sLXdhaXQgY2xlYW51cFxuICogMikgYWZ0ZXJRdWVyeTogZ2VuZXJhdGUgc3RlcCArIHRvb2wtY2FsbCBzdGVwICsgZmluaXNoL2tlZXAtb3BlblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYmVmb3JlUXVlcnkoYXJnczogUXVlcnlJbnB1dCk6IFByb21pc2U8e1xuICByZXF1ZXN0TG9nSWQ6IG51bWJlcjtcbiAgc3RlcEluZGV4OiBudW1iZXI7XG59PiB7XG4gIGFzc2VydE5hdGl2ZVJ1bkFkbWlzc2lvbigpO1xuXG4gIGxldCByZXF1ZXN0TG9nSWQ6IG51bWJlcjtcbiAgbGV0IHN0ZXBJbmRleCA9IDA7XG5cbiAgLy8gcmVxdWVzdExvZ0lkIOqwgCDsnojsnYQg65WM66eMIOq4sOyhtCBydW4g7Jew7J6lLiB0aHJlYWRDb29yZCDrp4wg7J6I64qUIGNvbnYg64qUIOyDiCBydW4g7Jy866GcIOyLnOyekS5cbiAgLy8gY29udGludWF0aW9uIOydgCBjcmVhdGVSdW4g7J2EIOqxtOuEiOubsOuvgOuhnCBydW4g7J2YIHRvb2xzIOuKlCDssqsg7Iqk7YWdIOyepeywqeu2hOycvOuhnCDqs6DsoJXrkJzri6Qg4oCUXG4gIC8vIEFJIFNESyBwcmVwYXJlU3RlcC9hY3RpdmVUb29scyDroZwg7Iqk7YWd66eI64ukIO2ItOyFi+ydtCDrsJTrgIzslrTrj4Qg66Gc6re47JeQ64qUIOuwmOyYgeuQmOyngCDslYrripTri6QuXG4gIGlmIChhcmdzLnJ1bkNvbnRleHQ/LnJlcXVlc3RMb2dJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmVxdWVzdExvZ0lkID0gYXJncy5ydW5Db250ZXh0LnJlcXVlc3RMb2dJZDtcbiAgICAvLyBjbGVhbnVw6rO8IOqwmeydgCBEQiBhZHZpc29yeSBsb2Nr7J2EIOyeoeqzoCB0b29sIOqysOqzvCDrsJjsmIEgKyDri6TsnYwgc3RlcCDsmIjslb3snYQg7ZWcXG4gICAgLy8gdHJhbnNhY3Rpb27sl5DshJwg7LKY66as7ZWc64ukLiDsl6zrn6wgcWdyaWQg7ZSE66Gc7IS47IqkIOyCrOydtOyXkOyEnOuPhCBzdGFsZSBleHBpcnnqsIBcbiAgICAvLyDrj4TssKkg7KSR7J24IGZvbGxvdy11cOydhCBlcnJvcuuhnCDrja7slrTsk7Dsp4Ag66q77ZWc64ukLlxuICAgIHN0ZXBJbmRleCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jb250aW51ZVRvb2xSdW4ocmVxdWVzdExvZ0lkLCBhcmdzLnRvb2xSZXN1bHRzID8/IFtdKTtcbiAgICBhd2FpdCBjbGVhbnVwU3RhbGVSdW5zKCk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgY2xlYW51cFN0YWxlUnVucygpO1xuICAgIHJlcXVlc3RMb2dJZCA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5jcmVhdGVSdW4oe1xuICAgICAgdXNlcl9wcm9tcHQ6IGFyZ3MucHJvbXB0LFxuICAgICAgc3lzdGVtX3Byb21wdDogYXJncy5zeXN0ZW0sXG4gICAgICByZXF1ZXN0ZWRfbW9kZWxfbmFtZTogYXJncy5tb2RlbCxcbiAgICAgIGVmZm9ydDogYXJncy5lZmZvcnQsXG4gICAgICBwcm9qZWN0X25hbWU6IGFyZ3MucHJvamVjdE5hbWUsXG4gICAgICBoaXN0b3J5OiBmaWx0ZXJIaXN0b3J5Rm9yU3RvcmFnZShhcmdzLmhpc3RvcnkpLFxuICAgICAgdG9vbHM6IGFyZ3MudG9vbHM/Lmxlbmd0aCA/IGFyZ3MudG9vbHMgOiB1bmRlZmluZWQsXG4gICAgICBpc19pbWFnZV9nZW5lcmF0aW9uOiBhcmdzLmltYWdlR2VuZXJhdGlvbiA9PT0gXCJhdXRvXCIgPyBmYWxzZSA6IGFyZ3MuaW1hZ2VHZW5lcmF0aW9uLFxuICAgICAganNvbl9zY2hlbWE6IGFyZ3MuanNvblNjaGVtYSA/PyBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gREIg7KSA67mEIOykkeyXkCDsnqzsi5zsnpHsnbQg7Iuc7J6R65CQ64uk66m0IHByb3ZpZGVyIOyLpO2WieycvOuhnCDrhJjslrTqsIDsp4Ag7JWK64qU64ukLlxuICAvLyDsnbQg7JqU7LKt7J2AIOyerOyLnOyekSBzbmFwc2hvdOyXkCDsl4bsl4jsnLzrr4DroZwg67Cp6riIIOykgOu5hO2VnCBydW7snYQg7KeB7KCRIOuniOqwkO2VnOuLpC5cbiAgaWYgKGlzUmVzdGFydFBlbmRpbmcoKSkge1xuICAgIGF3YWl0IGZpbmlzaFRlcm1pbmFsUnVuKHJlcXVlc3RMb2dJZCwgXCJlcnJvclwiLCBcInNlcnZlciByZXN0YXJ0ZWRcIik7XG4gICAgdGhyb3cgcmVzdGFydFVuYXZhaWxhYmxlKCk7XG4gIH1cblxuICByZWdpc3Rlck5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQpO1xuICByZXR1cm4geyByZXF1ZXN0TG9nSWQsIHN0ZXBJbmRleCB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWZ0ZXJRdWVyeShcbiAgcmVxdWVzdExvZ0lkOiBudW1iZXIsXG4gIHN0ZXBJbmRleDogbnVtYmVyLFxuICBhcmdzOiBRdWVyeUlucHV0LFxuICByZXN1bHQ6IFF1ZXJ5T3V0cHV0LFxuKTogUHJvbWlzZTxSdW5MaWZlY3ljbGVSZXN1bHQ+IHtcbiAgaWYgKGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmhhcyhyZXF1ZXN0TG9nSWQpKSByZXR1cm4ge307XG5cbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBwcm92aWRlcuqwgCBjYW5vbmljYWwgbW9kZWzsnYQg64+M66Ck7KSY64+EIOyalOyyrSByb3V0ZSDsnpDssrQoWzFtXSDrk7Ep64qUIOuztOyhtO2VnOuLpC5cbiAgICAgIGNvbnN0IHJlcXVlc3RlZE1vZGVsTmFtZSA9IHdpdGhQcm92aWRlclByZWZpeChcbiAgICAgICAgYXJncy5tb2RlbCxcbiAgICAgICAgYXJncy5tb2RlbCA/PyByZXN1bHQucmVxdWVzdGVkTW9kZWwgPz8gcmVzdWx0Lm1vZGVsLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNlcnZlZE1vZGVsTmFtZSA9IHdpdGhQcm92aWRlclByZWZpeChhcmdzLm1vZGVsLCByZXN1bHQubW9kZWwpO1xuXG4gICAgICAvLyBnZW5lcmF0ZSBzdGVwIOq4sOuhnVxuICAgICAgYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFwcGVuZFN0ZXAocmVxdWVzdExvZ0lkLCB7XG4gICAgICAgIHN0ZXBfaW5kZXg6IHN0ZXBJbmRleCxcbiAgICAgICAgdHlwZTogXCJnZW5lcmF0ZVwiLFxuICAgICAgICBtb2RlbF9uYW1lOiBzZXJ2ZWRNb2RlbE5hbWUsXG4gICAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiByZXF1ZXN0ZWRNb2RlbE5hbWUsXG4gICAgICAgIGZhbGxiYWNrX2NvdW50OiByZXN1bHQubW9kZWxGYWxsYmFja3M/Lmxlbmd0aCA/PyAwLFxuICAgICAgICBpbnB1dF90b2tlbnM6IHJlc3VsdC51c2FnZS5pbnB1dF90b2tlbnMsXG4gICAgICAgIG91dHB1dF90b2tlbnM6IHJlc3VsdC51c2FnZS5vdXRwdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9yZWFkX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IHJlc3VsdC51c2FnZS5jYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogcmVzdWx0LnVzYWdlLmNhY2hlX2NyZWF0aW9uXzVtX2lucHV0X3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiByZXN1bHQudXNhZ2UuY2FjaGVfY3JlYXRpb25fMWhfaW5wdXRfdG9rZW5zLFxuICAgICAgICBjb3N0X3VzZDogTWF0aC5yb3VuZChyZXN1bHQuY29zdFVzZCAqIDFfMDAwXzAwMCksXG4gICAgICAgIGNvc3Rfc291cmNlOiByZXN1bHQuY29zdFNvdXJjZSxcbiAgICAgICAgZHVyYXRpb25fbXM6IHJlc3VsdC5kdXJhdGlvbk1zLFxuICAgICAgICB0dGZ0X21zOiByZXN1bHQudHRmdE1zLFxuICAgICAgICBmaW5pc2hfcmVhc29uOiByZXN1bHQuZmluaXNoUmVhc29uLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGltYWdlUGFydHMgPSBnZXRJbWFnZVBhcnRzKHJlc3VsdCk7XG4gICAgICBjb25zdCBpbWFnZUNvc3RNaWNyb1VzZCA9IGVzdGltYXRlSW1hZ2VHZW5lcmF0aW9uQ29zdE1pY3JvVXNkKFxuICAgICAgICByZXN1bHQsXG4gICAgICAgIGFyZ3MuaW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyxcbiAgICAgICk7XG4gICAgICBmb3IgKGNvbnN0IHN0ZXAgb2YgYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMoYXJncywgaW1hZ2VQYXJ0cywgc3RlcEluZGV4KSkge1xuICAgICAgICBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuYXBwZW5kU3RlcChyZXF1ZXN0TG9nSWQsIHN0ZXApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0LmZpbmlzaFJlYXNvbiA9PT0gXCJ0b29sLWNhbGxzXCIpIHtcbiAgICAgICAgLy8gdG9vbC1jYWxsIHN0ZXDsnYQg7KaJ7IucIOq4sOuhne2VmOqzoCwg64uk7J2MIGZvbGxvdy11cOydtCDqsJnsnYAgcm937JeQIOqysOqzvOulvCDssYTsmrTri6QuXG4gICAgICAgIGNvbnN0IHRvb2xDYWxscyA9IHJlc3VsdC5jb250ZW50LmZpbHRlcigoYykgPT4gYy50eXBlID09PSBcInRvb2wtY2FsbFwiKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b29sQ2FsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB0YyA9IHRvb2xDYWxsc1tpXSE7XG4gICAgICAgICAgaWYgKHRjLnR5cGUgIT09IFwidG9vbC1jYWxsXCIpIGNvbnRpbnVlO1xuICAgICAgICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5hcHBlbmRTdGVwKHJlcXVlc3RMb2dJZCwge1xuICAgICAgICAgICAgc3RlcF9pbmRleDogc3RlcEluZGV4LFxuICAgICAgICAgICAgdHlwZTogXCJ0b29sX2NhbGxcIixcbiAgICAgICAgICAgIHRvb2xfY2FsbF9pbmRleDogaW1hZ2VQYXJ0cy5sZW5ndGggKyBpLFxuICAgICAgICAgICAgdG9vbF9jYWxsX2lkOiB0Yy50b29sQ2FsbElkLFxuICAgICAgICAgICAgdG9vbF9uYW1lOiB0Yy50b29sTmFtZSxcbiAgICAgICAgICAgIHRvb2xfYXJnczogdGMuaW5wdXQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBydW5Db250ZXh0OiB7IHJlcXVlc3RMb2dJZCB9IH07XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbmlzaFJlYXNvbiA9PT0gXCJzdG9wXCIg4oaSIHJ1biDsooXro4wgKOyghOyytCBzdGVwIHVzYWdlIO2VqeyCsClcbiAgICAgIGNvbnN0IGFnZyA9IGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5hZ2dyZWdhdGVTdGVwVXNhZ2UocmVxdWVzdExvZ0lkKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlVGV4dCA9IGZvcm1hdFJlc3BvbnNlRm9yTG9nKHJlc3VsdCk7XG4gICAgICBhd2FpdCBSZXF1ZXN0TG9nTW9kZWwuZmluaXNoUnVuKHJlcXVlc3RMb2dJZCwge1xuICAgICAgICBzdGF0dXM6IFwic3VjY2VlZGVkXCIsXG4gICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVRleHQsXG4gICAgICAgIC8vIHN0cnVjdHVyZWQg7JqU7LKt66eMIO2MkOygle2VnOuLpC4gZGV0aSDrsLDsuZjsnZggYnJva2VuIEpTT04g66WY66W8IOuqqeuhneyXkOyEnCDrsJTroZxcbiAgICAgICAgLy8g6rWs67OE7ZWY6riwIOychO2VnCDquLDroZ3snbTrqbAsIOu5hHN0cnVjdHVyZWQg7JqU7LKt7J2AIG51bGwg66GcIOuCqOuKlOuLpC5cbiAgICAgICAgcmVzcG9uc2VfanNvbl9vazogYXJncy5qc29uU2NoZW1hID8gaXNQYXJzZWFibGVKc29uKHJlc3BvbnNlVGV4dCkgOiBudWxsLFxuICAgICAgICB0b2tlbl9uYW1lOiByZXN1bHQudG9rZW5OYW1lLFxuICAgICAgICBpbnB1dF90b2tlbnM6IGFnZy5pbnB1dF90b2tlbnMsXG4gICAgICAgIG91dHB1dF90b2tlbnM6IGFnZy5vdXRwdXRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9yZWFkX3Rva2VuczogYWdnLmNhY2hlX3JlYWRfdG9rZW5zLFxuICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IGFnZy5jYWNoZV9jcmVhdGlvbl90b2tlbnMsXG4gICAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX3Rva2VuczogYWdnLmNhY2hlX2NyZWF0aW9uXzVtX3Rva2VucyxcbiAgICAgICAgY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zOiBhZ2cuY2FjaGVfY3JlYXRpb25fMWhfdG9rZW5zLFxuICAgICAgICBkdXJhdGlvbl9tczogYWdnLmR1cmF0aW9uX21zLFxuICAgICAgICAvLyBtdWx0aS1zdGVwIHJ1biDrtoDrqqjsnZgg66qo64247J2AIOy1nOyihSB0dXJu7J2EIOyEnOu5me2VnCDrqqjrjbjsnbTri6QuXG4gICAgICAgIHJlcXVlc3RlZF9tb2RlbF9uYW1lOiByZXF1ZXN0ZWRNb2RlbE5hbWUsXG4gICAgICAgIG1vZGVsX25hbWU6IHNlcnZlZE1vZGVsTmFtZSxcbiAgICAgICAgZmFsbGJhY2tfY291bnQ6IGFnZy5mYWxsYmFja19jb3VudCxcbiAgICAgICAgY29zdF91c2Q6IGFnZy5jb3N0X3VzZCxcbiAgICAgICAgY29zdF9zb3VyY2U6IGFnZy5jb3N0X3NvdXJjZSxcbiAgICAgICAgaW1hZ2VfY29zdF91c2Q6IGltYWdlQ29zdE1pY3JvVXNkLFxuICAgICAgICAuLi4oaW1hZ2VQYXJ0cy5sZW5ndGggPiAwID8geyBpc19pbWFnZV9nZW5lcmF0aW9uOiB0cnVlIH0gOiB7fSksXG4gICAgICAgIGltYWdlX2Nvc3RfbWV0aG9kOlxuICAgICAgICAgIGltYWdlQ29zdE1pY3JvVXNkICE9PSBudWxsXG4gICAgICAgICAgICA/IGltYWdlR2VuZXJhdGlvbkNvc3RNZXRob2QoYXJncy5pbWFnZUdlbmVyYXRpb25PcHRpb25zLCByZXN1bHQpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIGhpc3Rvcnk6IGZpbHRlckhpc3RvcnlGb3JTdG9yYWdlKGFyZ3MuaGlzdG9yeSksXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0gZmluYWxseSB7XG4gICAgICByZWxlYXNlTmF0aXZlUnVuKHJlcXVlc3RMb2dJZCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaFJ1bldpdGhFcnJvcihcbiAgcmVxdWVzdExvZ0lkOiBudW1iZXIsXG4gIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICBhcmdzPzogUXVlcnlJbnB1dCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybjtcbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiZXJyb3JcIiwgZXJyb3JNZXNzYWdlLCBhcmdzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgcmVsZWFzZU5hdGl2ZVJ1bihyZXF1ZXN0TG9nSWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5pc2hSdW5BYm9ydGVkKHJlcXVlc3RMb2dJZDogbnVtYmVyLCBhcmdzPzogUXVlcnlJbnB1dCk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaW50ZXJydXB0ZWROYXRpdmVSdW5JZHMuaGFzKHJlcXVlc3RMb2dJZCkpIHJldHVybjtcbiAgcmV0dXJuIHRyYWNrTmF0aXZlRmluYWxpemVyKHJlcXVlc3RMb2dJZCwgYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaW5pc2hUZXJtaW5hbFJ1bihyZXF1ZXN0TG9nSWQsIFwiYWJvcnRlZFwiLCBcImNsaWVudCBkaXNjb25uZWN0ZWRcIiwgYXJncyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJlbGVhc2VOYXRpdmVSdW4ocmVxdWVzdExvZ0lkKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKiog7ZiE7J6sIOydtCDtlITroZzshLjsiqTqsIAgcHJvdmlkZXLrpbwg7Iuk7ZaJIOykkeyduCBuYXRpdmUgcnVu66eMIOyerOyLnOyekSDsmKTrpZjroZwg66eI6rCQ7ZWc64ukLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmlzaEFjdGl2ZU5hdGl2ZVJ1bnNGb3JSZXN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXF1ZXN0TG9nSWRzID0gWy4uLmFjdGl2ZU5hdGl2ZVJ1blJlZnMua2V5cygpXTtcbiAgZm9yIChjb25zdCByZXF1ZXN0TG9nSWQgb2YgcmVxdWVzdExvZ0lkcykge1xuICAgIGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmFkZChyZXF1ZXN0TG9nSWQpO1xuICAgIGFjdGl2ZU5hdGl2ZVJ1blJlZnMuZGVsZXRlKHJlcXVlc3RMb2dJZCk7XG4gIH1cblxuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICByZXF1ZXN0TG9nSWRzLm1hcChhc3luYyAocmVxdWVzdExvZ0lkKSA9PiB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChhY3RpdmVOYXRpdmVGaW5hbGl6ZXJzLmdldChyZXF1ZXN0TG9nSWQpID8/IFtdKTtcbiAgICAgIGF3YWl0IGZpbmlzaFRlcm1pbmFsUnVuKHJlcXVlc3RMb2dJZCwgXCJlcnJvclwiLCBcInNlcnZlciByZXN0YXJ0ZWRcIik7XG4gICAgfSksXG4gICk7XG59XG5cbi8qKiDtlITroZzshLjsiqQg7KCE7JetIHJlZ2lzdHJ566W8IOqyqeumrO2VtOyVvCDtlZjripQg64uo7JyEIO2FjOyKpO2KuCDsoITsmqkuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXROYXRpdmVSdW5SZWdpc3RyeUZvclRlc3RzKCk6IHZvaWQge1xuICBhY3RpdmVOYXRpdmVSdW5SZWZzLmNsZWFyKCk7XG4gIGludGVycnVwdGVkTmF0aXZlUnVuSWRzLmNsZWFyKCk7XG4gIGFjdGl2ZU5hdGl2ZUZpbmFsaXplcnMuY2xlYXIoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmluaXNoVGVybWluYWxSdW4oXG4gIHJlcXVlc3RMb2dJZDogbnVtYmVyLFxuICBzdGF0dXM6IFwiZXJyb3JcIiB8IFwiYWJvcnRlZFwiLFxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyxcbiAgYXJncz86IFF1ZXJ5SW5wdXQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBsZXQgYWdncmVnYXRlOiBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIFJlcXVlc3RMb2dNb2RlbC5hZ2dyZWdhdGVTdGVwVXNhZ2U+PiB8IHVuZGVmaW5lZDtcbiAgICB0cnkge1xuICAgICAgYWdncmVnYXRlID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmFnZ3JlZ2F0ZVN0ZXBVc2FnZShyZXF1ZXN0TG9nSWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgYWdncmVnYXRlU3RlcFVzYWdlIGZhaWxlZCB3aGlsZSBmaW5pc2hpbmcgJHtzdGF0dXN9OiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgIH1cblxuICAgIGF3YWl0IFJlcXVlc3RMb2dNb2RlbC5maW5pc2hSdW4ocmVxdWVzdExvZ0lkLCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBlcnJvcl9tZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICBoaXN0b3J5OiBhcmdzID8gZmlsdGVySGlzdG9yeUZvclN0b3JhZ2UoYXJncy5oaXN0b3J5KSA6IHVuZGVmaW5lZCxcbiAgICAgIC4uLihhZ2dyZWdhdGVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBpbnB1dF90b2tlbnM6IGFnZ3JlZ2F0ZS5pbnB1dF90b2tlbnMsXG4gICAgICAgICAgICBvdXRwdXRfdG9rZW5zOiBhZ2dyZWdhdGUub3V0cHV0X3Rva2VucyxcbiAgICAgICAgICAgIGNhY2hlX3JlYWRfdG9rZW5zOiBhZ2dyZWdhdGUuY2FjaGVfcmVhZF90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl81bV90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl81bV90b2tlbnMsXG4gICAgICAgICAgICBjYWNoZV9jcmVhdGlvbl8xaF90b2tlbnM6IGFnZ3JlZ2F0ZS5jYWNoZV9jcmVhdGlvbl8xaF90b2tlbnMsXG4gICAgICAgICAgICBkdXJhdGlvbl9tczogYWdncmVnYXRlLmR1cmF0aW9uX21zLFxuICAgICAgICAgICAgZmFsbGJhY2tfY291bnQ6IGFnZ3JlZ2F0ZS5mYWxsYmFja19jb3VudCxcbiAgICAgICAgICAgIGNvc3RfdXNkOiBhZ2dyZWdhdGUuY29zdF91c2QsXG4gICAgICAgICAgICBjb3N0X3NvdXJjZTogYWdncmVnYXRlLmNvc3Rfc291cmNlLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoYGZpbmlzaFRlcm1pbmFsUnVuKCR7c3RhdHVzfSkgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFudXBTdGFsZVJ1bnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChzdGFsZUNsZWFudXBJbkZsaWdodCkge1xuICAgIGF3YWl0IHN0YWxlQ2xlYW51cEluRmxpZ2h0O1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGlmIChub3cgLSBsYXN0U3RhbGVDbGVhbnVwU3RhcnRlZEF0IDwgU1RBTEVfQ0xFQU5VUF9JTlRFUlZBTF9NUykgcmV0dXJuO1xuICBsYXN0U3RhbGVDbGVhbnVwU3RhcnRlZEF0ID0gbm93O1xuXG4gIGNvbnN0IGNsZWFudXAgPSBwZXJmb3JtU3RhbGVSdW5DbGVhbnVwKCk7XG4gIHN0YWxlQ2xlYW51cEluRmxpZ2h0ID0gY2xlYW51cDtcbiAgdHJ5IHtcbiAgICBhd2FpdCBjbGVhbnVwO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChzdGFsZUNsZWFudXBJbkZsaWdodCA9PT0gY2xlYW51cCkgc3RhbGVDbGVhbnVwSW5GbGlnaHQgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVN0YWxlUnVuQ2xlYW51cCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBcInRvb2wtY2FsbCBydW46IG5vIGZvbGxvdy11cCB3aXRoaW4gMzAgbWludXRlc1wiO1xuICAgIGNvbnN0IHN0YWxlSWRzID0gYXdhaXQgUmVxdWVzdExvZ01vZGVsLmV4cGlyZVN0YWxlVG9vbFdhaXRpbmdSdW5zKFxuICAgICAgU1RBTEVfUlVOX1RIUkVTSE9MRF9NUyxcbiAgICAgIGVycm9yTWVzc2FnZSxcbiAgICApO1xuICAgIGNvbnN0IGNsZWFuZWRDb3VudCA9IHN0YWxlSWRzLmxlbmd0aDtcbiAgICBpZiAoY2xlYW5lZENvdW50ID4gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYGNsZWFuZWQgdXAgJHtjbGVhbmVkQ291bnR9IHN0YWxlIHJ1bm5pbmcgcmVxdWVzdCBsb2dzYCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBzdGFsZSBjbGVhbnVwIGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWlCQSxNQUFNLFNBQVMsVUFBVSxDQUFDLFNBQVMsZUFBZSxDQUFDO0FBQ25ELE1BQU0seUJBQXlCLE9BQVU7QUFDekMsTUFBTSw0QkFBNEIsS0FBSztBQUN2QyxJQUFJO0FBQ0osSUFBSSw0QkFBNEI7QUFDaEMsTUFBTSxzQ0FBc0IsSUFBSSxJQUFvQjtBQUNwRCxNQUFNLDBDQUEwQixJQUFJLElBQVk7QUFDaEQsTUFBTSx5Q0FBeUIsSUFBSSxJQUFnQztBQUVuRSxTQUFTLHFCQUFrRDtDQUN6RCxPQUFPLElBQUksNEJBQTRCLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0FBRUEsU0FBUyxrQkFBa0IsY0FBNEI7Q0FDckQsb0JBQW9CLElBQUksZUFBZSxvQkFBb0IsSUFBSSxZQUFZLEtBQUssS0FBSyxDQUFDO0FBQ3hGO0FBRUEsU0FBUyxpQkFBaUIsY0FBNEI7Q0FDcEQsTUFBTSxPQUFPLG9CQUFvQixJQUFJLFlBQVk7Q0FDakQsSUFBSSxTQUFTLFVBQWEsUUFBUSxHQUFHLG9CQUFvQixPQUFPLFlBQVk7TUFDdkUsb0JBQW9CLElBQUksY0FBYyxPQUFPLENBQUM7QUFDckQ7QUFFQSxTQUFTLHFCQUF3QixjQUFzQixVQUF3QztDQUM3RixNQUFNLFlBQVksU0FBUztDQUMzQixNQUFNLFVBQVUsVUFBVSxXQUNsQixjQUNBLE1BQ1I7Q0FDQSxNQUFNLGFBQWEsdUJBQXVCLElBQUksWUFBWSxxQkFBSyxJQUFJLElBQW1CO0NBQ3RGLFdBQVcsSUFBSSxPQUFPO0NBQ3RCLHVCQUF1QixJQUFJLGNBQWMsVUFBVTtDQUNuRCxBQUFLLFFBQVEsV0FBVztFQUN0QixXQUFXLE9BQU8sT0FBTztFQUN6QixJQUFJLFdBQVcsU0FBUyxHQUFHLHVCQUF1QixPQUFPLFlBQVk7Q0FDdkUsQ0FB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
|
|
@@ -139,7 +139,7 @@ const QueryInput = z.looseObject({
|
|
|
139
139
|
logger: z.boolean().optional(),
|
|
140
140
|
runContext: QgridRunContext.optional(),
|
|
141
141
|
toolResults: z.array(QgridToolResultInput).optional(),
|
|
142
|
-
imageGeneration: z.boolean().optional(),
|
|
142
|
+
imageGeneration: z.union([z.boolean(), z.literal("auto")]).optional(),
|
|
143
143
|
imageGenerationOptions: ImageGenerationOptions.optional()
|
|
144
144
|
});
|
|
145
145
|
const ModelFallback = z.object({
|
|
@@ -332,4 +332,4 @@ function maskToken(token) {
|
|
|
332
332
|
//#endregion
|
|
333
333
|
export { AppendStepInput, CostSource, CreateRunInput, Effort, FinishReason, FinishRunInput, HealthResponse, ImageGenerationMetadata, ImageGenerationOptions, ImageGenerationQuality, ImageGenerationSize, MAX_QUERY_TIMEOUT_MS, ModelFallback, OAuthStartResult, ProcessError, ProviderStartupState, QgridContent, QgridInputPart, QgridRunContext, QgridThreadCoord, QgridTool, QgridToolResultInput, QueryInput, QueryOutput, QueryTimeoutMs, QuotaError, QuotaThresholdExceededError, ReasoningSummary, ServiceTier, StreamEvents, SubscriberStatus, TimeoutError, TokenStats, UsageResponse, Verbosity, maskToken };
|
|
334
334
|
|
|
335
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IEVmZm9ydCA9IHouZW51bShbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCJdKTtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9IHouaW5mZXI8dHlwZW9mIEVmZm9ydD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2wgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlucHV0U2NoZW1hOiB6LnVua25vd24oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRUb29sID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sPjtcblxuLy8gT2JzZXJ2ZWQgc3RhbmRhbG9uZSBJbWFnZXMgcmVzcG9uc2UgdmFsdWVzLCBkaXN0aW5jdCBmcm9tIHJlcXVlc3RlZCBnZW5lcmF0aW9uIGhpbnRzLlxuZXhwb3J0IGNvbnN0IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhID0gei5vYmplY3Qoe1xuICByb3V0ZTogei5saXRlcmFsKFwiY29kZXgtaW1hZ2VzXCIpLFxuICBtb2RlbDogei5saXRlcmFsKFwiZ3B0LWltYWdlLTJcIiksXG4gIGJhY2tncm91bmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcXVhbGl0eTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaXplOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzYWdlOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBpbnB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIHRvdGFsX3Rva2Vuczogei5udW1iZXIoKS5ub25uZWdhdGl2ZSgpLFxuICAgICAgaW5wdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgICBjYWNoZWRfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCkub3B0aW9uYWwoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBvdXRwdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YT47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZENvbnRlbnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRvb2wtY2FsbFwiKSxcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImltYWdlXCIpLFxuICAgIC8vIEJhc2U2NCBpbWFnZSBieXRlczsgb2xkZXIgcmVzcG9uc2VzIHdpdGhvdXQgbWVkaWFUeXBlIGFyZSBQTkcuXG4gICAgZGF0YTogei5zdHJpbmcoKSxcbiAgICBtZWRpYVR5cGU6IHouZW51bShbXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2Uvd2VicFwiXSkub3B0aW9uYWwoKSxcbiAgICByZXZpc2VkUHJvbXB0OiB6LnN0cmluZygpLm51bGxpc2goKSxcbiAgICBnZW5lcmF0aW9uOiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRDb250ZW50ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJlYXNvbiA9IHouZW51bShbXCJzdG9wXCIsIFwidG9vbC1jYWxsc1wiXSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSZWFzb24gPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSZWFzb24+O1xuXG5leHBvcnQgY29uc3QgVmVyYm9zaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgVmVyYm9zaXR5ID0gei5pbmZlcjx0eXBlb2YgVmVyYm9zaXR5PjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ1N1bW1hcnkgPSB6LmVudW0oW1wiYXV0b1wiLCBcImNvbmNpc2VcIiwgXCJkZXRhaWxlZFwiLCBcIm5vbmVcIl0pO1xuZXhwb3J0IHR5cGUgUmVhc29uaW5nU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ1N1bW1hcnk+O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVRpZXIgPSB6LmVudW0oW1wiZmFzdFwiLCBcImZsZXhcIl0pO1xuZXhwb3J0IHR5cGUgU2VydmljZVRpZXIgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aWNlVGllcj47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUdlbmVyYXRpb25RdWFsaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblF1YWxpdHk+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouZW51bShbXCIxMDI0eDEwMjRcIiwgXCIxMDI0eDE1MzZcIiwgXCIxNTM2eDEwMjRcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblNpemU+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHpcbiAgLm9iamVjdCh7XG4gICAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eS5vcHRpb25hbCgpLFxuICAgIHNpemU6IEltYWdlR2VuZXJhdGlvblNpemUub3B0aW9uYWwoKSxcbiAgICBiYWNrZ3JvdW5kOiB6LmVudW0oW1wiYXV0b1wiLCBcIm9wYXF1ZVwiLCBcInRyYW5zcGFyZW50XCJdKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dEZvcm1hdDogei5lbnVtKFtcInBuZ1wiLCBcImpwZWdcIiwgXCJ3ZWJwXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAucmVmaW5lKFxuICAgIChvcHRpb25zKSA9PlxuICAgICAgb3B0aW9ucy5iYWNrZ3JvdW5kICE9PSBcInRyYW5zcGFyZW50XCIgfHxcbiAgICAgICFvcHRpb25zLm91dHB1dEZvcm1hdCB8fFxuICAgICAgb3B0aW9ucy5vdXRwdXRGb3JtYXQgPT09IFwicG5nXCIsXG4gICAgeyBtZXNzYWdlOiBcIlRyYW5zcGFyZW50IGltYWdlIGdlbmVyYXRpb24gb25seSBzdXBwb3J0cyBQTkcgb3V0cHV0XCIsIHBhdGg6IFtcIm91dHB1dEZvcm1hdFwiXSB9LFxuICApO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvbk9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgUWdyaWRJbnB1dFBhcnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICAgIHRleHRfZWxlbWVudHM6IHouYXJyYXkoei5uZXZlcigpKS5kZWZhdWx0KFtdKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJpbWFnZVwiKSxcbiAgICB1cmw6IHouc3RyaW5nKCksXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBRZ3JpZElucHV0UGFydCA9IHouaW5mZXI8dHlwZW9mIFFncmlkSW5wdXRQYXJ0PjtcblxuZXhwb3J0IGNvbnN0IE1BWF9RVUVSWV9USU1FT1VUX01TID0gMzAgKiA2MF8wMDA7XG5leHBvcnQgY29uc3QgUXVlcnlUaW1lb3V0TXMgPSB6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkubWF4KE1BWF9RVUVSWV9USU1FT1VUX01TKTtcblxuLy8g4pSA4pSA4pSAIFJ1biBMaWZlY3ljbGUgQ29udGV4dCAoU0RLIOKGlCBTZXJ2ZXIgY29udHJhY3QpIOKUgOKUgOKUgFxuXG4vLyBPcGVuQUkgY2FjaGUgYWZmaW5pdHkg7KKM7ZGcKOq1rCBjb2RleCB0aHJlYWQg7KKM7ZGcKS4gcHJvbXB0X2NhY2hlX2tleSDrpbwg6rOg7KCV7ZW0XG4vLyBPcGVuQUkgcHJvbXB0IGNhY2hpbmcg7J2EIOyCtOumrOq4sCDsnITtlZwg7ZW465OkLiDshJzrsoTqsIAg67Cc6riJ7ZWY6rOgIO2BtOudvOqwgCDri6TsnYwg7JqU7LKt7JeQIOq3uOuMgOuhnCDtmozshqHtlZzri6QuXG4vLyDtlbjrk6Qg66+47KCE7IahIOyLnCDquLDsobQgXCLrp6QgdHVybiDsg4ggdGhyZWFkICsgaGlzdG9yeSBpbmplY3RcIiDrj5nsnpHsnLzroZwg7Y+067CxKFFncmlkUnVuQ29udGV4dCDssLjsobApLlxuZXhwb3J0IGNvbnN0IFFncmlkVGhyZWFkQ29vcmQgPSB6Lm9iamVjdCh7XG4gIHdvcmtlcklkOiB6Lm51bWJlcigpLCAvLyDqs6DsoJUg65287Jqw7YyFICh0aHJlYWQg64qUIHdvcmtlciDtlITroZzshLjsiqQg66mU66qo66as7JeQ66eMIOyhtOyerClcbiAgdGhyZWFkSWQ6IHouc3RyaW5nKCksIC8vIG9wYXF1ZSBjYWNoZSBhZmZpbml0eSBrZXkgPSBwcm9tcHRfY2FjaGVfa2V5XG4gIGVwb2NoOiB6Lm51bWJlcigpLCAvLyB3b3JrZXIgc3Bhd24g7Lm07Jq07YSwLiByZXN0YXJ0IOuhnCB0aHJlYWQg7Kad67CcIOqwkOyngFxuICBzeXN0ZW1IYXNoOiB6LnN0cmluZygpLCAvLyBzeXN0ZW1fcHJvbXB0IO2VtOyLnC4g64uk66W4IOuMgO2ZlCDsmKTsoJHsho0g67Cp7KeAXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVGhyZWFkQ29vcmQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZFRocmVhZENvb3JkPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkUnVuQ29udGV4dCA9IHoub2JqZWN0KHtcbiAgLy8gdG9vbC1jYWxsIHJ1buydhCDqs4Tsho3tlaAg65WM66eMIOuwnOq4iS4g7J2867CYIOuMgO2ZlOuKlCB0aHJlYWRDb29yZCDrp4wg7JmV67O1LlxuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGhyZWFkQ29vcmQ6IFFncmlkVGhyZWFkQ29vcmQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRSdW5Db250ZXh0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRSdW5Db250ZXh0PjtcblxuZXhwb3J0IGNvbnN0IFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5vYmplY3Qoe1xuICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gIGlzRXJyb3I6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sUmVzdWx0SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlJbnB1dCA9IHoubG9vc2VPYmplY3Qoe1xuICBzeXN0ZW06IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvbXB0OiB6LnN0cmluZygpLFxuICBpbnB1dDogei5hcnJheShRZ3JpZElucHV0UGFydCkub3B0aW9uYWwoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGltZW91dDogUXVlcnlUaW1lb3V0TXMub3B0aW9uYWwoKSxcbiAganNvblNjaGVtYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sczogei5hcnJheShRZ3JpZFRvb2wpLm9wdGlvbmFsKCksXG4gIGVmZm9ydDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJib3NpdHk6IFZlcmJvc2l0eS5vcHRpb25hbCgpLFxuICByZWFzb25pbmdTdW1tYXJ5OiBSZWFzb25pbmdTdW1tYXJ5Lm9wdGlvbmFsKCksXG4gIHNlcnZpY2VUaWVyOiBTZXJ2aWNlVGllci5vcHRpb25hbCgpLFxuICBoaXN0b3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIHJhdy9kYXNoYm9hcmTsmYAg6rO16rCcIEFJIFNESyBwcm92aWRlck9wdGlvbnMucWdyaWQudG9rZW5OYW1l7J20IOqzteycoO2VmOuKlCDsp4DsoJUg7KO87IaMLlxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgLy8gU0RLLWRlcml2ZWQgb3BhcXVlIGFmZmluaXR5LiBJdCBpcyBpbnRlbnRpb25hbGx5IGRpc3RpbmN0IGZyb20gdGhlIGNhbGxlcidzIHNlc3Npb25LZXkuXG4gIGNhY2hlQWZmaW5pdHlLZXk6IHpcbiAgICAuc3RyaW5nKClcbiAgICAucmVnZXgoL15bMC05YS1mXXs2NH0kLylcbiAgICAub3B0aW9uYWwoKSxcbiAgLy8g7IOd65617ZWY66m0IOuhnOq5he2VnOuLpC4gZmFsc2XripQgcmVxdWVzdCBsb2cg7JOw6riw66eMIOuBhOqzoCBkaXNwYXRjaC90aHJlYWTripQg7Jyg7KeA7ZWc64ukLlxuICBsb2dnZXI6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHJ1bkNvbnRleHQ6IFFncmlkUnVuQ29udGV4dC5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0czogei5hcnJheShRZ3JpZFRvb2xSZXN1bHRJbnB1dCkub3B0aW9uYWwoKSxcbiAgLy8gT3BlbkFJIFJlc3BvbnNlcyBpbWFnZV9nZW5lcmF0aW9uIHRvb2wg7J2EIOy8oOuLpChPcGVuQUkg6rK966GcIOyghOyaqSwgb3B0LWluLCBub24tc3RyZWFtKS5cbiAgaW1hZ2VHZW5lcmF0aW9uOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAvLyBxZ3JpZCDqsIDqsqkg7LaU7KCVIOuwjyBDb2RleCDsnbTrr7jsp4Ag7JqU7LKtIO2ejO2KuC4g7J2066+47KeAIOuqqOuNuOydgCBncHQtaW1hZ2UtMiDroZwg6rOg7KCVIOqwgOygle2VnOuLpC5cbiAgaW1hZ2VHZW5lcmF0aW9uT3B0aW9uczogSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucy5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBRdWVyeUlucHV0ID0gei5pbmZlcjx0eXBlb2YgUXVlcnlJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBNb2RlbEZhbGxiYWNrID0gei5vYmplY3Qoe1xuICB0cmlnZ2VyOiB6LmxpdGVyYWwoXCJyZWZ1c2FsXCIpLFxuICBmcm9tTW9kZWw6IHouc3RyaW5nKCksXG4gIHRvTW9kZWw6IHouc3RyaW5nKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4cGxhbmF0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIE1vZGVsRmFsbGJhY2sgPSB6LmluZmVyPHR5cGVvZiBNb2RlbEZhbGxiYWNrPjtcblxuZXhwb3J0IGNvbnN0IENvc3RTb3VyY2UgPSB6LmVudW0oW1wicHJvdmlkZXJcIiwgXCJwcmljaW5nX3RhYmxlXCIsIFwibWl4ZWRcIl0pO1xuZXhwb3J0IHR5cGUgQ29zdFNvdXJjZSA9IHouaW5mZXI8dHlwZW9mIENvc3RTb3VyY2U+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlPdXRwdXQgPSB6Lm9iamVjdCh7XG4gIHRleHQ6IHouc3RyaW5nKCksXG4gIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgZmluaXNoUmVhc29uOiBGaW5pc2hSZWFzb24sXG4gIHRva2VuTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXF1ZXN0ZWRNb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbEZhbGxiYWNrczogei5hcnJheShNb2RlbEZhbGxiYWNrKS5vcHRpb25hbCgpLFxuICB1c2FnZTogei5vYmplY3Qoe1xuICAgIGlucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBvdXRwdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIHJlYXNvbmluZ190b2tlbnM6IHoubnVtYmVyKCksXG4gICAgY2FjaGVfY3JlYXRpb25faW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIGNhY2hlX2NyZWF0aW9uXzVtX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGNhY2hlX3JlYWRfaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICB9KSxcbiAgZHVyYXRpb25Nczogei5udW1iZXIoKSxcbiAgdHRmdE1zOiB6Lm51bWJlcigpLFxuICBjb3N0VXNkOiB6Lm51bWJlcigpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLFxuICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUXVlcnlPdXRwdXQgPSB6LmluZmVyPHR5cGVvZiBRdWVyeU91dHB1dD47XG5cbi8vIOKUgOKUgOKUgCBTdHJlYW0gRXZlbnRzIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgU3RyZWFtRXZlbnRzID0gei5vYmplY3Qoe1xuICBkZWx0YTogei5vYmplY3QoeyB0ZXh0OiB6LnN0cmluZygpIH0pLFxuICB0b29sQ2FsbDogei5vYmplY3Qoe1xuICAgIHRvb2xDYWxsSWQ6IHouc3RyaW5nKCksXG4gICAgdG9vbE5hbWU6IHouc3RyaW5nKCksXG4gICAgaW5wdXQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBkb25lOiB6Lm9iamVjdCh7XG4gICAgdGV4dDogei5zdHJpbmcoKSxcbiAgICBtb2RlbDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJlcXVlc3RlZE1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbW9kZWxGYWxsYmFja3M6IHouYXJyYXkoTW9kZWxGYWxsYmFjaykub3B0aW9uYWwoKSxcbiAgICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBmaW5pc2hSZWFzb246IEZpbmlzaFJlYXNvbixcbiAgICB1c2FnZTogei5vYmplY3Qoe1xuICAgICAgaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgICAgb3V0cHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIHJlYXNvbmluZ190b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBjYWNoZV9jcmVhdGlvbl81bV9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzFoX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgICAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgfSksXG4gICAgZHVyYXRpb25Nczogei5udW1iZXIoKSxcbiAgICB0dGZ0TXM6IHoubnVtYmVyKCksXG4gICAgY29zdFVzZDogei5udW1iZXIoKSxcbiAgICBjb3N0U291cmNlOiBDb3N0U291cmNlLFxuICAgIGNvbnRlbnQ6IHouYXJyYXkoUWdyaWRDb250ZW50KSxcbiAgICBydW5Db250ZXh0OiBRZ3JpZFJ1bkNvbnRleHQub3B0aW9uYWwoKSxcbiAgfSksXG4gIGVycm9yOiB6Lm9iamVjdCh7IG1lc3NhZ2U6IHouc3RyaW5nKCkgfSksXG59KTtcbmV4cG9ydCB0eXBlIFN0cmVhbUV2ZW50cyA9IHouaW5mZXI8dHlwZW9mIFN0cmVhbUV2ZW50cz47XG5cbi8vIOKUgOKUgOKUgCBSdW4gTGlmZWN5Y2xlIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgQ3JlYXRlUnVuSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHVzZXJQcm9tcHQ6IHouc3RyaW5nKCksXG4gIHN5c3RlbVByb21wdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZWZmb3J0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGhpc3Rvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaXNTdHJ1Y3R1cmVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBqc29uU2NoZW1hOiB6LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgQ3JlYXRlUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBDcmVhdGVSdW5JbnB1dD47XG5cbmV4cG9ydCBjb25zdCBBcHBlbmRTdGVwSW5wdXQgPSB6Lm9iamVjdCh7XG4gIHJlcXVlc3RMb2dJZDogei5udW1iZXIoKSxcbiAgc3RlcEluZGV4OiB6Lm51bWJlcigpLFxuICB0eXBlOiB6LmVudW0oW1wiZ2VuZXJhdGVcIiwgXCJ0b29sX2NhbGxcIl0pLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVxdWVzdGVkTW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZhbGxiYWNrQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgb3V0cHV0VG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlQ3JlYXRpb241bVRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjYWNoZUNyZWF0aW9uMWhUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLm9wdGlvbmFsKCksXG4gIGR1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdHRmdE1zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgZmluaXNoUmVhc29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlYXNvbmluZ1RleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVhc29uaW5nVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvb2xDYWxsSW5kZXg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9vbENhbGxJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sQXJnczogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xEdXJhdGlvbk1zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVycm9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEFwcGVuZFN0ZXBJbnB1dCA9IHouaW5mZXI8dHlwZW9mIEFwcGVuZFN0ZXBJbnB1dD47XG5cbmV4cG9ydCBjb25zdCBGaW5pc2hSdW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgcmVxdWVzdExvZ0lkOiB6Lm51bWJlcigpLFxuICBzdGF0dXM6IHouZW51bShbXCJzdWNjZWVkZWRcIiwgXCJlcnJvclwiLCBcImFib3J0ZWRcIl0pLFxuICByZXNwb25zZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlcXVlc3RlZE1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmYWxsYmFja0NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsSW5wdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxPdXRwdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZVJlYWRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZUNyZWF0aW9uVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjVtVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRvdGFsQ2FjaGVDcmVhdGlvbjFoVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFNvdXJjZTogQ29zdFNvdXJjZS5vcHRpb25hbCgpLFxuICB0b3RhbER1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlcnJvck1lc3NhZ2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVzcG9uc2VKc29uT2s6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEZpbmlzaFJ1bklucHV0ID0gei5pbmZlcjx0eXBlb2YgRmluaXNoUnVuSW5wdXQ+O1xuXG4vLyDilIDilIDilIAgVG9rZW4gTWFuYWdlbWVudCDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IFRva2VuU3RhdHMgPSB6Lm9iamVjdCh7XG4gIHRva2VuOiB6LnN0cmluZygpLFxuICBuYW1lOiB6LnN0cmluZygpLFxuICBwcm92aWRlcjogei5zdHJpbmcoKSxcbiAgcmVxdWVzdHM6IHoubnVtYmVyKCksXG59KTtcbmV4cG9ydCB0eXBlIFRva2VuU3RhdHMgPSB6LmluZmVyPHR5cGVvZiBUb2tlblN0YXRzPjtcblxuLy8g4pSA4pSA4pSAIE9BdXRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgT0F1dGhTdGFydFJlc3VsdCA9IHoub2JqZWN0KHtcbiAgYXV0aFVybDogei5zdHJpbmcoKSxcbiAgLy8gcmVkaXJlY3Q6IOu4jOudvOyasOyggCDsnpDrj5kg67O16reAKOujqO2UhOuwsSDsoJHsho0pLiBjb2RlOiDsvZjshpQg7L2c67CxICsg7L2U65OcIOu2meyXrOuEo+q4sCjsm5Dqsqkg7KCR7IaNKS5cbiAgLy8gT3BlbkFJIOybkOqyqSDqsr3roZzripQg65Ox66Gd65CcIGxvb3BiYWNrIGNhbGxiYWNrIFVSTCDsoITssrTrpbwg67aZ7Jes64Sj64qUIGNvZGUg66qo65Oc66W8IOyTtOuLpC5cbiAgbW9kZTogei5lbnVtKFtcInJlZGlyZWN0XCIsIFwiY29kZVwiXSksXG59KTtcbmV4cG9ydCB0eXBlIE9BdXRoU3RhcnRSZXN1bHQgPSB6LmluZmVyPHR5cGVvZiBPQXV0aFN0YXJ0UmVzdWx0PjtcblxuY29uc3QgUmF0ZVdpbmRvdyA9IHpcbiAgLm9iamVjdCh7XG4gICAgdXRpbGl6YXRpb246IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgICByZXNldHNBdDogei5zdHJpbmcoKS5udWxsYWJsZSgpLFxuICAgIHdpbmRvd0R1cmF0aW9uTWluczogei5udW1iZXIoKS5udWxsYWJsZSgpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5udWxsYWJsZSgpO1xuXG5leHBvcnQgY29uc3QgVXNhZ2VSZXNwb25zZSA9IHoub2JqZWN0KHtcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvdmlkZXI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZml2ZUhvdXI6IFJhdGVXaW5kb3cub3B0aW9uYWwoKSxcbiAgc2V2ZW5EYXk6IFJhdGVXaW5kb3cub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVXNhZ2VSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIFVzYWdlUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgSGVhbHRoIOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgU3Vic2NyaWJlclN0YXR1cyA9IHoub2JqZWN0KHtcbiAgY29ubmVjdGVkOiB6LmJvb2xlYW4oKSxcbiAgY29ubmVjdGVkQXQ6IHouZGF0ZSgpLm51bGxhYmxlKCksXG4gIGxhc3RSZWNvbmNpbGVBdDogei5kYXRlKCkubnVsbGFibGUoKSxcbiAgYXR0ZW1wdDogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgU3Vic2NyaWJlclN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIFN1YnNjcmliZXJTdGF0dXM+O1xuXG5leHBvcnQgY29uc3QgUHJvdmlkZXJTdGFydHVwU3RhdGUgPSB6LmVudW0oW1wic3RhcnRpbmdcIiwgXCJyZWFkeVwiLCBcImZhaWxlZFwiXSk7XG5leHBvcnQgdHlwZSBQcm92aWRlclN0YXJ0dXBTdGF0ZSA9IHouaW5mZXI8dHlwZW9mIFByb3ZpZGVyU3RhcnR1cFN0YXRlPjtcblxuZXhwb3J0IGNvbnN0IEhlYWx0aFJlc3BvbnNlID0gei5vYmplY3Qoe1xuICBzdGF0dXM6IHouc3RyaW5nKCksXG4gIGFjdGl2ZVRva2Vuczogei5udW1iZXIoKSxcbiAgc3Vic2NyaWJlcjogU3Vic2NyaWJlclN0YXR1cy5udWxsYWJsZSgpLFxuICAvLyBIVFRQIOumrOyKpOuLneydgCBkaXNwYXRjaGVyIOq4sOuPmeuztOuLpCDrqLzsoIAg7Je066aw64ukLiAyMDAg7J2R64u166eM7Jy866Gc64qUIOyalOyyreydhCDsspjrpqztlaAg7IiYXG4gIC8vIOyeiOuKlOyngCDslYwg7IiYIOyXhuyWtCBwcm92aWRlciDrs4Qg7KSA67mEIOyDge2DnOulvCDtlajqu5gg64W47Lac7ZWc64ukLlxuICByZWFkeTogei5ib29sZWFuKCksXG4gIHByb3ZpZGVyczogei5vYmplY3Qoe1xuICAgIG9wZW5haTogUHJvdmlkZXJTdGFydHVwU3RhdGUsXG4gICAgYW50aHJvcGljOiBQcm92aWRlclN0YXJ0dXBTdGF0ZSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIEhlYWx0aFJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgSGVhbHRoUmVzcG9uc2U+O1xuXG4vLyDilIDilIDilIAgRXJyb3JzIOKUgOKUgOKUgFxuXG5leHBvcnQgY2xhc3MgUXVvdGFFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUVVPVEFfRVhIQVVTVEVEXCIgYXMgY29uc3Q7XG59XG5leHBvcnQgY2xhc3MgUXVvdGFUaHJlc2hvbGRFeGNlZWRlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJRVU9UQV9USFJFU0hPTERfRVhDRUVERURcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlRJTUVPVVRcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBQcm9jZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlBST0NFU1NfRVJST1JcIiBhcyBjb25zdDtcbn1cblxuLy8g4pSA4pSA4pSAIFV0aWxzIOKUgOKUgOKUgFxuXG5leHBvcnQgZnVuY3Rpb24gbWFza1Rva2VuKHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdG9rZW4ubGVuZ3RoID4gNCA/IGAuLi4ke3Rva2VuLnNsaWNlKC00KX1gIDogdG9rZW47XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBYSxTQUFTLEVBQUUsS0FBSztDQUFDO0NBQU87Q0FBVTtBQUFNLENBQUM7QUFHdEQsTUFBYSxZQUFZLEVBQUUsT0FBTztDQUNoQyxNQUFNLEVBQUUsT0FBTztDQUNmLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2pDLGFBQWEsRUFBRSxRQUFRO0FBQ3pCLENBQUM7QUFJRCxNQUFhLDBCQUEwQixFQUFFLE9BQU87Q0FDOUMsT0FBTyxFQUFFLFFBQVEsY0FBYztDQUMvQixPQUFPLEVBQUUsUUFBUSxhQUFhO0NBQzlCLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2hDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzdCLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzFCLE9BQU8sRUFDSixPQUFPO0VBQ04sY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVk7RUFDckMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVk7RUFDdEMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVk7RUFDckMsc0JBQXNCLEVBQ25CLE9BQU87R0FDTixjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtHQUNyQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtHQUNwQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUztFQUNuRCxDQUFDLENBQUMsQ0FDRCxTQUFTO0VBQ1osdUJBQXVCLEVBQ3BC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
|
|
335
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBRdWVyeSDilIDilIDilIBcblxuZXhwb3J0IGNvbnN0IEVmZm9ydCA9IHouZW51bShbXCJsb3dcIiwgXCJtZWRpdW1cIiwgXCJoaWdoXCJdKTtcbmV4cG9ydCB0eXBlIEVmZm9ydCA9IHouaW5mZXI8dHlwZW9mIEVmZm9ydD47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZFRvb2wgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGlucHV0U2NoZW1hOiB6LnVua25vd24oKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRUb29sID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sPjtcblxuLy8gT2JzZXJ2ZWQgc3RhbmRhbG9uZSBJbWFnZXMgcmVzcG9uc2UgdmFsdWVzLCBkaXN0aW5jdCBmcm9tIHJlcXVlc3RlZCBnZW5lcmF0aW9uIGhpbnRzLlxuZXhwb3J0IGNvbnN0IEltYWdlR2VuZXJhdGlvbk1ldGFkYXRhID0gei5vYmplY3Qoe1xuICByb3V0ZTogei5saXRlcmFsKFwiY29kZXgtaW1hZ2VzXCIpLFxuICBtb2RlbDogei5saXRlcmFsKFwiZ3B0LWltYWdlLTJcIiksXG4gIGJhY2tncm91bmQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcXVhbGl0eTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBzaXplOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzYWdlOiB6XG4gICAgLm9iamVjdCh7XG4gICAgICBpbnB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgIHRvdGFsX3Rva2Vuczogei5udW1iZXIoKS5ub25uZWdhdGl2ZSgpLFxuICAgICAgaW5wdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgICBjYWNoZWRfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCkub3B0aW9uYWwoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgICBvdXRwdXRfdG9rZW5zX2RldGFpbHM6IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgICAgaW1hZ2VfdG9rZW5zOiB6Lm51bWJlcigpLm5vbm5lZ2F0aXZlKCksXG4gICAgICAgICAgdGV4dF90b2tlbnM6IHoubnVtYmVyKCkubm9ubmVnYXRpdmUoKSxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbmFsKCksXG4gICAgfSlcbiAgICAub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgPSB6LmluZmVyPHR5cGVvZiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YT47XG5cbmV4cG9ydCBjb25zdCBRZ3JpZENvbnRlbnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRvb2wtY2FsbFwiKSxcbiAgICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICAgIHRvb2xOYW1lOiB6LnN0cmluZygpLFxuICAgIGlucHV0OiB6LnN0cmluZygpLFxuICB9KSxcbiAgei5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcImltYWdlXCIpLFxuICAgIC8vIEJhc2U2NCBpbWFnZSBieXRlczsgb2xkZXIgcmVzcG9uc2VzIHdpdGhvdXQgbWVkaWFUeXBlIGFyZSBQTkcuXG4gICAgZGF0YTogei5zdHJpbmcoKSxcbiAgICBtZWRpYVR5cGU6IHouZW51bShbXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9qcGVnXCIsIFwiaW1hZ2Uvd2VicFwiXSkub3B0aW9uYWwoKSxcbiAgICByZXZpc2VkUHJvbXB0OiB6LnN0cmluZygpLm51bGxpc2goKSxcbiAgICBnZW5lcmF0aW9uOiBJbWFnZUdlbmVyYXRpb25NZXRhZGF0YS5vcHRpb25hbCgpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUWdyaWRDb250ZW50ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRDb250ZW50PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJlYXNvbiA9IHouZW51bShbXCJzdG9wXCIsIFwidG9vbC1jYWxsc1wiXSk7XG5leHBvcnQgdHlwZSBGaW5pc2hSZWFzb24gPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSZWFzb24+O1xuXG5leHBvcnQgY29uc3QgVmVyYm9zaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgVmVyYm9zaXR5ID0gei5pbmZlcjx0eXBlb2YgVmVyYm9zaXR5PjtcblxuZXhwb3J0IGNvbnN0IFJlYXNvbmluZ1N1bW1hcnkgPSB6LmVudW0oW1wiYXV0b1wiLCBcImNvbmNpc2VcIiwgXCJkZXRhaWxlZFwiLCBcIm5vbmVcIl0pO1xuZXhwb3J0IHR5cGUgUmVhc29uaW5nU3VtbWFyeSA9IHouaW5mZXI8dHlwZW9mIFJlYXNvbmluZ1N1bW1hcnk+O1xuXG5leHBvcnQgY29uc3QgU2VydmljZVRpZXIgPSB6LmVudW0oW1wiZmFzdFwiLCBcImZsZXhcIl0pO1xuZXhwb3J0IHR5cGUgU2VydmljZVRpZXIgPSB6LmluZmVyPHR5cGVvZiBTZXJ2aWNlVGllcj47XG5cbmV4cG9ydCBjb25zdCBJbWFnZUdlbmVyYXRpb25RdWFsaXR5ID0gei5lbnVtKFtcImxvd1wiLCBcIm1lZGl1bVwiLCBcImhpZ2hcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblF1YWxpdHk+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouZW51bShbXCIxMDI0eDEwMjRcIiwgXCIxMDI0eDE1MzZcIiwgXCIxNTM2eDEwMjRcIl0pO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uU2l6ZSA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvblNpemU+O1xuXG5leHBvcnQgY29uc3QgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHpcbiAgLm9iamVjdCh7XG4gICAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eS5vcHRpb25hbCgpLFxuICAgIHNpemU6IEltYWdlR2VuZXJhdGlvblNpemUub3B0aW9uYWwoKSxcbiAgICBiYWNrZ3JvdW5kOiB6LmVudW0oW1wiYXV0b1wiLCBcIm9wYXF1ZVwiLCBcInRyYW5zcGFyZW50XCJdKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dEZvcm1hdDogei5lbnVtKFtcInBuZ1wiLCBcImpwZWdcIiwgXCJ3ZWJwXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAucmVmaW5lKFxuICAgIChvcHRpb25zKSA9PlxuICAgICAgb3B0aW9ucy5iYWNrZ3JvdW5kICE9PSBcInRyYW5zcGFyZW50XCIgfHxcbiAgICAgICFvcHRpb25zLm91dHB1dEZvcm1hdCB8fFxuICAgICAgb3B0aW9ucy5vdXRwdXRGb3JtYXQgPT09IFwicG5nXCIsXG4gICAgeyBtZXNzYWdlOiBcIlRyYW5zcGFyZW50IGltYWdlIGdlbmVyYXRpb24gb25seSBzdXBwb3J0cyBQTkcgb3V0cHV0XCIsIHBhdGg6IFtcIm91dHB1dEZvcm1hdFwiXSB9LFxuICApO1xuZXhwb3J0IHR5cGUgSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIEltYWdlR2VuZXJhdGlvbk9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgUWdyaWRJbnB1dFBhcnQgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICB6Lm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwidGV4dFwiKSxcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICAgIHRleHRfZWxlbWVudHM6IHouYXJyYXkoei5uZXZlcigpKS5kZWZhdWx0KFtdKSxcbiAgfSksXG4gIHoub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJpbWFnZVwiKSxcbiAgICB1cmw6IHouc3RyaW5nKCksXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBRZ3JpZElucHV0UGFydCA9IHouaW5mZXI8dHlwZW9mIFFncmlkSW5wdXRQYXJ0PjtcblxuZXhwb3J0IGNvbnN0IE1BWF9RVUVSWV9USU1FT1VUX01TID0gMzAgKiA2MF8wMDA7XG5leHBvcnQgY29uc3QgUXVlcnlUaW1lb3V0TXMgPSB6Lm51bWJlcigpLmludCgpLnBvc2l0aXZlKCkubWF4KE1BWF9RVUVSWV9USU1FT1VUX01TKTtcblxuLy8g4pSA4pSA4pSAIFJ1biBMaWZlY3ljbGUgQ29udGV4dCAoU0RLIOKGlCBTZXJ2ZXIgY29udHJhY3QpIOKUgOKUgOKUgFxuXG4vLyBPcGVuQUkgY2FjaGUgYWZmaW5pdHkg7KKM7ZGcKOq1rCBjb2RleCB0aHJlYWQg7KKM7ZGcKS4gcHJvbXB0X2NhY2hlX2tleSDrpbwg6rOg7KCV7ZW0XG4vLyBPcGVuQUkgcHJvbXB0IGNhY2hpbmcg7J2EIOyCtOumrOq4sCDsnITtlZwg7ZW465OkLiDshJzrsoTqsIAg67Cc6riJ7ZWY6rOgIO2BtOudvOqwgCDri6TsnYwg7JqU7LKt7JeQIOq3uOuMgOuhnCDtmozshqHtlZzri6QuXG4vLyDtlbjrk6Qg66+47KCE7IahIOyLnCDquLDsobQgXCLrp6QgdHVybiDsg4ggdGhyZWFkICsgaGlzdG9yeSBpbmplY3RcIiDrj5nsnpHsnLzroZwg7Y+067CxKFFncmlkUnVuQ29udGV4dCDssLjsobApLlxuZXhwb3J0IGNvbnN0IFFncmlkVGhyZWFkQ29vcmQgPSB6Lm9iamVjdCh7XG4gIHdvcmtlcklkOiB6Lm51bWJlcigpLCAvLyDqs6DsoJUg65287Jqw7YyFICh0aHJlYWQg64qUIHdvcmtlciDtlITroZzshLjsiqQg66mU66qo66as7JeQ66eMIOyhtOyerClcbiAgdGhyZWFkSWQ6IHouc3RyaW5nKCksIC8vIG9wYXF1ZSBjYWNoZSBhZmZpbml0eSBrZXkgPSBwcm9tcHRfY2FjaGVfa2V5XG4gIGVwb2NoOiB6Lm51bWJlcigpLCAvLyB3b3JrZXIgc3Bhd24g7Lm07Jq07YSwLiByZXN0YXJ0IOuhnCB0aHJlYWQg7Kad67CcIOqwkOyngFxuICBzeXN0ZW1IYXNoOiB6LnN0cmluZygpLCAvLyBzeXN0ZW1fcHJvbXB0IO2VtOyLnC4g64uk66W4IOuMgO2ZlCDsmKTsoJHsho0g67Cp7KeAXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVGhyZWFkQ29vcmQgPSB6LmluZmVyPHR5cGVvZiBRZ3JpZFRocmVhZENvb3JkPjtcblxuZXhwb3J0IGNvbnN0IFFncmlkUnVuQ29udGV4dCA9IHoub2JqZWN0KHtcbiAgLy8gdG9vbC1jYWxsIHJ1buydhCDqs4Tsho3tlaAg65WM66eMIOuwnOq4iS4g7J2867CYIOuMgO2ZlOuKlCB0aHJlYWRDb29yZCDrp4wg7JmV67O1LlxuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdGhyZWFkQ29vcmQ6IFFncmlkVGhyZWFkQ29vcmQub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUWdyaWRSdW5Db250ZXh0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRSdW5Db250ZXh0PjtcblxuZXhwb3J0IGNvbnN0IFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5vYmplY3Qoe1xuICB0b29sQ2FsbElkOiB6LnN0cmluZygpLFxuICB0b29sTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBvdXRwdXQ6IHouc3RyaW5nKCksXG4gIGlzRXJyb3I6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0ID0gei5pbmZlcjx0eXBlb2YgUWdyaWRUb29sUmVzdWx0SW5wdXQ+O1xuXG5leHBvcnQgY29uc3QgUXVlcnlJbnB1dCA9IHoubG9vc2VPYmplY3Qoe1xuICBzeXN0ZW06IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvbXB0OiB6LnN0cmluZygpLFxuICBpbnB1dDogei5hcnJheShRZ3JpZElucHV0UGFydCkub3B0aW9uYWwoKSxcbiAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGltZW91dDogUXVlcnlUaW1lb3V0TXMub3B0aW9uYWwoKSxcbiAganNvblNjaGVtYTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0b29sczogei5hcnJheShRZ3JpZFRvb2wpLm9wdGlvbmFsKCksXG4gIGVmZm9ydDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2ZXJib3NpdHk6IFZlcmJvc2l0eS5vcHRpb25hbCgpLFxuICByZWFzb25pbmdTdW1tYXJ5OiBSZWFzb25pbmdTdW1tYXJ5Lm9wdGlvbmFsKCksXG4gIHNlcnZpY2VUaWVyOiBTZXJ2aWNlVGllci5vcHRpb25hbCgpLFxuICBoaXN0b3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2plY3ROYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIC8vIHJhdy9kYXNoYm9hcmTsmYAg6rO16rCcIEFJIFNESyBwcm92aWRlck9wdGlvbnMucWdyaWQudG9rZW5OYW1l7J20IOqzteycoO2VmOuKlCDsp4DsoJUg7KO87IaMLlxuICB0b2tlbk5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgLy8gU0RLLWRlcml2ZWQgb3BhcXVlIGFmZmluaXR5LiBJdCBpcyBpbnRlbnRpb25hbGx5IGRpc3RpbmN0IGZyb20gdGhlIGNhbGxlcidzIHNlc3Npb25LZXkuXG4gIGNhY2hlQWZmaW5pdHlLZXk6IHpcbiAgICAuc3RyaW5nKClcbiAgICAucmVnZXgoL15bMC05YS1mXXs2NH0kLylcbiAgICAub3B0aW9uYWwoKSxcbiAgLy8g7IOd65617ZWY66m0IOuhnOq5he2VnOuLpC4gZmFsc2XripQgcmVxdWVzdCBsb2cg7JOw6riw66eMIOuBhOqzoCBkaXNwYXRjaC90aHJlYWTripQg7Jyg7KeA7ZWc64ukLlxuICBsb2dnZXI6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHJ1bkNvbnRleHQ6IFFncmlkUnVuQ29udGV4dC5vcHRpb25hbCgpLFxuICB0b29sUmVzdWx0czogei5hcnJheShRZ3JpZFRvb2xSZXN1bHRJbnB1dCkub3B0aW9uYWwoKSxcbiAgLy8gT3BlbkFJIG9ubHksIG5vbi1zdHJlYW06IHRydWUgcmVxdWlyZXMgYW4gaW1hZ2U7IGF1dG8gcGVybWl0cyB0ZXh0IG9yIG5hdGl2ZSBpbWFnZSB0b29scy5cbiAgaW1hZ2VHZW5lcmF0aW9uOiB6LnVuaW9uKFt6LmJvb2xlYW4oKSwgei5saXRlcmFsKFwiYXV0b1wiKV0pLm9wdGlvbmFsKCksXG4gIC8vIHFncmlkIOqwgOqyqSDstpTsoJUg67CPIENvZGV4IOydtOuvuOyngCDsmpTssq0g7Z6M7Yq4LiDsnbTrr7jsp4Ag66qo64247J2AIGdwdC1pbWFnZS0yIOuhnCDqs6DsoJUg6rCA7KCV7ZWc64ukLlxuICBpbWFnZUdlbmVyYXRpb25PcHRpb25zOiBJbWFnZUdlbmVyYXRpb25PcHRpb25zLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIFF1ZXJ5SW5wdXQgPSB6LmluZmVyPHR5cGVvZiBRdWVyeUlucHV0PjtcblxuZXhwb3J0IGNvbnN0IE1vZGVsRmFsbGJhY2sgPSB6Lm9iamVjdCh7XG4gIHRyaWdnZXI6IHoubGl0ZXJhbChcInJlZnVzYWxcIiksXG4gIGZyb21Nb2RlbDogei5zdHJpbmcoKSxcbiAgdG9Nb2RlbDogei5zdHJpbmcoKSxcbiAgY2F0ZWdvcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZXhwbGFuYXRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgTW9kZWxGYWxsYmFjayA9IHouaW5mZXI8dHlwZW9mIE1vZGVsRmFsbGJhY2s+O1xuXG5leHBvcnQgY29uc3QgQ29zdFNvdXJjZSA9IHouZW51bShbXCJwcm92aWRlclwiLCBcInByaWNpbmdfdGFibGVcIiwgXCJtaXhlZFwiXSk7XG5leHBvcnQgdHlwZSBDb3N0U291cmNlID0gei5pbmZlcjx0eXBlb2YgQ29zdFNvdXJjZT47XG5cbmV4cG9ydCBjb25zdCBRdWVyeU91dHB1dCA9IHoub2JqZWN0KHtcbiAgdGV4dDogei5zdHJpbmcoKSxcbiAgY29udGVudDogei5hcnJheShRZ3JpZENvbnRlbnQpLFxuICBmaW5pc2hSZWFzb246IEZpbmlzaFJlYXNvbixcbiAgdG9rZW5OYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlcXVlc3RlZE1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1vZGVsRmFsbGJhY2tzOiB6LmFycmF5KE1vZGVsRmFsbGJhY2spLm9wdGlvbmFsKCksXG4gIHVzYWdlOiB6Lm9iamVjdCh7XG4gICAgaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgIG91dHB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgcmVhc29uaW5nX3Rva2Vuczogei5udW1iZXIoKSxcbiAgICBjYWNoZV9jcmVhdGlvbl9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgY2FjaGVfY3JlYXRpb25fNW1faW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgY2FjaGVfY3JlYXRpb25fMWhfaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgY2FjaGVfcmVhZF9pbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gIH0pLFxuICBkdXJhdGlvbk1zOiB6Lm51bWJlcigpLFxuICB0dGZ0TXM6IHoubnVtYmVyKCksXG4gIGNvc3RVc2Q6IHoubnVtYmVyKCksXG4gIGNvc3RTb3VyY2U6IENvc3RTb3VyY2UsXG4gIHJ1bkNvbnRleHQ6IFFncmlkUnVuQ29udGV4dC5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBRdWVyeU91dHB1dCA9IHouaW5mZXI8dHlwZW9mIFF1ZXJ5T3V0cHV0PjtcblxuLy8g4pSA4pSA4pSAIFN0cmVhbSBFdmVudHMg4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBTdHJlYW1FdmVudHMgPSB6Lm9iamVjdCh7XG4gIGRlbHRhOiB6Lm9iamVjdCh7IHRleHQ6IHouc3RyaW5nKCkgfSksXG4gIHRvb2xDYWxsOiB6Lm9iamVjdCh7XG4gICAgdG9vbENhbGxJZDogei5zdHJpbmcoKSxcbiAgICB0b29sTmFtZTogei5zdHJpbmcoKSxcbiAgICBpbnB1dDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGRvbmU6IHoub2JqZWN0KHtcbiAgICB0ZXh0OiB6LnN0cmluZygpLFxuICAgIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgcmVxdWVzdGVkTW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBtb2RlbEZhbGxiYWNrczogei5hcnJheShNb2RlbEZhbGxiYWNrKS5vcHRpb25hbCgpLFxuICAgIHRva2VuTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGZpbmlzaFJlYXNvbjogRmluaXNoUmVhc29uLFxuICAgIHVzYWdlOiB6Lm9iamVjdCh7XG4gICAgICBpbnB1dF90b2tlbnM6IHoubnVtYmVyKCksXG4gICAgICBvdXRwdXRfdG9rZW5zOiB6Lm51bWJlcigpLFxuICAgICAgcmVhc29uaW5nX3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICAgIGNhY2hlX2NyZWF0aW9uXzVtX2lucHV0X3Rva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgICAgY2FjaGVfY3JlYXRpb25fMWhfaW5wdXRfdG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgICBjYWNoZV9yZWFkX2lucHV0X3Rva2Vuczogei5udW1iZXIoKSxcbiAgICB9KSxcbiAgICBkdXJhdGlvbk1zOiB6Lm51bWJlcigpLFxuICAgIHR0ZnRNczogei5udW1iZXIoKSxcbiAgICBjb3N0VXNkOiB6Lm51bWJlcigpLFxuICAgIGNvc3RTb3VyY2U6IENvc3RTb3VyY2UsXG4gICAgY29udGVudDogei5hcnJheShRZ3JpZENvbnRlbnQpLFxuICAgIHJ1bkNvbnRleHQ6IFFncmlkUnVuQ29udGV4dC5vcHRpb25hbCgpLFxuICB9KSxcbiAgZXJyb3I6IHoub2JqZWN0KHsgbWVzc2FnZTogei5zdHJpbmcoKSB9KSxcbn0pO1xuZXhwb3J0IHR5cGUgU3RyZWFtRXZlbnRzID0gei5pbmZlcjx0eXBlb2YgU3RyZWFtRXZlbnRzPjtcblxuLy8g4pSA4pSA4pSAIFJ1biBMaWZlY3ljbGUg4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBDcmVhdGVSdW5JbnB1dCA9IHoub2JqZWN0KHtcbiAgdXNlclByb21wdDogei5zdHJpbmcoKSxcbiAgc3lzdGVtUHJvbXB0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlZmZvcnQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcHJvamVjdE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaGlzdG9yeTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpc1N0cnVjdHVyZWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGpzb25TY2hlbWE6IHouc3RyaW5nKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBDcmVhdGVSdW5JbnB1dCA9IHouaW5mZXI8dHlwZW9mIENyZWF0ZVJ1bklucHV0PjtcblxuZXhwb3J0IGNvbnN0IEFwcGVuZFN0ZXBJbnB1dCA9IHoub2JqZWN0KHtcbiAgcmVxdWVzdExvZ0lkOiB6Lm51bWJlcigpLFxuICBzdGVwSW5kZXg6IHoubnVtYmVyKCksXG4gIHR5cGU6IHouZW51bShbXCJnZW5lcmF0ZVwiLCBcInRvb2xfY2FsbFwiXSksXG4gIG1vZGVsTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXF1ZXN0ZWRNb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZmFsbGJhY2tDb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBpbnB1dFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBvdXRwdXRUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY2FjaGVSZWFkVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlQ3JlYXRpb25Ub2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY2FjaGVDcmVhdGlvbjVtVG9rZW5zOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNhY2hlQ3JlYXRpb24xaFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0VXNkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGNvc3RTb3VyY2U6IENvc3RTb3VyY2Uub3B0aW9uYWwoKSxcbiAgZHVyYXRpb25Nczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0dGZ0TXM6IHoubnVtYmVyKCkubnVsbGFibGUoKS5vcHRpb25hbCgpLFxuICBmaW5pc2hSZWFzb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVhc29uaW5nVGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZWFzb25pbmdUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG9vbENhbGxJbmRleDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b29sQ2FsbElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xBcmdzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRvb2xSZXN1bHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdG9vbER1cmF0aW9uTXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgQXBwZW5kU3RlcElucHV0ID0gei5pbmZlcjx0eXBlb2YgQXBwZW5kU3RlcElucHV0PjtcblxuZXhwb3J0IGNvbnN0IEZpbmlzaFJ1bklucHV0ID0gei5vYmplY3Qoe1xuICByZXF1ZXN0TG9nSWQ6IHoubnVtYmVyKCksXG4gIHN0YXR1czogei5lbnVtKFtcInN1Y2NlZWRlZFwiLCBcImVycm9yXCIsIFwiYWJvcnRlZFwiXSksXG4gIHJlc3BvbnNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRva2VuTmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RlbE5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcmVxdWVzdGVkTW9kZWxOYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZhbGxiYWNrQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxJbnB1dFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3RhbE91dHB1dFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3RhbENhY2hlUmVhZFRva2Vuczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB0b3RhbENhY2hlQ3JlYXRpb25Ub2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZUNyZWF0aW9uNW1Ub2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdG90YWxDYWNoZUNyZWF0aW9uMWhUb2tlbnM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgY29zdFVzZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBjb3N0U291cmNlOiBDb3N0U291cmNlLm9wdGlvbmFsKCksXG4gIHRvdGFsRHVyYXRpb25Nczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBoaXN0b3J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGVycm9yTWVzc2FnZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICByZXNwb25zZUpzb25Pazogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IHR5cGUgRmluaXNoUnVuSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBGaW5pc2hSdW5JbnB1dD47XG5cbi8vIOKUgOKUgOKUgCBUb2tlbiBNYW5hZ2VtZW50IOKUgOKUgOKUgFxuXG5leHBvcnQgY29uc3QgVG9rZW5TdGF0cyA9IHoub2JqZWN0KHtcbiAgdG9rZW46IHouc3RyaW5nKCksXG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIHByb3ZpZGVyOiB6LnN0cmluZygpLFxuICByZXF1ZXN0czogei5udW1iZXIoKSxcbn0pO1xuZXhwb3J0IHR5cGUgVG9rZW5TdGF0cyA9IHouaW5mZXI8dHlwZW9mIFRva2VuU3RhdHM+O1xuXG4vLyDilIDilIDilIAgT0F1dGgg4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBPQXV0aFN0YXJ0UmVzdWx0ID0gei5vYmplY3Qoe1xuICBhdXRoVXJsOiB6LnN0cmluZygpLFxuICAvLyByZWRpcmVjdDog67iM65287Jqw7KCAIOyekOuPmSDrs7Xqt4Ao66Oo7ZSE67CxIOygkeyGjSkuIGNvZGU6IOy9mOyGlCDsvZzrsLEgKyDsvZTrk5wg67aZ7Jes64Sj6riwKOybkOqyqSDsoJHsho0pLlxuICAvLyBPcGVuQUkg7JuQ6rKpIOqyveuhnOuKlCDrk7HroZ3rkJwgbG9vcGJhY2sgY2FsbGJhY2sgVVJMIOyghOyytOulvCDrtpnsl6zrhKPripQgY29kZSDrqqjrk5zrpbwg7JO064ukLlxuICBtb2RlOiB6LmVudW0oW1wicmVkaXJlY3RcIiwgXCJjb2RlXCJdKSxcbn0pO1xuZXhwb3J0IHR5cGUgT0F1dGhTdGFydFJlc3VsdCA9IHouaW5mZXI8dHlwZW9mIE9BdXRoU3RhcnRSZXN1bHQ+O1xuXG5jb25zdCBSYXRlV2luZG93ID0gelxuICAub2JqZWN0KHtcbiAgICB1dGlsaXphdGlvbjogei5udW1iZXIoKS5udWxsYWJsZSgpLFxuICAgIHJlc2V0c0F0OiB6LnN0cmluZygpLm51bGxhYmxlKCksXG4gICAgd2luZG93RHVyYXRpb25NaW5zOiB6Lm51bWJlcigpLm51bGxhYmxlKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLm51bGxhYmxlKCk7XG5cbmV4cG9ydCBjb25zdCBVc2FnZVJlc3BvbnNlID0gei5vYmplY3Qoe1xuICBlcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcm92aWRlcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmaXZlSG91cjogUmF0ZVdpbmRvdy5vcHRpb25hbCgpLFxuICBzZXZlbkRheTogUmF0ZVdpbmRvdy5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBVc2FnZVJlc3BvbnNlID0gei5pbmZlcjx0eXBlb2YgVXNhZ2VSZXNwb25zZT47XG5cbi8vIOKUgOKUgOKUgCBIZWFsdGgg4pSA4pSA4pSAXG5cbmV4cG9ydCBjb25zdCBTdWJzY3JpYmVyU3RhdHVzID0gei5vYmplY3Qoe1xuICBjb25uZWN0ZWQ6IHouYm9vbGVhbigpLFxuICBjb25uZWN0ZWRBdDogei5kYXRlKCkubnVsbGFibGUoKSxcbiAgbGFzdFJlY29uY2lsZUF0OiB6LmRhdGUoKS5udWxsYWJsZSgpLFxuICBhdHRlbXB0OiB6Lm51bWJlcigpLFxufSk7XG5leHBvcnQgdHlwZSBTdWJzY3JpYmVyU3RhdHVzID0gei5pbmZlcjx0eXBlb2YgU3Vic2NyaWJlclN0YXR1cz47XG5cbmV4cG9ydCBjb25zdCBQcm92aWRlclN0YXJ0dXBTdGF0ZSA9IHouZW51bShbXCJzdGFydGluZ1wiLCBcInJlYWR5XCIsIFwiZmFpbGVkXCJdKTtcbmV4cG9ydCB0eXBlIFByb3ZpZGVyU3RhcnR1cFN0YXRlID0gei5pbmZlcjx0eXBlb2YgUHJvdmlkZXJTdGFydHVwU3RhdGU+O1xuXG5leHBvcnQgY29uc3QgSGVhbHRoUmVzcG9uc2UgPSB6Lm9iamVjdCh7XG4gIHN0YXR1czogei5zdHJpbmcoKSxcbiAgYWN0aXZlVG9rZW5zOiB6Lm51bWJlcigpLFxuICBzdWJzY3JpYmVyOiBTdWJzY3JpYmVyU3RhdHVzLm51bGxhYmxlKCksXG4gIC8vIEhUVFAg66as7Iqk64ud7J2AIGRpc3BhdGNoZXIg6riw64+Z67O064ukIOuovOyggCDsl7TrprDri6QuIDIwMCDsnZHri7Xrp4zsnLzroZzripQg7JqU7LKt7J2EIOyymOumrO2VoCDsiJhcbiAgLy8g7J6I64qU7KeAIOyVjCDsiJgg7JeG7Ja0IHByb3ZpZGVyIOuzhCDspIDruYQg7IOB7YOc66W8IO2VqOq7mCDrhbjstpztlZzri6QuXG4gIHJlYWR5OiB6LmJvb2xlYW4oKSxcbiAgcHJvdmlkZXJzOiB6Lm9iamVjdCh7XG4gICAgb3BlbmFpOiBQcm92aWRlclN0YXJ0dXBTdGF0ZSxcbiAgICBhbnRocm9waWM6IFByb3ZpZGVyU3RhcnR1cFN0YXRlLFxuICB9KSxcbn0pO1xuZXhwb3J0IHR5cGUgSGVhbHRoUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBIZWFsdGhSZXNwb25zZT47XG5cbi8vIOKUgOKUgOKUgCBFcnJvcnMg4pSA4pSA4pSAXG5cbmV4cG9ydCBjbGFzcyBRdW90YUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBjb2RlID0gXCJRVU9UQV9FWEhBVVNURURcIiBhcyBjb25zdDtcbn1cbmV4cG9ydCBjbGFzcyBRdW90YVRocmVzaG9sZEV4Y2VlZGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGUgPSBcIlFVT1RBX1RIUkVTSE9MRF9FWENFRURFRFwiIGFzIGNvbnN0O1xufVxuZXhwb3J0IGNsYXNzIFRpbWVvdXRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiVElNRU9VVFwiIGFzIGNvbnN0O1xufVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmVhZG9ubHkgY29kZSA9IFwiUFJPQ0VTU19FUlJPUlwiIGFzIGNvbnN0O1xufVxuXG4vLyDilIDilIDilIAgVXRpbHMg4pSA4pSA4pSAXG5cbmV4cG9ydCBmdW5jdGlvbiBtYXNrVG9rZW4odG9rZW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0b2tlbi5sZW5ndGggPiA0ID8gYC4uLiR7dG9rZW4uc2xpY2UoLTQpfWAgOiB0b2tlbjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFhLFNBQVMsRUFBRSxLQUFLO0NBQUM7Q0FBTztDQUFVO0FBQU0sQ0FBQztBQUd0RCxNQUFhLFlBQVksRUFBRSxPQUFPO0NBQ2hDLE1BQU0sRUFBRSxPQUFPO0NBQ2YsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7Q0FDakMsYUFBYSxFQUFFLFFBQVE7QUFDekIsQ0FBQztBQUlELE1BQWEsMEJBQTBCLEVBQUUsT0FBTztDQUM5QyxPQUFPLEVBQUUsUUFBUSxjQUFjO0NBQy9CLE9BQU8sRUFBRSxRQUFRLGFBQWE7Q0FDOUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7Q0FDaEMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7Q0FDN0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7Q0FDMUIsT0FBTyxFQUNKLE9BQU87RUFDTixjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtFQUNyQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtFQUN0QyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsWUFBWTtFQUNyQyxzQkFBc0IsRUFDbkIsT0FBTztHQUNOLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQyxZQUFZO0dBQ3JDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxZQUFZO0dBQ3BDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTO0VBQ25ELENBQUMsQ0FB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
|