cdk-cost-analyzer 0.1.52 → 0.1.53

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.
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Suppress the AWS SDK NodeDeprecationWarning so it does not end up in
3
+ * piped output (for example CI pipelines that redirect stderr into a
4
+ * PR/MR comment). All other process warnings are preserved.
5
+ *
6
+ * Call once, as early as possible in an entry-point script.
7
+ */
8
+ export declare function suppressNodeDeprecationWarning(): void;
package/dist/cli/index.js CHANGED
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  };
35
35
  })();
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
+ const suppressNodeWarnings_1 = require("../utils/suppressNodeWarnings");
38
+ (0, suppressNodeWarnings_1.suppressNodeDeprecationWarning)();
37
39
  const fs = __importStar(require("fs"));
38
40
  const path = __importStar(require("path"));
39
41
  const commander_1 = require("commander");
@@ -338,4 +340,4 @@ program
338
340
  }
339
341
  });
340
342
  program.parse();
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFDN0IseUNBQW9DO0FBQ3BDLGdDQUE2RDtBQUM3RCx5RUFBc0U7QUFDdEUseUVBQXNFO0FBRXRFLDJFQUF3RTtBQUN4RSwyRUFBd0U7QUFDeEUsNENBQXlDO0FBRXpDLGlDQUFpQztBQUNqQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ25FLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMxRSxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQztBQUUvQyxNQUFNLE9BQU8sR0FBRyxJQUFJLG1CQUFPLEVBQUUsQ0FBQztBQUU5QixPQUFPO0tBQ0osSUFBSSxDQUFDLG1CQUFtQixDQUFDO0tBQ3pCLFdBQVcsQ0FBQywwRUFBMEUsQ0FBQztLQUN2RixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFcEIsbURBQW1EO0FBQ25ELE9BQU87S0FDSixPQUFPLENBQUMsb0JBQW9CLENBQUM7S0FDN0IsV0FBVyxDQUFDLDhEQUE4RCxDQUFDO0tBQzNFLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUM7S0FDckUsTUFBTSxDQUFDLG1CQUFtQixFQUFFLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQztLQUN4RSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsNEJBQTRCLENBQUM7S0FDdkQsTUFBTSxDQUFDLG1CQUFtQixFQUFFLDJDQUEyQyxDQUFDO0tBQ3hFLE1BQU0sQ0FBQyx3QkFB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S0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0MsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUM7QUFFTCxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGFuYWx5emVDb3N0cywgYW5hbHl6ZVNpbmdsZVRlbXBsYXRlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEdpdExhYkludGVncmF0aW9uIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL0dpdExhYkludGVncmF0aW9uJztcbmltcG9ydCB7IEdpdEh1YkludGVncmF0aW9uIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL0dpdEh1YkludGVncmF0aW9uJztcbmltcG9ydCB7IENvbW1lbnRTdHJhdGVneSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy90eXBlcyc7XG5pbXBvcnQgeyBQaXBlbGluZU9yY2hlc3RyYXRvciB9IGZyb20gJy4uL3BpcGVsaW5lL1BpcGVsaW5lT3JjaGVzdHJhdG9yJztcbmltcG9ydCB7IEdpdEh1YkFjdGlvblJlcG9ydGVyIH0gZnJvbSAnLi4vcmVwb3J0ZXIvR2l0SHViQWN0aW9uUmVwb3J0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvTG9nZ2VyJztcblxuLy8gUmVhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5jb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vcGFja2FnZS5qc29uJyk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0Zi04JykpO1xuY29uc3QgdmVyc2lvbiA9IHBhY2thZ2VKc29uLnZlcnNpb24gfHwgJzAuMC4wJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ2Nkay1jb3N0LWFuYWx5emVyJylcbiAgLmRlc2NyaXB0aW9uKCdBbmFseXplIEFXUyBDREsgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlcyBhbmQgcHJvdmlkZSBjb3N0IGltcGFjdCBzdW1tYXJpZXMnKVxuICAudmVyc2lvbih2ZXJzaW9uKTtcblxuLy8gTmV3IGFuYWx5emUgY29tbWFuZCBmb3Igc2luZ2xlIHRlbXBsYXRlIGFuYWx5c2lzXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdhbmFseXplIDx0ZW1wbGF0ZT4nKVxuICAuZGVzY3JpcHRpb24oJ0FuYWx5emUgYSBzaW5nbGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZm9yIGVzdGltYXRlZCBjb3N0cycpXG4gIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gZm9yIHByaWNpbmcnLCAnZXUtY2VudHJhbC0xJylcbiAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdGV4dHxqc29ufG1hcmtkb3duJywgJ3RleHQnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAub3B0aW9uKCctLXJlY29tbWVuZGF0aW9ucycsICdJbmNsdWRlIGNvc3Qgb3B0aW1pemF0aW9uIHJlY29tbWVuZGF0aW9ucycpXG4gIC5vcHRpb24oJy0tbWluLXNhdmluZ3MgPGFtb3VudD4nLCAnTWluaW11bSBtb250aGx5IHNhdmluZ3MgdG8gc2hvdyAoVVNEKScsIHBhcnNlRmxvYXQpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIHZlcmJvc2UgZGVidWcgbG9nZ2luZyBmb3IgcHJpY2luZyBBUEkgY2FsbHMnKVxuICAuYWN0aW9uKGFzeW5jICh0ZW1wbGF0ZVBhdGg6IHN0cmluZywgb3B0aW9uczogeyByZWdpb246IHN0cmluZzsgZm9ybWF0OiBzdHJpbmc7IGNvbmZpZz86IHN0cmluZzsgcmVjb21tZW5kYXRpb25zPzogYm9vbGVhbjsgbWluU2F2aW5ncz86IG51bWJlcjsgZGVidWc/OiBib29sZWFuIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRW5hYmxlIGRlYnVnIGxvZ2dpbmcgaWYgZmxhZyBpcyBzZXRcbiAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgIExvZ2dlci5zZXREZWJ1Z0VuYWJsZWQodHJ1ZSk7XG4gICAgICAgIExvZ2dlci5kZWJ1ZygnRGVidWcgbG9nZ2luZyBlbmFibGVkJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRlbXBsYXRlIGZpbGUgZXhpc3RzXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGVtcGxhdGVQYXRoKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogVGVtcGxhdGUgZmlsZSBub3QgZm91bmQ6ICR7dGVtcGxhdGVQYXRofWApO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlYWQgdGhlIHRlbXBsYXRlXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGZzLnJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgsICd1dGYtOCcpO1xuXG4gICAgICAvLyBBbmFseXplIHRoZSB0ZW1wbGF0ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYW5hbHl6ZVNpbmdsZVRlbXBsYXRlKHtcbiAgICAgICAgdGVtcGxhdGUsXG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgYXMgJ3RleHQnIHwgJ2pzb24nIHwgJ21hcmtkb3duJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgcmVjb21tZW5kYXRpb25zOiBvcHRpb25zLnJlY29tbWVuZGF0aW9ucyxcbiAgICAgICAgICBtaW5pbXVtU2F2aW5nc1RocmVzaG9sZDogb3B0aW9ucy5taW5TYXZpbmdzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIE91dHB1dCB0aGUgcmVzdWx0c1xuICAgICAgLy8gRm9yIHRleHQvbWFya2Rvd24sIHN1bW1hcnkgYWxyZWFkeSBpbmNsdWRlcyByZWNvbW1lbmRhdGlvbnMgdmlhIFNpbmdsZVRlbXBsYXRlUmVwb3J0ZXJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5zdW1tYXJ5KTtcblxuICAgICAgLy8gRm9yIEpTT04gZm9ybWF0LCBhcHBlbmQgcmVjb21tZW5kYXRpb25zIGFzIHN0cnVjdHVyZWQgZGF0YVxuICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0ID09PSAnanNvbicgJiYgb3B0aW9ucy5yZWNvbW1lbmRhdGlvbnMgJiYgcmVzdWx0LnJlY29tbWVuZGF0aW9ucykge1xuICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IHJlY29tbWVuZGF0aW9uczogcmVzdWx0LnJlY29tbWVuZGF0aW9ucyB9LCBudWxsLCAyKSk7XG4gICAgICB9XG5cbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9KTtcblxuLy8gT3JpZ2luYWwgY29tbWFuZCBmb3IgZGlyZWN0IHRlbXBsYXRlIGNvbXBhcmlzb25cbnByb2dyYW1cbiAgLmNvbW1hbmQoJ2NvbXBhcmUnKVxuICAuZGVzY3JpcHRpb24oJ0NvbXBhcmUgdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcycpXG4gIC5hcmd1bWVudCgnPGJhc2U+JywgJ1BhdGggdG8gYmFzZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZScpXG4gIC5hcmd1bWVudCgnPHRhcmdldD4nLCAnUGF0aCB0byB0YXJnZXQgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUnKVxuICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uJywgJ2V1LWNlbnRyYWwtMScpXG4gIC5vcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQ6IHRleHR8anNvbnxtYXJrZG93bicsICd0ZXh0JylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ1BhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgdmVyYm9zZSBkZWJ1ZyBsb2dnaW5nIGZvciBwcmljaW5nIEFQSSBjYWxscycpXG4gIC5hY3Rpb24oYXN5bmMgKGJhc2VQYXRoOiBzdHJpbmcsIHRhcmdldFBhdGg6IHN0cmluZywgb3B0aW9uczogeyByZWdpb246IHN0cmluZzsgZm9ybWF0OiBzdHJpbmc7IGNvbmZpZz86IHN0cmluZzsgZGVidWc/OiBib29sZWFuIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRW5hYmxlIGRlYnVnIGxvZ2dpbmcgaWYgZmxhZyBpcyBzZXRcbiAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgIExvZ2dlci5zZXREZWJ1Z0VuYWJsZWQodHJ1ZSk7XG4gICAgICAgIExvZ2dlci5kZWJ1ZygnRGVidWcgbG9nZ2luZyBlbmFibGVkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhiYXNlUGF0aCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6IEJhc2UgdGVtcGxhdGUgZmlsZSBub3QgZm91bmQ6ICR7YmFzZVBhdGh9YCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldFBhdGgpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yOiBUYXJnZXQgdGVtcGxhdGUgZmlsZSBub3QgZm91bmQ6ICR7dGFyZ2V0UGF0aH1gKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXNlVGVtcGxhdGUgPSBmcy5yZWFkRmlsZVN5bmMoYmFzZVBhdGgsICd1dGYtOCcpO1xuICAgICAgY29uc3QgdGFyZ2V0VGVtcGxhdGUgPSBmcy5yZWFkRmlsZVN5bmModGFyZ2V0UGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFuYWx5emVDb3N0cyh7XG4gICAgICAgIGJhc2VUZW1wbGF0ZSxcbiAgICAgICAgdGFyZ2V0VGVtcGxhdGUsXG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgYXMgJ3RleHQnIHwgJ2pzb24nIHwgJ21hcmtkb3duJyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5zdW1tYXJ5KTtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG4vLyBOZXcgcGlwZWxpbmUgY29tbWFuZCBmb3IgQ0kvQ0QgaW50ZWdyYXRpb24gd2l0aCBzeW50aGVzaXNcbnByb2dyYW1cbiAgLmNvbW1hbmQoJ3BpcGVsaW5lJylcbiAgLmRlc2NyaXB0aW9uKCdSdW4gY29zdCBhbmFseXNpcyBpbiBDSS9DRCBwaXBlbGluZSB3aXRoIGF1dG9tYXRpYyBzeW50aGVzaXMnKVxuICAub3B0aW9uKCctLWJhc2UgPHBhdGg+JywgJ1BhdGggdG8gYmFzZSB0ZW1wbGF0ZSAoaWYgbm90IHVzaW5nIHN5bnRoZXNpcyknKVxuICAub3B0aW9uKCctLXRhcmdldCA8cGF0aD4nLCAnUGF0aCB0byB0YXJnZXQgdGVtcGxhdGUgKGlmIG5vdCB1c2luZyBzeW50aGVzaXMpJylcbiAgLm9wdGlvbignLS1zeW50aCcsICdFbmFibGUgYXV0b21hdGljIENESyBzeW50aGVzaXMnKVxuICAub3B0aW9uKCctLWNkay1hcHAtcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBDREsgYXBwbGljYXRpb24gZGlyZWN0b3J5JylcbiAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbicsICdldS1jZW50cmFsLTEnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAub3B0aW9uKCctLWVudmlyb25tZW50IDxlbnY+JywgJ0Vudmlyb25tZW50IG5hbWUgZm9yIHRocmVzaG9sZCBzZWxlY3Rpb24nKVxuICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0ZXh0fGpzb258bWFya2Rvd24nLCAndGV4dCcpXG4gIC5vcHRpb24oJy0tcG9zdC10by1naXRsYWInLCAnUG9zdCByZXN1bHRzIHRvIEdpdExhYiBtZXJnZSByZXF1ZXN0JylcbiAgLm9wdGlvbignLS1wb3N0LXRvLWdpdGh1YicsICdQb3N0IHJlc3VsdHMgdG8gR2l0SHViIHB1bGwgcmVxdWVzdCcpXG4gIC5vcHRpb24oJy0tY29tbWVudC1zdHJhdGVneSA8c3RyYXRlZ3k+JywgJ0NvbW1lbnQgdXBkYXRlIHN0cmF0ZWd5OiBuZXd8dXBkYXRlfGRlbGV0ZS1hbmQtbmV3JywgJ3VwZGF0ZScpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIHZlcmJvc2UgZGVidWcgbG9nZ2luZyBmb3IgcHJpY2luZyBBUEkgY2FsbHMnKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiB7XG4gICAgYmFzZT86IHN0cmluZztcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgc3ludGg/OiBib29sZWFuO1xuICAgIGNka0FwcFBhdGg/OiBzdHJpbmc7XG4gICAgcmVnaW9uOiBzdHJpbmc7XG4gICAgY29uZmlnPzogc3RyaW5nO1xuICAgIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAgIGZvcm1hdDogc3RyaW5nO1xuICAgIHBvc3RUb0dpdGxhYj86IGJvb2xlYW47XG4gICAgcG9zdFRvR2l0aHViPzogYm9vbGVhbjtcbiAgICBjb21tZW50U3RyYXRlZ3k/OiBzdHJpbmc7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nIGlmIGZsYWcgaXMgc2V0XG4gICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICBMb2dnZXIuc2V0RGVidWdFbmFibGVkKHRydWUpO1xuICAgICAgICBMb2dnZXIuZGVidWcoJ0RlYnVnIGxvZ2dpbmcgZW5hYmxlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBBV1MgY3JlZGVudGlhbHNcbiAgICAgIGlmICghcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgJiYgIXByb2Nlc3MuZW52LkFXU19QUk9GSUxFKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBBV1MgY3JlZGVudGlhbHMgbm90IGNvbmZpZ3VyZWQnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBzZXQgQVdTIGNyZWRlbnRpYWxzIHVzaW5nIG9uZSBvZjonKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignICAtIEFXU19BQ0NFU1NfS0VZX0lEIGFuZCBBV1NfU0VDUkVUX0FDQ0VTU19LRVkgZW52aXJvbm1lbnQgdmFyaWFibGVzJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJyAgLSBBV1NfUFJPRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZScpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCcgIC0gQVdTIGNyZWRlbnRpYWxzIGZpbGUgKH4vLmF3cy9jcmVkZW50aWFscyknKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvciBHaXRMYWIgQ0ksIGNvbmZpZ3VyZSBBV1MgY3JlZGVudGlhbHMgaW4gQ0kvQ0QgdmFyaWFibGVzOicpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCcgIFNldHRpbmdzID4gQ0kvQ0QgPiBWYXJpYWJsZXMnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignICBBZGQ6IEFXU19BQ0NFU1NfS0VZX0lELCBBV1NfU0VDUkVUX0FDQ0VTU19LRVksIEFXU19SRUdJT04nKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBuZXcgUGlwZWxpbmVPcmNoZXN0cmF0b3IoKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3JjaGVzdHJhdG9yLnJ1blBpcGVsaW5lQW5hbHlzaXMoe1xuICAgICAgICBiYXNlVGVtcGxhdGU6IG9wdGlvbnMuYmFzZSxcbiAgICAgICAgdGFyZ2V0VGVtcGxhdGU6IG9wdGlvbnMudGFyZ2V0LFxuICAgICAgICBzeW50aGVzaXplOiBvcHRpb25zLnN5bnRoLFxuICAgICAgICBjZGtBcHBQYXRoOiBvcHRpb25zLmNka0FwcFBhdGgsXG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIGNvbmZpZ1BhdGg6IG9wdGlvbnMuY29uZmlnLFxuICAgICAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBEaXNwbGF5IHJlc3VsdHNcbiAgICAgIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0LmNvc3RBbmFseXNpcy5zdW1tYXJ5KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgdGhyZXNob2xkIHN0YXR1c1xuICAgICAgICBpZiAocmVzdWx0LnRocmVzaG9sZFN0YXR1cy5sZXZlbCAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg4MCkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdUSFJFU0hPTEQgU1RBVFVTJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg4MCkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC50aHJlc2hvbGRTdGF0dXMubWVzc2FnZSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgICAgaWYgKHJlc3VsdC50aHJlc2hvbGRTdGF0dXMucmVjb21tZW5kYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNvbW1lbmRhdGlvbnM6Jyk7XG4gICAgICAgICAgICByZXN1bHQudGhyZXNob2xkU3RhdHVzLnJlY29tbWVuZGF0aW9ucy5mb3JFYWNoKChyZWMsIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aSArIDF9LiAke3JlY31gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc3BsYXkgY29uZmlnIHN1bW1hcnlcbiAgICAgICAgaWYgKHJlc3VsdC5jb25maWdVc2VkLmNvbmZpZ1BhdGggfHwgcmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoODApKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ09ORklHVVJBVElPTicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoODApKTtcbiAgICAgICAgICBpZiAocmVzdWx0LmNvbmZpZ1VzZWQuY29uZmlnUGF0aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYENvbmZpZyBmaWxlOiAke3Jlc3VsdC5jb25maWdVc2VkLmNvbmZpZ1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQuY29uZmlnVXNlZC50aHJlc2hvbGRzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVGhyZXNob2xkczogd2FybmluZz0kJHtyZXN1bHQuY29uZmlnVXNlZC50aHJlc2hvbGRzLndhcm5pbmcgfHwgJ25vbmUnfSwgZXJyb3I9JCR7cmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcy5lcnJvciB8fCAnbm9uZSd9YCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcy5lbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRW52aXJvbm1lbnQ6ICR7cmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcy5lbnZpcm9ubWVudH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdC5jb25maWdVc2VkLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRXhjbHVkZWQgcmVzb3VyY2VzOiAke3Jlc3VsdC5jb25maWdVc2VkLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5qb2luKCcsICcpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUG9zdCB0byBHaXRMYWIgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAob3B0aW9ucy5wb3N0VG9HaXRsYWIpIHtcbiAgICAgICAgY29uc3QgZ2l0bGFiVG9rZW4gPSBwcm9jZXNzLmVudi5HSVRMQUJfVE9LRU4gfHwgcHJvY2Vzcy5lbnYuQ0lfSk9CX1RPS0VOO1xuICAgICAgICBjb25zdCBwcm9qZWN0SWQgPSBwcm9jZXNzLmVudi5DSV9QUk9KRUNUX0lEO1xuICAgICAgICBjb25zdCBtZXJnZVJlcXVlc3RJaWQgPSBwcm9jZXNzLmVudi5DSV9NRVJHRV9SRVFVRVNUX0lJRDtcbiAgICAgICAgY29uc3QgZ2l0bGFiVXJsID0gcHJvY2Vzcy5lbnYuQ0lfU0VSVkVSX1VSTDtcblxuICAgICAgICBpZiAoIWdpdGxhYlRva2VuIHx8ICFwcm9qZWN0SWQgfHwgIW1lcmdlUmVxdWVzdElpZCB8fCAhZ2l0bGFiVXJsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignV2FybmluZzogR2l0TGFiIGVudmlyb25tZW50IHZhcmlhYmxlcyBub3QgZm91bmQuIFNraXBwaW5nIEdpdExhYiBwb3N0LicpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JlcXVpcmVkOiBDSV9KT0JfVE9LRU4sIENJX1BST0pFQ1RfSUQsIENJX01FUkdFX1JFUVVFU1RfSUlELCBDSV9TRVJWRVJfVVJMJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGdpdGxhYiA9IG5ldyBHaXRMYWJJbnRlZ3JhdGlvbih7XG4gICAgICAgICAgICAgIHRva2VuOiBnaXRsYWJUb2tlbixcbiAgICAgICAgICAgICAgYXBpVXJsOiBnaXRsYWJVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IGdpdGxhYi5wb3N0TWVyZ2VSZXF1ZXN0Q29tbWVudChcbiAgICAgICAgICAgICAgcHJvamVjdElkLFxuICAgICAgICAgICAgICBtZXJnZVJlcXVlc3RJaWQsXG4gICAgICAgICAgICAgIHJlc3VsdC5jb3N0QW5hbHlzaXMuc3VtbWFyeSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUmVzdWx0cyBwb3N0ZWQgdG8gR2l0TGFiIG1lcmdlIHJlcXVlc3QnKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogRmFpbGVkIHRvIHBvc3QgdG8gR2l0TGFiOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUG9zdCB0byBHaXRIdWIgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAob3B0aW9ucy5wb3N0VG9HaXRodWIpIHtcbiAgICAgICAgY29uc3QgZ2l0aHViVG9rZW4gPSBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU47XG4gICAgICAgIGNvbnN0IGdpdGh1YlJlcG9zaXRvcnkgPSBwcm9jZXNzLmVudi5HSVRIVUJfUkVQT1NJVE9SWTtcbiAgICAgICAgY29uc3QgZ2l0aHViRXZlbnRQYXRoID0gcHJvY2Vzcy5lbnYuR0lUSFVCX0VWRU5UX1BBVEg7XG5cbiAgICAgICAgaWYgKCFnaXRodWJUb2tlbiB8fCAhZ2l0aHViUmVwb3NpdG9yeSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcm5pbmc6IEdpdEh1YiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbm90IGZvdW5kLiBTa2lwcGluZyBHaXRIdWIgcG9zdC4nKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdSZXF1aXJlZDogR0lUSFVCX1RPS0VOLCBHSVRIVUJfUkVQT1NJVE9SWScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBQYXJzZSByZXBvc2l0b3J5IG93bmVyIGFuZCBuYW1lXG4gICAgICAgICAgICBjb25zdCBbb3duZXIsIHJlcG9dID0gZ2l0aHViUmVwb3NpdG9yeS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICAvLyBHZXQgUFIgbnVtYmVyIGZyb20gZXZlbnQgcGF5bG9hZFxuICAgICAgICAgICAgbGV0IHByTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoZ2l0aHViRXZlbnRQYXRoICYmIGZzLmV4aXN0c1N5bmMoZ2l0aHViRXZlbnRQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBldmVudFBheWxvYWQgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhnaXRodWJFdmVudFBhdGgsICd1dGYtOCcpKTtcbiAgICAgICAgICAgICAgcHJOdW1iZXIgPSBldmVudFBheWxvYWQucHVsbF9yZXF1ZXN0Py5udW1iZXIgfHwgZXZlbnRQYXlsb2FkLmlzc3VlPy5udW1iZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFsc28gY2hlY2sgR0lUSFVCX1BSX05VTUJFUiBmb3IgZGlyZWN0IHNldHRpbmdcbiAgICAgICAgICAgIGlmICghcHJOdW1iZXIgJiYgcHJvY2Vzcy5lbnYuR0lUSFVCX1BSX05VTUJFUikge1xuICAgICAgICAgICAgICBwck51bWJlciA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkdJVEhVQl9QUl9OVU1CRVIsIDEwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwck51bWJlcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXYXJuaW5nOiBDb3VsZCBub3QgZGV0ZXJtaW5lIFBSIG51bWJlci4gU2tpcHBpbmcgR2l0SHViIHBvc3QuJyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NldCBHSVRIVUJfUFJfTlVNQkVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGVuc3VyZSBydW5uaW5nIGluIGEgUFIgY29udGV4dC4nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGdpdGh1YiA9IG5ldyBHaXRIdWJJbnRlZ3JhdGlvbih7XG4gICAgICAgICAgICAgICAgdG9rZW46IGdpdGh1YlRva2VuLFxuICAgICAgICAgICAgICAgIGFwaVVybDogcHJvY2Vzcy5lbnYuR0lUSFVCX0FQSV9VUkwgfHwgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20nLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBHaXRIdWItc3BlY2lmaWMgcmVwb3J0IHdpdGggdHJlbmQgaW5kaWNhdG9yc1xuICAgICAgICAgICAgICBjb25zdCBnaXRodWJSZXBvcnRlciA9IG5ldyBHaXRIdWJBY3Rpb25SZXBvcnRlcigpO1xuICAgICAgICAgICAgICBjb25zdCBjb21tZW50ID0gZ2l0aHViUmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnQoe1xuICAgICAgICAgICAgICAgIHRvdGFsRGVsdGE6IHJlc3VsdC5jb3N0QW5hbHlzaXMudG90YWxEZWx0YSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogcmVzdWx0LmNvc3RBbmFseXNpcy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICBhZGRlZENvc3RzOiByZXN1bHQuY29zdEFuYWx5c2lzLmFkZGVkUmVzb3VyY2VzLFxuICAgICAgICAgICAgICAgIHJlbW92ZWRDb3N0czogcmVzdWx0LmNvc3RBbmFseXNpcy5yZW1vdmVkUmVzb3VyY2VzLFxuICAgICAgICAgICAgICAgIG1vZGlmaWVkQ29zdHM6IHJlc3VsdC5jb3N0QW5hbHlzaXMubW9kaWZpZWRSZXNvdXJjZXMsXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gKG9wdGlvbnMuY29tbWVudFN0cmF0ZWd5IHx8ICd1cGRhdGUnKSBhcyBDb21tZW50U3RyYXRlZ3k7XG4gICAgICAgICAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0UFJDb21tZW50KG93bmVyLCByZXBvLCBwck51bWJlciwgY29tbWVudCwgc3RyYXRlZ3kpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUmVzdWx0cyBwb3N0ZWQgdG8gR2l0SHViIHB1bGwgcmVxdWVzdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBXYXJuaW5nOiBGYWlsZWQgdG8gcG9zdCB0byBHaXRIdWI6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBFeGl0IHdpdGggYXBwcm9wcmlhdGUgY29kZSBiYXNlZCBvbiB0aHJlc2hvbGRcbiAgICAgIGlmIChyZXN1bHQudGhyZXNob2xkU3RhdHVzLmxldmVsID09PSAnZXJyb3InICYmICFyZXN1bHQudGhyZXNob2xkU3RhdHVzLnBhc3NlZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdQaXBlbGluZSBmYWlsZWQ6IENvc3QgdGhyZXNob2xkIGV4Y2VlZGVkJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlKCk7XG4iXX0=
343
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLHdFQUErRTtBQUMvRSxJQUFBLHFEQUE4QixHQUFFLENBQUM7QUFFakMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qix5Q0FBb0M7QUFDcEMsZ0NBQTZEO0FBQzdELHlFQUFzRTtBQUN0RSx5RUFBc0U7QUFFdEUsMkVBQXdFO0FBQ3hFLDJFQUF3RTtBQUN4RSw0Q0FBeUM7QUFFekMsaUNBQWlDO0FBQ2pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDbkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO0FBRS9DLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU87S0FDSixJQUFJLENBQUMsbUJBQW1CLENBQUM7S0FDekIsV0FBVyxDQUFDLDBFQUEwRSxDQUFDO0tBQ3ZGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVwQixtREFBbUQ7QUFDbkQsT0FBTztLQUNKLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztLQUM3QixXQUFXLENBQUMsOERBQThELENBQUM7S0FDM0UsTUFBTSxDQUFDLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGNBQWMsQ0FBQztLQUNyRSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxDQUFDO0tBQ3hFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSw0QkFBNEIsQ0FBQztLQUN2RCxNQUFNLENBQUMsbUJB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RUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDLENBQUMsQ0FBQztBQUVMLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgc3VwcHJlc3NOb2RlRGVwcmVjYXRpb25XYXJuaW5nIH0gZnJvbSAnLi4vdXRpbHMvc3VwcHJlc3NOb2RlV2FybmluZ3MnO1xuc3VwcHJlc3NOb2RlRGVwcmVjYXRpb25XYXJuaW5nKCk7XG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSAnY29tbWFuZGVyJztcbmltcG9ydCB7IGFuYWx5emVDb3N0cywgYW5hbHl6ZVNpbmdsZVRlbXBsYXRlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEdpdExhYkludGVncmF0aW9uIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL0dpdExhYkludGVncmF0aW9uJztcbmltcG9ydCB7IEdpdEh1YkludGVncmF0aW9uIH0gZnJvbSAnLi4vaW50ZWdyYXRpb25zL0dpdEh1YkludGVncmF0aW9uJztcbmltcG9ydCB7IENvbW1lbnRTdHJhdGVneSB9IGZyb20gJy4uL2ludGVncmF0aW9ucy90eXBlcyc7XG5pbXBvcnQgeyBQaXBlbGluZU9yY2hlc3RyYXRvciB9IGZyb20gJy4uL3BpcGVsaW5lL1BpcGVsaW5lT3JjaGVzdHJhdG9yJztcbmltcG9ydCB7IEdpdEh1YkFjdGlvblJlcG9ydGVyIH0gZnJvbSAnLi4vcmVwb3J0ZXIvR2l0SHViQWN0aW9uUmVwb3J0ZXInO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvTG9nZ2VyJztcblxuLy8gUmVhZCB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG5jb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vcGFja2FnZS5qc29uJyk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0Zi04JykpO1xuY29uc3QgdmVyc2lvbiA9IHBhY2thZ2VKc29uLnZlcnNpb24gfHwgJzAuMC4wJztcblxuY29uc3QgcHJvZ3JhbSA9IG5ldyBDb21tYW5kKCk7XG5cbnByb2dyYW1cbiAgLm5hbWUoJ2Nkay1jb3N0LWFuYWx5emVyJylcbiAgLmRlc2NyaXB0aW9uKCdBbmFseXplIEFXUyBDREsgaW5mcmFzdHJ1Y3R1cmUgY2hhbmdlcyBhbmQgcHJvdmlkZSBjb3N0IGltcGFjdCBzdW1tYXJpZXMnKVxuICAudmVyc2lvbih2ZXJzaW9uKTtcblxuLy8gTmV3IGFuYWx5emUgY29tbWFuZCBmb3Igc2luZ2xlIHRlbXBsYXRlIGFuYWx5c2lzXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdhbmFseXplIDx0ZW1wbGF0ZT4nKVxuICAuZGVzY3JpcHRpb24oJ0FuYWx5emUgYSBzaW5nbGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZm9yIGVzdGltYXRlZCBjb3N0cycpXG4gIC5vcHRpb24oJy0tcmVnaW9uIDxyZWdpb24+JywgJ0FXUyByZWdpb24gZm9yIHByaWNpbmcnLCAnZXUtY2VudHJhbC0xJylcbiAgLm9wdGlvbignLS1mb3JtYXQgPGZvcm1hdD4nLCAnT3V0cHV0IGZvcm1hdDogdGV4dHxqc29ufG1hcmtkb3duJywgJ3RleHQnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAub3B0aW9uKCctLXJlY29tbWVuZGF0aW9ucycsICdJbmNsdWRlIGNvc3Qgb3B0aW1pemF0aW9uIHJlY29tbWVuZGF0aW9ucycpXG4gIC5vcHRpb24oJy0tbWluLXNhdmluZ3MgPGFtb3VudD4nLCAnTWluaW11bSBtb250aGx5IHNhdmluZ3MgdG8gc2hvdyAoVVNEKScsIHBhcnNlRmxvYXQpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIHZlcmJvc2UgZGVidWcgbG9nZ2luZyBmb3IgcHJpY2luZyBBUEkgY2FsbHMnKVxuICAuYWN0aW9uKGFzeW5jICh0ZW1wbGF0ZVBhdGg6IHN0cmluZywgb3B0aW9uczogeyByZWdpb246IHN0cmluZzsgZm9ybWF0OiBzdHJpbmc7IGNvbmZpZz86IHN0cmluZzsgcmVjb21tZW5kYXRpb25zPzogYm9vbGVhbjsgbWluU2F2aW5ncz86IG51bWJlcjsgZGVidWc/OiBib29sZWFuIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRW5hYmxlIGRlYnVnIGxvZ2dpbmcgaWYgZmxhZyBpcyBzZXRcbiAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgIExvZ2dlci5zZXREZWJ1Z0VuYWJsZWQodHJ1ZSk7XG4gICAgICAgIExvZ2dlci5kZWJ1ZygnRGVidWcgbG9nZ2luZyBlbmFibGVkJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRlbXBsYXRlIGZpbGUgZXhpc3RzXG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGVtcGxhdGVQYXRoKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogVGVtcGxhdGUgZmlsZSBub3QgZm91bmQ6ICR7dGVtcGxhdGVQYXRofWApO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlYWQgdGhlIHRlbXBsYXRlXG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGZzLnJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgsICd1dGYtOCcpO1xuXG4gICAgICAvLyBBbmFseXplIHRoZSB0ZW1wbGF0ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYW5hbHl6ZVNpbmdsZVRlbXBsYXRlKHtcbiAgICAgICAgdGVtcGxhdGUsXG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgYXMgJ3RleHQnIHwgJ2pzb24nIHwgJ21hcmtkb3duJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgcmVjb21tZW5kYXRpb25zOiBvcHRpb25zLnJlY29tbWVuZGF0aW9ucyxcbiAgICAgICAgICBtaW5pbXVtU2F2aW5nc1RocmVzaG9sZDogb3B0aW9ucy5taW5TYXZpbmdzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIE91dHB1dCB0aGUgcmVzdWx0c1xuICAgICAgLy8gRm9yIHRleHQvbWFya2Rvd24sIHN1bW1hcnkgYWxyZWFkeSBpbmNsdWRlcyByZWNvbW1lbmRhdGlvbnMgdmlhIFNpbmdsZVRlbXBsYXRlUmVwb3J0ZXJcbiAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5zdW1tYXJ5KTtcblxuICAgICAgLy8gRm9yIEpTT04gZm9ybWF0LCBhcHBlbmQgcmVjb21tZW5kYXRpb25zIGFzIHN0cnVjdHVyZWQgZGF0YVxuICAgICAgaWYgKG9wdGlvbnMuZm9ybWF0ID09PSAnanNvbicgJiYgb3B0aW9ucy5yZWNvbW1lbmRhdGlvbnMgJiYgcmVzdWx0LnJlY29tbWVuZGF0aW9ucykge1xuICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IHJlY29tbWVuZGF0aW9uczogcmVzdWx0LnJlY29tbWVuZGF0aW9ucyB9LCBudWxsLCAyKSk7XG4gICAgICB9XG5cbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9KTtcblxuLy8gT3JpZ2luYWwgY29tbWFuZCBmb3IgZGlyZWN0IHRlbXBsYXRlIGNvbXBhcmlzb25cbnByb2dyYW1cbiAgLmNvbW1hbmQoJ2NvbXBhcmUnKVxuICAuZGVzY3JpcHRpb24oJ0NvbXBhcmUgdHdvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlcycpXG4gIC5hcmd1bWVudCgnPGJhc2U+JywgJ1BhdGggdG8gYmFzZSBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZScpXG4gIC5hcmd1bWVudCgnPHRhcmdldD4nLCAnUGF0aCB0byB0YXJnZXQgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUnKVxuICAub3B0aW9uKCctLXJlZ2lvbiA8cmVnaW9uPicsICdBV1MgcmVnaW9uJywgJ2V1LWNlbnRyYWwtMScpXG4gIC5vcHRpb24oJy0tZm9ybWF0IDxmb3JtYXQ+JywgJ091dHB1dCBmb3JtYXQ6IHRleHR8anNvbnxtYXJrZG93bicsICd0ZXh0JylcbiAgLm9wdGlvbignLS1jb25maWcgPHBhdGg+JywgJ1BhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlJylcbiAgLm9wdGlvbignLS1kZWJ1ZycsICdFbmFibGUgdmVyYm9zZSBkZWJ1ZyBsb2dnaW5nIGZvciBwcmljaW5nIEFQSSBjYWxscycpXG4gIC5hY3Rpb24oYXN5bmMgKGJhc2VQYXRoOiBzdHJpbmcsIHRhcmdldFBhdGg6IHN0cmluZywgb3B0aW9uczogeyByZWdpb246IHN0cmluZzsgZm9ybWF0OiBzdHJpbmc7IGNvbmZpZz86IHN0cmluZzsgZGVidWc/OiBib29sZWFuIH0pID0+IHtcbiAgICB0cnkge1xuICAgICAgLy8gRW5hYmxlIGRlYnVnIGxvZ2dpbmcgaWYgZmxhZyBpcyBzZXRcbiAgICAgIGlmIChvcHRpb25zLmRlYnVnKSB7XG4gICAgICAgIExvZ2dlci5zZXREZWJ1Z0VuYWJsZWQodHJ1ZSk7XG4gICAgICAgIExvZ2dlci5kZWJ1ZygnRGVidWcgbG9nZ2luZyBlbmFibGVkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhiYXNlUGF0aCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6IEJhc2UgdGVtcGxhdGUgZmlsZSBub3QgZm91bmQ6ICR7YmFzZVBhdGh9YCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRhcmdldFBhdGgpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yOiBUYXJnZXQgdGVtcGxhdGUgZmlsZSBub3QgZm91bmQ6ICR7dGFyZ2V0UGF0aH1gKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXNlVGVtcGxhdGUgPSBmcy5yZWFkRmlsZVN5bmMoYmFzZVBhdGgsICd1dGYtOCcpO1xuICAgICAgY29uc3QgdGFyZ2V0VGVtcGxhdGUgPSBmcy5yZWFkRmlsZVN5bmModGFyZ2V0UGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFuYWx5emVDb3N0cyh7XG4gICAgICAgIGJhc2VUZW1wbGF0ZSxcbiAgICAgICAgdGFyZ2V0VGVtcGxhdGUsXG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIGZvcm1hdDogb3B0aW9ucy5mb3JtYXQgYXMgJ3RleHQnIHwgJ2pzb24nIHwgJ21hcmtkb3duJyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAob3B0aW9ucy5mb3JtYXQgPT09ICdqc29uJykge1xuICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC5zdW1tYXJ5KTtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG4vLyBOZXcgcGlwZWxpbmUgY29tbWFuZCBmb3IgQ0kvQ0QgaW50ZWdyYXRpb24gd2l0aCBzeW50aGVzaXNcbnByb2dyYW1cbiAgLmNvbW1hbmQoJ3BpcGVsaW5lJylcbiAgLmRlc2NyaXB0aW9uKCdSdW4gY29zdCBhbmFseXNpcyBpbiBDSS9DRCBwaXBlbGluZSB3aXRoIGF1dG9tYXRpYyBzeW50aGVzaXMnKVxuICAub3B0aW9uKCctLWJhc2UgPHBhdGg+JywgJ1BhdGggdG8gYmFzZSB0ZW1wbGF0ZSAoaWYgbm90IHVzaW5nIHN5bnRoZXNpcyknKVxuICAub3B0aW9uKCctLXRhcmdldCA8cGF0aD4nLCAnUGF0aCB0byB0YXJnZXQgdGVtcGxhdGUgKGlmIG5vdCB1c2luZyBzeW50aGVzaXMpJylcbiAgLm9wdGlvbignLS1zeW50aCcsICdFbmFibGUgYXV0b21hdGljIENESyBzeW50aGVzaXMnKVxuICAub3B0aW9uKCctLWNkay1hcHAtcGF0aCA8cGF0aD4nLCAnUGF0aCB0byBDREsgYXBwbGljYXRpb24gZGlyZWN0b3J5JylcbiAgLm9wdGlvbignLS1yZWdpb24gPHJlZ2lvbj4nLCAnQVdTIHJlZ2lvbicsICdldS1jZW50cmFsLTEnKVxuICAub3B0aW9uKCctLWNvbmZpZyA8cGF0aD4nLCAnUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUnKVxuICAub3B0aW9uKCctLWVudmlyb25tZW50IDxlbnY+JywgJ0Vudmlyb25tZW50IG5hbWUgZm9yIHRocmVzaG9sZCBzZWxlY3Rpb24nKVxuICAub3B0aW9uKCctLWZvcm1hdCA8Zm9ybWF0PicsICdPdXRwdXQgZm9ybWF0OiB0ZXh0fGpzb258bWFya2Rvd24nLCAndGV4dCcpXG4gIC5vcHRpb24oJy0tcG9zdC10by1naXRsYWInLCAnUG9zdCByZXN1bHRzIHRvIEdpdExhYiBtZXJnZSByZXF1ZXN0JylcbiAgLm9wdGlvbignLS1wb3N0LXRvLWdpdGh1YicsICdQb3N0IHJlc3VsdHMgdG8gR2l0SHViIHB1bGwgcmVxdWVzdCcpXG4gIC5vcHRpb24oJy0tY29tbWVudC1zdHJhdGVneSA8c3RyYXRlZ3k+JywgJ0NvbW1lbnQgdXBkYXRlIHN0cmF0ZWd5OiBuZXd8dXBkYXRlfGRlbGV0ZS1hbmQtbmV3JywgJ3VwZGF0ZScpXG4gIC5vcHRpb24oJy0tZGVidWcnLCAnRW5hYmxlIHZlcmJvc2UgZGVidWcgbG9nZ2luZyBmb3IgcHJpY2luZyBBUEkgY2FsbHMnKVxuICAuYWN0aW9uKGFzeW5jIChvcHRpb25zOiB7XG4gICAgYmFzZT86IHN0cmluZztcbiAgICB0YXJnZXQ/OiBzdHJpbmc7XG4gICAgc3ludGg/OiBib29sZWFuO1xuICAgIGNka0FwcFBhdGg/OiBzdHJpbmc7XG4gICAgcmVnaW9uOiBzdHJpbmc7XG4gICAgY29uZmlnPzogc3RyaW5nO1xuICAgIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAgIGZvcm1hdDogc3RyaW5nO1xuICAgIHBvc3RUb0dpdGxhYj86IGJvb2xlYW47XG4gICAgcG9zdFRvR2l0aHViPzogYm9vbGVhbjtcbiAgICBjb21tZW50U3RyYXRlZ3k/OiBzdHJpbmc7XG4gICAgZGVidWc/OiBib29sZWFuO1xuICB9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEVuYWJsZSBkZWJ1ZyBsb2dnaW5nIGlmIGZsYWcgaXMgc2V0XG4gICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICBMb2dnZXIuc2V0RGVidWdFbmFibGVkKHRydWUpO1xuICAgICAgICBMb2dnZXIuZGVidWcoJ0RlYnVnIGxvZ2dpbmcgZW5hYmxlZCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBBV1MgY3JlZGVudGlhbHNcbiAgICAgIGlmICghcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgJiYgIXByb2Nlc3MuZW52LkFXU19QUk9GSUxFKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBBV1MgY3JlZGVudGlhbHMgbm90IGNvbmZpZ3VyZWQnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBzZXQgQVdTIGNyZWRlbnRpYWxzIHVzaW5nIG9uZSBvZjonKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignICAtIEFXU19BQ0NFU1NfS0VZX0lEIGFuZCBBV1NfU0VDUkVUX0FDQ0VTU19LRVkgZW52aXJvbm1lbnQgdmFyaWFibGVzJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJyAgLSBBV1NfUFJPRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZScpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCcgIC0gQVdTIGNyZWRlbnRpYWxzIGZpbGUgKH4vLmF3cy9jcmVkZW50aWFscyknKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZvciBHaXRMYWIgQ0ksIGNvbmZpZ3VyZSBBV1MgY3JlZGVudGlhbHMgaW4gQ0kvQ0QgdmFyaWFibGVzOicpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCcgIFNldHRpbmdzID4gQ0kvQ0QgPiBWYXJpYWJsZXMnKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignICBBZGQ6IEFXU19BQ0NFU1NfS0VZX0lELCBBV1NfU0VDUkVUX0FDQ0VTU19LRVksIEFXU19SRUdJT04nKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBuZXcgUGlwZWxpbmVPcmNoZXN0cmF0b3IoKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgb3JjaGVzdHJhdG9yLnJ1blBpcGVsaW5lQW5hbHlzaXMoe1xuICAgICAgICBiYXNlVGVtcGxhdGU6IG9wdGlvbnMuYmFzZSxcbiAgICAgICAgdGFyZ2V0VGVtcGxhdGU6IG9wdGlvbnMudGFyZ2V0LFxuICAgICAgICBzeW50aGVzaXplOiBvcHRpb25zLnN5bnRoLFxuICAgICAgICBjZGtBcHBQYXRoOiBvcHRpb25zLmNka0FwcFBhdGgsXG4gICAgICAgIHJlZ2lvbjogb3B0aW9ucy5yZWdpb24sXG4gICAgICAgIGNvbmZpZ1BhdGg6IG9wdGlvbnMuY29uZmlnLFxuICAgICAgICBlbnZpcm9ubWVudDogb3B0aW9ucy5lbnZpcm9ubWVudCxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBEaXNwbGF5IHJlc3VsdHNcbiAgICAgIGlmIChvcHRpb25zLmZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0LmNvc3RBbmFseXNpcy5zdW1tYXJ5KTtcbiAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgIC8vIERpc3BsYXkgdGhyZXNob2xkIHN0YXR1c1xuICAgICAgICBpZiAocmVzdWx0LnRocmVzaG9sZFN0YXR1cy5sZXZlbCAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg4MCkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdUSFJFU0hPTEQgU1RBVFVTJyk7XG4gICAgICAgICAgY29uc29sZS5sb2coJz0nLnJlcGVhdCg4MCkpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdC50aHJlc2hvbGRTdGF0dXMubWVzc2FnZSk7XG4gICAgICAgICAgY29uc29sZS5sb2coJycpO1xuXG4gICAgICAgICAgaWYgKHJlc3VsdC50aHJlc2hvbGRTdGF0dXMucmVjb21tZW5kYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSZWNvbW1lbmRhdGlvbnM6Jyk7XG4gICAgICAgICAgICByZXN1bHQudGhyZXNob2xkU3RhdHVzLnJlY29tbWVuZGF0aW9ucy5mb3JFYWNoKChyZWMsIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aSArIDF9LiAke3JlY31gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERpc3BsYXkgY29uZmlnIHN1bW1hcnlcbiAgICAgICAgaWYgKHJlc3VsdC5jb25maWdVc2VkLmNvbmZpZ1BhdGggfHwgcmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoODApKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnQ09ORklHVVJBVElPTicpO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCc9Jy5yZXBlYXQoODApKTtcbiAgICAgICAgICBpZiAocmVzdWx0LmNvbmZpZ1VzZWQuY29uZmlnUGF0aCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYENvbmZpZyBmaWxlOiAke3Jlc3VsdC5jb25maWdVc2VkLmNvbmZpZ1BhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQuY29uZmlnVXNlZC50aHJlc2hvbGRzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVGhyZXNob2xkczogd2FybmluZz0kJHtyZXN1bHQuY29uZmlnVXNlZC50aHJlc2hvbGRzLndhcm5pbmcgfHwgJ25vbmUnfSwgZXJyb3I9JCR7cmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcy5lcnJvciB8fCAnbm9uZSd9YCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcy5lbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgRW52aXJvbm1lbnQ6ICR7cmVzdWx0LmNvbmZpZ1VzZWQudGhyZXNob2xkcy5lbnZpcm9ubWVudH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdC5jb25maWdVc2VkLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRXhjbHVkZWQgcmVzb3VyY2VzOiAke3Jlc3VsdC5jb25maWdVc2VkLmV4Y2x1ZGVkUmVzb3VyY2VUeXBlcy5qb2luKCcsICcpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUG9zdCB0byBHaXRMYWIgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAob3B0aW9ucy5wb3N0VG9HaXRsYWIpIHtcbiAgICAgICAgY29uc3QgZ2l0bGFiVG9rZW4gPSBwcm9jZXNzLmVudi5HSVRMQUJfVE9LRU4gfHwgcHJvY2Vzcy5lbnYuQ0lfSk9CX1RPS0VOO1xuICAgICAgICBjb25zdCBwcm9qZWN0SWQgPSBwcm9jZXNzLmVudi5DSV9QUk9KRUNUX0lEO1xuICAgICAgICBjb25zdCBtZXJnZVJlcXVlc3RJaWQgPSBwcm9jZXNzLmVudi5DSV9NRVJHRV9SRVFVRVNUX0lJRDtcbiAgICAgICAgY29uc3QgZ2l0bGFiVXJsID0gcHJvY2Vzcy5lbnYuQ0lfU0VSVkVSX1VSTDtcblxuICAgICAgICBpZiAoIWdpdGxhYlRva2VuIHx8ICFwcm9qZWN0SWQgfHwgIW1lcmdlUmVxdWVzdElpZCB8fCAhZ2l0bGFiVXJsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignV2FybmluZzogR2l0TGFiIGVudmlyb25tZW50IHZhcmlhYmxlcyBub3QgZm91bmQuIFNraXBwaW5nIEdpdExhYiBwb3N0LicpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JlcXVpcmVkOiBDSV9KT0JfVE9LRU4sIENJX1BST0pFQ1RfSUQsIENJX01FUkdFX1JFUVVFU1RfSUlELCBDSV9TRVJWRVJfVVJMJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGdpdGxhYiA9IG5ldyBHaXRMYWJJbnRlZ3JhdGlvbih7XG4gICAgICAgICAgICAgIHRva2VuOiBnaXRsYWJUb2tlbixcbiAgICAgICAgICAgICAgYXBpVXJsOiBnaXRsYWJVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IGdpdGxhYi5wb3N0TWVyZ2VSZXF1ZXN0Q29tbWVudChcbiAgICAgICAgICAgICAgcHJvamVjdElkLFxuICAgICAgICAgICAgICBtZXJnZVJlcXVlc3RJaWQsXG4gICAgICAgICAgICAgIHJlc3VsdC5jb3N0QW5hbHlzaXMuc3VtbWFyeSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUmVzdWx0cyBwb3N0ZWQgdG8gR2l0TGFiIG1lcmdlIHJlcXVlc3QnKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgV2FybmluZzogRmFpbGVkIHRvIHBvc3QgdG8gR2l0TGFiOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUG9zdCB0byBHaXRIdWIgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAob3B0aW9ucy5wb3N0VG9HaXRodWIpIHtcbiAgICAgICAgY29uc3QgZ2l0aHViVG9rZW4gPSBwcm9jZXNzLmVudi5HSVRIVUJfVE9LRU47XG4gICAgICAgIGNvbnN0IGdpdGh1YlJlcG9zaXRvcnkgPSBwcm9jZXNzLmVudi5HSVRIVUJfUkVQT1NJVE9SWTtcbiAgICAgICAgY29uc3QgZ2l0aHViRXZlbnRQYXRoID0gcHJvY2Vzcy5lbnYuR0lUSFVCX0VWRU5UX1BBVEg7XG5cbiAgICAgICAgaWYgKCFnaXRodWJUb2tlbiB8fCAhZ2l0aHViUmVwb3NpdG9yeSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcm5pbmc6IEdpdEh1YiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbm90IGZvdW5kLiBTa2lwcGluZyBHaXRIdWIgcG9zdC4nKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdSZXF1aXJlZDogR0lUSFVCX1RPS0VOLCBHSVRIVUJfUkVQT1NJVE9SWScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBQYXJzZSByZXBvc2l0b3J5IG93bmVyIGFuZCBuYW1lXG4gICAgICAgICAgICBjb25zdCBbb3duZXIsIHJlcG9dID0gZ2l0aHViUmVwb3NpdG9yeS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICAvLyBHZXQgUFIgbnVtYmVyIGZyb20gZXZlbnQgcGF5bG9hZFxuICAgICAgICAgICAgbGV0IHByTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoZ2l0aHViRXZlbnRQYXRoICYmIGZzLmV4aXN0c1N5bmMoZ2l0aHViRXZlbnRQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBldmVudFBheWxvYWQgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhnaXRodWJFdmVudFBhdGgsICd1dGYtOCcpKTtcbiAgICAgICAgICAgICAgcHJOdW1iZXIgPSBldmVudFBheWxvYWQucHVsbF9yZXF1ZXN0Py5udW1iZXIgfHwgZXZlbnRQYXlsb2FkLmlzc3VlPy5udW1iZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFsc28gY2hlY2sgR0lUSFVCX1BSX05VTUJFUiBmb3IgZGlyZWN0IHNldHRpbmdcbiAgICAgICAgICAgIGlmICghcHJOdW1iZXIgJiYgcHJvY2Vzcy5lbnYuR0lUSFVCX1BSX05VTUJFUikge1xuICAgICAgICAgICAgICBwck51bWJlciA9IHBhcnNlSW50KHByb2Nlc3MuZW52LkdJVEhVQl9QUl9OVU1CRVIsIDEwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwck51bWJlcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXYXJuaW5nOiBDb3VsZCBub3QgZGV0ZXJtaW5lIFBSIG51bWJlci4gU2tpcHBpbmcgR2l0SHViIHBvc3QuJyk7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NldCBHSVRIVUJfUFJfTlVNQkVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGVuc3VyZSBydW5uaW5nIGluIGEgUFIgY29udGV4dC4nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IGdpdGh1YiA9IG5ldyBHaXRIdWJJbnRlZ3JhdGlvbih7XG4gICAgICAgICAgICAgICAgdG9rZW46IGdpdGh1YlRva2VuLFxuICAgICAgICAgICAgICAgIGFwaVVybDogcHJvY2Vzcy5lbnYuR0lUSFVCX0FQSV9VUkwgfHwgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20nLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBHaXRIdWItc3BlY2lmaWMgcmVwb3J0IHdpdGggdHJlbmQgaW5kaWNhdG9yc1xuICAgICAgICAgICAgICBjb25zdCBnaXRodWJSZXBvcnRlciA9IG5ldyBHaXRIdWJBY3Rpb25SZXBvcnRlcigpO1xuICAgICAgICAgICAgICBjb25zdCBjb21tZW50ID0gZ2l0aHViUmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnQoe1xuICAgICAgICAgICAgICAgIHRvdGFsRGVsdGE6IHJlc3VsdC5jb3N0QW5hbHlzaXMudG90YWxEZWx0YSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogcmVzdWx0LmNvc3RBbmFseXNpcy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICBhZGRlZENvc3RzOiByZXN1bHQuY29zdEFuYWx5c2lzLmFkZGVkUmVzb3VyY2VzLFxuICAgICAgICAgICAgICAgIHJlbW92ZWRDb3N0czogcmVzdWx0LmNvc3RBbmFseXNpcy5yZW1vdmVkUmVzb3VyY2VzLFxuICAgICAgICAgICAgICAgIG1vZGlmaWVkQ29zdHM6IHJlc3VsdC5jb3N0QW5hbHlzaXMubW9kaWZpZWRSZXNvdXJjZXMsXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gKG9wdGlvbnMuY29tbWVudFN0cmF0ZWd5IHx8ICd1cGRhdGUnKSBhcyBDb21tZW50U3RyYXRlZ3k7XG4gICAgICAgICAgICAgIGF3YWl0IGdpdGh1Yi5wb3N0UFJDb21tZW50KG93bmVyLCByZXBvLCBwck51bWJlciwgY29tbWVudCwgc3RyYXRlZ3kpO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnUmVzdWx0cyBwb3N0ZWQgdG8gR2l0SHViIHB1bGwgcmVxdWVzdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBXYXJuaW5nOiBGYWlsZWQgdG8gcG9zdCB0byBHaXRIdWI6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBFeGl0IHdpdGggYXBwcm9wcmlhdGUgY29kZSBiYXNlZCBvbiB0aHJlc2hvbGRcbiAgICAgIGlmIChyZXN1bHQudGhyZXNob2xkU3RhdHVzLmxldmVsID09PSAnZXJyb3InICYmICFyZXN1bHQudGhyZXNob2xkU3RhdHVzLnBhc3NlZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdQaXBlbGluZSBmYWlsZWQ6IENvc3QgdGhyZXNob2xkIGV4Y2VlZGVkJyk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgyKTtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0pO1xuXG5wcm9ncmFtLnBhcnNlKCk7XG4iXX0=
@@ -1 +1 @@
1
- v0.1.52
1
+ v0.1.53
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Suppress the AWS SDK NodeDeprecationWarning so it does not end up in
3
+ * piped output (for example CI pipelines that redirect stderr into a
4
+ * PR/MR comment). All other process warnings are preserved.
5
+ *
6
+ * Call once, as early as possible in an entry-point script.
7
+ */
8
+ export declare function suppressNodeDeprecationWarning(): void;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.suppressNodeDeprecationWarning = suppressNodeDeprecationWarning;
4
+ /**
5
+ * Suppress the AWS SDK NodeDeprecationWarning so it does not end up in
6
+ * piped output (for example CI pipelines that redirect stderr into a
7
+ * PR/MR comment). All other process warnings are preserved.
8
+ *
9
+ * Call once, as early as possible in an entry-point script.
10
+ */
11
+ function suppressNodeDeprecationWarning() {
12
+ const originalEmit = process.emit.bind(process);
13
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
14
+ process.emit = function (name, ...args) {
15
+ if (name === 'warning' && args[0]?.name === 'NodeDeprecationWarning') {
16
+ return false;
17
+ }
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ return originalEmit(name, ...args);
20
+ };
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3NOb2RlV2FybmluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3VwcHJlc3NOb2RlV2FybmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPQSx3RUFVQztBQWpCRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiw4QkFBOEI7SUFDNUMsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsOERBQThEO0lBQzdELE9BQWUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxJQUFZLEVBQUUsR0FBRyxJQUFXO1FBQzVELElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLHdCQUF3QixFQUFFLENBQUM7WUFDckUsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsOERBQThEO1FBQzlELE9BQVEsWUFBb0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdXBwcmVzcyB0aGUgQVdTIFNESyBOb2RlRGVwcmVjYXRpb25XYXJuaW5nIHNvIGl0IGRvZXMgbm90IGVuZCB1cCBpblxuICogcGlwZWQgb3V0cHV0IChmb3IgZXhhbXBsZSBDSSBwaXBlbGluZXMgdGhhdCByZWRpcmVjdCBzdGRlcnIgaW50byBhXG4gKiBQUi9NUiBjb21tZW50KS4gQWxsIG90aGVyIHByb2Nlc3Mgd2FybmluZ3MgYXJlIHByZXNlcnZlZC5cbiAqXG4gKiBDYWxsIG9uY2UsIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGluIGFuIGVudHJ5LXBvaW50IHNjcmlwdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1cHByZXNzTm9kZURlcHJlY2F0aW9uV2FybmluZygpOiB2b2lkIHtcbiAgY29uc3Qgb3JpZ2luYWxFbWl0ID0gcHJvY2Vzcy5lbWl0LmJpbmQocHJvY2Vzcyk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIChwcm9jZXNzIGFzIGFueSkuZW1pdCA9IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKG5hbWUgPT09ICd3YXJuaW5nJyAmJiBhcmdzWzBdPy5uYW1lID09PSAnTm9kZURlcHJlY2F0aW9uV2FybmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICByZXR1cm4gKG9yaWdpbmFsRW1pdCBhcyBhbnkpKG5hbWUsIC4uLmFyZ3MpO1xuICB9O1xufVxuIl19
package/package.json CHANGED
@@ -93,7 +93,7 @@
93
93
  "publishConfig": {
94
94
  "access": "public"
95
95
  },
96
- "version": "0.1.52",
96
+ "version": "0.1.53",
97
97
  "bugs": {
98
98
  "url": "https://github.com/buildinginthecloud/cdk-cost-analyzer/issues"
99
99
  },