cdk-common 2.0.322 → 2.0.324

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.
@@ -36,8 +36,7 @@ function replaceIncompleteTypes(spec) {
36
36
  function dropTypelessAttributes(spec) {
37
37
  const resourceTypes = spec.ResourceTypes;
38
38
  Object.values(resourceTypes).forEach((resourceType) => {
39
- var _a;
40
- const attributes = (_a = resourceType.Attributes) !== null && _a !== void 0 ? _a : {};
39
+ const attributes = resourceType.Attributes ?? {};
41
40
  Object.keys(attributes).forEach((attrKey) => {
42
41
  const attrVal = attributes[attrKey];
43
42
  if (Object.keys(attrVal).length === 0) {
@@ -68,4 +67,4 @@ function normalize(spec) {
68
67
  }
69
68
  }
70
69
  exports.normalize = normalize;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzc2FnZS1zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWFzc2FnZS1zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdDQUFnQztBQUNoQyx5Q0FBaUQ7QUFFakQsU0FBZ0IsV0FBVyxDQUFDLElBQTBCO0lBQ3BELDhCQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFKRCxrQ0FJQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQTBCO0lBQ3hELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUNuRSxJQUFJLENBQUMsWUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7ZUFDakMsQ0FBQyxZQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDO2VBQ3hDLENBQUMsWUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztlQUNwQyxDQUFDLFlBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksb0RBQW9ELENBQUMsQ0FBQztZQUV6RSxVQUErQyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDbEU7S0FDRjtBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQTBCO0lBQ3hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTs7UUFDcEQsTUFBTSxVQUFVLFNBQUcsWUFBWSxDQUFDLFVBQVUsbUNBQUksRUFBRSxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNyQyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLElBQTBCO0lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUMzRDtJQUNELE9BQU8sSUFBSSxDQUFDO0lBRVosU0FBUyxnQkFBZ0IsQ0FBSSxPQUE4QjtRQUN6RCxNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUM7QUFkRCw4QkFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNjaGVtYSB9IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgeyBkZXRlY3RTY3J1dGlueVR5cGVzIH0gZnJvbSAnLi9zY3J1dGlueSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXNzYWdlU3BlYyhzcGVjOiBzY2hlbWEuU3BlY2lmaWNhdGlvbikge1xuICBkZXRlY3RTY3J1dGlueVR5cGVzKHNwZWMpO1xuICByZXBsYWNlSW5jb21wbGV0ZVR5cGVzKHNwZWMpO1xuICBkcm9wVHlwZWxlc3NBdHRyaWJ1dGVzKHNwZWMpO1xufVxuXG4vKipcbiAqIEZpeCBpbmNvbXBsZXRlIHR5cGUgZGVmaW5pdGlvbnMgaW4gUHJvcGVydHlUeXBlc1xuICpcbiAqIFNvbWUgdXNlci1kZWZpbmVkIHR5cGVzIGFyZSBkZWZpbmVkIHRvIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzLCBhbmQgbm90XG4gKiBiZSBhIGNvbGxlY3Rpb24gb2Ygb3RoZXIgdHlwZXMgZWl0aGVyLiBUaGV5IGhhdmUgbm8gZGVmaW5pdGlvbiBhdCBhbGwuXG4gKlxuICogQWRkIGEgcHJvcGVydHkgb2JqZWN0IHR5cGUgd2l0aCBlbXB0eSBwcm9wZXJ0aWVzLlxuICovXG5mdW5jdGlvbiByZXBsYWNlSW5jb21wbGV0ZVR5cGVzKHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uKSB7XG4gIGZvciAoY29uc3QgW25hbWUsIGRlZmluaXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHNwZWMuUHJvcGVydHlUeXBlcykpIHtcbiAgICBpZiAoIXNjaGVtYS5pc1JlY29yZFR5cGUoZGVmaW5pdGlvbilcbiAgICAmJiAhc2NoZW1hLmlzQ29sbGVjdGlvblByb3BlcnR5KGRlZmluaXRpb24pXG4gICAgJiYgIXNjaGVtYS5pc1NjYWxhclByb3BlcnR5KGRlZmluaXRpb24pXG4gICAgJiYgIXNjaGVtYS5pc1ByaW1pdGl2ZVByb3BlcnR5KGRlZmluaXRpb24pKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFske25hbWV9XSBJbmNvbXBsZXRlIHR5cGUsIGFkZGluZyBlbXB0eSBcIlByb3BlcnRpZXNcIiBmaWVsZGApO1xuXG4gICAgICAoZGVmaW5pdGlvbiBhcyB1bmtub3duIGFzIHNjaGVtYS5SZWNvcmRQcm9wZXJ0eSkuUHJvcGVydGllcyA9IHt9O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERyb3AgQXR0cmlidXRlcyBzcGVjaWZpZWQgd2l0aCB0aGUgZGlmZmVyZW50IFJlc291cmNlVHlwZXMgdGhhdCBoYXZlXG4gKiBubyB0eXBlIHNwZWNpZmllZC5cbiAqL1xuZnVuY3Rpb24gZHJvcFR5cGVsZXNzQXR0cmlidXRlcyhzcGVjOiBzY2hlbWEuU3BlY2lmaWNhdGlvbikge1xuICBjb25zdCByZXNvdXJjZVR5cGVzID0gc3BlYy5SZXNvdXJjZVR5cGVzO1xuICBPYmplY3QudmFsdWVzKHJlc291cmNlVHlwZXMpLmZvckVhY2goKHJlc291cmNlVHlwZSkgPT4ge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSByZXNvdXJjZVR5cGUuQXR0cmlidXRlcyA/PyB7fTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChhdHRyS2V5KSA9PiB7XG4gICAgICBjb25zdCBhdHRyVmFsID0gYXR0cmlidXRlc1thdHRyS2V5XTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhhdHRyVmFsKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGVsZXRlIGF0dHJpYnV0ZXNbYXR0cktleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwcm92aWRlZCBzcGVjaWZpY2F0aW9uIHNvIHRoYXQgYGBSZXNvdXJjZVR5cGVzYGAgYW5kIGBgUHJvcGVydHlUeXBlc2BgIGFyZSBsaXN0ZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLlxuICpcbiAqIEBwYXJhbSBzcGVjIGFuIEFXUyBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZSBTcGVjaWZpY2F0aW9uIGRvY3VtZW50LlxuICpcbiAqIEByZXR1cm5zIGBgc3BlY2BgLCBhZnRlciBoYXZpbmcgc29ydGVkIHRoZSBgYFJlc291cmNlVHlwZXNgYCBhbmQgYGBQcm9wZXJ0eVR5cGVzYGAgc2VjdGlvbnMgYWxwaGFiZXRpY2FsbHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoc3BlYzogc2NoZW1hLlNwZWNpZmljYXRpb24pOiBzY2hlbWEuU3BlY2lmaWNhdGlvbiB7XG4gIHNwZWMuUmVzb3VyY2VUeXBlcyA9IG5vcm1hbGl6ZVNlY3Rpb24oc3BlYy5SZXNvdXJjZVR5cGVzKTtcbiAgaWYgKHNwZWMuUHJvcGVydHlUeXBlcykge1xuICAgIHNwZWMuUHJvcGVydHlUeXBlcyA9IG5vcm1hbGl6ZVNlY3Rpb24oc3BlYy5Qcm9wZXJ0eVR5cGVzKTtcbiAgfVxuICByZXR1cm4gc3BlYztcblxuICBmdW5jdGlvbiBub3JtYWxpemVTZWN0aW9uPFQ+KHNlY3Rpb246IHsgW25hbWU6IHN0cmluZ106IFQgfSk6IHsgW25hbWU6IHN0cmluZ106IFQgfSB7XG4gICAgY29uc3QgcmVzdWx0OiB7IFtuYW1lOiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzZWN0aW9uKS5zb3J0KCkpIHtcbiAgICAgIHJlc3VsdFtrZXldID0gc2VjdGlvbltrZXldO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzc2FnZS1zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWFzc2FnZS1zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdDQUFnQztBQUNoQyx5Q0FBaUQ7QUFFakQsU0FBZ0IsV0FBVyxDQUFDLElBQTBCO0lBQ3BELDhCQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFKRCxrQ0FJQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQTBCO0lBQ3hELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUNuRSxJQUFJLENBQUMsWUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7ZUFDakMsQ0FBQyxZQUFNLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDO2VBQ3hDLENBQUMsWUFBTSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQztlQUNwQyxDQUFDLFlBQU0sQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMxQyxzQ0FBc0M7WUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksb0RBQW9ELENBQUMsQ0FBQztZQUV6RSxVQUErQyxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDbEU7S0FDRjtBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQTBCO0lBQ3hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtRQUNwRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzFDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDckMsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxJQUEwQjtJQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7S0FDM0Q7SUFDRCxPQUFPLElBQUksQ0FBQztJQUVaLFNBQVMsZ0JBQWdCLENBQUksT0FBOEI7UUFDekQsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztRQUN6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7QUFDSCxDQUFDO0FBZEQsOEJBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzY2hlbWEgfSBmcm9tICcuLi9saWInO1xuaW1wb3J0IHsgZGV0ZWN0U2NydXRpbnlUeXBlcyB9IGZyb20gJy4vc2NydXRpbnknO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFzc2FnZVNwZWMoc3BlYzogc2NoZW1hLlNwZWNpZmljYXRpb24pIHtcbiAgZGV0ZWN0U2NydXRpbnlUeXBlcyhzcGVjKTtcbiAgcmVwbGFjZUluY29tcGxldGVUeXBlcyhzcGVjKTtcbiAgZHJvcFR5cGVsZXNzQXR0cmlidXRlcyhzcGVjKTtcbn1cblxuLyoqXG4gKiBGaXggaW5jb21wbGV0ZSB0eXBlIGRlZmluaXRpb25zIGluIFByb3BlcnR5VHlwZXNcbiAqXG4gKiBTb21lIHVzZXItZGVmaW5lZCB0eXBlcyBhcmUgZGVmaW5lZCB0byBub3QgaGF2ZSBhbnkgcHJvcGVydGllcywgYW5kIG5vdFxuICogYmUgYSBjb2xsZWN0aW9uIG9mIG90aGVyIHR5cGVzIGVpdGhlci4gVGhleSBoYXZlIG5vIGRlZmluaXRpb24gYXQgYWxsLlxuICpcbiAqIEFkZCBhIHByb3BlcnR5IG9iamVjdCB0eXBlIHdpdGggZW1wdHkgcHJvcGVydGllcy5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUluY29tcGxldGVUeXBlcyhzcGVjOiBzY2hlbWEuU3BlY2lmaWNhdGlvbikge1xuICBmb3IgKGNvbnN0IFtuYW1lLCBkZWZpbml0aW9uXSBvZiBPYmplY3QuZW50cmllcyhzcGVjLlByb3BlcnR5VHlwZXMpKSB7XG4gICAgaWYgKCFzY2hlbWEuaXNSZWNvcmRUeXBlKGRlZmluaXRpb24pXG4gICAgJiYgIXNjaGVtYS5pc0NvbGxlY3Rpb25Qcm9wZXJ0eShkZWZpbml0aW9uKVxuICAgICYmICFzY2hlbWEuaXNTY2FsYXJQcm9wZXJ0eShkZWZpbml0aW9uKVxuICAgICYmICFzY2hlbWEuaXNQcmltaXRpdmVQcm9wZXJ0eShkZWZpbml0aW9uKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKGBbJHtuYW1lfV0gSW5jb21wbGV0ZSB0eXBlLCBhZGRpbmcgZW1wdHkgXCJQcm9wZXJ0aWVzXCIgZmllbGRgKTtcblxuICAgICAgKGRlZmluaXRpb24gYXMgdW5rbm93biBhcyBzY2hlbWEuUmVjb3JkUHJvcGVydHkpLlByb3BlcnRpZXMgPSB7fTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEcm9wIEF0dHJpYnV0ZXMgc3BlY2lmaWVkIHdpdGggdGhlIGRpZmZlcmVudCBSZXNvdXJjZVR5cGVzIHRoYXQgaGF2ZVxuICogbm8gdHlwZSBzcGVjaWZpZWQuXG4gKi9cbmZ1bmN0aW9uIGRyb3BUeXBlbGVzc0F0dHJpYnV0ZXMoc3BlYzogc2NoZW1hLlNwZWNpZmljYXRpb24pIHtcbiAgY29uc3QgcmVzb3VyY2VUeXBlcyA9IHNwZWMuUmVzb3VyY2VUeXBlcztcbiAgT2JqZWN0LnZhbHVlcyhyZXNvdXJjZVR5cGVzKS5mb3JFYWNoKChyZXNvdXJjZVR5cGUpID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gcmVzb3VyY2VUeXBlLkF0dHJpYnV0ZXMgPz8ge307XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaCgoYXR0cktleSkgPT4ge1xuICAgICAgY29uc3QgYXR0clZhbCA9IGF0dHJpYnV0ZXNbYXR0cktleV07XG4gICAgICBpZiAoT2JqZWN0LmtleXMoYXR0clZhbCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW2F0dHJLZXldO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcHJvdmlkZWQgc3BlY2lmaWNhdGlvbiBzbyB0aGF0IGBgUmVzb3VyY2VUeXBlc2BgIGFuZCBgYFByb3BlcnR5VHlwZXNgYCBhcmUgbGlzdGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci5cbiAqXG4gKiBAcGFyYW0gc3BlYyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2UgU3BlY2lmaWNhdGlvbiBkb2N1bWVudC5cbiAqXG4gKiBAcmV0dXJucyBgYHNwZWNgYCwgYWZ0ZXIgaGF2aW5nIHNvcnRlZCB0aGUgYGBSZXNvdXJjZVR5cGVzYGAgYW5kIGBgUHJvcGVydHlUeXBlc2BgIHNlY3Rpb25zIGFscGhhYmV0aWNhbGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uKTogc2NoZW1hLlNwZWNpZmljYXRpb24ge1xuICBzcGVjLlJlc291cmNlVHlwZXMgPSBub3JtYWxpemVTZWN0aW9uKHNwZWMuUmVzb3VyY2VUeXBlcyk7XG4gIGlmIChzcGVjLlByb3BlcnR5VHlwZXMpIHtcbiAgICBzcGVjLlByb3BlcnR5VHlwZXMgPSBub3JtYWxpemVTZWN0aW9uKHNwZWMuUHJvcGVydHlUeXBlcyk7XG4gIH1cbiAgcmV0dXJuIHNwZWM7XG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplU2VjdGlvbjxUPihzZWN0aW9uOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0pOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0ge1xuICAgIGNvbnN0IHJlc3VsdDogeyBbbmFtZTogc3RyaW5nXTogVCB9ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2VjdGlvbikuc29ydCgpKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHNlY3Rpb25ba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -121,13 +121,12 @@ function merge(target, fragment, jsonPath) {
121
121
  }
122
122
  }
123
123
  function patch(target, fragment, log) {
124
- var _a;
125
124
  if (!fragment) {
126
125
  return;
127
126
  }
128
127
  const patches = findPatches(target, fragment);
129
128
  for (const p of patches) {
130
- log((_a = p.description) !== null && _a !== void 0 ? _a : '');
129
+ log(p.description ?? '');
131
130
  try {
132
131
  fastJsonPatch.applyPatch(target, p.operations);
133
132
  }
@@ -239,4 +238,4 @@ if (require.main === module) {
239
238
  console.error(e.message);
240
239
  });
241
240
  }
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGF0Y2gtc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBOzs7O0dBSUc7QUFDSCw2QkFBNkI7QUFDN0IsaURBQWlEO0FBQ2pELCtCQUErQjtBQUUvQixpRUFBaUU7QUFDakUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBYy9CLEtBQUssVUFBVSxZQUFZLENBQUMsZUFBdUIsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUNwRixNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFFekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixrQkFBa0I7U0FDbkI7YUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHO2dCQUNiLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO2FBQ3ZELENBQUM7U0FDSDthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FB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LENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO0lBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNwQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNyQixzQ0FBc0M7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBBcHBseSBhIEpTT04gcGF0Y2ggc2V0IGludG8gdGhlIGdpdmVuIHRhcmdldCBmaWxlXG4gKlxuICogVGhlIHNvdXJjZXMgY2FuIGJlIHRha2VuIGZyb20gb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMuXG4gKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmYXN0SnNvblBhdGNoIGZyb20gJ2Zhc3QtanNvbi1wYXRjaCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5jb25zdCBzb3J0SnNvbiA9IHJlcXVpcmUoJ3NvcnQtanNvbicpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgUGF0Y2hTZXQgPSBSZWNvcmQ8c3RyaW5nLCBQYXRjaFNldEVsZW1lbnQ+O1xuXG5leHBvcnQgdHlwZSBQYXRjaFNldEVsZW1lbnQgPVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2ZyYWdtZW50JzsgcmVhZG9ubHkgZGF0YTogYW55IH1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdwYXRjaCc7IHJlYWRvbmx5IGRhdGE6IGFueSB9XG4gIHwgeyByZWFkb25seSB0eXBlOiAnc2V0JzsgcmVhZG9ubHkgc291cmNlczogUGF0Y2hTZXQgfVxuICA7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUGF0Y2hTZXQoc291cmNlRGlyZWN0b3J5OiBzdHJpbmcsIHJlbGF0aXZlVG8gPSBwcm9jZXNzLmN3ZCgpKTogUHJvbWlzZTxQYXRjaFNldD4ge1xuICBjb25zdCByZXQ6IFBhdGNoU2V0ID0ge307XG5cbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHNvdXJjZURpcmVjdG9yeSk7XG4gIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgIGNvbnN0IGZ1bGxGaWxlID0gcGF0aC5qb2luKHNvdXJjZURpcmVjdG9yeSwgZmlsZSk7XG4gICAgY29uc3QgcmVsTmFtZSA9IHBhdGgucmVsYXRpdmUocmVsYXRpdmVUbywgZnVsbEZpbGUpO1xuXG4gICAgaWYgKGZpbGUuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAvLyBOb3RoaW5nLCBpZ25vcmVcbiAgICB9IGVsc2UgaWYgKChhd2FpdCBmcy5zdGF0KGZ1bGxGaWxlKSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcmV0W3JlbE5hbWVdID0ge1xuICAgICAgICB0eXBlOiAnc2V0JyxcbiAgICAgICAgc291cmNlczogYXdhaXQgbG9hZFBhdGNoU2V0KGZ1bGxGaWxlLCBzb3VyY2VEaXJlY3RvcnkpLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGZpbGUuZW5kc1dpdGgoJy5qc29uJykpIHtcbiAgICAgIHJldFtyZWxOYW1lXSA9IHtcbiAgICAgICAgdHlwZTogZmlsZS5pbmRleE9mKCdwYXRjaCcpID09PSAtMSA/ICdmcmFnbWVudCcgOiAncGF0Y2gnLFxuICAgICAgICBkYXRhOiBhd2FpdCBmcy5yZWFkSnNvbihmdWxsRmlsZSksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZVBhdGNoU2V0KHNvdXJjZXM6IFBhdGNoU2V0LCBvcHRpb25zOiBQYXRjaE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB0YXJnZXRPYmplY3Q6IGFueSA9IHt9O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHNvdXJjZXMpLnNvcnQoKSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlc1trZXldO1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdmcmFnbWVudCc6XG4gICAgICAgIGxvZyhrZXkpO1xuICAgICAgICBtZXJnZSh0YXJnZXRPYmplY3QsIHZhbHVlLmRhdGEsIFtdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwYXRjaCc6XG4gICAgICAgIHBhdGNoKHRhcmdldE9iamVjdCwgdmFsdWUuZGF0YSwgKG0pID0+IGxvZyhgJHtrZXl9OiAke219YCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NldCc6XG4gICAgICAgIGNvbnN0IGV2YWx1YXRlZCA9IGV2YWx1YXRlUGF0Y2hTZXQodmFsdWUuc291cmNlcywgb3B0aW9ucyk7XG4gICAgICAgIGxvZyhrZXkpO1xuICAgICAgICBtZXJnZSh0YXJnZXRPYmplY3QsIGV2YWx1YXRlZCwgW10pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0T2JqZWN0O1xuXG4gIGZ1bmN0aW9uIGxvZyh4OiBzdHJpbmcpIHtcbiAgICBpZiAoIW9wdGlvbnMucXVpZXQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZyh4KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIGEgcGF0Y2ggc2V0IGZyb20gYSBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5UGF0Y2hTZXQoc291cmNlRGlyZWN0b3J5OiBzdHJpbmcsIG9wdGlvbnM6IFBhdGNoT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHBhdGNoZXMgPSBhd2FpdCBsb2FkUGF0Y2hTZXQoc291cmNlRGlyZWN0b3J5KTtcbiAgcmV0dXJuIGV2YWx1YXRlUGF0Y2hTZXQocGF0Y2hlcywgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogTG9hZCBhIHBhdGNoIHNldCBhbmQgd3JpdGUgaXQgb3V0IHRvIGEgZmlsZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlBbmRXcml0ZSh0YXJnZXRGaWxlOiBzdHJpbmcsIHNvdXJjZURpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBQYXRjaE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBtb2RlbCA9IGF3YWl0IGFwcGx5UGF0Y2hTZXQoc291cmNlRGlyZWN0b3J5LCBvcHRpb25zKTtcbiAgYXdhaXQgd3JpdGVTb3J0ZWQodGFyZ2V0RmlsZSwgbW9kZWwpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVTb3J0ZWQodGFyZ2V0RmlsZTogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgYXdhaXQgZnMubWtkaXJwKHBhdGguZGlybmFtZSh0YXJnZXRGaWxlKSk7XG4gIGF3YWl0IGZzLndyaXRlSnNvbih0YXJnZXRGaWxlLCBzb3J0SnNvbihkYXRhKSwgeyBzcGFjZXM6IDIgfSk7XG59XG5cbmZ1bmN0aW9uIHByaW50U29ydGVkKGRhdGE6IGFueSkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShzb3J0SnNvbihkYXRhKSwgdW5kZWZpbmVkLCAyKSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlKHRhcmdldDogYW55LCBmcmFnbWVudDogYW55LCBqc29uUGF0aDogc3RyaW5nW10pIHtcbiAgaWYgKCFmcmFnbWVudCkgeyByZXR1cm47IH1cbiAgaWYgKCF0YXJnZXQgfHwgdHlwZW9mIHRhcmdldCAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBvYmplY3QsIGZvdW5kOiAnJHt0YXJnZXR9JyBhdCAnJC4ke2pzb25QYXRoLmpvaW4oJy4nKX0nYCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmcmFnbWVudCkpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJyQnKSkgeyBjb250aW51ZTsgfVxuXG4gICAgaWYgKGtleSBpbiB0YXJnZXQpIHtcbiAgICAgIGNvbnN0IHNwZWNWYWwgPSB0YXJnZXRba2V5XTtcbiAgICAgIGNvbnN0IGZyYWdWYWwgPSBmcmFnbWVudFtrZXldO1xuICAgICAgaWYgKHR5cGVvZiBzcGVjVmFsICE9PSB0eXBlb2YgZnJhZ1ZhbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHRlZCB0byBtZXJnZSAke0pTT04uc3RyaW5naWZ5KGZyYWdWYWwpfSBpbnRvIGluY29tcGF0aWJsZSAke0pTT04uc3RyaW5naWZ5KHNwZWNWYWwpfSBhdCBwYXRoICR7anNvblBhdGguam9pbignLycpfS8ke2tleX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChzcGVjVmFsID09IGZyYWdWYWwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHNwZWNWYWwgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uZmxpY3Qgd2hlbiBhdHRlbXB0aW5nIHRvIG1lcmdlICR7SlNPTi5zdHJpbmdpZnkoZnJhZ1ZhbCl9IGludG8gJHtKU09OLnN0cmluZ2lmeShzcGVjVmFsKX0gYXQgcGF0aCAke2pzb25QYXRoLmpvaW4oJy8nKX0vJHtrZXl9YCk7XG4gICAgICB9XG4gICAgICBtZXJnZShzcGVjVmFsLCBmcmFnVmFsLCBbLi4uanNvblBhdGgsIGtleV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRba2V5XSA9IGZyYWdtZW50W2tleV07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoKHRhcmdldDogYW55LCBmcmFnbWVudDogYW55LCBsb2c6ICh4OiBzdHJpbmcpID0+IHZvaWQpIHtcbiAgaWYgKCFmcmFnbWVudCkgeyByZXR1cm47IH1cblxuICBjb25zdCBwYXRjaGVzID0gZmluZFBhdGNoZXModGFyZ2V0LCBmcmFnbWVudCk7XG4gIGZvciAoY29uc3QgcCBvZiBwYXRjaGVzKSB7XG4gICAgbG9nKHAuZGVzY3JpcHRpb24gPz8gJycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZhc3RKc29uUGF0Y2guYXBwbHlQYXRjaCh0YXJnZXQsIHAub3BlcmF0aW9ucyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBlcnJvciBhcHBseWluZyBwYXRjaDogJHtKU09OLnN0cmluZ2lmeShwLCB1bmRlZmluZWQsIDIpfTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBQYXRjaCB7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBvcGVyYXRpb25zOiBPcGVyYXRpb25bXTtcbn1cblxudHlwZSBPcGVyYXRpb24gPVxuICB8IHsgcmVhZG9ubHkgb3A6ICdhZGQnOyByZWFkb25seSBwYXRoOiBzdHJpbmc7IHJlYWRvbmx5IHZhbHVlOiBhbnkgfVxuICB8IHsgcmVhZG9ubHkgb3A6ICdyZW1vdmUnOyByZWFkb25seSBwYXRoOiBzdHJpbmcgfVxuICB8IHsgcmVhZG9ubHkgb3A6ICdyZXBsYWNlJzsgcmVhZG9ubHkgcGF0aDogc3RyaW5nOyByZWFkb25seSB2YWx1ZTogYW55IH1cbiAgfCB7IHJlYWRvbmx5IG9wOiAnY29weSc7IHJlYWRvbmx5IHBhdGg6IHN0cmluZzsgcmVhZG9ubHkgZnJvbTogc3RyaW5nIH1cbiAgfCB7IHJlYWRvbmx5IG9wOiAnbW92ZSc7IHJlYWRvbmx5IHBhdGg6IHN0cmluZzsgcmVhZG9ubHkgZnJvbTogc3RyaW5nIH1cbiAgfCB7IHJlYWRvbmx5IG9wOiAndGVzdCc7IHJlYWRvbmx5IHBhdGg6IHN0cmluZzsgcmVhZG9ubHkgdmFsdWU6IGFueSB9XG4gIDtcblxuLyoqXG4gKiBGaW5kIHRoZSBzZXRzIG9mIHBhdGNoZXMgdG8gYXBwbHkgaW4gYSBkb2N1bWVudFxuICpcbiAqIEFkanVzdHMgcGF0aHMgdG8gYmUgcm9vdC1yZWxhdGl2ZSwgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8gaGF2ZSBwYXRoc1xuICogcG9pbnQgb3V0c2lkZSB0aGUgcGF0Y2ggc2NvcGUuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQYXRjaGVzKGRhdGE6IGFueSwgcGF0Y2hTb3VyY2U6IGFueSk6IFBhdGNoW10ge1xuICBjb25zdCByZXQ6IFBhdGNoW10gPSBbXTtcbiAgcmVjdXJzZShkYXRhLCBwYXRjaFNvdXJjZSwgW10pO1xuICByZXR1cm4gcmV0O1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2UoYWN0dWFsRGF0YTogYW55LCBmcmFnbWVudDogYW55LCBqc29uUGF0aDogc3RyaW5nW10pIHtcbiAgICBpZiAoIWZyYWdtZW50KSB7IHJldHVybjsgfVxuXG4gICAgaWYgKCdwYXRjaCcgaW4gZnJhZ21lbnQpIHtcbiAgICAgIGNvbnN0IHAgPSBmcmFnbWVudC5wYXRjaDtcbiAgICAgIGlmICghcC5vcGVyYXRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0Y2ggbmVlZHMgJ29wZXJhdGlvbnMnIGtleSwgZ290OiAke0pTT04uc3RyaW5naWZ5KHApfWApO1xuICAgICAgfVxuICAgICAgcmV0LnB1c2goe1xuICAgICAgICBkZXNjcmlwdGlvbjogcC5kZXNjcmlwdGlvbixcbiAgICAgICAgb3BlcmF0aW9uczogcC5vcGVyYXRpb25zLm1hcCgob3A6IGFueSkgPT4gYWRqdXN0UGF0aHMob3AsIGpzb25QYXRoKSksXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCdwYXRjaDplYWNoJyBpbiBmcmFnbWVudCkge1xuICAgICAgY29uc3QgcCA9IGZyYWdtZW50WydwYXRjaDplYWNoJ107XG4gICAgICBpZiAodHlwZW9mIGFjdHVhbERhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0Y2ggJHtwLmRlc2NyaXB0aW9ufTogZXhwZWN0aW5nIG9iamVjdCBpbiBkYXRhLCBmb3VuZCAnJHthY3R1YWxEYXRhfSdgKTtcbiAgICAgIH1cbiAgICAgIGlmICghcC5vcGVyYXRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUGF0Y2ggbmVlZHMgJ29wZXJhdGlvbnMnIGtleSwgZ290OiAke0pTT04uc3RyaW5naWZ5KHApfWApO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gYWN0dWFsRGF0YSkge1xuICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGAke2tleX06ICR7cC5kZXNjcmlwdGlvbn1gLFxuICAgICAgICAgIG9wZXJhdGlvbnM6IHAub3BlcmF0aW9ucy5tYXAoKG9wOiBhbnkpID0+IGFkanVzdFBhdGhzKG9wLCBbLi4uanNvblBhdGgsIGtleV0pKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGZyYWdtZW50KSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gYWN0dWFsRGF0YSkpIHtcbiAgICAgICAgICBhY3R1YWxEYXRhW2tleV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICByZWN1cnNlKGFjdHVhbERhdGFba2V5XSwgZnJhZ21lbnRba2V5XSwgWy4uLmpzb25QYXRoLCBrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBhZGp1c3RQYXRocyhvcDogYW55LCBqc29uUGF0aDogc3RyaW5nW10pOiBPcGVyYXRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5vcCxcbiAgICAgIC4uLm9wLnBhdGggPyB7IHBhdGg6IGFkanVzdFBhdGgob3AucGF0aCwganNvblBhdGgpIH0gOiB1bmRlZmluZWQsXG4gICAgICAuLi5vcC5mcm9tID8geyBmcm9tOiBhZGp1c3RQYXRoKG9wLmZyb20sIGpzb25QYXRoKSB9IDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRqdXN0IHBhdGhcbiAgICpcbiAgICogJyQvJyBtZWFucyBmcm9tIHRoZSByb290LCBvdGhlcndpc2UgaW50ZXJwcmV0IGFzIHJlbGF0aXZlIHBhdGguXG4gICAqL1xuICBmdW5jdGlvbiBhZGp1c3RQYXRoKG9yaWdpbmFsUGF0aDogc3RyaW5nLCBqc29uUGF0aDogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxQYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBhZGp1c3RQYXRoOiBleHBlY3RlZCBzdHJpbmcsIGdvdCAke0pTT04uc3RyaW5naWZ5KG9yaWdpbmFsUGF0aCl9YCk7XG4gICAgfVxuICAgIGlmIChvcmlnaW5hbFBhdGguc3RhcnRzV2l0aCgnJC8nKSkge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsUGF0aC5zbGljZSgxKTtcbiAgICB9XG4gICAgcmV0dXJuIGpzb25QYXRoLm1hcChwID0+IGAvJHtwfWApLmpvaW4oJycpICsgb3JpZ2luYWxQYXRoO1xuICB9XG59XG5cblxuLyoqXG4gKiBSdW4gdGhpcyBmaWxlIGFzIGEgQ0xJIHRvb2wsIHRvIGFwcGx5IGEgcGF0Y2ggc2V0IGZyb20gdGhlIGNvbW1hbmQgbGluZVxuICovXG5hc3luYyBmdW5jdGlvbiBtYWluKGFyZ3M6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IHF1aWV0ID0gZWF0QXJnKCctcScsIGFyZ3MpIHx8IGVhdEFyZygnLS1xdWlldCcsIGFyZ3MpO1xuXG4gIGlmIChhcmdzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VzYWdlOiBwYXRjaC1zZXQgPERJUj4gWzxGSUxFPl0nKTtcbiAgfVxuXG4gIGNvbnN0IFtkaXIsIHRhcmdldEZpbGVdID0gYXJncztcblxuICBjb25zdCBtb2RlbCA9IGF3YWl0IGFwcGx5UGF0Y2hTZXQoZGlyLCB7IHF1aWV0IH0pO1xuICBpZiAodGFyZ2V0RmlsZSkge1xuICAgIGF3YWl0IHdyaXRlU29ydGVkKHRhcmdldEZpbGUsIG1vZGVsKTtcbiAgfSBlbHNlIHtcbiAgICBwcmludFNvcnRlZChtb2RlbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZWF0QXJnKGFyZzogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJnc1tpXSA9PT0gYXJnKSB7XG4gICAgICBhcmdzLnNwbGljZShpLCAxKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBtYWluKHByb2Nlc3MuYXJndi5zbGljZSgyKSkuY2F0Y2goZSA9PiB7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDE7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XG4gIH0pO1xufVxuIl19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2gtc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGF0Y2gtc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBOzs7O0dBSUc7QUFDSCw2QkFBNkI7QUFDN0IsaURBQWlEO0FBQ2pELCtCQUErQjtBQUUvQixpRUFBaUU7QUFDakUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBYy9CLEtBQUssVUFBVSxZQUFZLENBQUMsZUFBdUIsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUNwRixNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFFekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hELEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXBELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixrQkFBa0I7U0FDbkI7YUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDbEQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHO2dCQUNiLElBQUksRUFBRSxLQUFLO2dCQUNYLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDO2FBQ3ZELENBQUM7U0FDSDthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUc7Z0JBQ2IsSUFBSSxFQUFFLElBQUksQ0FB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QUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUM7U0FDYjtLQUNGO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtJQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDcEMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDckIsc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQXBwbHkgYSBKU09OIHBhdGNoIHNldCBpbnRvIHRoZSBnaXZlbiB0YXJnZXQgZmlsZVxuICpcbiAqIFRoZSBzb3VyY2VzIGNhbiBiZSB0YWtlbiBmcm9tIG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzLlxuICovXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZmFzdEpzb25QYXRjaCBmcm9tICdmYXN0LWpzb24tcGF0Y2gnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3Qgc29ydEpzb24gPSByZXF1aXJlKCdzb3J0LWpzb24nKTtcblxuZXhwb3J0IGludGVyZmFjZSBQYXRjaE9wdGlvbnMge1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFBhdGNoU2V0ID0gUmVjb3JkPHN0cmluZywgUGF0Y2hTZXRFbGVtZW50PjtcblxuZXhwb3J0IHR5cGUgUGF0Y2hTZXRFbGVtZW50ID1cbiAgfCB7IHJlYWRvbmx5IHR5cGU6ICdmcmFnbWVudCc7IHJlYWRvbmx5IGRhdGE6IGFueSB9XG4gIHwgeyByZWFkb25seSB0eXBlOiAncGF0Y2gnOyByZWFkb25seSBkYXRhOiBhbnkgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ3NldCc7IHJlYWRvbmx5IHNvdXJjZXM6IFBhdGNoU2V0IH1cbiAgO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBhdGNoU2V0KHNvdXJjZURpcmVjdG9yeTogc3RyaW5nLCByZWxhdGl2ZVRvID0gcHJvY2Vzcy5jd2QoKSk6IFByb21pc2U8UGF0Y2hTZXQ+IHtcbiAgY29uc3QgcmV0OiBQYXRjaFNldCA9IHt9O1xuXG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcihzb3VyY2VEaXJlY3RvcnkpO1xuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICBjb25zdCBmdWxsRmlsZSA9IHBhdGguam9pbihzb3VyY2VEaXJlY3RvcnksIGZpbGUpO1xuICAgIGNvbnN0IHJlbE5hbWUgPSBwYXRoLnJlbGF0aXZlKHJlbGF0aXZlVG8sIGZ1bGxGaWxlKTtcblxuICAgIGlmIChmaWxlLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgLy8gTm90aGluZywgaWdub3JlXG4gICAgfSBlbHNlIGlmICgoYXdhaXQgZnMuc3RhdChmdWxsRmlsZSkpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldFtyZWxOYW1lXSA9IHtcbiAgICAgICAgdHlwZTogJ3NldCcsXG4gICAgICAgIHNvdXJjZXM6IGF3YWl0IGxvYWRQYXRjaFNldChmdWxsRmlsZSwgc291cmNlRGlyZWN0b3J5KSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChmaWxlLmVuZHNXaXRoKCcuanNvbicpKSB7XG4gICAgICByZXRbcmVsTmFtZV0gPSB7XG4gICAgICAgIHR5cGU6IGZpbGUuaW5kZXhPZigncGF0Y2gnKSA9PT0gLTEgPyAnZnJhZ21lbnQnIDogJ3BhdGNoJyxcbiAgICAgICAgZGF0YTogYXdhaXQgZnMucmVhZEpzb24oZnVsbEZpbGUpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVQYXRjaFNldChzb3VyY2VzOiBQYXRjaFNldCwgb3B0aW9uczogUGF0Y2hPcHRpb25zID0ge30pIHtcbiAgY29uc3QgdGFyZ2V0T2JqZWN0OiBhbnkgPSB7fTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzb3VyY2VzKS5zb3J0KCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNvdXJjZXNba2V5XTtcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnZnJhZ21lbnQnOlxuICAgICAgICBsb2coa2V5KTtcbiAgICAgICAgbWVyZ2UodGFyZ2V0T2JqZWN0LCB2YWx1ZS5kYXRhLCBbXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncGF0Y2gnOlxuICAgICAgICBwYXRjaCh0YXJnZXRPYmplY3QsIHZhbHVlLmRhdGEsIChtKSA9PiBsb2coYCR7a2V5fTogJHttfWApKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZXQnOlxuICAgICAgICBjb25zdCBldmFsdWF0ZWQgPSBldmFsdWF0ZVBhdGNoU2V0KHZhbHVlLnNvdXJjZXMsIG9wdGlvbnMpO1xuICAgICAgICBsb2coa2V5KTtcbiAgICAgICAgbWVyZ2UodGFyZ2V0T2JqZWN0LCBldmFsdWF0ZWQsIFtdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldE9iamVjdDtcblxuICBmdW5jdGlvbiBsb2coeDogc3RyaW5nKSB7XG4gICAgaWYgKCFvcHRpb25zLnF1aWV0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coeCk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTG9hZCBhIHBhdGNoIHNldCBmcm9tIGEgZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseVBhdGNoU2V0KHNvdXJjZURpcmVjdG9yeTogc3RyaW5nLCBvcHRpb25zOiBQYXRjaE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBwYXRjaGVzID0gYXdhaXQgbG9hZFBhdGNoU2V0KHNvdXJjZURpcmVjdG9yeSk7XG4gIHJldHVybiBldmFsdWF0ZVBhdGNoU2V0KHBhdGNoZXMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIExvYWQgYSBwYXRjaCBzZXQgYW5kIHdyaXRlIGl0IG91dCB0byBhIGZpbGVcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5QW5kV3JpdGUodGFyZ2V0RmlsZTogc3RyaW5nLCBzb3VyY2VEaXJlY3Rvcnk6IHN0cmluZywgb3B0aW9uczogUGF0Y2hPcHRpb25zID0ge30pIHtcbiAgY29uc3QgbW9kZWwgPSBhd2FpdCBhcHBseVBhdGNoU2V0KHNvdXJjZURpcmVjdG9yeSwgb3B0aW9ucyk7XG4gIGF3YWl0IHdyaXRlU29ydGVkKHRhcmdldEZpbGUsIG1vZGVsKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlU29ydGVkKHRhcmdldEZpbGU6IHN0cmluZywgZGF0YTogYW55KSB7XG4gIGF3YWl0IGZzLm1rZGlycChwYXRoLmRpcm5hbWUodGFyZ2V0RmlsZSkpO1xuICBhd2FpdCBmcy53cml0ZUpzb24odGFyZ2V0RmlsZSwgc29ydEpzb24oZGF0YSksIHsgc3BhY2VzOiAyIH0pO1xufVxuXG5mdW5jdGlvbiBwcmludFNvcnRlZChkYXRhOiBhbnkpIHtcbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoc29ydEpzb24oZGF0YSksIHVuZGVmaW5lZCwgMikpO1xufVxuXG5mdW5jdGlvbiBtZXJnZSh0YXJnZXQ6IGFueSwgZnJhZ21lbnQ6IGFueSwganNvblBhdGg6IHN0cmluZ1tdKSB7XG4gIGlmICghZnJhZ21lbnQpIHsgcmV0dXJuOyB9XG4gIGlmICghdGFyZ2V0IHx8IHR5cGVvZiB0YXJnZXQgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgb2JqZWN0LCBmb3VuZDogJyR7dGFyZ2V0fScgYXQgJyQuJHtqc29uUGF0aC5qb2luKCcuJyl9J2ApO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZnJhZ21lbnQpKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKCckJykpIHsgY29udGludWU7IH1cblxuICAgIGlmIChrZXkgaW4gdGFyZ2V0KSB7XG4gICAgICBjb25zdCBzcGVjVmFsID0gdGFyZ2V0W2tleV07XG4gICAgICBjb25zdCBmcmFnVmFsID0gZnJhZ21lbnRba2V5XTtcbiAgICAgIGlmICh0eXBlb2Ygc3BlY1ZhbCAhPT0gdHlwZW9mIGZyYWdWYWwpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0ZWQgdG8gbWVyZ2UgJHtKU09OLnN0cmluZ2lmeShmcmFnVmFsKX0gaW50byBpbmNvbXBhdGlibGUgJHtKU09OLnN0cmluZ2lmeShzcGVjVmFsKX0gYXQgcGF0aCAke2pzb25QYXRoLmpvaW4oJy8nKX0vJHtrZXl9YCk7XG4gICAgICB9XG4gICAgICBpZiAoc3BlY1ZhbCA9PSBmcmFnVmFsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBzcGVjVmFsICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZsaWN0IHdoZW4gYXR0ZW1wdGluZyB0byBtZXJnZSAke0pTT04uc3RyaW5naWZ5KGZyYWdWYWwpfSBpbnRvICR7SlNPTi5zdHJpbmdpZnkoc3BlY1ZhbCl9IGF0IHBhdGggJHtqc29uUGF0aC5qb2luKCcvJyl9LyR7a2V5fWApO1xuICAgICAgfVxuICAgICAgbWVyZ2Uoc3BlY1ZhbCwgZnJhZ1ZhbCwgWy4uLmpzb25QYXRoLCBrZXldKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGFyZ2V0W2tleV0gPSBmcmFnbWVudFtrZXldO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaCh0YXJnZXQ6IGFueSwgZnJhZ21lbnQ6IGFueSwgbG9nOiAoeDogc3RyaW5nKSA9PiB2b2lkKSB7XG4gIGlmICghZnJhZ21lbnQpIHsgcmV0dXJuOyB9XG5cbiAgY29uc3QgcGF0Y2hlcyA9IGZpbmRQYXRjaGVzKHRhcmdldCwgZnJhZ21lbnQpO1xuICBmb3IgKGNvbnN0IHAgb2YgcGF0Y2hlcykge1xuICAgIGxvZyhwLmRlc2NyaXB0aW9uID8/ICcnKTtcblxuICAgIHRyeSB7XG4gICAgICBmYXN0SnNvblBhdGNoLmFwcGx5UGF0Y2godGFyZ2V0LCBwLm9wZXJhdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZXJyb3IgYXBwbHlpbmcgcGF0Y2g6ICR7SlNPTi5zdHJpbmdpZnkocCwgdW5kZWZpbmVkLCAyKX06ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgUGF0Y2gge1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgb3BlcmF0aW9uczogT3BlcmF0aW9uW107XG59XG5cbnR5cGUgT3BlcmF0aW9uID1cbiAgfCB7IHJlYWRvbmx5IG9wOiAnYWRkJzsgcmVhZG9ubHkgcGF0aDogc3RyaW5nOyByZWFkb25seSB2YWx1ZTogYW55IH1cbiAgfCB7IHJlYWRvbmx5IG9wOiAncmVtb3ZlJzsgcmVhZG9ubHkgcGF0aDogc3RyaW5nIH1cbiAgfCB7IHJlYWRvbmx5IG9wOiAncmVwbGFjZSc7IHJlYWRvbmx5IHBhdGg6IHN0cmluZzsgcmVhZG9ubHkgdmFsdWU6IGFueSB9XG4gIHwgeyByZWFkb25seSBvcDogJ2NvcHknOyByZWFkb25seSBwYXRoOiBzdHJpbmc7IHJlYWRvbmx5IGZyb206IHN0cmluZyB9XG4gIHwgeyByZWFkb25seSBvcDogJ21vdmUnOyByZWFkb25seSBwYXRoOiBzdHJpbmc7IHJlYWRvbmx5IGZyb206IHN0cmluZyB9XG4gIHwgeyByZWFkb25seSBvcDogJ3Rlc3QnOyByZWFkb25seSBwYXRoOiBzdHJpbmc7IHJlYWRvbmx5IHZhbHVlOiBhbnkgfVxuICA7XG5cbi8qKlxuICogRmluZCB0aGUgc2V0cyBvZiBwYXRjaGVzIHRvIGFwcGx5IGluIGEgZG9jdW1lbnRcbiAqXG4gKiBBZGp1c3RzIHBhdGhzIHRvIGJlIHJvb3QtcmVsYXRpdmUsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGhhdmUgcGF0aHNcbiAqIHBvaW50IG91dHNpZGUgdGhlIHBhdGNoIHNjb3BlLlxuICovXG5mdW5jdGlvbiBmaW5kUGF0Y2hlcyhkYXRhOiBhbnksIHBhdGNoU291cmNlOiBhbnkpOiBQYXRjaFtdIHtcbiAgY29uc3QgcmV0OiBQYXRjaFtdID0gW107XG4gIHJlY3Vyc2UoZGF0YSwgcGF0Y2hTb3VyY2UsIFtdKTtcbiAgcmV0dXJuIHJldDtcblxuICBmdW5jdGlvbiByZWN1cnNlKGFjdHVhbERhdGE6IGFueSwgZnJhZ21lbnQ6IGFueSwganNvblBhdGg6IHN0cmluZ1tdKSB7XG4gICAgaWYgKCFmcmFnbWVudCkgeyByZXR1cm47IH1cblxuICAgIGlmICgncGF0Y2gnIGluIGZyYWdtZW50KSB7XG4gICAgICBjb25zdCBwID0gZnJhZ21lbnQucGF0Y2g7XG4gICAgICBpZiAoIXAub3BlcmF0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGNoIG5lZWRzICdvcGVyYXRpb25zJyBrZXksIGdvdDogJHtKU09OLnN0cmluZ2lmeShwKX1gKTtcbiAgICAgIH1cbiAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHAuZGVzY3JpcHRpb24sXG4gICAgICAgIG9wZXJhdGlvbnM6IHAub3BlcmF0aW9ucy5tYXAoKG9wOiBhbnkpID0+IGFkanVzdFBhdGhzKG9wLCBqc29uUGF0aCkpLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICgncGF0Y2g6ZWFjaCcgaW4gZnJhZ21lbnQpIHtcbiAgICAgIGNvbnN0IHAgPSBmcmFnbWVudFsncGF0Y2g6ZWFjaCddO1xuICAgICAgaWYgKHR5cGVvZiBhY3R1YWxEYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGNoICR7cC5kZXNjcmlwdGlvbn06IGV4cGVjdGluZyBvYmplY3QgaW4gZGF0YSwgZm91bmQgJyR7YWN0dWFsRGF0YX0nYCk7XG4gICAgICB9XG4gICAgICBpZiAoIXAub3BlcmF0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGNoIG5lZWRzICdvcGVyYXRpb25zJyBrZXksIGdvdDogJHtKU09OLnN0cmluZ2lmeShwKX1gKTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGFjdHVhbERhdGEpIHtcbiAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgJHtrZXl9OiAke3AuZGVzY3JpcHRpb259YCxcbiAgICAgICAgICBvcGVyYXRpb25zOiBwLm9wZXJhdGlvbnMubWFwKChvcDogYW55KSA9PiBhZGp1c3RQYXRocyhvcCwgWy4uLmpzb25QYXRoLCBrZXldKSksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmcmFnbWVudCkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIGFjdHVhbERhdGEpKSB7XG4gICAgICAgICAgYWN0dWFsRGF0YVtrZXldID0ge307XG4gICAgICAgIH1cbiAgICAgICAgcmVjdXJzZShhY3R1YWxEYXRhW2tleV0sIGZyYWdtZW50W2tleV0sIFsuLi5qc29uUGF0aCwga2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRqdXN0UGF0aHMob3A6IGFueSwganNvblBhdGg6IHN0cmluZ1tdKTogT3BlcmF0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3AsXG4gICAgICAuLi5vcC5wYXRoID8geyBwYXRoOiBhZGp1c3RQYXRoKG9wLnBhdGgsIGpzb25QYXRoKSB9IDogdW5kZWZpbmVkLFxuICAgICAgLi4ub3AuZnJvbSA/IHsgZnJvbTogYWRqdXN0UGF0aChvcC5mcm9tLCBqc29uUGF0aCkgfSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkanVzdCBwYXRoXG4gICAqXG4gICAqICckLycgbWVhbnMgZnJvbSB0aGUgcm9vdCwgb3RoZXJ3aXNlIGludGVycHJldCBhcyByZWxhdGl2ZSBwYXRoLlxuICAgKi9cbiAgZnVuY3Rpb24gYWRqdXN0UGF0aChvcmlnaW5hbFBhdGg6IHN0cmluZywganNvblBhdGg6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIG9yaWdpbmFsUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgYWRqdXN0UGF0aDogZXhwZWN0ZWQgc3RyaW5nLCBnb3QgJHtKU09OLnN0cmluZ2lmeShvcmlnaW5hbFBhdGgpfWApO1xuICAgIH1cbiAgICBpZiAob3JpZ2luYWxQYXRoLnN0YXJ0c1dpdGgoJyQvJykpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbFBhdGguc2xpY2UoMSk7XG4gICAgfVxuICAgIHJldHVybiBqc29uUGF0aC5tYXAocCA9PiBgLyR7cH1gKS5qb2luKCcnKSArIG9yaWdpbmFsUGF0aDtcbiAgfVxufVxuXG5cbi8qKlxuICogUnVuIHRoaXMgZmlsZSBhcyBhIENMSSB0b29sLCB0byBhcHBseSBhIHBhdGNoIHNldCBmcm9tIHRoZSBjb21tYW5kIGxpbmVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmdzOiBzdHJpbmdbXSkge1xuICBjb25zdCBxdWlldCA9IGVhdEFyZygnLXEnLCBhcmdzKSB8fCBlYXRBcmcoJy0tcXVpZXQnLCBhcmdzKTtcblxuICBpZiAoYXJncy5sZW5ndGggPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVc2FnZTogcGF0Y2gtc2V0IDxESVI+IFs8RklMRT5dJyk7XG4gIH1cblxuICBjb25zdCBbZGlyLCB0YXJnZXRGaWxlXSA9IGFyZ3M7XG5cbiAgY29uc3QgbW9kZWwgPSBhd2FpdCBhcHBseVBhdGNoU2V0KGRpciwgeyBxdWlldCB9KTtcbiAgaWYgKHRhcmdldEZpbGUpIHtcbiAgICBhd2FpdCB3cml0ZVNvcnRlZCh0YXJnZXRGaWxlLCBtb2RlbCk7XG4gIH0gZWxzZSB7XG4gICAgcHJpbnRTb3J0ZWQobW9kZWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVhdEFyZyhhcmc6IHN0cmluZywgYXJnczogc3RyaW5nW10pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFyZ3NbaV0gPT09IGFyZykge1xuICAgICAgYXJncy5zcGxpY2UoaSwgMSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgbWFpbihwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpLmNhdGNoKGUgPT4ge1xuICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICB9KTtcbn1cbiJdfQ==
@@ -99,7 +99,6 @@ async function main() {
99
99
  }
100
100
  }
101
101
  function classifyPropertyTypeUpdate(propertyType, update) {
102
- var _a;
103
102
  const added = isAdded(propertyType);
104
103
  if (added) {
105
104
  const resourceType = added.split('.')[0];
@@ -121,7 +120,7 @@ async function main() {
121
120
  if (Object.keys(update).length !== 1 && Object.keys(update)[0] === 'Properties') {
122
121
  throw new Error('Unexpected update to a resource type. Expecting only "Properties" to change: ' + propertyType);
123
122
  }
124
- for (const prop of Object.keys((_a = update.Properties) !== null && _a !== void 0 ? _a : {})) {
123
+ for (const prop of Object.keys(update.Properties ?? {})) {
125
124
  describeChanges(propertyType, prop, update.Properties[prop]).forEach(change => {
126
125
  propertyTypeChanges.push(change);
127
126
  });
@@ -234,4 +233,4 @@ main().catch(e => {
234
233
  process.stderr.write('\n');
235
234
  process.exit(1);
236
235
  });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy1kaWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlYy1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUUvQiwwREFBMEQ7QUFDMUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxtQkFBbUI7QUFFbkIsU0FBUyxJQUFJLENBQUMsTUFBYyxFQUFFLEVBQUUsR0FBRyxLQUFZO0lBQzdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUvQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLCtDQUErQztJQUMvQyx3REFBd0Q7SUFDeEQsc0JBQXNCO0lBQ3RCLDREQUE0RDtJQUM1RCxzQkFBc0I7SUFDdEIsMkRBQTJEO0lBQzNELCtCQUErQjtJQUUvQixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FB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QUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDckMsS0FBSyxNQUFNLE1BQU0sSUFBSSxlQUFlLENBQUMsU0FBUyxFQUFFLEdBQUcsTUFBTSxJQUFJLEdBQUcsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNoRixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN0QjthQUNGO1NBQ0Y7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXRpbCBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzLWV4dHJhJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuY29uc3QganNvbkRpZmYgPSByZXF1aXJlKCdqc29uLWRpZmYnKS5kaWZmO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5mdW5jdGlvbiBsaW5lKGZtdDogc3RyaW5nID0gJycsIC4uLnBhcmFtOiBhbnlbXSkge1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZSh1dGlsLmZvcm1hdChmbXQsIC4uLnBhcmFtKSk7XG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXG4nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbigpIHtcbiAgY29uc3QgdGl0bGUgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGNvbnN0IG9sZFNwZWNGaWxlID0gcHJvY2Vzcy5hcmd2WzNdO1xuICBjb25zdCBuZXdTcGVjRmlsZSA9IHByb2Nlc3MuYXJndls0XTtcblxuICBjb25zdCBuZXdTcGVjID0gYXdhaXQgZnMucmVhZEpTT04obmV3U3BlY0ZpbGUpO1xuICBjb25zdCBvbGRTcGVjID0gYXdhaXQgZnMucmVhZEpTT04ob2xkU3BlY0ZpbGUpO1xuXG4gIGNvbnN0IG91dCA9IGpzb25EaWZmKG9sZFNwZWMsIG5ld1NwZWMpO1xuXG4gIC8vIEhlcmUncyB0aGUgbWFnaWMgb3V0cHV0IGZvcm1hdCBvZiB0aGlzIHRoaW5nXG4gIC8vIElmIGEga2V5IGVuZHMgaW4gX19hZGRlZCwgaXQgZ290IGFkZGVkLCBhbmQgdGhlIHZhbHVlXG4gIC8vICAgaXMgdGhlIG5ldyB2YWx1ZS5cbiAgLy8gSWYgYSBrZXkgZW5kcyBpbiBfX2RlbGV0ZWQsIGl0IGdvdCBkZWxldGVkLCBhbmQgdGhlIHZhbHVlXG4gIC8vICAgaXMgdGhlIG9sZCB2YWx1ZS5cbiAgLy8gSWYgYSB2YWx1ZSBnb3QgY2hhbmdlZCwgdGhlIHZhbHVlIG9iamVjdCB3aWxsIGxvb2sgbGlrZTpcbiAgLy8gICB7IF9fb2xkOiAuLi4sIF9fbmV3OiAuLi4gfVxuXG4gIGlmICghb3V0KSB7XG4gICAgcmV0dXJuOyAvLyBubyBkaWZmXG4gIH1cblxuICBjb25zdCByZXNvdXJjZVR5cGVBZGRpdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcmVzb3VyY2VUeXBlRGVsZXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGF0dHJpYnV0ZUNoYW5nZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBjb25zdCBwcm9wZXJ0eUNoYW5nZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBjb25zdCBwcm9wZXJ0eVR5cGVDaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvdXQuUmVzb3VyY2VUeXBlcyB8fCB7fSkpIHtcbiAgICBjbGFzc2lmeVJlc291cmNlVHlwZVVwZGF0ZShrZXksIG91dC5SZXNvdXJjZVR5cGVzW2tleV0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3V0LlByb3BlcnR5VHlwZXMgfHwge30pKSB7XG4gICAgY2xhc3NpZnlQcm9wZXJ0eVR5cGVVcGRhdGUoa2V5LCBvdXQuUHJvcGVydHlUeXBlc1trZXldKTtcbiAgfVxuXG4gIGxpbmUoYCMgJHt0aXRsZX0gdiR7bmV3U3BlYy5SZXNvdXJjZVNwZWNpZmljYXRpb25WZXJzaW9ufWApO1xuICBsaW5lKCk7XG5cbiAgbGluZSgnIyMgTmV3IFJlc291cmNlIFR5cGVzJyk7XG4gIGxpbmUoKTtcbiAgcmVzb3VyY2VUeXBlQWRkaXRpb25zLmZvckVhY2godHlwZSA9PiBsaW5lKGAqICR7dHlwZX1gKSk7XG4gIGxpbmUoKTtcblxuICBpZiAocmVzb3VyY2VUeXBlRGVsZXRpb25zLnNpemUgPiAwKSB7XG4gICAgbGluZSgnIyMgUmVtb3ZlZCBSZXNvdXJjZSBUeXBlcycpO1xuICAgIGxpbmUoKTtcbiAgICByZXNvdXJjZVR5cGVEZWxldGlvbnMuZm9yRWFjaCh0eXBlID0+IGxpbmUoYCogJHt0eXBlfWApKTtcbiAgICBsaW5lKCk7XG4gIH1cblxuICBsaW5lKCcjIyBBdHRyaWJ1dGUgQ2hhbmdlcycpO1xuICBsaW5lKCk7XG4gIGF0dHJpYnV0ZUNoYW5nZXMuZm9yRWFjaCh4ID0+IGxpbmUoeCkpO1xuICBsaW5lKCk7XG5cbiAgbGluZSgnIyMgUHJvcGVydHkgQ2hhbmdlcycpO1xuICBsaW5lKCk7XG4gIHByb3BlcnR5Q2hhbmdlcy5mb3JFYWNoKHggPT4gbGluZSh4KSk7XG4gIGxpbmUoKTtcblxuICBsaW5lKCcjIyBQcm9wZXJ0eSBUeXBlIENoYW5nZXMnKTtcbiAgbGluZSgpO1xuICBwcm9wZXJ0eVR5cGVDaGFuZ2VzLmZvckVhY2goeCA9PiBsaW5lKHgpKTtcblxuICBmdW5jdGlvbiBjbGFzc2lmeVJlc291cmNlVHlwZVVwZGF0ZShyZXNvdXJjZVR5cGU6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBhZGRlZCA9IGlzQWRkZWQocmVzb3VyY2VUeXBlKTtcbiAgICBpZiAoYWRkZWQpIHtcbiAgICAgIHJlc291cmNlVHlwZUFkZGl0aW9ucy5hZGQoYWRkZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZWQgPSBpc0RlbGV0ZWQocmVzb3VyY2VUeXBlKTtcbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgcmVzb3VyY2VUeXBlRGVsZXRpb25zLmFkZChkZWxldGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwdXNoRG93bkNvbXBsZXRlQ2hhbmdlcyh1cGRhdGUpO1xuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAnUHJvcGVydGllcyc6XG4gICAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHVwZGF0ZS5Qcm9wZXJ0aWVzKSkge1xuICAgICAgICAgICAgZGVzY3JpYmVDaGFuZ2VzKHJlc291cmNlVHlwZSwgcHJvcCwgdXBkYXRlLlByb3BlcnRpZXNbcHJvcF0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgICAgICAgcHJvcGVydHlDaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXR0cmlidXRlcyc6XG4gICAgICAgICAgZm9yIChjb25zdCBhdHRyIG9mIE9iamVjdC5rZXlzKHVwZGF0ZS5BdHRyaWJ1dGVzKSkge1xuICAgICAgICAgICAgZGVzY3JpYmVDaGFuZ2VzKHJlc291cmNlVHlwZSwgYXR0ciwgdXBkYXRlLkF0dHJpYnV0ZXNbYXR0cl0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RvY3VtZW50YXRpb24nOlxuICAgICAgICAgIGRlc2NyaWJlQ2hhbmdlcyhyZXNvdXJjZVR5cGUsIGtleSwgdXBkYXRlLkRvY3VtZW50YXRpb24pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB1cGRhdGUgdG8gJHtyZXNvdXJjZVR5cGV9OiAke2tleX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGFzc2lmeVByb3BlcnR5VHlwZVVwZGF0ZShwcm9wZXJ0eVR5cGU6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBhZGRlZCA9IGlzQWRkZWQocHJvcGVydHlUeXBlKTtcbiAgICBpZiAoYWRkZWQpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGFkZGVkLnNwbGl0KCcuJylbMF07XG4gICAgICBpZiAocmVzb3VyY2VUeXBlQWRkaXRpb25zLmhhcyhyZXNvdXJjZVR5cGUpKSB7XG4gICAgICAgIHJldHVybjsgLy8gc2tpcHBpbmcgcHJvcGVydHkgZm9yIGFkZGVkIHJlc291cmNlIHR5cGVzXG4gICAgICB9XG5cbiAgICAgIHByb3BlcnR5VHlwZUNoYW5nZXMucHVzaChgKiAke2FkZGVkfSAoX19hZGRlZF9fKWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGRlbGV0ZWQgPSBpc0RlbGV0ZWQocHJvcGVydHlUeXBlKTtcbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gZGVsZXRlZC5zcGxpdCgnLicpWzBdO1xuICAgICAgaWYgKHJlc291cmNlVHlwZURlbGV0aW9ucy5oYXMocmVzb3VyY2VUeXBlKSkge1xuICAgICAgICByZXR1cm47IC8vIHNraXBwaW5nIHByb3BlcnR5IGZvciBhZGRlZCByZXNvdXJjZSB0eXBlc1xuICAgICAgfVxuXG4gICAgICBwcm9wZXJ0eVR5cGVDaGFuZ2VzLnB1c2goYCogJHtkZWxldGVkfSAoX19yZW1vdmVkX18pYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKHVwZGF0ZSkubGVuZ3RoICE9PSAxICYmIE9iamVjdC5rZXlzKHVwZGF0ZSlbMF0gPT09ICdQcm9wZXJ0aWVzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHVwZGF0ZSB0byBhIHJlc291cmNlIHR5cGUuIEV4cGVjdGluZyBvbmx5IFwiUHJvcGVydGllc1wiIHRvIGNoYW5nZTogJyArIHByb3BlcnR5VHlwZSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKHVwZGF0ZS5Qcm9wZXJ0aWVzID8/IHt9KSkge1xuICAgICAgZGVzY3JpYmVDaGFuZ2VzKHByb3BlcnR5VHlwZSwgcHJvcCwgdXBkYXRlLlByb3BlcnRpZXNbcHJvcF0pLmZvckVhY2goY2hhbmdlID0+IHtcbiAgICAgICAgcHJvcGVydHlUeXBlQ2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHVzaCBkb3duIG1hc3MgY2hhbmdlcyB0byBhdHRyaWJ1dGVzIG9yIHByb3BlcnRpZXMgdG8gdGhlIGluZGl2aWR1YWwgcHJvcGVydGllcy5cbiAgICpcbiAgICogQW4gZXhhbXBsZSB3aWxsIGV4cGxhaW4gdGhpcyBiZXN0LiBKU09OLWRpZmYgd2lsbCBtYWtlIHRoZSBzbWFsbGVzdCBkaWZmLCBzbyBpZiB0aGVyZVxuICAgKiBhcmUgbmV3IHByb3BlcnRpZXMgaXQgd2lsbCByZXBvcnQ6XG4gICAqXG4gICAqIFwiUHJvcGVydGllc19fYWRkZWRcIjoge1xuICAgKiAgICBcIlByb3BlcnR5MVwiOiB7IC4uLiB9LFxuICAgKiAgICBcIlByb3BlcnR5MlwiOiB7IC4uLiB9LFxuICAgKiB9XG4gICAqXG4gICAqIEJ1dCB3ZSB3YW50IHRvIHNlZSB0aGlzIGFzOlxuICAgKlxuICAgKiBcIlByb3BlcnRpZXNcIjoge1xuICAgKiAgICBcIlByb3BlcnR5MV9fYWRkZWRcIjogeyAuLi4gfSxcbiAgICogICAgXCJQcm9wZXJ0eTJfX2FkZGVkXCI6IHsgLi4uIH0sXG4gICAqIH1cbiAgICpcbiAgICogU2FtZSAoYnV0IGluIHJldmVyc2UpIGZvciBkZWxldGlvbnMuXG4gICAqL1xuICBmdW5jdGlvbiBwdXNoRG93bkNvbXBsZXRlQ2hhbmdlcyh1cGRhdGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+KSB7XG4gICAgZm9yIChjb25zdCBbY2F0ZWdvcnksIGVudHJpZXNdIG9mIE9iamVjdC5lbnRyaWVzKHVwZGF0ZSkpIHtcbiAgICAgIGNvbnN0IGFkZGVkS2V5ID0gaXNBZGRlZChjYXRlZ29yeSk7XG4gICAgICBpZiAoYWRkZWRLZXkpIHtcbiAgICAgICAgZGVsZXRlIHVwZGF0ZVtjYXRlZ29yeV07XG4gICAgICAgIHVwZGF0ZVthZGRlZEtleV0gPSBzdWZmaXhLZXlzKCdfX2FkZGVkJywgZW50cmllcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlbGV0ZWRLZXkgPSBpc0RlbGV0ZWQoY2F0ZWdvcnkpO1xuICAgICAgaWYgKGRlbGV0ZWRLZXkpIHtcbiAgICAgICAgZGVsZXRlIHVwZGF0ZVtjYXRlZ29yeV07XG4gICAgICAgIHVwZGF0ZVtkZWxldGVkS2V5XSA9IHN1ZmZpeEtleXMoJ19fZGVsZXRlZCcsIGVudHJpZXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGlzRGVsZXRlZChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBpc1N1ZmZpeChrZXksICdfX2RlbGV0ZWQnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzQWRkZWQoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXNTdWZmaXgoa2V5LCAnX19hZGRlZCcpO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNTdWZmaXgoa2V5OiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nKSB7XG4gICAgY29uc3QgaW5kZXggPSBrZXkuaW5kZXhPZihzdWZmaXgpO1xuICAgIHJldHVybiBpbmRleCA9PT0gLTEgPyB1bmRlZmluZWQgOiBrZXkuc2xpY2UoMCwgaW5kZXgpO1xuICB9XG5cbiAgZnVuY3Rpb24gc3VmZml4S2V5cyhzdWZmaXg6IHN0cmluZywgeHM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh4cykpIHtcbiAgICAgIHJldFtrZXkgKyBzdWZmaXhdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUNoYW5nZXMobmFtZXNwYWNlOiBzdHJpbmcsIHByZWZpeDogc3RyaW5nLCB1cGRhdGU6IGFueSkge1xuICAgIGNvbnN0IGNoYW5nZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgY29uc3QgYWRkZWQgPSBpc0FkZGVkKHByZWZpeCk7XG4gICAgaWYgKGFkZGVkKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7YWRkZWR9IChfX2FkZGVkX18pYCk7XG4gICAgICByZXR1cm4gY2hhbmdlcztcbiAgICB9XG5cbiAgICBjb25zdCBkZWxldGVkID0gaXNEZWxldGVkKHByZWZpeCk7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgIGNoYW5nZXMucHVzaChgKiAke25hbWVzcGFjZX0gJHtkZWxldGVkfSAoX19kZWxldGVkX18pYCk7XG4gICAgICByZXR1cm4gY2hhbmdlcztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mKHVwZGF0ZSkgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgY2hhbmdlIGZvciAke25hbWVzcGFjZX0uJHtwcmVmaXh9ICR7SlNPTi5zdHJpbmdpZnkodXBkYXRlKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoJ19fb2xkJyBpbiB1cGRhdGUgJiYgJ19fbmV3JyBpbiB1cGRhdGUpIHtcbiAgICAgIGNoYW5nZXMucHVzaChgKiAke25hbWVzcGFjZX0gJHtwcmVmaXh9IChfX2NoYW5nZWRfXylgKTtcbiAgICAgIGNoYW5nZXMucHVzaChgICAqIE9sZDogJHt1cGRhdGUuX19vbGR9YCk7XG4gICAgICBjaGFuZ2VzLnB1c2goYCAgKiBOZXc6ICR7dXBkYXRlLl9fbmV3fWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodXBkYXRlKSkge1xuICAgICAgY2hhbmdlcy5wdXNoKGAqICR7bmFtZXNwYWNlfSAke3ByZWZpeH0gKF9fY2hhbmdlZF9fKWApO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB1cGRhdGUpIHtcbiAgICAgICAgaWYgKGVudHJ5Lmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBhcnJheSBkaWZmIGVudHJ5OiAke0pTT04uc3RyaW5naWZ5KGVudHJ5KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGVudHJ5WzBdKSB7XG4gICAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgICBjaGFuZ2VzLnB1c2goYCAgKiBBZGRlZCAke2VudHJ5WzFdfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnLSc6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNvbWV0aGluZyBhd2t3YXJkIGhhcHBlbmVkOiAke2VudHJ5WzFdfSB3YXMgZGVsZXRlZCBmcm9tICR7bmFtZXNwYWNlfSAke3ByZWZpeH0hYCk7XG4gICAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgLy8gVGhpcyBlbnRyeSBpcyBcImNvbnRleHRcIlxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBhcnJheSBkaWZmIGVudHJ5OiAke0pTT04uc3RyaW5naWZ5KGVudHJ5KX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh1cGRhdGUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGRlc2NyaWJlQ2hhbmdlcyhuYW1lc3BhY2UsIGAke3ByZWZpeH0uJHtrZXl9YCwgdXBkYXRlW2tleV0pKSB7XG4gICAgICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxufVxuXG5tYWluKCkuY2F0Y2goZSA9PiB7XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGUuc3RhY2spO1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZSgnXFxuJyk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlYy1kaWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3BlYy1kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkJBQTZCO0FBQzdCLCtCQUErQjtBQUUvQiwwREFBMEQ7QUFDMUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzQyxtQkFBbUI7QUFFbkIsU0FBUyxJQUFJLENBQUMsTUFBYyxFQUFFLEVBQUUsR0FBRyxLQUFZO0lBQzdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUvQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZDLCtDQUErQztJQUMvQyx3REFBd0Q7SUFDeEQsc0JBQXNCO0lBQ3RCLDREQUE0RDtJQUM1RCxzQkFBc0I7SUFDdEIsMkRBQTJEO0lBQzNELCtCQUErQjtJQUUvQixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FB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QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JDLEtBQUssTUFBTSxNQUFNLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDaEYsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDdEI7YUFDRjtTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDZixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmNvbnN0IGpzb25EaWZmID0gcmVxdWlyZSgnanNvbi1kaWZmJykuZGlmZjtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuZnVuY3Rpb24gbGluZShmbXQ6IHN0cmluZyA9ICcnLCAuLi5wYXJhbTogYW55W10pIHtcbiAgcHJvY2Vzcy5zdGRvdXQud3JpdGUodXRpbC5mb3JtYXQoZm10LCAuLi5wYXJhbSkpO1xuICBwcm9jZXNzLnN0ZG91dC53cml0ZSgnXFxuJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKSB7XG4gIGNvbnN0IHRpdGxlID0gcHJvY2Vzcy5hcmd2WzJdO1xuICBjb25zdCBvbGRTcGVjRmlsZSA9IHByb2Nlc3MuYXJndlszXTtcbiAgY29uc3QgbmV3U3BlY0ZpbGUgPSBwcm9jZXNzLmFyZ3ZbNF07XG5cbiAgY29uc3QgbmV3U3BlYyA9IGF3YWl0IGZzLnJlYWRKU09OKG5ld1NwZWNGaWxlKTtcbiAgY29uc3Qgb2xkU3BlYyA9IGF3YWl0IGZzLnJlYWRKU09OKG9sZFNwZWNGaWxlKTtcblxuICBjb25zdCBvdXQgPSBqc29uRGlmZihvbGRTcGVjLCBuZXdTcGVjKTtcblxuICAvLyBIZXJlJ3MgdGhlIG1hZ2ljIG91dHB1dCBmb3JtYXQgb2YgdGhpcyB0aGluZ1xuICAvLyBJZiBhIGtleSBlbmRzIGluIF9fYWRkZWQsIGl0IGdvdCBhZGRlZCwgYW5kIHRoZSB2YWx1ZVxuICAvLyAgIGlzIHRoZSBuZXcgdmFsdWUuXG4gIC8vIElmIGEga2V5IGVuZHMgaW4gX19kZWxldGVkLCBpdCBnb3QgZGVsZXRlZCwgYW5kIHRoZSB2YWx1ZVxuICAvLyAgIGlzIHRoZSBvbGQgdmFsdWUuXG4gIC8vIElmIGEgdmFsdWUgZ290IGNoYW5nZWQsIHRoZSB2YWx1ZSBvYmplY3Qgd2lsbCBsb29rIGxpa2U6XG4gIC8vICAgeyBfX29sZDogLi4uLCBfX25ldzogLi4uIH1cblxuICBpZiAoIW91dCkge1xuICAgIHJldHVybjsgLy8gbm8gZGlmZlxuICB9XG5cbiAgY29uc3QgcmVzb3VyY2VUeXBlQWRkaXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHJlc291cmNlVHlwZURlbGV0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBhdHRyaWJ1dGVDaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgY29uc3QgcHJvcGVydHlDaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgY29uc3QgcHJvcGVydHlUeXBlQ2hhbmdlcyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3V0LlJlc291cmNlVHlwZXMgfHwge30pKSB7XG4gICAgY2xhc3NpZnlSZXNvdXJjZVR5cGVVcGRhdGUoa2V5LCBvdXQuUmVzb3VyY2VUeXBlc1trZXldKTtcbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG91dC5Qcm9wZXJ0eVR5cGVzIHx8IHt9KSkge1xuICAgIGNsYXNzaWZ5UHJvcGVydHlUeXBlVXBkYXRlKGtleSwgb3V0LlByb3BlcnR5VHlwZXNba2V5XSk7XG4gIH1cblxuICBsaW5lKGAjICR7dGl0bGV9IHYke25ld1NwZWMuUmVzb3VyY2VTcGVjaWZpY2F0aW9uVmVyc2lvbn1gKTtcbiAgbGluZSgpO1xuXG4gIGxpbmUoJyMjIE5ldyBSZXNvdXJjZSBUeXBlcycpO1xuICBsaW5lKCk7XG4gIHJlc291cmNlVHlwZUFkZGl0aW9ucy5mb3JFYWNoKHR5cGUgPT4gbGluZShgKiAke3R5cGV9YCkpO1xuICBsaW5lKCk7XG5cbiAgaWYgKHJlc291cmNlVHlwZURlbGV0aW9ucy5zaXplID4gMCkge1xuICAgIGxpbmUoJyMjIFJlbW92ZWQgUmVzb3VyY2UgVHlwZXMnKTtcbiAgICBsaW5lKCk7XG4gICAgcmVzb3VyY2VUeXBlRGVsZXRpb25zLmZvckVhY2godHlwZSA9PiBsaW5lKGAqICR7dHlwZX1gKSk7XG4gICAgbGluZSgpO1xuICB9XG5cbiAgbGluZSgnIyMgQXR0cmlidXRlIENoYW5nZXMnKTtcbiAgbGluZSgpO1xuICBhdHRyaWJ1dGVDaGFuZ2VzLmZvckVhY2goeCA9PiBsaW5lKHgpKTtcbiAgbGluZSgpO1xuXG4gIGxpbmUoJyMjIFByb3BlcnR5IENoYW5nZXMnKTtcbiAgbGluZSgpO1xuICBwcm9wZXJ0eUNoYW5nZXMuZm9yRWFjaCh4ID0+IGxpbmUoeCkpO1xuICBsaW5lKCk7XG5cbiAgbGluZSgnIyMgUHJvcGVydHkgVHlwZSBDaGFuZ2VzJyk7XG4gIGxpbmUoKTtcbiAgcHJvcGVydHlUeXBlQ2hhbmdlcy5mb3JFYWNoKHggPT4gbGluZSh4KSk7XG5cbiAgZnVuY3Rpb24gY2xhc3NpZnlSZXNvdXJjZVR5cGVVcGRhdGUocmVzb3VyY2VUeXBlOiBzdHJpbmcsIHVwZGF0ZTogYW55KSB7XG4gICAgY29uc3QgYWRkZWQgPSBpc0FkZGVkKHJlc291cmNlVHlwZSk7XG4gICAgaWYgKGFkZGVkKSB7XG4gICAgICByZXNvdXJjZVR5cGVBZGRpdGlvbnMuYWRkKGFkZGVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWxldGVkID0gaXNEZWxldGVkKHJlc291cmNlVHlwZSk7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgIHJlc291cmNlVHlwZURlbGV0aW9ucy5hZGQoZGVsZXRlZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHVzaERvd25Db21wbGV0ZUNoYW5nZXModXBkYXRlKTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHVwZGF0ZSkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ1Byb3BlcnRpZXMnOlxuICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh1cGRhdGUuUHJvcGVydGllcykpIHtcbiAgICAgICAgICAgIGRlc2NyaWJlQ2hhbmdlcyhyZXNvdXJjZVR5cGUsIHByb3AsIHVwZGF0ZS5Qcm9wZXJ0aWVzW3Byb3BdKS5mb3JFYWNoKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICAgIHByb3BlcnR5Q2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0F0dHJpYnV0ZXMnOlxuICAgICAgICAgIGZvciAoY29uc3QgYXR0ciBvZiBPYmplY3Qua2V5cyh1cGRhdGUuQXR0cmlidXRlcykpIHtcbiAgICAgICAgICAgIGRlc2NyaWJlQ2hhbmdlcyhyZXNvdXJjZVR5cGUsIGF0dHIsIHVwZGF0ZS5BdHRyaWJ1dGVzW2F0dHJdKS5mb3JFYWNoKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEb2N1bWVudGF0aW9uJzpcbiAgICAgICAgICBkZXNjcmliZUNoYW5nZXMocmVzb3VyY2VUeXBlLCBrZXksIHVwZGF0ZS5Eb2N1bWVudGF0aW9uKS5mb3JFYWNoKGNoYW5nZSA9PiB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdXBkYXRlIHRvICR7cmVzb3VyY2VUeXBlfTogJHtrZXl9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2xhc3NpZnlQcm9wZXJ0eVR5cGVVcGRhdGUocHJvcGVydHlUeXBlOiBzdHJpbmcsIHVwZGF0ZTogYW55KSB7XG4gICAgY29uc3QgYWRkZWQgPSBpc0FkZGVkKHByb3BlcnR5VHlwZSk7XG4gICAgaWYgKGFkZGVkKSB7XG4gICAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBhZGRlZC5zcGxpdCgnLicpWzBdO1xuICAgICAgaWYgKHJlc291cmNlVHlwZUFkZGl0aW9ucy5oYXMocmVzb3VyY2VUeXBlKSkge1xuICAgICAgICByZXR1cm47IC8vIHNraXBwaW5nIHByb3BlcnR5IGZvciBhZGRlZCByZXNvdXJjZSB0eXBlc1xuICAgICAgfVxuXG4gICAgICBwcm9wZXJ0eVR5cGVDaGFuZ2VzLnB1c2goYCogJHthZGRlZH0gKF9fYWRkZWRfXylgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWxldGVkID0gaXNEZWxldGVkKHByb3BlcnR5VHlwZSk7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IGRlbGV0ZWQuc3BsaXQoJy4nKVswXTtcbiAgICAgIGlmIChyZXNvdXJjZVR5cGVEZWxldGlvbnMuaGFzKHJlc291cmNlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuOyAvLyBza2lwcGluZyBwcm9wZXJ0eSBmb3IgYWRkZWQgcmVzb3VyY2UgdHlwZXNcbiAgICAgIH1cblxuICAgICAgcHJvcGVydHlUeXBlQ2hhbmdlcy5wdXNoKGAqICR7ZGVsZXRlZH0gKF9fcmVtb3ZlZF9fKWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyh1cGRhdGUpLmxlbmd0aCAhPT0gMSAmJiBPYmplY3Qua2V5cyh1cGRhdGUpWzBdID09PSAnUHJvcGVydGllcycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCB1cGRhdGUgdG8gYSByZXNvdXJjZSB0eXBlLiBFeHBlY3Rpbmcgb25seSBcIlByb3BlcnRpZXNcIiB0byBjaGFuZ2U6ICcgKyBwcm9wZXJ0eVR5cGUpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBPYmplY3Qua2V5cyh1cGRhdGUuUHJvcGVydGllcyA/PyB7fSkpIHtcbiAgICAgIGRlc2NyaWJlQ2hhbmdlcyhwcm9wZXJ0eVR5cGUsIHByb3AsIHVwZGF0ZS5Qcm9wZXJ0aWVzW3Byb3BdKS5mb3JFYWNoKGNoYW5nZSA9PiB7XG4gICAgICAgIHByb3BlcnR5VHlwZUNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFB1c2ggZG93biBtYXNzIGNoYW5nZXMgdG8gYXR0cmlidXRlcyBvciBwcm9wZXJ0aWVzIHRvIHRoZSBpbmRpdmlkdWFsIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEFuIGV4YW1wbGUgd2lsbCBleHBsYWluIHRoaXMgYmVzdC4gSlNPTi1kaWZmIHdpbGwgbWFrZSB0aGUgc21hbGxlc3QgZGlmZiwgc28gaWYgdGhlcmVcbiAgICogYXJlIG5ldyBwcm9wZXJ0aWVzIGl0IHdpbGwgcmVwb3J0OlxuICAgKlxuICAgKiBcIlByb3BlcnRpZXNfX2FkZGVkXCI6IHtcbiAgICogICAgXCJQcm9wZXJ0eTFcIjogeyAuLi4gfSxcbiAgICogICAgXCJQcm9wZXJ0eTJcIjogeyAuLi4gfSxcbiAgICogfVxuICAgKlxuICAgKiBCdXQgd2Ugd2FudCB0byBzZWUgdGhpcyBhczpcbiAgICpcbiAgICogXCJQcm9wZXJ0aWVzXCI6IHtcbiAgICogICAgXCJQcm9wZXJ0eTFfX2FkZGVkXCI6IHsgLi4uIH0sXG4gICAqICAgIFwiUHJvcGVydHkyX19hZGRlZFwiOiB7IC4uLiB9LFxuICAgKiB9XG4gICAqXG4gICAqIFNhbWUgKGJ1dCBpbiByZXZlcnNlKSBmb3IgZGVsZXRpb25zLlxuICAgKi9cbiAgZnVuY3Rpb24gcHVzaERvd25Db21wbGV0ZUNoYW5nZXModXBkYXRlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pikge1xuICAgIGZvciAoY29uc3QgW2NhdGVnb3J5LCBlbnRyaWVzXSBvZiBPYmplY3QuZW50cmllcyh1cGRhdGUpKSB7XG4gICAgICBjb25zdCBhZGRlZEtleSA9IGlzQWRkZWQoY2F0ZWdvcnkpO1xuICAgICAgaWYgKGFkZGVkS2V5KSB7XG4gICAgICAgIGRlbGV0ZSB1cGRhdGVbY2F0ZWdvcnldO1xuICAgICAgICB1cGRhdGVbYWRkZWRLZXldID0gc3VmZml4S2V5cygnX19hZGRlZCcsIGVudHJpZXMpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWxldGVkS2V5ID0gaXNEZWxldGVkKGNhdGVnb3J5KTtcbiAgICAgIGlmIChkZWxldGVkS2V5KSB7XG4gICAgICAgIGRlbGV0ZSB1cGRhdGVbY2F0ZWdvcnldO1xuICAgICAgICB1cGRhdGVbZGVsZXRlZEtleV0gPSBzdWZmaXhLZXlzKCdfX2RlbGV0ZWQnLCBlbnRyaWVzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc0RlbGV0ZWQoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gaXNTdWZmaXgoa2V5LCAnX19kZWxldGVkJyk7XG4gIH1cblxuICBmdW5jdGlvbiBpc0FkZGVkKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGlzU3VmZml4KGtleSwgJ19fYWRkZWQnKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzU3VmZml4KGtleTogc3RyaW5nLCBzdWZmaXg6IHN0cmluZykge1xuICAgIGNvbnN0IGluZGV4ID0ga2V5LmluZGV4T2Yoc3VmZml4KTtcbiAgICByZXR1cm4gaW5kZXggPT09IC0xID8gdW5kZWZpbmVkIDoga2V5LnNsaWNlKDAsIGluZGV4KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN1ZmZpeEtleXMoc3VmZml4OiBzdHJpbmcsIHhzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgcmV0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeHMpKSB7XG4gICAgICByZXRba2V5ICsgc3VmZml4XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVDaGFuZ2VzKG5hbWVzcGFjZTogc3RyaW5nLCBwcmVmaXg6IHN0cmluZywgdXBkYXRlOiBhbnkpIHtcbiAgICBjb25zdCBjaGFuZ2VzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGFkZGVkID0gaXNBZGRlZChwcmVmaXgpO1xuICAgIGlmIChhZGRlZCkge1xuICAgICAgY2hhbmdlcy5wdXNoKGAqICR7bmFtZXNwYWNlfSAke2FkZGVkfSAoX19hZGRlZF9fKWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgY29uc3QgZGVsZXRlZCA9IGlzRGVsZXRlZChwcmVmaXgpO1xuICAgIGlmIChkZWxldGVkKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7ZGVsZXRlZH0gKF9fZGVsZXRlZF9fKWApO1xuICAgICAgcmV0dXJuIGNoYW5nZXM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZih1cGRhdGUpICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGNoYW5nZSBmb3IgJHtuYW1lc3BhY2V9LiR7cHJlZml4fSAke0pTT04uc3RyaW5naWZ5KHVwZGF0ZSl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCdfX29sZCcgaW4gdXBkYXRlICYmICdfX25ldycgaW4gdXBkYXRlKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goYCogJHtuYW1lc3BhY2V9ICR7cHJlZml4fSAoX19jaGFuZ2VkX18pYCk7XG4gICAgICBjaGFuZ2VzLnB1c2goYCAgKiBPbGQ6ICR7dXBkYXRlLl9fb2xkfWApO1xuICAgICAgY2hhbmdlcy5wdXNoKGAgICogTmV3OiAke3VwZGF0ZS5fX25ld31gKTtcbiAgICAgIHJldHVybiBjaGFuZ2VzO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHVwZGF0ZSkpIHtcbiAgICAgIGNoYW5nZXMucHVzaChgKiAke25hbWVzcGFjZX0gJHtwcmVmaXh9IChfX2NoYW5nZWRfXylgKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgdXBkYXRlKSB7XG4gICAgICAgIGlmIChlbnRyeS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYXJyYXkgZGlmZiBlbnRyeTogJHtKU09OLnN0cmluZ2lmeShlbnRyeSl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChlbnRyeVswXSkge1xuICAgICAgICAgIGNhc2UgJysnOlxuICAgICAgICAgICAgY2hhbmdlcy5wdXNoKGAgICogQWRkZWQgJHtlbnRyeVsxXX1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTb21ldGhpbmcgYXdrd2FyZCBoYXBwZW5lZDogJHtlbnRyeVsxXX0gd2FzIGRlbGV0ZWQgZnJvbSAke25hbWVzcGFjZX0gJHtwcmVmaXh9IWApO1xuICAgICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgIC8vIFRoaXMgZW50cnkgaXMgXCJjb250ZXh0XCJcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYXJyYXkgZGlmZiBlbnRyeTogJHtKU09OLnN0cmluZ2lmeShlbnRyeSl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModXBkYXRlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNoYW5nZSBvZiBkZXNjcmliZUNoYW5nZXMobmFtZXNwYWNlLCBgJHtwcmVmaXh9LiR7a2V5fWAsIHVwZGF0ZVtrZXldKSkge1xuICAgICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cbn1cblxubWFpbigpLmNhdGNoKGUgPT4ge1xuICBwcm9jZXNzLnN0ZGVyci53cml0ZShlLnN0YWNrKTtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ1xcbicpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
@@ -28,11 +28,16 @@ function update-spec() {
28
28
  exit 1
29
29
  fi
30
30
 
31
- echo >&2 "Downloading from ${url}..."
32
- if ${gunzip}; then
33
- curl -sL "${url}" | gunzip - > ${newspec}
31
+ if [[ "${url}" == "http"* ]]; then
32
+ echo >&2 "Downloading from ${url}..."
33
+ if ${gunzip}; then
34
+ curl -sL "${url}" | gunzip - > ${newspec}
35
+ else
36
+ curl -sL "${url}" > ${newspec}
37
+ fi
34
38
  else
35
- curl -sL "${url}" > ${newspec}
39
+ echo >&2 "Copying file ${url}..."
40
+ cp "${url}" "${newspec}"
36
41
  fi
37
42
 
38
43
  # Calculate the old and new combined specs, so we can do a diff on the changes
@@ -57,7 +62,7 @@ function update-spec() {
57
62
 
58
63
  update-spec \
59
64
  "CloudFormation Resource Specification" \
60
- "https://d1uauaxba7bl26.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json" \
65
+ "${1:-https://d1uauaxba7bl26.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json}" \
61
66
  spec-source/specification/000_cfn/000_official \
62
67
  true true
63
68
 
@@ -98,3 +103,5 @@ if [ -n "${_changelog_contents}" ]; then
98
103
  cat CHANGELOG.md >> CHANGELOG.md.new
99
104
  cp CHANGELOG.md.new CHANGELOG.md
100
105
  fi
106
+
107
+ exec /bin/bash ${scriptdir}/update-cfnlint.sh
@@ -1 +1 @@
1
- 94.0.0
1
+ 97.0.0
@@ -6,10 +6,9 @@ const canned_metrics_schema_1 = require("./canned-metrics/canned-metrics-schema"
6
6
  * Return the list of canned metrics for the given service
7
7
  */
8
8
  function cannedMetricsForService(cloudFormationNamespace) {
9
- var _a;
10
9
  // One metricTemplate has a single set of dimensions, but the same metric NAME
11
10
  // may occur in multiple metricTemplates (if it has multiple sets of dimensions)
12
- const metricTemplates = (_a = cannedMetricsIndex()[cloudFormationNamespace]) !== null && _a !== void 0 ? _a : [];
11
+ const metricTemplates = cannedMetricsIndex()[cloudFormationNamespace] ?? [];
13
12
  // First construct almost what we need, but with a single dimension per metric
14
13
  const metricsWithDuplicates = flatMap(metricTemplates, metricSet => {
15
14
  const dimensions = metricSet.dimensions.map(d => d.dimensionName);
@@ -34,14 +33,13 @@ let cannedMetricsCache;
34
33
  * Load the canned metrics file and process it into an index, grouped by service namespace
35
34
  */
36
35
  function cannedMetricsIndex() {
37
- var _a;
38
36
  if (cannedMetricsCache === undefined) {
39
37
  cannedMetricsCache = {};
40
38
  for (const group of canned_metrics_schema_1.loadCannedMetricsFile()) {
41
39
  for (const metricTemplate of group.metricTemplates) {
42
40
  const [aws, service] = metricTemplate.resourceType.split('::');
43
41
  const serviceKey = [aws, service].join('::');
44
- ((_a = cannedMetricsCache[serviceKey]) !== null && _a !== void 0 ? _a : (cannedMetricsCache[serviceKey] = [])).push(metricTemplate);
42
+ (cannedMetricsCache[serviceKey] ?? (cannedMetricsCache[serviceKey] = [])).push(metricTemplate);
45
43
  }
46
44
  }
47
45
  }
@@ -74,4 +72,4 @@ function* dedupeStringLists(xs) {
74
72
  seen.add(key);
75
73
  }
76
74
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FubmVkLW1ldHJpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjYW5uZWQtbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRkFBK0Y7QUE0Qy9GOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsdUJBQStCOztJQUNyRSw4RUFBOEU7SUFDOUUsZ0ZBQWdGO0lBQ2hGLE1BQU0sZUFBZSxTQUFHLGtCQUFrQixFQUFFLENBQUMsdUJBQXVCLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBRTVFLDhFQUE4RTtJQUM5RSxNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLEVBQUU7UUFDakUsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEUsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxTQUFTO1lBQzlCLFVBQVU7WUFDVixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDdkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFFSCxzRUFBc0U7SUFDdEUsT0FBTyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRixTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDL0IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVO1FBQ2pDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVztRQUNuQyxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQVE7S0FDakYsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBdkJELDBEQXVCQztBQUlELElBQUksa0JBQWtELENBQUM7QUFFdkQ7O0dBRUc7QUFDSCxTQUFTLGtCQUFrQjs7SUFDekIsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUU7UUFDcEMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLEtBQUssTUFBTSxLQUFLLElBQUksNkNBQXFCLEVBQUUsRUFBRTtZQUMzQyxLQUFLLE1BQU0sY0FBYyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7Z0JBQ2xELE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsT0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsbUNBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNoRztTQUNGO0tBQ0Y7SUFDRCxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBTyxFQUFPLEVBQUUsRUFBaUI7SUFDL0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUksRUFBTyxFQUFFLEtBQXVCO0lBQ2xELE1BQU0sR0FBRyxHQUFxQyxFQUFFLENBQUM7SUFDakQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRTtZQUNkLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNMLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2hCO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsQ0FBQztBQUVELFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQWM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNsQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQixNQUFNLENBQUMsQ0FBQztTQUNUO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNmO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRDYW5uZWRNZXRyaWNzRmlsZSwgTWV0cmljVGVtcGxhdGUgfSBmcm9tICcuL2Nhbm5lZC1tZXRyaWNzL2Nhbm5lZC1tZXRyaWNzLXNjaGVtYSc7XG5cbmV4cG9ydCB0eXBlIE5vbkVtcHR5QXJyYXk8VD4gPSBbVCwgLi4uVFtdXTtcblxuLyoqXG4gKiBBIHNpbmdsZSBjYW5uZWQgc2VydmljZSBtZXRyaWNcbiAqXG4gKiBUaGVzZSBhcmUga2luZGx5IHByb3ZpZGVkIHRvIHVzIGJ5IHRoZSBnb29kIHBlb3BsZSBvZiBDbG91ZFdhdGNoIEV4cGxvcmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhbm5lZE1ldHJpYyB7XG4gIC8qKlxuICAgKiBNZXRyaWMgbmFtZXNwYWNlXG4gICAqL1xuICByZWFkb25seSBuYW1lc3BhY2U6IHN0cmluZztcblxuICAvKipcbiAgICogTWV0cmljIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBhbGwgcG9zc2libGUgZGltZW5zaW9uIHBlcm11dGF0aW9ucyBmb3IgdGhpcyBtZXRyaWNcbiAgICpcbiAgICogTW9zdCBtZXRyaWNzIHdpbGwgaGF2ZSBhIHNpbmdsZSBsaXN0IG9mIHN0cmluZ3MgYXMgdGhlaXIgb25lIHNldCBvZlxuICAgKiBhbGxvd2VkIGRpbWVuc2lvbnMsIGJ1dCBzb21lIG1ldHJpY3MgYXJlIGVtaXR0ZWQgdW5kZXIgbXVsdGlwbGVcbiAgICogY29tYmluYXRpb25zIG9mIGRpbWVuc2lvbnMuXG4gICAqL1xuICByZWFkb25seSBkaW1lbnNpb25zOiBOb25FbXB0eUFycmF5PHN0cmluZ1tdPjtcblxuICAvKipcbiAgICogU3VnZ2VzdGVkIGRlZmF1bHQgYWdncmVncmF0aW9uIHN0YXRpc3RpY1xuICAgKlxuICAgKiBOb3QgYWx3YXlzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIG9uZSB0byB1c2UhIFRoZXNlIGRlZmF1bHRzIGhhdmVcbiAgICogYmVlbiBjbGFzc2lmaWVkIGJ5IHBlb3BsZSBhbmQgdGhleSBnZW5lcmFsbHkganVzdCBwaWNrIFwiQXZlcmFnZVwiXG4gICAqIGFzIHRoZSBkZWZhdWx0LCBldmVuIGlmIGl0IGRvZXNuJ3QgbWFrZSBzZW5zZS5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6IGZvciBldmVudC1iYXNlZCBtZXRyaWNzIHRoYXQgb25seSBldmVyIGVtaXQgYDFgXG4gICAqIChhbmQgbmV2ZXIgYDBgKSB0aGUgYmV0dGVyIHN0YXRpc3RpYyB3b3VsZCBiZSBgU3VtYC5cbiAgICpcbiAgICogVXNlIHlvdXIganVkZ2VtZW50IGJhc2VkIG9uIHRoZSB0eXBlIG9mIG1ldHJpYyB0aGlzIGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFN0YXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgY2FubmVkIG1ldHJpY3MgZm9yIHRoZSBnaXZlbiBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5uZWRNZXRyaWNzRm9yU2VydmljZShjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogc3RyaW5nKTogQ2FubmVkTWV0cmljW10ge1xuICAvLyBPbmUgbWV0cmljVGVtcGxhdGUgaGFzIGEgc2luZ2xlIHNldCBvZiBkaW1lbnNpb25zLCBidXQgdGhlIHNhbWUgbWV0cmljIE5BTUVcbiAgLy8gbWF5IG9jY3VyIGluIG11bHRpcGxlIG1ldHJpY1RlbXBsYXRlcyAoaWYgaXQgaGFzIG11bHRpcGxlIHNldHMgb2YgZGltZW5zaW9ucylcbiAgY29uc3QgbWV0cmljVGVtcGxhdGVzID0gY2FubmVkTWV0cmljc0luZGV4KClbY2xvdWRGb3JtYXRpb25OYW1lc3BhY2VdID8/IFtdO1xuXG4gIC8vIEZpcnN0IGNvbnN0cnVjdCBhbG1vc3Qgd2hhdCB3ZSBuZWVkLCBidXQgd2l0aCBhIHNpbmdsZSBkaW1lbnNpb24gcGVyIG1ldHJpY1xuICBjb25zdCBtZXRyaWNzV2l0aER1cGxpY2F0ZXMgPSBmbGF0TWFwKG1ldHJpY1RlbXBsYXRlcywgbWV0cmljU2V0ID0+IHtcbiAgICBjb25zdCBkaW1lbnNpb25zID0gbWV0cmljU2V0LmRpbWVuc2lvbnMubWFwKGQgPT4gZC5kaW1lbnNpb25OYW1lKTtcbiAgICByZXR1cm4gbWV0cmljU2V0Lm1ldHJpY3MubWFwKG1ldHJpYyA9PiAoe1xuICAgICAgbmFtZXNwYWNlOiBtZXRyaWNTZXQubmFtZXNwYWNlLFxuICAgICAgZGltZW5zaW9ucyxcbiAgICAgIG1ldHJpY05hbWU6IG1ldHJpYy5uYW1lLFxuICAgICAgZGVmYXVsdFN0YXQ6IG1ldHJpYy5kZWZhdWx0U3RhdCxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIC8vIFRoZW4gY29tYmluZSB0aGUgZGltZW5zaW9ucyBmb3IgdGhlIHNhbWUgbWV0cmljcyBpbnRvIGEgc2luZ2xlIGxpc3RcbiAgcmV0dXJuIGdyb3VwQnkobWV0cmljc1dpdGhEdXBsaWNhdGVzLCBtID0+IGAke20ubmFtZXNwYWNlfS8ke20ubWV0cmljTmFtZX1gKS5tYXAobWV0cmljcyA9PiAoe1xuICAgIG5hbWVzcGFjZTogbWV0cmljc1swXS5uYW1lc3BhY2UsXG4gICAgbWV0cmljTmFtZTogbWV0cmljc1swXS5tZXRyaWNOYW1lLFxuICAgIGRlZmF1bHRTdGF0OiBtZXRyaWNzWzBdLmRlZmF1bHRTdGF0LFxuICAgIGRpbWVuc2lvbnM6IEFycmF5LmZyb20oZGVkdXBlU3RyaW5nTGlzdHMobWV0cmljcy5tYXAobSA9PiBtLmRpbWVuc2lvbnMpKSkgYXMgYW55LFxuICB9KSk7XG59XG5cbnR5cGUgQ2FubmVkTWV0cmljc0luZGV4ID0gUmVjb3JkPHN0cmluZywgTWV0cmljVGVtcGxhdGVbXT47XG5cbmxldCBjYW5uZWRNZXRyaWNzQ2FjaGU6IENhbm5lZE1ldHJpY3NJbmRleCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBMb2FkIHRoZSBjYW5uZWQgbWV0cmljcyBmaWxlIGFuZCBwcm9jZXNzIGl0IGludG8gYW4gaW5kZXgsIGdyb3VwZWQgYnkgc2VydmljZSBuYW1lc3BhY2VcbiAqL1xuZnVuY3Rpb24gY2FubmVkTWV0cmljc0luZGV4KCkge1xuICBpZiAoY2FubmVkTWV0cmljc0NhY2hlID09PSB1bmRlZmluZWQpIHtcbiAgICBjYW5uZWRNZXRyaWNzQ2FjaGUgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGxvYWRDYW5uZWRNZXRyaWNzRmlsZSgpKSB7XG4gICAgICBmb3IgKGNvbnN0IG1ldHJpY1RlbXBsYXRlIG9mIGdyb3VwLm1ldHJpY1RlbXBsYXRlcykge1xuICAgICAgICBjb25zdCBbYXdzLCBzZXJ2aWNlXSA9IG1ldHJpY1RlbXBsYXRlLnJlc291cmNlVHlwZS5zcGxpdCgnOjonKTtcbiAgICAgICAgY29uc3Qgc2VydmljZUtleSA9IFthd3MsIHNlcnZpY2VdLmpvaW4oJzo6Jyk7XG4gICAgICAgIChjYW5uZWRNZXRyaWNzQ2FjaGVbc2VydmljZUtleV0gPz8gKGNhbm5lZE1ldHJpY3NDYWNoZVtzZXJ2aWNlS2V5XSA9IFtdKSkucHVzaChtZXRyaWNUZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW5uZWRNZXRyaWNzQ2FjaGU7XG59XG5cbmZ1bmN0aW9uIGZsYXRNYXA8QSwgQj4oeHM6IEFbXSwgZm46ICh4OiBBKSA9PiBCW10pOiBCW10ge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgeHMubWFwKGZuKSk7XG59XG5cbmZ1bmN0aW9uIGdyb3VwQnk8QT4oeHM6IEFbXSwga2V5Rm46ICh4OiBBKSA9PiBzdHJpbmcpOiBBcnJheTxOb25FbXB0eUFycmF5PEE+PiB7XG4gIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgTm9uRW1wdHlBcnJheTxBPj4gPSB7fTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5Rm4oeCk7XG4gICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgIG9ialtrZXldLnB1c2goeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9ialtrZXldID0gW3hdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopO1xufVxuXG5mdW5jdGlvbiogZGVkdXBlU3RyaW5nTGlzdHMoeHM6IHN0cmluZ1tdW10pOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZ1tdPiB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgeC5zb3J0KCk7XG4gICAgY29uc3Qga2V5ID0gYCR7eC5qb2luKCcsJyl9YDtcbiAgICBpZiAoIXNlZW4uaGFzKGtleSkpIHtcbiAgICAgIHlpZWxkIHg7XG4gICAgfVxuICAgIHNlZW4uYWRkKGtleSk7XG4gIH1cbn0iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FubmVkLW1ldHJpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjYW5uZWQtbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRkFBK0Y7QUE0Qy9GOztHQUVHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsdUJBQStCO0lBQ3JFLDhFQUE4RTtJQUM5RSxnRkFBZ0Y7SUFDaEYsTUFBTSxlQUFlLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUU1RSw4RUFBOEU7SUFDOUUsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxFQUFFO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztZQUM5QixVQUFVO1lBQ1YsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ3ZCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVztTQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUFDO0lBRUgsc0VBQXNFO0lBQ3RFLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQy9CLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUNqQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDbkMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFRO0tBQ2pGLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQXZCRCwwREF1QkM7QUFJRCxJQUFJLGtCQUFrRCxDQUFDO0FBRXZEOztHQUVHO0FBQ0gsU0FBUyxrQkFBa0I7SUFDekIsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUU7UUFDcEMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLEtBQUssTUFBTSxLQUFLLElBQUksNkNBQXFCLEVBQUUsRUFBRTtZQUMzQyxLQUFLLE1BQU0sY0FBYyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7Z0JBQ2xELE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ2hHO1NBQ0Y7S0FDRjtJQUNELE9BQU8sa0JBQWtCLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFPLEVBQU8sRUFBRSxFQUFpQjtJQUMvQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBSSxFQUFPLEVBQUUsS0FBdUI7SUFDbEQsTUFBTSxHQUFHLEdBQXFDLEVBQUUsQ0FBQztJQUNqRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNsQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ2QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjthQUFNO1lBQ0wsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEI7S0FDRjtJQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsUUFBUSxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBYztJQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQy9CLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2xCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxDQUFDO1NBQ1Q7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQ2Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9hZENhbm5lZE1ldHJpY3NGaWxlLCBNZXRyaWNUZW1wbGF0ZSB9IGZyb20gJy4vY2FubmVkLW1ldHJpY3MvY2FubmVkLW1ldHJpY3Mtc2NoZW1hJztcblxuZXhwb3J0IHR5cGUgTm9uRW1wdHlBcnJheTxUPiA9IFtULCAuLi5UW11dO1xuXG4vKipcbiAqIEEgc2luZ2xlIGNhbm5lZCBzZXJ2aWNlIG1ldHJpY1xuICpcbiAqIFRoZXNlIGFyZSBraW5kbHkgcHJvdmlkZWQgdG8gdXMgYnkgdGhlIGdvb2QgcGVvcGxlIG9mIENsb3VkV2F0Y2ggRXhwbG9yZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FubmVkTWV0cmljIHtcbiAgLyoqXG4gICAqIE1ldHJpYyBuYW1lc3BhY2VcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNZXRyaWMgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFsbCBwb3NzaWJsZSBkaW1lbnNpb24gcGVybXV0YXRpb25zIGZvciB0aGlzIG1ldHJpY1xuICAgKlxuICAgKiBNb3N0IG1ldHJpY3Mgd2lsbCBoYXZlIGEgc2luZ2xlIGxpc3Qgb2Ygc3RyaW5ncyBhcyB0aGVpciBvbmUgc2V0IG9mXG4gICAqIGFsbG93ZWQgZGltZW5zaW9ucywgYnV0IHNvbWUgbWV0cmljcyBhcmUgZW1pdHRlZCB1bmRlciBtdWx0aXBsZVxuICAgKiBjb21iaW5hdGlvbnMgb2YgZGltZW5zaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IGRpbWVuc2lvbnM6IE5vbkVtcHR5QXJyYXk8c3RyaW5nW10+O1xuXG4gIC8qKlxuICAgKiBTdWdnZXN0ZWQgZGVmYXVsdCBhZ2dyZWdyYXRpb24gc3RhdGlzdGljXG4gICAqXG4gICAqIE5vdCBhbHdheXMgdGhlIG1vc3QgYXBwcm9wcmlhdGUgb25lIHRvIHVzZSEgVGhlc2UgZGVmYXVsdHMgaGF2ZVxuICAgKiBiZWVuIGNsYXNzaWZpZWQgYnkgcGVvcGxlIGFuZCB0aGV5IGdlbmVyYWxseSBqdXN0IHBpY2sgXCJBdmVyYWdlXCJcbiAgICogYXMgdGhlIGRlZmF1bHQsIGV2ZW4gaWYgaXQgZG9lc24ndCBtYWtlIHNlbnNlLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTogZm9yIGV2ZW50LWJhc2VkIG1ldHJpY3MgdGhhdCBvbmx5IGV2ZXIgZW1pdCBgMWBcbiAgICogKGFuZCBuZXZlciBgMGApIHRoZSBiZXR0ZXIgc3RhdGlzdGljIHdvdWxkIGJlIGBTdW1gLlxuICAgKlxuICAgKiBVc2UgeW91ciBqdWRnZW1lbnQgYmFzZWQgb24gdGhlIHR5cGUgb2YgbWV0cmljIHRoaXMgaXMuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0U3RhdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgbGlzdCBvZiBjYW5uZWQgbWV0cmljcyBmb3IgdGhlIGdpdmVuIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbm5lZE1ldHJpY3NGb3JTZXJ2aWNlKGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmcpOiBDYW5uZWRNZXRyaWNbXSB7XG4gIC8vIE9uZSBtZXRyaWNUZW1wbGF0ZSBoYXMgYSBzaW5nbGUgc2V0IG9mIGRpbWVuc2lvbnMsIGJ1dCB0aGUgc2FtZSBtZXRyaWMgTkFNRVxuICAvLyBtYXkgb2NjdXIgaW4gbXVsdGlwbGUgbWV0cmljVGVtcGxhdGVzIChpZiBpdCBoYXMgbXVsdGlwbGUgc2V0cyBvZiBkaW1lbnNpb25zKVxuICBjb25zdCBtZXRyaWNUZW1wbGF0ZXMgPSBjYW5uZWRNZXRyaWNzSW5kZXgoKVtjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZV0gPz8gW107XG5cbiAgLy8gRmlyc3QgY29uc3RydWN0IGFsbW9zdCB3aGF0IHdlIG5lZWQsIGJ1dCB3aXRoIGEgc2luZ2xlIGRpbWVuc2lvbiBwZXIgbWV0cmljXG4gIGNvbnN0IG1ldHJpY3NXaXRoRHVwbGljYXRlcyA9IGZsYXRNYXAobWV0cmljVGVtcGxhdGVzLCBtZXRyaWNTZXQgPT4ge1xuICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBtZXRyaWNTZXQuZGltZW5zaW9ucy5tYXAoZCA9PiBkLmRpbWVuc2lvbk5hbWUpO1xuICAgIHJldHVybiBtZXRyaWNTZXQubWV0cmljcy5tYXAobWV0cmljID0+ICh7XG4gICAgICBuYW1lc3BhY2U6IG1ldHJpY1NldC5uYW1lc3BhY2UsXG4gICAgICBkaW1lbnNpb25zLFxuICAgICAgbWV0cmljTmFtZTogbWV0cmljLm5hbWUsXG4gICAgICBkZWZhdWx0U3RhdDogbWV0cmljLmRlZmF1bHRTdGF0LFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgLy8gVGhlbiBjb21iaW5lIHRoZSBkaW1lbnNpb25zIGZvciB0aGUgc2FtZSBtZXRyaWNzIGludG8gYSBzaW5nbGUgbGlzdFxuICByZXR1cm4gZ3JvdXBCeShtZXRyaWNzV2l0aER1cGxpY2F0ZXMsIG0gPT4gYCR7bS5uYW1lc3BhY2V9LyR7bS5tZXRyaWNOYW1lfWApLm1hcChtZXRyaWNzID0+ICh7XG4gICAgbmFtZXNwYWNlOiBtZXRyaWNzWzBdLm5hbWVzcGFjZSxcbiAgICBtZXRyaWNOYW1lOiBtZXRyaWNzWzBdLm1ldHJpY05hbWUsXG4gICAgZGVmYXVsdFN0YXQ6IG1ldHJpY3NbMF0uZGVmYXVsdFN0YXQsXG4gICAgZGltZW5zaW9uczogQXJyYXkuZnJvbShkZWR1cGVTdHJpbmdMaXN0cyhtZXRyaWNzLm1hcChtID0+IG0uZGltZW5zaW9ucykpKSBhcyBhbnksXG4gIH0pKTtcbn1cblxudHlwZSBDYW5uZWRNZXRyaWNzSW5kZXggPSBSZWNvcmQ8c3RyaW5nLCBNZXRyaWNUZW1wbGF0ZVtdPjtcblxubGV0IGNhbm5lZE1ldHJpY3NDYWNoZTogQ2FubmVkTWV0cmljc0luZGV4IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIExvYWQgdGhlIGNhbm5lZCBtZXRyaWNzIGZpbGUgYW5kIHByb2Nlc3MgaXQgaW50byBhbiBpbmRleCwgZ3JvdXBlZCBieSBzZXJ2aWNlIG5hbWVzcGFjZVxuICovXG5mdW5jdGlvbiBjYW5uZWRNZXRyaWNzSW5kZXgoKSB7XG4gIGlmIChjYW5uZWRNZXRyaWNzQ2FjaGUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNhbm5lZE1ldHJpY3NDYWNoZSA9IHt9O1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgbG9hZENhbm5lZE1ldHJpY3NGaWxlKCkpIHtcbiAgICAgIGZvciAoY29uc3QgbWV0cmljVGVtcGxhdGUgb2YgZ3JvdXAubWV0cmljVGVtcGxhdGVzKSB7XG4gICAgICAgIGNvbnN0IFthd3MsIHNlcnZpY2VdID0gbWV0cmljVGVtcGxhdGUucmVzb3VyY2VUeXBlLnNwbGl0KCc6OicpO1xuICAgICAgICBjb25zdCBzZXJ2aWNlS2V5ID0gW2F3cywgc2VydmljZV0uam9pbignOjonKTtcbiAgICAgICAgKGNhbm5lZE1ldHJpY3NDYWNoZVtzZXJ2aWNlS2V5XSA/PyAoY2FubmVkTWV0cmljc0NhY2hlW3NlcnZpY2VLZXldID0gW10pKS5wdXNoKG1ldHJpY1RlbXBsYXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhbm5lZE1ldHJpY3NDYWNoZTtcbn1cblxuZnVuY3Rpb24gZmxhdE1hcDxBLCBCPih4czogQVtdLCBmbjogKHg6IEEpID0+IEJbXSk6IEJbXSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCB4cy5tYXAoZm4pKTtcbn1cblxuZnVuY3Rpb24gZ3JvdXBCeTxBPih4czogQVtdLCBrZXlGbjogKHg6IEEpID0+IHN0cmluZyk6IEFycmF5PE5vbkVtcHR5QXJyYXk8QT4+IHtcbiAgY29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCBOb25FbXB0eUFycmF5PEE+PiA9IHt9O1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICBjb25zdCBrZXkgPSBrZXlGbih4KTtcbiAgICBpZiAoa2V5IGluIG9iaikge1xuICAgICAgb2JqW2tleV0ucHVzaCh4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqW2tleV0gPSBbeF07XG4gICAgfVxuICB9XG4gIHJldHVybiBPYmplY3QudmFsdWVzKG9iaik7XG59XG5cbmZ1bmN0aW9uKiBkZWR1cGVTdHJpbmdMaXN0cyh4czogc3RyaW5nW11bXSk6IEl0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nW10+IHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICB4LnNvcnQoKTtcbiAgICBjb25zdCBrZXkgPSBgJHt4LmpvaW4oJywnKX1gO1xuICAgIGlmICghc2Vlbi5oYXMoa2V5KSkge1xuICAgICAgeWllbGQgeDtcbiAgICB9XG4gICAgc2Vlbi5hZGQoa2V5KTtcbiAgfVxufSJdfQ==
@@ -14,13 +14,20 @@ exports.scrutinizableResourceTypes = exports.scrutinizablePropertyNames = export
14
14
  const crypto = require("crypto");
15
15
  const schema = require("./schema");
16
16
  exports.schema = schema;
17
+ const schema_1 = require("./schema");
17
18
  __exportStar(require("./canned-metrics"), exports);
18
19
  /**
19
20
  * The complete AWS CloudFormation Resource specification, having any CDK patches and enhancements included in it.
20
21
  */
21
22
  function specification() {
22
23
  // eslint-disable-next-line @typescript-eslint/no-require-imports
23
- return require('../spec/specification.json');
24
+ const spec = require('../spec/specification.json');
25
+ // Modify spec in place, remove complex attributes
26
+ for (const resource of Object.values(spec.ResourceTypes)) {
27
+ resource.Attributes = Object.fromEntries(Object.entries(resource.Attributes ?? [])
28
+ .filter(([_, attr]) => schema_1.isPrimitiveAttribute(attr) || schema_1.isListAttribute(attr) || schema_1.isMapAttribute(attr)));
29
+ }
30
+ return spec;
24
31
  }
25
32
  exports.specification = specification;
26
33
  /**
@@ -78,12 +85,11 @@ exports.resourceAugmentation = resourceAugmentation;
78
85
  * Get the resource augmentations for a given type
79
86
  */
80
87
  function cfnLintAnnotations(typeName) {
81
- var _a, _b;
82
88
  // eslint-disable-next-line @typescript-eslint/no-require-imports
83
89
  const allAnnotations = require('../spec/cfn-lint.json');
84
90
  return {
85
91
  stateful: !!allAnnotations.StatefulResources.ResourceTypes[typeName],
86
- mustBeEmptyToDelete: (_b = (_a = allAnnotations.StatefulResources.ResourceTypes[typeName]) === null || _a === void 0 ? void 0 : _a.DeleteRequiresEmptyResource) !== null && _b !== void 0 ? _b : false,
92
+ mustBeEmptyToDelete: allAnnotations.StatefulResources.ResourceTypes[typeName]?.DeleteRequiresEmptyResource ?? false,
87
93
  };
88
94
  }
89
95
  exports.cfnLintAnnotations = cfnLintAnnotations;
@@ -191,4 +197,4 @@ function scrutinizableResourceTypes(scrutinyTypes) {
191
197
  return ret;
192
198
  }
193
199
  exports.scrutinizableResourceTypes = scrutinizableResourceTypes;
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBRWpDLG1DQUFtQztBQUMxQix3QkFBTTtBQUNmLG1EQUFpQztBQUVqQzs7R0FFRztBQUNILFNBQWdCLGFBQWE7SUFDM0IsaUVBQWlFO0lBQ2pFLE9BQU8sT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUhELHNDQUdDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixJQUFJO0lBQ2xCLGlFQUFpRTtJQUNqRSxPQUFPLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFIRCxvQkFHQztBQUdEOzs7OztHQUtHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0I7SUFDcEQsTUFBTSxHQUFHLEdBQUcsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixRQUFRLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsc0RBTUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxZQUFvQixFQUFFLGdCQUF5QjtJQUN0RSxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3BGLE1BQU0sR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsT0FBTztZQUNMLFdBQVcsRUFBRSxFQUFFO1lBQ2YsVUFBVSxFQUFFLEVBQUU7U0FDZixDQUFDO0tBQ0g7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFWRCw0QkFVQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsUUFBZ0I7SUFDbkQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUMsSUFBSTtRQUNGLGlFQUFpRTtRQUNqRSxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsUUFBUSxPQUFPLENBQUMsQ0FBQztLQUNwRDtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxFQUFFLENBQUM7S0FDWDtBQUNILENBQUM7QUFSRCxvREFRQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsUUFBZ0I7O0lBQ2pELGlFQUFpRTtJQUNqRSxNQUFNLGNBQWMsR0FBc0IsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFM0UsT0FBTztRQUNMLFFBQVEsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDcEUsbUJBQW1CLGNBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsMENBQUUsMkJBQTJCLG1DQUFJLEtBQUs7S0FDcEgsQ0FBQztBQUNKLENBQUM7QUFSRCxnREFRQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsUUFBZ0IsRUFBRSxZQUFvQjtJQUMxRSxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdEUsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxRQUFRLHFCQUFxQixZQUFZLEVBQUUsQ0FBQyxDQUFDO0tBQzFFO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsc0RBTUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFGRCxzQ0FFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsVUFBVTtJQUN4QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFGRCxnQ0FFQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFnQztJQUNwRSxNQUFNLElBQUksR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUU3QixNQUFNLE1BQU0sR0FBeUIsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3RyxNQUFNLFNBQVMsR0FBVyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBQ25DLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQzFCLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQ3pGLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoRTtLQUNGO0lBQ0QsTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pHLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFmRCxzREFlQztBQUlEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxhQUFhLENBQUMsTUFBZ0M7SUFDckQsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDOUIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUM7S0FDMUI7U0FBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtRQUN2QyxPQUFPLE1BQWdCLENBQUM7S0FDekI7U0FBTTtRQUNMLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQztLQUNyQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDBCQUEwQixDQUFDLFlBQW9CLEVBQUUsYUFBNEM7SUFDM0csTUFBTSxJQUFJLEdBQUcsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pELElBQUksQ0FBQyxJQUFJLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBRXpCLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFFaEMsS0FBSyxNQUFNLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUNoRixJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDekYsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN4QjtLQUNGO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBYkQsZ0VBYUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDBCQUEwQixDQUFDLGFBQTRDO0lBQ3JGLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFDaEMsS0FBSyxNQUFNLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDeEYsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pGLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDeEI7S0FDRjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQVRELGdFQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBDZm5MaW50RmlsZVNjaGVtYSB9IGZyb20gJy4vX3ByaXZhdGVfc2NoZW1hL2Nmbi1saW50JztcbmltcG9ydCAqIGFzIHNjaGVtYSBmcm9tICcuL3NjaGVtYSc7XG5leHBvcnQgeyBzY2hlbWEgfTtcbmV4cG9ydCAqIGZyb20gJy4vY2FubmVkLW1ldHJpY3MnO1xuXG4vKipcbiAqIFRoZSBjb21wbGV0ZSBBV1MgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2Ugc3BlY2lmaWNhdGlvbiwgaGF2aW5nIGFueSBDREsgcGF0Y2hlcyBhbmQgZW5oYW5jZW1lbnRzIGluY2x1ZGVkIGluIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BlY2lmaWNhdGlvbigpOiBzY2hlbWEuU3BlY2lmaWNhdGlvbiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIHJldHVybiByZXF1aXJlKCcuLi9zcGVjL3NwZWNpZmljYXRpb24uanNvbicpO1xufVxuXG4vKipcbiAqIFRoZSBjb21wbGV0ZSBBV1MgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2Ugc3BlY2lmaWNhdGlvbiwgaGF2aW5nIGFueSBDREsgcGF0Y2hlcyBhbmQgZW5oYW5jZW1lbnRzIGluY2x1ZGVkIGluIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZG9jcygpOiBzY2hlbWEuQ2xvdWRGb3JtYXRpb25Eb2NzRmlsZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIHJldHVybiByZXF1aXJlKCcuLi9zcGVjL2Nmbi1kb2NzLmpzb24nKTtcbn1cblxuXG4vKipcbiAqIFJldHVybiB0aGUgcmVzb3VyY2Ugc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGdpdmVuIHR5cGVuYW1lXG4gKlxuICogVmFsaWRhdGVzIHRoYXQgdGhlIHJlc291cmNlIGV4aXN0cy4gSWYgeW91IGRvbid0IHdhbnQgdGhpcyB2YWxpZGF0aW5nIGJlaGF2aW9yLCByZWFkIGZyb21cbiAqIHNwZWNpZmljYXRpb24oKSBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc291cmNlU3BlY2lmaWNhdGlvbih0eXBlTmFtZTogc3RyaW5nKTogc2NoZW1hLlJlc291cmNlVHlwZSB7XG4gIGNvbnN0IHJldCA9IHNwZWNpZmljYXRpb24oKS5SZXNvdXJjZVR5cGVzW3R5cGVOYW1lXTtcbiAgaWYgKCFyZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggcmVzb3VyY2UgdHlwZTogJHt0eXBlTmFtZX1gKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFJldHVybiBkb2N1bWVudGF0aW9uIGZvciB0aGUgZ2l2ZW4gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHlwZURvY3MocmVzb3VyY2VOYW1lOiBzdHJpbmcsIHByb3BlcnR5VHlwZU5hbWU/OiBzdHJpbmcpOiBzY2hlbWEuQ2xvdWRGb3JtYXRpb25UeXBlRG9jcyB7XG4gIGNvbnN0IGtleSA9IHByb3BlcnR5VHlwZU5hbWUgPyBgJHtyZXNvdXJjZU5hbWV9LiR7cHJvcGVydHlUeXBlTmFtZX1gIDogcmVzb3VyY2VOYW1lO1xuICBjb25zdCByZXQgPSBkb2NzKCkuVHlwZXNba2V5XTtcbiAgaWYgKCFyZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgcHJvcGVydGllczoge30sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmVzb3VyY2UgYXVnbWVudGF0aW9ucyBmb3IgYSBnaXZlbiB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvdXJjZUF1Z21lbnRhdGlvbih0eXBlTmFtZTogc3RyaW5nKTogc2NoZW1hLlJlc291cmNlQXVnbWVudGF0aW9uIHtcbiAgY29uc3QgZmlsZU5hbWUgPSB0eXBlTmFtZS5yZXBsYWNlKC86Oi9nLCAnXycpO1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgcmV0dXJuIHJlcXVpcmUoYC4vYXVnbWVudGF0aW9ucy8ke2ZpbGVOYW1lfS5qc29uYCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHJlc291cmNlIGF1Z21lbnRhdGlvbnMgZm9yIGEgZ2l2ZW4gdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2ZuTGludEFubm90YXRpb25zKHR5cGVOYW1lOiBzdHJpbmcpOiBzY2hlbWEuQ2ZuTGludFJlc291cmNlQW5ub3RhdGlvbnMge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICBjb25zdCBhbGxBbm5vdGF0aW9uczogQ2ZuTGludEZpbGVTY2hlbWEgPSByZXF1aXJlKCcuLi9zcGVjL2Nmbi1saW50Lmpzb24nKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXRlZnVsOiAhIWFsbEFubm90YXRpb25zLlN0YXRlZnVsUmVzb3VyY2VzLlJlc291cmNlVHlwZXNbdHlwZU5hbWVdLFxuICAgIG11c3RCZUVtcHR5VG9EZWxldGU6IGFsbEFubm90YXRpb25zLlN0YXRlZnVsUmVzb3VyY2VzLlJlc291cmNlVHlwZXNbdHlwZU5hbWVdPy5EZWxldGVSZXF1aXJlc0VtcHR5UmVzb3VyY2UgPz8gZmFsc2UsXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwcm9wZXJ0eSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZ2l2ZW4gcmVzb3VyY2UncyBwcm9wZXJ0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlTcGVjaWZpY2F0aW9uKHR5cGVOYW1lOiBzdHJpbmcsIHByb3BlcnR5TmFtZTogc3RyaW5nKTogc2NoZW1hLlByb3BlcnR5IHtcbiAgY29uc3QgcmV0ID0gcmVzb3VyY2VTcGVjaWZpY2F0aW9uKHR5cGVOYW1lKS5Qcm9wZXJ0aWVzIVtwcm9wZXJ0eU5hbWVdO1xuICBpZiAoIXJldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVzb3VyY2UgJHt0eXBlTmFtZX0gaGFzIG5vIHByb3BlcnR5OiAke3Byb3BlcnR5TmFtZX1gKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFRoZSBsaXN0IG9mIHJlc291cmNlIHR5cGUgbmFtZXMgZGVmaW5lZCBpbiB0aGUgYGBzcGVjaWZpY2F0aW9uYGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvdXJjZVR5cGVzKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoc3BlY2lmaWNhdGlvbigpLlJlc291cmNlVHlwZXMpO1xufVxuXG4vKipcbiAqIFRoZSBsaXN0IG9mIG5hbWVzcGFjZXMgZGVmaW5lZCBpbiB0aGUgYGBzcGVjaWZpY2F0aW9uYGAsIHRoYXQgaXMgcmVzb3VyY2UgbmFtZSBwcmVmaXhlcyBkb3duIHRvIHRoZSBzZWNvbmQgYGA6OmBgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlcygpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChyZXNvdXJjZVR5cGVzKCkubWFwKG4gPT4gbi5zcGxpdCgnOjonLCAyKS5qb2luKCc6OicpKSkpO1xufVxuXG4vKipcbiAqIE9idGFpbiBhIGZpbHRlcmVkIHZlcnNpb24gb2YgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiBzcGVjaWZpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBmaWx0ZXIgdGhlIHByZWRpY2F0ZSB0byBiZSB1c2VkIGluIG9yZGVyIHRvIGZpbHRlciB3aGljaCByZXNvdXJjZSB0eXBlcyBmcm9tIHRoZSBgYFNwZWNpZmljYXRpb25gYCB0byBleHRyYWN0LlxuICogICAgICAgICBXaGVuIHBhc3NlZCBhcyBhIGBgc3RyaW5nYGAsIG9ubHkgdGhlIHNwZWNpZmllZCByZXNvdXJjZSB0eXBlIHdpbGwgYmUgZXh0cmFjdGVkLiBXaGVuIHBhc3NlZCBhcyBhXG4gKiAgICAgICAgIGBgUmVnRXhwYGAsIGFsbCBtYXRjaGluZyByZXNvdXJjZSB0eXBlcyB3aWxsIGJlIGV4dHJhY3RlZC4gV2hlbiBwYXNzZWQgYXMgYSBgYGZ1bmN0aW9uYGAsIGFsbCByZXNvdXJjZVxuICogICAgICAgICB0eXBlcyBmb3Igd2hpY2ggdGhlIGZ1bmN0aW9uIHJldHVybmVkIGBgdHJ1ZWBgIHdpbGwgYmUgZXh0cmFjdGVkLlxuICpcbiAqIEByZXR1cm4gYSBjb2hlcmVudCBzdWItc2V0IG9mIHRoZSBBV1MgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2Ugc3BlY2lmaWNhdGlvbiwgaW5jbHVkaW5nIGFsbCBwcm9wZXJ0eSB0eXBlcyByZWxhdGVkXG4gKiAgICAgdG8gdGhlIHNlbGVjdGVkIHJlc291cmNlIHR5cGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyZWRTcGVjaWZpY2F0aW9uKGZpbHRlcjogc3RyaW5nIHwgUmVnRXhwIHwgRmlsdGVyKTogc2NoZW1hLlNwZWNpZmljYXRpb24ge1xuICBjb25zdCBzcGVjID0gc3BlY2lmaWNhdGlvbigpO1xuXG4gIGNvbnN0IHJlc3VsdDogc2NoZW1hLlNwZWNpZmljYXRpb24gPSB7IFJlc291cmNlVHlwZXM6IHt9LCBQcm9wZXJ0eVR5cGVzOiB7fSwgRmluZ2VycHJpbnQ6IHNwZWMuRmluZ2VycHJpbnQgfTtcbiAgY29uc3QgcHJlZGljYXRlOiBGaWx0ZXIgPSBtYWtlUHJlZGljYXRlKGZpbHRlcik7XG4gIGZvciAoY29uc3QgdHlwZSBvZiByZXNvdXJjZVR5cGVzKCkpIHtcbiAgICBpZiAoIXByZWRpY2F0ZSh0eXBlKSkgeyBjb250aW51ZTsgfVxuICAgIHJlc3VsdC5SZXNvdXJjZVR5cGVzW3R5cGVdID0gc3BlYy5SZXNvdXJjZVR5cGVzW3R5cGVdO1xuICAgIGNvbnN0IHByZWZpeCA9IGAke3R5cGV9LmA7XG4gICAgZm9yIChjb25zdCBwcm9wVHlwZSBvZiBPYmplY3Qua2V5cyhzcGVjLlByb3BlcnR5VHlwZXMhKS5maWx0ZXIobiA9PiBuLnN0YXJ0c1dpdGgocHJlZml4KSkpIHtcbiAgICAgIHJlc3VsdC5Qcm9wZXJ0eVR5cGVzW3Byb3BUeXBlXSA9IHNwZWMuUHJvcGVydHlUeXBlcyFbcHJvcFR5cGVdO1xuICAgIH1cbiAgfVxuICByZXN1bHQuRmluZ2VycHJpbnQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KHJlc3VsdCkpLmRpZ2VzdCgnYmFzZTY0Jyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlciA9IChuYW1lOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHByZWRpY2F0ZSBmdW5jdGlvbiBmcm9tIGEgZ2l2ZW4gZmlsdGVyLlxuICpcbiAqIEBwYXJhbSBmaWx0ZXIgd2hlbiBwcm92aWRlZCBhcyBhIGBgc3RyaW5nYGAsIHBlcmZvcm1zIGFuIGV4YWN0IG1hdGNoIGNvbXBhcmlzb24uXG4gKiAgICAgICAgIHdoZW4gcHJvdmlkZWQgYXMgYSBgYFJlZ0V4cGBgLCBwZXJmb3JtcyB1c2VzIGBgc3RyLm1hdGNoKFJlZ0V4cClgYC5cbiAqICAgICAgICAgd2hlbiBwcm92aWRlZCBhcyBhIGBgZnVuY3Rpb25gYCwgdXNlIHRoZSBmdW5jdGlvbiBhcy1pcy5cbiAqXG4gKiBAcmV0dXJucyBhIHByZWRpY2F0ZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFrZVByZWRpY2F0ZShmaWx0ZXI6IHN0cmluZyB8IFJlZ0V4cCB8IEZpbHRlcik6IEZpbHRlciB7XG4gIGlmICh0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzID0+IHMgPT09IGZpbHRlcjtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZpbHRlciBhcyBGaWx0ZXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHMgPT4gcy5tYXRjaChmaWx0ZXIpICE9IG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHByb3BlcnRpZXMgb2YgdGhlIGdpdmVuIHR5cGUgdGhhdCByZXF1aXJlIHRoZSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1dGluaXphYmxlUHJvcGVydHlOYW1lcyhyZXNvdXJjZVR5cGU6IHN0cmluZywgc2NydXRpbnlUeXBlczogc2NoZW1hLlByb3BlcnR5U2NydXRpbnlUeXBlW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGltcGwgPSBzcGVjaWZpY2F0aW9uKCkuUmVzb3VyY2VUeXBlc1tyZXNvdXJjZVR5cGVdO1xuICBpZiAoIWltcGwpIHsgcmV0dXJuIFtdOyB9XG5cbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHByb3BlcnR5U3BlY10gb2YgT2JqZWN0LmVudHJpZXMoaW1wbC5Qcm9wZXJ0aWVzIHx8IHt9KSkge1xuICAgIGlmIChzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHByb3BlcnR5U3BlYy5TY3J1dGlueVR5cGUgfHwgc2NoZW1hLlByb3BlcnR5U2NydXRpbnlUeXBlLk5vbmUpKSB7XG4gICAgICByZXQucHVzaChwcm9wZXJ0eU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBuYW1lcyBvZiB0aGUgcmVzb3VyY2UgdHlwZXMgdGhhdCBuZWVkIHRvIGJlIHN1YmplY3RlZCB0byBhZGRpdGlvbmFsIHNjcnV0aW55XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3J1dGluaXphYmxlUmVzb3VyY2VUeXBlcyhzY3J1dGlueVR5cGVzOiBzY2hlbWEuUmVzb3VyY2VTY3J1dGlueVR5cGVbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBbcmVzb3VyY2VUeXBlLCByZXNvdXJjZVNwZWNdIG9mIE9iamVjdC5lbnRyaWVzKHNwZWNpZmljYXRpb24oKS5SZXNvdXJjZVR5cGVzKSkge1xuICAgIGlmIChzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlc291cmNlU3BlYy5TY3J1dGlueVR5cGUgfHwgc2NoZW1hLlJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpKSB7XG4gICAgICByZXQucHVzaChyZXNvdXJjZVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBRWpDLG1DQUFtQztBQUUxQix3QkFBTTtBQURmLHFDQUFpRjtBQUVqRixtREFBaUM7QUFFakM7O0dBRUc7QUFDSCxTQUFnQixhQUFhO0lBQzNCLGlFQUFpRTtJQUNqRSxNQUFNLElBQUksR0FBeUIsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFFekUsa0RBQWtEO0lBQ2xELEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDeEQsUUFBUSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7YUFDL0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLDZCQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLHdCQUFlLENBQUMsSUFBSSxDQUFDLElBQUksdUJBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFDLENBQUM7S0FDekc7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFYRCxzQ0FXQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSTtJQUNsQixpRUFBaUU7SUFDakUsT0FBTyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBSEQsb0JBR0M7QUFHRDs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFFBQWdCO0lBQ3BELE1BQU0sR0FBRyxHQUFHLGFBQWEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsUUFB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SCxTQUFnQiwwQkFBMEIsQ0FBQyxZQUFvQixFQUFFLGFBQTRDO0lBQzNHLE1BQU0sSUFBSSxHQUFHLGFBQWEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6RCxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7S0FBRTtJQUV6QixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBRWhDLEtBQUssTUFBTSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDaEYsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pGLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDeEI7S0FDRjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQWJELGdFQWFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiwwQkFBMEIsQ0FBQyxhQUE0QztJQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ2hDLEtBQUssTUFBTSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQ3hGLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6RixHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3hCO0tBQ0Y7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFURCxnRUFTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgQ2ZuTGludEZpbGVTY2hlbWEgfSBmcm9tICcuL19wcml2YXRlX3NjaGVtYS9jZm4tbGludCc7XG5pbXBvcnQgKiBhcyBzY2hlbWEgZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHsgaXNQcmltaXRpdmVBdHRyaWJ1dGUsIGlzTGlzdEF0dHJpYnV0ZSwgaXNNYXBBdHRyaWJ1dGUgfSBmcm9tICcuL3NjaGVtYSc7XG5leHBvcnQgeyBzY2hlbWEgfTtcbmV4cG9ydCAqIGZyb20gJy4vY2FubmVkLW1ldHJpY3MnO1xuXG4vKipcbiAqIFRoZSBjb21wbGV0ZSBBV1MgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2Ugc3BlY2lmaWNhdGlvbiwgaGF2aW5nIGFueSBDREsgcGF0Y2hlcyBhbmQgZW5oYW5jZW1lbnRzIGluY2x1ZGVkIGluIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BlY2lmaWNhdGlvbigpOiBzY2hlbWEuU3BlY2lmaWNhdGlvbiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IHNwZWM6IHNjaGVtYS5TcGVjaWZpY2F0aW9uID0gcmVxdWlyZSgnLi4vc3BlYy9zcGVjaWZpY2F0aW9uLmpzb24nKTtcblxuICAvLyBNb2RpZnkgc3BlYyBpbiBwbGFjZSwgcmVtb3ZlIGNvbXBsZXggYXR0cmlidXRlc1xuICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIE9iamVjdC52YWx1ZXMoc3BlYy5SZXNvdXJjZVR5cGVzKSkge1xuICAgIHJlc291cmNlLkF0dHJpYnV0ZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocmVzb3VyY2UuQXR0cmlidXRlcyA/PyBbXSlcbiAgICAgIC5maWx0ZXIoKFtfLCBhdHRyXSkgPT4gaXNQcmltaXRpdmVBdHRyaWJ1dGUoYXR0cikgfHwgaXNMaXN0QXR0cmlidXRlKGF0dHIpIHx8IGlzTWFwQXR0cmlidXRlKGF0dHIpICkpO1xuICB9XG5cbiAgcmV0dXJuIHNwZWM7XG59XG5cbi8qKlxuICogVGhlIGNvbXBsZXRlIEFXUyBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZSBzcGVjaWZpY2F0aW9uLCBoYXZpbmcgYW55IENESyBwYXRjaGVzIGFuZCBlbmhhbmNlbWVudHMgaW5jbHVkZWQgaW4gaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb2NzKCk6IHNjaGVtYS5DbG91ZEZvcm1hdGlvbkRvY3NGaWxlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgcmV0dXJuIHJlcXVpcmUoJy4uL3NwZWMvY2ZuLWRvY3MuanNvbicpO1xufVxuXG5cbi8qKlxuICogUmV0dXJuIHRoZSByZXNvdXJjZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZ2l2ZW4gdHlwZW5hbWVcbiAqXG4gKiBWYWxpZGF0ZXMgdGhhdCB0aGUgcmVzb3VyY2UgZXhpc3RzLiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGlzIHZhbGlkYXRpbmcgYmVoYXZpb3IsIHJlYWQgZnJvbVxuICogc3BlY2lmaWNhdGlvbigpIGRpcmVjdGx5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VTcGVjaWZpY2F0aW9uKHR5cGVOYW1lOiBzdHJpbmcpOiBzY2hlbWEuUmVzb3VyY2VUeXBlIHtcbiAgY29uc3QgcmV0ID0gc3BlY2lmaWNhdGlvbigpLlJlc291cmNlVHlwZXNbdHlwZU5hbWVdO1xuICBpZiAoIXJldCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCByZXNvdXJjZSB0eXBlOiAke3R5cGVOYW1lfWApO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogUmV0dXJuIGRvY3VtZW50YXRpb24gZm9yIHRoZSBnaXZlbiB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRG9jcyhyZXNvdXJjZU5hbWU6IHN0cmluZywgcHJvcGVydHlUeXBlTmFtZT86IHN0cmluZyk6IHNjaGVtYS5DbG91ZEZvcm1hdGlvblR5cGVEb2NzIHtcbiAgY29uc3Qga2V5ID0gcHJvcGVydHlUeXBlTmFtZSA/IGAke3Jlc291cmNlTmFtZX0uJHtwcm9wZXJ0eVR5cGVOYW1lfWAgOiByZXNvdXJjZU5hbWU7XG4gIGNvbnN0IHJldCA9IGRvY3MoKS5UeXBlc1trZXldO1xuICBpZiAoIXJldCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogR2V0IHRoZSByZXNvdXJjZSBhdWdtZW50YXRpb25zIGZvciBhIGdpdmVuIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc291cmNlQXVnbWVudGF0aW9uKHR5cGVOYW1lOiBzdHJpbmcpOiBzY2hlbWEuUmVzb3VyY2VBdWdtZW50YXRpb24ge1xuICBjb25zdCBmaWxlTmFtZSA9IHR5cGVOYW1lLnJlcGxhY2UoLzo6L2csICdfJyk7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICByZXR1cm4gcmVxdWlyZShgLi9hdWdtZW50YXRpb25zLyR7ZmlsZU5hbWV9Lmpzb25gKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgcmVzb3VyY2UgYXVnbWVudGF0aW9ucyBmb3IgYSBnaXZlbiB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjZm5MaW50QW5ub3RhdGlvbnModHlwZU5hbWU6IHN0cmluZyk6IHNjaGVtYS5DZm5MaW50UmVzb3VyY2VBbm5vdGF0aW9ucyB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IGFsbEFubm90YXRpb25zOiBDZm5MaW50RmlsZVNjaGVtYSA9IHJlcXVpcmUoJy4uL3NwZWMvY2ZuLWxpbnQuanNvbicpO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdGVmdWw6ICEhYWxsQW5ub3RhdGlvbnMuU3RhdGVmdWxSZXNvdXJjZXMuUmVzb3VyY2VUeXBlc1t0eXBlTmFtZV0sXG4gICAgbXVzdEJlRW1wdHlUb0RlbGV0ZTogYWxsQW5ub3RhdGlvbnMuU3RhdGVmdWxSZXNvdXJjZXMuUmVzb3VyY2VUeXBlc1t0eXBlTmFtZV0/LkRlbGV0ZVJlcXVpcmVzRW1wdHlSZXNvdXJjZSA/PyBmYWxzZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHByb3BlcnR5IHNwZWNpZmljYXRpb24gZm9yIHRoZSBnaXZlbiByZXNvdXJjZSdzIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eVNwZWNpZmljYXRpb24odHlwZU5hbWU6IHN0cmluZywgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzY2hlbWEuUHJvcGVydHkge1xuICBjb25zdCByZXQgPSByZXNvdXJjZVNwZWNpZmljYXRpb24odHlwZU5hbWUpLlByb3BlcnRpZXMhW3Byb3BlcnR5TmFtZV07XG4gIGlmICghcmV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBSZXNvdXJjZSAke3R5cGVOYW1lfSBoYXMgbm8gcHJvcGVydHk6ICR7cHJvcGVydHlOYW1lfWApO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogVGhlIGxpc3Qgb2YgcmVzb3VyY2UgdHlwZSBuYW1lcyBkZWZpbmVkIGluIHRoZSBgYHNwZWNpZmljYXRpb25gYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc291cmNlVHlwZXMoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzcGVjaWZpY2F0aW9uKCkuUmVzb3VyY2VUeXBlcyk7XG59XG5cbi8qKlxuICogVGhlIGxpc3Qgb2YgbmFtZXNwYWNlcyBkZWZpbmVkIGluIHRoZSBgYHNwZWNpZmljYXRpb25gYCwgdGhhdCBpcyByZXNvdXJjZSBuYW1lIHByZWZpeGVzIGRvd24gdG8gdGhlIHNlY29uZCBgYDo6YGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lc3BhY2VzKCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KHJlc291cmNlVHlwZXMoKS5tYXAobiA9PiBuLnNwbGl0KCc6OicsIDIpLmpvaW4oJzo6JykpKSk7XG59XG5cbi8qKlxuICogT2J0YWluIGEgZmlsdGVyZWQgdmVyc2lvbiBvZiB0aGUgQVdTIENsb3VkRm9ybWF0aW9uIHNwZWNpZmljYXRpb24uXG4gKlxuICogQHBhcmFtIGZpbHRlciB0aGUgcHJlZGljYXRlIHRvIGJlIHVzZWQgaW4gb3JkZXIgdG8gZmlsdGVyIHdoaWNoIHJlc291cmNlIHR5cGVzIGZyb20gdGhlIGBgU3BlY2lmaWNhdGlvbmBgIHRvIGV4dHJhY3QuXG4gKiAgICAgICAgIFdoZW4gcGFzc2VkIGFzIGEgYGBzdHJpbmdgYCwgb25seSB0aGUgc3BlY2lmaWVkIHJlc291cmNlIHR5cGUgd2lsbCBiZSBleHRyYWN0ZWQuIFdoZW4gcGFzc2VkIGFzIGFcbiAqICAgICAgICAgYGBSZWdFeHBgYCwgYWxsIG1hdGNoaW5nIHJlc291cmNlIHR5cGVzIHdpbGwgYmUgZXh0cmFjdGVkLiBXaGVuIHBhc3NlZCBhcyBhIGBgZnVuY3Rpb25gYCwgYWxsIHJlc291cmNlXG4gKiAgICAgICAgIHR5cGVzIGZvciB3aGljaCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYGB0cnVlYGAgd2lsbCBiZSBleHRyYWN0ZWQuXG4gKlxuICogQHJldHVybiBhIGNvaGVyZW50IHN1Yi1zZXQgb2YgdGhlIEFXUyBDbG91ZEZvcm1hdGlvbiBSZXNvdXJjZSBzcGVjaWZpY2F0aW9uLCBpbmNsdWRpbmcgYWxsIHByb3BlcnR5IHR5cGVzIHJlbGF0ZWRcbiAqICAgICB0byB0aGUgc2VsZWN0ZWQgcmVzb3VyY2UgdHlwZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJlZFNwZWNpZmljYXRpb24oZmlsdGVyOiBzdHJpbmcgfCBSZWdFeHAgfCBGaWx0ZXIpOiBzY2hlbWEuU3BlY2lmaWNhdGlvbiB7XG4gIGNvbnN0IHNwZWMgPSBzcGVjaWZpY2F0aW9uKCk7XG5cbiAgY29uc3QgcmVzdWx0OiBzY2hlbWEuU3BlY2lmaWNhdGlvbiA9IHsgUmVzb3VyY2VUeXBlczoge30sIFByb3BlcnR5VHlwZXM6IHt9LCBGaW5nZXJwcmludDogc3BlYy5GaW5nZXJwcmludCB9O1xuICBjb25zdCBwcmVkaWNhdGU6IEZpbHRlciA9IG1ha2VQcmVkaWNhdGUoZmlsdGVyKTtcbiAgZm9yIChjb25zdCB0eXBlIG9mIHJlc291cmNlVHlwZXMoKSkge1xuICAgIGlmICghcHJlZGljYXRlKHR5cGUpKSB7IGNvbnRpbnVlOyB9XG4gICAgcmVzdWx0LlJlc291cmNlVHlwZXNbdHlwZV0gPSBzcGVjLlJlc291cmNlVHlwZXNbdHlwZV07XG4gICAgY29uc3QgcHJlZml4ID0gYCR7dHlwZX0uYDtcbiAgICBmb3IgKGNvbnN0IHByb3BUeXBlIG9mIE9iamVjdC5rZXlzKHNwZWMuUHJvcGVydHlUeXBlcyEpLmZpbHRlcihuID0+IG4uc3RhcnRzV2l0aChwcmVmaXgpKSkge1xuICAgICAgcmVzdWx0LlByb3BlcnR5VHlwZXNbcHJvcFR5cGVdID0gc3BlYy5Qcm9wZXJ0eVR5cGVzIVtwcm9wVHlwZV07XG4gICAgfVxuICB9XG4gIHJlc3VsdC5GaW5nZXJwcmludCA9IGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoSlNPTi5zdHJpbmdpZnkocmVzdWx0KSkuZGlnZXN0KCdiYXNlNjQnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgRmlsdGVyID0gKG5hbWU6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcHJlZGljYXRlIGZ1bmN0aW9uIGZyb20gYSBnaXZlbiBmaWx0ZXIuXG4gKlxuICogQHBhcmFtIGZpbHRlciB3aGVuIHByb3ZpZGVkIGFzIGEgYGBzdHJpbmdgYCwgcGVyZm9ybXMgYW4gZXhhY3QgbWF0Y2ggY29tcGFyaXNvbi5cbiAqICAgICAgICAgd2hlbiBwcm92aWRlZCBhcyBhIGBgUmVnRXhwYGAsIHBlcmZvcm1zIHVzZXMgYGBzdHIubWF0Y2goUmVnRXhwKWBgLlxuICogICAgICAgICB3aGVuIHByb3ZpZGVkIGFzIGEgYGBmdW5jdGlvbmBgLCB1c2UgdGhlIGZ1bmN0aW9uIGFzLWlzLlxuICpcbiAqIEByZXR1cm5zIGEgcHJlZGljYXRlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYWtlUHJlZGljYXRlKGZpbHRlcjogc3RyaW5nIHwgUmVnRXhwIHwgRmlsdGVyKTogRmlsdGVyIHtcbiAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHMgPT4gcyA9PT0gZmlsdGVyO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmlsdGVyIGFzIEZpbHRlcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcyA9PiBzLm1hdGNoKGZpbHRlcikgIT0gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgcHJvcGVydGllcyBvZiB0aGUgZ2l2ZW4gdHlwZSB0aGF0IHJlcXVpcmUgdGhlIGdpdmVuIHNjcnV0aW55IHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcnV0aW5pemFibGVQcm9wZXJ0eU5hbWVzKHJlc291cmNlVHlwZTogc3RyaW5nLCBzY3J1dGlueVR5cGVzOiBzY2hlbWEuUHJvcGVydHlTY3J1dGlueVR5cGVbXSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgaW1wbCA9IHNwZWNpZmljYXRpb24oKS5SZXNvdXJjZVR5cGVzW3Jlc291cmNlVHlwZV07XG4gIGlmICghaW1wbCkgeyByZXR1cm4gW107IH1cblxuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcGVydHlTcGVjXSBvZiBPYmplY3QuZW50cmllcyhpbXBsLlByb3BlcnRpZXMgfHwge30pKSB7XG4gICAgaWYgKHNjcnV0aW55VHlwZXMuaW5jbHVkZXMocHJvcGVydHlTcGVjLlNjcnV0aW55VHlwZSB8fCBzY2hlbWEuUHJvcGVydHlTY3J1dGlueVR5cGUuTm9uZSkpIHtcbiAgICAgIHJldC5wdXNoKHByb3BlcnR5TmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIG5hbWVzIG9mIHRoZSByZXNvdXJjZSB0eXBlcyB0aGF0IG5lZWQgdG8gYmUgc3ViamVjdGVkIHRvIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcnV0aW5pemFibGVSZXNvdXJjZVR5cGVzKHNjcnV0aW55VHlwZXM6IHNjaGVtYS5SZXNvdXJjZVNjcnV0aW55VHlwZVtdKTogc3RyaW5nW10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IFtyZXNvdXJjZVR5cGUsIHJlc291cmNlU3BlY10gb2YgT2JqZWN0LmVudHJpZXMoc3BlY2lmaWNhdGlvbigpLlJlc291cmNlVHlwZXMpKSB7XG4gICAgaWYgKHNjcnV0aW55VHlwZXMuaW5jbHVkZXMocmVzb3VyY2VTcGVjLlNjcnV0aW55VHlwZSB8fCBzY2hlbWEuUmVzb3VyY2VTY3J1dGlueVR5cGUuTm9uZSkpIHtcbiAgICAgIHJldC5wdXNoKHJlc291cmNlVHlwZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@aws-cdk/cfnspec",
3
3
  "description": "The CloudFormation resource specification used by @aws-cdk packages",
4
- "version": "2.50.0",
4
+ "version": "2.51.1",
5
5
  "scripts": {
6
- "update": "cdk-build && /bin/bash build-tools/update.sh && /bin/bash build-tools/update-cfnlint.sh",
6
+ "update": "cdk-build && /bin/bash build-tools/update.sh",
7
7
  "update-metrics": "/bin/bash build-tools/update-metrics.sh",
8
8
  "rejected": "node build-tools/report-issues.js spec-source/specification/000_cfn/000_official/ rejected",
9
9
  "build": "cdk-build && node build-tools/build",
@@ -30,14 +30,14 @@
30
30
  "main": "lib/index.js",
31
31
  "types": "lib/index.d.ts",
32
32
  "devDependencies": {
33
- "@aws-cdk/cdk-build-tools": "2.50.0",
34
- "@aws-cdk/pkglint": "2.50.0",
33
+ "@aws-cdk/cdk-build-tools": "2.51.1",
34
+ "@aws-cdk/pkglint": "2.51.1",
35
35
  "@types/fs-extra": "^8.1.2",
36
36
  "@types/jest": "^27.5.2",
37
37
  "@types/md5": "^2.3.2",
38
38
  "fast-json-patch": "^2.2.1",
39
39
  "jest": "^27.5.1",
40
- "json-diff": "^0.9.1",
40
+ "json-diff": "^0.10.0",
41
41
  "sort-json": "^2.0.1"
42
42
  },
43
43
  "dependencies": {