Socket
Socket
Sign inDemoInstall

@aws-cdk/cfnspec

Package Overview
Dependencies
Maintainers
5
Versions
476
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-cdk/cfnspec - npm Package Compare versions

Comparing version 1.1.0 to 1.2.0

.nyc_output/26a6e399-5c12-4cca-a323-1be8bbae1b82.json

2

.nyc_output/processinfo/index.json

@@ -1,1 +0,1 @@

{"processes":{"03605884-d045-46d8-b97a-b5ebf4d9ec58":{"parent":null,"children":[]},"28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25":{"parent":null,"children":[]}},"files":{"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/index.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"],"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/schema/augmentation.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"],"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/schema/base-types.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"],"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/schema/index.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"],"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/schema/property.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"],"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/schema/resource-type.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"],"/codebuild/output/src141194036/src/packages/@aws-cdk/cfnspec/lib/schema/specification.js":["03605884-d045-46d8-b97a-b5ebf4d9ec58","28c61c2e-8c1a-4bcd-bddc-22a5da8bcf25"]},"externalIds":{}}
{"processes":{"26a6e399-5c12-4cca-a323-1be8bbae1b82":{"parent":null,"children":[]},"f7ccc793-bd23-481e-8d0e-81cd916a3afe":{"parent":null,"children":[]}},"files":{"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/index.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"],"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/schema/augmentation.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"],"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/schema/base-types.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"],"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/schema/index.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"],"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/schema/property.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"],"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/schema/resource-type.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"],"/codebuild/output/src267324860/src/packages/@aws-cdk/cfnspec/lib/schema/specification.js":["26a6e399-5c12-4cca-a323-1be8bbae1b82","f7ccc793-bd23-481e-8d0e-81cd916a3afe"]},"externalIds":{}}

@@ -18,2 +18,9 @@ "use strict";

