cdk-common 2.0.50 → 2.0.54

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 (61) hide show
  1. package/.jsii +3 -3
  2. package/changelog.md +1 -1
  3. package/lib/main.js +1 -1
  4. package/node_modules/@aws-cdk/assert/README.md +6 -7
  5. package/node_modules/@aws-cdk/assert/package.json +11 -11
  6. package/node_modules/@aws-cdk/cfnspec/CHANGELOG.md +284 -0
  7. package/node_modules/@aws-cdk/cfnspec/build-tools/create-missing-libraries.js +5 -3
  8. package/node_modules/@aws-cdk/cfnspec/build-tools/update.sh +8 -4
  9. package/node_modules/@aws-cdk/cfnspec/cfn.version +1 -1
  10. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/index.html +1 -1
  11. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/massage-spec.ts.html +1 -1
  12. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/patch-set.ts.html +1 -1
  13. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/scrutiny.ts.html +1 -1
  14. package/node_modules/@aws-cdk/cfnspec/coverage/build-tools/validate-cfn.ts.html +1 -1
  15. package/node_modules/@aws-cdk/cfnspec/coverage/index.html +1 -1
  16. package/node_modules/@aws-cdk/cfnspec/coverage/junit.xml +6634 -5928
  17. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/index.html +1 -1
  18. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/massage-spec.ts.html +1 -1
  19. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/patch-set.ts.html +1 -1
  20. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/scrutiny.ts.html +1 -1
  21. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/build-tools/validate-cfn.ts.html +1 -1
  22. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/index.html +1 -1
  23. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics/canned-metrics-schema.ts.html +1 -1
  24. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics/index.html +1 -1
  25. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/canned-metrics.ts.html +23 -23
  26. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/index.html +1 -1
  27. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/index.ts.html +18 -18
  28. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/augmentation.ts.html +1 -1
  29. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/base-types.ts.html +3 -3
  30. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/index.html +1 -1
  31. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/index.ts.html +1 -1
  32. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/property.ts.html +13 -13
  33. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/resource-type.ts.html +3 -3
  34. package/node_modules/@aws-cdk/cfnspec/coverage/lcov-report/lib/schema/specification.ts.html +2 -2
  35. package/node_modules/@aws-cdk/cfnspec/coverage/lcov.info +117 -117
  36. package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics/canned-metrics-schema.ts.html +1 -1
  37. package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics/index.html +1 -1
  38. package/node_modules/@aws-cdk/cfnspec/coverage/lib/canned-metrics.ts.html +23 -23
  39. package/node_modules/@aws-cdk/cfnspec/coverage/lib/index.html +1 -1
  40. package/node_modules/@aws-cdk/cfnspec/coverage/lib/index.ts.html +18 -18
  41. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/augmentation.ts.html +1 -1
  42. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/base-types.ts.html +3 -3
  43. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/index.html +1 -1
  44. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/index.ts.html +1 -1
  45. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/property.ts.html +13 -13
  46. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/resource-type.ts.html +3 -3
  47. package/node_modules/@aws-cdk/cfnspec/coverage/lib/schema/specification.ts.html +2 -2
  48. package/node_modules/@aws-cdk/cfnspec/package.json +3 -3
  49. package/node_modules/@aws-cdk/cfnspec/spec/cfn-docs.json +475 -202
  50. package/node_modules/@aws-cdk/cfnspec/spec/specification.json +2467 -83
  51. package/node_modules/@aws-cdk/cfnspec/tsconfig.tsbuildinfo +16 -16
  52. package/node_modules/@aws-cdk/cloudformation-diff/package.json +5 -5
  53. package/node_modules/@types/concat-stream/node_modules/@types/node/README.md +1 -1
  54. package/node_modules/@types/concat-stream/node_modules/@types/node/crypto.d.ts +1 -1
  55. package/node_modules/@types/concat-stream/node_modules/@types/node/package.json +2 -2
  56. package/node_modules/@types/form-data/node_modules/@types/node/README.md +1 -1
  57. package/node_modules/@types/form-data/node_modules/@types/node/crypto.d.ts +1 -1
  58. package/node_modules/@types/form-data/node_modules/@types/node/package.json +2 -2
  59. package/package.json +2 -2
  60. package/releasetag.txt +1 -1
  61. package/version.txt +1 -1
package/.jsii CHANGED
@@ -7,7 +7,7 @@
7
7
  ]
8
8
  },
9
9
  "bundled": {
10
- "@aws-cdk/assert": "^2.8.0",
10
+ "@aws-cdk/assert": "^2.10.0",
11
11
  "case": "^1.6.3",
12
12
  "sync-request": "^6.1.0"
13
13
  },
@@ -8450,6 +8450,6 @@
8450
8450
  "symbolId": "src/main:LambdaArmFunctionProps"
8451
8451
  }
8452
8452
  },
8453
- "version": "2.0.50",
8454
- "fingerprint": "U/eia2adl2mQNs6WkhN+vwnqjOLoHFmXA6DmhtXoc+M="
8453
+ "version": "2.0.54",
8454
+ "fingerprint": "vyi9AwiEc3393pF0lMJSquw95rkUpv+hAB8jnPrNoOY="
8455
8455
  }
package/changelog.md CHANGED
@@ -1,2 +1,2 @@
1
1
 
2
- ### [2.0.50](https://github.com/neilkuan/cdk-common/compare/v2.0.49...v2.0.50) (2022-01-26)
2
+ ### [2.0.54](https://github.com/neilkuan/cdk-common/compare/v2.0.53...v2.0.54) (2022-01-30)
package/lib/main.js CHANGED
@@ -47,5 +47,5 @@ class LambdaArmFunction extends constructs_1.Construct {
47
47
  }
48
48
  exports.LambdaArmFunction = LambdaArmFunction;
49
49
  _a = JSII_RTTI_SYMBOL_1;
50
- LambdaArmFunction[_a] = { fqn: "cdk-common.LambdaArmFunction", version: "2.0.50" };
50
+ LambdaArmFunction[_a] = { fqn: "cdk-common.LambdaArmFunction", version: "2.0.54" };
51
51
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLGlEQUFpRDtBQUNqRCwyQ0FBdUM7Ozs7QUFLdkMsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUzs7OztJQUU5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTRCO1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ2hELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQzFFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3ZELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQzFFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3hFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3hFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzNELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQzNFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25ELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ3JFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzNELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1NBQzdFO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3BELEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3RFO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixLQUFLLENBQUMsT0FBTyx1R0FBdUcsQ0FBQyxDQUFDO1NBQzFKO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1SCxDQUFDOztBQTFCSCw4Q0EyQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUFybUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25Qcm9wcyB7XG5cbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYUFybUZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYUZ1bmN0aW9uOiBsYW1iZGEuRnVuY3Rpb247XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOkxhbWJkYUFybUZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKHByb3BzLnJ1bnRpbWUgPT09IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZygnWW91IGFyZSB1c2luZyBOb2RlLmpzIDEyLnggYXQgQVJNJyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5ydW50aW1lID09PSBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTRfWCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoJ1lvdSBhcmUgdXNpbmcgTm9kZS5qcyAxNC54IGF0IEFSTScpO1xuICAgIH0gZWxzZSBpZiAocHJvcHMucnVudGltZSA9PT0gbGFtYmRhLlJ1bnRpbWUuUFlUSE9OXzNfOCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoJ1lvdSBhcmUgdXNpbmcgUHl0aG9uIDMuOCBhdCBBUk0nKTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnJ1bnRpbWUgPT09IGxhbWJkYS5SdW50aW1lLlBZVEhPTl8zXzkpIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKCdZb3UgYXJlIHVzaW5nIFB5dGhvbiAzLjkgYXQgQVJNJyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5ydW50aW1lID09PSBsYW1iZGEuUnVudGltZS5KQVZBXzhfQ09SUkVUVE8pIHtcbiAgICAgIGNkay5Bbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKCdZb3UgYXJlIHVzaW5nIEphdmEgOCBvbiBhbDIgYXQgQVJNJyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5ydW50aW1lID09PSBsYW1iZGEuUnVudGltZS5KQVZBXzExKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZygnWW91IGFyZSB1c2luZyBKYXZhIDExIGF0IEFSTScpO1xuICAgIH0gZWxzZSBpZiAocHJvcHMucnVudGltZSA9PT0gbGFtYmRhLlJ1bnRpbWUuRE9UTkVUX0NPUkVfM18xKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZygnWW91IGFyZSB1c2luZyBET1RORVQgQ09SRSAzLjEgYXQgQVJNJyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5ydW50aW1lID09PSBsYW1iZGEuUnVudGltZS5SVUJZXzJfNykge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoJ1lvdSBhcmUgdXNpbmcgUlVCWSAyLjcgYXQgQVJNJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBSdW50aW1lICR7cHJvcHMucnVudGltZX0gYXQgQVJNLCBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvZm91bmRhdGlvbi1hcmNoLmh0bWw/aWNtcGlkPWRvY3NfbGFtYmRhX3Jzc2ApO1xuICAgIH1cblxuICAgIHRoaXMubGFtYmRhRnVuY3Rpb24gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdMYW1iZGFGdW5jdGlvbicsIHsgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCwgLi4ucHJvcHMgfSk7XG4gIH1cbn0iXX0=
@@ -3,15 +3,14 @@
3
3
 
4
4
  ---
5
5
 
6
- ![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)
6
+ ![Deprecated](https://img.shields.io/badge/deprecated-critical.svg?style=for-the-badge)
7
7
 
8
- > The APIs of higher level constructs in this module are experimental and under active development.
9
- > They are subject to non-backward compatible changes or removal in any future version. These are
10
- > not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be
11
- > announced in the release notes. This means that while you may use them, you may need to update
12
- > your source code when upgrading to a newer version of this package.
8
+ > This API may emit warnings. Backward compatibility is not guaranteed.
13
9
 
14
- If using monocdk, use [@monocdk-experiment/assert](https://www.npmjs.com/package/@monocdk-experiment/assert) instead.
10
+ ## Replacement recommended
11
+
12
+ This library has been deprecated. We recommend you use the
13
+ [@aws-cdk/assertions](https://docs.aws.amazon.com/cdk/api/v1/docs/assertions-readme.html) module instead.
15
14
 
16
15
  ---
17
16
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/assert",
3
- "version": "2.8.0",
3
+ "version": "2.10.0",
4
4
  "description": "An assertion library for use with CDK Apps",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -34,21 +34,21 @@
34
34
  },
35
35
  "license": "Apache-2.0",
36
36
  "devDependencies": {
37
- "@aws-cdk/assert-internal": "2.8.0",
38
- "@aws-cdk/cdk-build-tools": "2.8.0",
39
- "@aws-cdk/pkglint": "2.8.0",
37
+ "@aws-cdk/assert-internal": "2.10.0",
38
+ "@aws-cdk/cdk-build-tools": "2.10.0",
39
+ "@aws-cdk/pkglint": "2.10.0",
40
40
  "@types/jest": "^27.0.3",
41
- "aws-cdk-lib": "2.8.0",
42
- "aws-cdk-migration": "2.8.0",
41
+ "aws-cdk-lib": "2.10.0",
42
+ "aws-cdk-migration": "2.10.0",
43
43
  "constructs": "^10.0.0",
44
44
  "jest": "^27.3.1",
45
- "ts-jest": "^27.1.2"
45
+ "ts-jest": "^27.1.3"
46
46
  },
47
47
  "dependencies": {
48
- "@aws-cdk/cloudformation-diff": "2.8.0"
48
+ "@aws-cdk/cloudformation-diff": "2.10.0"
49
49
  },
50
50
  "peerDependencies": {
51
- "aws-cdk-lib": "^2.8.0",
51
+ "aws-cdk-lib": "^2.10.0",
52
52
  "constructs": "^10.0.0",
53
53
  "jest": ">=26.6.3"
54
54
  },
@@ -69,8 +69,8 @@
69
69
  "exclude": true
70
70
  },
71
71
  "nozem": false,
72
- "stability": "experimental",
73
- "maturity": "developer-preview",
72
+ "stability": "deprecated",
73
+ "maturity": "deprecated",
74
74
  "publishConfig": {
75
75
  "tag": "latest"
76
76
  }
@@ -1,3 +1,287 @@
1
+ # CloudFormation Resource Specification v53.1.0
2
+
3
+ ## New Resource Types
4
+
5
+ * AWS::Lightsail::Certificate
6
+ * AWS::Lightsail::Container
7
+ * AWS::Lightsail::Distribution
8
+
9
+ ## Attribute Changes
10
+
11
+ * AWS::ServiceDiscovery::PrivateDnsNamespace HostedZoneId (__added__)
12
+ * AWS::ServiceDiscovery::PublicDnsNamespace HostedZoneId (__added__)
13
+
14
+ ## Property Changes
15
+
16
+ * AWS::DMS::Endpoint GcpMySQLSettings (__added__)
17
+ * AWS::SageMaker::Device Device.PrimitiveType (__deleted__)
18
+ * AWS::SageMaker::Pipeline ParallelismConfiguration (__added__)
19
+
20
+ ## Property Type Changes
21
+
22
+ * AWS::ApplicationInsights::Application.HAClusterPrometheusExporter (__added__)
23
+ * AWS::ApplicationInsights::Application.HANAPrometheusExporter (__added__)
24
+ * AWS::DMS::Endpoint.GcpMySQLSettings (__added__)
25
+ * AWS::SSM::MaintenanceWindowTask.CloudWatchOutputConfig (__added__)
26
+ * AWS::ApplicationInsights::Application.ConfigurationDetails HAClusterPrometheusExporter (__added__)
27
+ * AWS::ApplicationInsights::Application.ConfigurationDetails HANAPrometheusExporter (__added__)
28
+ * AWS::DataBrew::Job.OutputLocation BucketOwner (__added__)
29
+ * AWS::DataBrew::Job.S3Location BucketOwner (__added__)
30
+ * AWS::RoboMaker::SimulationApplication.RobotSoftwareSuite Version.Required (__changed__)
31
+ * Old: true
32
+ * New: false
33
+ * AWS::RoboMaker::SimulationApplication.SimulationSoftwareSuite Version.Required (__changed__)
34
+ * Old: true
35
+ * New: false
36
+ * AWS::SSM::MaintenanceWindowTask.MaintenanceWindowRunCommandParameters CloudWatchOutputConfig (__added__)
37
+ * AWS::SSM::MaintenanceWindowTask.MaintenanceWindowRunCommandParameters DocumentVersion (__added__)
38
+
39
+ ## Unapplied changes
40
+
41
+ * AWS::ECS is at 51.0.0
42
+
43
+
44
+ ## Unapplied changes
45
+
46
+ * AWS::ECS is at 51.0.0
47
+ * AWS::SageMaker is at 51.0.0
48
+
49
+
50
+ ## Unapplied changes
51
+
52
+ * AWS::ECS is at 51.0.0
53
+ * AWS::SageMaker is at 51.0.0
54
+
55
+
56
+ ## Unapplied changes
57
+
58
+ * AWS::ECS is at 51.0.0
59
+ * AWS::SageMaker is at 51.0.0
60
+
61
+
62
+ ## Unapplied changes
63
+
64
+ * AWS::ECS is at 51.0.0
65
+ * AWS::SageMaker is at 51.0.0
66
+
67
+ # CloudFormation Resource Specification v53.0.0
68
+
69
+ ## New Resource Types
70
+
71
+ * AWS::AppStream::ApplicationEntitlementAssociation
72
+ * AWS::AppStream::Entitlement
73
+ * AWS::EC2::NetworkInsightsAccessScope
74
+ * AWS::EC2::NetworkInsightsAccessScopeAnalysis
75
+ * AWS::Forecast::Dataset
76
+ * AWS::Forecast::DatasetGroup
77
+ * AWS::InspectorV2::Filter
78
+ * AWS::KinesisVideo::SignalingChannel
79
+ * AWS::KinesisVideo::Stream
80
+ * AWS::Lightsail::Alarm
81
+ * AWS::Lightsail::Bucket
82
+ * AWS::Lightsail::LoadBalancer
83
+ * AWS::Lightsail::LoadBalancerTlsCertificate
84
+
85
+ ## Attribute Changes
86
+
87
+ * AWS::EC2::Host HostId (__added__)
88
+ * AWS::EC2::IPAMScope IpamScopeType (__added__)
89
+ * AWS::EC2::VPNGatewayRoutePropagation Documentation (__changed__)
90
+ * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html
91
+ * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpngatewayroutepropagation.html
92
+ * AWS::EC2::VPNGatewayRoutePropagation Id (__added__)
93
+ * AWS::IoTAnalytics::Channel Id (__added__)
94
+ * AWS::IoTAnalytics::Dataset Id (__added__)
95
+ * AWS::IoTAnalytics::Datastore Id (__added__)
96
+ * AWS::RDS::DBProxy VpcId (__deleted__)
97
+ * AWS::Redshift::EventSubscription EventCategoriesList.DuplicatesAllowed (__added__)
98
+
99
+ ## Property Changes
100
+
101
+ * AWS::AppSync::FunctionConfiguration MaxBatchSize (__added__)
102
+ * AWS::AppSync::Resolver MaxBatchSize (__added__)
103
+ * AWS::AutoScaling::WarmPool InstanceReusePolicy (__added__)
104
+ * AWS::Config::OrganizationConfigRule OrganizationCustomCodeRuleMetadata (__added__)
105
+ * AWS::EC2::ClientVpnEndpoint ClientLoginBannerOptions (__added__)
106
+ * AWS::EC2::ClientVpnEndpoint SessionTimeoutHours (__added__)
107
+ * AWS::EC2::FlowLog DestinationOptions (__added__)
108
+ * AWS::EC2::IPAMScope IpamScopeType (__deleted__)
109
+ * AWS::EC2::VPNGatewayRoutePropagation RouteTableIds.Documentation (__changed__)
110
+ * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html#cfn-ec2-vpngatewayrouteprop-routetableids
111
+ * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpngatewayroutepropagation.html#cfn-ec2-vpngatewayroutepropagation-routetableids
112
+ * AWS::EC2::VPNGatewayRoutePropagation VpnGatewayId.Documentation (__changed__)
113
+ * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpn-gatewayrouteprop.html#cfn-ec2-vpngatewayrouteprop-vpngatewayid
114
+ * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpngatewayroutepropagation.html#cfn-ec2-vpngatewayroutepropagation-vpngatewayid
115
+ * AWS::Events::EventBus Tags (__added__)
116
+ * AWS::GameLift::GameSessionQueue Tags (__added__)
117
+ * AWS::GameLift::MatchmakingConfiguration Tags (__added__)
118
+ * AWS::GameLift::MatchmakingRuleSet Tags (__added__)
119
+ * AWS::GameLift::Script Tags (__added__)
120
+ * AWS::IoT::JobTemplate JobExecutionsRetryConfig (__added__)
121
+ * AWS::IoTAnalytics::Channel Tags.DuplicatesAllowed (__added__)
122
+ * AWS::IoTAnalytics::Dataset Actions.DuplicatesAllowed (__added__)
123
+ * AWS::IoTAnalytics::Dataset ContentDeliveryRules.DuplicatesAllowed (__added__)
124
+ * AWS::IoTAnalytics::Dataset LateDataRules.DuplicatesAllowed (__added__)
125
+ * AWS::IoTAnalytics::Dataset Tags.DuplicatesAllowed (__added__)
126
+ * AWS::IoTAnalytics::Dataset Triggers.DuplicatesAllowed (__added__)
127
+ * AWS::IoTAnalytics::Datastore Tags.DuplicatesAllowed (__added__)
128
+ * AWS::RUM::AppMonitor Domain.Required (__changed__)
129
+ * Old: false
130
+ * New: true
131
+ * AWS::RUM::AppMonitor Name.Required (__changed__)
132
+ * Old: false
133
+ * New: true
134
+ * AWS::Redshift::EventSubscription EventCategories.DuplicatesAllowed (__added__)
135
+
136
+ ## Property Type Changes
137
+
138
+ * AWS::KinesisAnalyticsV2::Application.CustomArtifactsConfiguration (__removed__)
139
+ * AWS::AutoScaling::WarmPool.InstanceReusePolicy (__added__)
140
+ * AWS::Config::OrganizationConfigRule.OrganizationCustomCodeRuleMetadata (__added__)
141
+ * AWS::EC2::ClientVpnEndpoint.ClientLoginBannerOptions (__added__)
142
+ * AWS::EC2::LaunchTemplate.InstanceRequirements (__added__)
143
+ * AWS::Events::EventBus.TagEntry (__added__)
144
+ * AWS::Glue::Crawler.MongoDBTarget (__added__)
145
+ * AWS::IoTSiteWise::Gateway.GreengrassV2 (__added__)
146
+ * AWS::NimbleStudio::LaunchProfile.StreamConfigurationSessionStorage (__added__)
147
+ * AWS::NimbleStudio::LaunchProfile.StreamingSessionStorageRoot (__added__)
148
+ * AWS::AppSync::Resolver.CachingConfig Ttl.Required (__changed__)
149
+ * Old: false
150
+ * New: true
151
+ * AWS::EC2::LaunchTemplate.LaunchTemplateData InstanceRequirements (__added__)
152
+ * AWS::Glue::Crawler.S3Target DlqEventQueueArn (__added__)
153
+ * AWS::Glue::Crawler.S3Target EventQueueArn (__added__)
154
+ * AWS::Glue::Crawler.S3Target SampleSize (__added__)
155
+ * AWS::Glue::Crawler.Targets MongoDBTargets (__added__)
156
+ * AWS::IoTAnalytics::Dataset.ContainerAction Variables.DuplicatesAllowed (__added__)
157
+ * AWS::IoTAnalytics::Dataset.DatasetContentVersionValue DatasetName.Documentation (__changed__)
158
+ * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-datasetcontentversionvalue.html#cfn-iotanalytics-dataset-variable-datasetcontentversionvalue-datasetname
159
+ * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-datasetcontentversionvalue.html#cfn-iotanalytics-dataset-datasetcontentversionvalue-datasetname
160
+ * AWS::IoTAnalytics::Dataset.DatasetContentVersionValue DatasetName.Required (__changed__)
161
+ * Old: false
162
+ * New: true
163
+ * AWS::IoTAnalytics::Dataset.OutputFileUriValue FileName.Documentation (__changed__)
164
+ * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-variable-outputfileurivalue.html#cfn-iotanalytics-dataset-variable-outputfileurivalue-filename
165
+ * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-outputfileurivalue.html#cfn-iotanalytics-dataset-outputfileurivalue-filename
166
+ * AWS::IoTAnalytics::Dataset.OutputFileUriValue FileName.Required (__changed__)
167
+ * Old: false
168
+ * New: true
169
+ * AWS::IoTAnalytics::Dataset.QueryAction Filters.DuplicatesAllowed (__added__)
170
+ * AWS::IoTAnalytics::Dataset.Schedule ScheduleExpression.Documentation (__changed__)
171
+ * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-trigger-schedule.html#cfn-iotanalytics-dataset-trigger-schedule-scheduleexpression
172
+ * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-dataset-schedule.html#cfn-iotanalytics-dataset-schedule-scheduleexpression
173
+ * AWS::IoTAnalytics::Datastore.DatastorePartitions Partitions.DuplicatesAllowed (__added__)
174
+ * AWS::IoTAnalytics::Datastore.IotSiteWiseMultiLayerStorage CustomerManagedS3Storage.Required (__changed__)
175
+ * Old: true
176
+ * New: false
177
+ * AWS::IoTAnalytics::Datastore.SchemaDefinition Columns.DuplicatesAllowed (__added__)
178
+ * AWS::IoTAnalytics::Pipeline.AddAttributes Attributes.PrimitiveType (__deleted__)
179
+ * AWS::IoTAnalytics::Pipeline.AddAttributes Attributes.PrimitiveItemType (__added__)
180
+ * AWS::IoTAnalytics::Pipeline.AddAttributes Attributes.Type (__added__)
181
+ * AWS::IoTAnalytics::Pipeline.AddAttributes Attributes.Required (__changed__)
182
+ * Old: false
183
+ * New: true
184
+ * AWS::IoTAnalytics::Pipeline.AddAttributes Name.Required (__changed__)
185
+ * Old: false
186
+ * New: true
187
+ * AWS::IoTAnalytics::Pipeline.Channel ChannelName.Required (__changed__)
188
+ * Old: false
189
+ * New: true
190
+ * AWS::IoTAnalytics::Pipeline.Channel Name.Required (__changed__)
191
+ * Old: false
192
+ * New: true
193
+ * AWS::IoTAnalytics::Pipeline.Datastore DatastoreName.Required (__changed__)
194
+ * Old: false
195
+ * New: true
196
+ * AWS::IoTAnalytics::Pipeline.Datastore Name.Required (__changed__)
197
+ * Old: false
198
+ * New: true
199
+ * AWS::IoTAnalytics::Pipeline.DeviceRegistryEnrich Attribute.Required (__changed__)
200
+ * Old: false
201
+ * New: true
202
+ * AWS::IoTAnalytics::Pipeline.DeviceRegistryEnrich Name.Required (__changed__)
203
+ * Old: false
204
+ * New: true
205
+ * AWS::IoTAnalytics::Pipeline.DeviceRegistryEnrich RoleArn.Required (__changed__)
206
+ * Old: false
207
+ * New: true
208
+ * AWS::IoTAnalytics::Pipeline.DeviceRegistryEnrich ThingName.Required (__changed__)
209
+ * Old: false
210
+ * New: true
211
+ * AWS::IoTAnalytics::Pipeline.DeviceShadowEnrich Attribute.Required (__changed__)
212
+ * Old: false
213
+ * New: true
214
+ * AWS::IoTAnalytics::Pipeline.DeviceShadowEnrich Name.Required (__changed__)
215
+ * Old: false
216
+ * New: true
217
+ * AWS::IoTAnalytics::Pipeline.DeviceShadowEnrich RoleArn.Required (__changed__)
218
+ * Old: false
219
+ * New: true
220
+ * AWS::IoTAnalytics::Pipeline.DeviceShadowEnrich ThingName.Required (__changed__)
221
+ * Old: false
222
+ * New: true
223
+ * AWS::IoTAnalytics::Pipeline.Filter Filter.Required (__changed__)
224
+ * Old: false
225
+ * New: true
226
+ * AWS::IoTAnalytics::Pipeline.Filter Name.Required (__changed__)
227
+ * Old: false
228
+ * New: true
229
+ * AWS::IoTAnalytics::Pipeline.Lambda BatchSize.Required (__changed__)
230
+ * Old: false
231
+ * New: true
232
+ * AWS::IoTAnalytics::Pipeline.Lambda LambdaName.Required (__changed__)
233
+ * Old: false
234
+ * New: true
235
+ * AWS::IoTAnalytics::Pipeline.Lambda Name.Required (__changed__)
236
+ * Old: false
237
+ * New: true
238
+ * AWS::IoTAnalytics::Pipeline.Math Attribute.Required (__changed__)
239
+ * Old: false
240
+ * New: true
241
+ * AWS::IoTAnalytics::Pipeline.Math Math.Required (__changed__)
242
+ * Old: false
243
+ * New: true
244
+ * AWS::IoTAnalytics::Pipeline.Math Name.Required (__changed__)
245
+ * Old: false
246
+ * New: true
247
+ * AWS::IoTAnalytics::Pipeline.RemoveAttributes Attributes.Required (__changed__)
248
+ * Old: false
249
+ * New: true
250
+ * AWS::IoTAnalytics::Pipeline.RemoveAttributes Name.Required (__changed__)
251
+ * Old: false
252
+ * New: true
253
+ * AWS::IoTAnalytics::Pipeline.SelectAttributes Attributes.Required (__changed__)
254
+ * Old: false
255
+ * New: true
256
+ * AWS::IoTAnalytics::Pipeline.SelectAttributes Name.Required (__changed__)
257
+ * Old: false
258
+ * New: true
259
+ * AWS::IoTSiteWise::Gateway.GatewayPlatform GreengrassV2 (__added__)
260
+ * AWS::IoTSiteWise::Gateway.GatewayPlatform Greengrass.Required (__changed__)
261
+ * Old: true
262
+ * New: false
263
+ * AWS::KinesisAnalyticsV2::Application.ZeppelinApplicationConfiguration CustomArtifactsConfiguration.ItemType (__added__)
264
+ * AWS::KinesisAnalyticsV2::Application.ZeppelinApplicationConfiguration CustomArtifactsConfiguration.Type (__changed__)
265
+ * Old: CustomArtifactsConfiguration
266
+ * New: List
267
+ * AWS::Lex::BotAlias.BotAliasLocaleSettingsItem BotAliasLocaleSetting.Required (__changed__)
268
+ * Old: false
269
+ * New: true
270
+ * AWS::Lex::BotAlias.BotAliasLocaleSettingsItem LocaleId.Required (__changed__)
271
+ * Old: false
272
+ * New: true
273
+ * AWS::Lex::BotAlias.TextLogDestination CloudWatch.Type (__added__)
274
+ * AWS::MediaLive::Channel.HlsGroupSettings ProgramDateTimeClock (__added__)
275
+ * AWS::MediaLive::Channel.InputSettings Scte35Pid (__added__)
276
+ * AWS::NimbleStudio::LaunchProfile.StreamConfiguration MaxStoppedSessionLengthInMinutes (__added__)
277
+ * AWS::NimbleStudio::LaunchProfile.StreamConfiguration SessionStorage (__added__)
278
+ * AWS::Transfer::Server.ProtocolDetails TlsSessionResumptionMode (__added__)
279
+
280
+ ## Unapplied changes
281
+
282
+ * AWS::ECS is at 51.0.0
283
+ * AWS::SageMaker is at 51.0.0
284
+
1
285
 
2
286
  # Serverless Application Model (SAM) Resource Specification v2016-10-31
3
287
 
@@ -18,7 +18,9 @@ async function main() {
18
18
  throw new Error(`Something went wrong. We expected ${root} to be the "packages/@aws-cdk" directory. Did you move me?`);
19
19
  }
20
20
  // eslint-disable-next-line @typescript-eslint/no-require-imports
21
- const version = require('../package.json').version;
21
+ const cfnSpecPkgJson = require('../package.json');
22
+ const version = cfnSpecPkgJson.version;
23
+ const jestTypesVersion = cfnSpecPkgJson.devDependencies['@types/jest'];
22
24
  // iterate over all cloudformation namespaces
23
25
  for (const namespace of cfnspec.namespaces()) {
24
26
  const module = pkglint.createModuleDefinitionFromCfnNamespace(namespace);
@@ -168,7 +170,7 @@ async function main() {
168
170
  '@aws-cdk/cdk-build-tools': version,
169
171
  '@aws-cdk/cfn2ts': version,
170
172
  '@aws-cdk/pkglint': version,
171
- '@types/jest': '^26.0.22',
173
+ '@types/jest': jestTypesVersion,
172
174
  },
173
175
  dependencies: {
174
176
  '@aws-cdk/core': version,
@@ -305,4 +307,4 @@ main().catch(e => {
305
307
  console.error(e);
306
308
  process.exit(1);
307
309
  });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUE7OztHQUdHOztBQUVILDZCQUE2QjtBQUM3Qiw0Q0FBNEM7QUFDNUMsK0JBQStCO0FBQy9CLGtDQUFrQztBQUVsQyxvQkFBb0I7QUFDcEIsK0JBQStCO0FBQy9CLGdDQUFnQztBQUVoQyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLDREQUE0RCxDQUFDLENBQUM7S0FDeEg7SUFFRCxpRUFBaUU7SUFDakUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDO0lBRW5ELDZDQUE2QztJQUM3QyxLQUFLLE1BQU0sU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUM1QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsc0NBQXNDLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDcEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXZELHdEQUF3RDtRQUN4RCxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNwQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENB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Q0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuLyoqXG4gKiBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgYSBtb2R1bGUgZm9yIGFueSBDbG91ZEZvcm1hdGlvbiBuYW1lc3BhY2VzIHRoYXQgZG8gbm90XG4gKiBoYXZlIGFuIEFXUyBjb25zdHJ1Y3QgbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgcGtnbGludCBmcm9tICdAYXdzLWNkay9wa2dsaW50JztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCAqIGFzIGNmbnNwZWMgZnJvbSAnLi4vbGliJztcblxuLy8gZG9uJ3QgYmUgYSBwcnVkZTpcbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIHF1b3RlLXByb3BzICovXG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IHJvb3QgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nKTtcbiAgaWYgKHBhdGguYmFzZW5hbWUocm9vdCkgIT09ICdAYXdzLWNkaycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyB3ZW50IHdyb25nLiBXZSBleHBlY3RlZCAke3Jvb3R9IHRvIGJlIHRoZSBcInBhY2thZ2VzL0Bhd3MtY2RrXCIgZGlyZWN0b3J5LiBEaWQgeW91IG1vdmUgbWU/YCk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCB2ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcblxuICAvLyBpdGVyYXRlIG92ZXIgYWxsIGNsb3VkZm9ybWF0aW9uIG5hbWVzcGFjZXNcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgY2Zuc3BlYy5uYW1lc3BhY2VzKCkpIHtcbiAgICBjb25zdCBtb2R1bGUgPSBwa2dsaW50LmNyZWF0ZU1vZHVsZURlZmluaXRpb25Gcm9tQ2ZuTmFtZXNwYWNlKG5hbWVzcGFjZSk7XG4gICAgY29uc3QgbG93Y2FzZU1vZHVsZU5hbWUgPSBtb2R1bGUubW9kdWxlQmFzZU5hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICBjb25zdCBwYWNrYWdlUGF0aCA9IHBhdGguam9pbihyb290LCBtb2R1bGUubW9kdWxlTmFtZSk7XG5cbiAgICAvLyB3ZSBhbHJlYWR5IGhhdmUgYSBtb2R1bGUgZm9yIHRoaXMgbmFtZXNhcGNlLCBtb3ZlIG9uLlxuICAgIGlmIChhd2FpdCBmcy5wYXRoRXhpc3RzKHBhY2thZ2VQYXRoKSkge1xuICAgICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aC5qb2luKHBhY2thZ2VQYXRoLCAncGFja2FnZS5qc29uJyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgY29uc3QgcGFja2FnZUpzb24gPSByZXF1aXJlKHBhY2thZ2VKc29uUGF0aCk7XG4gICAgICBsZXQgc2NvcGVzOiBzdHJpbmcgfCBzdHJpbmdbXSA9IHBhY2thZ2VKc29uWydjZGstYnVpbGQnXS5jbG91ZGZvcm1hdGlvbjtcbiAgICAgIGlmICh0eXBlb2Ygc2NvcGVzID09PSAnc3RyaW5nJykgeyBzY29wZXMgPSBbc2NvcGVzXTsgfVxuICAgICAgaWYgKHNjb3Blcy5pbmRleE9mKG5hbWVzcGFjZSkgIT09IC0xKSB7XG4gICAgICAgIC8vIFYyLXN0eWxlIG1vZHVsZSBpcyBhbHJlYWR5IG1vZGVsZWQgaW4gdGhlIHJvb3QgcGFja2FnZSwgbm90aGluZyB0byBiZSBkb25lIVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhwYXRoLmpvaW4ocm9vdCwgYCR7bW9kdWxlLm1vZHVsZUZhbWlseX0tJHttb2R1bGUubW9kdWxlQmFzZU5hbWV9YC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkpIHtcbiAgICAgICAgLy8gVjItc3R5bGUgcGFja2FnZSBhbHJlYWR5IGhhcyBpdCdzIG93biBwYWNrYWdlIChsZWdhY3kgYmVoYXZpb3IpLCBub3RoaW5nIHRvIGJlIGRvbmUhXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVjItc3R5bGUgcGFja2FnZSBuZWVkcyB0byBiZSBhZGRlZCB0byBpdCdzIFwiVjFcIiBwYWNrYWdlLi4uIEdldCBkb3duIHRvIGJ1c2luZXNzIVxuICAgICAgICBjb25zb2xlLmVycm9yKGBBZGRpbmcgJHtuYW1lc3BhY2V9IHRvICR7bW9kdWxlLnBhY2thZ2VOYW1lfWApO1xuICAgICAgICBzY29wZXMucHVzaChuYW1lc3BhY2UpO1xuICAgICAgICBwYWNrYWdlSnNvblsnY2RrLWJ1aWxkJ10uY2xvdWRmb3JtYXRpb24gPSBzY29wZXM7XG4gICAgICAgIGF3YWl0IGZzLndyaXRlSnNvbihwYWNrYWdlSnNvblBhdGgsIHBhY2thZ2VKc29uLCB7IGVuY29kaW5nOiAndXRmLTgnLCBzcGFjZXM6IDIgfSk7XG4gICAgICAgIGNvbnN0IGluZGV4VHNQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VQYXRoLCAnbGliJywgJ2luZGV4LnRzJyk7XG4gICAgICAgIGNvbnN0IGluZGV4VHMgPSBbXG4gICAgICAgICAgKGF3YWl0IGZzLnJlYWRGaWxlKGluZGV4VHNQYXRoLCB7IGVuY29kaW5nOiAndXRmOCcgfSkpLnRyaW1SaWdodCgpLFxuICAgICAgICAgIGAvLyAke25hbWVzcGFjZX0gQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2VzOmAsXG4gICAgICAgICAgYGV4cG9ydCAqIGZyb20gJy4vJHtsb3djYXNlTW9kdWxlTmFtZX0uZ2VuZXJhdGVkJztgLFxuICAgICAgICBdLmpvaW4oJ1xcbicpO1xuICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoaW5kZXhUc1BhdGgsIGluZGV4VHMsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGUocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmdbXSB8IHN0cmluZyB8IG9iamVjdCkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLmpvaW4ocGFja2FnZVBhdGgsIHJlbGF0aXZlUGF0aCk7XG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZnVsbFBhdGgpO1xuICAgICAgYXdhaXQgZnMubWtkaXJwKGRpcik7XG5cbiAgICAgIGxldCBkYXRhO1xuICAgICAgaWYgKHR5cGVvZiBjb250ZW50cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZGF0YSA9IGNvbnRlbnRzLnRyaW1MZWZ0KCk7IC8vIHRyaW0gZmlyc3QgbmV3bGluZVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnRzKSkge1xuICAgICAgICBkYXRhID0gY29udGVudHMuam9pbignXFxuJyk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb250ZW50cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZGF0YSA9IEpTT04uc3RyaW5naWZ5KGNvbnRlbnRzLCB1bmRlZmluZWQsIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHR5cGUgb2YgY29udGVudHM6ICcgKyBjb250ZW50cyk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShmdWxsUGF0aCwgZGF0YSArICdcXG4nKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgZ2VuZXJhdGluZyBtb2R1bGUgZm9yICR7bW9kdWxlLnBhY2thZ2VOYW1lfS4uLmApO1xuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBgJHtuYW1lc3BhY2V9IENvbnN0cnVjdCBMaWJyYXJ5YDtcblxuICAgIGF3YWl0IHdyaXRlKCdwYWNrYWdlLmpzb24nLCB7XG4gICAgICBuYW1lOiBtb2R1bGUucGFja2FnZU5hbWUsXG4gICAgICB2ZXJzaW9uLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBtYWluOiAnbGliL2luZGV4LmpzJyxcbiAgICAgIHR5cGVzOiAnbGliL2luZGV4LmQudHMnLFxuICAgICAganNpaToge1xuICAgICAgICBvdXRkaXI6ICdkaXN0JyxcbiAgICAgICAgcHJvamVjdFJlZmVyZW5jZXM6IHRydWUsXG4gICAgICAgIHRhcmdldHM6IHtcbiAgICAgICAgICBkb3RuZXQ6IHtcbiAgICAgICAgICAgIG5hbWVzcGFjZTogbW9kdWxlLmRvdG5ldFBhY2thZ2UsXG4gICAgICAgICAgICBwYWNrYWdlSWQ6IG1vZHVsZS5kb3RuZXRQYWNrYWdlLFxuICAgICAgICAgICAgc2lnbkFzc2VtYmx5OiB0cnVlLFxuICAgICAgICAgICAgYXNzZW1ibHlPcmlnaW5hdG9yS2V5RmlsZTogJy4uLy4uL2tleS5zbmsnLFxuICAgICAgICAgICAgaWNvblVybDogJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9hd3MvYXdzLWNkay9tYXN0ZXIvbG9nby9kZWZhdWx0LTI1Ni1kYXJrLnBuZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBqYXZhOiB7XG4gICAgICAgICAgICBwYWNrYWdlOiBgJHttb2R1bGUuamF2YUdyb3VwSWR9LiR7bW9kdWxlLmphdmFQYWNrYWdlfWAsXG4gICAgICAgICAgICBtYXZlbjoge1xuICAgICAgICAgICAgICBncm91cElkOiBtb2R1bGUuamF2YUdyb3VwSWQsXG4gICAgICAgICAgICAgIGFydGlmYWN0SWQ6IG1vZHVsZS5qYXZhQXJ0aWZhY3RJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBweXRob246IHtcbiAgICAgICAgICAgIGNsYXNzaWZpZXJzOiBbXG4gICAgICAgICAgICAgICdGcmFtZXdvcmsgOjogQVdTIENESycsXG4gICAgICAgICAgICAgICdGcmFtZXdvcmsgOjogQVdTIENESyA6OiAxJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkaXN0TmFtZTogbW9kdWxlLnB5dGhvbkRpc3ROYW1lLFxuICAgICAgICAgICAgbW9kdWxlOiBtb2R1bGUucHl0aG9uTW9kdWxlTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGpzaWk6IHtcbiAgICAgICAgICAgIHJvc2V0dGE6IHtcbiAgICAgICAgICAgICAgc3RyaWN0OiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcG9zaXRvcnk6IHtcbiAgICAgICAgdHlwZTogJ2dpdCcsXG4gICAgICAgIHVybDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay5naXQnLFxuICAgICAgICBkaXJlY3Rvcnk6IGBwYWNrYWdlcy8ke21vZHVsZS5wYWNrYWdlTmFtZX1gLFxuICAgICAgfSxcbiAgICAgIGhvbWVwYWdlOiAnaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrJyxcbiAgICAgIHNjcmlwdHM6IHtcbiAgICAgICAgYnVpbGQ6ICdjZGstYnVpbGQnLFxuICAgICAgICB3YXRjaDogJ2Nkay13YXRjaCcsXG4gICAgICAgIGxpbnQ6ICdjZGstbGludCcsXG4gICAgICAgIHRlc3Q6ICdjZGstdGVzdCcsXG4gICAgICAgIGludGVnOiAnY2RrLWludGVnJyxcbiAgICAgICAgcGtnbGludDogJ3BrZ2xpbnQgLWYnLFxuICAgICAgICBwYWNrYWdlOiAnY2RrLXBhY2thZ2UnLFxuICAgICAgICBhd3NsaW50OiAnY2RrLWF3c2xpbnQnLFxuICAgICAgICBjZm4ydHM6ICdjZm4ydHMnLFxuICAgICAgICAnYnVpbGQrdGVzdCc6ICd5YXJuIGJ1aWxkICYmIHlhcm4gdGVzdCcsXG4gICAgICAgICdidWlsZCt0ZXN0K3BhY2thZ2UnOiAneWFybiBidWlsZCt0ZXN0ICYmIHlhcm4gcGFja2FnZScsXG4gICAgICAgIGNvbXBhdDogJ2Nkay1jb21wYXQnLFxuICAgICAgICBnZW46ICdjZm4ydHMnLFxuICAgICAgICAncm9zZXR0YTpleHRyYWN0JzogJ3lhcm4gLS1zaWxlbnQganNpaS1yb3NldHRhIGV4dHJhY3QnLFxuICAgICAgICAnYnVpbGQrZXh0cmFjdCc6ICd5YXJuIGJ1aWxkICYmIHlhcm4gcm9zZXR0YTpleHRyYWN0JyxcbiAgICAgICAgJ2J1aWxkK3Rlc3QrZXh0cmFjdCc6ICd5YXJuIGJ1aWxkK3Rlc3QgJiYgeWFybiByb3NldHRhOmV4dHJhY3QnLFxuICAgICAgfSxcbiAgICAgICdjZGstYnVpbGQnOiB7XG4gICAgICAgIGNsb3VkZm9ybWF0aW9uOiBuYW1lc3BhY2UsXG4gICAgICAgIGplc3Q6IHRydWUsXG4gICAgICAgIGVudjoge1xuICAgICAgICAgIEFXU0xJTlRfQkFTRV9DT05TVFJVQ1Q6ICd0cnVlJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBrZXl3b3JkczogW1xuICAgICAgICAnYXdzJyxcbiAgICAgICAgJ2NkaycsXG4gICAgICAgICdjb25zdHJ1Y3RzJyxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBtb2R1bGUubW9kdWxlTmFtZSxcbiAgICAgIF0sXG4gICAgICBhdXRob3I6IHtcbiAgICAgICAgbmFtZTogJ0FtYXpvbiBXZWIgU2VydmljZXMnLFxuICAgICAgICB1cmw6ICdodHRwczovL2F3cy5hbWF6b24uY29tJyxcbiAgICAgICAgb3JnYW5pemF0aW9uOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGxpY2Vuc2U6ICdBcGFjaGUtMi4wJyxcbiAgICAgIGRldkRlcGVuZGVuY2llczoge1xuICAgICAgICAnQGF3cy1jZGsvYXNzZXJ0aW9ucyc6IHZlcnNpb24sXG4gICAgICAgICdAYXdzLWNkay9jZGstYnVpbGQtdG9vbHMnOiB2ZXJzaW9uLFxuICAgICAgICAnQGF3cy1jZGsvY2ZuMnRzJzogdmVyc2lvbixcbiAgICAgICAgJ0Bhd3MtY2RrL3BrZ2xpbnQnOiB2ZXJzaW9uLFxuICAgICAgICAnQHR5cGVzL2plc3QnOiAnXjI2LjAuMjInLFxuICAgICAgfSxcbiAgICAgIGRlcGVuZGVuY2llczoge1xuICAgICAgICAnQGF3cy1jZGsvY29yZSc6IHZlcnNpb24sXG4gICAgICB9LFxuICAgICAgcGVlckRlcGVuZGVuY2llczoge1xuICAgICAgICAnQGF3cy1jZGsvY29yZSc6IHZlcnNpb24sXG4gICAgICB9LFxuICAgICAgZW5naW5lczoge1xuICAgICAgICBub2RlOiAnPj0gMTAuMTMuMCA8MTMgfHwgPj0xMy43LjAnLFxuICAgICAgfSxcbiAgICAgIHN0YWJpbGl0eTogJ2V4cGVyaW1lbnRhbCcsXG4gICAgICBtYXR1cml0eTogJ2Nmbi1vbmx5JyxcbiAgICAgIGF3c2Nka2lvOiB7XG4gICAgICAgIGFubm91bmNlOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBwdWJsaXNoQ29uZmlnOiB7XG4gICAgICAgIHRhZzogJ2xhdGVzdCcsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYXdhaXQgd3JpdGUoJy5naXRpZ25vcmUnLCBbXG4gICAgICAnKi5qcycsXG4gICAgICAnKi5qcy5tYXAnLFxuICAgICAgJyouZC50cycsXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgICAnbm9kZV9tb2R1bGVzJyxcbiAgICAgICcqLmdlbmVyYXRlZC50cycsXG4gICAgICAnZGlzdCcsXG4gICAgICAnLmpzaWknLFxuICAgICAgJycsXG4gICAgICAnLkxBU1RfQlVJTEQnLFxuICAgICAgJy5ueWNfb3V0cHV0JyxcbiAgICAgICdjb3ZlcmFnZScsXG4gICAgICAnLm55Y3JjJyxcbiAgICAgICcuTEFTVF9QQUNLQUdFJyxcbiAgICAgICcqLnNuaycsXG4gICAgICAnbnljLmNvbmZpZy5qcycsXG4gICAgICAnIS5lc2xpbnRyYy5qcycsXG4gICAgICAnIWplc3QuY29uZmlnLmpzJyxcbiAgICAgICdqdW5pdC54bWwnLFxuICAgIF0pO1xuXG4gICAgYXdhaXQgd3JpdGUoJy5ucG1pZ25vcmUnLCBbXG4gICAgICAnIyBEb25cXCd0IGluY2x1ZGUgb3JpZ2luYWwgLnRzIGZpbGVzIHdoZW4gZG9pbmcgYG5wbSBwYWNrYCcsXG4gICAgICAnKi50cycsXG4gICAgICAnISouZC50cycsXG4gICAgICAnY292ZXJhZ2UnLFxuICAgICAgJy5ueWNfb3V0cHV0JyxcbiAgICAgICcqLnRneicsXG4gICAgICAnJyxcbiAgICAgICdkaXN0JyxcbiAgICAgICcuTEFTVF9QQUNLQUdFJyxcbiAgICAgICcuTEFTVF9CVUlMRCcsXG4gICAgICAnISouanMnLFxuICAgICAgJycsXG4gICAgICAnIyBJbmNsdWRlIC5qc2lpJyxcbiAgICAgICchLmpzaWknLFxuICAgICAgJycsXG4gICAgICAnKi5zbmsnLFxuICAgICAgJycsXG4gICAgICAnKi50c2J1aWxkaW5mbycsXG4gICAgICAnJyxcbiAgICAgICd0c2NvbmZpZy5qc29uJyxcbiAgICAgICcnLFxuICAgICAgJy5lc2xpbnRyYy5qcycsXG4gICAgICAnamVzdC5jb25maWcuanMnLFxuICAgICAgJycsXG4gICAgICAnIyBleGNsdWRlIGNkayBhcnRpZmFjdHMnLFxuICAgICAgJyoqL2Nkay5vdXQnLFxuICAgICAgJ2p1bml0LnhtbCcsXG4gICAgICAndGVzdC8nLFxuICAgICAgJyEqLmxpdC50cycsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnbGliL2luZGV4LnRzJywgW1xuICAgICAgYC8vICR7bmFtZXNwYWNlfSBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZXM6YCxcbiAgICAgIGBleHBvcnQgKiBmcm9tICcuLyR7bG93Y2FzZU1vZHVsZU5hbWV9LmdlbmVyYXRlZCc7YCxcbiAgICBdKTtcblxuICAgIGF3YWl0IHdyaXRlKGB0ZXN0LyR7bG93Y2FzZU1vZHVsZU5hbWV9LnRlc3QudHNgLCBbXG4gICAgICBcImltcG9ydCAnQGF3cy1jZGsvYXNzZXJ0aW9ucyc7XCIsXG4gICAgICBcImltcG9ydCB7fSBmcm9tICcuLi9saWInO1wiLFxuICAgICAgJycsXG4gICAgICBcInRlc3QoJ05vIHRlc3RzIGFyZSBzcGVjaWZpZWQgZm9yIHRoaXMgcGFja2FnZScsICgpID0+IHtcIixcbiAgICAgICcgIGV4cGVjdCh0cnVlKS50b0JlKHRydWUpOycsXG4gICAgICAnfSk7JyxcbiAgICBdKTtcblxuICAgIGF3YWl0IHBrZ2xpbnQuY3JlYXRlTGlicmFyeVJlYWRtZShuYW1lc3BhY2UsIHBhdGguam9pbihwYWNrYWdlUGF0aCwgJ1JFQURNRS5tZCcpKTtcblxuICAgIGF3YWl0IHdyaXRlKCcuZXNsaW50cmMuanMnLCBbXG4gICAgICBcImNvbnN0IGJhc2VDb25maWcgPSByZXF1aXJlKCdAYXdzLWNkay9jZGstYnVpbGQtdG9vbHMvY29uZmlnL2VzbGludHJjJyk7XCIsXG4gICAgICBcImJhc2VDb25maWcucGFyc2VyT3B0aW9ucy5wcm9qZWN0ID0gX19kaXJuYW1lICsgJy90c2NvbmZpZy5qc29uJztcIixcbiAgICAgICdtb2R1bGUuZXhwb3J0cyA9IGJhc2VDb25maWc7JyxcbiAgICBdKTtcblxuICAgIGF3YWl0IHdyaXRlKCdqZXN0LmNvbmZpZy5qcycsIFtcbiAgICAgIFwiY29uc3QgYmFzZUNvbmZpZyA9IHJlcXVpcmUoJ0Bhd3MtY2RrL2Nkay1idWlsZC10b29scy9jb25maWcvamVzdC5jb25maWcnKTtcIixcbiAgICAgICdtb2R1bGUuZXhwb3J0cyA9IGJhc2VDb25maWc7JyxcbiAgICBdKTtcblxuICAgIGF3YWl0IHdyaXRlKCdyb3NldHRhL2RlZmF1bHQudHMtZml4dHVyZScsIFtcbiAgICAgIFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XCIsXG4gICAgICBcImltcG9ydCB7IFN0YWNrIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XCIsXG4gICAgICAnJyxcbiAgICAgICdjbGFzcyBNeVN0YWNrIGV4dGVuZHMgU3RhY2sgeycsXG4gICAgICAnICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7JyxcbiAgICAgICcgICAgLy8vIGhlcmUnLFxuICAgICAgJyAgfScsXG4gICAgICAnfScsXG4gICAgXSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZURpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsICd0ZW1wbGF0ZScpO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhd2FpdCBmcy5yZWFkZGlyKHRlbXBsYXRlRGlyKSkge1xuICAgICAgYXdhaXQgZnMuY29weShwYXRoLmpvaW4odGVtcGxhdGVEaXIsIGZpbGUpLCBwYXRoLmpvaW4ocGFja2FnZVBhdGgsIGZpbGUpKTtcbiAgICB9XG5cbiAgICBhd2FpdCBhZGREZXBlbmRlbmN5VG9NZWdhUGFja2FnZShwYXRoLmpvaW4oJ0Bhd3MtY2RrJywgJ2Nsb3VkZm9ybWF0aW9uLWluY2x1ZGUnKSwgbW9kdWxlLnBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBbJ2RlcGVuZGVuY2llcycsICdwZWVyRGVwZW5kZW5jaWVzJ10pO1xuICAgIGF3YWl0IGFkZERlcGVuZGVuY3lUb01lZ2FQYWNrYWdlKCdhd3MtY2RrLWxpYicsIG1vZHVsZS5wYWNrYWdlTmFtZSwgdmVyc2lvbiwgWydkZXZEZXBlbmRlbmNpZXMnXSk7XG4gICAgYXdhaXQgYWRkRGVwZW5kZW5jeVRvTWVnYVBhY2thZ2UoJ21vbm9jZGsnLCBtb2R1bGUucGFja2FnZU5hbWUsIHZlcnNpb24sIFsnZGV2RGVwZW5kZW5jaWVzJ10pO1xuICAgIGF3YWl0IGFkZERlcGVuZGVuY3lUb01lZ2FQYWNrYWdlKCdkZWNkaycsIG1vZHVsZS5wYWNrYWdlTmFtZSwgdmVyc2lvbiwgWydkZXBlbmRlbmNpZXMnXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGZldyBvZiBvdXIgcGFja2FnZXMgKGUuZy4sIGRlY2RrLCBhd3MtY2RrLWxpYikgcmVxdWlyZSBhIGRlcGVuZGVuY3kgb24gZXZlcnkgc2VydmljZSBwYWNrYWdlLlxuICogVGhpcyBhdXRvbWF0ZXMgYWRkaW5nIHRoZSBkZXBlbmRlbmN5IChhbmQgcGVlciBkZXBlbmRlbmN5KSB0byB0aGUgcGFja2FnZS5qc29uLlxuICovXG5hc3luYyBmdW5jdGlvbiBhZGREZXBlbmRlbmN5VG9NZWdhUGFja2FnZShtZWdhUGFja2FnZU5hbWU6IHN0cmluZywgcGFja2FnZU5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCBkZXBlbmRlbmN5VHlwZXM6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsIG1lZ2FQYWNrYWdlTmFtZSwgJ3BhY2thZ2UuanNvbicpO1xuICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUocGFja2FnZUpzb25QYXRoLCAndXRmOCcpKTtcbiAgZGVwZW5kZW5jeVR5cGVzLmZvckVhY2goZGVwZW5kZW5jeVR5cGUgPT4ge1xuICAgIGNvbnN0IHVub3JkZXJlZERlcHMgPSB7XG4gICAgICAuLi5wYWNrYWdlSnNvbltkZXBlbmRlbmN5VHlwZV0sXG4gICAgICBbcGFja2FnZU5hbWVdOiB2ZXJzaW9uLFxuICAgIH07XG4gICAgcGFja2FnZUpzb25bZGVwZW5kZW5jeVR5cGVdID0ge307XG4gICAgT2JqZWN0LmtleXModW5vcmRlcmVkRGVwcykuc29ydCgpLmZvckVhY2goayA9PiB7XG4gICAgICBwYWNrYWdlSnNvbltkZXBlbmRlbmN5VHlwZV1ba10gPSB1bm9yZGVyZWREZXBzW2tdO1xuICAgIH0pO1xuICB9KTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHBhY2thZ2VKc29uUGF0aCwgSlNPTi5zdHJpbmdpZnkocGFja2FnZUpzb24sIG51bGwsIDIpICsgJ1xcbicpO1xufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIGNvbnNvbGUuZXJyb3IoZSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
310
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlYXRlLW1pc3NpbmctbGlicmFyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUE7OztHQUdHOztBQUVILDZCQUE2QjtBQUM3Qiw0Q0FBNEM7QUFDNUMsK0JBQStCO0FBQy9CLGtDQUFrQztBQUVsQyxvQkFBb0I7QUFDcEIsK0JBQStCO0FBQy9CLGdDQUFnQztBQUVoQyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtRQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxJQUFJLDREQUE0RCxDQUFDLENBQUM7S0FDeEg7SUFFRCxpRUFBaUU7SUFDakUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUN2QyxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFdkUsNkNBQTZDO0lBQzdDLEtBQUssTUFBTSxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQzVDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdkQsd0RBQXdEO1FBQ3hELElBQUksTUFBTSxFQUFF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QUFXLENBQUMsRUFBRSxPQUFPO1NBQ3ZCLENBQUM7UUFDRixXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ25GLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8qKlxuICogYXV0b21hdGljYWxseSBjcmVhdGVzIGEgbW9kdWxlIGZvciBhbnkgQ2xvdWRGb3JtYXRpb24gbmFtZXNwYWNlcyB0aGF0IGRvIG5vdFxuICogaGF2ZSBhbiBBV1MgY29uc3RydWN0IGxpYnJhcnkuXG4gKi9cblxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHBrZ2xpbnQgZnJvbSAnQGF3cy1jZGsvcGtnbGludCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgKiBhcyBjZm5zcGVjIGZyb20gJy4uL2xpYic7XG5cbi8vIGRvbid0IGJlIGEgcHJ1ZGU6XG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBxdW90ZS1wcm9wcyAqL1xuXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICBjb25zdCByb290ID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJyk7XG4gIGlmIChwYXRoLmJhc2VuYW1lKHJvb3QpICE9PSAnQGF3cy1jZGsnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgd2VudCB3cm9uZy4gV2UgZXhwZWN0ZWQgJHtyb290fSB0byBiZSB0aGUgXCJwYWNrYWdlcy9AYXdzLWNka1wiIGRpcmVjdG9yeS4gRGlkIHlvdSBtb3ZlIG1lP2ApO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgY29uc3QgY2ZuU3BlY1BrZ0pzb24gPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgdmVyc2lvbiA9IGNmblNwZWNQa2dKc29uLnZlcnNpb247XG4gIGNvbnN0IGplc3RUeXBlc1ZlcnNpb24gPSBjZm5TcGVjUGtnSnNvbi5kZXZEZXBlbmRlbmNpZXNbJ0B0eXBlcy9qZXN0J107XG5cbiAgLy8gaXRlcmF0ZSBvdmVyIGFsbCBjbG91ZGZvcm1hdGlvbiBuYW1lc3BhY2VzXG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIGNmbnNwZWMubmFtZXNwYWNlcygpKSB7XG4gICAgY29uc3QgbW9kdWxlID0gcGtnbGludC5jcmVhdGVNb2R1bGVEZWZpbml0aW9uRnJvbUNmbk5hbWVzcGFjZShuYW1lc3BhY2UpO1xuICAgIGNvbnN0IGxvd2Nhc2VNb2R1bGVOYW1lID0gbW9kdWxlLm1vZHVsZUJhc2VOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgcGFja2FnZVBhdGggPSBwYXRoLmpvaW4ocm9vdCwgbW9kdWxlLm1vZHVsZU5hbWUpO1xuXG4gICAgLy8gd2UgYWxyZWFkeSBoYXZlIGEgbW9kdWxlIGZvciB0aGlzIG5hbWVzYXBjZSwgbW92ZSBvbi5cbiAgICBpZiAoYXdhaXQgZnMucGF0aEV4aXN0cyhwYWNrYWdlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGguam9pbihwYWNrYWdlUGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gcmVxdWlyZShwYWNrYWdlSnNvblBhdGgpO1xuICAgICAgbGV0IHNjb3Blczogc3RyaW5nIHwgc3RyaW5nW10gPSBwYWNrYWdlSnNvblsnY2RrLWJ1aWxkJ10uY2xvdWRmb3JtYXRpb247XG4gICAgICBpZiAodHlwZW9mIHNjb3BlcyA9PT0gJ3N0cmluZycpIHsgc2NvcGVzID0gW3Njb3Blc107IH1cbiAgICAgIGlmIChzY29wZXMuaW5kZXhPZihuYW1lc3BhY2UpICE9PSAtMSkge1xuICAgICAgICAvLyBWMi1zdHlsZSBtb2R1bGUgaXMgYWxyZWFkeSBtb2RlbGVkIGluIHRoZSByb290IHBhY2thZ2UsIG5vdGhpbmcgdG8gYmUgZG9uZSFcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKGF3YWl0IGZzLnBhdGhFeGlzdHMocGF0aC5qb2luKHJvb3QsIGAke21vZHVsZS5tb2R1bGVGYW1pbHl9LSR7bW9kdWxlLm1vZHVsZUJhc2VOYW1lfWAudG9Mb2NhbGVMb3dlckNhc2UoKSkpKSB7XG4gICAgICAgIC8vIFYyLXN0eWxlIHBhY2thZ2UgYWxyZWFkeSBoYXMgaXQncyBvd24gcGFja2FnZSAobGVnYWN5IGJlaGF2aW9yKSwgbm90aGluZyB0byBiZSBkb25lIVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFYyLXN0eWxlIHBhY2thZ2UgbmVlZHMgdG8gYmUgYWRkZWQgdG8gaXQncyBcIlYxXCIgcGFja2FnZS4uLiBHZXQgZG93biB0byBidXNpbmVzcyFcbiAgICAgICAgY29uc29sZS5lcnJvcihgQWRkaW5nICR7bmFtZXNwYWNlfSB0byAke21vZHVsZS5wYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgc2NvcGVzLnB1c2gobmFtZXNwYWNlKTtcbiAgICAgICAgcGFja2FnZUpzb25bJ2Nkay1idWlsZCddLmNsb3VkZm9ybWF0aW9uID0gc2NvcGVzO1xuICAgICAgICBhd2FpdCBmcy53cml0ZUpzb24ocGFja2FnZUpzb25QYXRoLCBwYWNrYWdlSnNvbiwgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3BhY2VzOiAyIH0pO1xuICAgICAgICBjb25zdCBpbmRleFRzUGF0aCA9IHBhdGguam9pbihwYWNrYWdlUGF0aCwgJ2xpYicsICdpbmRleC50cycpO1xuICAgICAgICBjb25zdCBpbmRleFRzID0gW1xuICAgICAgICAgIChhd2FpdCBmcy5yZWFkRmlsZShpbmRleFRzUGF0aCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pKS50cmltUmlnaHQoKSxcbiAgICAgICAgICBgLy8gJHtuYW1lc3BhY2V9IENsb3VkRm9ybWF0aW9uIFJlc291cmNlczpgLFxuICAgICAgICAgIGBleHBvcnQgKiBmcm9tICcuLyR7bG93Y2FzZU1vZHVsZU5hbWV9LmdlbmVyYXRlZCc7YCxcbiAgICAgICAgXS5qb2luKCdcXG4nKTtcbiAgICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKGluZGV4VHNQYXRoLCBpbmRleFRzLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nW10gfCBzdHJpbmcgfCBvYmplY3QpIHtcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5qb2luKHBhY2thZ2VQYXRoLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKGZ1bGxQYXRoKTtcbiAgICAgIGF3YWl0IGZzLm1rZGlycChkaXIpO1xuXG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGlmICh0eXBlb2YgY29udGVudHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRhdGEgPSBjb250ZW50cy50cmltTGVmdCgpOyAvLyB0cmltIGZpcnN0IG5ld2xpbmVcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb250ZW50cykpIHtcbiAgICAgICAgZGF0YSA9IGNvbnRlbnRzLmpvaW4oJ1xcbicpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY29udGVudHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGRhdGEgPSBKU09OLnN0cmluZ2lmeShjb250ZW50cywgdW5kZWZpbmVkLCAyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0eXBlIG9mIGNvbnRlbnRzOiAnICsgY29udGVudHMpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBmcy53cml0ZUZpbGUoZnVsbFBhdGgsIGRhdGEgKyAnXFxuJyk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYGdlbmVyYXRpbmcgbW9kdWxlIGZvciAke21vZHVsZS5wYWNrYWdlTmFtZX0uLi5gKTtcblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYCR7bmFtZXNwYWNlfSBDb25zdHJ1Y3QgTGlicmFyeWA7XG5cbiAgICBhd2FpdCB3cml0ZSgncGFja2FnZS5qc29uJywge1xuICAgICAgbmFtZTogbW9kdWxlLnBhY2thZ2VOYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgbWFpbjogJ2xpYi9pbmRleC5qcycsXG4gICAgICB0eXBlczogJ2xpYi9pbmRleC5kLnRzJyxcbiAgICAgIGpzaWk6IHtcbiAgICAgICAgb3V0ZGlyOiAnZGlzdCcsXG4gICAgICAgIHByb2plY3RSZWZlcmVuY2VzOiB0cnVlLFxuICAgICAgICB0YXJnZXRzOiB7XG4gICAgICAgICAgZG90bmV0OiB7XG4gICAgICAgICAgICBuYW1lc3BhY2U6IG1vZHVsZS5kb3RuZXRQYWNrYWdlLFxuICAgICAgICAgICAgcGFja2FnZUlkOiBtb2R1bGUuZG90bmV0UGFja2FnZSxcbiAgICAgICAgICAgIHNpZ25Bc3NlbWJseTogdHJ1ZSxcbiAgICAgICAgICAgIGFzc2VtYmx5T3JpZ2luYXRvcktleUZpbGU6ICcuLi8uLi9rZXkuc25rJyxcbiAgICAgICAgICAgIGljb25Vcmw6ICdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYXdzL2F3cy1jZGsvbWFzdGVyL2xvZ28vZGVmYXVsdC0yNTYtZGFyay5wbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgamF2YToge1xuICAgICAgICAgICAgcGFja2FnZTogYCR7bW9kdWxlLmphdmFHcm91cElkfS4ke21vZHVsZS5qYXZhUGFja2FnZX1gLFxuICAgICAgICAgICAgbWF2ZW46IHtcbiAgICAgICAgICAgICAgZ3JvdXBJZDogbW9kdWxlLmphdmFHcm91cElkLFxuICAgICAgICAgICAgICBhcnRpZmFjdElkOiBtb2R1bGUuamF2YUFydGlmYWN0SWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHl0aG9uOiB7XG4gICAgICAgICAgICBjbGFzc2lmaWVyczogW1xuICAgICAgICAgICAgICAnRnJhbWV3b3JrIDo6IEFXUyBDREsnLFxuICAgICAgICAgICAgICAnRnJhbWV3b3JrIDo6IEFXUyBDREsgOjogMScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZGlzdE5hbWU6IG1vZHVsZS5weXRob25EaXN0TmFtZSxcbiAgICAgICAgICAgIG1vZHVsZTogbW9kdWxlLnB5dGhvbk1vZHVsZU5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBqc2lpOiB7XG4gICAgICAgICAgICByb3NldHRhOiB7XG4gICAgICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByZXBvc2l0b3J5OiB7XG4gICAgICAgIHR5cGU6ICdnaXQnLFxuICAgICAgICB1cmw6ICdodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsuZ2l0JyxcbiAgICAgICAgZGlyZWN0b3J5OiBgcGFja2FnZXMvJHttb2R1bGUucGFja2FnZU5hbWV9YCxcbiAgICAgIH0sXG4gICAgICBob21lcGFnZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkaycsXG4gICAgICBzY3JpcHRzOiB7XG4gICAgICAgIGJ1aWxkOiAnY2RrLWJ1aWxkJyxcbiAgICAgICAgd2F0Y2g6ICdjZGstd2F0Y2gnLFxuICAgICAgICBsaW50OiAnY2RrLWxpbnQnLFxuICAgICAgICB0ZXN0OiAnY2RrLXRlc3QnLFxuICAgICAgICBpbnRlZzogJ2Nkay1pbnRlZycsXG4gICAgICAgIHBrZ2xpbnQ6ICdwa2dsaW50IC1mJyxcbiAgICAgICAgcGFja2FnZTogJ2Nkay1wYWNrYWdlJyxcbiAgICAgICAgYXdzbGludDogJ2Nkay1hd3NsaW50JyxcbiAgICAgICAgY2ZuMnRzOiAnY2ZuMnRzJyxcbiAgICAgICAgJ2J1aWxkK3Rlc3QnOiAneWFybiBidWlsZCAmJiB5YXJuIHRlc3QnLFxuICAgICAgICAnYnVpbGQrdGVzdCtwYWNrYWdlJzogJ3lhcm4gYnVpbGQrdGVzdCAmJiB5YXJuIHBhY2thZ2UnLFxuICAgICAgICBjb21wYXQ6ICdjZGstY29tcGF0JyxcbiAgICAgICAgZ2VuOiAnY2ZuMnRzJyxcbiAgICAgICAgJ3Jvc2V0dGE6ZXh0cmFjdCc6ICd5YXJuIC0tc2lsZW50IGpzaWktcm9zZXR0YSBleHRyYWN0JyxcbiAgICAgICAgJ2J1aWxkK2V4dHJhY3QnOiAneWFybiBidWlsZCAmJiB5YXJuIHJvc2V0dGE6ZXh0cmFjdCcsXG4gICAgICAgICdidWlsZCt0ZXN0K2V4dHJhY3QnOiAneWFybiBidWlsZCt0ZXN0ICYmIHlhcm4gcm9zZXR0YTpleHRyYWN0JyxcbiAgICAgIH0sXG4gICAgICAnY2RrLWJ1aWxkJzoge1xuICAgICAgICBjbG91ZGZvcm1hdGlvbjogbmFtZXNwYWNlLFxuICAgICAgICBqZXN0OiB0cnVlLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICBBV1NMSU5UX0JBU0VfQ09OU1RSVUNUOiAndHJ1ZScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAga2V5d29yZHM6IFtcbiAgICAgICAgJ2F3cycsXG4gICAgICAgICdjZGsnLFxuICAgICAgICAnY29uc3RydWN0cycsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgbW9kdWxlLm1vZHVsZU5hbWUsXG4gICAgICBdLFxuICAgICAgYXV0aG9yOiB7XG4gICAgICAgIG5hbWU6ICdBbWF6b24gV2ViIFNlcnZpY2VzJyxcbiAgICAgICAgdXJsOiAnaHR0cHM6Ly9hd3MuYW1hem9uLmNvbScsXG4gICAgICAgIG9yZ2FuaXphdGlvbjogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBsaWNlbnNlOiAnQXBhY2hlLTIuMCcsXG4gICAgICBkZXZEZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgJ0Bhd3MtY2RrL2Fzc2VydGlvbnMnOiB2ZXJzaW9uLFxuICAgICAgICAnQGF3cy1jZGsvY2RrLWJ1aWxkLXRvb2xzJzogdmVyc2lvbixcbiAgICAgICAgJ0Bhd3MtY2RrL2NmbjJ0cyc6IHZlcnNpb24sXG4gICAgICAgICdAYXdzLWNkay9wa2dsaW50JzogdmVyc2lvbixcbiAgICAgICAgJ0B0eXBlcy9qZXN0JzogamVzdFR5cGVzVmVyc2lvbixcbiAgICAgIH0sXG4gICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgJ0Bhd3MtY2RrL2NvcmUnOiB2ZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIHBlZXJEZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgJ0Bhd3MtY2RrL2NvcmUnOiB2ZXJzaW9uLFxuICAgICAgfSxcbiAgICAgIGVuZ2luZXM6IHtcbiAgICAgICAgbm9kZTogJz49IDEwLjEzLjAgPDEzIHx8ID49MTMuNy4wJyxcbiAgICAgIH0sXG4gICAgICBzdGFiaWxpdHk6ICdleHBlcmltZW50YWwnLFxuICAgICAgbWF0dXJpdHk6ICdjZm4tb25seScsXG4gICAgICBhd3NjZGtpbzoge1xuICAgICAgICBhbm5vdW5jZTogZmFsc2UsXG4gICAgICB9LFxuICAgICAgcHVibGlzaENvbmZpZzoge1xuICAgICAgICB0YWc6ICdsYXRlc3QnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGF3YWl0IHdyaXRlKCcuZ2l0aWdub3JlJywgW1xuICAgICAgJyouanMnLFxuICAgICAgJyouanMubWFwJyxcbiAgICAgICcqLmQudHMnLFxuICAgICAgJ3RzY29uZmlnLmpzb24nLFxuICAgICAgJ25vZGVfbW9kdWxlcycsXG4gICAgICAnKi5nZW5lcmF0ZWQudHMnLFxuICAgICAgJ2Rpc3QnLFxuICAgICAgJy5qc2lpJyxcbiAgICAgICcnLFxuICAgICAgJy5MQVNUX0JVSUxEJyxcbiAgICAgICcubnljX291dHB1dCcsXG4gICAgICAnY292ZXJhZ2UnLFxuICAgICAgJy5ueWNyYycsXG4gICAgICAnLkxBU1RfUEFDS0FHRScsXG4gICAgICAnKi5zbmsnLFxuICAgICAgJ255Yy5jb25maWcuanMnLFxuICAgICAgJyEuZXNsaW50cmMuanMnLFxuICAgICAgJyFqZXN0LmNvbmZpZy5qcycsXG4gICAgICAnanVuaXQueG1sJyxcbiAgICBdKTtcblxuICAgIGF3YWl0IHdyaXRlKCcubnBtaWdub3JlJywgW1xuICAgICAgJyMgRG9uXFwndCBpbmNsdWRlIG9yaWdpbmFsIC50cyBmaWxlcyB3aGVuIGRvaW5nIGBucG0gcGFja2AnLFxuICAgICAgJyoudHMnLFxuICAgICAgJyEqLmQudHMnLFxuICAgICAgJ2NvdmVyYWdlJyxcbiAgICAgICcubnljX291dHB1dCcsXG4gICAgICAnKi50Z3onLFxuICAgICAgJycsXG4gICAgICAnZGlzdCcsXG4gICAgICAnLkxBU1RfUEFDS0FHRScsXG4gICAgICAnLkxBU1RfQlVJTEQnLFxuICAgICAgJyEqLmpzJyxcbiAgICAgICcnLFxuICAgICAgJyMgSW5jbHVkZSAuanNpaScsXG4gICAgICAnIS5qc2lpJyxcbiAgICAgICcnLFxuICAgICAgJyouc25rJyxcbiAgICAgICcnLFxuICAgICAgJyoudHNidWlsZGluZm8nLFxuICAgICAgJycsXG4gICAgICAndHNjb25maWcuanNvbicsXG4gICAgICAnJyxcbiAgICAgICcuZXNsaW50cmMuanMnLFxuICAgICAgJ2plc3QuY29uZmlnLmpzJyxcbiAgICAgICcnLFxuICAgICAgJyMgZXhjbHVkZSBjZGsgYXJ0aWZhY3RzJyxcbiAgICAgICcqKi9jZGsub3V0JyxcbiAgICAgICdqdW5pdC54bWwnLFxuICAgICAgJ3Rlc3QvJyxcbiAgICAgICchKi5saXQudHMnLFxuICAgIF0pO1xuXG4gICAgYXdhaXQgd3JpdGUoJ2xpYi9pbmRleC50cycsIFtcbiAgICAgIGAvLyAke25hbWVzcGFjZX0gQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2VzOmAsXG4gICAgICBgZXhwb3J0ICogZnJvbSAnLi8ke2xvd2Nhc2VNb2R1bGVOYW1lfS5nZW5lcmF0ZWQnO2AsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZShgdGVzdC8ke2xvd2Nhc2VNb2R1bGVOYW1lfS50ZXN0LnRzYCwgW1xuICAgICAgXCJpbXBvcnQgJ0Bhd3MtY2RrL2Fzc2VydGlvbnMnO1wiLFxuICAgICAgXCJpbXBvcnQge30gZnJvbSAnLi4vbGliJztcIixcbiAgICAgICcnLFxuICAgICAgXCJ0ZXN0KCdObyB0ZXN0cyBhcmUgc3BlY2lmaWVkIGZvciB0aGlzIHBhY2thZ2UnLCAoKSA9PiB7XCIsXG4gICAgICAnICBleHBlY3QodHJ1ZSkudG9CZSh0cnVlKTsnLFxuICAgICAgJ30pOycsXG4gICAgXSk7XG5cbiAgICBhd2FpdCBwa2dsaW50LmNyZWF0ZUxpYnJhcnlSZWFkbWUobmFtZXNwYWNlLCBwYXRoLmpvaW4ocGFja2FnZVBhdGgsICdSRUFETUUubWQnKSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnLmVzbGludHJjLmpzJywgW1xuICAgICAgXCJjb25zdCBiYXNlQ29uZmlnID0gcmVxdWlyZSgnQGF3cy1jZGsvY2RrLWJ1aWxkLXRvb2xzL2NvbmZpZy9lc2xpbnRyYycpO1wiLFxuICAgICAgXCJiYXNlQ29uZmlnLnBhcnNlck9wdGlvbnMucHJvamVjdCA9IF9fZGlybmFtZSArICcvdHNjb25maWcuanNvbic7XCIsXG4gICAgICAnbW9kdWxlLmV4cG9ydHMgPSBiYXNlQ29uZmlnOycsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZSgnamVzdC5jb25maWcuanMnLCBbXG4gICAgICBcImNvbnN0IGJhc2VDb25maWcgPSByZXF1aXJlKCdAYXdzLWNkay9jZGstYnVpbGQtdG9vbHMvY29uZmlnL2plc3QuY29uZmlnJyk7XCIsXG4gICAgICAnbW9kdWxlLmV4cG9ydHMgPSBiYXNlQ29uZmlnOycsXG4gICAgXSk7XG5cbiAgICBhd2FpdCB3cml0ZSgncm9zZXR0YS9kZWZhdWx0LnRzLWZpeHR1cmUnLCBbXG4gICAgICBcImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1wiLFxuICAgICAgXCJpbXBvcnQgeyBTdGFjayB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiLFxuICAgICAgJycsXG4gICAgICAnY2xhc3MgTXlTdGFjayBleHRlbmRzIFN0YWNrIHsnLFxuICAgICAgJyAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykgeycsXG4gICAgICAnICAgIC8vLyBoZXJlJyxcbiAgICAgICcgIH0nLFxuICAgICAgJ30nLFxuICAgIF0pO1xuXG4gICAgY29uc3QgdGVtcGxhdGVEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAndGVtcGxhdGUnKTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgZnMucmVhZGRpcih0ZW1wbGF0ZURpcikpIHtcbiAgICAgIGF3YWl0IGZzLmNvcHkocGF0aC5qb2luKHRlbXBsYXRlRGlyLCBmaWxlKSwgcGF0aC5qb2luKHBhY2thZ2VQYXRoLCBmaWxlKSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYWRkRGVwZW5kZW5jeVRvTWVnYVBhY2thZ2UocGF0aC5qb2luKCdAYXdzLWNkaycsICdjbG91ZGZvcm1hdGlvbi1pbmNsdWRlJyksIG1vZHVsZS5wYWNrYWdlTmFtZSwgdmVyc2lvbiwgWydkZXBlbmRlbmNpZXMnLCAncGVlckRlcGVuZGVuY2llcyddKTtcbiAgICBhd2FpdCBhZGREZXBlbmRlbmN5VG9NZWdhUGFja2FnZSgnYXdzLWNkay1saWInLCBtb2R1bGUucGFja2FnZU5hbWUsIHZlcnNpb24sIFsnZGV2RGVwZW5kZW5jaWVzJ10pO1xuICAgIGF3YWl0IGFkZERlcGVuZGVuY3lUb01lZ2FQYWNrYWdlKCdtb25vY2RrJywgbW9kdWxlLnBhY2thZ2VOYW1lLCB2ZXJzaW9uLCBbJ2RldkRlcGVuZGVuY2llcyddKTtcbiAgICBhd2FpdCBhZGREZXBlbmRlbmN5VG9NZWdhUGFja2FnZSgnZGVjZGsnLCBtb2R1bGUucGFja2FnZU5hbWUsIHZlcnNpb24sIFsnZGVwZW5kZW5jaWVzJ10pO1xuICB9XG59XG5cbi8qKlxuICogQSBmZXcgb2Ygb3VyIHBhY2thZ2VzIChlLmcuLCBkZWNkaywgYXdzLWNkay1saWIpIHJlcXVpcmUgYSBkZXBlbmRlbmN5IG9uIGV2ZXJ5IHNlcnZpY2UgcGFja2FnZS5cbiAqIFRoaXMgYXV0b21hdGVzIGFkZGluZyB0aGUgZGVwZW5kZW5jeSAoYW5kIHBlZXIgZGVwZW5kZW5jeSkgdG8gdGhlIHBhY2thZ2UuanNvbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkRGVwZW5kZW5jeVRvTWVnYVBhY2thZ2UobWVnYVBhY2thZ2VOYW1lOiBzdHJpbmcsIHBhY2thZ2VOYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgZGVwZW5kZW5jeVR5cGVzOiBzdHJpbmdbXSkge1xuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCBtZWdhUGFja2FnZU5hbWUsICdwYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgcGFja2FnZUpzb24gPSBKU09OLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKSk7XG4gIGRlcGVuZGVuY3lUeXBlcy5mb3JFYWNoKGRlcGVuZGVuY3lUeXBlID0+IHtcbiAgICBjb25zdCB1bm9yZGVyZWREZXBzID0ge1xuICAgICAgLi4ucGFja2FnZUpzb25bZGVwZW5kZW5jeVR5cGVdLFxuICAgICAgW3BhY2thZ2VOYW1lXTogdmVyc2lvbixcbiAgICB9O1xuICAgIHBhY2thZ2VKc29uW2RlcGVuZGVuY3lUeXBlXSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHVub3JkZXJlZERlcHMpLnNvcnQoKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgcGFja2FnZUpzb25bZGVwZW5kZW5jeVR5cGVdW2tdID0gdW5vcmRlcmVkRGVwc1trXTtcbiAgICB9KTtcbiAgfSk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShwYWNrYWdlSnNvblBhdGgsIEpTT04uc3RyaW5naWZ5KHBhY2thZ2VKc29uLCBudWxsLCAyKSArICdcXG4nKTtcbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBjb25zb2xlLmVycm9yKGUpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
@@ -61,13 +61,17 @@ update-spec \
61
61
  spec-source/specification/000_cfn/000_official \
62
62
  true true
63
63
 
64
+ old_version=$(cat cfn.version)
65
+ new_version=$(node -p "require('${scriptdir}/../spec-source/specification/000_cfn/000_official/001_Version.json').ResourceSpecificationVersion")
64
66
  echo >&2 "Recording new version..."
65
67
  rm -f cfn.version
66
- node -p "require('${scriptdir}/../spec-source/specification/000_cfn/000_official/001_Version.json').ResourceSpecificationVersion" > cfn.version
68
+ echo "$new_version" > cfn.version
67
69
 
68
-
69
- echo >&2 "Reporting outdated specs..."
70
- node build-tools/report-issues spec-source/specification/000_cfn/000_official/ outdated >> CHANGELOG.md.new
70
+ # Only report outdated specs if we made changes, otherwise we're stuck reporting changes every time.
71
+ if [[ "$new_version" != "$old_version" ]]; then
72
+ echo >&2 "Reporting outdated specs..."
73
+ node build-tools/report-issues spec-source/specification/000_cfn/000_official/ outdated >> CHANGELOG.md.new
74
+ fi
71
75
 
72
76
  update-spec \
73
77
  "Serverless Application Model (SAM) Resource Specification" \
@@ -1 +1 @@
1
- 51.0.0
1
+ 53.1.0
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at Thu Jan 13 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
149
+ at Sat Jan 29 2022 03:50:23 GMT+0000 (Coordinated Universal Time)
150
150
  </div>
151
151
  <script src="../prettify.js"></script>
152
152
  <script>
@@ -280,7 +280,7 @@ export function <span class="fstat-no" title="function not covered" >normalize(<
280
280
  <div class='footer quiet pad2 space-top1 center small'>
281
281
  Code coverage generated by
282
282
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
283
- at Thu Jan 13 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
283
+ at Sat Jan 29 2022 03:50:23 GMT+0000 (Coordinated Universal Time)
284
284
  </div>
285
285
  <script src="../prettify.js"></script>
286
286
  <script>
@@ -892,7 +892,7 @@ function <span class="fstat-no" title="function not covered" >eatArg(</span>arg:
892
892
  <div class='footer quiet pad2 space-top1 center small'>
893
893
  Code coverage generated by
894
894
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
895
- at Thu Jan 13 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
895
+ at Sat Jan 29 2022 03:50:23 GMT+0000 (Coordinated Universal Time)
896
896
  </div>
897
897
  <script src="../prettify.js"></script>
898
898
  <script>
@@ -334,7 +334,7 @@ function <span class="fstat-no" title="function not covered" >apply2&lt;</span>T
334
334
  <div class='footer quiet pad2 space-top1 center small'>
335
335
  Code coverage generated by
336
336
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
337
- at Thu Jan 13 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
337
+ at Sat Jan 29 2022 03:50:23 GMT+0000 (Coordinated Universal Time)
338
338
  </div>
339
339
  <script src="../prettify.js"></script>
340
340
  <script>
@@ -1078,7 +1078,7 @@ async function <span class="fstat-no" title="function not covered" >main(</span>
1078
1078
  <div class='footer quiet pad2 space-top1 center small'>
1079
1079
  Code coverage generated by
1080
1080
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1081
- at Thu Jan 13 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
1081
+ at Sat Jan 29 2022 03:50:23 GMT+0000 (Coordinated Universal Time)
1082
1082
  </div>
1083
1083
  <script src="../prettify.js"></script>
1084
1084
  <script>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at Thu Jan 13 2022 16:33:27 GMT+0000 (Coordinated Universal Time)
149
+ at Sat Jan 29 2022 03:50:23 GMT+0000 (Coordinated Universal Time)
150
150
  </div>
151
151
  <script src="prettify.js"></script>
152
152
  <script>