@cdktn/cli-core 0.24.0-pre.56 → 0.24.0-pre.57

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.
@@ -82,6 +82,11 @@ export type DeployState = {
82
82
  value: "stopped";
83
83
  context: DeployContext;
84
84
  };
85
+ /**
86
+ * Returns true if any line in the given (ANSI-stripped) output is terraform's
87
+ * interactive prompt for a missing variable.
88
+ */
89
+ export declare function isMissingVariablePrompt(noColorLine: string): boolean;
85
90
  export declare function extractVariableNameFromPrompt(line: string): string;
86
91
  interface BufferedReceiverFunction {
87
92
  (output: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-machine.d.ts","sourceRoot":"","sources":["../../../src/lib/models/deploy-machine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-machine.d.ts","sourceRoot":"","sources":["../../../src/lib/models/deploy-machine.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
8
  };
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.createAndStartDestroyService = exports.createAndStartDeployService = exports.terraformPtyService = exports.deployMachine = exports.handleLineReceived = exports.bufferUnterminatedLines = exports.extractVariableNameFromPrompt = exports.isDeployEvent = void 0;
10
+ exports.createAndStartDestroyService = exports.createAndStartDeployService = exports.terraformPtyService = exports.deployMachine = exports.handleLineReceived = exports.bufferUnterminatedLines = exports.extractVariableNameFromPrompt = exports.isMissingVariablePrompt = exports.isDeployEvent = void 0;
11
11
  const xstate_1 = require("xstate");
12
12
  const commons_1 = require("@cdktn/commons");
13
13
  const errors_1 = require("../errors");
@@ -18,14 +18,40 @@ function isDeployEvent(event, type) {
18
18
  return event.type === type;
19
19
  }
20
20
  exports.isDeployEvent = isDeployEvent;
21
+ /**
22
+ * Terraform's interactive prompt for a missing variable looks like:
23
+ *
24
+ * var.<name>
25
+ * Enter a value:
26
+ *
27
+ * The variable name appears on its own line, prefixed with "var." (optionally
28
+ * indented). We match this precisely so we don't mistake terraform error output
29
+ * that merely references a variable (e.g. "92: mirror = var.mirror" from an
30
+ * "Unsupported argument" error) for an actual prompt. Terraform variable names
31
+ * start with a letter or underscore and may contain letters, digits,
32
+ * underscores and dashes. (#265)
33
+ */
34
+ const VARIABLE_PROMPT_REGEX = /^\s*var\.([A-Za-z_][A-Za-z0-9_-]*)\s*$/;
35
+ /**
36
+ * Returns true if any line in the given (ANSI-stripped) output is terraform's
37
+ * interactive prompt for a missing variable.
38
+ */
39
+ function isMissingVariablePrompt(noColorLine) {
40
+ return noColorLine
41
+ .split("\n")
42
+ .some((line) => VARIABLE_PROMPT_REGEX.test(line));
43
+ }
44
+ exports.isMissingVariablePrompt = isMissingVariablePrompt;
21
45
  function extractVariableNameFromPrompt(line) {
22
46
  const noColorLine = (0, strip_ansi_1.default)(line);
23
47
  const lines = noColorLine.split("\n");
24
- const lineWithVar = lines.find((line) => line.includes("var."));
25
- if (!lineWithVar) {
48
+ const match = lines
49
+ .map((l) => l.match(VARIABLE_PROMPT_REGEX))
50
+ .find((m) => m !== null);
51
+ if (!match) {
26
52
  throw commons_1.Errors.Internal(`Could not find variable name in prompt: ${line}. This is most likely a bug in cdktn. Please report it at http://cdktn.io/issues`);
27
53
  }
28
- return lineWithVar.split("var.")[1].trim();
54
+ return match[1];
29
55
  }
30
56
  exports.extractVariableNameFromPrompt = extractVariableNameFromPrompt;
31
57
  // used to only send completed lines (= with a newline at the end of them) to our logic (#2827)
@@ -63,7 +89,7 @@ function handleLineReceived(send) {
63
89
  send({ type: "OUTPUT_RECEIVED", output });
64
90
  send({ type: "REQUEST_APPROVAL" });
65
91
  }
66
- else if (noColorLine.includes("var.")) {
92
+ else if (isMissingVariablePrompt(noColorLine)) {
67
93
  hideOutput = true;
68
94
  const variableName = extractVariableNameFromPrompt(output);
69
95
  send({
@@ -280,4 +306,4 @@ function createAndStartDestroyService(options) {
280
306
  return service;
281
307
  }
282
308
  exports.createAndStartDestroyService = createAndStartDestroyService;
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21vZGVscy9kZXBsb3ktbWFjaGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7QUFFSCxtQ0FRZ0I7QUFDaEIsNENBQWdEO0FBQ2hELHNDQUE0QztBQUM1Qyw0REFBbUM7QUFDbkMsMkJBQXlCO0FBQ3pCLCtEQUcrQjtBQTRCL0IsU0FBZ0IsYUFBYSxDQUMzQixLQUFrQixFQUNsQixJQUFxQjtJQUVyQixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO0FBQzdCLENBQUM7QUFMRCxzQ0FLQztBQWdDRCxTQUFnQiw2QkFBNkIsQ0FBQyxJQUFZO0lBQ3hELE1BQU0sV0FBVyxHQUFHLElBQUEsb0JBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakIsTUFBTSxnQkFBTSxDQUFDLFFBQVEsQ0FDbkIsMkNBQTJDLElBQUksa0ZBQWtGLENBQ2xJLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdDLENBQUM7QUFWRCxzRUFVQztBQVdELCtGQUErRjtBQUMvRixTQUFnQix1QkFBdUIsQ0FDckMsT0FBaUM7SUFFakMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFNBQVMsd0JBQXdCLENBQUMsTUFBYztRQUM5QyxNQUFNLElBQUksTUFB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Q0osT0FBTyxFQUFFO1lBQ1AsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3BCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBZ0MsRUFBRSwwREFBMEQ7U0FDMUc7S0FDRixDQUFDO0lBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFN0MsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQWxERCxvRUFrREMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZU1hY2hpbmUsXG4gIHNlbmQsXG4gIGludGVycHJldCxcbiAgRXZlbnRPYmplY3QsXG4gIGFzc2lnbixcbiAgU2VuZGVyLFxuICBSZWNlaXZlcixcbn0gZnJvbSBcInhzdGF0ZVwiO1xuaW1wb3J0IHsgRXJyb3JzLCBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IG1pc3NpbmdWYXJpYWJsZSB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSBcInN0cmlwLWFuc2lcIjtcbmltcG9ydCB7IEVPTCB9IGZyb20gXCJvc1wiO1xuaW1wb3J0IHtcbiAgc3Bhd25JbnRlcmFjdGl2ZSxcbiAgSW50ZXJhY3RpdmVTcGF3bkNvbmZpZyxcbn0gZnJvbSBcIi4vaW50ZXJhY3RpdmUtcHJvY2Vzc1wiO1xuXG5pbnRlcmZhY2UgRGVwbG95Q29udGV4dCB7XG4gIGV4aXRDb2RlPzogbnVtYmVyO1xuICAvKipcbiAgICogVGVycmFmb3JtIHdpbGwgZXhpdCB3aXRoIDEgaWYgaXQgd2FzIGNhbmNlbGxlZCwgYnV0IHdlIGRvbid0IHdhbnQgdG8gZmFpbCBpbiB0aGF0IGNhc2VcbiAgICovXG4gIGNhbmNlbGxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERlcGxveUV2ZW50ID1cbiAgfCB7IHR5cGU6IFwiU1RBUlRcIjsgcHR5OiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnIH1cbiAgfCB7IHR5cGU6IFwiU1RPUFwiIH1cbiAgfCB7IHR5cGU6IFwiU0VORF9MSU5FXCI7IGlucHV0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIjsgb3V0cHV0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIgfSAvLyBlLmcuIHZpYSBURkMgVUkgb3IgQVBJXG4gIHwgeyB0eXBlOiBcIlJFSkVDVEVEX0VYVEVSTkFMTFlcIiB9XG4gIHwgeyB0eXBlOiBcIk9WRVJSSURERU5fRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJREVcIiB9XG4gIHwgeyB0eXBlOiBcIlJFSkVDVF9PVkVSUklERVwiIH1cbiAgfCB7IHR5cGU6IFwiUkVRVUVTVF9BUFBST1ZBTFwiIH1cbiAgfCB7IHR5cGU6IFwiVkFSSUFCTEVfTUlTU0lOR1wiOyB2YXJpYWJsZU5hbWU6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcIlJFUVVFU1RfU0VOVElORUxfT1ZFUlJJREVcIiB9XG4gIHwgeyB0eXBlOiBcIkFQUFJPVkVcIiB9XG4gIHwgeyB0eXBlOiBcIlJFSkVDVFwiIH1cbiAgfCB7IHR5cGU6IFwiRVhJVEVEXCI7IGV4aXRDb2RlOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVwbG95RXZlbnQ8RGVwbG95RXZlbnRUeXBlIGV4dGVuZHMgRGVwbG95RXZlbnRbXCJ0eXBlXCJdPihcbiAgZXZlbnQ6IEV2ZW50T2JqZWN0LFxuICB0eXBlOiBEZXBsb3lFdmVudFR5cGUsXG4pOiBldmVudCBpcyBEZXBsb3lFdmVudCAmIHsgdHlwZTogRGVwbG95RXZlbnRUeXBlIH0ge1xuICByZXR1cm4gZXZlbnQudHlwZSA9PT0gdHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgRGVwbG95U3RhdGUgPVxuICB8IHtcbiAgICAgIHZhbHVlOiBcImlkbGVcIjtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiBcInJ1bm5pbmdcIjtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiB7IHJ1bm5pbmc6IFwicHJvY2Vzc2luZ1wiIH07XG4gICAgICBjb250ZXh0OiBEZXBsb3lDb250ZXh0O1xuICAgIH1cbiAgfCB7XG4gICAgICB2YWx1ZTogeyBydW5uaW5nOiBcImF3YWl0aW5nX2FwcHJvdmFsXCIgfTtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiB7IHJ1bm5pbmc6IFwiYXdhaXRpbmdfc2VudGluZWxfb3ZlcnJpZGVcIiB9O1xuICAgICAgY29udGV4dDogRGVwbG95Q29udGV4dDtcbiAgICB9XG4gIHwge1xuICAgICAgdmFsdWU6IFwiZXhpdGVkXCI7XG4gICAgICBjb250ZXh0OiBEZXBsb3lDb250ZXh0ICYgeyBleGl0Q29kZTogbnVtYmVyIH07XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiBcInN0b3BwZWRcIjtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RWYXJpYWJsZU5hbWVGcm9tUHJvbXB0KGxpbmU6IHN0cmluZykge1xuICBjb25zdCBub0NvbG9yTGluZSA9IHN0cmlwQW5zaShsaW5lKTtcbiAgY29uc3QgbGluZXMgPSBub0NvbG9yTGluZS5zcGxpdChcIlxcblwiKTtcbiAgY29uc3QgbGluZVdpdGhWYXIgPSBsaW5lcy5maW5kKChsaW5lKSA9PiBsaW5lLmluY2x1ZGVzKFwidmFyLlwiKSk7XG4gIGlmICghbGluZVdpdGhWYXIpIHtcbiAgICB0aHJvdyBFcnJvcnMuSW50ZXJuYWwoXG4gICAgICBgQ291bGQgbm90IGZpbmQgdmFyaWFibGUgbmFtZSBpbiBwcm9tcHQ6ICR7bGluZX0uIFRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gY2RrdG4uIFBsZWFzZSByZXBvcnQgaXQgYXQgaHR0cDovL2Nka3RuLmlvL2lzc3Vlc2AsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbGluZVdpdGhWYXIuc3BsaXQoXCJ2YXIuXCIpWzFdLnRyaW0oKTtcbn1cblxuaW50ZXJmYWNlIEJ1ZmZlcmVkUmVjZWl2ZXJGdW5jdGlvbiB7XG4gIChvdXRwdXQ6IHN0cmluZyk6IHZvaWQ7XG4gIC8qKlxuICAgKiB1c2VkIHRvIGdldCB0aGUgbGFzdCBidWZmZXIgd2hlbiB0aGUgUFRZIGV4aXRzIHRvIGxvZyBhIGRlYnVnIG1lc3NhZ2UgaWYgdGhlcmUncyBvdXRwdXQgbGVmdCBpbiB0aGVyZVxuICAgKiAobWlnaHQgaGVscCBkZWJ1Z2dpbmcgb24gV2luZG93cyBpZiBFT0wgZnJvbSBOb2RlanMgZG9lc24ndCB3b3JrIGluIFdTTClcbiAgICovXG4gIGdldEJ1ZmZlcjogKCkgPT4gc3RyaW5nO1xufVxuXG4vLyB1c2VkIHRvIG9ubHkgc2VuZCBjb21wbGV0ZWQgbGluZXMgKD0gd2l0aCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGVtKSB0byBvdXIgbG9naWMgKCMyODI3KVxuZXhwb3J0IGZ1bmN0aW9uIGJ1ZmZlclVudGVybWluYXRlZExpbmVzKFxuICBoYW5kbGVyOiAob3V0cHV0OiBzdHJpbmcpID0+IHZvaWQsXG4pOiBCdWZmZXJlZFJlY2VpdmVyRnVuY3Rpb24ge1xuICBsZXQgYnVmZmVyID0gXCJcIjtcbiAgZnVuY3Rpb24gYnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uKG91dHB1dDogc3RyaW5nKSB7XG4gICAgYnVmZmVyICs9IG91dHB1dDtcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgvW1xcblxccl0rLyk7XG5cbiAgICAvLyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBcXG4gdGhpcyB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZ1xuICAgIC8vIGVsc2UgaXQgd2lsbCBjb250YWluIGFuIFwidW5maW5pc2hlZFwiIGxpbmVcbiAgICAvLyB0aGUgZmFsbGJhY2sgdG8gYW4gZW1wdHkgc3RyaW5nIGlzIHRvIG1ha2UgVFMgaGFwcHkgYW5kIHNob3VsZCBuZXZlciBoYXBwZW5cbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCBcIlwiO1xuXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDApIGhhbmRsZXIobGluZXMuam9pbihFT0wpICsgRU9MKTtcbiAgfVxuICBidWZmZXJlZFJlY2VpdmVyRnVuY3Rpb24uZ2V0QnVmZmVyID0gKCkgPT4gYnVmZmVyO1xuXG4gIHJldHVybiBidWZmZXJlZFJlY2VpdmVyRnVuY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVMaW5lUmVjZWl2ZWQoc2VuZDogKGV2ZW50OiBEZXBsb3lFdmVudCkgPT4gdm9pZCkge1xuICByZXR1cm4gKG91dHB1dDogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGhpZGVPdXRwdXQgPSBmYWxzZTtcbiAgICBjb25zdCBub0NvbG9yTGluZSA9IHN0cmlwQW5zaShvdXRwdXQpO1xuXG4gICAgLy8gcG9zc2libGUgZXZlbnRzIGJhc2VkIG9uIGxpbmVcbiAgICBpZiAobm9Db2xvckxpbmUuaW5jbHVkZXMoXCJhcHByb3ZlZCB1c2luZyB0aGUgVUkgb3IgQVBJXCIpKSB7XG4gICAgICBzZW5kKHsgdHlwZTogXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIgfSk7XG4gICAgfSBlbHNlIGlmIChub0NvbG9yTGluZS5pbmNsdWRlcyhcImRpc2NhcmRlZCB1c2luZyB0aGUgVUkgb3IgQVBJXCIpKSB7XG4gICAgICBzZW5kKHsgdHlwZTogXCJSRUpFQ1RFRF9FWFRFUk5BTExZXCIgfSk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwiRG8geW91IHdhbnQgdG8gcGVyZm9ybSB0aGVzZSBhY3Rpb25zXCIpIHx8XG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZXN0cm95IGFsbCByZXNvdXJjZXM/XCIpIHx8XG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcbiAgICAgICAgXCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVzdHJveSBhbGwgcmVzb3VyY2VzIGluIHdvcmtzcGFjZVwiLFxuICAgICAgKVxuICAgICkge1xuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG4gICAgICBzZW5kKHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIiwgb3V0cHV0IH0pO1xuICAgICAgc2VuZCh7IHR5cGU6IFwiUkVRVUVTVF9BUFBST1ZBTFwiIH0pO1xuICAgIH0gZWxzZSBpZiAobm9Db2xvckxpbmUuaW5jbHVkZXMoXCJ2YXIuXCIpKSB7XG4gICAgICBoaWRlT3V0cHV0ID0gdHJ1ZTtcblxuICAgICAgY29uc3QgdmFyaWFibGVOYW1lID0gZXh0cmFjdFZhcmlhYmxlTmFtZUZyb21Qcm9tcHQob3V0cHV0KTtcbiAgICAgIHNlbmQoe1xuICAgICAgICB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiLFxuICAgICAgICBvdXRwdXQ6IG1pc3NpbmdWYXJpYWJsZSh2YXJpYWJsZU5hbWUpLFxuICAgICAgfSk7XG4gICAgICBzZW5kKHsgdHlwZTogXCJWQVJJQUJMRV9NSVNTSU5HXCIsIHZhcmlhYmxlTmFtZSB9KTtcbiAgICB9IGVsc2UgaWYgKG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwiRW50ZXIgYSB2YWx1ZTpcIikpIHtcbiAgICAgIC8vIFRoaXMgY29tZXMgYWxvbmcgd2l0aCBhYm92ZSBibG9jaywgYnV0IGlzIGEgc2VwYXJhdGUgbGluZVxuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG5vQ29sb3JMaW5lLmluY2x1ZGVzKFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBzb2Z0IGZhaWxlZCBwb2xpY3kgY2hlY2s/XCIsXG4gICAgICApXG4gICAgKSB7XG4gICAgICBoaWRlT3V0cHV0ID0gdHJ1ZTtcbiAgICAgIHNlbmQoeyB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiLCBvdXRwdXQgfSk7XG5cbiAgICAgIHNlbmQoeyB0eXBlOiBcIlJFUVVFU1RfU0VOVElORUxfT1ZFUlJJREVcIiB9KTtcbiAgICB9IGVsc2UgaWYgKG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwib3ZlcnJpZGRlbiB1c2luZyB0aGUgVUkgb3IgQVBJXCIpKSB7XG4gICAgICBzZW5kKHsgdHlwZTogXCJPVkVSUklEREVOX0VYVEVSTkFMTFlcIiB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWhpZGVPdXRwdXQpIHtcbiAgICAgIHNlbmQoe1xuICAgICAgICB0eXBlOiBcIk9VVFBVVF9SRUNFSVZFRFwiLFxuICAgICAgICBvdXRwdXQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBkZXBsb3lNYWNoaW5lID0gY3JlYXRlTWFjaGluZTxcbiAgRGVwbG95Q29udGV4dCxcbiAgRGVwbG95RXZlbnQsXG4gIERlcGxveVN0YXRlXG4+KFxuICB7XG4gICAgcHJlZGljdGFibGVBY3Rpb25Bcmd1bWVudHM6IHRydWUsXG4gICAgY29udGV4dDoge30sXG4gICAgaW5pdGlhbDogXCJpZGxlXCIsXG4gICAgaWQ6IFwicm9vdFwiLFxuICAgIHN0YXRlczoge1xuICAgICAgaWRsZToge1xuICAgICAgICBvbjoge1xuICAgICAgICAgIFNUQVJUOiB7IHRhcmdldDogXCJydW5uaW5nXCIgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBydW5uaW5nOiB7XG4gICAgICAgIGludm9rZToge1xuICAgICAgICAgIGlkOiBcInB0eVwiLFxuICAgICAgICAgIHNyYzogXCJydW5UZXJyYWZvcm1JblB0eVwiLFxuICAgICAgICB9LFxuICAgICAgICBvbjoge1xuICAgICAgICAgIEVYSVRFRDogXCJleGl0ZWRcIixcbiAgICAgICAgICBTVE9QOiBcInN0b3BwZWRcIixcbiAgICAgICAgfSxcbiAgICAgICAgaW5pdGlhbDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgIHN0YXRlczoge1xuICAgICAgICAgIC8vIFRPRE86IHdoYXQgZWxzZSBtaWdodCBURiBDTEkgYmUgYXNraW5nPyBDYW4gd2UgZGV0ZWN0IGFueSBxdWVzdGlvbiBmcm9tIHRoZSBURiBDTEkgdG8gc2hvdyBhIGdvb2QgZXJyb3I/XG4gICAgICAgICAgcHJvY2Vzc2luZzoge1xuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgUkVRVUVTVF9BUFBST1ZBTDogXCJhd2FpdGluZ19hcHByb3ZhbFwiLFxuICAgICAgICAgICAgICBSRVFVRVNUX1NFTlRJTkVMX09WRVJSSURFOiBcImF3YWl0aW5nX3NlbnRpbmVsX292ZXJyaWRlXCIsXG4gICAgICAgICAgICAgIFZBUklBQkxFX01JU1NJTkc6IHtcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBzZW5kKHsgdHlwZTogXCJFWElURURcIiwgZXhpdENvZGU6IDEgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXdhaXRpbmdfYXBwcm92YWw6IHtcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIEFQUFJPVkVEX0VYVEVSTkFMTFk6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgICBSRUpFQ1RFRF9FWFRFUk5BTExZOiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBcIiNyb290LmV4aXRlZFwiLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IGFzc2lnbjxcbiAgICAgICAgICAgICAgICAgIERlcGxveUNvbnRleHQsXG4gICAgICAgICAgICAgICAgICBEZXBsb3lFdmVudCAmIHsgdHlwZTogXCJSRUpFQ1RFRF9FWFRFUk5BTExZXCIgfVxuICAgICAgICAgICAgICAgID4oeyBjYW5jZWxsZWQ6IHRydWUgfSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIEFQUFJPVkU6IHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IHNlbmQoXG4gICAgICAgICAgICAgICAgICB7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcInllc1wiIH0sXG4gICAgICAgICAgICAgICAgICB7IHRvOiBcInB0eVwiIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgUkVKRUNUOiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBzZW5kKHsgdHlwZTogXCJTRU5EX0xJTkVcIiwgaW5wdXQ6IFwibm9cIiB9LCB7IHRvOiBcInB0eVwiIH0pLFxuICAgICAgICAgICAgICAgICAgYXNzaWduPERlcGxveUNvbnRleHQsIERlcGxveUV2ZW50ICYgeyB0eXBlOiBcIlJFSkVDVFwiIH0+KHtcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhd2FpdGluZ19zZW50aW5lbF9vdmVycmlkZToge1xuICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgT1ZFUlJJRERFTl9FWFRFUk5BTExZOiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWToge1xuICAgICAgICAgICAgICAgIHRhcmdldDogXCIjcm9vdC5leGl0ZWRcIixcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBhc3NpZ248XG4gICAgICAgICAgICAgICAgICBEZXBsb3lDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgRGVwbG95RXZlbnQgJiB7IHR5cGU6IFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiIH1cbiAgICAgICAgICAgICAgICA+KHsgY2FuY2VsbGVkOiB0cnVlIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjaywgYmVjYXVzZSB0aGUgZXh0ZXJuYWwgZGlzY2FyZCBtZXNzYWdlXG4gICAgICAgICAgICAgIC8vIHBvc3RlZCBieSBUZXJyYWZvcm0gVUkgaXMgdGhlIHNhbWUgYXMgZHVyaW5nIGFwcGx5LiBTbywgd2UgY2FwdHVyZSB0aGF0XG4gICAgICAgICAgICAgIC8vIGFuZCBlbWl0IG91ciBvd24gZXZlbnQgdG8gbWFrZSBpdCBtb3JlIHNwZWNpZmljLlxuICAgICAgICAgICAgICBSRUpFQ1RFRF9FWFRFUk5BTExZOiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uczogc2VuZCh7IHR5cGU6IFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBPVkVSUklERToge1xuICAgICAgICAgICAgICAgIHRhcmdldDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogc2VuZChcbiAgICAgICAgICAgICAgICAgIHsgdHlwZTogXCJTRU5EX0xJTkVcIiwgaW5wdXQ6IFwib3ZlcnJpZGVcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0bzogXCJwdHlcIiB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFJFSkVDVF9PVkVSUklERToge1xuICAgICAgICAgICAgICAgIHRhcmdldDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgc2VuZCh7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcIm5vXCIgfSwgeyB0bzogXCJwdHlcIiB9KSxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbjxcbiAgICAgICAgICAgICAgICAgICAgRGVwbG95Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgRGVwbG95RXZlbnQgJiB7IHR5cGU6IFwiUkVKRUNUX09WRVJSSURFXCIgfVxuICAgICAgICAgICAgICAgICAgPih7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZXhpdGVkOiB7IHR5cGU6IFwiZmluYWxcIiB9LFxuICAgICAgc3RvcHBlZDogeyB0eXBlOiBcImZpbmFsXCIgfSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgc2VydmljZXM6IHtcbiAgICAgIHJ1blRlcnJhZm9ybUluUHR5OiAoY29udGV4dCwgZXZlbnQpID0+XG4gICAgICAgIHRlcnJhZm9ybVB0eVNlcnZpY2UoY29udGV4dCwgZXZlbnQsIHNwYXduSW50ZXJhY3RpdmUpLFxuICAgIH0sXG4gIH0sXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVycmFmb3JtUHR5U2VydmljZShcbiAgX2NvbnRleHQ6IERlcGxveUNvbnRleHQsXG4gIGV2ZW50OiBEZXBsb3lFdmVudCxcbiAgc3Bhd24gPSBzcGF3bkludGVyYWN0aXZlLFxuKTogKHNlbmQ6IFNlbmRlcjxEZXBsb3lFdmVudD4sIG9uUmVjZWl2ZTogUmVjZWl2ZXI8RGVwbG95RXZlbnQ+KSA9PiB2b2lkIHtcbiAgcmV0dXJuIChzZW5kOiBTZW5kZXI8RGVwbG95RXZlbnQ+LCBvblJlY2VpdmU6IFJlY2VpdmVyPERlcGxveUV2ZW50PikgPT4ge1xuICAgIGlmIChldmVudC50eXBlICE9PSBcIlNUQVJUXCIpIHtcbiAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgICAgYFRlcnJhZm9ybSBDTEkgaW52b2NhdGlvbiBzdGF0ZSBtYWNoaW5lOiBVbmV4cGVjdGVkIGV2ZW50IGNhdXNlZCB0cmFuc2l0aW9uIHRvIHRoZSBydW5uaW5nIHN0YXRlOiAke2V2ZW50LnR5cGV9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29tbXVuaWNhdGlvbiBmcm9tIHRoZSBwdHkgdG8gdGhlIGNhbGxlclxuICAgIGNvbnN0IHJlY2VpdmVyID0gYnVmZmVyVW50ZXJtaW5hdGVkTGluZXMoaGFuZGxlTGluZVJlY2VpdmVkKHNlbmQpKTtcbiAgICBjb25zdCB7IGV4aXRDb2RlLCBhY3Rpb25zIH0gPSBzcGF3bihldmVudC5wdHksIChkYXRhKSA9PiB7XG4gICAgICByZWNlaXZlcihkYXRhKTtcbiAgICB9KTtcblxuICAgIC8vIENvbW11bmljYXRpb24gZnJvbSB0aGUgY2FsbGVyIHRvIHRoZSBwdHlcbiAgICBvblJlY2VpdmUoKGV2ZW50OiBEZXBsb3lFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFwiU0VORF9MSU5FXCIpIHtcbiAgICAgICAgYWN0aW9ucy53cml0ZUxpbmUoZXZlbnQuaW5wdXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZXhpdENvZGUudGhlbigoZXhpdENvZGUpID0+IHtcbiAgICAgIGNvbnN0IGxhc3RCdWZmZXIgPSByZWNlaXZlci5nZXRCdWZmZXIoKTtcbiAgICAgIGlmIChsYXN0QnVmZmVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBUZXJyYWZvcm0gQ0xJIGV4aXRlZCBidXQgdGhlIGxhc3Qgb3V0cHV0dGVkIGxpbmUgd2FzIG5vdCB0ZXJtaW5hdGVkIHdpdGggYSBuZXdsaW5lIGFuZCBoZW5jZSBpcyBzdGlsbCBpbiB0aGUgYnVmZmVyIGFuZCB3YXNuJ3QgcHJpbnRlZDogXCIke2xhc3RCdWZmZXJ9XCJgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzZW5kKHsgdHlwZTogXCJFWElURURcIiwgZXhpdENvZGUgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbG9nZ2VyLnRyYWNlKFwiVGVycmFmb3JtIENMSSBzdGF0ZSBtYWNoaW5lOiBjbGVhbmluZyB1cCBwdHlcIik7XG4gICAgICBhY3Rpb25zLnN0b3AoKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5kU3RhcnREZXBsb3lTZXJ2aWNlKG9wdGlvbnM6IHtcbiAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICBwYXJhbGxlbGlzbTogbnVtYmVyO1xuICBleHRyYU9wdGlvbnM6IHN0cmluZ1tdO1xuICB0ZXJyYWZvcm1CaW5hcnlOYW1lOiBzdHJpbmc7XG4gIGF1dG9BcHByb3ZlPzogYm9vbGVhbjtcbiAgbm9Db2xvcj86IGJvb2xlYW47XG4gIHdvcmtkaXI6IHN0cmluZztcbiAgdmFycz86IHN0cmluZ1tdO1xuICB2YXJGaWxlcz86IHN0cmluZ1tdO1xufSkge1xuICBjb25zdCBzZXJ2aWNlID0gaW50ZXJwcmV0KGRlcGxveU1hY2hpbmUpO1xuICBjb25zdCBhcmdzID0gW1xuICAgIFwiYXBwbHlcIixcbiAgICAuLi4ob3B0aW9ucy5hdXRvQXBwcm92ZSA/IFtcIi1hdXRvLWFwcHJvdmVcIl0gOiBbXSksXG4gICAgLy8gXCItaW5wdXQ9ZmFsc2VcIiwgd2UgY2FuJ3QgdXNlIHRoaXMgYW55bW9yZSBidXQgVE9ETzogd2UgbmVlZCB0byBkZXRlY3QgVEYgQ0xJIGFza2luZyBmb3IgbWlzc2luZyBpbnB1dHMgYW5kIGVpdGhlciBhbGxvdyBwYXNzaW5nIHRoZW0gb3Igc3RvcCB0aGVyZSBhbmQgZmFpbFxuXG4gICAgLi4ub3B0aW9ucy5leHRyYU9wdGlvbnMsXG4gICAgLi4uKG9wdGlvbnMucmVmcmVzaE9ubHkgPyBbXCItcmVmcmVzaC1vbmx5XCJdIDogW10pLFxuICAgIC4uLihvcHRpb25zLm5vQ29sb3IgPyBbXCItbm8tY29sb3JcIl0gOiBbXSksXG4gICAgLi4uKG9wdGlvbnMucGFyYWxsZWxpc20gPiAtMVxuICAgICAgPyBbYC1wYXJhbGxlbGlzbT0ke29wdGlvbnMucGFyYWxsZWxpc219YF1cbiAgICAgIDogW10pLFxuICBdO1xuXG4gIG9wdGlvbnMudmFycz8uZm9yRWFjaCgodikgPT4ge1xuICAgIGFyZ3MucHVzaChgLXZhcj0ke3Z9YCk7XG4gIH0pO1xuXG4gIG9wdGlvbnMudmFyRmlsZXM/LmZvckVhY2goKHYpID0+IHtcbiAgICBhcmdzLnB1c2goYC12YXItZmlsZT0ke3Z9YCk7XG4gIH0pO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgRXhlY3V0aW5nICR7b3B0aW9ucy50ZXJyYWZvcm1CaW5hcnlOYW1lfSAke2FyZ3Muam9pbihcIiBcIil9IGluICR7XG4gICAgICBvcHRpb25zLndvcmtkaXJcbiAgICB9YCxcbiAgKTtcblxuICBjb25zdCBjb25maWc6IEludGVyYWN0aXZlU3Bhd25Db25maWcgPSB7XG4gICAgZmlsZTogb3B0aW9ucy50ZXJyYWZvcm1CaW5hcnlOYW1lLFxuICAgIGFyZ3MsXG4gICAgb3B0aW9uczoge1xuICAgICAgY3dkOiBvcHRpb25zLndvcmtkaXIsXG4gICAgICBlbnY6IHByb2Nlc3MuZW52IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIC8vIFRPRE86IG1ha2UgdGhpcyBleHBsaWNpdCBhbmQgbW92ZSB0byBjYWxsZXIgb3Igd2hhdGV2ZXJcbiAgICB9LFxuICB9O1xuXG4gIHNlcnZpY2Uuc2VuZCh7IHR5cGU6IFwiU1RBUlRcIiwgcHR5OiBjb25maWcgfSk7XG5cbiAgcmV0dXJuIHNlcnZpY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbmRTdGFydERlc3Ryb3lTZXJ2aWNlKG9wdGlvbnM6IHtcbiAgcGFyYWxsZWxpc206IG51bWJlcjtcbiAgZXh0cmFPcHRpb25zOiBzdHJpbmdbXTtcbiAgdGVycmFmb3JtQmluYXJ5TmFtZTogc3RyaW5nO1xuICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gIG5vQ29sb3I/OiBib29sZWFuO1xuICB3b3JrZGlyOiBzdHJpbmc7XG4gIHZhcnM/OiBzdHJpbmdbXTtcbiAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbn0pIHtcbiAgY29uc3Qgc2VydmljZSA9IGludGVycHJldChkZXBsb3lNYWNoaW5lKTtcblxuICBjb25zdCBhcmdzID0gW1xuICAgIFwiZGVzdHJveVwiLFxuICAgIC4uLihvcHRpb25zLmF1dG9BcHByb3ZlID8gW1wiLWF1dG8tYXBwcm92ZVwiXSA6IFtdKSxcbiAgICAvLyBcIi1pbnB1dD1mYWxzZVwiLCB3ZSBjYW4ndCB1c2UgdGhpcyBhbnltb3JlIGJ1dCBUT0RPOiB3ZSBuZWVkIHRvIGRldGVjdCBURiBDTEkgYXNraW5nIGZvciBtaXNzaW5nIGlucHV0cyBhbmQgZWl0aGVyIGFsbG93IHBhc3NpbmcgdGhlbSBvciBzdG9wIHRoZXJlIGFuZCBmYWlsXG5cbiAgICAuLi5vcHRpb25zLmV4dHJhT3B0aW9ucyxcbiAgICAuLi4ob3B0aW9ucy5ub0NvbG9yID8gW1wiLW5vLWNvbG9yXCJdIDogW10pLFxuICAgIC4uLihvcHRpb25zLnBhcmFsbGVsaXNtID4gLTFcbiAgICAgID8gW2AtcGFyYWxsZWxpc209JHtvcHRpb25zLnBhcmFsbGVsaXNtfWBdXG4gICAgICA6IFtdKSxcbiAgXTtcblxuICBvcHRpb25zLnZhcnM/LmZvckVhY2goKHYpID0+IHtcbiAgICBhcmdzLnB1c2goYC12YXI9JHt2fWApO1xuICB9KTtcblxuICBvcHRpb25zLnZhckZpbGVzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyLWZpbGU9JHt2fWApO1xuICB9KTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYEV4ZWN1dGluZyAke29wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZX0gJHthcmdzLmpvaW4oXCIgXCIpfSBpbiAke1xuICAgICAgb3B0aW9ucy53b3JrZGlyXG4gICAgfWAsXG4gICk7XG5cbiAgY29uc3QgY29uZmlnOiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnID0ge1xuICAgIGZpbGU6IG9wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICBhcmdzLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGN3ZDogb3B0aW9ucy53b3JrZGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudiBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCAvLyBUT0RPOiBtYWtlIHRoaXMgZXhwbGljaXQgYW5kIG1vdmUgdG8gY2FsbGVyIG9yIHdoYXRldmVyXG4gICAgfSxcbiAgfTtcblxuICBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlNUQVJUXCIsIHB0eTogY29uZmlnIH0pO1xuXG4gIHJldHVybiBzZXJ2aWNlO1xufVxuIl19
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwbG95LW1hY2hpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21vZGVscy9kZXBsb3ktbWFjaGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7QUFFSCxtQ0FRZ0I7QUFDaEIsNENBQWdEO0FBQ2hELHNDQUE0QztBQUM1Qyw0REFBbUM7QUFDbkMsMkJBQXlCO0FBQ3pCLCtEQUcrQjtBQTRCL0IsU0FBZ0IsYUFBYSxDQUMzQixLQUFrQixFQUNsQixJQUFxQjtJQUVyQixPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDO0FBQzdCLENBQUM7QUFMRCxzQ0FLQztBQWdDRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLHFCQUFxQixHQUFHLHdDQUF3QyxDQUFDO0FBRXZFOzs7R0FHRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLFdBQW1CO0lBQ3pELE9BQU8sV0FBVztTQUNmLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDWCxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFKRCwwREFJQztBQUVELFNBQWdCLDZCQUE2QixDQUFDLElBQVk7SUFDeEQsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBUyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsTUFBTSxLQUFLLEdBQUcsS0FBSztTQUNoQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQXlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFD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UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxnQkFBTSxDQUFDLEtBQUssQ0FDVixhQUFhLE9BQU8sQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUN4RCxPQUFPLENBQUMsT0FDVixFQUFFLENBQ0gsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUEyQjtRQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJO1FBQ0osT0FBTyxFQUFFO1lBQ1AsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3BCLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBZ0MsRUFBRSwwREFBMEQ7U0FDMUc7S0FDRixDQUFDO0lBRUYsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFN0MsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQWxERCxvRUFrREMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIGNyZWF0ZU1hY2hpbmUsXG4gIHNlbmQsXG4gIGludGVycHJldCxcbiAgRXZlbnRPYmplY3QsXG4gIGFzc2lnbixcbiAgU2VuZGVyLFxuICBSZWNlaXZlcixcbn0gZnJvbSBcInhzdGF0ZVwiO1xuaW1wb3J0IHsgRXJyb3JzLCBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IG1pc3NpbmdWYXJpYWJsZSB9IGZyb20gXCIuLi9lcnJvcnNcIjtcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSBcInN0cmlwLWFuc2lcIjtcbmltcG9ydCB7IEVPTCB9IGZyb20gXCJvc1wiO1xuaW1wb3J0IHtcbiAgc3Bhd25JbnRlcmFjdGl2ZSxcbiAgSW50ZXJhY3RpdmVTcGF3bkNvbmZpZyxcbn0gZnJvbSBcIi4vaW50ZXJhY3RpdmUtcHJvY2Vzc1wiO1xuXG5pbnRlcmZhY2UgRGVwbG95Q29udGV4dCB7XG4gIGV4aXRDb2RlPzogbnVtYmVyO1xuICAvKipcbiAgICogVGVycmFmb3JtIHdpbGwgZXhpdCB3aXRoIDEgaWYgaXQgd2FzIGNhbmNlbGxlZCwgYnV0IHdlIGRvbid0IHdhbnQgdG8gZmFpbCBpbiB0aGF0IGNhc2VcbiAgICovXG4gIGNhbmNlbGxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIERlcGxveUV2ZW50ID1cbiAgfCB7IHR5cGU6IFwiU1RBUlRcIjsgcHR5OiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnIH1cbiAgfCB7IHR5cGU6IFwiU1RPUFwiIH1cbiAgfCB7IHR5cGU6IFwiU0VORF9MSU5FXCI7IGlucHV0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIjsgb3V0cHV0OiBzdHJpbmcgfVxuICB8IHsgdHlwZTogXCJBUFBST1ZFRF9FWFRFUk5BTExZXCIgfSAvLyBlLmcuIHZpYSBURkMgVUkgb3IgQVBJXG4gIHwgeyB0eXBlOiBcIlJFSkVDVEVEX0VYVEVSTkFMTFlcIiB9XG4gIHwgeyB0eXBlOiBcIk9WRVJSSURERU5fRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJREVfUkVKRUNURURfRVhURVJOQUxMWVwiIH1cbiAgfCB7IHR5cGU6IFwiT1ZFUlJJREVcIiB9XG4gIHwgeyB0eXBlOiBcIlJFSkVDVF9PVkVSUklERVwiIH1cbiAgfCB7IHR5cGU6IFwiUkVRVUVTVF9BUFBST1ZBTFwiIH1cbiAgfCB7IHR5cGU6IFwiVkFSSUFCTEVfTUlTU0lOR1wiOyB2YXJpYWJsZU5hbWU6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiBcIlJFUVVFU1RfU0VOVElORUxfT1ZFUlJJREVcIiB9XG4gIHwgeyB0eXBlOiBcIkFQUFJPVkVcIiB9XG4gIHwgeyB0eXBlOiBcIlJFSkVDVFwiIH1cbiAgfCB7IHR5cGU6IFwiRVhJVEVEXCI7IGV4aXRDb2RlOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGVwbG95RXZlbnQ8RGVwbG95RXZlbnRUeXBlIGV4dGVuZHMgRGVwbG95RXZlbnRbXCJ0eXBlXCJdPihcbiAgZXZlbnQ6IEV2ZW50T2JqZWN0LFxuICB0eXBlOiBEZXBsb3lFdmVudFR5cGUsXG4pOiBldmVudCBpcyBEZXBsb3lFdmVudCAmIHsgdHlwZTogRGVwbG95RXZlbnRUeXBlIH0ge1xuICByZXR1cm4gZXZlbnQudHlwZSA9PT0gdHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgRGVwbG95U3RhdGUgPVxuICB8IHtcbiAgICAgIHZhbHVlOiBcImlkbGVcIjtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiBcInJ1bm5pbmdcIjtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiB7IHJ1bm5pbmc6IFwicHJvY2Vzc2luZ1wiIH07XG4gICAgICBjb250ZXh0OiBEZXBsb3lDb250ZXh0O1xuICAgIH1cbiAgfCB7XG4gICAgICB2YWx1ZTogeyBydW5uaW5nOiBcImF3YWl0aW5nX2FwcHJvdmFsXCIgfTtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiB7IHJ1bm5pbmc6IFwiYXdhaXRpbmdfc2VudGluZWxfb3ZlcnJpZGVcIiB9O1xuICAgICAgY29udGV4dDogRGVwbG95Q29udGV4dDtcbiAgICB9XG4gIHwge1xuICAgICAgdmFsdWU6IFwiZXhpdGVkXCI7XG4gICAgICBjb250ZXh0OiBEZXBsb3lDb250ZXh0ICYgeyBleGl0Q29kZTogbnVtYmVyIH07XG4gICAgfVxuICB8IHtcbiAgICAgIHZhbHVlOiBcInN0b3BwZWRcIjtcbiAgICAgIGNvbnRleHQ6IERlcGxveUNvbnRleHQ7XG4gICAgfTtcblxuLyoqXG4gKiBUZXJyYWZvcm0ncyBpbnRlcmFjdGl2ZSBwcm9tcHQgZm9yIGEgbWlzc2luZyB2YXJpYWJsZSBsb29rcyBsaWtlOlxuICpcbiAqICAgdmFyLjxuYW1lPlxuICogICAgIEVudGVyIGEgdmFsdWU6XG4gKlxuICogVGhlIHZhcmlhYmxlIG5hbWUgYXBwZWFycyBvbiBpdHMgb3duIGxpbmUsIHByZWZpeGVkIHdpdGggXCJ2YXIuXCIgKG9wdGlvbmFsbHlcbiAqIGluZGVudGVkKS4gV2UgbWF0Y2ggdGhpcyBwcmVjaXNlbHkgc28gd2UgZG9uJ3QgbWlzdGFrZSB0ZXJyYWZvcm0gZXJyb3Igb3V0cHV0XG4gKiB0aGF0IG1lcmVseSByZWZlcmVuY2VzIGEgdmFyaWFibGUgKGUuZy4gXCI5MjogICBtaXJyb3IgPSB2YXIubWlycm9yXCIgZnJvbSBhblxuICogXCJVbnN1cHBvcnRlZCBhcmd1bWVudFwiIGVycm9yKSBmb3IgYW4gYWN0dWFsIHByb21wdC4gVGVycmFmb3JtIHZhcmlhYmxlIG5hbWVzXG4gKiBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIHVuZGVyc2NvcmUgYW5kIG1heSBjb250YWluIGxldHRlcnMsIGRpZ2l0cyxcbiAqIHVuZGVyc2NvcmVzIGFuZCBkYXNoZXMuICgjMjY1KVxuICovXG5jb25zdCBWQVJJQUJMRV9QUk9NUFRfUkVHRVggPSAvXlxccyp2YXJcXC4oW0EtWmEtel9dW0EtWmEtejAtOV8tXSopXFxzKiQvO1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBhbnkgbGluZSBpbiB0aGUgZ2l2ZW4gKEFOU0ktc3RyaXBwZWQpIG91dHB1dCBpcyB0ZXJyYWZvcm0nc1xuICogaW50ZXJhY3RpdmUgcHJvbXB0IGZvciBhIG1pc3NpbmcgdmFyaWFibGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01pc3NpbmdWYXJpYWJsZVByb21wdChub0NvbG9yTGluZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBub0NvbG9yTGluZVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5zb21lKChsaW5lKSA9PiBWQVJJQUJMRV9QUk9NUFRfUkVHRVgudGVzdChsaW5lKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VmFyaWFibGVOYW1lRnJvbVByb21wdChsaW5lOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm9Db2xvckxpbmUgPSBzdHJpcEFuc2kobGluZSk7XG4gIGNvbnN0IGxpbmVzID0gbm9Db2xvckxpbmUuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IG1hdGNoID0gbGluZXNcbiAgICAubWFwKChsKSA9PiBsLm1hdGNoKFZBUklBQkxFX1BST01QVF9SRUdFWCkpXG4gICAgLmZpbmQoKG0pOiBtIGlzIFJlZ0V4cE1hdGNoQXJyYXkgPT4gbSAhPT0gbnVsbCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBFcnJvcnMuSW50ZXJuYWwoXG4gICAgICBgQ291bGQgbm90IGZpbmQgdmFyaWFibGUgbmFtZSBpbiBwcm9tcHQ6ICR7bGluZX0uIFRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gY2RrdG4uIFBsZWFzZSByZXBvcnQgaXQgYXQgaHR0cDovL2Nka3RuLmlvL2lzc3Vlc2AsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gbWF0Y2hbMV07XG59XG5cbmludGVyZmFjZSBCdWZmZXJlZFJlY2VpdmVyRnVuY3Rpb24ge1xuICAob3V0cHV0OiBzdHJpbmcpOiB2b2lkO1xuICAvKipcbiAgICogdXNlZCB0byBnZXQgdGhlIGxhc3QgYnVmZmVyIHdoZW4gdGhlIFBUWSBleGl0cyB0byBsb2cgYSBkZWJ1ZyBtZXNzYWdlIGlmIHRoZXJlJ3Mgb3V0cHV0IGxlZnQgaW4gdGhlcmVcbiAgICogKG1pZ2h0IGhlbHAgZGVidWdnaW5nIG9uIFdpbmRvd3MgaWYgRU9MIGZyb20gTm9kZWpzIGRvZXNuJ3Qgd29yayBpbiBXU0wpXG4gICAqL1xuICBnZXRCdWZmZXI6ICgpID0+IHN0cmluZztcbn1cblxuLy8gdXNlZCB0byBvbmx5IHNlbmQgY29tcGxldGVkIGxpbmVzICg9IHdpdGggYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlbSkgdG8gb3VyIGxvZ2ljICgjMjgyNylcbmV4cG9ydCBmdW5jdGlvbiBidWZmZXJVbnRlcm1pbmF0ZWRMaW5lcyhcbiAgaGFuZGxlcjogKG91dHB1dDogc3RyaW5nKSA9PiB2b2lkLFxuKTogQnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uIHtcbiAgbGV0IGJ1ZmZlciA9IFwiXCI7XG4gIGZ1bmN0aW9uIGJ1ZmZlcmVkUmVjZWl2ZXJGdW5jdGlvbihvdXRwdXQ6IHN0cmluZykge1xuICAgIGJ1ZmZlciArPSBvdXRwdXQ7XG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoL1tcXG5cXHJdKy8pO1xuXG4gICAgLy8gaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggXFxuIHRoaXMgd2lsbCBiZSBhbiBlbXB0eSBzdHJpbmdcbiAgICAvLyBlbHNlIGl0IHdpbGwgY29udGFpbiBhbiBcInVuZmluaXNoZWRcIiBsaW5lXG4gICAgLy8gdGhlIGZhbGxiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyBpcyB0byBtYWtlIFRTIGhhcHB5IGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgXCJcIjtcblxuICAgIGlmIChsaW5lcy5sZW5ndGggPiAwKSBoYW5kbGVyKGxpbmVzLmpvaW4oRU9MKSArIEVPTCk7XG4gIH1cbiAgYnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uLmdldEJ1ZmZlciA9ICgpID0+IGJ1ZmZlcjtcblxuICByZXR1cm4gYnVmZmVyZWRSZWNlaXZlckZ1bmN0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTGluZVJlY2VpdmVkKHNlbmQ6IChldmVudDogRGVwbG95RXZlbnQpID0+IHZvaWQpIHtcbiAgcmV0dXJuIChvdXRwdXQ6IHN0cmluZykgPT4ge1xuICAgIGxldCBoaWRlT3V0cHV0ID0gZmFsc2U7XG4gICAgY29uc3Qgbm9Db2xvckxpbmUgPSBzdHJpcEFuc2kob3V0cHV0KTtcblxuICAgIC8vIHBvc3NpYmxlIGV2ZW50cyBiYXNlZCBvbiBsaW5lXG4gICAgaWYgKG5vQ29sb3JMaW5lLmluY2x1ZGVzKFwiYXBwcm92ZWQgdXNpbmcgdGhlIFVJIG9yIEFQSVwiKSkge1xuICAgICAgc2VuZCh7IHR5cGU6IFwiQVBQUk9WRURfRVhURVJOQUxMWVwiIH0pO1xuICAgIH0gZWxzZSBpZiAobm9Db2xvckxpbmUuaW5jbHVkZXMoXCJkaXNjYXJkZWQgdXNpbmcgdGhlIFVJIG9yIEFQSVwiKSkge1xuICAgICAgc2VuZCh7IHR5cGU6IFwiUkVKRUNURURfRVhURVJOQUxMWVwiIH0pO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcIkRvIHlvdSB3YW50IHRvIHBlcmZvcm0gdGhlc2UgYWN0aW9uc1wiKSB8fFxuICAgICAgbm9Db2xvckxpbmUuaW5jbHVkZXMoXCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVzdHJveSBhbGwgcmVzb3VyY2VzP1wiKSB8fFxuICAgICAgbm9Db2xvckxpbmUuaW5jbHVkZXMoXG4gICAgICAgIFwiRG8geW91IHJlYWxseSB3YW50IHRvIGRlc3Ryb3kgYWxsIHJlc291cmNlcyBpbiB3b3Jrc3BhY2VcIixcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGhpZGVPdXRwdXQgPSB0cnVlO1xuICAgICAgc2VuZCh7IHR5cGU6IFwiT1VUUFVUX1JFQ0VJVkVEXCIsIG91dHB1dCB9KTtcbiAgICAgIHNlbmQoeyB0eXBlOiBcIlJFUVVFU1RfQVBQUk9WQUxcIiB9KTtcbiAgICB9IGVsc2UgaWYgKGlzTWlzc2luZ1ZhcmlhYmxlUHJvbXB0KG5vQ29sb3JMaW5lKSkge1xuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG5cbiAgICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IGV4dHJhY3RWYXJpYWJsZU5hbWVGcm9tUHJvbXB0KG91dHB1dCk7XG4gICAgICBzZW5kKHtcbiAgICAgICAgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIixcbiAgICAgICAgb3V0cHV0OiBtaXNzaW5nVmFyaWFibGUodmFyaWFibGVOYW1lKSxcbiAgICAgIH0pO1xuICAgICAgc2VuZCh7IHR5cGU6IFwiVkFSSUFCTEVfTUlTU0lOR1wiLCB2YXJpYWJsZU5hbWUgfSk7XG4gICAgfSBlbHNlIGlmIChub0NvbG9yTGluZS5pbmNsdWRlcyhcIkVudGVyIGEgdmFsdWU6XCIpKSB7XG4gICAgICAvLyBUaGlzIGNvbWVzIGFsb25nIHdpdGggYWJvdmUgYmxvY2ssIGJ1dCBpcyBhIHNlcGFyYXRlIGxpbmVcbiAgICAgIGhpZGVPdXRwdXQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBub0NvbG9yTGluZS5pbmNsdWRlcyhcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGUgc29mdCBmYWlsZWQgcG9saWN5IGNoZWNrP1wiLFxuICAgICAgKVxuICAgICkge1xuICAgICAgaGlkZU91dHB1dCA9IHRydWU7XG4gICAgICBzZW5kKHsgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIiwgb3V0cHV0IH0pO1xuXG4gICAgICBzZW5kKHsgdHlwZTogXCJSRVFVRVNUX1NFTlRJTkVMX09WRVJSSURFXCIgfSk7XG4gICAgfSBlbHNlIGlmIChub0NvbG9yTGluZS5pbmNsdWRlcyhcIm92ZXJyaWRkZW4gdXNpbmcgdGhlIFVJIG9yIEFQSVwiKSkge1xuICAgICAgc2VuZCh7IHR5cGU6IFwiT1ZFUlJJRERFTl9FWFRFUk5BTExZXCIgfSk7XG4gICAgfVxuXG4gICAgaWYgKCFoaWRlT3V0cHV0KSB7XG4gICAgICBzZW5kKHtcbiAgICAgICAgdHlwZTogXCJPVVRQVVRfUkVDRUlWRURcIixcbiAgICAgICAgb3V0cHV0LFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgZGVwbG95TWFjaGluZSA9IGNyZWF0ZU1hY2hpbmU8XG4gIERlcGxveUNvbnRleHQsXG4gIERlcGxveUV2ZW50LFxuICBEZXBsb3lTdGF0ZVxuPihcbiAge1xuICAgIHByZWRpY3RhYmxlQWN0aW9uQXJndW1lbnRzOiB0cnVlLFxuICAgIGNvbnRleHQ6IHt9LFxuICAgIGluaXRpYWw6IFwiaWRsZVwiLFxuICAgIGlkOiBcInJvb3RcIixcbiAgICBzdGF0ZXM6IHtcbiAgICAgIGlkbGU6IHtcbiAgICAgICAgb246IHtcbiAgICAgICAgICBTVEFSVDogeyB0YXJnZXQ6IFwicnVubmluZ1wiIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcnVubmluZzoge1xuICAgICAgICBpbnZva2U6IHtcbiAgICAgICAgICBpZDogXCJwdHlcIixcbiAgICAgICAgICBzcmM6IFwicnVuVGVycmFmb3JtSW5QdHlcIixcbiAgICAgICAgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBFWElURUQ6IFwiZXhpdGVkXCIsXG4gICAgICAgICAgU1RPUDogXCJzdG9wcGVkXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGluaXRpYWw6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICBzdGF0ZXM6IHtcbiAgICAgICAgICAvLyBUT0RPOiB3aGF0IGVsc2UgbWlnaHQgVEYgQ0xJIGJlIGFza2luZz8gQ2FuIHdlIGRldGVjdCBhbnkgcXVlc3Rpb24gZnJvbSB0aGUgVEYgQ0xJIHRvIHNob3cgYSBnb29kIGVycm9yP1xuICAgICAgICAgIHByb2Nlc3Npbmc6IHtcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIFJFUVVFU1RfQVBQUk9WQUw6IFwiYXdhaXRpbmdfYXBwcm92YWxcIixcbiAgICAgICAgICAgICAgUkVRVUVTVF9TRU5USU5FTF9PVkVSUklERTogXCJhd2FpdGluZ19zZW50aW5lbF9vdmVycmlkZVwiLFxuICAgICAgICAgICAgICBWQVJJQUJMRV9NSVNTSU5HOiB7XG4gICAgICAgICAgICAgICAgYWN0aW9uczogc2VuZCh7IHR5cGU6IFwiRVhJVEVEXCIsIGV4aXRDb2RlOiAxIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGF3YWl0aW5nX2FwcHJvdmFsOiB7XG4gICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICBBUFBST1ZFRF9FWFRFUk5BTExZOiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgUkVKRUNURURfRVhURVJOQUxMWToge1xuICAgICAgICAgICAgICAgIHRhcmdldDogXCIjcm9vdC5leGl0ZWRcIixcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBhc3NpZ248XG4gICAgICAgICAgICAgICAgICBEZXBsb3lDb250ZXh0LFxuICAgICAgICAgICAgICAgICAgRGVwbG95RXZlbnQgJiB7IHR5cGU6IFwiUkVKRUNURURfRVhURVJOQUxMWVwiIH1cbiAgICAgICAgICAgICAgICA+KHsgY2FuY2VsbGVkOiB0cnVlIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBBUFBST1ZFOiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBcInByb2Nlc3NpbmdcIixcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBzZW5kKFxuICAgICAgICAgICAgICAgICAgeyB0eXBlOiBcIlNFTkRfTElORVwiLCBpbnB1dDogXCJ5ZXNcIiB9LFxuICAgICAgICAgICAgICAgICAgeyB0bzogXCJwdHlcIiB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFJFSkVDVDoge1xuICAgICAgICAgICAgICAgIHRhcmdldDogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgc2VuZCh7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcIm5vXCIgfSwgeyB0bzogXCJwdHlcIiB9KSxcbiAgICAgICAgICAgICAgICAgIGFzc2lnbjxEZXBsb3lDb250ZXh0LCBEZXBsb3lFdmVudCAmIHsgdHlwZTogXCJSRUpFQ1RcIiB9Pih7XG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGxlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYXdhaXRpbmdfc2VudGluZWxfb3ZlcnJpZGU6IHtcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIE9WRVJSSURERU5fRVhURVJOQUxMWTogXCJwcm9jZXNzaW5nXCIsXG4gICAgICAgICAgICAgIE9WRVJSSURFX1JFSkVDVEVEX0VYVEVSTkFMTFk6IHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFwiI3Jvb3QuZXhpdGVkXCIsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogYXNzaWduPFxuICAgICAgICAgICAgICAgICAgRGVwbG95Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgIERlcGxveUV2ZW50ICYgeyB0eXBlOiBcIk9WRVJSSURFX1JFSkVDVEVEX0VYVEVSTkFMTFlcIiB9XG4gICAgICAgICAgICAgICAgPih7IGNhbmNlbGxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2ssIGJlY2F1c2UgdGhlIGV4dGVybmFsIGRpc2NhcmQgbWVzc2FnZVxuICAgICAgICAgICAgICAvLyBwb3N0ZWQgYnkgVGVycmFmb3JtIFVJIGlzIHRoZSBzYW1lIGFzIGR1cmluZyBhcHBseS4gU28sIHdlIGNhcHR1cmUgdGhhdFxuICAgICAgICAgICAgICAvLyBhbmQgZW1pdCBvdXIgb3duIGV2ZW50IHRvIG1ha2UgaXQgbW9yZSBzcGVjaWZpYy5cbiAgICAgICAgICAgICAgUkVKRUNURURfRVhURVJOQUxMWToge1xuICAgICAgICAgICAgICAgIGFjdGlvbnM6IHNlbmQoeyB0eXBlOiBcIk9WRVJSSURFX1JFSkVDVEVEX0VYVEVSTkFMTFlcIiB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgT1ZFUlJJREU6IHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IHNlbmQoXG4gICAgICAgICAgICAgICAgICB7IHR5cGU6IFwiU0VORF9MSU5FXCIsIGlucHV0OiBcIm92ZXJyaWRlXCIgfSxcbiAgICAgICAgICAgICAgICAgIHsgdG86IFwicHR5XCIgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBSRUpFQ1RfT1ZFUlJJREU6IHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFwicHJvY2Vzc2luZ1wiLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIHNlbmQoeyB0eXBlOiBcIlNFTkRfTElORVwiLCBpbnB1dDogXCJub1wiIH0sIHsgdG86IFwicHR5XCIgfSksXG4gICAgICAgICAgICAgICAgICBhc3NpZ248XG4gICAgICAgICAgICAgICAgICAgIERlcGxveUNvbnRleHQsXG4gICAgICAgICAgICAgICAgICAgIERlcGxveUV2ZW50ICYgeyB0eXBlOiBcIlJFSkVDVF9PVkVSUklERVwiIH1cbiAgICAgICAgICAgICAgICAgID4oe1xuICAgICAgICAgICAgICAgICAgICBjYW5jZWxsZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGV4aXRlZDogeyB0eXBlOiBcImZpbmFsXCIgfSxcbiAgICAgIHN0b3BwZWQ6IHsgdHlwZTogXCJmaW5hbFwiIH0sXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIHNlcnZpY2VzOiB7XG4gICAgICBydW5UZXJyYWZvcm1JblB0eTogKGNvbnRleHQsIGV2ZW50KSA9PlxuICAgICAgICB0ZXJyYWZvcm1QdHlTZXJ2aWNlKGNvbnRleHQsIGV2ZW50LCBzcGF3bkludGVyYWN0aXZlKSxcbiAgICB9LFxuICB9LFxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcnJhZm9ybVB0eVNlcnZpY2UoXG4gIF9jb250ZXh0OiBEZXBsb3lDb250ZXh0LFxuICBldmVudDogRGVwbG95RXZlbnQsXG4gIHNwYXduID0gc3Bhd25JbnRlcmFjdGl2ZSxcbik6IChzZW5kOiBTZW5kZXI8RGVwbG95RXZlbnQ+LCBvblJlY2VpdmU6IFJlY2VpdmVyPERlcGxveUV2ZW50PikgPT4gdm9pZCB7XG4gIHJldHVybiAoc2VuZDogU2VuZGVyPERlcGxveUV2ZW50Piwgb25SZWNlaXZlOiBSZWNlaXZlcjxEZXBsb3lFdmVudD4pID0+IHtcbiAgICBpZiAoZXZlbnQudHlwZSAhPT0gXCJTVEFSVFwiKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuSW50ZXJuYWwoXG4gICAgICAgIGBUZXJyYWZvcm0gQ0xJIGludm9jYXRpb24gc3RhdGUgbWFjaGluZTogVW5leHBlY3RlZCBldmVudCBjYXVzZWQgdHJhbnNpdGlvbiB0byB0aGUgcnVubmluZyBzdGF0ZTogJHtldmVudC50eXBlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIENvbW11bmljYXRpb24gZnJvbSB0aGUgcHR5IHRvIHRoZSBjYWxsZXJcbiAgICBjb25zdCByZWNlaXZlciA9IGJ1ZmZlclVudGVybWluYXRlZExpbmVzKGhhbmRsZUxpbmVSZWNlaXZlZChzZW5kKSk7XG4gICAgY29uc3QgeyBleGl0Q29kZSwgYWN0aW9ucyB9ID0gc3Bhd24oZXZlbnQucHR5LCAoZGF0YSkgPT4ge1xuICAgICAgcmVjZWl2ZXIoZGF0YSk7XG4gICAgfSk7XG5cbiAgICAvLyBDb21tdW5pY2F0aW9uIGZyb20gdGhlIGNhbGxlciB0byB0aGUgcHR5XG4gICAgb25SZWNlaXZlKChldmVudDogRGVwbG95RXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50eXBlID09PSBcIlNFTkRfTElORVwiKSB7XG4gICAgICAgIGFjdGlvbnMud3JpdGVMaW5lKGV2ZW50LmlucHV0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGV4aXRDb2RlLnRoZW4oKGV4aXRDb2RlKSA9PiB7XG4gICAgICBjb25zdCBsYXN0QnVmZmVyID0gcmVjZWl2ZXIuZ2V0QnVmZmVyKCk7XG4gICAgICBpZiAobGFzdEJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgVGVycmFmb3JtIENMSSBleGl0ZWQgYnV0IHRoZSBsYXN0IG91dHB1dHRlZCBsaW5lIHdhcyBub3QgdGVybWluYXRlZCB3aXRoIGEgbmV3bGluZSBhbmQgaGVuY2UgaXMgc3RpbGwgaW4gdGhlIGJ1ZmZlciBhbmQgd2Fzbid0IHByaW50ZWQ6IFwiJHtsYXN0QnVmZmVyfVwiYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2VuZCh7IHR5cGU6IFwiRVhJVEVEXCIsIGV4aXRDb2RlIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxvZ2dlci50cmFjZShcIlRlcnJhZm9ybSBDTEkgc3RhdGUgbWFjaGluZTogY2xlYW5pbmcgdXAgcHR5XCIpO1xuICAgICAgYWN0aW9ucy5zdG9wKCk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFuZFN0YXJ0RGVwbG95U2VydmljZShvcHRpb25zOiB7XG4gIHJlZnJlc2hPbmx5PzogYm9vbGVhbjtcbiAgcGFyYWxsZWxpc206IG51bWJlcjtcbiAgZXh0cmFPcHRpb25zOiBzdHJpbmdbXTtcbiAgdGVycmFmb3JtQmluYXJ5TmFtZTogc3RyaW5nO1xuICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gIG5vQ29sb3I/OiBib29sZWFuO1xuICB3b3JrZGlyOiBzdHJpbmc7XG4gIHZhcnM/OiBzdHJpbmdbXTtcbiAgdmFyRmlsZXM/OiBzdHJpbmdbXTtcbn0pIHtcbiAgY29uc3Qgc2VydmljZSA9IGludGVycHJldChkZXBsb3lNYWNoaW5lKTtcbiAgY29uc3QgYXJncyA9IFtcbiAgICBcImFwcGx5XCIsXG4gICAgLi4uKG9wdGlvbnMuYXV0b0FwcHJvdmUgPyBbXCItYXV0by1hcHByb3ZlXCJdIDogW10pLFxuICAgIC8vIFwiLWlucHV0PWZhbHNlXCIsIHdlIGNhbid0IHVzZSB0aGlzIGFueW1vcmUgYnV0IFRPRE86IHdlIG5lZWQgdG8gZGV0ZWN0IFRGIENMSSBhc2tpbmcgZm9yIG1pc3NpbmcgaW5wdXRzIGFuZCBlaXRoZXIgYWxsb3cgcGFzc2luZyB0aGVtIG9yIHN0b3AgdGhlcmUgYW5kIGZhaWxcblxuICAgIC4uLm9wdGlvbnMuZXh0cmFPcHRpb25zLFxuICAgIC4uLihvcHRpb25zLnJlZnJlc2hPbmx5ID8gW1wiLXJlZnJlc2gtb25seVwiXSA6IFtdKSxcbiAgICAuLi4ob3B0aW9ucy5ub0NvbG9yID8gW1wiLW5vLWNvbG9yXCJdIDogW10pLFxuICAgIC4uLihvcHRpb25zLnBhcmFsbGVsaXNtID4gLTFcbiAgICAgID8gW2AtcGFyYWxsZWxpc209JHtvcHRpb25zLnBhcmFsbGVsaXNtfWBdXG4gICAgICA6IFtdKSxcbiAgXTtcblxuICBvcHRpb25zLnZhcnM/LmZvckVhY2goKHYpID0+IHtcbiAgICBhcmdzLnB1c2goYC12YXI9JHt2fWApO1xuICB9KTtcblxuICBvcHRpb25zLnZhckZpbGVzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyLWZpbGU9JHt2fWApO1xuICB9KTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYEV4ZWN1dGluZyAke29wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZX0gJHthcmdzLmpvaW4oXCIgXCIpfSBpbiAke1xuICAgICAgb3B0aW9ucy53b3JrZGlyXG4gICAgfWAsXG4gICk7XG5cbiAgY29uc3QgY29uZmlnOiBJbnRlcmFjdGl2ZVNwYXduQ29uZmlnID0ge1xuICAgIGZpbGU6IG9wdGlvbnMudGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgICBhcmdzLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGN3ZDogb3B0aW9ucy53b3JrZGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudiBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LCAvLyBUT0RPOiBtYWtlIHRoaXMgZXhwbGljaXQgYW5kIG1vdmUgdG8gY2FsbGVyIG9yIHdoYXRldmVyXG4gICAgfSxcbiAgfTtcblxuICBzZXJ2aWNlLnNlbmQoeyB0eXBlOiBcIlNUQVJUXCIsIHB0eTogY29uZmlnIH0pO1xuXG4gIHJldHVybiBzZXJ2aWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5kU3RhcnREZXN0cm95U2VydmljZShvcHRpb25zOiB7XG4gIHBhcmFsbGVsaXNtOiBudW1iZXI7XG4gIGV4dHJhT3B0aW9uczogc3RyaW5nW107XG4gIHRlcnJhZm9ybUJpbmFyeU5hbWU6IHN0cmluZztcbiAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICBub0NvbG9yPzogYm9vbGVhbjtcbiAgd29ya2Rpcjogc3RyaW5nO1xuICB2YXJzPzogc3RyaW5nW107XG4gIHZhckZpbGVzPzogc3RyaW5nW107XG59KSB7XG4gIGNvbnN0IHNlcnZpY2UgPSBpbnRlcnByZXQoZGVwbG95TWFjaGluZSk7XG5cbiAgY29uc3QgYXJncyA9IFtcbiAgICBcImRlc3Ryb3lcIixcbiAgICAuLi4ob3B0aW9ucy5hdXRvQXBwcm92ZSA/IFtcIi1hdXRvLWFwcHJvdmVcIl0gOiBbXSksXG4gICAgLy8gXCItaW5wdXQ9ZmFsc2VcIiwgd2UgY2FuJ3QgdXNlIHRoaXMgYW55bW9yZSBidXQgVE9ETzogd2UgbmVlZCB0byBkZXRlY3QgVEYgQ0xJIGFza2luZyBmb3IgbWlzc2luZyBpbnB1dHMgYW5kIGVpdGhlciBhbGxvdyBwYXNzaW5nIHRoZW0gb3Igc3RvcCB0aGVyZSBhbmQgZmFpbFxuXG4gICAgLi4ub3B0aW9ucy5leHRyYU9wdGlvbnMsXG4gICAgLi4uKG9wdGlvbnMubm9Db2xvciA/IFtcIi1uby1jb2xvclwiXSA6IFtdKSxcbiAgICAuLi4ob3B0aW9ucy5wYXJhbGxlbGlzbSA+IC0xXG4gICAgICA/IFtgLXBhcmFsbGVsaXNtPSR7b3B0aW9ucy5wYXJhbGxlbGlzbX1gXVxuICAgICAgOiBbXSksXG4gIF07XG5cbiAgb3B0aW9ucy52YXJzPy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgYXJncy5wdXNoKGAtdmFyPSR7dn1gKTtcbiAgfSk7XG5cbiAgb3B0aW9ucy52YXJGaWxlcz8uZm9yRWFjaCgodikgPT4ge1xuICAgIGFyZ3MucHVzaChgLXZhci1maWxlPSR7dn1gKTtcbiAgfSk7XG5cbiAgbG9nZ2VyLmRlYnVnKFxuICAgIGBFeGVjdXRpbmcgJHtvcHRpb25zLnRlcnJhZm9ybUJpbmFyeU5hbWV9ICR7YXJncy5qb2luKFwiIFwiKX0gaW4gJHtcbiAgICAgIG9wdGlvbnMud29ya2RpclxuICAgIH1gLFxuICApO1xuXG4gIGNvbnN0IGNvbmZpZzogSW50ZXJhY3RpdmVTcGF3bkNvbmZpZyA9IHtcbiAgICBmaWxlOiBvcHRpb25zLnRlcnJhZm9ybUJpbmFyeU5hbWUsXG4gICAgYXJncyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBjd2Q6IG9wdGlvbnMud29ya2RpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSwgLy8gVE9ETzogbWFrZSB0aGlzIGV4cGxpY2l0IGFuZCBtb3ZlIHRvIGNhbGxlciBvciB3aGF0ZXZlclxuICAgIH0sXG4gIH07XG5cbiAgc2VydmljZS5zZW5kKHsgdHlwZTogXCJTVEFSVFwiLCBwdHk6IGNvbmZpZyB9KTtcblxuICByZXR1cm4gc2VydmljZTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdktn/cli-core",
3
- "version": "0.24.0-pre.56",
3
+ "version": "0.24.0-pre.57",
4
4
  "description": "CDK Terrain CLI Core, meant for internal use only",
5
5
  "main": "build/lib/index.js",
6
6
  "types": "build/lib/index.d.ts",
@@ -48,11 +48,11 @@
48
48
  "xml-js": "1.6.11",
49
49
  "xstate": "4.38.3",
50
50
  "zod": "3.25.76",
51
- "@cdktn/commons": "0.24.0-pre.56",
52
- "@cdktn/hcl-tools": "0.24.0-pre.56",
53
- "@cdktn/hcl2cdk": "0.24.0-pre.56",
54
- "@cdktn/provider-schema": "0.24.0-pre.56",
55
- "cdktn": "0.24.0-pre.56"
51
+ "@cdktn/commons": "0.24.0-pre.57",
52
+ "@cdktn/hcl-tools": "0.24.0-pre.57",
53
+ "@cdktn/hcl2cdk": "0.24.0-pre.57",
54
+ "@cdktn/provider-schema": "0.24.0-pre.57",
55
+ "cdktn": "0.24.0-pre.57"
56
56
  },
57
57
  "lint-staged": {
58
58
  "src/**/*.{ts,tsx}": "tsc-files ambient.d.ts --noEmit"
@@ -68,7 +68,7 @@
68
68
  "prettier": "2.8.8",
69
69
  "tsc-files": "1.1.4",
70
70
  "typescript": "^5.0.0",
71
- "@cdktn/provider-generator": "0.24.0-pre.56"
71
+ "@cdktn/provider-generator": "0.24.0-pre.57"
72
72
  },
73
73
  "scripts": {
74
74
  "build": "tsc",