const out = jsonDiff(oldSpec, newSpec);
// Here's the magic output format of this thing
// If a key ends in __added, it got added, and the value
// is the new value.
// If a key ends in __deleted, it got deleted, and the value
// is the old value.
// If a value got changed, the value object will look like:
// { __old: ..., __new: ... }
if (!out) {

@@ -23,2 +30,3 @@ return; // no diff

const resourceTypeAdditions = new Set();
const resourceTypeDeletions = new Set();
const attributeChanges = new Array();

@@ -39,2 +47,8 @@ const propertyChanges = new Array();

line();
if (resourceTypeDeletions.size > 0) {
line('## Removed Resource Types');
line();
resourceTypeDeletions.forEach(type => line(`* ${type}`));
line();
}
line('## Attribute Changes');

@@ -59,3 +73,4 @@ line();

if (deleted) {
throw new Error('Something really bad happened. Resource types should never be deleted: ' + deleted);
resourceTypeDeletions.add(deleted);
return;
}

@@ -94,2 +109,11 @@ pushDownFirstAdditions(update);

}
const deleted = isDeleted(propertyType);
if (deleted) {
const resourceType = deleted.split('.')[0];
if (resourceTypeDeletions.has(resourceType)) {
return; // skipping property for added resource types
}
propertyTypeChanges.push(`* ${deleted} (__removed__)`);
return;
}
if (Object.keys(update).length !== 1 && Object.keys(update)[0] === 'Properties') {

@@ -184,2 +208,2 @@ throw new Error('Unexpected update to a resource type. Expecting only "Properties" to change: ' + propertyType);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy1kaWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlYy1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWdDO0FBQ2hDLDZCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUUzQyxTQUFTLElBQUksQ0FBQyxNQUFjLEVBQUUsRUFBRSxHQUFHLEtBQVk7SUFDN0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdkMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE9BQU8sQ0FBQyxVQUFVO0tBQ25CO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ2hELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztJ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LENBQUM7SUFDakIsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzLWV4dHJhJyk7XG5pbXBvcnQgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXZhci1yZXF1aXJlc1xuY29uc3QganNvbkRpZmYgPSByZXF1aXJlKCdqc29uLWRpZmYnKS5kaWZmO1xuXG5mdW5jdGlvbiBsaW5lKGZtdDogc3RyaW5nID0gJycsIC4uLnBhcmFtOiBhbnlbXSkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZSh1dGlsLmZvcm1hdChmbXQsIC4uLnBhcmFtKSk7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXG4nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgdGl0bGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IG9sZFNwZWNGaWxlID0gcHJvY2Vzcy5hcmd2WzNdO1xuICBjb25zdCBuZXdTcGVjRmlsZSA9IHByb2Nlc3MuYXJndls0XTtcblxuICBjb25zdCBuZXdTcGVjID0gYXdhaXQgZnMucmVhZEpTT04obmV3U3BlY0ZpbGUpO1xuICBjb25zdCBvbGRTcGVjID0gYXdhaXQgZnMucmVhZEpTT04ob2xkU3BlY0ZpbGUpO1xuXG4gIGNvbnN0IG91dCA9IGpzb25EaWZmKG9sZFNwZWMsIG5ld1NwZWMpO1xuXG4gIGlmICghb3V0KSB7XG4gICAgcmV0dXJuOyAvLyBubyBkaWZmXG4gIH1cblxuICBjb25zdCByZXNvdXJjZVR5cGVBZGRpdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgYXR0cmlidXRlQ2hhbmdlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGNvbnN0IHByb3BlcnR5Q2hhbmdlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGNvbnN0IHByb3BlcnR5VHlwZUNoYW5nZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG91dC5SZXNvdXJjZVR5cGVzIHx8IHt9KSkge1xuICAgIGNsYXNzaWZ5UmVzb3VyY2VUeXBlVXBkYXRlKGtleSwgb3V0LlJlc291cmNlVHlwZXNba2V5XSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdXQuUHJvcGVydHlUeXBlcyB8fCB7fSkpIHtcbiAgICBjbGFzc2lmeVByb3BlcnR5VHlwZVVwZGF0ZShrZXksIG91dC5Qcm9wZXJ0eVR5cGVzW2tleV0pO1xuICB9XG5cbiAgbGluZShgIyAke3RpdGxlfSB2JHtuZXdTcGVjLlJlc291cmNlU3BlY2lmaWNhdGlvblZlcnNpb259YCk7XG4gIGxpbmUoKTtcblxuICBsaW5lKCcjIyBOZXcgUmVzb3VyY2UgVHlwZXMnKTtcbiAgbGluZSgpO1xuICByZXNvdXJjZVR5cGVBZGRpdGlvbnMuZm9yRWFjaCh0eXBlID0+IGxpbmUoYCogJHt0eXBlfWApKTtcbiAgbGluZSgpO1xuXG4gIGxpbmUoJyMjIEF0dHJpYnV0ZSBDaGFuZ2VzJyk7XG4gIGxpbmUoKTtcbiAgYXR0cmlidXRlQ2hhbmdlcy5mb3JFYWNoKHggPT4gbGluZSh4KSk7XG4gIGxpbmUoKTtcblxuICBsaW5lKCcjIyBQcm9wZXJ0eSBDaGFuZ2VzJyk7XG4gIGxpbmUoKTtcbiAgcHJvcGVydHlDaGFuZ2VzLmZvckVhY2goeCA9PiBsaW5lKHgpKTtcbiAgbGluZSgpO1xuXG4gIGxpbmUoJyMjIFByb3BlcnR5IFR5cGUgQ2hhbmdlcycpO1xuICBsaW5lKCk7XG4gIHByb3BlcnR5VHlwZUNoYW5nZXMuZm9yRWFjaCh4ID0+IGxpbmUoeCkpO1xuXG4gIGZ1bmN0aW9uIGNsYXNzaWZ5UmVzb3VyY2VUeXBlVXBkYXRlKHJlc291cmNlVHlwZTogc3RyaW5nLCB1cGRhdGU6IGFueSkge1xuICAgIGNvbnN0IGFkZGVkID0gaXNBZGRlZChyZXNvdXJjZVR5cGUpO1xuICAgIGlmIChhZGRlZCkge1xuICAgICAgcmVzb3VyY2VUeXBlQWRkaXRpb25zLmFkZChhZGRlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVsZXRlZCA9IGlzRGVsZXRlZChyZXNvdXJjZVR5cGUpO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NvbWV0aGluZyByZWFsbHkgYmFkIGhhcHBlbmVkLiBSZXNvdXJjZSB0eXBlcyBzaG91bGQgbmV2ZXIgYmUgZGVsZXRlZDogJyArIGRlbGV0ZWQpO1xuICAgIH1cblxuICAgIHB1c2hEb3duRmlyc3RBZGRpdGlvbnModXBkYXRlKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh1cGRhdGUpKSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnUHJvcGVydGllcyc6XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh1cGRhdGUuUHJvcGVydGllcykpIHtcbiAgICAgICAgICBkZXNjcmliZUNoYW5nZXMocmVzb3VyY2VUeXBlLCBwcm9wLCB1cGRhdGUuUHJvcGVydGllc1twcm9wXSkuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgcHJvcGVydHlDaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0F0dHJpYnV0ZXMnOlxuICAgICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgT2JqZWN0LmtleXModXBkYXRlLkF0dHJpYnV0ZXMpKSB7XG4gICAgICAgICAgZGVzY3JpYmVDaGFuZ2VzKHJlc291cmNlVHlwZSwgYXR0ciwgdXBkYXRlLkF0dHJpYnV0ZXNbYXR0cl0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVwZGF0ZSB0byAke3Jlc291cmNlVHlwZX06ICR7a2V5fWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzaWZ5UHJvcGVydHlUeXBlVXBkYXRlKHByb3BlcnR5VHlwZTogc3RyaW5nLCB1cGRhdGU6IGFueSkge1xuICAgIGNvbnN0IGFkZGVkID0gaXNBZGRlZChwcm9wZXJ0eVR5cGUpO1xuICAgIGlmIChhZGRlZCkge1xuICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gYWRkZWQuc3BsaXQoJy4nKVswXTtcbiAgICAgIGlmIChyZXNvdXJjZVR5cGVBZGRpdGlvbnMuaGFzKHJlc291cmNlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBza2lwcGluZyBwcm9wZXJ0eSBmb3IgYWRkZWQgcmVzb3VyY2UgdHlwZXNcbiAgICAgIH1cblxuICAgICAgcHJvcGVydHlUeXBlQ2hhbmdlcy5wdXNoKGAqICR7YWRkZWR9IChfX2FkZGVkX18pYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKHVwZGF0ZSkubGVuZ3RoICE9PSAxICYmIE9iamVjdC5rZXlzKHVwZGF0ZSlbMF0gPT09ICdQcm9wZXJ0aWVzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHVwZGF0ZSB0byBhIHJlc291cmNlIHR5cGUuIEV4cGVjdGluZyBvbmx5IFwiUHJvcGVydGllc1wiIHRvIGNoYW5nZTogJyArIHByb3BlcnR5VHlwZSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHVwZGF0ZS5Qcm9wZXJ0aWVzKSkge1xuICAgICAgZGVzY3JpYmVDaGFuZ2VzKHByb3BlcnR5VHlwZSwgcHJvcCwgdXBkYXRlLlByb3BlcnRpZXNbcHJvcF0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgcHJvcGVydHlUeXBlQ2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRG93bkZpcnN0QWRkaXRpb25zKHVwZGF0ZTogYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgY29uc3QgYWRkZWQgPSBpc0FkZGVkKGtleSk7XG4gICAgICBpZiAoIWFkZGVkKSB7IGNvbnRpbnVlOyB9XG4gICAgICBjb25zdCBkYXRhID0gdXBkYXRlW2tleV07XG4gICAgICBkZWxldGUgdXBkYXRlW2tleV07XG4gICAgICB1cGRhdGVbYWRkZWRdID0ge307XG4gICAgICBmb3IgKGNvbnN0IHN1YktleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgICB1cGRhdGVbYWRkZWRdW2Ake3N1YktleX1fX2FkZGVkYF0gPSBkYXRhW3N1YktleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNEZWxldGVkKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGlzU3VmZml4KGtleSwgJ19fZGVsZXRlZCcpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNBZGRlZChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBpc1N1ZmZpeChrZXksICdfX2FkZGVkJyk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1N1ZmZpeChrZXk6IHN0cmluZywgc3VmZml4OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmRleCA9IGtleS5pbmRleE9mKHN1ZmZpeCk7XG4gICAgcmV0dXJuIGluZGV4ID09PSAtMSA/IHVuZGVmaW5lZCA6IGtleS5zdWJzdHIoMCwgaW5kZXgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVDaGFuZ2VzKG5hbWVzcGFjZTogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGFkZGVkID0gaXNBZGRlZChwcmVmaXgpO1xuICAgIGlmIChhZGRlZCkge1xuICAgICAgY2hhbmdlcy5wdXNoKGAqICR7bmFtZXNwYWNlfSAke2FkZGVkfSAoX19hZGRlZF9fKWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgY29uc3QgZGVsZXRlZCA9IGlzRGVsZXRlZChwcmVmaXgpO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7ZGVsZXRlZH0gKF9fZGVsZXRlZF9fKWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZih1cGRhdGUpICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGNoYW5nZSBmb3IgJHtuYW1lc3BhY2V9LiR7cHJlZml4fSAke0pTT04uc3RyaW5naWZ5KHVwZGF0ZSl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCdfX29sZCcgaW4gdXBkYXRlICYmICdfX25ldycgaW4gdXBkYXRlKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7cHJlZml4fSAoX19jaGFuZ2VkX18pYCk7XG4gICAgICBjaGFuZ2VzLnB1c2goYCAgKiBPbGQ6ICR7dXBkYXRlLl9fb2xkfWApO1xuICAgICAgY2hhbmdlcy5wdXNoKGAgICogTmV3OiAke3VwZGF0ZS5fX25ld31gKTtcbiAgICAgIHJldHVybiBjaGFuZ2VzO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHVwZGF0ZSkpIHtcbiAgICAgIGNoYW5nZXMucHVzaChgKiAke25hbWVzcGFjZX0gJHtwcmVmaXh9IChfX2NoYW5nZWRfXylgKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdXBkYXRlKSB7XG4gICAgICAgIGlmIChlbnRyeS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYXJyYXkgZGlmZiBlbnRyeTogJHtKU09OLnN0cmluZ2lmeShlbnRyeSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChlbnRyeVswXSkge1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICBjaGFuZ2VzLnB1c2goYCAgKiBBZGRlZCAke2VudHJ5WzFdfWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyBhd2t3YXJkIGhhcHBlbmVkOiAke2VudHJ5WzFdfSB3YXMgZGVsZXRlZCBmcm9tICR7bmFtZXNwYWNlfSAke3ByZWZpeH0hYCk7XG4gICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgIC8vIFRoaXMgZW50cnkgaXMgXCJjb250ZXh0XCJcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYXJyYXkgZGlmZiBlbnRyeTogJHtKU09OLnN0cmluZ2lmeShlbnRyeSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBkZXNjcmliZUNoYW5nZXMobmFtZXNwYWNlLCBgJHtwcmVmaXh9LiR7a2V5fWAsIHVwZGF0ZVtrZXldKSkge1xuICAgICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShlLnN0YWNrKTtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ1xcbicpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy1kaWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlYy1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWdDO0FBQ2hDLDZCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUUzQyxTQUFTLElBQUksQ0FBQyxNQUFjLEVBQUUsRUFBRSxHQUFHLEtBQVk7SUFDN0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdkMsK0NBQStDO0lBQy9DLHdEQUF3RDtJQUN4RCxzQkFBc0I7SUFDdEIsNERBQTREO0lBQzVELHNCQUFzQjtJQUN0QiwyREFBMkQ7SUFDM0QsK0JBQStCO0lBRS9CLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixPQUFPLENBQUMsVUFBVTtLQUNuQjtJQUVELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNoRCxNQUFNLHFCQUFxQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQzdDLE1BQU0sZUFBZSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFDNUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBRWhELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1FBQ3RELDBCQUEwQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDekQ7SUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUN0RCwwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLENBQUM7SUFDNUQsSUFBSSxFQUFFLENBQUM7SUFFUCxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM5QixJQUFJLEVBQUUsQ0FBQztJQUNQLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLEVBQUUsQ0FBQztJQUVQLElBQUkscUJBQXFCLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRTtRQUNsQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNsQyxJQUFJLEVBQUUsQ0FBQztRQUNQLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLEVBQUUsQ0FBQztLQUNSO0lBRUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDN0IsSUFBSSxFQUFFLENBQUM7SUFDUCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLEVBQUUsQ0FBQztJQUVQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzVCLElBQUksRUFBRSxDQUFDO0lBQ1AsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLElBQUksRUFBRSxDQUFDO0lBRVAsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDakMsSUFBSSxFQUFFLENBQUM7SUFDUCxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxQyxTQUFTLDBCQUEwQixDQUFDLFlBQW9CLEVBQUUsTUFBVztRQUNuRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxFQUFFO1lBQ1gscUJBQXFCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLE9BQU87U0FDUjtRQUVELHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxRQUFRLEdBQUcsRUFBRTtnQkFDYixLQUFLLFlBQVk7b0JBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTt3QkFDakQsZUFBZSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs0QkFDNUUsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDL0IsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7b0JBQ0QsTUFBTTtnQkFDUixLQUFLLFlBQVk7b0JBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTt3QkFDakQsZUFBZSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs0QkFDNUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNoQyxDQUFDLENBQUMsQ0FBQztxQkFDSjtvQkFDRCxNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFlBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ2pFO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUywwQkFBMEIsQ0FBQyxZQUFvQixFQUFFLE1BQVc7UUFDbkUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLDZDQUE2QzthQUN0RDtZQUVELG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssY0FBYyxDQUFDLENBQUM7WUFDbkQsT0FBTztTQUNSO1FBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxFQUFFO1lBQ1gsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLDZDQUE2QzthQUN0RDtZQUVELG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQztZQUN2RCxPQUFPO1NBQ1I7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksRUFBRTtZQUMvRSxNQUFNLElBQUksS0FBSyxDQUFDLCtFQUErRSxHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQ2pIO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNqRCxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM1RSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxTQUFTLHNCQUFzQixDQUFDLE1BQVc7UUFDekMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUFFLFNBQVM7YUFBRTtZQUN6QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuQixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsR0FBVztRQUM1QixPQUFPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFNBQVMsT0FBTyxDQUFDLEdBQVc7UUFDMUIsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBYztRQUMzQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxTQUFTLGVBQWUsQ0FBQyxTQUFpQixFQUFFLE1BQWMsRUFBRSxNQUFXO1FBQ3JFLE1BQU0sT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLGdCQUFnQixDQUFDLENBQUM7WUFDeEQsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxJQUFJLE9BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsU0FBUyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMzRjtRQUVELElBQUksT0FBTyxJQUFJLE1BQU0sSUFBSSxPQUFPLElBQUksTUFBTSxFQUFFO1lBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksTUFBTSxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekMsT0FBTyxPQUFPLENBQUM7U0FDaEI7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLGdCQUFnQixDQUFDLENBQUM7WUFDdkQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQzFCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUMxRTtnQkFDRCxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDbEIsS0FBSyxHQUFHO3dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN0QyxNQUFNO29CQUNSLEtBQUssR0FBRzt3QkFDTixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixTQUFTLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDdEcsS0FBSyxHQUFHO3dCQUNOLDBCQUEwQjt3QkFDMUIsTUFBTTtvQkFDUjt3QkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDMUU7YUFDRjtTQUNGO2FBQU07WUFDTCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JDLEtBQUssTUFBTSxNQUFNLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDaEYsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDdEI7YUFDRjtTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyA9IHJlcXVpcmUoJ2ZzLWV4dHJhJyk7XG5pbXBvcnQgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXZhci1yZXF1aXJlc1xuY29uc3QganNvbkRpZmYgPSByZXF1aXJlKCdqc29uLWRpZmYnKS5kaWZmO1xuXG5mdW5jdGlvbiBsaW5lKGZtdDogc3RyaW5nID0gJycsIC4uLnBhcmFtOiBhbnlbXSkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZSh1dGlsLmZvcm1hdChmbXQsIC4uLnBhcmFtKSk7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXG4nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgdGl0bGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IG9sZFNwZWNGaWxlID0gcHJvY2Vzcy5hcmd2WzNdO1xuICBjb25zdCBuZXdTcGVjRmlsZSA9IHByb2Nlc3MuYXJndls0XTtcblxuICBjb25zdCBuZXdTcGVjID0gYXdhaXQgZnMucmVhZEpTT04obmV3U3BlY0ZpbGUpO1xuICBjb25zdCBvbGRTcGVjID0gYXdhaXQgZnMucmVhZEpTT04ob2xkU3BlY0ZpbGUpO1xuXG4gIGNvbnN0IG91dCA9IGpzb25EaWZmKG9sZFNwZWMsIG5ld1NwZWMpO1xuXG4gIC8vIEhlcmUncyB0aGUgbWFnaWMgb3V0cHV0IGZvcm1hdCBvZiB0aGlzIHRoaW5nXG4gIC8vIElmIGEga2V5IGVuZHMgaW4gX19hZGRlZCwgaXQgZ290IGFkZGVkLCBhbmQgdGhlIHZhbHVlXG4gIC8vICAgaXMgdGhlIG5ldyB2YWx1ZS5cbiAgLy8gSWYgYSBrZXkgZW5kcyBpbiBfX2RlbGV0ZWQsIGl0IGdvdCBkZWxldGVkLCBhbmQgdGhlIHZhbHVlXG4gIC8vICAgaXMgdGhlIG9sZCB2YWx1ZS5cbiAgLy8gSWYgYSB2YWx1ZSBnb3QgY2hhbmdlZCwgdGhlIHZhbHVlIG9iamVjdCB3aWxsIGxvb2sgbGlrZTpcbiAgLy8gICB7IF9fb2xkOiAuLi4sIF9fbmV3OiAuLi4gfVxuXG4gIGlmICghb3V0KSB7XG4gICAgcmV0dXJuOyAvLyBubyBkaWZmXG4gIH1cblxuICBjb25zdCByZXNvdXJjZVR5cGVBZGRpdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcmVzb3VyY2VUeXBlRGVsZXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGF0dHJpYnV0ZUNoYW5nZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBjb25zdCBwcm9wZXJ0eUNoYW5nZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBjb25zdCBwcm9wZXJ0eVR5cGVDaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdXQuUmVzb3VyY2VUeXBlcyB8fCB7fSkpIHtcbiAgICBjbGFzc2lmeVJlc291cmNlVHlwZVVwZGF0ZShrZXksIG91dC5SZXNvdXJjZVR5cGVzW2tleV0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3V0LlByb3BlcnR5VHlwZXMgfHwge30pKSB7XG4gICAgY2xhc3NpZnlQcm9wZXJ0eVR5cGVVcGRhdGUoa2V5LCBvdXQuUHJvcGVydHlUeXBlc1trZXldKTtcbiAgfVxuXG4gIGxpbmUoYCMgJHt0aXRsZX0gdiR7bmV3U3BlYy5SZXNvdXJjZVNwZWNpZmljYXRpb25WZXJzaW9ufWApO1xuICBsaW5lKCk7XG5cbiAgbGluZSgnIyMgTmV3IFJlc291cmNlIFR5cGVzJyk7XG4gIGxpbmUoKTtcbiAgcmVzb3VyY2VUeXBlQWRkaXRpb25zLmZvckVhY2godHlwZSA9PiBsaW5lKGAqICR7dHlwZX1gKSk7XG4gIGxpbmUoKTtcblxuICBpZiAocmVzb3VyY2VUeXBlRGVsZXRpb25zLnNpemUgPiAwKSB7XG4gICAgbGluZSgnIyMgUmVtb3ZlZCBSZXNvdXJjZSBUeXBlcycpO1xuICAgIGxpbmUoKTtcbiAgICByZXNvdXJjZVR5cGVEZWxldGlvbnMuZm9yRWFjaCh0eXBlID0+IGxpbmUoYCogJHt0eXBlfWApKTtcbiAgICBsaW5lKCk7XG4gIH1cblxuICBsaW5lKCcjIyBBdHRyaWJ1dGUgQ2hhbmdlcycpO1xuICBsaW5lKCk7XG4gIGF0dHJpYnV0ZUNoYW5nZXMuZm9yRWFjaCh4ID0+IGxpbmUoeCkpO1xuICBsaW5lKCk7XG5cbiAgbGluZSgnIyMgUHJvcGVydHkgQ2hhbmdlcycpO1xuICBsaW5lKCk7XG4gIHByb3BlcnR5Q2hhbmdlcy5mb3JFYWNoKHggPT4gbGluZSh4KSk7XG4gIGxpbmUoKTtcblxuICBsaW5lKCcjIyBQcm9wZXJ0eSBUeXBlIENoYW5nZXMnKTtcbiAgbGluZSgpO1xuICBwcm9wZXJ0eVR5cGVDaGFuZ2VzLmZvckVhY2goeCA9PiBsaW5lKHgpKTtcblxuICBmdW5jdGlvbiBjbGFzc2lmeVJlc291cmNlVHlwZVVwZGF0ZShyZXNvdXJjZVR5cGU6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBhZGRlZCA9IGlzQWRkZWQocmVzb3VyY2VUeXBlKTtcbiAgICBpZiAoYWRkZWQpIHtcbiAgICAgIHJlc291cmNlVHlwZUFkZGl0aW9ucy5hZGQoYWRkZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZWQgPSBpc0RlbGV0ZWQocmVzb3VyY2VUeXBlKTtcbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgcmVzb3VyY2VUeXBlRGVsZXRpb25zLmFkZChkZWxldGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwdXNoRG93bkZpcnN0QWRkaXRpb25zKHVwZGF0ZSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJ1Byb3BlcnRpZXMnOlxuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgT2JqZWN0LmtleXModXBkYXRlLlByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgZGVzY3JpYmVDaGFuZ2VzKHJlc291cmNlVHlwZSwgcHJvcCwgdXBkYXRlLlByb3BlcnRpZXNbcHJvcF0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgICAgIHByb3BlcnR5Q2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBdHRyaWJ1dGVzJzpcbiAgICAgICAgZm9yIChjb25zdCBhdHRyIG9mIE9iamVjdC5rZXlzKHVwZGF0ZS5BdHRyaWJ1dGVzKSkge1xuICAgICAgICAgIGRlc2NyaWJlQ2hhbmdlcyhyZXNvdXJjZVR5cGUsIGF0dHIsIHVwZGF0ZS5BdHRyaWJ1dGVzW2F0dHJdKS5mb3JFYWNoKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1cGRhdGUgdG8gJHtyZXNvdXJjZVR5cGV9OiAke2tleX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGFzc2lmeVByb3BlcnR5VHlwZVVwZGF0ZShwcm9wZXJ0eVR5cGU6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBhZGRlZCA9IGlzQWRkZWQocHJvcGVydHlUeXBlKTtcbiAgICBpZiAoYWRkZWQpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGFkZGVkLnNwbGl0KCcuJylbMF07XG4gICAgICBpZiAocmVzb3VyY2VUeXBlQWRkaXRpb25zLmhhcyhyZXNvdXJjZVR5cGUpKSB7XG4gICAgICAgIHJldHVybjsgLy8gc2tpcHBpbmcgcHJvcGVydHkgZm9yIGFkZGVkIHJlc291cmNlIHR5cGVzXG4gICAgICB9XG5cbiAgICAgIHByb3BlcnR5VHlwZUNoYW5nZXMucHVzaChgKiAke2FkZGVkfSAoX19hZGRlZF9fKWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZWQgPSBpc0RlbGV0ZWQocHJvcGVydHlUeXBlKTtcbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gZGVsZXRlZC5zcGxpdCgnLicpWzBdO1xuICAgICAgaWYgKHJlc291cmNlVHlwZURlbGV0aW9ucy5oYXMocmVzb3VyY2VUeXBlKSkge1xuICAgICAgICByZXR1cm47IC8vIHNraXBwaW5nIHByb3BlcnR5IGZvciBhZGRlZCByZXNvdXJjZSB0eXBlc1xuICAgICAgfVxuXG4gICAgICBwcm9wZXJ0eVR5cGVDaGFuZ2VzLnB1c2goYCogJHtkZWxldGVkfSAoX19yZW1vdmVkX18pYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKHVwZGF0ZSkubGVuZ3RoICE9PSAxICYmIE9iamVjdC5rZXlzKHVwZGF0ZSlbMF0gPT09ICdQcm9wZXJ0aWVzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHVwZGF0ZSB0byBhIHJlc291cmNlIHR5cGUuIEV4cGVjdGluZyBvbmx5IFwiUHJvcGVydGllc1wiIHRvIGNoYW5nZTogJyArIHByb3BlcnR5VHlwZSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHVwZGF0ZS5Qcm9wZXJ0aWVzKSkge1xuICAgICAgZGVzY3JpYmVDaGFuZ2VzKHByb3BlcnR5VHlwZSwgcHJvcCwgdXBkYXRlLlByb3BlcnRpZXNbcHJvcF0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgcHJvcGVydHlUeXBlQ2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwdXNoRG93bkZpcnN0QWRkaXRpb25zKHVwZGF0ZTogYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgY29uc3QgYWRkZWQgPSBpc0FkZGVkKGtleSk7XG4gICAgICBpZiAoIWFkZGVkKSB7IGNvbnRpbnVlOyB9XG4gICAgICBjb25zdCBkYXRhID0gdXBkYXRlW2tleV07XG4gICAgICBkZWxldGUgdXBkYXRlW2tleV07XG4gICAgICB1cGRhdGVbYWRkZWRdID0ge307XG4gICAgICBmb3IgKGNvbnN0IHN1YktleSBvZiBPYmplY3Qua2V5cyhkYXRhKSkge1xuICAgICAgICB1cGRhdGVbYWRkZWRdW2Ake3N1YktleX1fX2FkZGVkYF0gPSBkYXRhW3N1YktleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaXNEZWxldGVkKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGlzU3VmZml4KGtleSwgJ19fZGVsZXRlZCcpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNBZGRlZChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBpc1N1ZmZpeChrZXksICdfX2FkZGVkJyk7XG4gIH1cblxuICBmdW5jdGlvbiBpc1N1ZmZpeChrZXk6IHN0cmluZywgc3VmZml4OiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmRleCA9IGtleS5pbmRleE9mKHN1ZmZpeCk7XG4gICAgcmV0dXJuIGluZGV4ID09PSAtMSA/IHVuZGVmaW5lZCA6IGtleS5zdWJzdHIoMCwgaW5kZXgpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVDaGFuZ2VzKG5hbWVzcGFjZTogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGFkZGVkID0gaXNBZGRlZChwcmVmaXgpO1xuICAgIGlmIChhZGRlZCkge1xuICAgICAgY2hhbmdlcy5wdXNoKGAqICR7bmFtZXNwYWNlfSAke2FkZGVkfSAoX19hZGRlZF9fKWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgY29uc3QgZGVsZXRlZCA9IGlzRGVsZXRlZChwcmVmaXgpO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7ZGVsZXRlZH0gKF9fZGVsZXRlZF9fKWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZih1cGRhdGUpICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGNoYW5nZSBmb3IgJHtuYW1lc3BhY2V9LiR7cHJlZml4fSAke0pTT04uc3RyaW5naWZ5KHVwZGF0ZSl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCdfX29sZCcgaW4gdXBkYXRlICYmICdfX25ldycgaW4gdXBkYXRlKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7cHJlZml4fSAoX19jaGFuZ2VkX18pYCk7XG4gICAgICBjaGFuZ2VzLnB1c2goYCAgKiBPbGQ6ICR7dXBkYXRlLl9fb2xkfWApO1xuICAgICAgY2hhbmdlcy5wdXNoKGAgICogTmV3OiAke3VwZGF0ZS5fX25ld31gKTtcbiAgICAgIHJldHVybiBjaGFuZ2VzO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHVwZGF0ZSkpIHtcbiAgICAgIGNoYW5nZXMucHVzaChgKiAke25hbWVzcGFjZX0gJHtwcmVmaXh9IChfX2NoYW5nZWRfXylgKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdXBkYXRlKSB7XG4gICAgICAgIGlmIChlbnRyeS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYXJyYXkgZGlmZiBlbnRyeTogJHtKU09OLnN0cmluZ2lmeShlbnRyeSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChlbnRyeVswXSkge1xuICAgICAgICBjYXNlICcrJzpcbiAgICAgICAgICBjaGFuZ2VzLnB1c2goYCAgKiBBZGRlZCAke2VudHJ5WzFdfWApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyBhd2t3YXJkIGhhcHBlbmVkOiAke2VudHJ5WzFdfSB3YXMgZGVsZXRlZCBmcm9tICR7bmFtZXNwYWNlfSAke3ByZWZpeH0hYCk7XG4gICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgIC8vIFRoaXMgZW50cnkgaXMgXCJjb250ZXh0XCJcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYXJyYXkgZGlmZiBlbnRyeTogJHtKU09OLnN0cmluZ2lmeShlbnRyeSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBkZXNjcmliZUNoYW5nZXMobmFtZXNwYWNlLCBgJHtwcmVmaXh9LiR7a2V5fWAsIHVwZGF0ZVtrZXldKSkge1xuICAgICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShlLnN0YWNrKTtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ1xcbicpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==

@@ -0,2 +1,82 @@

# CloudFormation Resource Specification v4.2.0
## New Resource Types
* AWS::Backup::BackupPlan
* AWS::Backup::BackupSelection
* AWS::Backup::BackupVault
* AWS::CloudWatch::AnomalyDetector
* AWS::Config::RemediationConfiguration
* AWS::MediaLive::Channel
* AWS::MediaLive::Input
* AWS::MediaLive::InputSecurityGroup
* AWS::SecurityHub::Hub
* AWS::ServiceCatalog::StackSetConstraint
## Attribute Changes
## Property Changes
* AWS::Amplify::App Repository.Required (__changed__)
* Old: true
* New: false
* AWS::ApiGatewayV2::Api Tags (__added__)
* AWS::ApiGatewayV2::DomainName Tags (__added__)
* AWS::ApiGatewayV2::Stage Tags (__added__)
* AWS::AppMesh::Mesh Tags.ItemType (__changed__)
* Old: TagRef
* New: Tag
* AWS::AppMesh::Route Tags.ItemType (__changed__)
* Old: TagRef
* New: Tag
* AWS::AppMesh::VirtualNode Tags.ItemType (__changed__)
* Old: TagRef
* New: Tag
* AWS::AppMesh::VirtualRouter Tags.ItemType (__changed__)
* Old: TagRef
* New: Tag
* AWS::AppMesh::VirtualService Tags.ItemType (__changed__)
* Old: TagRef
* New: Tag
* AWS::AppStream::Fleet IdleDisconnectTimeoutInSeconds (__added__)
* AWS::IoTAnalytics::Channel ChannelStorage (__added__)
* AWS::IoTAnalytics::Datastore DatastoreStorage (__added__)
* AWS::ServiceCatalog::CloudFormationProvisionedProduct ProvisioningPreferences (__added__)
## Property Type Changes
* AWS::Amplify::App.Token (__removed__)
* AWS::AppMesh::Mesh.TagRef (__removed__)
* AWS::AppMesh::Route.TagRef (__removed__)
* AWS::AppMesh::VirtualNode.TagRef (__removed__)
* AWS::AppMesh::VirtualRouter.TagRef (__removed__)
* AWS::AppMesh::VirtualService.TagRef (__removed__)
* AWS::AppMesh::VirtualNode.AwsCloudMapInstanceAttribute (__added__)
* AWS::AppMesh::VirtualNode.AwsCloudMapServiceDiscovery (__added__)
* AWS::IoTAnalytics::Channel.ChannelStorage (__added__)
* AWS::IoTAnalytics::Channel.CustomerManagedS3 (__added__)
* AWS::IoTAnalytics::Channel.ServiceManagedS3 (__added__)
* AWS::IoTAnalytics::Datastore.CustomerManagedS3 (__added__)
* AWS::IoTAnalytics::Datastore.DatastoreStorage (__added__)
* AWS::IoTAnalytics::Datastore.ServiceManagedS3 (__added__)
* AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningPreferences (__added__)
* AWS::AppMesh::VirtualNode.ServiceDiscovery AWSCloudMap (__added__)
* AWS::EC2::LaunchTemplate.SpotOptions BlockDurationMinutes (__added__)
* AWS::EC2::LaunchTemplate.SpotOptions ValidUntil (__added__)
* AWS::Route53Resolver::ResolverRule.TargetAddress Port.Required (__changed__)
* Old: true
* New: false
* Tag Key.Documentation (__changed__)
* Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-tag.html#cfn-amplify-branch-tag-key
* New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-tag.html#cfn-transfer-user-tag-key
* Tag Value.Documentation (__changed__)
* Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplify-branch-tag.html#cfn-amplify-branch-tag-value
* New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-tag.html#cfn-transfer-user-tag-value
* Tag Value.Required (__changed__)
* Old: true
* New: false
# Serverless Application Model (SAM) Resource Specification v2016-10-31

@@ -3,0 +83,0 @@

{
"name": "@aws-cdk/cfnspec",
"description": "The CloudFormation resource specification used by @aws-cdk packages",
"version": "1.1.0",
"version": "1.2.0",
"scripts": {

@@ -6,0 +6,0 @@ "update": "cdk-build && /bin/bash build-tools/update.sh",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc