awslint 2.56.0 → 2.56.1

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.
@@ -155,7 +155,6 @@ exports.resourceLinter.add({
155
155
  // This rule is the worst
156
156
  resourceLinter.add({
157
157
  code: 'resource-attribute',
158
- warning: true,
159
158
  message:
160
159
  'resources must represent all cloudformation attributes as attribute properties. ' +
161
160
  '"@attribute ATTR[,ATTR]" can be used to tag non-standard attribute names. ' +
@@ -247,4 +246,4 @@ function guessResourceName(fqn) {
247
246
  }
248
247
  return `${org}::${ns}::${rs}`;
249
248
  }
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFFdkMsc0NBQW1DO0FBQ25DLGlEQUF1RDtBQUN2RCwyQ0FBa0Q7QUFDbEQsNkNBQXlDO0FBQ3pDLGlDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBR3hCO0FBRUQsTUFBYSxrQkFBa0I7SUEwQjdCLFlBQTRCLFNBQThCO1FBQTlCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFNBQVMsQ0FBQyxHQUFHLElBQUk7Z0JBQzlELE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUM7Z0JBQzlFLG9IQUFvSCxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFD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QUFDLEVBQUUsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFFN0MsT0FBTyxHQUFHLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDaEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNhbWVsY2FzZSBmcm9tICdjYW1lbGNhc2UnO1xuaW1wb3J0ICogYXMgcmVmbGVjdCBmcm9tICdqc2lpLXJlZmxlY3QnO1xuaW1wb3J0IHsgTGludGVyIH0gZnJvbSAnLi4vbGludGVyJztcbmltcG9ydCB7IENmblJlc291cmNlUmVmbGVjdGlvbiB9IGZyb20gJy4vY2ZuLXJlc291cmNlJztcbmltcG9ydCB7IENvbnN0cnVjdFJlZmxlY3Rpb24gfSBmcm9tICcuL2NvbnN0cnVjdCc7XG5pbXBvcnQgeyBDb3JlVHlwZXMgfSBmcm9tICcuL2NvcmUtdHlwZXMnO1xuaW1wb3J0IHsgZ2V0RG9jVGFnIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgR1JBTlRfUkVTVUxUX0ZRTiA9ICdAYXdzLWNkay9hd3MtaWFtLkdyYW50JztcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlTGludGVyID0gbmV3IExpbnRlcihhID0+IFJlc291cmNlUmVmbGVjdGlvbi5maW5kQWxsKGEpKTtcblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBzaXRlOiBBdHRyaWJ1dGVTaXRlO1xuICBwcm9wZXJ0eTogcmVmbGVjdC5Qcm9wZXJ0eTtcbiAgY2ZuQXR0cmlidXRlTmFtZXM6IHN0cmluZ1tdOyAvLyBidWNrZXRBcm5cbn1cblxuZXhwb3J0IGVudW0gQXR0cmlidXRlU2l0ZSB7XG4gIEludGVyZmFjZSA9ICdpbnRlcmZhY2UnLFxuICBDbGFzcyA9ICdjbGFzcydcbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlUmVmbGVjdGlvbiB7XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGFsbCByZXNvdXJjZSBjb25zdHJ1Y3RzIChldmVyeXRoaW5nIHRoYXQgZXh0ZW5kcyBgY2RrLlJlc291cmNlYClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmluZEFsbChhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseSkge1xuICAgIGlmIChDb3JlVHlwZXMuaGFzQ29yZU1vZHVsZShhc3NlbWJseSkpIHtcbiAgICAgIHJldHVybiBbXTsgLy8gbm90IHBhcnQgb2YgdGhlIGRlcCBzdGFja1xuICAgIH1cblxuICAgIHJldHVybiBDb25zdHJ1Y3RSZWZsZWN0aW9uXG4gICAgICAuZmluZEFsbENvbnN0cnVjdHMoYXNzZW1ibHkpXG4gICAgICAuZmlsdGVyKGMgPT4gQ29yZVR5cGVzLmlzUmVzb3VyY2VDbGFzcyhjLmNsYXNzVHlwZSkpXG4gICAgICAubWFwKGMgPT4gbmV3IFJlc291cmNlUmVmbGVjdGlvbihjKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlW107IC8vIGFjdHVhbCBhdHRyaWJ1dGUgcHJvcHNcbiAgcHVibGljIHJlYWRvbmx5IGZxbjogc3RyaW5nOyAvLyBleHBlY3RlZCBmcW4gb2YgcmVzb3VyY2UgY2xhc3NcblxuICBwdWJsaWMgcmVhZG9ubHkgYXNzZW1ibHk6IHJlZmxlY3QuQXNzZW1ibHk7XG4gIHB1YmxpYyByZWFkb25seSBzeXM6IHJlZmxlY3QuVHlwZVN5c3RlbTtcbiAgcHVibGljIHJlYWRvbmx5IGNmbjogQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uO1xuICBwdWJsaWMgcmVhZG9ubHkgYmFzZW5hbWU6IHN0cmluZzsgLy8gaS5lLiBCdWNrZXRcbiAgcHVibGljIHJlYWRvbmx5IGNvcmU6IENvcmVUeXBlcztcbiAgcHVibGljIHJlYWRvbmx5IHBoeXNpY2FsTmFtZVByb3A/OiByZWZsZWN0LlByb3BlcnR5O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25zdHJ1Y3Q6IENvbnN0cnVjdFJlZmxlY3Rpb24pIHtcbiAgICB0aGlzLmFzc2VtYmx5ID0gY29uc3RydWN0LmNsYXNzVHlwZS5hc3NlbWJseTtcbiAgICB0aGlzLnN5cyA9IHRoaXMuYXNzZW1ibHkuc3lzdGVtO1xuXG4gICAgY29uc3QgY2ZuID0gdHJ5UmVzb2x2ZUNmblJlc291cmNlKGNvbnN0cnVjdC5jbGFzc1R5cGUpO1xuICAgIGlmICghY2ZuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIEwxIGNsYXNzIGZvciBMMiAke2NvbnN0cnVjdC5mcW59LiBgICtcbiAgICAgICAgYElzIFwiJHtndWVzc1Jlc291cmNlTmFtZShjb25zdHJ1Y3QuZnFuKX1cIiBhbiBhY3R1YWwgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UuIGAgK1xuICAgICAgICAnSWYgbm90LCB1c2UgdGhlIFwiQHJlc291cmNlXCIgZG9jIHRhZyB0byBpbmRpY2F0ZSB0aGUgZnVsbCByZXNvdXJjZSBuYW1lIChlLmcuIFwiQHJlc291cmNlIEFXUzo6Um91dGU1Mzo6SG9zdGVkWm9uZVwiKScpO1xuICAgIH1cblxuICAgIHRoaXMuY29yZSA9IG5ldyBDb3JlVHlwZXModGhpcy5zeXMpO1xuICAgIHRoaXMuY2ZuID0gY2ZuO1xuICAgIHRoaXMuYmFzZW5hbWUgPSBjb25zdHJ1Y3QuY2xhc3NUeXBlLm5hbWU7XG4gICAgdGhpcy5mcW4gPSBjb25zdHJ1Y3QuZnFuO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHRoaXMuZmluZEF0dHJpYnV0ZVByb3BlcnRpZXMoKTtcbiAgICB0aGlzLnBoeXNpY2FsTmFtZVByb3AgPSB0aGlzLmZpbmRQaHlzaWNhbE5hbWVQcm9wKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQaHlzaWNhbE5hbWVQcm9wKCkge1xuICAgIGlmICghdGhpcy5jb25zdHJ1Y3QucHJvcHNUeXBlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlTmFtZSA9IGNhbWVsY2FzZSh0aGlzLmNmbi5iYXNlbmFtZSk7XG5cbiAgICAvLyBpZiByZXNvdXJjZSBuYW1lIGVuZHMgd2l0aCBcIk5hbWVcIiAoZS5nLiBEb21haW5OYW1lLCB0aGVuIGp1c3QgdXNlIGl0IGFzLWlzLCBvdGhlcndpc2UgYXBwZW5kIFwiTmFtZVwiKVxuICAgIGNvbnN0IHBoeXNpY2FsTmFtZVByb3AgPSByZXNvdXJjZU5hbWUuZW5kc1dpdGgoJ05hbWUnKSA/IHJlc291cmNlTmFtZSA6IGAke3Jlc291cmNlTmFtZX1OYW1lYDtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3QucHJvcHNUeXBlLmFsbFByb3BlcnRpZXMuZmluZCh4ID0+IHgubmFtZSA9PT0gcGh5c2ljYWxOYW1lUHJvcCk7XG4gIH1cblxuICAvKipcbiAgICogQXR0cmlidXRlIHByb3BlcnRpZXMgYXJlIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IGJlZ2luIHdpdGggdGhlIHR5cGUgbmFtZSAoZS5nLiBidWNrZXRYeHgpLlxuICAgKi9cbiAgcHJpdmF0ZSBmaW5kQXR0cmlidXRlUHJvcGVydGllcygpOiBBdHRyaWJ1dGVbXSB7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PEF0dHJpYnV0ZT4oKTtcblxuICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLmNvbnN0cnVjdC5jbGFzc1R5cGUuYWxsUHJvcGVydGllcykge1xuICAgICAgaWYgKHAucHJvdGVjdGVkKSB7XG4gICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIGFueSBwcm90ZWN0ZWQgcHJvcGVydGllc1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXNlbmFtZSA9IGNhbWVsY2FzZSh0aGlzLmNmbi5iYXNlbmFtZSk7XG5cbiAgICAgIC8vIGFuIGF0dHJpYnV0ZSBwcm9wZXJ0eSBpcyBhIHByb3BlcnR5IHdoaWNoIHN0YXJ0cyB3aXRoIHRoZSB0eXBlIG5hbWVcbiAgICAgIC8vIChlLmcuIFwiYnVja2V0WHh4XCIpIGFuZC9vciBoYXMgYW4gQGF0dHJpYnV0ZSBkb2MgdGFnLlxuICAgICAgY29uc3QgdGFnID0gZ2V0RG9jVGFnKHAsICdhdHRyaWJ1dGUnKTtcbiAgICAgIGlmICghcC5uYW1lLnN0YXJ0c1dpdGgoYmFzZW5hbWUpICYmICF0YWcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxldCBjZm5BdHRyaWJ1dGVOYW1lcztcbiAgICAgIGlmICh0YWcgJiYgdGFnICE9PSAndHJ1ZScpIHtcbiAgICAgICAgLy8gaWYgdGhlcmUncyBhbiBgQGF0dHJpYnV0ZWAgZG9jIHRhZyB3aXRoIGEgdmFsdWUgb3RoZXIgdGhhbiBcInRydWVcIlxuICAgICAgICAvLyBpdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgQ0ZOIGF0dHJpYnV0ZSBuYW1lIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG5hbWVcbiAgICAgICAgLy8gbXVsdGlwbGUgYXR0cmlidXRlIG5hbWVzIGNhbiBiZSBsaXN0ZWQgYXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IHRhZy5zcGxpdCgnLCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gb2theSwgd2UgZG9uJ3QgaGF2ZSBhbiBleHBsaWNpdCBDRk4gYXR0cmlidXRlIG5hbWUsIHNvIHdlJ2xsIGd1ZXNzIGl0XG4gICAgICAgIC8vIGZyb20gdGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuXG4gICAgICAgIGNvbnN0IG5hbWUgPSBjYW1lbGNhc2UocC5uYW1lLCB7IHBhc2NhbENhc2U6IHRydWUgfSk7XG4gICAgICAgIGlmICh0aGlzLmNmbi5hdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogdGhlcmUgaXMgYSBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIGluIHRoZSBhdHRyaWJ1dGUgbmFtZVxuICAgICAgICAgIC8vIGZvciBleGFtcGxlICdSb2xlSWQnLlxuICAgICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gW25hbWVdO1xuICAgICAgICB9IGVsc2UgaWYgKHAubmFtZS5zdGFydHNXaXRoKGJhc2VuYW1lKSkge1xuICAgICAgICAgIC8vIGJlZ2lucyB3aXRoIHRoZSByZXNvdXJjZSBuYW1lLCBqdXN0IHRyaW0gaXRcbiAgICAgICAgICBjZm5BdHRyaWJ1dGVOYW1lcyA9IFtuYW1lLnN1YnN0cmluZyh0aGlzLmNmbi5iYXNlbmFtZS5sZW5ndGgpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB3ZSBjb3VsZG4ndCBkZXRlcm1pbmUgQ0ZOIGF0dHJpYnV0ZSBuYW1lLCBzbyB3ZSBkb24ndCBhY2NvdW50IGZvciB0aGlzXG4gICAgICAgICAgLy8gYXMgYW4gYXR0cmlidXRlLiB0aGlzIGNvdWxkIGJlLCBmb3IgZXhhbXBsZSwgd2hlbiBhIGNvbnN0cnVjdCBpbXBsZW1lbnRzXG4gICAgICAgICAgLy8gYW4gaW50ZXJmYWNlIHRoYXQgcmVwcmVzZW50cyBhbm90aGVyIHJlc291cmNlIChlLmcuIGBsYW1iZGEuQWxpYXNgIGltcGxlbWVudHMgYElGdW5jdGlvbmApLlxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNoZWNrIGlmIHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgb24gYW4gaW50ZXJmYWNlIG9yIG9uIGEgY2xhc3NcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gZmluZERlY2xhcmF0aW9uU2l0ZShwKTtcbiAgICAgIGNvbnN0IHNpdGUgPSBwcm9wZXJ0eS5wYXJlbnRUeXBlLmlzSW50ZXJmYWNlVHlwZSgpID8gQXR0cmlidXRlU2l0ZS5JbnRlcmZhY2UgOiBBdHRyaWJ1dGVTaXRlLkNsYXNzO1xuXG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIHNpdGUsXG4gICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzLFxuICAgICAgICBwcm9wZXJ0eSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluZERlY2xhcmF0aW9uU2l0ZShwcm9wOiByZWZsZWN0LlByb3BlcnR5KTogcmVmbGVjdC5Qcm9wZXJ0eSB7XG4gIGlmICghcHJvcC5vdmVycmlkZXMgfHwgKCFwcm9wLm92ZXJyaWRlcy5pc0NsYXNzVHlwZSgpICYmICFwcm9wLm92ZXJyaWRlcy5pc0ludGVyZmFjZVR5cGUoKSkpIHtcbiAgICBpZiAoIXByb3AucGFyZW50VHlwZS5pc0NsYXNzVHlwZSgpICYmICFwcm9wLnBhcmVudFR5cGUuaXNJbnRlcmZhY2VUeXBlKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwYXJlbnQgdHlwZScpO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcDtcbiAgfVxuXG4gIGNvbnN0IG92ZXJyaWRlc1Byb3AgPSBwcm9wLm92ZXJyaWRlcy5hbGxQcm9wZXJ0aWVzLmZpbmQocCA9PiBwLm5hbWUgPT09IHByb3AubmFtZSk7XG4gIGlmICghb3ZlcnJpZGVzUHJvcCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcHJvcGVydHkgJHtwcm9wLm5hbWV9IGluIG92ZXJyaWRlIHNpdGUgJHtwcm9wLm92ZXJyaWRlcy5mcW59YCk7XG4gIH1cbiAgcmV0dXJuIGZpbmREZWNsYXJhdGlvblNpdGUob3ZlcnJpZGVzUHJvcCk7XG59XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1jbGFzcy1leHRlbmRzLXJlc291cmNlJyxcbiAgbWVzc2FnZTogJ3Jlc291cmNlIGNsYXNzZXMgbXVzdCBleHRlbmQgXCJjZGsuUmVzb3VyY2VcIiBkaXJlY3RseSBvciBpbmRpcmVjdGx5JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VCYXNlID0gZS5jdHguc3lzLmZpbmRDbGFzcyhlLmN0eC5jb3JlLnJlc291cmNlQ2xhc3MuZnFuKTtcbiAgICBlLmFzc2VydChlLmN0eC5jb25zdHJ1Y3QuY2xhc3NUeXBlLmV4dGVuZHMocmVzb3VyY2VCYXNlKSwgZS5jdHguY29uc3RydWN0LmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWludGVyZmFjZScsXG4gIHdhcm5pbmc6IHRydWUsXG4gIG1lc3NhZ2U6ICdldmVyeSByZXNvdXJjZSBtdXN0IGhhdmUgYSByZXNvdXJjZSBpbnRlcmZhY2UnLFxuICBldmFsOiBlID0+IHtcbiAgICBlLmFzc2VydChlLmN0eC5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZSwgZS5jdHguY29uc3RydWN0LmZxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWludGVyZmFjZS1leHRlbmRzLXJlc291cmNlJyxcbiAgbWVzc2FnZTogJ2NvbnN0cnVjdCBpbnRlcmZhY2VzIG9mIEFXUyByZXNvdXJjZXMgbXVzdCBleHRlbmQgY2RrLklSZXNvdXJjZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlSW50ZXJmYWNlID0gZS5jdHguY29uc3RydWN0LmludGVyZmFjZVR5cGU7XG4gICAgaWYgKCFyZXNvdXJjZUludGVyZmFjZSkgeyByZXR1cm47IH1cblxuICAgIGNvbnN0IHJlc291cmNlSW50ZXJmYWNlRnFuID0gZS5jdHguY29yZS5yZXNvdXJjZUludGVyZmFjZS5mcW47XG4gICAgY29uc3QgaW50ZXJmYWNlQmFzZSA9IGUuY3R4LnN5cy5maW5kSW50ZXJmYWNlKHJlc291cmNlSW50ZXJmYWNlRnFuKTtcbiAgICBlLmFzc2VydChyZXNvdXJjZUludGVyZmFjZS5leHRlbmRzKGludGVyZmFjZUJhc2UpLCByZXNvdXJjZUludGVyZmFjZS5mcW4pO1xuICB9LFxufSk7XG5cbi8qXG4vLyBUaGlzIHJ1bGUgaXMgdGhlIHdvcnN0XG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtYXR0cmlidXRlJyxcbiAgd2FybmluZzogdHJ1ZSxcbiAgbWVzc2FnZTpcbiAgICAncmVzb3VyY2VzIG11c3QgcmVwcmVzZW50IGFsbCBjbG91ZGZvcm1hdGlvbiBhdHRyaWJ1dGVzIGFzIGF0dHJpYnV0ZSBwcm9wZXJ0aWVzLiAnICtcbiAgICAnXCJAYXR0cmlidXRlIEFUVFJbLEFUVFJdXCIgY2FuIGJlIHVzZWQgdG8gdGFnIG5vbi1zdGFuZGFyZCBhdHRyaWJ1dGUgbmFtZXMuICcgK1xuICAgICdtaXNzaW5nIHByb3BlcnR5OicsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBlLmN0eC5jZm4uYXR0cmlidXRlTmFtZXMpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gY2FtZWxjYXNlKG5hbWUpLnN0YXJ0c1dpdGgoY2FtZWxjYXNlKGUuY3R4LmNmbi5iYXNlbmFtZSkpXG4gICAgICAgID8gY2FtZWxjYXNlKG5hbWUpXG4gICAgICAgIDogY2FtZWxjYXNlKGUuY3R4LmNmbi5iYXNlbmFtZSArIG5hbWUpO1xuXG4gICAgICBjb25zdCBmb3VuZCA9IGUuY3R4LmF0dHJpYnV0ZXMuZmluZChhID0+IGEuY2ZuQXR0cmlidXRlTmFtZXMuaW5jbHVkZXMobmFtZSkpO1xuICAgICAgZS5hc3NlcnQoZm91bmQsIGAke2UuY3R4LmZxbn0uJHtleHBlY3RlZH1gLCBleHBlY3RlZCk7XG4gICAgfVxuICB9LFxufSk7XG4qL1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAnZ3JhbnQtcmVzdWx0JyxcbiAgbWVzc2FnZTogYFwiZ3JhbnRcIiBtZXRob2QgbXVzdCByZXR1cm4gJHtHUkFOVF9SRVNVTFRfRlFOfWAsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGNvbnN0IGdyYW50UmVzdWx0VHlwZSA9IGUuY3R4LnN5cy50cnlGaW5kRnFuKEdSQU5UX1JFU1VMVF9GUU4pO1xuXG4gICAgLy8gdGhpcyBpbXBsaWVzIHRoYXQgd2UgYXJlIGF0IGEgbG93ZXIgbGF5ZXIgKGkuZS4gQGF3cy1jZGsvY29yZSlcbiAgICBpZiAoIWdyYW50UmVzdWx0VHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdyYW50TWV0aG9kcyA9IGUuY3R4LmNvbnN0cnVjdC5jbGFzc1R5cGUuYWxsTWV0aG9kcy5maWx0ZXIobSA9PiBtLm5hbWUuc3RhcnRzV2l0aCgnZ3JhbnQnKSk7XG5cbiAgICBmb3IgKGNvbnN0IGdyYW50TWV0aG9kIG9mIGdyYW50TWV0aG9kcykge1xuICAgICAgZS5hc3NlcnRTaWduYXR1cmUoZ3JhbnRNZXRob2QsIHtcbiAgICAgICAgcmV0dXJuczogZ3JhbnRSZXN1bHRUeXBlLFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1waHlzaWNhbC1uYW1lJyxcbiAgbWVzc2FnZTogJ0V2ZXJ5IFJlc291cmNlIG11c3QgaGF2ZSBhIHNpbmdsZSBwaHlzaWNhbCBuYW1lIGNvbnN0cnVjdGlvbiBwcm9wZXJ0eSwgJyArXG4gICAgJ3dpdGggYSBuYW1lIHRoYXQgaXMgYW4gZW5kaW5nIHN1YnN0cmluZyBvZiA8Y2ZuUmVzb3VyY2U+TmFtZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHguY29uc3RydWN0LnByb3BzVHlwZSkgeyByZXR1cm47IH1cbiAgICBlLmFzc2VydChlLmN0eC5waHlzaWNhbE5hbWVQcm9wLCBlLmN0eC5jb25zdHJ1Y3QucHJvcHNGcW4pO1xuICB9LFxufSk7XG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdwcm9wcy1waHlzaWNhbC1uYW1lLXR5cGUnLFxuICBtZXNzYWdlOiAnVGhlIHR5cGUgb2YgdGhlIHBoeXNpY2FsIG5hbWUgcHJvcCBzaG91bGQgYWx3YXlzIGJlIGEgXCJzdHJpbmdcIicsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGlmICghZS5jdHgucGh5c2ljYWxOYW1lUHJvcCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBwcm9wID0gZS5jdHgucGh5c2ljYWxOYW1lUHJvcDtcbiAgICBlLmFzc2VydFR5cGVzRXF1YWwoZS5jdHguc3lzLCBwcm9wLnR5cGUsICdzdHJpbmcnLCBgJHtlLmN0eC5jb25zdHJ1Y3QucHJvcHNGcW59LiR7cHJvcC5uYW1lfWApO1xuICB9LFxufSk7XG5cbmZ1bmN0aW9uIHRyeVJlc29sdmVDZm5SZXNvdXJjZShyZXNvdXJjZUNsYXNzOiByZWZsZWN0LkNsYXNzVHlwZSk6IENmblJlc291cmNlUmVmbGVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN5cyA9IHJlc291cmNlQ2xhc3Muc3lzdGVtO1xuXG4gIC8vIGlmIHRoZXJlIGlzIGEgQHJlc291cmNlIGRvYyB0YWcsIGl0IHRha2VzIHByZWNlZGVjZVxuICBjb25zdCB0YWcgPSByZXNvdXJjZUNsYXNzLmRvY3MuY3VzdG9tVGFnKCdyZXNvdXJjZScpO1xuICBpZiAodGFnKSB7XG4gICAgcmV0dXJuIENmblJlc291cmNlUmVmbGVjdGlvbi5maW5kQnlOYW1lKHN5cywgdGFnKTtcbiAgfVxuXG4gIC8vIHBhcnNlIHRoZSBGUU4gb2YgdGhlIGNsYXNzIG5hbWUgYW5kIHNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIENGTiByZXNvdXJjZVxuICBjb25zdCBndWVzcyA9IGd1ZXNzUmVzb3VyY2VOYW1lKHJlc291cmNlQ2xhc3MuZnFuKTtcbiAgaWYgKGd1ZXNzKSB7XG4gICAgY29uc3QgY2ZuID0gQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRCeU5hbWUoc3lzLCBndWVzcyk7XG4gICAgaWYgKGNmbikge1xuICAgICAgcmV0dXJuIGNmbjtcbiAgICB9XG4gIH1cblxuICAvLyB0cnkgdG8gcmVzb2x2ZSB0aHJvdWdoIGFuY2VzdG9yc1xuICBmb3IgKGNvbnN0IGJhc2Ugb2YgcmVzb3VyY2VDbGFzcy5nZXRBbmNlc3RvcnMoKSkge1xuICAgIGNvbnN0IHJldCA9IHRyeVJlc29sdmVDZm5SZXNvdXJjZShiYXNlKTtcbiAgICBpZiAocmV0KSB7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfVxuXG4gIC8vIGZhaWxlZCBtaXNyYWJseVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBndWVzc1Jlc291cmNlTmFtZShmcW46IHN0cmluZykge1xuICBjb25zdCBtYXRjaCA9IC9AYXdzLWNka1xcLyhbYS16XSspLShbYS16MC05XSspXFwuKFtBLVpdW2EtekEtWjAtOV0rKS8uZXhlYyhmcW4pO1xuICBpZiAoIW1hdGNoKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBbLCBvcmcsIG5zLCByc10gPSBtYXRjaDtcbiAgaWYgKCFvcmcgfHwgIW5zIHx8ICFycykgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgcmV0dXJuIGAke29yZ306OiR7bnN9Ojoke3JzfWA7XG59XG4iXX0=
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBdUM7QUFFdkMsc0NBQW1DO0FBQ25DLGlEQUF1RDtBQUN2RCwyQ0FBa0Q7QUFDbEQsNkNBQXlDO0FBQ3pDLGlDQUFtQztBQUVuQyxNQUFNLGdCQUFnQixHQUFHLHdCQUF3QixDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLElBQUksZUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFRN0UsSUFBWSxhQUdYO0FBSEQsV0FBWSxhQUFhO0lBQ3ZCLHdDQUF1QixDQUFBO0lBQ3ZCLGdDQUFlLENBQUE7QUFDakIsQ0FBQyxFQUhXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBR3hCO0FBRUQsTUFBYSxrQkFBa0I7SUEwQjdCLFlBQTRCLFNBQThCO1FBQTlCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBQ3hELElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVoQyxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLFNBQVMsQ0FBQyxHQUFHLElBQUk7Z0JBQzlELE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx1Q0FBdUM7Z0JBQzlFLG9IQUFvSCxDQUFDLENBQUM7U0FDekg7UUFFRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFD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QUMsRUFBRSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUU3QyxPQUFPLEdBQUcsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2FtZWxjYXNlIGZyb20gJ2NhbWVsY2FzZSc7XG5pbXBvcnQgKiBhcyByZWZsZWN0IGZyb20gJ2pzaWktcmVmbGVjdCc7XG5pbXBvcnQgeyBMaW50ZXIgfSBmcm9tICcuLi9saW50ZXInO1xuaW1wb3J0IHsgQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uIH0gZnJvbSAnLi9jZm4tcmVzb3VyY2UnO1xuaW1wb3J0IHsgQ29uc3RydWN0UmVmbGVjdGlvbiB9IGZyb20gJy4vY29uc3RydWN0JztcbmltcG9ydCB7IENvcmVUeXBlcyB9IGZyb20gJy4vY29yZS10eXBlcyc7XG5pbXBvcnQgeyBnZXREb2NUYWcgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBHUkFOVF9SRVNVTFRfRlFOID0gJ0Bhd3MtY2RrL2F3cy1pYW0uR3JhbnQnO1xuXG5leHBvcnQgY29uc3QgcmVzb3VyY2VMaW50ZXIgPSBuZXcgTGludGVyKGEgPT4gUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRBbGwoYSkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIHNpdGU6IEF0dHJpYnV0ZVNpdGU7XG4gIHByb3BlcnR5OiByZWZsZWN0LlByb3BlcnR5O1xuICBjZm5BdHRyaWJ1dGVOYW1lczogc3RyaW5nW107IC8vIGJ1Y2tldEFyblxufVxuXG5leHBvcnQgZW51bSBBdHRyaWJ1dGVTaXRlIHtcbiAgSW50ZXJmYWNlID0gJ2ludGVyZmFjZScsXG4gIENsYXNzID0gJ2NsYXNzJ1xufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VSZWZsZWN0aW9uIHtcblxuICAvKipcbiAgICogQHJldHVybnMgYWxsIHJlc291cmNlIGNvbnN0cnVjdHMgKGV2ZXJ5dGhpbmcgdGhhdCBleHRlbmRzIGBjZGsuUmVzb3VyY2VgKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmaW5kQWxsKGFzc2VtYmx5OiByZWZsZWN0LkFzc2VtYmx5KSB7XG4gICAgaWYgKENvcmVUeXBlcy5oYXNDb3JlTW9kdWxlKGFzc2VtYmx5KSkge1xuICAgICAgcmV0dXJuIFtdOyAvLyBub3QgcGFydCBvZiB0aGUgZGVwIHN0YWNrXG4gICAgfVxuXG4gICAgcmV0dXJuIENvbnN0cnVjdFJlZmxlY3Rpb25cbiAgICAgIC5maW5kQWxsQ29uc3RydWN0cyhhc3NlbWJseSlcbiAgICAgIC5maWx0ZXIoYyA9PiBDb3JlVHlwZXMuaXNSZXNvdXJjZUNsYXNzKGMuY2xhc3NUeXBlKSlcbiAgICAgIC5tYXAoYyA9PiBuZXcgUmVzb3VyY2VSZWZsZWN0aW9uKGMpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXTsgLy8gYWN0dWFsIGF0dHJpYnV0ZSBwcm9wc1xuICBwdWJsaWMgcmVhZG9ubHkgZnFuOiBzdHJpbmc7IC8vIGV4cGVjdGVkIGZxbiBvZiByZXNvdXJjZSBjbGFzc1xuXG4gIHB1YmxpYyByZWFkb25seSBhc3NlbWJseTogcmVmbGVjdC5Bc3NlbWJseTtcbiAgcHVibGljIHJlYWRvbmx5IHN5czogcmVmbGVjdC5UeXBlU3lzdGVtO1xuICBwdWJsaWMgcmVhZG9ubHkgY2ZuOiBDZm5SZXNvdXJjZVJlZmxlY3Rpb247XG4gIHB1YmxpYyByZWFkb25seSBiYXNlbmFtZTogc3RyaW5nOyAvLyBpLmUuIEJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgY29yZTogQ29yZVR5cGVzO1xuICBwdWJsaWMgcmVhZG9ubHkgcGh5c2ljYWxOYW1lUHJvcD86IHJlZmxlY3QuUHJvcGVydHk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGNvbnN0cnVjdDogQ29uc3RydWN0UmVmbGVjdGlvbikge1xuICAgIHRoaXMuYXNzZW1ibHkgPSBjb25zdHJ1Y3QuY2xhc3NUeXBlLmFzc2VtYmx5O1xuICAgIHRoaXMuc3lzID0gdGhpcy5hc3NlbWJseS5zeXN0ZW07XG5cbiAgICBjb25zdCBjZm4gPSB0cnlSZXNvbHZlQ2ZuUmVzb3VyY2UoY29uc3RydWN0LmNsYXNzVHlwZSk7XG4gICAgaWYgKCFjZm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgTDEgY2xhc3MgZm9yIEwyICR7Y29uc3RydWN0LmZxbn0uIGAgK1xuICAgICAgICBgSXMgXCIke2d1ZXNzUmVzb3VyY2VOYW1lKGNvbnN0cnVjdC5mcW4pfVwiIGFuIGFjdHVhbCBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZS4gYCArXG4gICAgICAgICdJZiBub3QsIHVzZSB0aGUgXCJAcmVzb3VyY2VcIiBkb2MgdGFnIHRvIGluZGljYXRlIHRoZSBmdWxsIHJlc291cmNlIG5hbWUgKGUuZy4gXCJAcmVzb3VyY2UgQVdTOjpSb3V0ZTUzOjpIb3N0ZWRab25lXCIpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5jb3JlID0gbmV3IENvcmVUeXBlcyh0aGlzLnN5cyk7XG4gICAgdGhpcy5jZm4gPSBjZm47XG4gICAgdGhpcy5iYXNlbmFtZSA9IGNvbnN0cnVjdC5jbGFzc1R5cGUubmFtZTtcbiAgICB0aGlzLmZxbiA9IGNvbnN0cnVjdC5mcW47XG4gICAgdGhpcy5hdHRyaWJ1dGVzID0gdGhpcy5maW5kQXR0cmlidXRlUHJvcGVydGllcygpO1xuICAgIHRoaXMucGh5c2ljYWxOYW1lUHJvcCA9IHRoaXMuZmluZFBoeXNpY2FsTmFtZVByb3AoKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBoeXNpY2FsTmFtZVByb3AoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnN0cnVjdC5wcm9wc1R5cGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gY2FtZWxjYXNlKHRoaXMuY2ZuLmJhc2VuYW1lKTtcblxuICAgIC8vIGlmIHJlc291cmNlIG5hbWUgZW5kcyB3aXRoIFwiTmFtZVwiIChlLmcuIERvbWFpbk5hbWUsIHRoZW4ganVzdCB1c2UgaXQgYXMtaXMsIG90aGVyd2lzZSBhcHBlbmQgXCJOYW1lXCIpXG4gICAgY29uc3QgcGh5c2ljYWxOYW1lUHJvcCA9IHJlc291cmNlTmFtZS5lbmRzV2l0aCgnTmFtZScpID8gcmVzb3VyY2VOYW1lIDogYCR7cmVzb3VyY2VOYW1lfU5hbWVgO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdC5wcm9wc1R5cGUuYWxsUHJvcGVydGllcy5maW5kKHggPT4geC5uYW1lID09PSBwaHlzaWNhbE5hbWVQcm9wKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRyaWJ1dGUgcHJvcGVydGllcyBhcmUgYWxsIHRoZSBwcm9wZXJ0aWVzIHRoYXQgYmVnaW4gd2l0aCB0aGUgdHlwZSBuYW1lIChlLmcuIGJ1Y2tldFh4eCkuXG4gICAqL1xuICBwcml2YXRlIGZpbmRBdHRyaWJ1dGVQcm9wZXJ0aWVzKCk6IEF0dHJpYnV0ZVtdIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXk8QXR0cmlidXRlPigpO1xuXG4gICAgZm9yIChjb25zdCBwIG9mIHRoaXMuY29uc3RydWN0LmNsYXNzVHlwZS5hbGxQcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAocC5wcm90ZWN0ZWQpIHtcbiAgICAgICAgY29udGludWU7IC8vIHNraXAgYW55IHByb3RlY3RlZCBwcm9wZXJ0aWVzXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJhc2VuYW1lID0gY2FtZWxjYXNlKHRoaXMuY2ZuLmJhc2VuYW1lKTtcblxuICAgICAgLy8gYW4gYXR0cmlidXRlIHByb3BlcnR5IGlzIGEgcHJvcGVydHkgd2hpY2ggc3RhcnRzIHdpdGggdGhlIHR5cGUgbmFtZVxuICAgICAgLy8gKGUuZy4gXCJidWNrZXRYeHhcIikgYW5kL29yIGhhcyBhbiBAYXR0cmlidXRlIGRvYyB0YWcuXG4gICAgICBjb25zdCB0YWcgPSBnZXREb2NUYWcocCwgJ2F0dHJpYnV0ZScpO1xuICAgICAgaWYgKCFwLm5hbWUuc3RhcnRzV2l0aChiYXNlbmFtZSkgJiYgIXRhZykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNmbkF0dHJpYnV0ZU5hbWVzO1xuICAgICAgaWYgKHRhZyAmJiB0YWcgIT09ICd0cnVlJykge1xuICAgICAgICAvLyBpZiB0aGVyZSdzIGFuIGBAYXR0cmlidXRlYCBkb2MgdGFnIHdpdGggYSB2YWx1ZSBvdGhlciB0aGFuIFwidHJ1ZVwiXG4gICAgICAgIC8vIGl0IHNob3VsZCBiZSB1c2VkIGFzIHRoZSBDRk4gYXR0cmlidXRlIG5hbWUgaW5zdGVhZCBvZiB0aGUgcHJvcGVydHkgbmFtZVxuICAgICAgICAvLyBtdWx0aXBsZSBhdHRyaWJ1dGUgbmFtZXMgY2FuIGJlIGxpc3RlZCBhcyBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4gICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gdGFnLnNwbGl0KCcsJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBva2F5LCB3ZSBkb24ndCBoYXZlIGFuIGV4cGxpY2l0IENGTiBhdHRyaWJ1dGUgbmFtZSwgc28gd2UnbGwgZ3Vlc3MgaXRcbiAgICAgICAgLy8gZnJvbSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG5cbiAgICAgICAgY29uc3QgbmFtZSA9IGNhbWVsY2FzZShwLm5hbWUsIHsgcGFzY2FsQ2FzZTogdHJ1ZSB9KTtcbiAgICAgICAgaWYgKHRoaXMuY2ZuLmF0dHJpYnV0ZU5hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiB0aGVyZSBpcyBhIGNsb3VkZm9ybWF0aW9uIHJlc291cmNlIHR5cGUgaW4gdGhlIGF0dHJpYnV0ZSBuYW1lXG4gICAgICAgICAgLy8gZm9yIGV4YW1wbGUgJ1JvbGVJZCcuXG4gICAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMgPSBbbmFtZV07XG4gICAgICAgIH0gZWxzZSBpZiAocC5uYW1lLnN0YXJ0c1dpdGgoYmFzZW5hbWUpKSB7XG4gICAgICAgICAgLy8gYmVnaW5zIHdpdGggdGhlIHJlc291cmNlIG5hbWUsIGp1c3QgdHJpbSBpdFxuICAgICAgICAgIGNmbkF0dHJpYnV0ZU5hbWVzID0gW25hbWUuc3Vic3RyaW5nKHRoaXMuY2ZuLmJhc2VuYW1lLmxlbmd0aCldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHdlIGNvdWxkbid0IGRldGVybWluZSBDRk4gYXR0cmlidXRlIG5hbWUsIHNvIHdlIGRvbid0IGFjY291bnQgZm9yIHRoaXNcbiAgICAgICAgICAvLyBhcyBhbiBhdHRyaWJ1dGUuIHRoaXMgY291bGQgYmUsIGZvciBleGFtcGxlLCB3aGVuIGEgY29uc3RydWN0IGltcGxlbWVudHNcbiAgICAgICAgICAvLyBhbiBpbnRlcmZhY2UgdGhhdCByZXByZXNlbnRzIGFub3RoZXIgcmVzb3VyY2UgKGUuZy4gYGxhbWJkYS5BbGlhc2AgaW1wbGVtZW50cyBgSUZ1bmN0aW9uYCkuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gY2hlY2sgaWYgdGhpcyBhdHRyaWJ1dGUgaXMgZGVmaW5lZCBvbiBhbiBpbnRlcmZhY2Ugb3Igb24gYSBjbGFzc1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBmaW5kRGVjbGFyYXRpb25TaXRlKHApO1xuICAgICAgY29uc3Qgc2l0ZSA9IHByb3BlcnR5LnBhcmVudFR5cGUuaXNJbnRlcmZhY2VUeXBlKCkgPyBBdHRyaWJ1dGVTaXRlLkludGVyZmFjZSA6IEF0dHJpYnV0ZVNpdGUuQ2xhc3M7XG5cbiAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgc2l0ZSxcbiAgICAgICAgY2ZuQXR0cmlidXRlTmFtZXMsXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5kRGVjbGFyYXRpb25TaXRlKHByb3A6IHJlZmxlY3QuUHJvcGVydHkpOiByZWZsZWN0LlByb3BlcnR5IHtcbiAgaWYgKCFwcm9wLm92ZXJyaWRlcyB8fCAoIXByb3Aub3ZlcnJpZGVzLmlzQ2xhc3NUeXBlKCkgJiYgIXByb3Aub3ZlcnJpZGVzLmlzSW50ZXJmYWNlVHlwZSgpKSkge1xuICAgIGlmICghcHJvcC5wYXJlbnRUeXBlLmlzQ2xhc3NUeXBlKCkgJiYgIXByb3AucGFyZW50VHlwZS5pc0ludGVyZmFjZVR5cGUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBhcmVudCB0eXBlJyk7XG4gICAgfVxuICAgIHJldHVybiBwcm9wO1xuICB9XG5cbiAgY29uc3Qgb3ZlcnJpZGVzUHJvcCA9IHByb3Aub3ZlcnJpZGVzLmFsbFByb3BlcnRpZXMuZmluZChwID0+IHAubmFtZSA9PT0gcHJvcC5uYW1lKTtcbiAgaWYgKCFvdmVycmlkZXNQcm9wKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBwcm9wZXJ0eSAke3Byb3AubmFtZX0gaW4gb3ZlcnJpZGUgc2l0ZSAke3Byb3Aub3ZlcnJpZGVzLmZxbn1gKTtcbiAgfVxuICByZXR1cm4gZmluZERlY2xhcmF0aW9uU2l0ZShvdmVycmlkZXNQcm9wKTtcbn1cblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Jlc291cmNlLWNsYXNzLWV4dGVuZHMtcmVzb3VyY2UnLFxuICBtZXNzYWdlOiAncmVzb3VyY2UgY2xhc3NlcyBtdXN0IGV4dGVuZCBcImNkay5SZXNvdXJjZVwiIGRpcmVjdGx5IG9yIGluZGlyZWN0bHknLFxuICBldmFsOiBlID0+IHtcbiAgICBjb25zdCByZXNvdXJjZUJhc2UgPSBlLmN0eC5zeXMuZmluZENsYXNzKGUuY3R4LmNvcmUucmVzb3VyY2VDbGFzcy5mcW4pO1xuICAgIGUuYXNzZXJ0KGUuY3R4LmNvbnN0cnVjdC5jbGFzc1R5cGUuZXh0ZW5kcyhyZXNvdXJjZUJhc2UpLCBlLmN0eC5jb25zdHJ1Y3QuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtaW50ZXJmYWNlJyxcbiAgd2FybmluZzogdHJ1ZSxcbiAgbWVzc2FnZTogJ2V2ZXJ5IHJlc291cmNlIG11c3QgaGF2ZSBhIHJlc291cmNlIGludGVyZmFjZScsXG4gIGV2YWw6IGUgPT4ge1xuICAgIGUuYXNzZXJ0KGUuY3R4LmNvbnN0cnVjdC5pbnRlcmZhY2VUeXBlLCBlLmN0eC5jb25zdHJ1Y3QuZnFuKTtcbiAgfSxcbn0pO1xuXG5yZXNvdXJjZUxpbnRlci5hZGQoe1xuICBjb2RlOiAncmVzb3VyY2UtaW50ZXJmYWNlLWV4dGVuZHMtcmVzb3VyY2UnLFxuICBtZXNzYWdlOiAnY29uc3RydWN0IGludGVyZmFjZXMgb2YgQVdTIHJlc291cmNlcyBtdXN0IGV4dGVuZCBjZGsuSVJlc291cmNlJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2VJbnRlcmZhY2UgPSBlLmN0eC5jb25zdHJ1Y3QuaW50ZXJmYWNlVHlwZTtcbiAgICBpZiAoIXJlc291cmNlSW50ZXJmYWNlKSB7IHJldHVybjsgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VJbnRlcmZhY2VGcW4gPSBlLmN0eC5jb3JlLnJlc291cmNlSW50ZXJmYWNlLmZxbjtcbiAgICBjb25zdCBpbnRlcmZhY2VCYXNlID0gZS5jdHguc3lzLmZpbmRJbnRlcmZhY2UocmVzb3VyY2VJbnRlcmZhY2VGcW4pO1xuICAgIGUuYXNzZXJ0KHJlc291cmNlSW50ZXJmYWNlLmV4dGVuZHMoaW50ZXJmYWNlQmFzZSksIHJlc291cmNlSW50ZXJmYWNlLmZxbik7XG4gIH0sXG59KTtcblxuLypcbi8vIFRoaXMgcnVsZSBpcyB0aGUgd29yc3RcbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdyZXNvdXJjZS1hdHRyaWJ1dGUnLFxuICBtZXNzYWdlOlxuICAgICdyZXNvdXJjZXMgbXVzdCByZXByZXNlbnQgYWxsIGNsb3VkZm9ybWF0aW9uIGF0dHJpYnV0ZXMgYXMgYXR0cmlidXRlIHByb3BlcnRpZXMuICcgK1xuICAgICdcIkBhdHRyaWJ1dGUgQVRUUlssQVRUUl1cIiBjYW4gYmUgdXNlZCB0byB0YWcgbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZSBuYW1lcy4gJyArXG4gICAgJ21pc3NpbmcgcHJvcGVydHk6JyxcbiAgZXZhbDogZSA9PiB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGUuY3R4LmNmbi5hdHRyaWJ1dGVOYW1lcykge1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSBjYW1lbGNhc2UobmFtZSkuc3RhcnRzV2l0aChjYW1lbGNhc2UoZS5jdHguY2ZuLmJhc2VuYW1lKSlcbiAgICAgICAgPyBjYW1lbGNhc2UobmFtZSlcbiAgICAgICAgOiBjYW1lbGNhc2UoZS5jdHguY2ZuLmJhc2VuYW1lICsgbmFtZSk7XG5cbiAgICAgIGNvbnN0IGZvdW5kID0gZS5jdHguYXR0cmlidXRlcy5maW5kKGEgPT4gYS5jZm5BdHRyaWJ1dGVOYW1lcy5pbmNsdWRlcyhuYW1lKSk7XG4gICAgICBlLmFzc2VydChmb3VuZCwgYCR7ZS5jdHguZnFufS4ke2V4cGVjdGVkfWAsIGV4cGVjdGVkKTtcbiAgICB9XG4gIH0sXG59KTtcbiovXG5cbnJlc291cmNlTGludGVyLmFkZCh7XG4gIGNvZGU6ICdncmFudC1yZXN1bHQnLFxuICBtZXNzYWdlOiBgXCJncmFudFwiIG1ldGhvZCBtdXN0IHJldHVybiAke0dSQU5UX1JFU1VMVF9GUU59YCxcbiAgZXZhbDogZSA9PiB7XG4gICAgY29uc3QgZ3JhbnRSZXN1bHRUeXBlID0gZS5jdHguc3lzLnRyeUZpbmRGcW4oR1JBTlRfUkVTVUxUX0ZRTik7XG5cbiAgICAvLyB0aGlzIGltcGxpZXMgdGhhdCB3ZSBhcmUgYXQgYSBsb3dlciBsYXllciAoaS5lLiBAYXdzLWNkay9jb3JlKVxuICAgIGlmICghZ3JhbnRSZXN1bHRUeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZ3JhbnRNZXRob2RzID0gZS5jdHguY29uc3RydWN0LmNsYXNzVHlwZS5hbGxNZXRob2RzLmZpbHRlcihtID0+IG0ubmFtZS5zdGFydHNXaXRoKCdncmFudCcpKTtcblxuICAgIGZvciAoY29uc3QgZ3JhbnRNZXRob2Qgb2YgZ3JhbnRNZXRob2RzKSB7XG4gICAgICBlLmFzc2VydFNpZ25hdHVyZShncmFudE1ldGhvZCwge1xuICAgICAgICByZXR1cm5zOiBncmFudFJlc3VsdFR5cGUsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXBoeXNpY2FsLW5hbWUnLFxuICBtZXNzYWdlOiAnRXZlcnkgUmVzb3VyY2UgbXVzdCBoYXZlIGEgc2luZ2xlIHBoeXNpY2FsIG5hbWUgY29uc3RydWN0aW9uIHByb3BlcnR5LCAnICtcbiAgICAnd2l0aCBhIG5hbWUgdGhhdCBpcyBhbiBlbmRpbmcgc3Vic3RyaW5nIG9mIDxjZm5SZXNvdXJjZT5OYW1lJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5jb25zdHJ1Y3QucHJvcHNUeXBlKSB7IHJldHVybjsgfVxuICAgIGUuYXNzZXJ0KGUuY3R4LnBoeXNpY2FsTmFtZVByb3AsIGUuY3R4LmNvbnN0cnVjdC5wcm9wc0Zxbik7XG4gIH0sXG59KTtcblxucmVzb3VyY2VMaW50ZXIuYWRkKHtcbiAgY29kZTogJ3Byb3BzLXBoeXNpY2FsLW5hbWUtdHlwZScsXG4gIG1lc3NhZ2U6ICdUaGUgdHlwZSBvZiB0aGUgcGh5c2ljYWwgbmFtZSBwcm9wIHNob3VsZCBhbHdheXMgYmUgYSBcInN0cmluZ1wiJyxcbiAgZXZhbDogZSA9PiB7XG4gICAgaWYgKCFlLmN0eC5waHlzaWNhbE5hbWVQcm9wKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHByb3AgPSBlLmN0eC5waHlzaWNhbE5hbWVQcm9wO1xuICAgIGUuYXNzZXJ0VHlwZXNFcXVhbChlLmN0eC5zeXMsIHByb3AudHlwZSwgJ3N0cmluZycsIGAke2UuY3R4LmNvbnN0cnVjdC5wcm9wc0Zxbn0uJHtwcm9wLm5hbWV9YCk7XG4gIH0sXG59KTtcblxuZnVuY3Rpb24gdHJ5UmVzb2x2ZUNmblJlc291cmNlKHJlc291cmNlQ2xhc3M6IHJlZmxlY3QuQ2xhc3NUeXBlKTogQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3lzID0gcmVzb3VyY2VDbGFzcy5zeXN0ZW07XG5cbiAgLy8gaWYgdGhlcmUgaXMgYSBAcmVzb3VyY2UgZG9jIHRhZywgaXQgdGFrZXMgcHJlY2VkZWNlXG4gIGNvbnN0IHRhZyA9IHJlc291cmNlQ2xhc3MuZG9jcy5jdXN0b21UYWcoJ3Jlc291cmNlJyk7XG4gIGlmICh0YWcpIHtcbiAgICByZXR1cm4gQ2ZuUmVzb3VyY2VSZWZsZWN0aW9uLmZpbmRCeU5hbWUoc3lzLCB0YWcpO1xuICB9XG5cbiAgLy8gcGFyc2UgdGhlIEZRTiBvZiB0aGUgY2xhc3MgbmFtZSBhbmQgc2VlIGlmIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgQ0ZOIHJlc291cmNlXG4gIGNvbnN0IGd1ZXNzID0gZ3Vlc3NSZXNvdXJjZU5hbWUocmVzb3VyY2VDbGFzcy5mcW4pO1xuICBpZiAoZ3Vlc3MpIHtcbiAgICBjb25zdCBjZm4gPSBDZm5SZXNvdXJjZVJlZmxlY3Rpb24uZmluZEJ5TmFtZShzeXMsIGd1ZXNzKTtcbiAgICBpZiAoY2ZuKSB7XG4gICAgICByZXR1cm4gY2ZuO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyeSB0byByZXNvbHZlIHRocm91Z2ggYW5jZXN0b3JzXG4gIGZvciAoY29uc3QgYmFzZSBvZiByZXNvdXJjZUNsYXNzLmdldEFuY2VzdG9ycygpKSB7XG4gICAgY29uc3QgcmV0ID0gdHJ5UmVzb2x2ZUNmblJlc291cmNlKGJhc2UpO1xuICAgIGlmIChyZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9XG5cbiAgLy8gZmFpbGVkIG1pc3JhYmx5XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGd1ZXNzUmVzb3VyY2VOYW1lKGZxbjogc3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoID0gL0Bhd3MtY2RrXFwvKFthLXpdKyktKFthLXowLTldKylcXC4oW0EtWl1bYS16QS1aMC05XSspLy5leGVjKGZxbik7XG4gIGlmICghbWF0Y2gpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuXG4gIGNvbnN0IFssIG9yZywgbnMsIHJzXSA9IG1hdGNoO1xuICBpZiAoIW9yZyB8fCAhbnMgfHwgIXJzKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICByZXR1cm4gYCR7b3JnfTo6JHtuc306OiR7cnN9YDtcbn1cbiJdfQ==
@@ -189,7 +189,6 @@ resourceLinter.add({
189
189
  // This rule is the worst
190
190
  resourceLinter.add({
191
191
  code: 'resource-attribute',
192
- warning: true,
193
192
  message:
194
193
  'resources must represent all cloudformation attributes as attribute properties. ' +
195
194
  '"@attribute ATTR[,ATTR]" can be used to tag non-standard attribute names. ' +
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awslint",
3
- "version": "2.56.0",
3
+ "version": "2.56.1",
4
4
  "description": "Enforces the AWS Construct Library guidelines",
5
5
  "scripts": {
6
6
  "build": "tsc -b && eslint . --ext=.ts && pkglint && chmod +x bin/awslint",
@@ -29,14 +29,14 @@
29
29
  "@types/fs-extra": "^8.1.2",
30
30
  "@types/jest": "^27.5.2",
31
31
  "@types/yargs": "^15.0.14",
32
- "@aws-cdk/pkglint": "2.56.0",
32
+ "@aws-cdk/pkglint": "2.56.1",
33
33
  "typescript": "~3.9.10",
34
34
  "@typescript-eslint/eslint-plugin": "^4.33.0",
35
35
  "@typescript-eslint/parser": "^4.33.0",
36
36
  "eslint": "^7.32.0",
37
37
  "eslint-import-resolver-node": "^0.3.6",
38
38
  "eslint-import-resolver-typescript": "^2.7.1",
39
- "@aws-cdk/eslint-plugin": "2.56.0",
39
+ "@aws-cdk/eslint-plugin": "2.56.1",
40
40
  "eslint-plugin-import": "^2.26.0",
41
41
  "eslint-plugin-jest": "^24.7.0",
42
42
  "jest": "^27.5.1"