@aws-cdk/toolkit-lib 1.30.0 → 1.32.0

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.
Files changed (111) hide show
  1. package/build-info.json +2 -2
  2. package/lib/actions/bootstrap/index.d.ts +5 -0
  3. package/lib/actions/bootstrap/index.js +35 -2
  4. package/lib/actions/deploy/index.d.ts +6 -0
  5. package/lib/actions/deploy/index.js +1 -1
  6. package/lib/actions/destroy/index.d.ts +6 -0
  7. package/lib/actions/destroy/index.js +1 -1
  8. package/lib/actions/diff/private/helpers.js +36 -3
  9. package/lib/api/aws-auth/account-cache.js +36 -3
  10. package/lib/api/aws-auth/sdk-provider.js +36 -3
  11. package/lib/api/aws-auth/sdk.d.ts +2 -1
  12. package/lib/api/aws-auth/sdk.js +2 -1
  13. package/lib/api/aws-auth/user-agent.js +35 -2
  14. package/lib/api/aws-auth/util.js +35 -2
  15. package/lib/api/bootstrap/bootstrap-environment.js +35 -2
  16. package/lib/api/bootstrap/bootstrap-props.d.ts +6 -0
  17. package/lib/api/bootstrap/bootstrap-props.js +1 -1
  18. package/lib/api/bootstrap/deploy-bootstrap.js +39 -4
  19. package/lib/api/cloud-assembly/context-store.js +36 -3
  20. package/lib/api/cloud-assembly/environment.js +37 -4
  21. package/lib/api/cloud-assembly/private/context-aware-source.js +35 -2
  22. package/lib/api/cloud-assembly/private/exec.js +35 -2
  23. package/lib/api/cloud-assembly/private/prepare-source.js +39 -6
  24. package/lib/api/cloud-assembly/source-builder.js +37 -4
  25. package/lib/api/cloud-assembly/stack-assembly.js +8 -4
  26. package/lib/api/cloudformation/logical-id-map.js +35 -2
  27. package/lib/api/cloudformation/nested-stack-helpers.js +36 -3
  28. package/lib/api/cloudformation/template-body-parameter.js +42 -6
  29. package/lib/api/deployments/asset-manifest-builder.js +35 -2
  30. package/lib/api/deployments/assets.js +42 -6
  31. package/lib/api/deployments/cfn-api.d.ts +4 -2
  32. package/lib/api/deployments/cfn-api.js +47 -6
  33. package/lib/api/deployments/deploy-stack.d.ts +13 -0
  34. package/lib/api/deployments/deploy-stack.js +29 -9
  35. package/lib/api/deployments/deployment-result.d.ts +7 -1
  36. package/lib/api/deployments/deployment-result.js +1 -1
  37. package/lib/api/deployments/deployments.d.ts +5 -0
  38. package/lib/api/deployments/deployments.js +42 -4
  39. package/lib/api/diagnosing/format-utils.d.ts +29 -0
  40. package/lib/api/diagnosing/format-utils.js +141 -1
  41. package/lib/api/diagnosing/investigate-custom-resource.d.ts +17 -0
  42. package/lib/api/diagnosing/investigate-custom-resource.js +247 -0
  43. package/lib/api/diagnosing/investigate-ecs-service.d.ts +20 -0
  44. package/lib/api/diagnosing/investigate-ecs-service.js +242 -0
  45. package/lib/api/diagnosing/resource-identifiers.d.ts +39 -0
  46. package/lib/api/diagnosing/resource-identifiers.js +90 -0
  47. package/lib/api/diagnosing/resource-investigation.d.ts +2 -30
  48. package/lib/api/diagnosing/resource-investigation.js +9 -289
  49. package/lib/api/diff/diff-formatter.js +11 -8
  50. package/lib/api/drift/drift-formatter.js +20 -17
  51. package/lib/api/garbage-collection/garbage-collector.js +7 -4
  52. package/lib/api/garbage-collection/progress-printer.js +7 -4
  53. package/lib/api/hotswap/hotswap-deployments.js +47 -10
  54. package/lib/api/hotswap/hotswap-template-cache.js +36 -3
  55. package/lib/api/io/private/io-default-messages.js +35 -2
  56. package/lib/api/io/private/message-maker.d.ts +4 -0
  57. package/lib/api/io/private/message-maker.js +3 -1
  58. package/lib/api/io/private/messages.d.ts +5 -0
  59. package/lib/api/io/private/messages.js +55 -2
  60. package/lib/api/io/private/span.js +35 -2
  61. package/lib/api/logs-monitor/logs-monitor.js +40 -4
  62. package/lib/api/network-detector/network-detector.js +37 -4
  63. package/lib/api/notices/cached-data-source.js +35 -2
  64. package/lib/api/notices/filter.js +35 -2
  65. package/lib/api/notices/notices.js +35 -2
  66. package/lib/api/notices/web-data-source.js +35 -2
  67. package/lib/api/refactoring/digest.js +35 -2
  68. package/lib/api/refactoring/stack-definitions.js +40 -4
  69. package/lib/api/resource-import/importer.js +60 -17
  70. package/lib/api/resource-import/migrator.js +42 -6
  71. package/lib/api/rwlock.js +35 -2
  72. package/lib/api/settings.js +38 -5
  73. package/lib/api/source-tracing/private/stack-source-tracing.js +38 -5
  74. package/lib/api/stack-events/resource-errors.d.ts +12 -0
  75. package/lib/api/stack-events/resource-errors.js +2 -1
  76. package/lib/api/stack-events/stack-activity-monitor.d.ts +5 -0
  77. package/lib/api/stack-events/stack-activity-monitor.js +42 -2
  78. package/lib/api/stack-events/stack-event-poller.d.ts +8 -1
  79. package/lib/api/stack-events/stack-event-poller.js +19 -1
  80. package/lib/api/stack-events/stack-progress-monitor.js +35 -2
  81. package/lib/api/toolkit-info.js +7 -4
  82. package/lib/api/tree.js +36 -3
  83. package/lib/api/validate/validate-formatting.js +53 -17
  84. package/lib/api/work-graph/build-destroy-work-graph.js +35 -2
  85. package/lib/api/work-graph/work-graph-builder.js +35 -2
  86. package/lib/context-providers/index.js +35 -2
  87. package/lib/private/activity-printer/current.d.ts +19 -0
  88. package/lib/private/activity-printer/current.js +109 -17
  89. package/lib/private/activity-printer/history.js +50 -14
  90. package/lib/private/tools.js +38 -1
  91. package/lib/toolkit/non-interactive-io-host.js +11 -8
  92. package/lib/toolkit/private/collect-annotation-report.js +35 -2
  93. package/lib/toolkit/private/validation-report.js +36 -3
  94. package/lib/toolkit/toolkit-error.d.ts +20 -0
  95. package/lib/toolkit/toolkit-error.js +30 -2
  96. package/lib/toolkit/toolkit.d.ts +8 -0
  97. package/lib/toolkit/toolkit.js +107 -41
  98. package/lib/toolkit/types.d.ts +22 -0
  99. package/lib/toolkit/types.js +1 -1
  100. package/lib/util/cfn-express.d.ts +24 -0
  101. package/lib/util/cfn-express.js +55 -0
  102. package/lib/util/content-hash.js +35 -2
  103. package/lib/util/directories.js +38 -5
  104. package/lib/util/guess-language.js +36 -3
  105. package/lib/util/index.d.ts +1 -0
  106. package/lib/util/index.js +2 -1
  107. package/lib/util/package-info.js +35 -2
  108. package/lib/util/serialize.js +36 -3
  109. package/lib/util/version-range.js +35 -2
  110. package/lib/util/yaml-cfn.js +36 -3
  111. package/package.json +2 -2
@@ -1,11 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Settings = exports.TRANSIENT_CONTEXT_KEY = void 0;
4
- const os = require("os");
5
- const fs_path = require("path");
6
- const fs = require("fs-extra");
37
+ const os = __importStar(require("os"));
38
+ const fs_path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs-extra"));
7
40
  const toolkit_error_1 = require("../toolkit/toolkit-error");
8
- const util = require("../util");
41
+ const util = __importStar(require("../util"));
9
42
  /**
10
43
  * If a context value is an object with this key set to a truthy value, it won't be saved to cdk.context.json
11
44
  */
@@ -117,4 +150,4 @@ function isTransientValue(value) {
117
150
  value !== null &&
118
151
  value[exports.TRANSIENT_CONTEXT_KEY]);
