aws-delivlib 13.6.4 → 13.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.gitattributes +0 -1
  2. package/cdk.out/{asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a → asset.66b99756ae087cd731a655763245d55e9435c1657dc62d0c5a421806e223e6b2}/watcher-handler.d.ts +0 -0
  3. package/cdk.out/asset.66b99756ae087cd731a655763245d55e9435c1657dc62d0c5a421806e223e6b2/watcher-handler.js +112 -0
  4. package/cdk.out/{asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a → asset.66b99756ae087cd731a655763245d55e9435c1657dc62d0c5a421806e223e6b2}/watcher-handler.ts +0 -0
  5. package/cdk.out/{asset.0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40 → asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353}/index.js +154 -120
  6. package/cdk.out/cdk.out +1 -1
  7. package/cdk.out/delivlib-test.assets.json +9 -9
  8. package/cdk.out/delivlib-test.template.json +7710 -7710
  9. package/cdk.out/manifest.json +1230 -1230
  10. package/cdk.out/tree.json +403 -403
  11. package/lib/change-control-lambda/disable-transition.js +6 -2
  12. package/lib/change-control-lambda/index.js +6 -2
  13. package/lib/change-controller.js +6 -2
  14. package/lib/chime-notifier/chime-notifier.js +6 -2
  15. package/lib/chime-notifier/handler/notifier-handler.js +6 -2
  16. package/lib/chime-notifier/index.js +6 -2
  17. package/lib/code-signing/certificate-signing-request.js +6 -2
  18. package/lib/code-signing/code-signing-certificate.js +6 -2
  19. package/lib/code-signing/index.js +6 -2
  20. package/lib/code-signing/private-key.js +6 -2
  21. package/lib/custom-resource-handlers/src/_cloud-formation.js +6 -2
  22. package/lib/custom-resource-handlers/src/_exec.js +6 -2
  23. package/lib/custom-resource-handlers/src/_rmrf.js +6 -2
  24. package/lib/custom-resource-handlers/src/certificate-signing-request.js +6 -2
  25. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  26. package/lib/custom-resource-handlers/src/pgp-secret.js +6 -2
  27. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  28. package/lib/custom-resource-handlers/src/private-key.js +6 -2
  29. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  30. package/lib/index.js +6 -2
  31. package/lib/open-pgp-key-pair.js +6 -2
  32. package/lib/package-integrity/handler/integrity.js +6 -2
  33. package/lib/package-integrity/handler/repository.js +6 -2
  34. package/lib/package-integrity/handler/validate.bundle.js +16255 -5395
  35. package/lib/package-integrity/index.js +6 -2
  36. package/lib/package-integrity/integrity.js +6 -2
  37. package/lib/pipeline-notifications/chime.js +6 -2
  38. package/lib/pipeline-notifications/index.js +6 -2
  39. package/lib/pipeline-notifications/slack.js +6 -2
  40. package/lib/pipeline-watcher/handler/watcher-handler.js +6 -2
  41. package/lib/pipeline-watcher/index.js +6 -2
  42. package/lib/pipeline-watcher/watcher.js +6 -2
  43. package/lib/pipeline.d.ts +1 -0
  44. package/lib/pipeline.js +12 -2
  45. package/lib/pipeline.ts +7 -0
  46. package/lib/publishing.js +6 -2
  47. package/lib/pull-request/bump.js +6 -2
  48. package/lib/pull-request/index.js +6 -2
  49. package/lib/pull-request/merge-back.js +6 -2
  50. package/lib/pull-request/pr.js +6 -2
  51. package/lib/registry-sync/index.js +6 -2
  52. package/lib/shellable.js +6 -2
  53. package/lib/util.js +6 -2
  54. package/package.json +20 -20
  55. package/cdk.out/asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a/watcher-handler.js +0 -108
package/.gitattributes CHANGED
@@ -7,7 +7,6 @@
7
7
  /.github/workflows/build.yml linguist-generated
8
8
  /.github/workflows/pull-request-lint.yml linguist-generated
9
9
  /.github/workflows/release.yml linguist-generated
10
- /.github/workflows/stale.yml linguist-generated
11
10
  /.github/workflows/upgrade-main.yml linguist-generated
12
11
  /.gitignore linguist-generated
13
12
  /.mergify.yml linguist-generated
@@ -0,0 +1,112 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.handler = exports.cloudwatch = void 0;
27
+ // eslint-disable-next-line import/no-extraneous-dependencies
28
+ const AWS = __importStar(require("aws-sdk"));
29
+ // export for tests
30
+ exports.cloudwatch = new AWS.CloudWatch();
31
+ const logger = {
32
+ log: (line) => process.stdout.write(line),
33
+ };
34
+ /**
35
+ * Lambda function that reacts to an Amazon EventBridge event triggered by a 'CodePipeline Action Execution State Change'.
36
+ * The handler reads the event and sends off metrics to CloudWatch.
37
+ */
38
+ async function handler(event) {
39
+ logger.log(`Received event: ${JSON.stringify(event)}`);
40
+ switch (event['detail-type']) {
41
+ case 'CodePipeline Pipeline Execution State Change':
42
+ await handleExecutionChange(event);
43
+ break;
44
+ case 'CodePipeline Action Execution State Change':
45
+ await handleActionChange(event);
46
+ break;
47
+ default: throw new Error(`Unhandled detail type ${event['detaill-type']}`);
48
+ }
49
+ }
50
+ exports.handler = handler;
51
+ async function handleExecutionChange(event) {
52
+ const pipelineName = event.detail.pipeline;
53
+ const state = event.detail.state;
54
+ let value;
55
+ switch (state) {
56
+ case 'FAILED':
57
+ value = 1;
58
+ break;
59
+ case 'SUCCEEDED':
60
+ value = 0;
61
+ break;
62
+ default: throw new Error(`Unsupported state: ${state}. Only FAILED and SUCCEEDED states are supported. ` +
63
+ 'Others must be filtered out prior to this function.');
64
+ }
65
+ await putMetric(event, value, [
66
+ { Name: 'Pipeline', Value: pipelineName },
67
+ ]);
68
+ logger.log('Done');
69
+ }
70
+ async function handleActionChange(event) {
71
+ const pipelineName = event.detail.pipeline;
72
+ const action = event.detail.action;
73
+ const state = event.detail.state;
74
+ let value;
75
+ switch (state) {
76
+ case 'FAILED':
77
+ value = 1;
78
+ break;
79
+ case 'SUCCEEDED':
80
+ value = 0;
81
+ break;
82
+ default: throw new Error(`Unsupported state: ${state}. Only FAILED and SUCCEEDED states are supported. ` +
83
+ 'Others must be filtered out prior to this function.');
84
+ }
85
+ await putMetric(event, value, [
86
+ { Name: 'Pipeline', Value: pipelineName },
87
+ { Name: 'Action', Value: action },
88
+ ]);
89
+ logger.log('Done');
90
+ }
91
+ async function putMetric(event, value, dimensions) {
92
+ const metricNamespace = process.env.METRIC_NAMESPACE;
93
+ const metricName = process.env.METRIC_NAME;
94
+ const time = new Date(event.time);
95
+ if (!metricNamespace || !metricName) {
96
+ throw new Error('Both METRIC_NAMESPACE and METRIC_NAME environment variables must be set.');
97
+ }
98
+ const input = {
99
+ Namespace: metricNamespace,
100
+ MetricData: [
101
+ {
102
+ MetricName: metricName,
103
+ Value: value,
104
+ Dimensions: dimensions,
105
+ Timestamp: time,
106
+ },
107
+ ],
108
+ };
109
+ logger.log(`Calling PutMetricData with payload: ${JSON.stringify(input)}`);
110
+ await exports.cloudwatch.putMetricData(input).promise();
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlci1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2F0Y2hlci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQTZEO0FBQzdELDZDQUErQjtBQW1CL0IsbUJBQW1CO0FBQ04sUUFBQSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUc7SUFDYixHQUFHLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztDQUNsRCxDQUFDO0FBRUY7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFnQjtJQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV2RCxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUM1QixLQUFLLDhDQUE4QztZQUFFLE1BQU0scUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQy9GLEtBQUssNENBQTRDO1lBQUUsTUFBTSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUFDLE1BQU07UUFDMUYsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUM1RTtBQUNILENBQUM7QUFSRCwwQkFRQztBQUVELEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxLQUFzQztJQUN6RSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUMzQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUVqQyxJQUFJLEtBQWEsQ0FBQztJQUNsQixRQUFRLEtBQUssRUFBRTtRQUNiLEtBQUssUUFBUTtZQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ2hDLEtBQUssV0FBVztZQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEtBQUssb0RBQW9EO1lBQ3hHLHFEQUFxRCxDQUFDLENBQUM7S0FDeEQ7SUFFRCxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzVCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0tBQzFDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUdELEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxLQUFtQztJQUNuRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNuQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUVqQyxJQUFJLEtBQWEsQ0FBQztJQUNsQixRQUFRLEtBQUssRUFBRTtRQUNiLEtBQUssUUFBUTtZQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ2hDLEtBQUssV0FBVztZQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEtBQUssb0RBQW9EO1lBQ3hHLHFEQUFxRCxDQUFDLENBQUM7S0FDeEQ7SUFFRCxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFO1FBQzVCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO1FBQ3pDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0tBQ2xDLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUVELEtBQUssVUFBVSxTQUFTLENBQUMsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsVUFBcUM7SUFDN0YsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNyRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsRUFBRTtRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLDBFQUEwRSxDQUFDLENBQUM7S0FDN0Y7SUFFRCxNQUFNLEtBQUssR0FBc0M7UUFDL0MsU0FBUyxFQUFFLGVBQWU7UUFDMUIsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixTQUFTLEVBQUUsSUFBSTthQUNoQjtTQUNGO0tBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTNFLE1BQU0sa0JBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcblxuLy8gUGFydGlhbCB0eXBlIGZvciB0aGUgJ2RldGFpbCcgc2VjdGlvbiBvZiBhbiBldmVudCBmcm9tIEFtYXpvbiBFdmVudEJyaWRnZSBmb3IgJ0NvZGVQaXBlbGluZSBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJ1xuLy8gU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2V2ZW50LXR5cGVzLmh0bWwjY29kZXBpcGVsaW5lLWV2ZW50LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgRXhlY3V0aW9uU3RhdGVDaGFuZ2VFdmVudCB7XG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YXRlOiAnU1RBUlRFRCcgfCAnQ0FOQ0VMRUQnIHwgJ0ZBSUxFRCcgfCAnU1VDQ0VFREVEJztcbn1cblxuLy8gUGFydGlhbCB0eXBlIGZvciB0aGUgJ2RldGFpbCcgc2VjdGlvbiBvZiBhbiBldmVudCBmcm9tIEFtYXpvbiBFdmVudEJyaWRnZSBmb3IgJ0NvZGVQaXBlbGluZSBBY3Rpb24gRXhlY3V0aW9uIFN0YXRlIENoYW5nZSdcbi8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZXZlbnRicmlkZ2UvbGF0ZXN0L3VzZXJndWlkZS9ldmVudC10eXBlcy5odG1sI2NvZGVwaXBlbGluZS1ldmVudC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvblN0YXRlQ2hhbmdlRXZlbnQgZXh0ZW5kcyBFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50IHtcbiAgcmVhZG9ubHkgYWN0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIExhbWJkYUV4ZWN1dGlvblN0YXRlQ2hhbmdlRXZlbnQgPSBBV1NMYW1iZGEuRXZlbnRCcmlkZ2VFdmVudDwnQ29kZVBpcGVsaW5lIFBpcGVsaW5lIEV4ZWN1dGlvbiBTdGF0ZSBDaGFuZ2UnLCBFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50PjtcbmV4cG9ydCB0eXBlIExhbWJkYUFjdGlvblN0YXRlQ2hhbmdlRXZlbnQgPSBBV1NMYW1iZGEuRXZlbnRCcmlkZ2VFdmVudDwnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJywgQWN0aW9uU3RhdGVDaGFuZ2VFdmVudD47XG5leHBvcnQgdHlwZSBFdmVudFR5cGUgPSBMYW1iZGFFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50IHwgTGFtYmRhQWN0aW9uU3RhdGVDaGFuZ2VFdmVudDtcblxuLy8gZXhwb3J0IGZvciB0ZXN0c1xuZXhwb3J0IGNvbnN0IGNsb3Vkd2F0Y2ggPSBuZXcgQVdTLkNsb3VkV2F0Y2goKTtcbmNvbnN0IGxvZ2dlciA9IHtcbiAgbG9nOiAobGluZTogc3RyaW5nKSA9PiBwcm9jZXNzLnN0ZG91dC53cml0ZShsaW5lKSxcbn07XG5cbi8qKlxuICogTGFtYmRhIGZ1bmN0aW9uIHRoYXQgcmVhY3RzIHRvIGFuIEFtYXpvbiBFdmVudEJyaWRnZSBldmVudCB0cmlnZ2VyZWQgYnkgYSAnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJy5cbiAqIFRoZSBoYW5kbGVyIHJlYWRzIHRoZSBldmVudCBhbmQgc2VuZHMgb2ZmIG1ldHJpY3MgdG8gQ2xvdWRXYXRjaC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEV2ZW50VHlwZSkge1xuICBsb2dnZXIubG9nKGBSZWNlaXZlZCBldmVudDogJHtKU09OLnN0cmluZ2lmeShldmVudCl9YCk7XG5cbiAgc3dpdGNoIChldmVudFsnZGV0YWlsLXR5cGUnXSkge1xuICAgIGNhc2UgJ0NvZGVQaXBlbGluZSBQaXBlbGluZSBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJzogYXdhaXQgaGFuZGxlRXhlY3V0aW9uQ2hhbmdlKGV2ZW50KTsgYnJlYWs7XG4gICAgY2FzZSAnQ29kZVBpcGVsaW5lIEFjdGlvbiBFeGVjdXRpb24gU3RhdGUgQ2hhbmdlJzogYXdhaXQgaGFuZGxlQWN0aW9uQ2hhbmdlKGV2ZW50KTsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgZGV0YWlsIHR5cGUgJHtldmVudFsnZGV0YWlsbC10eXBlJ119YCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRXhlY3V0aW9uQ2hhbmdlKGV2ZW50OiBMYW1iZGFFeGVjdXRpb25TdGF0ZUNoYW5nZUV2ZW50KSB7XG4gIGNvbnN0IHBpcGVsaW5lTmFtZSA9IGV2ZW50LmRldGFpbC5waXBlbGluZTtcbiAgY29uc3Qgc3RhdGUgPSBldmVudC5kZXRhaWwuc3RhdGU7XG5cbiAgbGV0IHZhbHVlOiBudW1iZXI7XG4gIHN3aXRjaCAoc3RhdGUpIHtcbiAgICBjYXNlICdGQUlMRUQnOiB2YWx1ZSA9IDE7IGJyZWFrO1xuICAgIGNhc2UgJ1NVQ0NFRURFRCc6IHZhbHVlID0gMDsgYnJlYWs7XG4gICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzdGF0ZTogJHtzdGF0ZX0uIE9ubHkgRkFJTEVEIGFuZCBTVUNDRUVERUQgc3RhdGVzIGFyZSBzdXBwb3J0ZWQuIGAgK1xuICAgICdPdGhlcnMgbXVzdCBiZSBmaWx0ZXJlZCBvdXQgcHJpb3IgdG8gdGhpcyBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIGF3YWl0IHB1dE1ldHJpYyhldmVudCwgdmFsdWUsIFtcbiAgICB7IE5hbWU6ICdQaXBlbGluZScsIFZhbHVlOiBwaXBlbGluZU5hbWUgfSxcbiAgXSk7XG5cbiAgbG9nZ2VyLmxvZygnRG9uZScpO1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUFjdGlvbkNoYW5nZShldmVudDogTGFtYmRhQWN0aW9uU3RhdGVDaGFuZ2VFdmVudCkge1xuICBjb25zdCBwaXBlbGluZU5hbWUgPSBldmVudC5kZXRhaWwucGlwZWxpbmU7XG4gIGNvbnN0IGFjdGlvbiA9IGV2ZW50LmRldGFpbC5hY3Rpb247XG4gIGNvbnN0IHN0YXRlID0gZXZlbnQuZGV0YWlsLnN0YXRlO1xuXG4gIGxldCB2YWx1ZTogbnVtYmVyO1xuICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgY2FzZSAnRkFJTEVEJzogdmFsdWUgPSAxOyBicmVhaztcbiAgICBjYXNlICdTVUNDRUVERUQnOiB2YWx1ZSA9IDA7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgc3RhdGU6ICR7c3RhdGV9LiBPbmx5IEZBSUxFRCBhbmQgU1VDQ0VFREVEIHN0YXRlcyBhcmUgc3VwcG9ydGVkLiBgICtcbiAgICAnT3RoZXJzIG11c3QgYmUgZmlsdGVyZWQgb3V0IHByaW9yIHRvIHRoaXMgZnVuY3Rpb24uJyk7XG4gIH1cblxuICBhd2FpdCBwdXRNZXRyaWMoZXZlbnQsIHZhbHVlLCBbXG4gICAgeyBOYW1lOiAnUGlwZWxpbmUnLCBWYWx1ZTogcGlwZWxpbmVOYW1lIH0sXG4gICAgeyBOYW1lOiAnQWN0aW9uJywgVmFsdWU6IGFjdGlvbiB9LFxuICBdKTtcblxuICBsb2dnZXIubG9nKCdEb25lJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHB1dE1ldHJpYyhldmVudDogRXZlbnRUeXBlLCB2YWx1ZTogbnVtYmVyLCBkaW1lbnNpb25zOiBBV1MuQ2xvdWRXYXRjaC5EaW1lbnNpb25zKSB7XG4gIGNvbnN0IG1ldHJpY05hbWVzcGFjZSA9IHByb2Nlc3MuZW52Lk1FVFJJQ19OQU1FU1BBQ0U7XG4gIGNvbnN0IG1ldHJpY05hbWUgPSBwcm9jZXNzLmVudi5NRVRSSUNfTkFNRTtcbiAgY29uc3QgdGltZSA9IG5ldyBEYXRlKGV2ZW50LnRpbWUpO1xuXG4gIGlmICghbWV0cmljTmFtZXNwYWNlIHx8ICFtZXRyaWNOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdCb3RoIE1FVFJJQ19OQU1FU1BBQ0UgYW5kIE1FVFJJQ19OQU1FIGVudmlyb25tZW50IHZhcmlhYmxlcyBtdXN0IGJlIHNldC4nKTtcbiAgfVxuXG4gIGNvbnN0IGlucHV0OiBBV1MuQ2xvdWRXYXRjaC5QdXRNZXRyaWNEYXRhSW5wdXQgPSB7XG4gICAgTmFtZXNwYWNlOiBtZXRyaWNOYW1lc3BhY2UsXG4gICAgTWV0cmljRGF0YTogW1xuICAgICAge1xuICAgICAgICBNZXRyaWNOYW1lOiBtZXRyaWNOYW1lLFxuICAgICAgICBWYWx1ZTogdmFsdWUsXG4gICAgICAgIERpbWVuc2lvbnM6IGRpbWVuc2lvbnMsXG4gICAgICAgIFRpbWVzdGFtcDogdGltZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICBsb2dnZXIubG9nKGBDYWxsaW5nIFB1dE1ldHJpY0RhdGEgd2l0aCBwYXlsb2FkOiAke0pTT04uc3RyaW5naWZ5KGlucHV0KX1gKTtcblxuICBhd2FpdCBjbG91ZHdhdGNoLnB1dE1ldHJpY0RhdGEoaW5wdXQpLnByb21pc2UoKTtcbn0iXX0=