119
152
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsZ0NBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQiw0REFBd0Q7QUFDeEQsZ0NBQWdDO0FBSWhDOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxrQkFBa0IsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQVlUO0lBWEgsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQW9CO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDekIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sU0FBUyxHQUFHLEtBQUssQ0FBQztJQUUxQixZQUNVLFdBQXdCLEVBQUUsRUFDbEMsUUFBUSxHQUFHLEtBQUs7UUFEUixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUdsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFnQjtRQUNoQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEUsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDWixPQUFPLElB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QUMsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLEtBQUssS0FBSyxJQUFJO1FBQ2IsS0FBYSxDQUFDLDZCQUFxQixDQUFDLENBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgZnNfcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBTZXR0aW5nc01hcCA9IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbi8qKlxuICogSWYgYSBjb250ZXh0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIHRoaXMga2V5IHNldCB0byBhIHRydXRoeSB2YWx1ZSwgaXQgd29uJ3QgYmUgc2F2ZWQgdG8gY2RrLmNvbnRleHQuanNvblxuICovXG5leHBvcnQgY29uc3QgVFJBTlNJRU5UX0NPTlRFWFRfS0VZID0gJyRkb250U2F2ZUNvbnRleHQnO1xuXG4vKipcbiAqIEEgc2luZ2xlIGJhZyBvZiBzZXR0aW5nc1xuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ3Mge1xuICBwdWJsaWMgc3RhdGljIG1lcmdlQWxsKC4uLnNldHRpbmdzOiBTZXR0aW5nc1tdKTogU2V0dGluZ3Mge1xuICAgIGxldCByZXQgPSBuZXcgU2V0dGluZ3MoKTtcbiAgICBmb3IgKGNvbnN0IHNldHRpbmcgb2Ygc2V0dGluZ3MpIHtcbiAgICAgIHJldCA9IHJldC5tZXJnZShzZXR0aW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRPbmx5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NNYXAgPSB7fSxcbiAgICByZWFkT25seSA9IGZhbHNlLFxuICApIHtcbiAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5O1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkT25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZShmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRIb21lRGlyKGZpbGVOYW1lKTtcbiAgICBhd2FpdCBmcy53cml0ZUpzb24oZXhwYW5kZWQsIHN0cmlwVHJhbnNpZW50VmFsdWVzKHRoaXMuc2V0dGluZ3MpLCB7XG4gICAgICBzcGFjZXM6IDIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldChbXSk7XG4gIH1cblxuICBwdWJsaWMgbWVyZ2Uob3RoZXI6IFNldHRpbmdzKTogU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgU2V0dGluZ3ModXRpbC5kZWVwTWVyZ2UodGhpcy5zZXR0aW5ncywgb3RoZXIuc2V0dGluZ3MpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJTZXR0aW5ncyhrZXlQcmVmaXg6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBTZXR0aW5ncyh0aGlzLmdldChrZXlQcmVmaXgpIHx8IHt9LCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgbWFrZVJlYWRPbmx5KCk6IFNldHRpbmdzIHtcbiAgICByZXR1cm4gbmV3IFNldHRpbmdzKHRoaXMuc2V0dGluZ3MsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHRlbXBvcmFyaWx5TXV0YWJsZShibG9jazogKHg6IFNldHRpbmdzKSA9PiB2b2lkKSB7XG4gICAgY29uc3Qgb2xkID0gdGhpcy5yZWFkT25seTtcbiAgICB0aGlzLl9yZWFkT25seSA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBibG9jayh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcmVhZE9ubHkgPSBvbGQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXR0aW5nc1JlYWRPbmx5JywgJ0Nhbm5vdCBjbGVhcigpOiBzZXR0aW5ncyBhcmUgcmVhZG9ubHknKTtcbiAgICB9XG4gICAgdGhpcy5zZXR0aW5ncyA9IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZXR0aW5ncykubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHVibGljIGdldChwYXRoOiBzdHJpbmdbXSk6IGFueSB7XG4gICAgcmV0dXJuIHV0aWwuZGVlcENsb25lKHV0aWwuZGVlcEdldCh0aGlzLnNldHRpbmdzLCBwYXRoKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0KHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogYW55KTogU2V0dGluZ3Mge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXR0aW5nc1JlYWRPbmx5JywgYENhbid0IHNldCAke3BhdGh9OiBzZXR0aW5ncyBvYmplY3QgaXMgcmVhZG9ubHlgKTtcbiAgICB9XG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBkZWVwU2V0IGNhbid0IGhhbmRsZSB0aGlzIGNhc2VcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXRpbC5kZWVwU2V0KHRoaXMuc2V0dGluZ3MsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNldChwYXRoLCB1bmRlZmluZWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4cGFuZEhvbWVEaXIoeDogc3RyaW5nKSB7XG4gIGlmICh4LnN0YXJ0c1dpdGgoJ34nKSkge1xuICAgIHJldHVybiBmc19wYXRoLmpvaW4ob3MuaG9tZWRpcigpLCB4LnNsaWNlKDEpKTtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYWxsIGNvbnRleHQgdmFsdWUgdGhhdCBhcmUgbm90IHRyYW5zaWVudCBjb250ZXh0IHZhbHVlc1xuICovXG5mdW5jdGlvbiBzdHJpcFRyYW5zaWVudFZhbHVlcyhvYmo6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgY29uc3QgcmV0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmICghaXNUcmFuc2llbnRWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHJldFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgdHJhbnNpZW50IGNvbnRleHQgdmFsdWVcbiAqXG4gKiBWYWx1ZXMgdGhhdCBhcmUgb2JqZWN0cyB3aXRoIGEgbWFnaWMga2V5IHNldCB0byBhIHRydXRoeSB2YWx1ZSBhcmUgY29uc2lkZXJlZCB0cmFuc2llbnQuXG4gKi9cbmZ1bmN0aW9uIGlzVHJhbnNpZW50VmFsdWUodmFsdWU6IGFueSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICh2YWx1ZSBhcyBhbnkpW1RSQU5TSUVOVF9DT05URVhUX0tFWV1cbiAgKTtcbn1cbiJdfQ==
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsOENBQWdDO0FBQ2hDLDZDQUErQjtBQUMvQiw0REFBd0Q7QUFDeEQsOENBQWdDO0FBSWhDOztHQUVHO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRyxrQkFBa0IsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQVlUO0lBWEgsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQW9CO1FBQzVDLElBQUksR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDekIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMvQixHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8sU0FBUyxHQUFHLEtBQUssQ0FBQztJQUUxQixZQUNVLFdBQXdCLEVBQUUsRUFDbEMsUUFBUSxHQUFHLEtBQUs7UUFEUixhQUFRLEdBQVIsUUFBUSxDQUFrQjtRQUdsQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFnQjtRQUNoQyxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDaEUsTUFBTSxFQUFFLENBQUM7U0FDVixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNk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LElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLEtBQUssS0FBSyxJQUFJO1FBQ2IsS0FBYSxDQUFDLDZCQUFxQixDQUFDLENBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgZnNfcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgdHlwZSBTZXR0aW5nc01hcCA9IHsgW2tleTogc3RyaW5nXTogYW55IH07XG5cbi8qKlxuICogSWYgYSBjb250ZXh0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIHRoaXMga2V5IHNldCB0byBhIHRydXRoeSB2YWx1ZSwgaXQgd29uJ3QgYmUgc2F2ZWQgdG8gY2RrLmNvbnRleHQuanNvblxuICovXG5leHBvcnQgY29uc3QgVFJBTlNJRU5UX0NPTlRFWFRfS0VZID0gJyRkb250U2F2ZUNvbnRleHQnO1xuXG4vKipcbiAqIEEgc2luZ2xlIGJhZyBvZiBzZXR0aW5nc1xuICovXG5leHBvcnQgY2xhc3MgU2V0dGluZ3Mge1xuICBwdWJsaWMgc3RhdGljIG1lcmdlQWxsKC4uLnNldHRpbmdzOiBTZXR0aW5nc1tdKTogU2V0dGluZ3Mge1xuICAgIGxldCByZXQgPSBuZXcgU2V0dGluZ3MoKTtcbiAgICBmb3IgKGNvbnN0IHNldHRpbmcgb2Ygc2V0dGluZ3MpIHtcbiAgICAgIHJldCA9IHJldC5tZXJnZShzZXR0aW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRPbmx5ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXR0aW5nczogU2V0dGluZ3NNYXAgPSB7fSxcbiAgICByZWFkT25seSA9IGZhbHNlLFxuICApIHtcbiAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5O1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkT25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2F2ZShmaWxlTmFtZTogc3RyaW5nKTogUHJvbWlzZTx0aGlzPiB7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRIb21lRGlyKGZpbGVOYW1lKTtcbiAgICBhd2FpdCBmcy53cml0ZUpzb24oZXhwYW5kZWQsIHN0cmlwVHJhbnNpZW50VmFsdWVzKHRoaXMuc2V0dGluZ3MpLCB7XG4gICAgICBzcGFjZXM6IDIsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmdldChbXSk7XG4gIH1cblxuICBwdWJsaWMgbWVyZ2Uob3RoZXI6IFNldHRpbmdzKTogU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgU2V0dGluZ3ModXRpbC5kZWVwTWVyZ2UodGhpcy5zZXR0aW5ncywgb3RoZXIuc2V0dGluZ3MpKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJTZXR0aW5ncyhrZXlQcmVmaXg6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIG5ldyBTZXR0aW5ncyh0aGlzLmdldChrZXlQcmVmaXgpIHx8IHt9LCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgbWFrZVJlYWRPbmx5KCk6IFNldHRpbmdzIHtcbiAgICByZXR1cm4gbmV3IFNldHRpbmdzKHRoaXMuc2V0dGluZ3MsIHRydWUpO1xuICB9XG5cbiAgcHVibGljIHRlbXBvcmFyaWx5TXV0YWJsZShibG9jazogKHg6IFNldHRpbmdzKSA9PiB2b2lkKSB7XG4gICAgY29uc3Qgb2xkID0gdGhpcy5yZWFkT25seTtcbiAgICB0aGlzLl9yZWFkT25seSA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBibG9jayh0aGlzKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fcmVhZE9ubHkgPSBvbGQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXR0aW5nc1JlYWRPbmx5JywgJ0Nhbm5vdCBjbGVhcigpOiBzZXR0aW5ncyBhcmUgcmVhZG9ubHknKTtcbiAgICB9XG4gICAgdGhpcy5zZXR0aW5ncyA9IHt9O1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZXR0aW5ncykubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHVibGljIGdldChwYXRoOiBzdHJpbmdbXSk6IGFueSB7XG4gICAgcmV0dXJuIHV0aWwuZGVlcENsb25lKHV0aWwuZGVlcEdldCh0aGlzLnNldHRpbmdzLCBwYXRoKSk7XG4gIH1cblxuICBwdWJsaWMgc2V0KHBhdGg6IHN0cmluZ1tdLCB2YWx1ZTogYW55KTogU2V0dGluZ3Mge1xuICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKCdTZXR0aW5nc1JlYWRPbmx5JywgYENhbid0IHNldCAke3BhdGh9OiBzZXR0aW5ncyBvYmplY3QgaXMgcmVhZG9ubHlgKTtcbiAgICB9XG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBkZWVwU2V0IGNhbid0IGhhbmRsZSB0aGlzIGNhc2VcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXRpbC5kZWVwU2V0KHRoaXMuc2V0dGluZ3MsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdW5zZXQocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNldChwYXRoLCB1bmRlZmluZWQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4cGFuZEhvbWVEaXIoeDogc3RyaW5nKSB7XG4gIGlmICh4LnN0YXJ0c1dpdGgoJ34nKSkge1xuICAgIHJldHVybiBmc19wYXRoLmpvaW4ob3MuaG9tZWRpcigpLCB4LnNsaWNlKDEpKTtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gYWxsIGNvbnRleHQgdmFsdWUgdGhhdCBhcmUgbm90IHRyYW5zaWVudCBjb250ZXh0IHZhbHVlc1xuICovXG5mdW5jdGlvbiBzdHJpcFRyYW5zaWVudFZhbHVlcyhvYmo6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgY29uc3QgcmV0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmICghaXNUcmFuc2llbnRWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHJldFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGEgdHJhbnNpZW50IGNvbnRleHQgdmFsdWVcbiAqXG4gKiBWYWx1ZXMgdGhhdCBhcmUgb2JqZWN0cyB3aXRoIGEgbWFnaWMga2V5IHNldCB0byBhIHRydXRoeSB2YWx1ZSBhcmUgY29uc2lkZXJlZCB0cmFuc2llbnQuXG4gKi9cbmZ1bmN0aW9uIGlzVHJhbnNpZW50VmFsdWUodmFsdWU6IGFueSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICh2YWx1ZSBhcyBhbnkpW1RSQU5TSUVOVF9DT05URVhUX0tFWV1cbiAgKTtcbn1cbiJdfQ==
@@ -1,10 +1,43 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.StackArtifactSourceTracer = void 0;
4
- const fs = require("fs");
5
- const path = require("path");
6
- const cxapi = require("@aws-cdk/cloud-assembly-api");
7
- const cxschema = require("@aws-cdk/cloud-assembly-schema");
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const cxapi = __importStar(require("@aws-cdk/cloud-assembly-api"));
40
+ const cxschema = __importStar(require("@aws-cdk/cloud-assembly-schema"));
8
41
  /**
9
42
  * Use a stack artifact as the root for tracing problems with this deployment
10
43
  *
@@ -131,4 +164,4 @@ function getStackTemplate(stack, logicalIdPath) {
131
164
  }
132
165
  return template;
133
166
  }
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stc291cmNlLXRyYWNpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFjay1zb3VyY2UtdHJhY2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLHFEQUFxRDtBQUNyRCwyREFBMkQ7QUFJM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEseUJBQXlCO0lBQ1A7SUFBN0IsWUFBNkIsS0FBd0M7UUFBeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUM7SUFDckUsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLFVBQWtCLEVBQ2xCLHFCQUErQixFQUMvQixTQUFpQixFQUNqQixZQUFxQjtRQUVyQixNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUUvRSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU87WUFDTCxhQUFhO1lBQ2Isa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7WUFDckUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNqSCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBa0IsRUFBRSxxQkFBK0I7UUFDekUseUZBQXlGO1FBQ3pGLHVCQUF1QjtRQUN2QixJQUFJLHFCQUFxQixDQUFDLE1B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QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFHLENBQUM7UUFFL0IsdUVBQXVFO1FBQ3ZFLHdDQUF3QztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDM0YsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgKiBhcyBjeHNjaGVtYSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBTb3VyY2VUcmFjZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgSVNvdXJjZVRyYWNlciB9IGZyb20gJy4vc291cmNlLXRyYWNpbmcnO1xuXG4vKipcbiAqIFVzZSBhIHN0YWNrIGFydGlmYWN0IGFzIHRoZSByb290IGZvciB0cmFjaW5nIHByb2JsZW1zIHdpdGggdGhpcyBkZXBsb3ltZW50XG4gKlxuICogVGhlIHN0YWNrIGNhbiBiZSBlaXRoZXIgdGhlIHN0YWNrIGl0c2VsZiwgb3IgYSBuZXN0ZWQgc3RhY2sgaW5zaWRlIGl0LlxuICpcbiAqICMjIFN0cmF0ZWd5XG4gKlxuICogVGhlIGZpcnN0IHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgdHJhbnNsYXRlIHRoZSBnaXZlbiByZXNvdXJjZSB0byBhXG4gKiBjb25zdHJ1Y3QgcGF0aC5cbiAqXG4gKiAtIFRoZSBjb25zdHJ1Y3QgcGF0aCBjYW4gYmUgZm91bmQgaW4gdGhlIHRhcmdldCB0ZW1wbGF0ZSwgaWYgdGhhdCBvcHRpb24gd2FzXG4gKiAgIGVuYWJsZWQgZHVyaW5nIHN5bnRoZXNpczsgb3JcbiAqIC0gV2UgY2FuICh0cnkgdG8pIGRpZyBpdCBvdXQgb2YgdGhlIGB0cmVlLmpzb25gIG9uY2VcbiAqICAgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvMzc2MzAgaXMgbWVyZ2VkIChhbHRob3VnaCB3ZSBzdGlsbFxuICogICBuZWVkIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YWNrKS5cbiAqXG4gKiBFc3BlY2lhbGx5IGZvciBuZXN0ZWQgc3RhY2tzIHRoZSBhYm92ZSBpcyBoYXJkLCBzaW5jZSB0aGlzIGNhbGxlZCBmcm9tIGFcbiAqIHBsYWNlIHdoZXJlIHdlIG9ubHkgaGF2ZSBDbG91ZEZvcm1hdGlvbiBpbmZvcm1hdGlvbiAoc3RhY2sgbmFtZSkuIFRoZSBzdGFja1xuICogbmFtZSBvZiBhIG5lc3RlZCBzdGFjayBjYW5ub3QgYmUgcHJlZGljdGVkIGluIGFkdmFuY2UsIGFuZCBldmVuIGlmIHdlIGhhdmVcbiAqIHRoZSBsaXN0IG9mIGxvZ2ljYWwgSURzIHRvIGdldCB0byB0aGUgbmVzdGVkIHN0YWNrICh3aGljaCB3ZSBkbyksIGZpbmRpbmdcbiAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgaXMgbm90IGVhc3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFja0FydGlmYWN0U291cmNlVHJhY2VyIGltcGxlbWVudHMgSVNvdXJjZVRyYWNlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRyYWNlUmVzb3VyY2UoXG4gICAgX3N0YWNrTmFtZTogc3RyaW5nLFxuICAgIG5lc3RlZFN0YWNrTG9naWNhbElkczogc3RyaW5nW10sXG4gICAgbG9naWNhbElkOiBzdHJpbmcsXG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFNvdXJjZVRyYWNlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY29udGFpbmluZ1RlbXBsYXRlID0gZ2V0U3RhY2tUZW1wbGF0ZSh0aGlzLnN0YWNrLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZHMpO1xuXG4gICAgY29uc3QgY29uc3RydWN0UGF0aCA9IGNvbnRhaW5pbmdUZW1wbGF0ZT8uUmVzb3VyY2VzPy5bbG9naWNhbElkXT8uTWV0YWRhdGE/LltjeGFwaS5QQVRIX01FVEFEQVRBX0tFWV07XG4gICAgaWYgKCFjb25zdHJ1Y3RQYXRoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb25zdHJ1Y3RQYXRoLFxuICAgICAgY3JlYXRpb25TdGFja1RyYWNlOiBmaW5kQ3JlYXRpb25TdGFja1RyYWNlKHRoaXMuc3RhY2ssIGNvbnN0cnVjdFBhdGgpLFxuICAgICAgbXV0YXRpb25TdGFja1RyYWNlczogcHJvcGVydHlOYW1lID8gZmluZE11dGF0aW9uU3RhY2tUcmFjZXModGhpcy5zdGFjaywgY29uc3RydWN0UGF0aCwgcHJvcGVydHlOYW1lKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRyYWNlU3RhY2soX3N0YWNrTmFtZTogc3RyaW5nLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxTb3VyY2VUcmFjZSB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIFRoaXMgY2FuIGVpdGhlciBiZSBhIHN0YWNrIG9yIG5lc3RlZCBzdGFjay4gSWYgaXQncyBhIG5lc3RlZCBzdGFjaywgdHJhY2UgdGhlIHJlc291cmNlXG4gICAgLy8gaW4gdGhlIHBhcmVudCBzdGFjay5cbiAgICBpZiAobmVzdGVkU3RhY2tMb2dpY2FsSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxhc3RMb2dpY2FsSWQgPSBuZXN0ZWRTdGFja0xvZ2ljYWxJZHMucG9wKCkhO1xuICAgICAgcmV0dXJuIHRoaXMudHJhY2VSZXNvdXJjZShfc3RhY2tOYW1lLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZHMsIGxhc3RMb2dpY2FsSWQpO1xuICAgIH1cblxuICAgIC8vIE11c3QgYmUgdGhlIHJvb3Qgc3RhY2tcbiAgICBjb25zdCBjb25zdHJ1Y3RQYXRoID0gdGhpcy5zdGFjay5oaWVyYXJjaGljYWxJZDtcbiAgICByZXR1cm4ge1xuICAgICAgY29uc3RydWN0UGF0aCxcbiAgICAgIGNyZWF0aW9uU3RhY2tUcmFjZTogZmluZENyZWF0aW9uU3RhY2tUcmFjZSh0aGlzLnN0YWNrLCBjb25zdHJ1Y3RQYXRoKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogVHJ5IHRvIGZpbmQgdGhlIGNyZWF0aW9uIHN0YWNrIHRyYWNlIGZvciB0aGUgZ2l2ZW4gY29uc3RydWN0XG4gKlxuICogLSBUaGlzIGNhbiBiZSB0aGUgJ3RyYWNlJyBvZiBhZGRpbmcgdGhlICdhd3M6Y2RrOmxvZ2ljYWxJZCcgbWV0YWRhdGEuXG4gKiAtIFRoaXMgY2FuIGFsc28gYmUgZGVkaWNhdGVkIG1ldGFkYXRhICh3ZSBoYXZlbid0IGFkZGVkIGl0IHlldCkuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBwYXRoIGluIG1ldGFkYXRhIEFMV0FZUyBzdGFydHMgd2l0aCBhIGAvYCB3aGlsZSB0aGUgY29uc3RydWN0IHBhdGhcbiAqIHdlIGhhdmUgaGVyZSBwcm9iYWJseSBkb2Vzbid0LCBhY2NvdW50IGZvciB0aGF0IGFzIHdlbGwuXG4gKlxuICogU3RhY2sncyBjdXJyZW50bHkgZG9uJ3QgZW1pdCBhbnkgc3RhY2sgdHJhY2VzLlxuICovXG5mdW5jdGlvbiBmaW5kQ3JlYXRpb25TdGFja1RyYWNlKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGNvbnN0cnVjdFBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICAvLyBsb2dpY2FsIElEIHRyYWNlc1xuICAgIC4uLnJlc291cmNlTWV0YWRhdGEoc3RhY2ssIGNvbnN0cnVjdFBhdGgsIGN4c2NoZW1hLkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuTE9HSUNBTF9JRCkuZmxhdE1hcCgobSkgPT4ge1xuICAgICAgaWYgKG0udHJhY2UpIHtcbiAgICAgICAgcmV0dXJuIFttLnRyYWNlXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9KSxcbiAgICAvLyBDcmVhdGlvbiBzdGFja1xuICAgIC4uLnJlc291cmNlTWV0YWRhdGEoc3RhY2ssIGNvbnN0cnVjdFBhdGgsICdhd3M6Y2RrOmNyZWF0aW9uU3RhY2snKS5mbGF0TWFwKChtKSA9PiB7XG4gICAgICBpZiAobS5kYXRhKSB7XG4gICAgICAgIHJldHVybiBbbS5kYXRhIGFzIHVua25vd24gYXMgc3RyaW5nW11dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pLFxuICBdO1xuXG4gIHJldHVybiBjYW5kaWRhdGVzWzBdO1xufVxuXG4vKipcbiAqIEZpbmQgcHJvcGVydHkgbXV0YXRpb24gc3RhY2sgdHJhY2VzXG4gKlxuICogVGhlc2UgYXJlIGFsbCBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUgYSBwcm9wZXJ0eSdzIHZhbHVlIGlzIG92ZXJ3cml0dGVuIGFmdGVyXG4gKiBjb25zdHJ1Y3QgY3JlYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGZpbmRNdXRhdGlvblN0YWNrVHJhY2VzKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGNvbnN0cnVjdFBhdGg6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXVtdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYXNzaWdubWVudHMgPSByZXNvdXJjZU1ldGFkYXRhKHN0YWNrLCBjb25zdHJ1Y3RQYXRoLCAnYXdzOmNkazpwcm9wZXJ0eUFzc2lnbm1lbnQnKTtcblxuICByZXR1cm4gYXNzaWdubWVudHMuZmxhdE1hcCgobSkgPT4ge1xuICAgIGNvbnN0IGRhdGE6IFByb3BlcnR5QXNzaWdubWVudERhdGEgfCB1bmRlZmluZWQgPSBtLmRhdGEgYXMgYW55O1xuICAgIGlmIChkYXRhPy5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZSkge1xuICAgICAgcmV0dXJuIFtkYXRhLnN0YWNrVHJhY2VdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXNvdXJjZU1ldGFkYXRhKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGNvbnN0cnVjdFBhdGg6IHN0cmluZywgbWV0YWRhdGFUeXBlOiBzdHJpbmcpOiBjeHNjaGVtYS5NZXRhZGF0YUVudHJ5W10ge1xuICBpZiAoIWNvbnN0cnVjdFBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgY29uc3RydWN0UGF0aCA9ICcvJyArIGNvbnN0cnVjdFBhdGg7XG4gIH1cblxuICByZXR1cm4gKHN0YWNrLm1ldGFkYXRhW2NvbnN0cnVjdFBhdGhdID8/IFtdKS5maWx0ZXIoKG0pID0+IG0udHlwZSA9PT0gbWV0YWRhdGFUeXBlKTtcbn1cblxuLyoqXG4gKiBGaW5kIHRoZSBzdGFjayB0ZW1wbGF0ZSBnaXZlbiBhIHJvb3Qgc3RhY2sgYW5kIGEgbG9naWNhbCBJRCBwYXRoIGludG8gbmVzdGVkIHN0YWNrc1xuICovXG5mdW5jdGlvbiBnZXRTdGFja1RlbXBsYXRlKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGxvZ2ljYWxJZFBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgbGV0IHRlbXBsYXRlID0gc3RhY2sudGVtcGxhdGU7XG4gIGNvbnN0IHNlZ21lbnRzID0gWy4uLmxvZ2ljYWxJZFBhdGhdO1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IG5leHQgPSBzZWdtZW50cy5zaGlmdCgpITtcblxuICAgIC8vIFRoZSBuZXN0ZWQgc3RhY2sgcmVzb3VyY2UgaGFzIG1ldGFkYXRhIHRvIHRlbGwgdXMgd2hpY2ggKGxvY2FsKSBmaWxlXG4gICAgLy8gd2UgYXJlIGxvb2tpbmcgZm9yOiBcImF3czphc3NldDpwYXRoXCIuXG4gICAgY29uc3QgbmV4dFRlbXBsYXRlRmlsZSA9IHRlbXBsYXRlLlJlc291cmNlc1tuZXh0XT8uTWV0YWRhdGE/LltjeGFwaS5BU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9QQVRIX0tFWV07XG4gICAgaWYgKCFuZXh0VGVtcGxhdGVGaWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRUZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHN0YWNrLnRlbXBsYXRlRnVsbFBhdGgpLCBuZXh0VGVtcGxhdGVGaWxlKTtcbiAgICB0ZW1wbGF0ZSA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG5leHRUZW1wbGF0ZVBhdGgsICd1dGYtOCcpKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wbGF0ZTtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5QXNzaWdubWVudERhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgc3RhY2tUcmFjZTogc3RyaW5nW107XG59XG4iXX0=
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stc291cmNlLXRyYWNpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFjay1zb3VyY2UtdHJhY2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLG1FQUFxRDtBQUNyRCx5RUFBMkQ7QUFJM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEseUJBQXlCO0lBQ1A7SUFBN0IsWUFBNkIsS0FBd0M7UUFBeEMsVUFBSyxHQUFMLEtBQUssQ0FBbUM7SUFDckUsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQ3hCLFVBQWtCLEVBQ2xCLHFCQUErQixFQUMvQixTQUFpQixFQUNqQixZQUFxQjtRQUVyQixNQUFNLGtCQUFrQixHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUUvRSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU87WUFDTCxhQUFhO1lBQ2Isa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUM7WUFDckUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNqSCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBa0IsRUFBRSxxQkFBK0I7UUFDekUseUZBQXlGO1FBQ3pG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QUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFHLENBQUM7UUFFL0IsdUVBQXVFO1FBQ3ZFLHdDQUF3QztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDM0YsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgKiBhcyBjeHNjaGVtYSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBTb3VyY2VUcmFjZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgSVNvdXJjZVRyYWNlciB9IGZyb20gJy4vc291cmNlLXRyYWNpbmcnO1xuXG4vKipcbiAqIFVzZSBhIHN0YWNrIGFydGlmYWN0IGFzIHRoZSByb290IGZvciB0cmFjaW5nIHByb2JsZW1zIHdpdGggdGhpcyBkZXBsb3ltZW50XG4gKlxuICogVGhlIHN0YWNrIGNhbiBiZSBlaXRoZXIgdGhlIHN0YWNrIGl0c2VsZiwgb3IgYSBuZXN0ZWQgc3RhY2sgaW5zaWRlIGl0LlxuICpcbiAqICMjIFN0cmF0ZWd5XG4gKlxuICogVGhlIGZpcnN0IHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgdHJhbnNsYXRlIHRoZSBnaXZlbiByZXNvdXJjZSB0byBhXG4gKiBjb25zdHJ1Y3QgcGF0aC5cbiAqXG4gKiAtIFRoZSBjb25zdHJ1Y3QgcGF0aCBjYW4gYmUgZm91bmQgaW4gdGhlIHRhcmdldCB0ZW1wbGF0ZSwgaWYgdGhhdCBvcHRpb24gd2FzXG4gKiAgIGVuYWJsZWQgZHVyaW5nIHN5bnRoZXNpczsgb3JcbiAqIC0gV2UgY2FuICh0cnkgdG8pIGRpZyBpdCBvdXQgb2YgdGhlIGB0cmVlLmpzb25gIG9uY2VcbiAqICAgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvMzc2MzAgaXMgbWVyZ2VkIChhbHRob3VnaCB3ZSBzdGlsbFxuICogICBuZWVkIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YWNrKS5cbiAqXG4gKiBFc3BlY2lhbGx5IGZvciBuZXN0ZWQgc3RhY2tzIHRoZSBhYm92ZSBpcyBoYXJkLCBzaW5jZSB0aGlzIGNhbGxlZCBmcm9tIGFcbiAqIHBsYWNlIHdoZXJlIHdlIG9ubHkgaGF2ZSBDbG91ZEZvcm1hdGlvbiBpbmZvcm1hdGlvbiAoc3RhY2sgbmFtZSkuIFRoZSBzdGFja1xuICogbmFtZSBvZiBhIG5lc3RlZCBzdGFjayBjYW5ub3QgYmUgcHJlZGljdGVkIGluIGFkdmFuY2UsIGFuZCBldmVuIGlmIHdlIGhhdmVcbiAqIHRoZSBsaXN0IG9mIGxvZ2ljYWwgSURzIHRvIGdldCB0byB0aGUgbmVzdGVkIHN0YWNrICh3aGljaCB3ZSBkbyksIGZpbmRpbmdcbiAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgaXMgbm90IGVhc3kuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFja0FydGlmYWN0U291cmNlVHJhY2VyIGltcGxlbWVudHMgSVNvdXJjZVRyYWNlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCkge1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRyYWNlUmVzb3VyY2UoXG4gICAgX3N0YWNrTmFtZTogc3RyaW5nLFxuICAgIG5lc3RlZFN0YWNrTG9naWNhbElkczogc3RyaW5nW10sXG4gICAgbG9naWNhbElkOiBzdHJpbmcsXG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nLFxuICApOiBQcm9taXNlPFNvdXJjZVRyYWNlIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY29udGFpbmluZ1RlbXBsYXRlID0gZ2V0U3RhY2tUZW1wbGF0ZSh0aGlzLnN0YWNrLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZHMpO1xuXG4gICAgY29uc3QgY29uc3RydWN0UGF0aCA9IGNvbnRhaW5pbmdUZW1wbGF0ZT8uUmVzb3VyY2VzPy5bbG9naWNhbElkXT8uTWV0YWRhdGE/LltjeGFwaS5QQVRIX01FVEFEQVRBX0tFWV07XG4gICAgaWYgKCFjb25zdHJ1Y3RQYXRoKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb25zdHJ1Y3RQYXRoLFxuICAgICAgY3JlYXRpb25TdGFja1RyYWNlOiBmaW5kQ3JlYXRpb25TdGFja1RyYWNlKHRoaXMuc3RhY2ssIGNvbnN0cnVjdFBhdGgpLFxuICAgICAgbXV0YXRpb25TdGFja1RyYWNlczogcHJvcGVydHlOYW1lID8gZmluZE11dGF0aW9uU3RhY2tUcmFjZXModGhpcy5zdGFjaywgY29uc3RydWN0UGF0aCwgcHJvcGVydHlOYW1lKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHRyYWNlU3RhY2soX3N0YWNrTmFtZTogc3RyaW5nLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxTb3VyY2VUcmFjZSB8IHVuZGVmaW5lZD4ge1xuICAgIC8vIFRoaXMgY2FuIGVpdGhlciBiZSBhIHN0YWNrIG9yIG5lc3RlZCBzdGFjay4gSWYgaXQncyBhIG5lc3RlZCBzdGFjaywgdHJhY2UgdGhlIHJlc291cmNlXG4gICAgLy8gaW4gdGhlIHBhcmVudCBzdGFjay5cbiAgICBpZiAobmVzdGVkU3RhY2tMb2dpY2FsSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGxhc3RMb2dpY2FsSWQgPSBuZXN0ZWRTdGFja0xvZ2ljYWxJZHMucG9wKCkhO1xuICAgICAgcmV0dXJuIHRoaXMudHJhY2VSZXNvdXJjZShfc3RhY2tOYW1lLCBuZXN0ZWRTdGFja0xvZ2ljYWxJZHMsIGxhc3RMb2dpY2FsSWQpO1xuICAgIH1cblxuICAgIC8vIE11c3QgYmUgdGhlIHJvb3Qgc3RhY2tcbiAgICBjb25zdCBjb25zdHJ1Y3RQYXRoID0gdGhpcy5zdGFjay5oaWVyYXJjaGljYWxJZDtcbiAgICByZXR1cm4ge1xuICAgICAgY29uc3RydWN0UGF0aCxcbiAgICAgIGNyZWF0aW9uU3RhY2tUcmFjZTogZmluZENyZWF0aW9uU3RhY2tUcmFjZSh0aGlzLnN0YWNrLCBjb25zdHJ1Y3RQYXRoKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogVHJ5IHRvIGZpbmQgdGhlIGNyZWF0aW9uIHN0YWNrIHRyYWNlIGZvciB0aGUgZ2l2ZW4gY29uc3RydWN0XG4gKlxuICogLSBUaGlzIGNhbiBiZSB0aGUgJ3RyYWNlJyBvZiBhZGRpbmcgdGhlICdhd3M6Y2RrOmxvZ2ljYWxJZCcgbWV0YWRhdGEuXG4gKiAtIFRoaXMgY2FuIGFsc28gYmUgZGVkaWNhdGVkIG1ldGFkYXRhICh3ZSBoYXZlbid0IGFkZGVkIGl0IHlldCkuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBwYXRoIGluIG1ldGFkYXRhIEFMV0FZUyBzdGFydHMgd2l0aCBhIGAvYCB3aGlsZSB0aGUgY29uc3RydWN0IHBhdGhcbiAqIHdlIGhhdmUgaGVyZSBwcm9iYWJseSBkb2Vzbid0LCBhY2NvdW50IGZvciB0aGF0IGFzIHdlbGwuXG4gKlxuICogU3RhY2sncyBjdXJyZW50bHkgZG9uJ3QgZW1pdCBhbnkgc3RhY2sgdHJhY2VzLlxuICovXG5mdW5jdGlvbiBmaW5kQ3JlYXRpb25TdGFja1RyYWNlKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGNvbnN0cnVjdFBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtcbiAgICAvLyBsb2dpY2FsIElEIHRyYWNlc1xuICAgIC4uLnJlc291cmNlTWV0YWRhdGEoc3RhY2ssIGNvbnN0cnVjdFBhdGgsIGN4c2NoZW1hLkFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuTE9HSUNBTF9JRCkuZmxhdE1hcCgobSkgPT4ge1xuICAgICAgaWYgKG0udHJhY2UpIHtcbiAgICAgICAgcmV0dXJuIFttLnRyYWNlXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9KSxcbiAgICAvLyBDcmVhdGlvbiBzdGFja1xuICAgIC4uLnJlc291cmNlTWV0YWRhdGEoc3RhY2ssIGNvbnN0cnVjdFBhdGgsICdhd3M6Y2RrOmNyZWF0aW9uU3RhY2snKS5mbGF0TWFwKChtKSA9PiB7XG4gICAgICBpZiAobS5kYXRhKSB7XG4gICAgICAgIHJldHVybiBbbS5kYXRhIGFzIHVua25vd24gYXMgc3RyaW5nW11dO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pLFxuICBdO1xuXG4gIHJldHVybiBjYW5kaWRhdGVzWzBdO1xufVxuXG4vKipcbiAqIEZpbmQgcHJvcGVydHkgbXV0YXRpb24gc3RhY2sgdHJhY2VzXG4gKlxuICogVGhlc2UgYXJlIGFsbCBwbGFjZXMgaW4gdGhlIGNvZGUgd2hlcmUgYSBwcm9wZXJ0eSdzIHZhbHVlIGlzIG92ZXJ3cml0dGVuIGFmdGVyXG4gKiBjb25zdHJ1Y3QgY3JlYXRpb24uXG4gKi9cbmZ1bmN0aW9uIGZpbmRNdXRhdGlvblN0YWNrVHJhY2VzKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGNvbnN0cnVjdFBhdGg6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXVtdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYXNzaWdubWVudHMgPSByZXNvdXJjZU1ldGFkYXRhKHN0YWNrLCBjb25zdHJ1Y3RQYXRoLCAnYXdzOmNkazpwcm9wZXJ0eUFzc2lnbm1lbnQnKTtcblxuICByZXR1cm4gYXNzaWdubWVudHMuZmxhdE1hcCgobSkgPT4ge1xuICAgIGNvbnN0IGRhdGE6IFByb3BlcnR5QXNzaWdubWVudERhdGEgfCB1bmRlZmluZWQgPSBtLmRhdGEgYXMgYW55O1xuICAgIGlmIChkYXRhPy5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZSkge1xuICAgICAgcmV0dXJuIFtkYXRhLnN0YWNrVHJhY2VdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXNvdXJjZU1ldGFkYXRhKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGNvbnN0cnVjdFBhdGg6IHN0cmluZywgbWV0YWRhdGFUeXBlOiBzdHJpbmcpOiBjeHNjaGVtYS5NZXRhZGF0YUVudHJ5W10ge1xuICBpZiAoIWNvbnN0cnVjdFBhdGguc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgY29uc3RydWN0UGF0aCA9ICcvJyArIGNvbnN0cnVjdFBhdGg7XG4gIH1cblxuICByZXR1cm4gKHN0YWNrLm1ldGFkYXRhW2NvbnN0cnVjdFBhdGhdID8/IFtdKS5maWx0ZXIoKG0pID0+IG0udHlwZSA9PT0gbWV0YWRhdGFUeXBlKTtcbn1cblxuLyoqXG4gKiBGaW5kIHRoZSBzdGFjayB0ZW1wbGF0ZSBnaXZlbiBhIHJvb3Qgc3RhY2sgYW5kIGEgbG9naWNhbCBJRCBwYXRoIGludG8gbmVzdGVkIHN0YWNrc1xuICovXG5mdW5jdGlvbiBnZXRTdGFja1RlbXBsYXRlKHN0YWNrOiBjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QsIGxvZ2ljYWxJZFBhdGg6IHJlYWRvbmx5IHN0cmluZ1tdKTogYW55IHwgdW5kZWZpbmVkIHtcbiAgbGV0IHRlbXBsYXRlID0gc3RhY2sudGVtcGxhdGU7XG4gIGNvbnN0IHNlZ21lbnRzID0gWy4uLmxvZ2ljYWxJZFBhdGhdO1xuICB3aGlsZSAoc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IG5leHQgPSBzZWdtZW50cy5zaGlmdCgpITtcblxuICAgIC8vIFRoZSBuZXN0ZWQgc3RhY2sgcmVzb3VyY2UgaGFzIG1ldGFkYXRhIHRvIHRlbGwgdXMgd2hpY2ggKGxvY2FsKSBmaWxlXG4gICAgLy8gd2UgYXJlIGxvb2tpbmcgZm9yOiBcImF3czphc3NldDpwYXRoXCIuXG4gICAgY29uc3QgbmV4dFRlbXBsYXRlRmlsZSA9IHRlbXBsYXRlLlJlc291cmNlc1tuZXh0XT8uTWV0YWRhdGE/LltjeGFwaS5BU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9QQVRIX0tFWV07XG4gICAgaWYgKCFuZXh0VGVtcGxhdGVGaWxlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRUZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4ocGF0aC5kaXJuYW1lKHN0YWNrLnRlbXBsYXRlRnVsbFBhdGgpLCBuZXh0VGVtcGxhdGVGaWxlKTtcbiAgICB0ZW1wbGF0ZSA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG5leHRUZW1wbGF0ZVBhdGgsICd1dGYtOCcpKTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wbGF0ZTtcbn1cblxuaW50ZXJmYWNlIFByb3BlcnR5QXNzaWdubWVudERhdGEge1xuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcbiAgc3RhY2tUcmFjZTogc3RyaW5nW107XG59XG4iXX0=
@@ -34,6 +34,18 @@ export interface ResourceError {
34
34
  * Error code of the resource
35
35
  */
36
36
  readonly errorCode?: string;
37
+ /**
38
+ * Timestamp of the failure event, if known.
39
+ *
40
+ * Used to bound exploratory lookups (e.g. CloudWatch Logs queries) to the time
41
+ * around the failure. This matters for resources whose logs span multiple
42
+ * deployments (creates, updates, rollbacks), where the most recent invocation
43
+ * is not necessarily the one that failed.
44
+ *
45
+ * Only populated for errors derived from stack events; absent for change-set
46
+ * and early-validation errors.
47
+ */
48
+ readonly timestamp?: Date;
37
49
  }
38
50
  /**
39
51
  * Class used to send stack event errors into, to come up with root causes.
@@ -73,6 +73,7 @@ function errorFromEvent(ev) {
73
73
  stackArn: ev.event.StackId ?? '',
74
74
  errorCode: extractErrorCode(ev.event),
75
75
  physicalId: ev.event.PhysicalResourceId,
76
+ timestamp: ev.event.Timestamp,
76
77
  };
77
78
  }
78
79
  /**
@@ -126,4 +127,4 @@ const OUR_CUSTOM_RESOURCE_TYPES = [
126
127
  'Custom::UserPoolCloudFrontDomainName',
127
128
  'Custom::VpcRestrictDefaultSG',
128
129
  ];
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVzb3VyY2UtZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1JQSw0Q0FpQkM7QUFsSkQsK0RBQW1FO0FBQ25FLDhEQUFzRztBQTRDdEc7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDekI7Ozs7T0FJRztJQUNjLE9BQU8sR0FBb0IsRUFBRSxDQUFDO0lBRXhDLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsR0FBRyxNQUF1QjtRQUN0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBQSw2QkFBWSxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixrRkFBa0Y7Z0JBQ2xGLGlFQUFpRTtnQkFDakUsSUFBSSxDQUFDLElBQUEsb0NBQW1CLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUEsdUNBQXNCLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Q0FDRjtBQTVERCx3Q0E0REM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxFQUFpQjtJQUN2QyxxQkFBcUI7SUFFckIsT0FBTztRQUNMLFNBQVMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEVBQUU7UUFDM0MsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksRUFBRTtRQUM1QyxxQkFBcUIsRUFBRSxFQUFFLENBQUMscUJBQXFCO1FBQy9DLFlBQVksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFO1FBQ3pDLFFBQVEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFO1FBQ2hDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3JDLFVBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGtCQUFrQjtLQUN4QyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxLQUFpQjtJQUNoRCxNQUFNLG1CQUFtQixHQUFHLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXpGLDREQUE0RDtJQUM1RCxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNELE9BQU8sb0NBQW9CLENBQUMsc0JBQXNCLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFNUcsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztJQUVoRCxNQUFNLE9BQU8sR0FBRyxvREFBb0QsQ0FBQztJQUNyRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTFDLE9BQU8sR0FBRyxZQUFZLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9DQUFvQixDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQ2hHLENBQUM7QUFFRCwyRUFBMkU7QUFDM0UscUNBQXFDO0FBQ3JDLE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsYUFBYTtJQUNiLDRCQUE0QjtJQUM1QixtQ0FBbUM7SUFDbkMsOEJBQThCO0lBQzlCLDBDQUEwQztJQUMxQyxvQ0FBb0M7SUFDcEMsdUNBQXVDO0lBQ3ZDLHVCQUF1QjtJQUN2QixnQ0FBZ0M7SUFDaEMscUNBQXFDO0lBQ3JDLDZCQUE2QjtJQUM3QixxQ0FBcUM7SUFDckMsb0NBQW9DO0lBQ3BDLGlDQUFpQztJQUNqQyxpQ0FBaUM7SUFDakMsMENBQTBDO0lBQzFDLGlDQUFpQztJQUNqQyx1Q0FBdUM7SUFDdkMseUJBQXlCO0lBQ3pCLDZCQUE2QjtJQUM3QixtQ0FBbUM7SUFDbkMsc0JBQXNCO0lBQ3RCLGdDQUFnQztJQUNoQyw2QkFBNkI7SUFDN0IsK0JBQStCO0lBQy9CLGlEQUFpRDtJQUNqRCxpQkFBaUI7SUFDakIsc0NBQXNDO0lBQ3RDLDhCQUE4QjtDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFja0V2ZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VFdmVudCB9IGZyb20gJy4vc3RhY2stZXZlbnQtcG9sbGVyJztcbmltcG9ydCB7IERlcGxveW1lbnRFcnJvckNvZGVzIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IGlzQ2FuY2VsbGF0aW9uRXZlbnQsIGlzRXJyb3JFdmVudCwgaXNSZWd1bGFyUmVzb3VyY2VFdmVudCB9IGZyb20gJy4uLy4uL3V0aWwvY2xvdWRmb3JtYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRXJyb3Ige1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRoaXMgcmVzb3VyY2UgZXJyb3Igb2NjdXJyZWQgaW5cbiAgICpcbiAgICogTk9URTogVGhpcyB3aWxsIGJlIGEgc3RhY2sgSUQgKHdoaWNoIGlzIGEgZnVsbCBBUk4gaW5jbHVkaW5nIHRoZSB1bmlxdWUgaWRlbnRpZmllciksXG4gICAqIG5vdCBqdXN0IGEgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEcyBvZiBwYXJlbnQgc3RhY2tzIG9mIHRoZSByZXNvdXJjZSwgaW4gY2FzZSBvZiByZXNvdXJjZXMgaW4gbmVzdGVkIHN0YWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50U3RhY2tMb2dpY2FsSWRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2VcbiAgICpcbiAgICogKE1heSBiZSBhYnNlbnQgaW4gY2FzZSB0aGlzIG1lc3NhZ2UgaXMgYWJvdXQgdGhlIHN0YWNrIGl0c2VsZilcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2ljYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogUmVzb3VyY2UgdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQaHlzaWNhbCBJRCBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IHBoeXNpY2FsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVycm9yIG1lc3NhZ2Ugb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVycm9yIGNvZGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBlcnJvckNvZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ2xhc3MgdXNlZCB0byBzZW5kIHN0YWNrIGV2ZW50IGVycm9ycyBpbnRvLCB0byBjb21lIHVwIHdpdGggcm9vdCBjYXVzZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUVycm9ycyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgYWxsIG5vbi1jYW5jZWxsYXRpb24gZXJyb3JzIHdlIGhhdmUgc2Vlbi5cbiAgICpcbiAgICogQnkgdGhlIG5hdHVyZSBvZiB0aGUgb3JkZXIgd2Ugc2VlIGV2ZW50cyBpbiwgd2lsbCBiZSBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9yczogUmVzb3VyY2VFcnJvcltdID0gW107XG5cbiAgcHVibGljIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9ycy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbCgpOiBSZWFkb25seUFycmF5PFJlc291cmNlRXJyb3I+IHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgZXJyb3IgY29sbGVjdGlvbiB3aXRoIHRoZSBnaXZlbiBzdGFjayBhY3Rpdml0eVxuICAgKlxuICAgKiBNYXkgYmUgZnJvbSBhIG5lc3RlZCBzdGFjayBhcyB3ZWxsLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIGV4cGVjdHMgdG8gc2VlIGFsbCBldmVudHMgaW4gY2hyb25vbG9naWNhbCBvcmRlci5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoLi4uZXZlbnRzOiBSZXNvdXJjZUV2ZW50W10pIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgaWYgKGlzRXJyb3JFdmVudChldmVudC5ldmVudCkpIHtcbiAgICAgICAgLy8gQ2FuY2VsbGVkIGlzIG5vdCBhbiBpbnRlcmVzdGluZyBmYWlsdXJlIHJlYXNvbiwgbm9yIGlzIHRoZSBzdGFjayBtZXNzYWdlIChzdGFja1xuICAgICAgICAvLyBtZXNzYWdlIHdpbGwganVzdCBzYXkgc29tZXRoaW5nIGxpa2UgXCJzdGFjayBmYWlsZWQgdG8gdXBkYXRlXCIpXG4gICAgICAgIGlmICghaXNDYW5jZWxsYXRpb25FdmVudChldmVudC5ldmVudCkgJiYgaXNSZWd1bGFyUmVzb3VyY2VFdmVudChldmVudC5ldmVudCkpIHtcbiAgICAgICAgICB0aGlzLl9lcnJvcnMucHVzaChlcnJvckZyb21FdmVudChldmVudCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRha2Ugb3VyIGJlc3QgZ3Vlc3MgYXQgdGhlIGVycm9yIGNvZGUgb2YgdGhlIHJvb3QgY2F1c2VcbiAgICpcbiAgICogVGhlIGZpcnN0IGVycm9yIHRoYXQgb2NjdXJzIGlzIHRoZSByb290IGNhdXNlLlxuICAgKi9cbiAgcHVibGljIGdldCByb290Q2F1c2VFcnJvckNvZGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFcnJvckNvZGVzWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBlcnJvciBtZXNzYWdlcyBvZiBhbGwgZW5jb3VudGVyZWQgZXJyb3JzICh0aGF0IGFyZW4ndCBjYW5jZWxsYXRpb25zKVxuICAgKi9cbiAgcHVibGljIGdldCBhbGxFcnJvck1lc3NhZ2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzLm1hcChlID0+IGUubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGVycm9yIGNvZGVkcyBvZiBhbGwgZW5jb3VudGVyZWQgZXJyb3JzICh0aGF0IGFyZW4ndCBjYW5jZWxsYXRpb25zIG5vciBzdGFjayBlcnJvcnMpXG4gICAqXG4gICAqIFdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBuZXN0ZWQgc3RhY2sgZXJyb3JzIGJlY2F1c2Ugb3VyIHBvbGxlciB3aWxsIHBvbGwgdGhlIG5lc3RlZCBzdGFjayxcbiAgICogYW5kIGhhdmUgcmV0dXJuZWQgdGhlIGFjdHVhbCBlcnJvciBhcyB3ZWxsLlxuICAgKi9cbiAgcHVibGljIGdldCBhbGxFcnJvckNvZGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzLm1hcChlID0+IGUuZXJyb3JDb2RlKS5maWx0ZXIoeCA9PiB0eXBlb2YgeCA9PT0gJ3N0cmluZycpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVycm9yRnJvbUV2ZW50KGV2OiBSZXNvdXJjZUV2ZW50KTogUmVzb3VyY2VFcnJvciB7XG4gIC8vIEZJWE1FOiBDaGVjayBob29rc1xuXG4gIHJldHVybiB7XG4gICAgbG9naWNhbElkOiBldi5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnJyxcbiAgICBtZXNzYWdlOiBldi5ldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/PyAnJyxcbiAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IGV2LnBhcmVudFN0YWNrTG9naWNhbElkcyxcbiAgICByZXNvdXJjZVR5cGU6IGV2LmV2ZW50LlJlc291cmNlVHlwZSA/PyAnJyxcbiAgICBzdGFja0FybjogZXYuZXZlbnQuU3RhY2tJZCA/PyAnJyxcbiAgICBlcnJvckNvZGU6IGV4dHJhY3RFcnJvckNvZGUoZXYuZXZlbnQpLFxuICAgIHBoeXNpY2FsSWQ6IGV2LmV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGFuIGVycm9yIGNvZGUgZnJvbSB0aGUgZ2l2ZW4gc3RhY2sgZXZlbnQuXG4gKlxuICogQWx3YXlzIGNvbnRhaW5zIHRoZSBzZXJ2aWNlcywgYW5kIGluY2x1ZGVzIHRoZSBoYW5kbGVyIGVycm9yIGNvZGUgaWYgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEVycm9yQ29kZShldmVudDogU3RhY2tFdmVudCk6IHN0cmluZyB7XG4gIGNvbnN0IGlzT3VyQ3VzdG9tUmVzb3VyY2UgPSBPVVJfQ1VTVE9NX1JFU09VUkNFX1RZUEVTLmluY2x1ZGVzKGV2ZW50LlJlc291cmNlVHlwZSA/PyAnJyk7XG5cbiAgLy8gR2V0IHRoZSByZXNvdXJjZSB0eXBlOyBpZiBpdCBpcyBub24tQVdTIHRoZW4gd2UgYXJlIGRvbmUuXG4gIGNvbnN0IHJlc291cmNlVHlwZVBhcnRzID0gKGV2ZW50LlJlc291cmNlVHlwZSA/PyAnJykuc3BsaXQoJzo6Jyk7XG4gIGlmIChyZXNvdXJjZVR5cGVQYXJ0c1swXSAhPT0gJ0FXUycgJiYgIWlzT3VyQ3VzdG9tUmVzb3VyY2UpIHtcbiAgICByZXR1cm4gRGVwbG95bWVudEVycm9yQ29kZXMuUFJJVkFURV9SRVNPVVJDRV9FUlJPUjtcbiAgfVxuXG4gIGNvbnN0IHJlc291cmNlVHlwZSA9IGlzT3VyQ3VzdG9tUmVzb3VyY2UgPyByZXNvdXJjZVR5cGVQYXJ0cy5qb2luKCcnKSA6IHJlc291cmNlVHlwZVBhcnRzLnNsaWNlKDEpLmpvaW4oJycpO1xuXG4gIGNvbnN0IHJlYXNvbiA9IGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8/ICcnO1xuXG4gIGNvbnN0IGVycm9yUmUgPSAvKD86SGFuZGxlckVycm9yQ29kZTp8RXJyb3IgQ29kZTopIChbYS16QS1aMC05Oi1dKykvO1xuICBjb25zdCBoYW5kbGVyQ29kZSA9IHJlYXNvbi5tYXRjaChlcnJvclJlKTtcblxuICByZXR1cm4gYCR7cmVzb3VyY2VUeXBlfToke2hhbmRsZXJDb2RlID8gaGFuZGxlckNvZGVbMV0gOiBEZXBsb3ltZW50RXJyb3JDb2Rlcy5VTktOT1dOX0VSUk9SfWA7XG59XG5cbi8vIFNvbWUgY3VzdG9tIHJlc291cmNlIHR5cGVzIHRoYXQgdGhlIENESyBzdGFuZGFyZCBsaWJyYXJ5IGNyZWF0ZXMgdGhhdCB3ZVxuLy8gd291bGQgbGlrZSB0byBzZWUgaXQgaWYgdGhleSBmYWlsLlxuY29uc3QgT1VSX0NVU1RPTV9SRVNPVVJDRV9UWVBFUyA9IFtcbiAgJ0N1c3RvbTo6QVdTJyxcbiAgJ0N1c3RvbTo6QVdTQ0RLLUVLUy1DbHVzdGVyJyxcbiAgJ0N1c3RvbTo6QVdTQ0RLLUVLUy1GYXJnYXRlUHJvZmlsZScsXG4gICdDdXN0b206OkFXU0NESy1FS1MtSGVsbUNoYXJ0JyxcbiAgJ0N1c3RvbTo6QVdTQ0RLLUVLUy1LdWJlcm5ldGVzT2JqZWN0VmFsdWUnLFxuICAnQ3VzdG9tOjpBV1NDREstRUtTLUt1YmVybmV0ZXNQYXRjaCcsXG4gICdDdXN0b206OkFXU0NESy1FS1MtS3ViZXJuZXRlc1Jlc291cmNlJyxcbiAgJ0N1c3RvbTo6QVdTQ0RLQ2ZuSnNvbicsXG4gICdDdXN0b206OkFXU0NES0Nmbkpzb25TdHJpbmdpZnknLFxuICAnQ3VzdG9tOjpBV1NDREtPcGVuSWRDb25uZWN0UHJvdmlkZXInLFxuICAnQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50JyxcbiAgJ0N1c3RvbTo6Q2xvdWR3YXRjaExvZ1Jlc291cmNlUG9saWN5JyxcbiAgJ0N1c3RvbTo6Q3Jvc3NBY2NvdW50Wm9uZURlbGVnYXRpb24nLFxuICAnQ3VzdG9tOjpDcm9zc1JlZ2lvbkV4cG9ydFJlYWRlcicsXG4gICdDdXN0b206OkNyb3NzUmVnaW9uRXhwb3J0V3JpdGVyJyxcbiAgJ0N1c3RvbTo6Q3Jvc3NSZWdpb25TdHJpbmdQYXJhbWV0ZXJSZWFkZXInLFxuICAnQ3VzdG9tOjpEZWxldGVFeGlzdGluZ1JlY29yZFNldCcsXG4gICdDdXN0b206OkRlc2NyaWJlQ29nbml0b1VzZXJQb29sQ2xpZW50JyxcbiAgJ0N1c3RvbTo6RHluYW1vREJSZXBsaWNhJyxcbiAgJ0N1c3RvbTo6RUNSQXV0b0RlbGV0ZUltYWdlcycsXG4gICdDdXN0b206OkVsYXN0aWNzZWFyY2hBY2Nlc3NQb2xpY3knLFxuICAnQ3VzdG9tOjpMb2dSZXRlbnRpb24nLFxuICAnQ3VzdG9tOjpPcGVuU2VhcmNoQWNjZXNzUG9saWN5JyxcbiAgJ0N1c3RvbTo6UzNBdXRvRGVsZXRlT2JqZWN0cycsXG4gICdDdXN0b206OlMzQnVja2V0Tm90aWZpY2F0aW9ucycsXG4gICdDdXN0b206OlN5bnRoZXRpY3NBdXRvRGVsZXRlVW5kZXJseWluZ1Jlc291cmNlcycsXG4gICdDdXN0b206OlRyaWdnZXInLFxuICAnQ3VzdG9tOjpVc2VyUG9vbENsb3VkRnJvbnREb21haW5OYW1lJyxcbiAgJ0N1c3RvbTo6VnBjUmVzdHJpY3REZWZhdWx0U0cnLFxuXTtcbiJdfQ==
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVzb3VyY2UtZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlKQSw0Q0FpQkM7QUFoS0QsK0RBQW1FO0FBQ25FLDhEQUFzRztBQXlEdEc7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDekI7Ozs7T0FJRztJQUNjLE9BQU8sR0FBb0IsRUFBRSxDQUFDO0lBRXhDLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsR0FBRyxNQUF1QjtRQUN0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksSUFBQSw2QkFBWSxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QixrRkFBa0Y7Z0JBQ2xGLGlFQUFpRTtnQkFDakUsSUFBSSxDQUFDLElBQUEsb0NBQW1CLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUEsdUNBQXNCLEVBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxF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QjtJQUM3QiwrQkFBK0I7SUFDL0IsaURBQWlEO0lBQ2pELGlCQUFpQjtJQUNqQixzQ0FBc0M7SUFDdEMsOEJBQThCO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0YWNrRXZlbnQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUV2ZW50IH0gZnJvbSAnLi9zdGFjay1ldmVudC1wb2xsZXInO1xuaW1wb3J0IHsgRGVwbG95bWVudEVycm9yQ29kZXMgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHsgaXNDYW5jZWxsYXRpb25FdmVudCwgaXNFcnJvckV2ZW50LCBpc1JlZ3VsYXJSZXNvdXJjZUV2ZW50IH0gZnJvbSAnLi4vLi4vdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VFcnJvciB7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdGhpcyByZXNvdXJjZSBlcnJvciBvY2N1cnJlZCBpblxuICAgKlxuICAgKiBOT1RFOiBUaGlzIHdpbGwgYmUgYSBzdGFjayBJRCAod2hpY2ggaXMgYSBmdWxsIEFSTiBpbmNsdWRpbmcgdGhlIHVuaXF1ZSBpZGVudGlmaWVyKSxcbiAgICogbm90IGp1c3QgYSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IHN0cmluZztcblxuICAvKipcbiAgICogSURzIG9mIHBhcmVudCBzdGFja3Mgb2YgdGhlIHJlc291cmNlLCBpbiBjYXNlIG9mIHJlc291cmNlcyBpbiBuZXN0ZWQgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZVxuICAgKlxuICAgKiAoTWF5IGJlIGFic2VudCBpbiBjYXNlIHRoaXMgbWVzc2FnZSBpcyBhYm91dCB0aGUgc3RhY2sgaXRzZWxmKVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSB0eXBlXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBoeXNpY2FsIElEIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogRXJyb3IgbWVzc2FnZSBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogRXJyb3IgY29kZSBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGVycm9yQ29kZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZXN0YW1wIG9mIHRoZSBmYWlsdXJlIGV2ZW50LCBpZiBrbm93bi5cbiAgICpcbiAgICogVXNlZCB0byBib3VuZCBleHBsb3JhdG9yeSBsb29rdXBzIChlLmcuIENsb3VkV2F0Y2ggTG9ncyBxdWVyaWVzKSB0byB0aGUgdGltZVxuICAgKiBhcm91bmQgdGhlIGZhaWx1cmUuIFRoaXMgbWF0dGVycyBmb3IgcmVzb3VyY2VzIHdob3NlIGxvZ3Mgc3BhbiBtdWx0aXBsZVxuICAgKiBkZXBsb3ltZW50cyAoY3JlYXRlcywgdXBkYXRlcywgcm9sbGJhY2tzKSwgd2hlcmUgdGhlIG1vc3QgcmVjZW50IGludm9jYXRpb25cbiAgICogaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBvbmUgdGhhdCBmYWlsZWQuXG4gICAqXG4gICAqIE9ubHkgcG9wdWxhdGVkIGZvciBlcnJvcnMgZGVyaXZlZCBmcm9tIHN0YWNrIGV2ZW50czsgYWJzZW50IGZvciBjaGFuZ2Utc2V0XG4gICAqIGFuZCBlYXJseS12YWxpZGF0aW9uIGVycm9ycy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVzdGFtcD86IERhdGU7XG59XG5cbi8qKlxuICogQ2xhc3MgdXNlZCB0byBzZW5kIHN0YWNrIGV2ZW50IGVycm9ycyBpbnRvLCB0byBjb21lIHVwIHdpdGggcm9vdCBjYXVzZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUVycm9ycyB7XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgYWxsIG5vbi1jYW5jZWxsYXRpb24gZXJyb3JzIHdlIGhhdmUgc2Vlbi5cbiAgICpcbiAgICogQnkgdGhlIG5hdHVyZSBvZiB0aGUgb3JkZXIgd2Ugc2VlIGV2ZW50cyBpbiwgd2lsbCBiZSBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Vycm9yczogUmVzb3VyY2VFcnJvcltdID0gW107XG5cbiAgcHVibGljIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9ycy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbCgpOiBSZWFkb25seUFycmF5PFJlc291cmNlRXJyb3I+IHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgZXJyb3IgY29sbGVjdGlvbiB3aXRoIHRoZSBnaXZlbiBzdGFjayBhY3Rpdml0eVxuICAgKlxuICAgKiBNYXkgYmUgZnJvbSBhIG5lc3RlZCBzdGFjayBhcyB3ZWxsLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIGV4cGVjdHMgdG8gc2VlIGFsbCBldmVudHMgaW4gY2hyb25vbG9naWNhbCBvcmRlci5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoLi4uZXZlbnRzOiBSZXNvdXJjZUV2ZW50W10pIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgaWYgKGlzRXJyb3JFdmVudChldmVudC5ldmVudCkpIHtcbiAgICAgICAgLy8gQ2FuY2VsbGVkIGlzIG5vdCBhbiBpbnRlcmVzdGluZyBmYWlsdXJlIHJlYXNvbiwgbm9yIGlzIHRoZSBzdGFjayBtZXNzYWdlIChzdGFja1xuICAgICAgICAvLyBtZXNzYWdlIHdpbGwganVzdCBzYXkgc29tZXRoaW5nIGxpa2UgXCJzdGFjayBmYWlsZWQgdG8gdXBkYXRlXCIpXG4gICAgICAgIGlmICghaXNDYW5jZWxsYXRpb25FdmVudChldmVudC5ldmVudCkgJiYgaXNSZWd1bGFyUmVzb3VyY2VFdmVudChldmVudC5ldmVudCkpIHtcbiAgICAgICAgICB0aGlzLl9lcnJvcnMucHVzaChlcnJvckZyb21FdmVudChldmVudCkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRha2Ugb3VyIGJlc3QgZ3Vlc3MgYXQgdGhlIGVycm9yIGNvZGUgb2YgdGhlIHJvb3QgY2F1c2VcbiAgICpcbiAgICogVGhlIGZpcnN0IGVycm9yIHRoYXQgb2NjdXJzIGlzIHRoZSByb290IGNhdXNlLlxuICAgKi9cbiAgcHVibGljIGdldCByb290Q2F1c2VFcnJvckNvZGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5hbGxFcnJvckNvZGVzWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBlcnJvciBtZXNzYWdlcyBvZiBhbGwgZW5jb3VudGVyZWQgZXJyb3JzICh0aGF0IGFyZW4ndCBjYW5jZWxsYXRpb25zKVxuICAgKi9cbiAgcHVibGljIGdldCBhbGxFcnJvck1lc3NhZ2VzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzLm1hcChlID0+IGUubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGVycm9yIGNvZGVkcyBvZiBhbGwgZW5jb3VudGVyZWQgZXJyb3JzICh0aGF0IGFyZW4ndCBjYW5jZWxsYXRpb25zIG5vciBzdGFjayBlcnJvcnMpXG4gICAqXG4gICAqIFdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBuZXN0ZWQgc3RhY2sgZXJyb3JzIGJlY2F1c2Ugb3VyIHBvbGxlciB3aWxsIHBvbGwgdGhlIG5lc3RlZCBzdGFjayxcbiAgICogYW5kIGhhdmUgcmV0dXJuZWQgdGhlIGFjdHVhbCBlcnJvciBhcyB3ZWxsLlxuICAgKi9cbiAgcHVibGljIGdldCBhbGxFcnJvckNvZGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzLm1hcChlID0+IGUuZXJyb3JDb2RlKS5maWx0ZXIoeCA9PiB0eXBlb2YgeCA9PT0gJ3N0cmluZycpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVycm9yRnJvbUV2ZW50KGV2OiBSZXNvdXJjZUV2ZW50KTogUmVzb3VyY2VFcnJvciB7XG4gIC8vIEZJWE1FOiBDaGVjayBob29rc1xuXG4gIHJldHVybiB7XG4gICAgbG9naWNhbElkOiBldi5ldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCA/PyAnJyxcbiAgICBtZXNzYWdlOiBldi5ldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/PyAnJyxcbiAgICBwYXJlbnRTdGFja0xvZ2ljYWxJZHM6IGV2LnBhcmVudFN0YWNrTG9naWNhbElkcyxcbiAgICByZXNvdXJjZVR5cGU6IGV2LmV2ZW50LlJlc291cmNlVHlwZSA/PyAnJyxcbiAgICBzdGFja0FybjogZXYuZXZlbnQuU3RhY2tJZCA/PyAnJyxcbiAgICBlcnJvckNvZGU6IGV4dHJhY3RFcnJvckNvZGUoZXYuZXZlbnQpLFxuICAgIHBoeXNpY2FsSWQ6IGV2LmV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICB0aW1lc3RhbXA6IGV2LmV2ZW50LlRpbWVzdGFtcCxcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IGFuIGVycm9yIGNvZGUgZnJvbSB0aGUgZ2l2ZW4gc3RhY2sgZXZlbnQuXG4gKlxuICogQWx3YXlzIGNvbnRhaW5zIHRoZSBzZXJ2aWNlcywgYW5kIGluY2x1ZGVzIHRoZSBoYW5kbGVyIGVycm9yIGNvZGUgaWYgYXZhaWxhYmxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEVycm9yQ29kZShldmVudDogU3RhY2tFdmVudCk6IHN0cmluZyB7XG4gIGNvbnN0IGlzT3VyQ3VzdG9tUmVzb3VyY2UgPSBPVVJfQ1VTVE9NX1JFU09VUkNFX1RZUEVTLmluY2x1ZGVzKGV2ZW50LlJlc291cmNlVHlwZSA/PyAnJyk7XG5cbiAgLy8gR2V0IHRoZSByZXNvdXJjZSB0eXBlOyBpZiBpdCBpcyBub24tQVdTIHRoZW4gd2UgYXJlIGRvbmUuXG4gIGNvbnN0IHJlc291cmNlVHlwZVBhcnRzID0gKGV2ZW50LlJlc291cmNlVHlwZSA/PyAnJykuc3BsaXQoJzo6Jyk7XG4gIGlmIChyZXNvdXJjZVR5cGVQYXJ0c1swXSAhPT0gJ0FXUycgJiYgIWlzT3VyQ3VzdG9tUmVzb3VyY2UpIHtcbiAgICByZXR1cm4gRGVwbG95bWVudEVycm9yQ29kZXMuUFJJVkFURV9SRVNPVVJDRV9FUlJPUjtcbiAgfVxuXG4gIGNvbnN0IHJlc291cmNlVHlwZSA9IGlzT3VyQ3VzdG9tUmVzb3VyY2UgPyByZXNvdXJjZVR5cGVQYXJ0cy5qb2luKCcnKSA6IHJlc291cmNlVHlwZVBhcnRzLnNsaWNlKDEpLmpvaW4oJycpO1xuXG4gIGNvbnN0IHJlYXNvbiA9IGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uID8/ICcnO1xuXG4gIGNvbnN0IGVycm9yUmUgPSAvKD86SGFuZGxlckVycm9yQ29kZTp8RXJyb3IgQ29kZTopIChbYS16QS1aMC05Oi1dKykvO1xuICBjb25zdCBoYW5kbGVyQ29kZSA9IHJlYXNvbi5tYXRjaChlcnJvclJlKTtcblxuICByZXR1cm4gYCR7cmVzb3VyY2VUeXBlfToke2hhbmRsZXJDb2RlID8gaGFuZGxlckNvZGVbMV0gOiBEZXBsb3ltZW50RXJyb3JDb2Rlcy5VTktOT1dOX0VSUk9SfWA7XG59XG5cbi8vIFNvbWUgY3VzdG9tIHJlc291cmNlIHR5cGVzIHRoYXQgdGhlIENESyBzdGFuZGFyZCBsaWJyYXJ5IGNyZWF0ZXMgdGhhdCB3ZVxuLy8gd291bGQgbGlrZSB0byBzZWUgaXQgaWYgdGhleSBmYWlsLlxuY29uc3QgT1VSX0NVU1RPTV9SRVNPVVJDRV9UWVBFUyA9IFtcbiAgJ0N1c3RvbTo6QVdTJyxcbiAgJ0N1c3RvbTo6QVdTQ0RLLUVLUy1DbHVzdGVyJyxcbiAgJ0N1c3RvbTo6QVdTQ0RLLUVLUy1GYXJnYXRlUHJvZmlsZScsXG4gICdDdXN0b206OkFXU0NESy1FS1MtSGVsbUNoYXJ0JyxcbiAgJ0N1c3RvbTo6QVdTQ0RLLUVLUy1LdWJlcm5ldGVzT2JqZWN0VmFsdWUnLFxuICAnQ3VzdG9tOjpBV1NDREstRUtTLUt1YmVybmV0ZXNQYXRjaCcsXG4gICdDdXN0b206OkFXU0NESy1FS1MtS3ViZXJuZXRlc1Jlc291cmNlJyxcbiAgJ0N1c3RvbTo6QVdTQ0RLQ2ZuSnNvbicsXG4gICdDdXN0b206OkFXU0NES0Nmbkpzb25TdHJpbmdpZnknLFxuICAnQ3VzdG9tOjpBV1NDREtPcGVuSWRDb25uZWN0UHJvdmlkZXInLFxuICAnQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50JyxcbiAgJ0N1c3RvbTo6Q2xvdWR3YXRjaExvZ1Jlc291cmNlUG9saWN5JyxcbiAgJ0N1c3RvbTo6Q3Jvc3NBY2NvdW50Wm9uZURlbGVnYXRpb24nLFxuICAnQ3VzdG9tOjpDcm9zc1JlZ2lvbkV4cG9ydFJlYWRlcicsXG4gICdDdXN0b206OkNyb3NzUmVnaW9uRXhwb3J0V3JpdGVyJyxcbiAgJ0N1c3RvbTo6Q3Jvc3NSZWdpb25TdHJpbmdQYXJhbWV0ZXJSZWFkZXInLFxuICAnQ3VzdG9tOjpEZWxldGVFeGlzdGluZ1JlY29yZFNldCcsXG4gICdDdXN0b206OkRlc2NyaWJlQ29nbml0b1VzZXJQb29sQ2xpZW50JyxcbiAgJ0N1c3RvbTo6RHluYW1vREJSZXBsaWNhJyxcbiAgJ0N1c3RvbTo6RUNSQXV0b0RlbGV0ZUltYWdlcycsXG4gICdDdXN0b206OkVsYXN0aWNzZWFyY2hBY2Nlc3NQb2xpY3knLFxuICAnQ3VzdG9tOjpMb2dSZXRlbnRpb24nLFxuICAnQ3VzdG9tOjpPcGVuU2VhcmNoQWNjZXNzUG9saWN5JyxcbiAgJ0N1c3RvbTo6UzNBdXRvRGVsZXRlT2JqZWN0cycsXG4gICdDdXN0b206OlMzQnVja2V0Tm90aWZpY2F0aW9ucycsXG4gICdDdXN0b206OlN5bnRoZXRpY3NBdXRvRGVsZXRlVW5kZXJseWluZ1Jlc291cmNlcycsXG4gICdDdXN0b206OlRyaWdnZXInLFxuICAnQ3VzdG9tOjpVc2VyUG9vbENsb3VkRnJvbnREb21haW5OYW1lJyxcbiAgJ0N1c3RvbTo6VnBjUmVzdHJpY3REZWZhdWx0U0cnLFxuXTtcbiJdfQ==
@@ -107,6 +107,11 @@ export declare class StackActivityMonitor {
107
107
  * CloudFormation skips these and completes the update anyway.
108
108
  */
109
109
  get deleteFailures(): import("../..").ResourceDeleteFailure[];
110
+ /**
111
+ * Resources that completed deployment but are still stabilizing.
112
+ * Populated for Express Mode deployments.
113
+ */
114
+ get stabilizingResources(): import("../..").StabilizingResource[];
110
115
  start(): Promise<this>;
111
116
  stop(): Promise<void>;
112
117
  private scheduleNextTick;
@@ -1,8 +1,41 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.StackActivityMonitor = void 0;
4
37
  const node_crypto_1 = require("node:crypto");
5
- const util = require("node:util");
38
+ const util = __importStar(require("node:util"));
6
39
  const stack_event_poller_1 = require("./stack-event-poller");
7
40
  const stack_progress_monitor_1 = require("./stack-progress-monitor");
8
41
  const cloudformation_1 = require("../../util/cloudformation");
@@ -71,6 +104,13 @@ class StackActivityMonitor {
71
104
  get deleteFailures() {
72
105
  return this.poller.deleteFailures;
73
106
  }
107
+ /**
108
+ * Resources that completed deployment but are still stabilizing.
109
+ * Populated for Express Mode deployments.
110
+ */
111
+ get stabilizingResources() {
112
+ return this.poller.stabilizingResources;
113
+ }
74
114
  async start() {
75
115
  this.monitorId = (0, node_crypto_1.randomUUID)();
76
116
  await this.ioHelper.notify(private_1.IO.CDK_TOOLKIT_I5501.msg(`Deploying ${this.stackDisplayName}`, {
@@ -244,4 +284,4 @@ class StackActivityMonitor {
244
284
  }
245
285
  }
246
286
  exports.StackActivityMonitor = StackActivityMonitor;
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYWN0aXZpdHktbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWFjdGl2aXR5LW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlDO0FBQ3pDLGtDQUFrQztBQUVsQyw2REFBbUU7QUFDbkUscUVBQWdFO0FBRWhFLDhEQUE2RDtBQUc3RCwyQ0FBa0Q7QUFDbEQsOEVBQTBFO0FBc0UxRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG9CQUFvQjtJQUMvQjs7T0FFRztJQUNjLE1BQU0sQ0FBbUI7SUFFMUM7OztPQUdHO0lBQ2MsZUFBZSxDQUFTO0lBRWpDLFNBQVMsQ0FBVTtJQUVWLGVBQWUsQ0FBdUI7SUFFdkQ7O09BRUc7SUFDSyxTQUFTLENBQWlDO0lBRWxEOztPQUVHO0lBQ0ssV0FBVyxDQUFnQjtJQUVsQixRQUFRLENBQVc7SUFDbkIsZ0JBQWdCLENBQVM7SUFDekIsS0FBSyxDQUE4QjtJQUNuQyxHQUFHLENBQXdCO0lBQzNCLFlBQVksQ0FBd0I7SUFDcEMsYUFBYSxDQUFVO0lBRXhDLFlBQVksRUFDVixHQUFHLEVBQ0gsUUFBUSxFQUNSLEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixlQUFlLEdBQUcsS0FBSyxFQUN2QixZQUFZLEVBQ1osYUFBYSxHQUFHLEtBQUssR0FDSztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFB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QztDQUNGO0FBaFNELG9EQWdTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgeyBTdGFja0V2ZW50UG9sbGVyLCBQb2xsUmFuZ2UgfSBmcm9tICcuL3N0YWNrLWV2ZW50LXBvbGxlcic7XG5pbXBvcnQgeyBTdGFja1Byb2dyZXNzTW9uaXRvciB9IGZyb20gJy4vc3RhY2stcHJvZ3Jlc3MtbW9uaXRvcic7XG5pbXBvcnQgdHlwZSB7IFN0YWNrQWN0aXZpdHkgfSBmcm9tICcuLi8uLi9wYXlsb2Fkcy9zdGFjay1hY3Rpdml0eSc7XG5pbXBvcnQgeyBzdGFja05hbWVGcm9tQXJuIH0gZnJvbSAnLi4vLi4vdXRpbC9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IElDbG91ZEZvcm1hdGlvbkNsaWVudCB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBFbnZpcm9ubWVudFJlc291cmNlcyB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElPLCB0eXBlIElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyByZXNvdXJjZU1ldGFkYXRhIH0gZnJvbSAnLi4vcmVzb3VyY2UtbWV0YWRhdGEvcmVzb3VyY2UtbWV0YWRhdGEnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrQWN0aXZpdHlNb25pdG9yUHJvcHMge1xuICAvKipcbiAgICogVGhlIENsb3VkRm9ybWF0aW9uIGNsaWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJb0hlbHBlciB1c2VkIGZvciBtZXNzYWdpbmdcbiAgICovXG4gIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIGFydGlmYWN0IHRoYXQgaXMgZ2V0dGluZyBkZXBsb3llZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgU3RhY2sgdGhhdCBpcyBnZXR0aW5nIGRlcGxveWVkXG4gICAqL1xuICByZWFkb25seSBzdGFja0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgcmVzb3VyY2VzIHRvIHVwZGF0ZVxuICAgKlxuICAgKiBVc2VkIHRvIGNhbGN1bGF0ZSBhIHByb2dyZXNzIGJhci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwcm9ncmVzcyByZXBvcnRpbmdcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlc1RvdGFsPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGlvbiB0aW1lIG9mIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGZpbHRlciBldmVudHMsIG9ubHkgc2hvd2luZyB0aG9zZSBmcm9tIGFmdGVyIHRoZSBjaGFuZ2VcbiAgICogc2V0IGNyZWF0aW9uIHRpbWUuXG4gICAqXG4gICAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzLCBvdGhlcndpc2UgdGhlIGZpbHRlcmluZyB3aWxsIGJlIHN1YmplY3RcbiAgICogdG8gY2xvY2sgZHJpZnQgYmV0d2VlbiBsb2NhbCBhbmQgY2xvdWQgbWFjaGluZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTG9jYWwgbWFjaGluZSdzIGN1cnJlbnQgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlU2V0Q3JlYXRpb25UaW1lPzogRGF0ZTtcblxuICAvKipcbiAgICogVGltZSB0byB3YWl0IGJldHdlZW4gZmV0Y2hpbmcgbmV3IGFjdGl2aXRpZXMuXG4gICAqXG4gICAqIE11c3Qgd2FpdCBhIHJlYXNvbmFibGUgYW1vdW50IG9mIHRpbWUgYmV0d2VlbiBwb2xscywgc2luY2Ugd2UgbmVlZCB0byBjb25zaWRlciBDbG91ZEZvcm1hdGlvbiBBUEkgbGltaXRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDJfMDAwXG4gICAqL1xuICByZWFkb25seSBwb2xsaW5nSW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHJlc291cmNlcywgdXNlZCB0byBsb29rIHVwIHRoZSBib290c3RyYXAgdG9vbGtpdCB2ZXJzaW9uIHdoZW5cbiAgICogZGlhZ25vc2luZyBHdWFyZCBIb29rIGFubm90YXRpb24gZmV0Y2ggZmFpbHVyZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQm9vdHN0cmFwIHZlcnNpb24gaXMgbm90IHJlcG9ydGVkIGluIGVycm9yIG1lc3NhZ2VzXG4gICAqL1xuICByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGRlcGxveW1lbnQgaXMgYW4gdXBkYXRlIHRvIGFuIGV4aXN0aW5nIHN0YWNrIChhcyBvcHBvc2VkIHRvIGEgY3JlYXRpb24pLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdGFja1VwZGF0ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRHJpdmVzIHRoZSBtb25pdG9yaW5nIG9mIGEgU3RhY2sgZGVwbG95bWVudFxuICpcbiAqIGBgYFxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkFxuICog4pSCICAgICAgICAgU3RhY2sgICAgICAgICDilIIgcG9sbCgpIOKUgiAgICAgICAgIFN0YWNrICAgICAgICAg4pSCICBwcm9jZXNzKGV2KSDilIIgICAgICAgICBTdGFjayAgICAgICAgIOKUglxuICog4pSCICAgICAgRXZlbnRQb2xsZXIgICAgICDilILil4DilIDilIDilIDilIDilIDilIDilIDilIIgICAgQWN0aXZpdHlNb25pdG9yICAgIOKUguKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKWtuKUgiAgICBQcm9ncmVzc01vbml0b3IgICAg4pSCXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrQWN0aXZpdHlNb25pdG9yIHtcbiAgLyoqXG4gICAqIFRoZSBwb2xsZXIgdXNlZCB0byByZWFkIHN0YWNrIGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb2xsZXI6IFN0YWNrRXZlbnRQb2xsZXI7XG5cbiAgLyoqXG4gICAqIEZldGNoIG5ldyBhY3Rpdml0eSBldmVyeSAxIHNlY29uZFxuICAgKiBQcmludGVycyBjYW4gZGVjaWRlIHRvIHVwZGF0ZSBhIHZpZXcgbGVzcyBmcmVxdWVudGx5IGlmIGRlc2lyZWRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcG9sbGluZ0ludGVydmFsOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBtb25pdG9ySWQ/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9ncmVzc01vbml0b3I6IFN0YWNrUHJvZ3Jlc3NNb25pdG9yO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHRpY2sgdGltZXJcbiAgICovXG4gIHByaXZhdGUgdGlja1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG5cbiAgLyoqXG4gICAqIFNldCB0byB0aGUgYWN0aXZpdHkgb2YgcmVhZGluZyB0aGUgY3VycmVudCBldmVudHNcbiAgICovXG4gIHByaXZhdGUgcmVhZFByb21pc2U/OiBQcm9taXNlPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpb0hlbHBlcjogSW9IZWxwZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tEaXNwbGF5TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrOiBDbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2ZuOiBJQ2xvdWRGb3JtYXRpb25DbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW52UmVzb3VyY2VzPzogRW52aXJvbm1lbnRSZXNvdXJjZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTdGFja1VwZGF0ZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgY2ZuLFxuICAgIGlvSGVscGVyLFxuICAgIHN0YWNrLFxuICAgIHN0YWNrQXJuLFxuICAgIHJlc291cmNlc1RvdGFsLFxuICAgIGNoYW5nZVNldENyZWF0aW9uVGltZSxcbiAgICBwb2xsaW5nSW50ZXJ2YWwgPSAyXzAwMCxcbiAgICBlbnZSZXNvdXJjZXMsXG4gICAgaXNTdGFja1VwZGF0ZSA9IGZhbHNlLFxuICB9OiBTdGFja0FjdGl2aXR5TW9uaXRvclByb3BzKSB7XG4gICAgdGhpcy5pb0hlbHBlciA9IGlvSGVscGVyO1xuICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICB0aGlzLnN0YWNrRGlzcGxheU5hbWUgPSBzdGFja05hbWVGcm9tQXJuKHN0YWNrQXJuKTtcbiAgICB0aGlzLmNmbiA9IGNmbjtcbiAgICB0aGlzLmVudlJlc291cmNlcyA9IGVudlJlc291cmNlcztcbiAgICB0aGlzLmlzU3RhY2tVcGRhdGUgPSBpc1N0YWNrVXBkYXRlO1xuXG4gICAgdGhpcy5wcm9ncmVzc01vbml0b3IgPSBuZXcgU3RhY2tQcm9ncmVzc01vbml0b3IocmVzb3VyY2VzVG90YWwpO1xuICAgIHRoaXMucG9sbGluZ0ludGVydmFsID0gcG9sbGluZ0ludGVydmFsO1xuICAgIHRoaXMucG9sbGVyID0gbmV3IFN0YWNrRXZlbnRQb2xsZXIoY2ZuLCB7XG4gICAgICBzdGFja0FybixcbiAgICAgIGluaXRpYWxQb2xsUmFuZ2U6IFBvbGxSYW5nZS5zaW5jZVRpbWVzdGFtcChjaGFuZ2VTZXRDcmVhdGlvblRpbWU/LmdldFRpbWUoKSA/PyBEYXRlLm5vdygpKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgZXJyb3JzIHRoYXQgd2VyZSBkaXNjb3ZlcmVkIGR1cmluZyBtb25pdG9yaW5nIG9mIHRoaXMgc3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgZXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLnBvbGxlci5lcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgcmVjZWl2ZWQgREVMRVRFX0ZBSUxFRCBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZS5cbiAgICogQ2xvdWRGb3JtYXRpb24gc2tpcHMgdGhlc2UgYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVsZXRlRmFpbHVyZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9sbGVyLmRlbGV0ZUZhaWx1cmVzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0YXJ0KCkge1xuICAgIHRoaXMubW9uaXRvcklkID0gcmFuZG9tVVVJRCgpO1xuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAxLm1zZyhgRGVwbG95aW5nICR7dGhpcy5zdGFja0Rpc3BsYXlOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IHRoaXMubW9uaXRvcklkLFxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXG4gICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2tEaXNwbGF5TmFtZSxcbiAgICAgIHJlc291cmNlc1RvdGFsOiB0aGlzLnByb2dyZXNzTW9uaXRvci50b3RhbCxcbiAgICAgIGlzU3RhY2tVcGRhdGU6IHRoaXMuaXNTdGFja1VwZGF0ZSxcbiAgICB9KSk7XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RvcCgpIHtcbiAgICBjb25zdCBvbGRNb25pdG9ySWQgPSB0aGlzLm1vbml0b3JJZCE7XG4gICAgdGhpcy5tb25pdG9ySWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMudGlja1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy50aWNrVGltZXIpO1xuICAgIH1cblxuICAgIC8vIERvIGEgZmluYWwgcG9sbCBmb3IgYWxsIGV2ZW50cy4gVGhpcyBpcyB0byBoYW5kbGUgdGhlIHNpdHVhdGlvbiB3aGVyZSBEZXNjcmliZVN0YWNrU3RhdHVzXG4gICAgLy8gYWxyZWFkeSByZXR1cm5lZCBhbiBlcnJvciwgYnV0IHRoZSBtb25pdG9yIGhhc24ndCBzZWVuIGFsbCB0aGUgZXZlbnRzIHlldCBhbmQgd2UnZCBlbmRcbiAgICAvLyB1cCBub3QgcHJpbnRpbmcgdGhlIGZhaWx1cmUgcmVhc29uIHRvIHVzZXJzLlxuICAgIGF3YWl0IHRoaXMuZmluYWxQb2xsVG9FbmQob2xkTW9uaXRvcklkKTtcblxuICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0k1NTAzLm1zZyhgQ29tcGxldGVkICR7dGhpcy5zdGFja0Rpc3BsYXlOYW1lfWAsIHtcbiAgICAgIGRlcGxveW1lbnQ6IG9sZE1vbml0b3JJZCxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrRGlzcGxheU5hbWUsXG4gICAgICByZXNvdXJjZXNUb3RhbDogdGhpcy5wcm9ncmVzc01vbml0b3IudG90YWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZU5leHRUaWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gdm9pZCB0aGlzLnRpY2soKSwgdGhpcy5wb2xsaW5nSW50ZXJ2YWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0aWNrKCkge1xuICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHRoaXMucmVhZE5ld0V2ZW50cyh0aGlzLm1vbml0b3JJZCk7XG4gICAgICBhd2FpdCB0aGlzLnJlYWRQcm9taXNlO1xuICAgICAgdGhpcy5yZWFkUHJvbWlzZSA9IHVuZGVmaW5lZDtcblxuICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBiZWVuIHN0b3AoKXBlZCB3aGlsZSB0aGUgbmV0d29yayBjYWxsIHdhcyBpbiBwcm9ncmVzcy5cbiAgICAgIGlmICghdGhpcy5tb25pdG9ySWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIubm90aWZ5KElPLkNES19UT09MS0lUX0U1NTAwLm1zZyhcbiAgICAgICAgdXRpbC5mb3JtYXQoJ0Vycm9yIG9jY3VycmVkIHdoaWxlIG1vbml0b3Jpbmcgc3RhY2s6ICVzJywgZSksXG4gICAgICAgIHsgZXJyb3I6IGUgYXMgYW55IH0sXG4gICAgICApKTtcbiAgICB9XG4gICAgdGhpcy5zY2hlZHVsZU5leHRUaWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRNZXRhZGF0YUZvcihsb2dpY2FsSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5zdGFjay5tZXRhZGF0YTtcbiAgICBpZiAoIWxvZ2ljYWxJZCB8fCAhbWV0YWRhdGEpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiByZXNvdXJjZU1ldGFkYXRhKHRoaXMuc3RhY2ssIGxvZ2ljYWxJZCk7XG4gIH1cblxuICAvKipcbiAgICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlLCBjb2xsYXBzZXMgYWxsIGludGVybmFsIHdoaXRlc3BhY2VcbiAgICogKGluY2x1ZGluZyBuZXdsaW5lcykgdG8gYSBzaW5nbGUgc3BhY2UsIGFuZCB0cnVuY2F0ZXMgdG8gYG1heENoYXJzYFxuICAgKiBjaGFyYWN0ZXJzLCBhcHBlbmRpbmcgYFsuLi50cnVuY2F0ZWRdYCB3aGVuIHRoZSBvcmlnaW5hbCB3YXMgbG9uZ2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBub3JtYWxpemVNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZywgbWF4Q2hhcnM6IG51bWJlciA9IDQwMCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG1lc3NhZ2UudHJpbSgpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZC5sZW5ndGggPiBtYXhDaGFyc1xuICAgICAgPyBub3JtYWxpemVkLnN1YnN0cmluZygwLCBtYXhDaGFycykgKyAnWy4uLnRydW5jYXRlZF0nXG4gICAgICA6IG5vcm1hbGl6ZWQ7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBHdWFyZCBIb29rIGFubm90YXRpb24gZGV0YWlscyB2aWEgR2V0SG9va1Jlc3VsdCBBUEkgYW5kIGZvcm1hdHMgdGhlbVxuICAgKiBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLiBSZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgZmV0Y2ggZmFpbHMgb3IgdGhlcmVcbiAgICogYXJlIG5vIGZhaWxlZCBhbm5vdGF0aW9ucy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhob29rSW52b2NhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNmbi5nZXRIb29rUmVzdWx0KHsgSG9va1Jlc3VsdElkOiBob29rSW52b2NhdGlvbklkIH0pO1xuICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSByZXN1bHQuQW5ub3RhdGlvbnMgPz8gW107XG4gICAgICBjb25zdCBmYWlsZWRBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zLmZpbHRlcigoYSkgPT4gYS5TdGF0dXMgPT09ICdGQUlMRUQnKTtcbiAgICAgIGlmIChmYWlsZWRBbm5vdGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydOb25Db21wbGlhbnQgUnVsZXM6JywgJyddO1xuICAgICAgZm9yIChjb25zdCBhbm5vdGF0aW9uIG9mIGZhaWxlZEFubm90YXRpb25zKSB7XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLkFubm90YXRpb25OYW1lKSB7XG4gICAgICAgICAgbGluZXMucHVzaChgWyR7YW5ub3RhdGlvbi5Bbm5vdGF0aW9uTmFtZX1dYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFubm90YXRpb24uU3RhdHVzTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYOKAoiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlN0YXR1c01lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFJlbWVkaWF0aW9uOiAke3RoaXMubm9ybWFsaXplTWVzc2FnZShhbm5vdGF0aW9uLlJlbWVkaWF0aW9uTWVzc2FnZSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluZXMucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGluZXMuam9pbignXFxuJykudHJpbUVuZCgpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpO1xuXG4gICAgICBjb25zdCBpc1Blcm1pc3Npb25zRXJyb3IgPVxuICAgICAgICBlLm5hbWUgPT09ICdBY2Nlc3NEZW5pZWRFeGNlcHRpb24nIHx8XG4gICAgICAgICh0eXBlb2YgZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyAmJiBlcnJvck1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybTogY2xvdWRmb3JtYXRpb246Z2V0aG9va3Jlc3VsdCcpKTtcblxuICAgICAgaWYgKGlzUGVybWlzc2lvbnNFcnJvciAmJiB0aGlzLmVudlJlc291cmNlcykge1xuICAgICAgICBsZXQgY3VycmVudFZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjdXJyZW50VmVyc2lvbiA9IChhd2FpdCB0aGlzLmVudlJlc291cmNlcy5sb29rdXBUb29sa2l0KCkpLnZlcnNpb247XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnMgbG9va2luZyB1cCB0aGUgYm9vdHN0cmFwIHZlcnNpb25cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdChcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggcmVzdWx0IGRldGFpbHMgZm9yIEhvb2sgaW52b2NhdGlvbiAke2hvb2tJbnZvY2F0aW9uSWR9OiAke2Vycm9yTWVzc2FnZX0uIE1ha2Ugc3VyZSB5b3UgaGF2ZSBwZXJtaXNzaW9ucyB0byBjYWxsIHRoZSBHZXRIb29rUmVzdWx0IEFQSSwgb3IgcmUtYm9vdHN0cmFwIHlvdXIgZW52aXJvbm1lbnQgYnkgcnVubmluZyAnY2RrIGJvb3RzdHJhcCcgdG8gdXBkYXRlIHRoZSBCb290c3RyYXAgQ0RLIFRvb2xraXQgc3RhY2suXG4gICAgICAgICAgICAnQm9vdHN0cmFwIHRvb2xraXQgc3RhY2sgdmVyc2lvbiAzMSBvciBsYXRlciBpcyBuZWVkZWQ7IGN1cnJlbnQgdmVyc2lvbjogJHtjdXJyZW50VmVyc2lvbiA/PyAndW5rbm93bid9LmAsXG4gICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW9IZWxwZXIuZGVmYXVsdHMud2FybihcbiAgICAgICAgICB1dGlsLmZvcm1hdCgnRmFpbGVkIHRvIGZldGNoIEd1YXJkIEhvb2sgZGV0YWlscyBmb3IgaW52b2NhdGlvbiAlczogJXMnLCBob29rSW52b2NhdGlvbklkLCBlcnJvck1lc3NhZ2UpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhbGwgbmV3IGV2ZW50cyBmcm9tIHRoZSBzdGFjayBoaXN0b3J5XG4gICAqXG4gICAqIFRoZSBldmVudHMgYXJlIHJldHVybmVkIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgYnkgdGhlIHVuZGVybHlpbmcgcG9sbGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZWFkTmV3RXZlbnRzKG1vbml0b3JJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcG9sbEV2ZW50cyA9IGF3YWl0IHRoaXMucG9sbGVyLnBvbGwoKTtcblxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VFdmVudCBvZiBwb2xsRXZlbnRzKSB7XG4gICAgICB0aGlzLnByb2dyZXNzTW9uaXRvci5wcm9jZXNzKHJlc291cmNlRXZlbnQpO1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgZmFpbGVkIEd1YXJkIEhvb2sgZXZlbnQgd2l0aCBhbiBpbnZvY2F0aW9uIElELCBmZXRjaCBhbm5vdGF0aW9uc1xuICAgICAgaWYgKHJlc291cmNlRXZlbnQuZXZlbnQuSG9va0ludm9jYXRpb25JZCkge1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGF3YWl0IHRoaXMuZmV0Y2hHdWFyZEhvb2tBbm5vdGF0aW9ucyhyZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tJbnZvY2F0aW9uSWQpO1xuICAgICAgICBpZiAoYW5ub3RhdGlvbnMpIHtcbiAgICAgICAgICByZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tTdGF0dXNSZWFzb24gPSBhbm5vdGF0aW9ucztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpdml0eTogU3RhY2tBY3Rpdml0eSA9IHtcbiAgICAgICAgZGVwbG95bWVudDogbW9uaXRvcklkLFxuICAgICAgICBldmVudDogcmVzb3VyY2VFdmVudC5ldmVudCxcbiAgICAgICAgbWV0YWRhdGE6IHRoaXMuZmluZE1ldGFkYXRhRm9yKHJlc291cmNlRXZlbnQuZXZlbnQuTG9naWNhbFJlc291cmNlSWQpLFxuICAgICAgICBwcm9ncmVzczogdGhpcy5wcm9ncmVzc01vbml0b3IucHJvZ3Jlc3MsXG4gICAgICB9O1xuXG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMi5tc2codGhpcy5mb3JtYXRBY3Rpdml0eShhY3Rpdml0eSwgdHJ1ZSksIGFjdGl2aXR5KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBmaW5hbCBwb2xsIHRvIHRoZSBlbmQgYW5kIGZsdXNoIG91dCBhbGwgZXZlbnRzIHRvIHRoZSBwcmludGVyXG4gICAqXG4gICAqIEZpbmlzaCBhbnkgcG9sbCBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIHRoZW4gZG8gYSBmaW5hbCBvbmUgdW50aWwgd2UndmVcbiAgICogcmVhY2hlZCB0aGUgbGFzdCBwYWdlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBmaW5hbFBvbGxUb0VuZChtb25pdG9ySWQ6IHN0cmluZykge1xuICAgIC8vIElmIHdlIHdlcmUgZG9pbmcgYSBwb2xsLCBmaW5pc2ggdGhhdCBmaXJzdC4gSXQgd2FzIHN0YXJ0ZWQgYmVmb3JlXG4gICAgLy8gdGhlIG1vbWVudCB3ZSB3ZXJlIHN1cmUgd2Ugd2VyZW4ndCBnb2luZyB0byBnZXQgYW55IG5ldyBldmVudHMgYW55bW9yZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gZG8gYSBuZXcgb25lIGFueXdheS4gTmVlZCB0byB3YWl0IGZvciB0aGlzIG9uZSB0aG91Z2hcbiAgICAvLyBiZWNhdXNlIG91ciBzdGF0ZSBpcyBzaW5nbGUtdGhyZWFkZWQuXG4gICAgaWYgKHRoaXMucmVhZFByb21pc2UpIHtcbiAgICAgIGF3YWl0IHRoaXMucmVhZFByb21pc2U7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5yZWFkTmV3RXZlbnRzKG1vbml0b3JJZCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIHN0YWNrIGFjdGl2aXR5IGludG8gYSBiYXNpYyBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0QWN0aXZpdHkoYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHksIHByb2dyZXNzOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBjb25zdCBldmVudCA9IGFjdGl2aXR5LmV2ZW50O1xuICAgIGNvbnN0IG1ldGFkYXRhID0gYWN0aXZpdHkubWV0YWRhdGE7XG5cbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBtZXRhZGF0YSA/IG1ldGFkYXRhLmNvbnN0cnVjdFBhdGggOiBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCB8fCAnJztcbiAgICBjb25zdCBsb2dpY2FsSWQgPSByZXNvdXJjZU5hbWUgIT09IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkID8gYCgke2V2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkfSkgYCA6ICcnO1xuXG4gICAgcmV0dXJuIHV0aWwuZm9ybWF0KFxuICAgICAgJyVzIHwgJXMlcyB8ICVzIHwgJXMgfCAlcyAlcyVzJXMnLFxuICAgICAgZXZlbnQuU3RhY2tOYW1lLFxuICAgICAgcHJvZ3Jlc3MgIT09IGZhbHNlID8gYCR7YWN0aXZpdHkucHJvZ3Jlc3MuZm9ybWF0dGVkfSB8IGAgOiAnJyxcbiAgICAgIG5ldyBEYXRlKGV2ZW50LlRpbWVzdGFtcCEpLnRvTG9jYWxlVGltZVN0cmluZygpLFxuICAgICAgZXZlbnQuUmVzb3VyY2VTdGF0dXMgfHwgJycsXG4gICAgICBldmVudC5SZXNvdXJjZVR5cGUsXG4gICAgICByZXNvdXJjZU5hbWUsXG4gICAgICBsb2dpY2FsSWQsXG4gICAgICBldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA/IGV2ZW50LlJlc291cmNlU3RhdHVzUmVhc29uIDogJycsXG4gICAgICBtZXRhZGF0YT8uZW50cnkudHJhY2UgPyBgXFxuXFx0JHttZXRhZGF0YS5lbnRyeS50cmFjZS5qb2luKCdcXG5cXHRcXFxcXyAnKX1gIDogJycsXG4gICAgKTtcbiAgfVxufVxuXG4iXX0=
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stYWN0aXZpdHktbW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWFjdGl2aXR5LW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBQ3pDLGdEQUFrQztBQUVsQyw2REFBbUU7QUFDbkUscUVBQWdFO0FBRWhFLDhEQUE2RDtBQUc3RCwyQ0FBa0Q7QUFDbEQsOEVBQTBFO0FBc0UxRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLG9CQUFvQjtJQUMvQjs7T0FFRztJQUNjLE1BQU0sQ0FBbUI7SUFFMUM7OztPQUdHO0lBQ2MsZUFBZSxDQUFTO0lBRWpDLFNBQVMsQ0FBVTtJQUVWLGVBQWUsQ0FBdUI7SUFFdkQ7O09BRUc7SUFDSyxTQUFTLENBQWlDO0lBRWxEOztPQUVHO0lBQ0ssV0FBVyxDQUFnQjtJQUVsQixRQUFRLENBQVc7SUFDbkIsZ0JBQWdCLENBQVM7SUFDekIsS0FBSyxDQUE4QjtJQUNuQyxHQUFHLENBQXdCO0lBQzNCLFlBQVksQ0FBd0I7SUFDcEMsYUFBYSxDQUFVO0lBRXhDLFlBQVksRUFDVixHQUFHLEVBQ0gsUUFBUSxFQUNSLEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixlQUFlLEdBQUcsS0FBSyxFQUN2QixZQUFZLEVBQ1osYUFBYSxHQUFHLEtBQUssR0FDSztRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBQSxpQ0FBZ0IsRUFBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxD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SyxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzVFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF4U0Qsb0RBd1NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0IH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktYXBpJztcbmltcG9ydCB7IFN0YWNrRXZlbnRQb2xsZXIsIFBvbGxSYW5nZSB9IGZyb20gJy4vc3RhY2stZXZlbnQtcG9sbGVyJztcbmltcG9ydCB7IFN0YWNrUHJvZ3Jlc3NNb25pdG9yIH0gZnJvbSAnLi9zdGFjay1wcm9ncmVzcy1tb25pdG9yJztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSB9IGZyb20gJy4uLy4uL3BheWxvYWRzL3N0YWNrLWFjdGl2aXR5JztcbmltcG9ydCB7IHN0YWNrTmFtZUZyb21Bcm4gfSBmcm9tICcuLi8uLi91dGlsL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkRm9ybWF0aW9uQ2xpZW50IH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50UmVzb3VyY2VzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSU8sIHR5cGUgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcbmltcG9ydCB7IHJlc291cmNlTWV0YWRhdGEgfSBmcm9tICcuLi9yZXNvdXJjZS1tZXRhZGF0YS9yZXNvdXJjZS1tZXRhZGF0YSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tBY3Rpdml0eU1vbml0b3JQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gY2xpZW50XG4gICAqL1xuICByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcblxuICAvKipcbiAgICogVGhlIElvSGVscGVyIHVzZWQgZm9yIG1lc3NhZ2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgaW9IZWxwZXI6IElvSGVscGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgYXJ0aWZhY3QgdGhhdCBpcyBnZXR0aW5nIGRlcGxveWVkXG4gICAqL1xuICByZWFkb25seSBzdGFjazogQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBTdGFjayB0aGF0IGlzIGdldHRpbmcgZGVwbG95ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvdGFsIG51bWJlciBvZiByZXNvdXJjZXMgdG8gdXBkYXRlXG4gICAqXG4gICAqIFVzZWQgdG8gY2FsY3VsYXRlIGEgcHJvZ3Jlc3MgYmFyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHByb2dyZXNzIHJlcG9ydGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzVG90YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0aW9uIHRpbWUgb2YgdGhlIGNoYW5nZSBzZXRcbiAgICpcbiAgICogVGhpcyB3aWxsIGJlIHVzZWQgdG8gZmlsdGVyIGV2ZW50cywgb25seSBzaG93aW5nIHRob3NlIGZyb20gYWZ0ZXIgdGhlIGNoYW5nZVxuICAgKiBzZXQgY3JlYXRpb24gdGltZS5cbiAgICpcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMsIG90aGVyd2lzZSB0aGUgZmlsdGVyaW5nIHdpbGwgYmUgc3ViamVjdFxuICAgKiB0byBjbG9jayBkcmlmdCBiZXR3ZWVuIGxvY2FsIGFuZCBjbG91ZCBtYWNoaW5lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBMb2NhbCBtYWNoaW5lJ3MgY3VycmVudCB0aW1lXG4gICAqL1xuICByZWFkb25seSBjaGFuZ2VTZXRDcmVhdGlvblRpbWU/OiBEYXRlO1xuXG4gIC8qKlxuICAgKiBUaW1lIHRvIHdhaXQgYmV0d2VlbiBmZXRjaGluZyBuZXcgYWN0aXZpdGllcy5cbiAgICpcbiAgICogTXVzdCB3YWl0IGEgcmVhc29uYWJsZSBhbW91bnQgb2YgdGltZSBiZXR3ZWVuIHBvbGxzLCBzaW5jZSB3ZSBuZWVkIHRvIGNvbnNpZGVyIENsb3VkRm9ybWF0aW9uIEFQSSBsaW1pdHNcbiAgICpcbiAgICogQGRlZmF1bHQgMl8wMDBcbiAgICovXG4gIHJlYWRvbmx5IHBvbGxpbmdJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgcmVzb3VyY2VzLCB1c2VkIHRvIGxvb2sgdXAgdGhlIGJvb3RzdHJhcCB0b29sa2l0IHZlcnNpb24gd2hlblxuICAgKiBkaWFnbm9zaW5nIEd1YXJkIEhvb2sgYW5ub3RhdGlvbiBmZXRjaCBmYWlsdXJlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgdmVyc2lvbiBpcyBub3QgcmVwb3J0ZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICovXG4gIHJlYWRvbmx5IGVudlJlc291cmNlcz86IEVudmlyb25tZW50UmVzb3VyY2VzO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgZGVwbG95bWVudCBpcyBhbiB1cGRhdGUgdG8gYW4gZXhpc3Rpbmcgc3RhY2sgKGFzIG9wcG9zZWQgdG8gYSBjcmVhdGlvbikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1N0YWNrVXBkYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBEcml2ZXMgdGhlIG1vbml0b3Jpbmcgb2YgYSBTdGFjayBkZXBsb3ltZW50XG4gKlxuICogYGBgXG4gKiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gKiDilIIgICAgICAgICBTdGFjayAgICAgICAgIOKUgiBwb2xsKCkg4pSCICAgICAgICAgU3RhY2sgICAgICAgICDilIIgIHByb2Nlc3MoZXYpIOKUgiAgICAgICAgIFN0YWNrICAgICAgICAg4pSCXG4gKiDilIIgICAgICBFdmVudFBvbGxlciAgICAgIOKUguKXgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgiAgICBBY3Rpdml0eU1vbml0b3IgICAg4pSC4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pa24pSCICAgIFByb2dyZXNzTW9uaXRvciAgICDilIJcbiAqIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU3RhY2tBY3Rpdml0eU1vbml0b3Ige1xuICAvKipcbiAgICogVGhlIHBvbGxlciB1c2VkIHRvIHJlYWQgc3RhY2sgZXZlbnRzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHBvbGxlcjogU3RhY2tFdmVudFBvbGxlcjtcblxuICAvKipcbiAgICogRmV0Y2ggbmV3IGFjdGl2aXR5IGV2ZXJ5IDEgc2Vjb25kXG4gICAqIFByaW50ZXJzIGNhbiBkZWNpZGUgdG8gdXBkYXRlIGEgdmlldyBsZXNzIGZyZXF1ZW50bHkgaWYgZGVzaXJlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwb2xsaW5nSW50ZXJ2YWw6IG51bWJlcjtcblxuICBwcml2YXRlIG1vbml0b3JJZD86IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2dyZXNzTW9uaXRvcjogU3RhY2tQcm9ncmVzc01vbml0b3I7XG5cbiAgLyoqXG4gICAqIEN1cnJlbnQgdGljayB0aW1lclxuICAgKi9cbiAgcHJpdmF0ZSB0aWNrVGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICAvKipcbiAgICogU2V0IHRvIHRoZSBhY3Rpdml0eSBvZiByZWFkaW5nIHRoZSBjdXJyZW50IGV2ZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkUHJvbWlzZT86IFByb21pc2U8YW55PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlvSGVscGVyOiBJb0hlbHBlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBzdGFja0Rpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IENsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBjZm46IElDbG91ZEZvcm1hdGlvbkNsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBlbnZSZXNvdXJjZXM/OiBFbnZpcm9ubWVudFJlc291cmNlcztcbiAgcHJpdmF0ZSByZWFkb25seSBpc1N0YWNrVXBkYXRlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBjZm4sXG4gICAgaW9IZWxwZXIsXG4gICAgc3RhY2ssXG4gICAgc3RhY2tBcm4sXG4gICAgcmVzb3VyY2VzVG90YWwsXG4gICAgY2hhbmdlU2V0Q3JlYXRpb25UaW1lLFxuICAgIHBvbGxpbmdJbnRlcnZhbCA9IDJfMDAwLFxuICAgIGVudlJlc291cmNlcyxcbiAgICBpc1N0YWNrVXBkYXRlID0gZmFsc2UsXG4gIH06IFN0YWNrQWN0aXZpdHlNb25pdG9yUHJvcHMpIHtcbiAgICB0aGlzLmlvSGVscGVyID0gaW9IZWxwZXI7XG4gICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgIHRoaXMuc3RhY2tEaXNwbGF5TmFtZSA9IHN0YWNrTmFtZUZyb21Bcm4oc3RhY2tBcm4pO1xuICAgIHRoaXMuY2ZuID0gY2ZuO1xuICAgIHRoaXMuZW52UmVzb3VyY2VzID0gZW52UmVzb3VyY2VzO1xuICAgIHRoaXMuaXNTdGFja1VwZGF0ZSA9IGlzU3RhY2tVcGRhdGU7XG5cbiAgICB0aGlzLnByb2dyZXNzTW9uaXRvciA9IG5ldyBTdGFja1Byb2dyZXNzTW9uaXRvcihyZXNvdXJjZXNUb3RhbCk7XG4gICAgdGhpcy5wb2xsaW5nSW50ZXJ2YWwgPSBwb2xsaW5nSW50ZXJ2YWw7XG4gICAgdGhpcy5wb2xsZXIgPSBuZXcgU3RhY2tFdmVudFBvbGxlcihjZm4sIHtcbiAgICAgIHN0YWNrQXJuLFxuICAgICAgaW5pdGlhbFBvbGxSYW5nZTogUG9sbFJhbmdlLnNpbmNlVGltZXN0YW1wKGNoYW5nZVNldENyZWF0aW9uVGltZT8uZ2V0VGltZSgpID8/IERhdGUubm93KCkpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBlcnJvcnMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQgZHVyaW5nIG1vbml0b3Jpbmcgb2YgdGhpcyBzdGFja1xuICAgKi9cbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9sbGVyLmVycm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvdXJjZXMgdGhhdCByZWNlaXZlZCBERUxFVEVfRkFJTEVEIGR1cmluZyB0aGUgc3RhY2sgdXBkYXRlLlxuICAgKiBDbG91ZEZvcm1hdGlvbiBza2lwcyB0aGVzZSBhbmQgY29tcGxldGVzIHRoZSB1cGRhdGUgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCBkZWxldGVGYWlsdXJlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wb2xsZXIuZGVsZXRlRmFpbHVyZXM7XG4gIH1cblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgY29tcGxldGVkIGRlcGxveW1lbnQgYnV0IGFyZSBzdGlsbCBzdGFiaWxpemluZy5cbiAgICogUG9wdWxhdGVkIGZvciBFeHByZXNzIE1vZGUgZGVwbG95bWVudHMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YWJpbGl6aW5nUmVzb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnBvbGxlci5zdGFiaWxpemluZ1Jlc291cmNlcztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdGFydCgpIHtcbiAgICB0aGlzLm1vbml0b3JJZCA9IHJhbmRvbVVVSUQoKTtcbiAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMS5tc2coYERlcGxveWluZyAke3RoaXMuc3RhY2tEaXNwbGF5TmFtZX1gLCB7XG4gICAgICBkZXBsb3ltZW50OiB0aGlzLm1vbml0b3JJZCxcbiAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrRGlzcGxheU5hbWUsXG4gICAgICByZXNvdXJjZXNUb3RhbDogdGhpcy5wcm9ncmVzc01vbml0b3IudG90YWwsXG4gICAgICBpc1N0YWNrVXBkYXRlOiB0aGlzLmlzU3RhY2tVcGRhdGUsXG4gICAgfSkpO1xuICAgIHRoaXMuc2NoZWR1bGVOZXh0VGljaygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0b3AoKSB7XG4gICAgY29uc3Qgb2xkTW9uaXRvcklkID0gdGhpcy5tb25pdG9ySWQhO1xuICAgIHRoaXMubW9uaXRvcklkID0gdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLnRpY2tUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGlja1RpbWVyKTtcbiAgICB9XG5cbiAgICAvLyBEbyBhIGZpbmFsIHBvbGwgZm9yIGFsbCBldmVudHMuIFRoaXMgaXMgdG8gaGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlcmUgRGVzY3JpYmVTdGFja1N0YXR1c1xuICAgIC8vIGFscmVhZHkgcmV0dXJuZWQgYW4gZXJyb3IsIGJ1dCB0aGUgbW9uaXRvciBoYXNuJ3Qgc2VlbiBhbGwgdGhlIGV2ZW50cyB5ZXQgYW5kIHdlJ2QgZW5kXG4gICAgLy8gdXAgbm90IHByaW50aW5nIHRoZSBmYWlsdXJlIHJlYXNvbiB0byB1c2Vycy5cbiAgICBhd2FpdCB0aGlzLmZpbmFsUG9sbFRvRW5kKG9sZE1vbml0b3JJZCk7XG5cbiAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTUwMy5tc2coYENvbXBsZXRlZCAke3RoaXMuc3RhY2tEaXNwbGF5TmFtZX1gLCB7XG4gICAgICBkZXBsb3ltZW50OiBvbGRNb25pdG9ySWQsXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFja0Rpc3BsYXlOYW1lLFxuICAgICAgcmVzb3VyY2VzVG90YWw6IHRoaXMucHJvZ3Jlc3NNb25pdG9yLnRvdGFsLFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVOZXh0VGljaygpIHtcbiAgICBpZiAoIXRoaXMubW9uaXRvcklkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50aWNrVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHZvaWQgdGhpcy50aWNrKCksIHRoaXMucG9sbGluZ0ludGVydmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdGljaygpIHtcbiAgICBpZiAoIXRoaXMubW9uaXRvcklkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmVhZFByb21pc2UgPSB0aGlzLnJlYWROZXdFdmVudHModGhpcy5tb25pdG9ySWQpO1xuICAgICAgYXdhaXQgdGhpcy5yZWFkUHJvbWlzZTtcbiAgICAgIHRoaXMucmVhZFByb21pc2UgPSB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIFdlIG1pZ2h0IGhhdmUgYmVlbiBzdG9wKClwZWQgd2hpbGUgdGhlIG5ldHdvcmsgY2FsbCB3YXMgaW4gcHJvZ3Jlc3MuXG4gICAgICBpZiAoIXRoaXMubW9uaXRvcklkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLm5vdGlmeShJTy5DREtfVE9PTEtJVF9FNTUwMC5tc2coXG4gICAgICAgIHV0aWwuZm9ybWF0KCdFcnJvciBvY2N1cnJlZCB3aGlsZSBtb25pdG9yaW5nIHN0YWNrOiAlcycsIGUpLFxuICAgICAgICB7IGVycm9yOiBlIGFzIGFueSB9LFxuICAgICAgKSk7XG4gICAgfVxuICAgIHRoaXMuc2NoZWR1bGVOZXh0VGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTWV0YWRhdGFGb3IobG9naWNhbElkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuc3RhY2subWV0YWRhdGE7XG4gICAgaWYgKCFsb2dpY2FsSWQgfHwgIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VNZXRhZGF0YSh0aGlzLnN0YWNrLCBsb2dpY2FsSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSwgY29sbGFwc2VzIGFsbCBpbnRlcm5hbCB3aGl0ZXNwYWNlXG4gICAqIChpbmNsdWRpbmcgbmV3bGluZXMpIHRvIGEgc2luZ2xlIHNwYWNlLCBhbmQgdHJ1bmNhdGVzIHRvIGBtYXhDaGFyc2BcbiAgICogY2hhcmFjdGVycywgYXBwZW5kaW5nIGBbLi4udHJ1bmNhdGVkXWAgd2hlbiB0aGUgb3JpZ2luYWwgd2FzIGxvbmdlci5cbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcsIG1heENoYXJzOiBudW1iZXIgPSA0MDApOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBtZXNzYWdlLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJyk7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQubGVuZ3RoID4gbWF4Q2hhcnNcbiAgICAgID8gbm9ybWFsaXplZC5zdWJzdHJpbmcoMCwgbWF4Q2hhcnMpICsgJ1suLi50cnVuY2F0ZWRdJ1xuICAgICAgOiBub3JtYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgR3VhcmQgSG9vayBhbm5vdGF0aW9uIGRldGFpbHMgdmlhIEdldEhvb2tSZXN1bHQgQVBJIGFuZCBmb3JtYXRzIHRoZW1cbiAgICogaW50byBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZy4gUmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGZldGNoIGZhaWxzIG9yIHRoZXJlXG4gICAqIGFyZSBubyBmYWlsZWQgYW5ub3RhdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGZldGNoR3VhcmRIb29rQW5ub3RhdGlvbnMoaG9va0ludm9jYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jZm4uZ2V0SG9va1Jlc3VsdCh7IEhvb2tSZXN1bHRJZDogaG9va0ludm9jYXRpb25JZCB9KTtcbiAgICAgIGNvbnN0IGFubm90YXRpb25zID0gcmVzdWx0LkFubm90YXRpb25zID8/IFtdO1xuICAgICAgY29uc3QgZmFpbGVkQW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucy5maWx0ZXIoKGEpID0+IGEuU3RhdHVzID09PSAnRkFJTEVEJyk7XG4gICAgICBpZiAoZmFpbGVkQW5ub3RhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFsnTm9uQ29tcGxpYW50IFJ1bGVzOicsICcnXTtcbiAgICAgIGZvciAoY29uc3QgYW5ub3RhdGlvbiBvZiBmYWlsZWRBbm5vdGF0aW9ucykge1xuICAgICAgICBpZiAoYW5ub3RhdGlvbi5Bbm5vdGF0aW9uTmFtZSkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYFske2Fubm90YXRpb24uQW5ub3RhdGlvbk5hbWV9XWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbm5vdGF0aW9uLlN0YXR1c01lc3NhZ2UpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKGDigKIgJHt0aGlzLm5vcm1hbGl6ZU1lc3NhZ2UoYW5ub3RhdGlvbi5TdGF0dXNNZXNzYWdlKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYW5ub3RhdGlvbi5SZW1lZGlhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgICBsaW5lcy5wdXNoKGBSZW1lZGlhdGlvbjogJHt0aGlzLm5vcm1hbGl6ZU1lc3NhZ2UoYW5ub3RhdGlvbi5SZW1lZGlhdGlvbk1lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICAgIGxpbmVzLnB1c2goJycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpLnRyaW1FbmQoKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKTtcblxuICAgICAgY29uc3QgaXNQZXJtaXNzaW9uc0Vycm9yID1cbiAgICAgICAgZS5uYW1lID09PSAnQWNjZXNzRGVuaWVkRXhjZXB0aW9uJyB8fFxuICAgICAgICAodHlwZW9mIGVycm9yTWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgZXJyb3JNZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ25vdCBhdXRob3JpemVkIHRvIHBlcmZvcm06IGNsb3VkZm9ybWF0aW9uOmdldGhvb2tyZXN1bHQnKSk7XG5cbiAgICAgIGlmIChpc1Blcm1pc3Npb25zRXJyb3IgJiYgdGhpcy5lbnZSZXNvdXJjZXMpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRWZXJzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY3VycmVudFZlcnNpb24gPSAoYXdhaXQgdGhpcy5lbnZSZXNvdXJjZXMubG9va3VwVG9vbGtpdCgpKS52ZXJzaW9uO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzIGxvb2tpbmcgdXAgdGhlIGJvb3RzdHJhcCB2ZXJzaW9uXG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLndhcm4oXG4gICAgICAgICAgdXRpbC5mb3JtYXQoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGZldGNoIHJlc3VsdCBkZXRhaWxzIGZvciBIb29rIGludm9jYXRpb24gJHtob29rSW52b2NhdGlvbklkfTogJHtlcnJvck1lc3NhZ2V9LiBNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgdG8gY2FsbCB0aGUgR2V0SG9va1Jlc3VsdCBBUEksIG9yIHJlLWJvb3RzdHJhcCB5b3VyIGVudmlyb25tZW50IGJ5IHJ1bm5pbmcgJ2NkayBib290c3RyYXAnIHRvIHVwZGF0ZSB0aGUgQm9vdHN0cmFwIENESyBUb29sa2l0IHN0YWNrLlxuICAgICAgICAgICAgJ0Jvb3RzdHJhcCB0b29sa2l0IHN0YWNrIHZlcnNpb24gMzEgb3IgbGF0ZXIgaXMgbmVlZGVkOyBjdXJyZW50IHZlcnNpb246ICR7Y3VycmVudFZlcnNpb24gPz8gJ3Vua25vd24nfS5gLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLmlvSGVscGVyLmRlZmF1bHRzLndhcm4oXG4gICAgICAgICAgdXRpbC5mb3JtYXQoJ0ZhaWxlZCB0byBmZXRjaCBHdWFyZCBIb29rIGRldGFpbHMgZm9yIGludm9jYXRpb24gJXM6ICVzJywgaG9va0ludm9jYXRpb25JZCwgZXJyb3JNZXNzYWdlKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgYWxsIG5ldyBldmVudHMgZnJvbSB0aGUgc3RhY2sgaGlzdG9yeVxuICAgKlxuICAgKiBUaGUgZXZlbnRzIGFyZSByZXR1cm5lZCBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIGJ5IHRoZSB1bmRlcmx5aW5nIHBvbGxlci5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVhZE5ld0V2ZW50cyhtb25pdG9ySWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBvbGxFdmVudHMgPSBhd2FpdCB0aGlzLnBvbGxlci5wb2xsKCk7XG5cbiAgICBmb3IgKGNvbnN0IHJlc291cmNlRXZlbnQgb2YgcG9sbEV2ZW50cykge1xuICAgICAgdGhpcy5wcm9ncmVzc01vbml0b3IucHJvY2VzcyhyZXNvdXJjZUV2ZW50KTtcblxuICAgICAgLy8gSWYgdGhpcyBpcyBhIGZhaWxlZCBHdWFyZCBIb29rIGV2ZW50IHdpdGggYW4gaW52b2NhdGlvbiBJRCwgZmV0Y2ggYW5ub3RhdGlvbnNcbiAgICAgIGlmIChyZXNvdXJjZUV2ZW50LmV2ZW50Lkhvb2tJbnZvY2F0aW9uSWQpIHtcbiAgICAgICAgY29uc3QgYW5ub3RhdGlvbnMgPSBhd2FpdCB0aGlzLmZldGNoR3VhcmRIb29rQW5ub3RhdGlvbnMocmVzb3VyY2VFdmVudC5ldmVudC5Ib29rSW52b2NhdGlvbklkKTtcbiAgICAgICAgaWYgKGFubm90YXRpb25zKSB7XG4gICAgICAgICAgcmVzb3VyY2VFdmVudC5ldmVudC5Ib29rU3RhdHVzUmVhc29uID0gYW5ub3RhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgYWN0aXZpdHk6IFN0YWNrQWN0aXZpdHkgPSB7XG4gICAgICAgIGRlcGxveW1lbnQ6IG1vbml0b3JJZCxcbiAgICAgICAgZXZlbnQ6IHJlc291cmNlRXZlbnQuZXZlbnQsXG4gICAgICAgIG1ldGFkYXRhOiB0aGlzLmZpbmRNZXRhZGF0YUZvcihyZXNvdXJjZUV2ZW50LmV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkKSxcbiAgICAgICAgcHJvZ3Jlc3M6IHRoaXMucHJvZ3Jlc3NNb25pdG9yLnByb2dyZXNzLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQgdGhpcy5pb0hlbHBlci5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU1MDIubXNnKHRoaXMuZm9ybWF0QWN0aXZpdHkoYWN0aXZpdHksIHRydWUpLCBhY3Rpdml0eSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGEgZmluYWwgcG9sbCB0byB0aGUgZW5kIGFuZCBmbHVzaCBvdXQgYWxsIGV2ZW50cyB0byB0aGUgcHJpbnRlclxuICAgKlxuICAgKiBGaW5pc2ggYW55IHBvbGwgY3VycmVudGx5IGluIHByb2dyZXNzLCB0aGVuIGRvIGEgZmluYWwgb25lIHVudGlsIHdlJ3ZlXG4gICAqIHJlYWNoZWQgdGhlIGxhc3QgcGFnZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZmluYWxQb2xsVG9FbmQobW9uaXRvcklkOiBzdHJpbmcpIHtcbiAgICAvLyBJZiB3ZSB3ZXJlIGRvaW5nIGEgcG9sbCwgZmluaXNoIHRoYXQgZmlyc3QuIEl0IHdhcyBzdGFydGVkIGJlZm9yZVxuICAgIC8vIHRoZSBtb21lbnQgd2Ugd2VyZSBzdXJlIHdlIHdlcmVuJ3QgZ29pbmcgdG8gZ2V0IGFueSBuZXcgZXZlbnRzIGFueW1vcmVcbiAgICAvLyBzbyB3ZSBuZWVkIHRvIGRvIGEgbmV3IG9uZSBhbnl3YXkuIE5lZWQgdG8gd2FpdCBmb3IgdGhpcyBvbmUgdGhvdWdoXG4gICAgLy8gYmVjYXVzZSBvdXIgc3RhdGUgaXMgc2luZ2xlLXRocmVhZGVkLlxuICAgIGlmICh0aGlzLnJlYWRQcm9taXNlKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlYWRQcm9taXNlO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVhZE5ld0V2ZW50cyhtb25pdG9ySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBzdGFjayBhY3Rpdml0eSBpbnRvIGEgYmFzaWMgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdEFjdGl2aXR5KGFjdGl2aXR5OiBTdGFja0FjdGl2aXR5LCBwcm9ncmVzczogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3QgZXZlbnQgPSBhY3Rpdml0eS5ldmVudDtcbiAgICBjb25zdCBtZXRhZGF0YSA9IGFjdGl2aXR5Lm1ldGFkYXRhO1xuXG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gbWV0YWRhdGEgPyBtZXRhZGF0YS5jb25zdHJ1Y3RQYXRoIDogZXZlbnQuTG9naWNhbFJlc291cmNlSWQgfHwgJyc7XG4gICAgY29uc3QgbG9naWNhbElkID0gcmVzb3VyY2VOYW1lICE9PSBldmVudC5Mb2dpY2FsUmVzb3VyY2VJZCA/IGAoJHtldmVudC5Mb2dpY2FsUmVzb3VyY2VJZH0pIGAgOiAnJztcblxuICAgIHJldHVybiB1dGlsLmZvcm1hdChcbiAgICAgICclcyB8ICVzJXMgfCAlcyB8ICVzIHwgJXMgJXMlcyVzJyxcbiAgICAgIGV2ZW50LlN0YWNrTmFtZSxcbiAgICAgIHByb2dyZXNzICE9PSBmYWxzZSA/IGAke2FjdGl2aXR5LnByb2dyZXNzLmZvcm1hdHRlZH0gfCBgIDogJycsXG4gICAgICBuZXcgRGF0ZShldmVudC5UaW1lc3RhbXAhKS50b0xvY2FsZVRpbWVTdHJpbmcoKSxcbiAgICAgIGV2ZW50LlJlc291cmNlU3RhdHVzIHx8ICcnLFxuICAgICAgZXZlbnQuUmVzb3VyY2VUeXBlLFxuICAgICAgcmVzb3VyY2VOYW1lLFxuICAgICAgbG9naWNhbElkLFxuICAgICAgZXZlbnQuUmVzb3VyY2VTdGF0dXNSZWFzb24gPyBldmVudC5SZXNvdXJjZVN0YXR1c1JlYXNvbiA6ICcnLFxuICAgICAgbWV0YWRhdGE/LmVudHJ5LnRyYWNlID8gYFxcblxcdCR7bWV0YWRhdGEuZW50cnkudHJhY2Uuam9pbignXFxuXFx0XFxcXF8gJyl9YCA6ICcnLFxuICAgICk7XG4gIH1cbn1cblxuIl19
@@ -1,7 +1,7 @@
1
1
  import type { StackEvent } from '@aws-sdk/client-cloudformation';
2
2
  import type { ResourceError } from './resource-errors';
3
3
  import { ResourceErrors } from './resource-errors';
4
- import type { ResourceDeleteFailure } from '../../toolkit/types';
4
+ import type { ResourceDeleteFailure, StabilizingResource } from '../../toolkit/types';
5
5
  import type { ICloudFormationClient } from '../aws-auth/private';
6
6
  export interface StackEventPollerProps {
7
7
  /**
@@ -115,6 +115,12 @@ export declare class StackEventPoller {
115
115
  * CloudFormation skips these and completes the update anyway.
116
116
  */
117
117
  readonly deleteFailures: ResourceDeleteFailure[];
118
+ /**
119
+ * Resources that reached a `*_COMPLETE` status with a stabilization reason.
120
+ * Populated for Express Mode deployments, where CloudFormation reports a
121
+ * resource as complete while it is still stabilizing asynchronously.
122
+ */
123
+ readonly stabilizingResources: StabilizingResource[];
118
124
  private readonly eventIds;
119
125
  private readonly nestedStackPollers;
120
126
  constructor(cfn: ICloudFormationClient, props: StackEventPollerProps);
@@ -134,6 +140,7 @@ export declare class StackEventPoller {
134
140
  */
135
141
  poll(): Promise<ResourceEvent[]>;
136
142
  private updateDeleteFailures;
143
+ private updateStabilizingResources;
137
144
  private doPoll;
138
145
  /**
139
146
  * On the CREATE_IN_PROGRESS, UPDATE_IN_PROGRESS, DELETE_IN_PROGRESS event of a nested stack, poll the nested stack updates