@cdklabs/multi-az-observability 0.0.1-alpha.12 → 0.0.1-alpha.13

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.
package/.jsii CHANGED
@@ -10211,6 +10211,6 @@
10211
10211
  "symbolId": "src/services/props/ServiceProps:ServiceProps"
10212
10212
  }
10213
10213
  },
10214
- "version": "0.0.1-alpha.12",
10215
- "fingerprint": "ii47i96Fh0pUyxVhvBriYnsHEa3Xwp2Fh32rigC5ka0="
10214
+ "version": "0.0.1-alpha.13",
10215
+ "fingerprint": "F+o/YxPsJvnFVE+4xrymzjq8BCakKvVSgPMh7v9Sgi8="
10216
10216
  }
@@ -197,5 +197,5 @@ class AvailabilityZoneMapper extends constructs_1.Construct {
197
197
  }
198
198
  exports.AvailabilityZoneMapper = AvailabilityZoneMapper;
199
199
  _a = JSII_RTTI_SYMBOL_1;
200
- AvailabilityZoneMapper[_a] = { fqn: "@cdklabs/multi-az-observability.AvailabilityZoneMapper", version: "0.0.1-alpha.12" };
200
+ AvailabilityZoneMapper[_a] = { fqn: "@cdklabs/multi-az-observability.AvailabilityZoneMapper", version: "0.0.1-alpha.13" };
201
201
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5Wm9uZU1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hem1hcHBlci9BdmFpbGFiaWxpdHlab25lTWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZDQU1xQjtBQUNyQixpREFRNkI7QUFDN0IsdURBTWdDO0FBQ2hDLG1EQUEwRTtBQUMxRSwyQ0FBdUM7QUFHdkMsOERBQTJEO0FBRTNEOztHQUVHO0FBQ0gsTUFBYSxzQkFDWCxTQUFRLHNCQUFTO0lBbUJqQixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFtQztRQUVuQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCOzs7Ozs7Ozs7O1VBVUU7UUFFRixJQUFJLGlCQUFpQixHQUFtQixJQUFJLHVCQUFhLENBQ3ZELElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixvQ0FBb0M7cUJBQ3JDO29CQUNELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQzthQUNIO1NBQ0YsQ0FDRixDQUFDO1FBRUYsSUFBSSxnQkFBZ0IsR0FBbUIsSUFBSSx1QkFBYSxDQUN0RCxJQUFJLEVBQ0osa0JBQWtCLEVBQ2xCO1lBQ0UsSUFBSSxFQUFFLFlBQVk7WUFDbEIsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUM7b0JBQzFDLE1BQU0sRUFB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TyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsNkJBQTZCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0Q0FBNEMsQ0FBQyxNQUFjO1FBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsNENBQTRDO1FBQzFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQTlPSCx3REErT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ3VzdG9tUmVzb3VyY2UsXG4gIER1cmF0aW9uLFxuICBGbixcbiAgUmVmZXJlbmNlLFxuICBSZW1vdmFsUG9saWN5LFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBFZmZlY3QsXG4gIElNYW5hZ2VkUG9saWN5LFxuICBJUm9sZSxcbiAgTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgQ29kZSxcbiAgRnVuY3Rpb24sXG4gIElGdW5jdGlvbixcbiAgVHJhY2luZyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBJTG9nR3JvdXAsIExvZ0dyb3VwLCBSZXRlbnRpb25EYXlzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4vSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlclByb3BzIH0gZnJvbSAnLi9wcm9wcy9BdmFpbGFiaWxpdHlab25lTWFwcGVyUHJvcHMnO1xuaW1wb3J0IHsgTWV0cmljc0hlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9NZXRyaWNzSGVscGVyJztcblxuLyoqXG4gKiBBIGNvbnN0cnVjdCB0aGF0IGFsbG93cyB5b3UgdG8gbWFwIEFaIG5hbWVzIHRvIGlkcyBhbmQgYmFja1xuICovXG5leHBvcnQgY2xhc3MgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlclxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElBdmFpbGFiaWxpdHlab25lTWFwcGVyIHtcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIG1hcHBpbmdcbiAgICovXG4gIGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgZm9yIHRoZSBmdW5jdGlvbidzIGxvZ3NcbiAgICovXG4gIGxvZ0dyb3VwOiBJTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b20gcmVzb3VyY2UgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZCB0byB1c2VcbiAgICogRm46OkdldEF0dCBmdW5jdGlvbnMgb24gdG8gcmV0cmlldmUgYXZhaWxhYmlsaXR5IHpvbmVcbiAgICogbmFtZXMgYW5kIGlkc1xuICAgKi9cbiAgbWFwcGVyOiBDdXN0b21SZXNvdXJjZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBBdmFpbGFiaWxpdHlab25lTWFwcGVyUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvKlxuICAgIGxldCBjdXJyZW50Tm9kZTogQ29uc3RydWN0IHwgdW5kZWZpbmVkID0gdGhpcy5ub2RlLnNjb3BlO1xuXG4gICAgd2hpbGUgKGN1cnJlbnROb2RlICE9PSB1bmRlZmluZWQgJiYgIShjdXJyZW50Tm9kZSBpbnN0YW5jZW9mIFN0YWNrKSkge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ub2RlLnNjb3BlO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50Tm9kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAoY3VycmVudE5vZGUgYXMgU3RhY2spLmFkZFRyYW5zZm9ybSgnQVdTOjpMYW5ndWFnZUV4dGVuc2lvbnMnKTtcbiAgICB9XG4gICAgKi9cblxuICAgIGxldCB4cmF5TWFuYWdlZFBvbGljeTogSU1hbmFnZWRQb2xpY3kgPSBuZXcgTWFuYWdlZFBvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICAnWHJheU1hbmFnZWRQb2xpY3knLFxuICAgICAge1xuICAgICAgICBwYXRoOiAnL2F6bWFwcGVyLycsXG4gICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgJ3hyYXk6UHV0VHJhY2VTZWdtZW50cycsXG4gICAgICAgICAgICAgICd4cmF5OlB1dFRlbGVtZXRyeVJlY29yZHMnLFxuICAgICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1J1bGVzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdUYXJnZXRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdTdGF0aXN0aWNTdW1tYXJpZXMnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGxldCBlYzJNYW5hZ2VkUG9saWN5OiBJTWFuYWdlZFBvbGljeSA9IG5ldyBNYW5hZ2VkUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgICdFQzJNYW5hZ2VkUG9saWN5JyxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJy9hem1hcHBlci8nLFxuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbJ2VjMjpEZXNjcmliZUF2YWlsYWJpbGl0eVpvbmVzJ10sXG4gICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsZXQgZXhlY3V0aW9uUm9sZTogSVJvbGUgPSBuZXcgUm9sZSh0aGlzLCAnZXhlY3V0aW9uUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBwYXRoOiAnL2F6bWFwcGVyLycsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFt4cmF5TWFuYWdlZFBvbGljeSwgZWMyTWFuYWdlZFBvbGljeV0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBmaWxlOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi8uLi9hem1hcHBlci9zcmMvaW5kZXgucHknKSxcbiAgICAgICd1dGYtOCcsXG4gICAgKTtcblxuICAgIHRoaXMuZnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJGdW5jdGlvbicsIHtcbiAgICAgIHJ1bnRpbWU6IE1ldHJpY3NIZWxwZXIuUHl0aG9uUnVudGltZSxcbiAgICAgIGNvZGU6IENvZGUuZnJvbUlubGluZShmaWxlKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIHJvbGU6IGV4ZWN1dGlvblJvbGUsXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMjApLFxuICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgUkVHSU9OOiBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICAgIFBBUlRJVElPTjogRm4ucmVmKCdBV1M6OlBhcnRpdGlvbicpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMubG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAodGhpcywgJ0xvZ0dyb3VwJywge1xuICAgICAgbG9nR3JvdXBOYW1lOiBgL2F3cy9sYW1iZGEvJHt0aGlzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZX1gLFxuICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLk9ORV9EQVksXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG5cbiAgICBuZXcgTWFuYWdlZFBvbGljeSh0aGlzLCAnQ2xvdWRXYXRjaE1hbmFnZWRQb2xpY3knLCB7XG4gICAgICBwYXRoOiAnL2F6bWFwcGVyLycsXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnY2xvdWR3YXRjaDpQdXRNZXRyaWNEYXRhJ10sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnbG9nczpDcmVhdGVMb2dTdHJlYW0nLCAnbG9nczpQdXRMb2dFdmVudHMnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIEZuLnN1YihcbiAgICAgICAgICAgICAgJ2Fybjoke0FXUzo6UGFydGl0aW9ufTpsb2dzOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9OmxvZy1ncm91cDonLFxuICAgICAgICAgICAgKSArXG4gICAgICAgICAgICAgIHRoaXMubG9nR3JvdXAubG9nR3JvdXBOYW1lICtcbiAgICAgICAgICAgICAgJzoqJyxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICByb2xlczogW2V4ZWN1dGlvblJvbGVdLFxuICAgIH0pO1xuXG4gICAgdGhpcy5tYXBwZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0F2YWlsYWJpbGl0eVpvbmVNYXBwZXInLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuZnVuY3Rpb24uZnVuY3Rpb25Bcm4sXG4gICAgICBwcm9wZXJ0aWVzOlxuICAgICAgICBwcm9wcz8uYXZhaWxhYmlsaXR5Wm9uZU5hbWVzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHsgQXZhaWxhYmlsaXR5Wm9uZXM6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVOYW1lcyB9XG4gICAgICAgICAgOiB7fSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBdmFpbGFiaWxpdHkgWm9uZSBJZCBmb3IgdGhlIGdpdmVuIEF2YWlsYWJpbGl0eSBab25lIE5hbWUgaW4gdGhpcyBhY2NvdW50XG4gICAqIEBwYXJhbSBhdmFpbGFiaWxpdHlab25lTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkKGF2YWlsYWJpbGl0eVpvbmVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF2YWlsYWJpbGl0eSBab25lIE5hbWUgZm9yIHRoZSBnaXZlbiBBdmFpbGFiaWxpdHkgWm9uZSBJZCBpbiB0aGlzIGFjY291bnRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZU5hbWUoYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBwcmVmaXggZm9yIHRoZSByZWdpb24gdXNlZCB3aXRoIEF2YWlsYWJpbGl0eSBab25lIElkcywgZm9yIGV4YW1wbGVcbiAgICogaW4gdXMtZWFzdC0xLCB0aGlzIHJldHVybnMgXCJ1c2UxXCJcbiAgICogQHJldHVybnNcbiAgICovXG4gIHJlZ2lvblByZWZpeEZvckF2YWlsYWJpbGl0eVpvbmVJZHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwZXIuZ2V0QXR0U3RyaW5nKEZuLnJlZignQVdTOjpSZWdpb24nKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBhcnJheSBmb3IgQXZhaWxhYmlsaXR5IFpvbmUgSWRzIGZvciB0aGUgc3VwcGxpZWQgQXZhaWxhYmlsaXR5IFpvbmUgbmFtZXMsXG4gICAqIHRoZXkgYXJlIHJldHVybmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoZSBuYW1lcyB3ZXJlIHByb3ZpZGVkXG4gICAqIEBwYXJhbSBhdmFpbGFiaWxpdHlab25lTmFtZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJZHNBc0FycmF5KGF2YWlsYWJpbGl0eVpvbmVOYW1lczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZHMucHVzaCh0aGlzLmF2YWlsYWJpbGl0eVpvbmVJZChhdmFpbGFiaWxpdHlab25lTmFtZXNbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21tYSBkZWxpbWl0ZWQgbGlzdCBvZiBBdmFpbGFiaWxpdHkgWm9uZSBJZHMgZm9yIHRoZSBzdXBwbGllZFxuICAgKiBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lcy4gWW91IGNhbiB1c2UgdGhpcyBzdHJpbmcgd2l0aCBGbi5TZWxlY3QoeCwgRm4uU3BsaXQoXCIsXCIsIGF6cykpIHRvXG4gICAqIGdldCBhIHNwZWNpZmljIEF2YWlsYWJpbGl0eSBab25lIElkXG4gICAqIEBwYXJhbSBhdmFpbGFiaWxpdHlab25lTmFtZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJZHNBc0NvbW1hRGVsaW1pdGVkTGlzdChcbiAgICBhdmFpbGFiaWxpdHlab25lTmFtZXM6IHN0cmluZ1tdLFxuICApOiBzdHJpbmcge1xuICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF2YWlsYWJpbGl0eVpvbmVOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWRzLnB1c2godGhpcy5hdmFpbGFiaWxpdHlab25lSWQoYXZhaWxhYmlsaXR5Wm9uZU5hbWVzW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlkcy5qb2luKCcsJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIEF2YWlsYWJpbGl0eSBab25lIElkcyBmb3IgdGhlIHN1cHBsaWVkXG4gICAqIEF2YWlsYWJpbGl0eSBab25lIG5hbWVzLiBZb3UgY2FuIHVzZSB0aGlzIHN0cmluZyB3aXRoIEZuLlNlbGVjdCh4LCBGbi5TcGxpdChcIixcIiwgYXpzKSkgdG9cbiAgICogZ2V0IGEgc3BlY2lmaWMgQXZhaWxhYmlsaXR5IFpvbmUgSWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFsbEF2YWlsYWJpbGl0eVpvbmVJZHNBc0NvbW1hRGVsaW1pdGVkTGlzdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoJ0FsbEF2YWlsYWJpbGl0eVpvbmVJZHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRoYXQgY2FuIGJlIGNhc3QgdG8gYSBzdHJpbmcgYXJyYXkgd2l0aCBhbGwgb2YgdGhlXG4gICAqIEF2YWlsYWJpbGl0eSBab25lIElkc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYWxsQXZhaWxhYmlsaXR5Wm9uZUlkc0FzQXJyYXkoKTogUmVmZXJlbmNlIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwZXIuZ2V0QXR0KCdBbGxBdmFpbGFiaWxpdHlab25lSWRzQXJyYXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhIGxldHRlciBsaWtlIFwiZlwiIG9yIFwiYVwiLCByZXR1cm5zIHRoZSBBdmFpbGFiaWxpdHkgWm9uZSBJZCBmb3IgdGhhdFxuICAgKiBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lIGluIHRoaXMgYWNjb3VudFxuICAgKiBAcGFyYW0gbGV0dGVyXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihsZXR0ZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZyhsZXR0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIG9mIHRoZSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lcyBpbiB0aGlzIFJlZ2lvbiBhcyBhIGNvbW1hIGRlbGltaXRlZFxuICAgKiBsaXN0LiBZb3UgY2FuIHVzZSB0aGlzIHN0cmluZyB3aXRoIEZuLlNlbGVjdCh4LCBGbi5TcGxpdChcIixcIiwgYXpzKSkgdG9cbiAgICogZ2V0IGEgc3BlY2lmaWMgQXZhaWxhYmlsaXR5IFpvbmUgTmFtZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYWxsQXZhaWxhYmlsaXR5Wm9uZU5hbWVzQXNDb21tYURlbGltaXRlZExpc3QoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwZXIuZ2V0QXR0U3RyaW5nKCdBbGxBdmFpbGFiaWxpdHlab25lTmFtZXMnKTtcbiAgfVxufVxuIl19
@@ -74,7 +74,8 @@ class BasicServiceDashboard extends constructs_1.Construct {
74
74
  left: Object.values(processedBytesPerZone),
75
75
  leftYAxis: {
76
76
  min: 0,
77
- showUnits: true,
77
+ showUnits: false,
78
+ label: 'Bytes'
78
79
  }
79
80
  }));
80
81
  albWidgets.push(new aws_cloudwatch_1.GraphWidget({
@@ -239,4 +240,4 @@ class BasicServiceDashboard extends constructs_1.Construct {
239
240
  }
240
241
  }
241
242
  exports.BasicServiceDashboard = BasicServiceDashboard;
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2ljX29ic2VydmFiaWxpdHkvQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQTJDO0FBQzNDLCtEQVNvQztBQUNwQywyQ0FBdUM7QUFHdkMsOERBQTJEO0FBQzNELDhGQUEyRjtBQUczRixNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBRTFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FDeEMsSUFBZ0MsRUFDaEMsUUFBZ0MsRUFDaEMsTUFBZ0I7UUFFaEIsSUFBSSxVQUFVLEdBQWMsRUFBRSxDQUFDO1FBRS9CLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RixJQUFJLG1CQUFtQixHQUE2QiwrREFBOEIsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFJLElBQUksaUJBQWlCLEdBQTZCLCtEQUE4QixDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEksSUFBSSxxQkFBcUIsR0FBNkIsK0RBQThCLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5SSxJQUFJLGNBQWMsR0FBNkIsK0RBQThCLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkksSUFBSSxlQUFlLEdBQTZCLCtEQUE4QixDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbEksSUFBSSxnQkFBZ0IsR0FBNkIsK0RBQThCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwSSxVQUFVLENBQUMsSUFBSSxDQUNiLElBQUksNEJBQVcsQ0FBQztZQUNkLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUM7WUFDbkQsTUFBTSxFQUFFLGdCQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1lBQ3hDLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsQ0FBQztnQkFDTixLQUFLLEVBQUUsS0FBSztnQkFDWixTQUFTLEVBQUUsS0FBSzthQUNqQjtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBRUYsVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLDRCQUFXLENBQUM7WUFDZCxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxDQUFDO1lBQ1IsS0FBSyxFQUFFLGdCQUFFLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDO1lBQ2pELE1BQU0sRUFBRSxnQkFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUN0QyxTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxFQUFFLENBQUM7Z0JBQ04sS0FBSyxFQUFFLEtBQUs7Z0JBQ1osU0FBUyxFQUFFLEtBQUs7YUFDakI7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLFVBQVUsQ0FBQyxJQUFJLENBQ2IsSUFBSSw0QkFBVyxDQUFDO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssRUFBRSxnQkFBRSxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQztZQUNuRCxNQUFNLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDaEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQ3BDLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsQ0FBQztnQkFDTixLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFLEtBQUs7YUFDakI7U0FDRixDQUFDLENBQ0gsQ0FBQztRQUVGLFVBQVUsQ0FBQyxJQUFJLENBQ2IsSUFBSSw0QkFBVyxDQUFDO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssRUFBRSxnQkFBRSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNoRCxNQUFNLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDaEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDckMsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxLQUFLO2dCQUNaLFNBQVMsRUFBRSxLQUFLO2FBQ2pCO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixVQUFVLENBQUMsSUFBSSxDQUNiLElBQUksNEJBQVcsQ0FBQztZQUNkLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLENBQUM7WUFDUixLQUFLLEVBQUUsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUM7WUFDckQsTUFBTSxFQUFFLGdCQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQ2hDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1lBQzFDLFNBQVMsRUFBRTtnQkFDVCxHQUFHLEVBQUUsQ0FBQztnQkFDTixTQUFTLEVBQUUsSUFBSTthQUNoQjtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBRUYsVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLDRCQUFXLENBQUM7WUFDZCxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxDQUFDO1lBQ1IsS0FBSyxFQUFFLGdCQUFFLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDO1lBQ2hFLE1BQU0sRUFBRSxnQkFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDbkMsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxjQUFjO2dCQUNyQixTQUFTLEVBQUUsS0FBSzthQUNqQjtTQUNGLENBQUMsQ0FDSCxDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXdERztJQUVLLE1BQU0sQ0FBQyx1QkFBdUIsQ0FDcEMsTUFBaUMsRUFDakMsT0FBbUMsRUFDbkMsUUFBZ0M7UUFFaEMsSUFBSSxPQUFPLEdBQWMsRUFBRSxDQUFDO1FBRTVCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSwyQkFBVSxDQUFDO1lBQ2IsUUFBUSxFQUFFLG9DQUFvQztZQUM5QyxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLFVBQVUsR0FBVyxDQUFDLENBQUM7UUFFM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFFOUMsSUFBSSxrQkFBa0IsR0FBVyxRQUFRLENBQUMsNENBQTRDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFakcsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLDRCQUFXLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLGtCQUFrQixHQUFHLDhCQUE4QjtnQkFDMUQsTUFBTSxFQUFFLGdCQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUNoQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pCLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLENBQUM7b0JBQ04sS0FBSyxFQUFFLGlCQUFpQjtvQkFDeEIsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0YsQ0FBQyxDQUNILENBQUM7WUFFRixtREFBbUQ7WUFDbkQsaURBQWlEO1lBQ2pELHVCQUF1QjtZQUN2QixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDOUQsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUN6QyxJQUFJLElBQUksR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQztvQkFDOUMsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLGtDQUFpQixDQUFDO3dCQUNwQixNQUFNLEVBQUUsQ0FBQzt3QkFDVCxLQUFLLEVBQUUsQ0FBQzt3QkFDUixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3ZCLENBQUMsQ0FDSCxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsVUFBVSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxNQUV6QyxFQUNELFFBQWdDO1FBRTlCLElBQUksT0FBTyxHQUFjLEVBQUUsQ0FBQztRQUU1QixPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksMkJBQVUsQ0FBQztZQUNiLFFBQVEsRUFBRSwwQ0FBMEM7WUFDcEQsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FDSCxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN2QyxJQUFJLGtCQUFrQixHQUFXLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVqRyxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksa0NBQWlCLENBQUM7Z0JBQ3BCLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLGtCQUFrQixHQUFHLDRCQUE0QjthQUN6RCxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUlELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLE9BQU8sR0FBZ0IsRUFBRSxDQUFDO1FBRTlCLE9BQU8sQ0FBQyxJQUFJLENBQ1YscUJBQXFCLENBQUMsMEJBQTBCLENBQzlDLEtBQUssQ0FBQyxrQ0FBa0MsRUFDeEMsS0FBSyxDQUFDLFFBQVEsQ0FDZixDQUNGLENBQUM7UUFFRjs7Ozs7Ozs7Ozs7V0FXRztRQUVILElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FDVixxQkFBcUIsQ0FBQywyQkFBMkIsQ0FDL0MsS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FDRixDQUFBO1FBQ0gsQ0FBQztRQUVELElBQ0UsNkJBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDO1lBQ25FLDZCQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUNoRSxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FDM0MsS0FBSyxDQUFDLG1DQUFtQyxFQUN6QyxLQUFLLENBQUMsZ0NBQWdDLEVBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQ2YsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwwQkFBUyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUM1RCxhQUFhLEVBQ1gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQy9CLGdCQUFFLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDO1lBQ3pDLGVBQWUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMvQixjQUFjLEVBQUUsK0JBQWMsQ0FBQyxJQUFJO1lBQ25DLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdURCxzREE2VEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBBbGFybVN0YXR1c1dpZGdldCxcbiAgRGFzaGJvYXJkLFxuICBHcmFwaFdpZGdldCxcbiAgSUFsYXJtLFxuICBJTWV0cmljLFxuICBJV2lkZ2V0LFxuICBQZXJpb2RPdmVycmlkZSxcbiAgVGV4dFdpZGdldCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNpY1NlcnZpY2VEYXNoYm9hcmRQcm9wcyB9IGZyb20gJy4vcHJvcHMvQmFzaWNTZXJ2aWNlRGFzaGJvYXJkUHJvcHMnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4uL2F6bWFwcGVyL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgTWV0cmljc0hlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9NZXRyaWNzSGVscGVyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcblxuZXhwb3J0IGNsYXNzIEJhc2ljU2VydmljZURhc2hib2FyZCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVMb2FkQmFsYW5jZXJXaWRnZXRzKFxuICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICAgIHBlcmlvZDogRHVyYXRpb25cbiAgKTogSVdpZGdldFtdIHtcbiAgICBsZXQgYWxiV2lkZ2V0czogSVdpZGdldFtdID0gW107XG5cbiAgICBhbGJXaWRnZXRzLnB1c2gobmV3IFRleHRXaWRnZXQoeyBoZWlnaHQ6IDIsIHdpZHRoOiAyNCwgbWFya2Rvd246IFwiTG9hZCBCYWxhbmNlciBNZXRyaWNzXCIgfSkpO1xuXG4gICAgbGV0IHN1Y2Nlc3NDb3VudFBlclpvbmU6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcy5nZXRUb3RhbEFsYlN1Y2Nlc3NDb3VudFBlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlcik7XG4gICAgbGV0IGZhdWx0Q291bnRQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJGYXVsdENvdW50UGVyWm9uZShhbGJzLCBwZXJpb2QsIGF6TWFwcGVyKTtcbiAgICBsZXQgcHJvY2Vzc2VkQnl0ZXNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJQcm9jZXNzZWRCeXRlc1BlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlcik7XG4gICAgbGV0IGxhdGVuY3lQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJMYXRlbmN5UGVyWm9uZShhbGJzLCBcInA5OVwiLCBwZXJpb2QsIGF6TWFwcGVyKTtcbiAgICBsZXQgcmVxdWVzdHNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJSZXF1ZXN0c1BlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlcik7ICBcbiAgICBsZXQgZmF1bHRSYXRlUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmdldFRvdGFsQWxiRmF1bHRSYXRlUGVyWm9uZShhbGJzLCBwZXJpb2QsIGF6TWFwcGVyKTsgIFxuXG4gICAgYWxiV2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA4LFxuICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgdGl0bGU6IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0gWm9uYWwgU3VjY2VzcyBDb3VudCcpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhzdWNjZXNzQ291bnRQZXJab25lKSxcbiAgICAgICAgbGVmdFlBeGlzOiB7XG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIGxhYmVsOiAnU3VtJyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhbGJXaWRnZXRzLnB1c2goXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICB0aXRsZTogRm4uc3ViKCcke0FXUzo6UmVnaW9ufSBab25hbCBGYXVsdCBDb3VudCcpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhmYXVsdENvdW50UGVyWm9uZSksXG4gICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBsYWJlbDogJ1N1bScsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgYWxiV2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA4LFxuICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgdGl0bGU6IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0gWm9uYWwgUmVxdWVzdCBDb3VudCcpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhyZXF1ZXN0c1BlclpvbmUpLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbGFiZWw6ICdQZXJjZW50JyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhbGJXaWRnZXRzLnB1c2goXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICB0aXRsZTogRm4uc3ViKCcke0FXUzo6UmVnaW9ufSBab25hbCBGYXVsdCBSYXRlJyksXG4gICAgICAgIHJlZ2lvbjogRm4uc3ViKCcke0FXUzo6UmVnaW9ufScpLFxuICAgICAgICBsZWZ0OiBPYmplY3QudmFsdWVzKGZhdWx0UmF0ZVBlclpvbmUpLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbGFiZWw6ICdTdW0nLFxuICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGFsYldpZGdldHMucHVzaChcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogOCxcbiAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgIHRpdGxlOiBGbi5zdWIoJyR7QVdTOjpSZWdpb259IFpvbmFsIFByb2Nlc3NlZCBCeXRlcycpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhwcm9jZXNzZWRCeXRlc1BlclpvbmUpLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgc2hvd1VuaXRzOiB0cnVlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhbGJXaWRnZXRzLnB1c2goXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICB0aXRsZTogRm4uc3ViKCcke0FXUzo6UmVnaW9ufSBab25hbCBUYXJnZXQgUmVzcG9uc2UgVGltZSAocDk5KScpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhsYXRlbmN5UGVyWm9uZSksXG4gICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBsYWJlbDogXCJNaWxsaXNlY29uZHNcIixcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gYWxiV2lkZ2V0cztcbiAgfVxuXG4gIC8qcHJpdmF0ZSBzdGF0aWMgY3JlYXRlTG9hZEJhbGFuY2VyV2lkZ2V0cyhcbiAgICBhbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH0sXG4gICAgbWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0sXG4gICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICk6IElXaWRnZXRbXSB7XG4gICAgbGV0IHdpZGdldHM6IElXaWRnZXRbXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBtYXJrZG93bjogJ0xvYWQgQmFsYW5jZXIgTWV0cmljcycsXG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCByb3dUcmFja2VyOiBudW1iZXIgPSAwO1xuXG4gICAgT2JqZWN0LmtleXMoYWxhcm1zKS5mb3JFYWNoKChhekxldHRlciwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgICB0aXRsZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJyBMb2FkIEJhbGFuY2VyIEZhdWx0cycsXG4gICAgICAgICAgcmVnaW9uOiBGbi5zdWIoJyR7QVdTOjpSZWdpb259JyksXG4gICAgICAgICAgbGVmdDogW21ldHJpY3NbYXpMZXR0ZXJdXSxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdGYXVsdCBDb3VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLy9XZSdyZSBvbiB0aGUgdGhpcmQgb25lIGZvciB0aGlzIHNldCwgYWRkIDMgYWxhcm1zXG4gICAgICAvL29yIGlmIHdlJ3JlIGF0IHRoZSBlbmQsIGF0IHRoZSBuZWNlc3NhcnkgYW1vdW50XG4gICAgICAvL29mIGFsYXJtcywgMSwgMiwgb3IgM1xuICAgICAgaWYgKGluZGV4ICUgMyA9PSAyIHx8IGluZGV4IC0gMSA9PSBPYmplY3Qua2V5cyhhbGFybXMpLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBrID0gcm93VHJhY2tlcjsgayA8PSBpbmRleDsgaysrKSB7XG4gICAgICAgICAgbGV0IGF6SWQ6IHN0cmluZyA9IE9iamVjdC5rZXlzKGFsYXJtcykuYXQoaykhO1xuICAgICAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgICAgIGFsYXJtczogW2FsYXJtc1theklkXV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93VHJhY2tlciArPSBpbmRleCArIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfSovXG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlTmF0R2F0ZXdheVdpZGdldHMoXG4gICAgYWxhcm1zOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9LFxuICAgIG1ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9LFxuICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICApOiBJV2lkZ2V0W10ge1xuICAgIGxldCB3aWRnZXRzOiBJV2lkZ2V0W10gPSBbXTtcblxuICAgIHdpZGdldHMucHVzaChcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgbWFya2Rvd246ICdOQVQgR2F0ZXdheSBEcm9wcGVkIFBhY2tldCBNZXRyaWNzJyxcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgbGV0IHJvd1RyYWNrZXI6IG51bWJlciA9IDA7XG5cbiAgICBPYmplY3Qua2V5cyhhbGFybXMpLmZvckVhY2goKGF6TGV0dGVyLCBpbmRleCkgPT4ge1xuXG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgTkFUIEdhdGV3YXkgRHJvcHBlZCBQYWNrZXRzJyxcbiAgICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgICBsZWZ0OiBbbWV0cmljc1thekxldHRlcl1dLFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgbGVmdFlBeGlzOiB7XG4gICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICBsYWJlbDogJ0Ryb3BwZWQgcGFja2V0cycsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLy9XZSdyZSBvbiB0aGUgdGhpcmQgb25lIGZvciB0aGlzIHNldCwgYWRkIDMgYWxhcm1zXG4gICAgICAvL29yIGlmIHdlJ3JlIGF0IHRoZSBlbmQsIGF0IHRoZSBuZWNlc3NhcnkgYW1vdW50XG4gICAgICAvL29mIGFsYXJtcywgMSwgMiwgb3IgM1xuICAgICAgaWYgKGluZGV4ICUgMyA9PSAyIHx8IGluZGV4IC0gMSA9PSBPYmplY3Qua2V5cyhhbGFybXMpLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBrID0gcm93VHJhY2tlcjsgayA8PSBpbmRleDsgaysrKSB7XG4gICAgICAgICAgbGV0IGF6SWQ6IHN0cmluZyA9IE9iamVjdC5rZXlzKGFsYXJtcykuYXQoaykhO1xuICAgICAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgICAgIGFsYXJtczogW2FsYXJtc1theklkXV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93VHJhY2tlciArPSBpbmRleCArIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZVRvcExldmVsQWxhcm1XaWRnZXRzKGFsYXJtczoge1xuICAgIFtrZXk6IHN0cmluZ106IElBbGFybTtcbiAgfSxcbiAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICk6IElXaWRnZXRbXSB7XG4gICAgbGV0IHdpZGdldHM6IElXaWRnZXRbXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBtYXJrZG93bjogJ0F2YWlsYWJpbGl0eSBab25lIElzb2xhdGVkIEltcGFjdCBBbGFybXMnLFxuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBPYmplY3Qua2V5cyhhbGFybXMpLmZvckVhY2goKGF6TGV0dGVyKSA9PiB7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgICBhbGFybXM6IFthbGFybXNbYXpMZXR0ZXJdXSxcbiAgICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgQWdncmVnYXRlIElzb2xhdGVkIEltcGFjdCcsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB3aWRnZXRzO1xuICB9XG5cbiAgZGFzaGJvYXJkOiBEYXNoYm9hcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2ljU2VydmljZURhc2hib2FyZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGxldCB3aWRnZXRzOiBJV2lkZ2V0W11bXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLmNyZWF0ZVRvcExldmVsQWxhcm1XaWRnZXRzKFxuICAgICAgICBwcm9wcy56b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zLFxuICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICksXG4gICAgKTtcblxuICAgIC8qaWYgKFxuICAgICAgTWV0cmljc0hlbHBlci5pc05vdEVtcHR5KHByb3BzLnpvbmFsTG9hZEJhbGFuY2VySXNvbGF0ZWRJbXBhY3RBbGFybXMpICYmXG4gICAgICBNZXRyaWNzSGVscGVyLmlzTm90RW1wdHkocHJvcHMuem9uYWxMb2FkQmFsYW5jZXJGYXVsdFJhdGVNZXRyaWNzKVxuICAgICkge1xuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBCYXNpY1NlcnZpY2VEYXNoYm9hcmQuY3JlYXRlTG9hZEJhbGFuY2VyV2lkZ2V0cyhcbiAgICAgICAgICBwcm9wcy56b25hbExvYWRCYWxhbmNlcklzb2xhdGVkSW1wYWN0QWxhcm1zLFxuICAgICAgICAgIHByb3BzLnpvbmFsTG9hZEJhbGFuY2VyRmF1bHRSYXRlTWV0cmljcyxcbiAgICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSovXG5cbiAgICBpZiAocHJvcHMuYWxicykge1xuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBCYXNpY1NlcnZpY2VEYXNoYm9hcmQuZ2VuZXJhdGVMb2FkQmFsYW5jZXJXaWRnZXRzKFxuICAgICAgICAgIHByb3BzLmFsYnMsXG4gICAgICAgICAgcHJvcHMuYXpNYXBwZXIsXG4gICAgICAgICAgcHJvcHMucGVyaW9kXG4gICAgICAgIClcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBNZXRyaWNzSGVscGVyLmlzTm90RW1wdHkocHJvcHMuem9uYWxOYXRHYXRld2F5SXNvbGF0ZWRJbXBhY3RBbGFybXMpICYmXG4gICAgICBNZXRyaWNzSGVscGVyLmlzTm90RW1wdHkocHJvcHMuem9uYWxOYXRHYXRld2F5UGFja2V0RHJvcE1ldHJpY3MpXG4gICAgKSB7XG4gICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgIEJhc2ljU2VydmljZURhc2hib2FyZC5jcmVhdGVOYXRHYXRld2F5V2lkZ2V0cyhcbiAgICAgICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlJc29sYXRlZEltcGFjdEFsYXJtcyxcbiAgICAgICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlQYWNrZXREcm9wTWV0cmljcyxcbiAgICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKHRoaXMsICdCYXNpY1NlcnZpY2VEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmROYW1lOlxuICAgICAgICBwcm9wcy5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgRm4uc3ViKCctcGVyLWF6LWhlYWx0aC0ke0FXUzo6UmVnaW9ufScpLFxuICAgICAgZGVmYXVsdEludGVydmFsOiBwcm9wcy5pbnRlcnZhbCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPLFxuICAgICAgd2lkZ2V0czogd2lkZ2V0cyxcbiAgICB9KTtcbiAgfVxufVxuIl19
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2ljX29ic2VydmFiaWxpdHkvQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQTJDO0FBQzNDLCtEQVNvQztBQUNwQywyQ0FBdUM7QUFHdkMsOERBQTJEO0FBQzNELDhGQUEyRjtBQUczRixNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBRTFDLE1BQU0sQ0FBQywyQkFBMkIsQ0FDeEMsSUFBZ0MsRUFDaEMsUUFBZ0MsRUFDaEMsTUFBZ0I7UUFFaEIsSUFBSSxVQUFVLEdBQWMsRUFBRSxDQUFDO1FBRS9CLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3RixJQUFJLG1CQUFtQixHQUE2QiwrREFBOEIsQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFJLElBQUksaUJBQWlCLEdBQTZCLCtEQUE4QixDQUFDLDRCQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEksSUFBSSxxQkFBcUIsR0FBNkIsK0RBQThCLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM5SSxJQUFJLGNBQWMsR0FBNkIsK0RBQThCLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkksSUFBSSxlQUFlLEdBQTZCLCtEQUE4QixDQUFDLDBCQUEwQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFB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QUFDO1lBQ25FLDZCQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUNoRSxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixxQkFBcUIsQ0FBQyx1QkFBdUIsQ0FDM0MsS0FBSyxDQUFDLG1DQUFtQyxFQUN6QyxLQUFLLENBQUMsZ0NBQWdDLEVBQ3RDLEtBQUssQ0FBQyxRQUFRLENBQ2YsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwwQkFBUyxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUM1RCxhQUFhLEVBQ1gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQy9CLGdCQUFFLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDO1lBQ3pDLGVBQWUsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUMvQixjQUFjLEVBQUUsK0JBQWMsQ0FBQyxJQUFJO1lBQ25DLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTlURCxzREE4VEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBBbGFybVN0YXR1c1dpZGdldCxcbiAgRGFzaGJvYXJkLFxuICBHcmFwaFdpZGdldCxcbiAgSUFsYXJtLFxuICBJTWV0cmljLFxuICBJV2lkZ2V0LFxuICBQZXJpb2RPdmVycmlkZSxcbiAgVGV4dFdpZGdldCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNpY1NlcnZpY2VEYXNoYm9hcmRQcm9wcyB9IGZyb20gJy4vcHJvcHMvQmFzaWNTZXJ2aWNlRGFzaGJvYXJkUHJvcHMnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4uL2F6bWFwcGVyL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgTWV0cmljc0hlbHBlciB9IGZyb20gJy4uL3V0aWxpdGllcy9NZXRyaWNzSGVscGVyJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcblxuZXhwb3J0IGNsYXNzIEJhc2ljU2VydmljZURhc2hib2FyZCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVMb2FkQmFsYW5jZXJXaWRnZXRzKFxuICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICAgIHBlcmlvZDogRHVyYXRpb25cbiAgKTogSVdpZGdldFtdIHtcbiAgICBsZXQgYWxiV2lkZ2V0czogSVdpZGdldFtdID0gW107XG5cbiAgICBhbGJXaWRnZXRzLnB1c2gobmV3IFRleHRXaWRnZXQoeyBoZWlnaHQ6IDIsIHdpZHRoOiAyNCwgbWFya2Rvd246IFwiTG9hZCBCYWxhbmNlciBNZXRyaWNzXCIgfSkpO1xuXG4gICAgbGV0IHN1Y2Nlc3NDb3VudFBlclpvbmU6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcy5nZXRUb3RhbEFsYlN1Y2Nlc3NDb3VudFBlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlcik7XG4gICAgbGV0IGZhdWx0Q291bnRQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJGYXVsdENvdW50UGVyWm9uZShhbGJzLCBwZXJpb2QsIGF6TWFwcGVyKTtcbiAgICBsZXQgcHJvY2Vzc2VkQnl0ZXNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJQcm9jZXNzZWRCeXRlc1BlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlcik7XG4gICAgbGV0IGxhdGVuY3lQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJMYXRlbmN5UGVyWm9uZShhbGJzLCBcInA5OVwiLCBwZXJpb2QsIGF6TWFwcGVyKTtcbiAgICBsZXQgcmVxdWVzdHNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0VG90YWxBbGJSZXF1ZXN0c1BlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlcik7ICBcbiAgICBsZXQgZmF1bHRSYXRlUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmdldFRvdGFsQWxiRmF1bHRSYXRlUGVyWm9uZShhbGJzLCBwZXJpb2QsIGF6TWFwcGVyKTsgIFxuXG4gICAgYWxiV2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA4LFxuICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgdGl0bGU6IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0gWm9uYWwgU3VjY2VzcyBDb3VudCcpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhzdWNjZXNzQ291bnRQZXJab25lKSxcbiAgICAgICAgbGVmdFlBeGlzOiB7XG4gICAgICAgICAgbWluOiAwLFxuICAgICAgICAgIGxhYmVsOiAnU3VtJyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhbGJXaWRnZXRzLnB1c2goXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICB0aXRsZTogRm4uc3ViKCcke0FXUzo6UmVnaW9ufSBab25hbCBGYXVsdCBDb3VudCcpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhmYXVsdENvdW50UGVyWm9uZSksXG4gICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBsYWJlbDogJ1N1bScsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgYWxiV2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA4LFxuICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgdGl0bGU6IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0gWm9uYWwgUmVxdWVzdCBDb3VudCcpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhyZXF1ZXN0c1BlclpvbmUpLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbGFiZWw6ICdQZXJjZW50JyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhbGJXaWRnZXRzLnB1c2goXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICB0aXRsZTogRm4uc3ViKCcke0FXUzo6UmVnaW9ufSBab25hbCBGYXVsdCBSYXRlJyksXG4gICAgICAgIHJlZ2lvbjogRm4uc3ViKCcke0FXUzo6UmVnaW9ufScpLFxuICAgICAgICBsZWZ0OiBPYmplY3QudmFsdWVzKGZhdWx0UmF0ZVBlclpvbmUpLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbGFiZWw6ICdTdW0nLFxuICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGFsYldpZGdldHMucHVzaChcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogOCxcbiAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgIHRpdGxlOiBGbi5zdWIoJyR7QVdTOjpSZWdpb259IFpvbmFsIFByb2Nlc3NlZCBCeXRlcycpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhwcm9jZXNzZWRCeXRlc1BlclpvbmUpLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogJ0J5dGVzJ1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhbGJXaWRnZXRzLnB1c2goXG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA4LFxuICAgICAgICB0aXRsZTogRm4uc3ViKCcke0FXUzo6UmVnaW9ufSBab25hbCBUYXJnZXQgUmVzcG9uc2UgVGltZSAocDk5KScpLFxuICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgbGVmdDogT2JqZWN0LnZhbHVlcyhsYXRlbmN5UGVyWm9uZSksXG4gICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBsYWJlbDogXCJNaWxsaXNlY29uZHNcIixcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gYWxiV2lkZ2V0cztcbiAgfVxuXG4gIC8qcHJpdmF0ZSBzdGF0aWMgY3JlYXRlTG9hZEJhbGFuY2VyV2lkZ2V0cyhcbiAgICBhbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH0sXG4gICAgbWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0sXG4gICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICk6IElXaWRnZXRbXSB7XG4gICAgbGV0IHdpZGdldHM6IElXaWRnZXRbXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBtYXJrZG93bjogJ0xvYWQgQmFsYW5jZXIgTWV0cmljcycsXG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCByb3dUcmFja2VyOiBudW1iZXIgPSAwO1xuXG4gICAgT2JqZWN0LmtleXMoYWxhcm1zKS5mb3JFYWNoKChhekxldHRlciwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgICB0aXRsZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJyBMb2FkIEJhbGFuY2VyIEZhdWx0cycsXG4gICAgICAgICAgcmVnaW9uOiBGbi5zdWIoJyR7QVdTOjpSZWdpb259JyksXG4gICAgICAgICAgbGVmdDogW21ldHJpY3NbYXpMZXR0ZXJdXSxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdGYXVsdCBDb3VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLy9XZSdyZSBvbiB0aGUgdGhpcmQgb25lIGZvciB0aGlzIHNldCwgYWRkIDMgYWxhcm1zXG4gICAgICAvL29yIGlmIHdlJ3JlIGF0IHRoZSBlbmQsIGF0IHRoZSBuZWNlc3NhcnkgYW1vdW50XG4gICAgICAvL29mIGFsYXJtcywgMSwgMiwgb3IgM1xuICAgICAgaWYgKGluZGV4ICUgMyA9PSAyIHx8IGluZGV4IC0gMSA9PSBPYmplY3Qua2V5cyhhbGFybXMpLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBrID0gcm93VHJhY2tlcjsgayA8PSBpbmRleDsgaysrKSB7XG4gICAgICAgICAgbGV0IGF6SWQ6IHN0cmluZyA9IE9iamVjdC5rZXlzKGFsYXJtcykuYXQoaykhO1xuICAgICAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgICAgIGFsYXJtczogW2FsYXJtc1theklkXV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93VHJhY2tlciArPSBpbmRleCArIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfSovXG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlTmF0R2F0ZXdheVdpZGdldHMoXG4gICAgYWxhcm1zOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9LFxuICAgIG1ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9LFxuICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICApOiBJV2lkZ2V0W10ge1xuICAgIGxldCB3aWRnZXRzOiBJV2lkZ2V0W10gPSBbXTtcblxuICAgIHdpZGdldHMucHVzaChcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgbWFya2Rvd246ICdOQVQgR2F0ZXdheSBEcm9wcGVkIFBhY2tldCBNZXRyaWNzJyxcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgbGV0IHJvd1RyYWNrZXI6IG51bWJlciA9IDA7XG5cbiAgICBPYmplY3Qua2V5cyhhbGFybXMpLmZvckVhY2goKGF6TGV0dGVyLCBpbmRleCkgPT4ge1xuXG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgTkFUIEdhdGV3YXkgRHJvcHBlZCBQYWNrZXRzJyxcbiAgICAgICAgICByZWdpb246IEZuLnN1YignJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgICAgICBsZWZ0OiBbbWV0cmljc1thekxldHRlcl1dLFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgbGVmdFlBeGlzOiB7XG4gICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICBsYWJlbDogJ0Ryb3BwZWQgcGFja2V0cycsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLy9XZSdyZSBvbiB0aGUgdGhpcmQgb25lIGZvciB0aGlzIHNldCwgYWRkIDMgYWxhcm1zXG4gICAgICAvL29yIGlmIHdlJ3JlIGF0IHRoZSBlbmQsIGF0IHRoZSBuZWNlc3NhcnkgYW1vdW50XG4gICAgICAvL29mIGFsYXJtcywgMSwgMiwgb3IgM1xuICAgICAgaWYgKGluZGV4ICUgMyA9PSAyIHx8IGluZGV4IC0gMSA9PSBPYmplY3Qua2V5cyhhbGFybXMpLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBrID0gcm93VHJhY2tlcjsgayA8PSBpbmRleDsgaysrKSB7XG4gICAgICAgICAgbGV0IGF6SWQ6IHN0cmluZyA9IE9iamVjdC5rZXlzKGFsYXJtcykuYXQoaykhO1xuICAgICAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgICAgIGFsYXJtczogW2FsYXJtc1theklkXV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93VHJhY2tlciArPSBpbmRleCArIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZVRvcExldmVsQWxhcm1XaWRnZXRzKGFsYXJtczoge1xuICAgIFtrZXk6IHN0cmluZ106IElBbGFybTtcbiAgfSxcbiAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICk6IElXaWRnZXRbXSB7XG4gICAgbGV0IHdpZGdldHM6IElXaWRnZXRbXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBtYXJrZG93bjogJ0F2YWlsYWJpbGl0eSBab25lIElzb2xhdGVkIEltcGFjdCBBbGFybXMnLFxuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBPYmplY3Qua2V5cyhhbGFybXMpLmZvckVhY2goKGF6TGV0dGVyKSA9PiB7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgICBhbGFybXM6IFthbGFybXNbYXpMZXR0ZXJdXSxcbiAgICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgQWdncmVnYXRlIElzb2xhdGVkIEltcGFjdCcsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB3aWRnZXRzO1xuICB9XG5cbiAgZGFzaGJvYXJkOiBEYXNoYm9hcmQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEJhc2ljU2VydmljZURhc2hib2FyZFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGxldCB3aWRnZXRzOiBJV2lkZ2V0W11bXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLmNyZWF0ZVRvcExldmVsQWxhcm1XaWRnZXRzKFxuICAgICAgICBwcm9wcy56b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zLFxuICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICksXG4gICAgKTtcblxuICAgIC8qaWYgKFxuICAgICAgTWV0cmljc0hlbHBlci5pc05vdEVtcHR5KHByb3BzLnpvbmFsTG9hZEJhbGFuY2VySXNvbGF0ZWRJbXBhY3RBbGFybXMpICYmXG4gICAgICBNZXRyaWNzSGVscGVyLmlzTm90RW1wdHkocHJvcHMuem9uYWxMb2FkQmFsYW5jZXJGYXVsdFJhdGVNZXRyaWNzKVxuICAgICkge1xuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBCYXNpY1NlcnZpY2VEYXNoYm9hcmQuY3JlYXRlTG9hZEJhbGFuY2VyV2lkZ2V0cyhcbiAgICAgICAgICBwcm9wcy56b25hbExvYWRCYWxhbmNlcklzb2xhdGVkSW1wYWN0QWxhcm1zLFxuICAgICAgICAgIHByb3BzLnpvbmFsTG9hZEJhbGFuY2VyRmF1bHRSYXRlTWV0cmljcyxcbiAgICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSovXG5cbiAgICBpZiAocHJvcHMuYWxicykge1xuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBCYXNpY1NlcnZpY2VEYXNoYm9hcmQuZ2VuZXJhdGVMb2FkQmFsYW5jZXJXaWRnZXRzKFxuICAgICAgICAgIHByb3BzLmFsYnMsXG4gICAgICAgICAgcHJvcHMuYXpNYXBwZXIsXG4gICAgICAgICAgcHJvcHMucGVyaW9kXG4gICAgICAgIClcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBNZXRyaWNzSGVscGVyLmlzTm90RW1wdHkocHJvcHMuem9uYWxOYXRHYXRld2F5SXNvbGF0ZWRJbXBhY3RBbGFybXMpICYmXG4gICAgICBNZXRyaWNzSGVscGVyLmlzTm90RW1wdHkocHJvcHMuem9uYWxOYXRHYXRld2F5UGFja2V0RHJvcE1ldHJpY3MpXG4gICAgKSB7XG4gICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgIEJhc2ljU2VydmljZURhc2hib2FyZC5jcmVhdGVOYXRHYXRld2F5V2lkZ2V0cyhcbiAgICAgICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlJc29sYXRlZEltcGFjdEFsYXJtcyxcbiAgICAgICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlQYWNrZXREcm9wTWV0cmljcyxcbiAgICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKHRoaXMsICdCYXNpY1NlcnZpY2VEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmROYW1lOlxuICAgICAgICBwcm9wcy5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgRm4uc3ViKCctcGVyLWF6LWhlYWx0aC0ke0FXUzo6UmVnaW9ufScpLFxuICAgICAgZGVmYXVsdEludGVydmFsOiBwcm9wcy5pbnRlcnZhbCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPLFxuICAgICAgd2lkZ2V0czogd2lkZ2V0cyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -479,5 +479,5 @@ class BasicServiceMultiAZObservability extends constructs_1.Construct {
479
479
  }
480
480
  exports.BasicServiceMultiAZObservability = BasicServiceMultiAZObservability;
481
481
  _a = JSII_RTTI_SYMBOL_1;
482
- BasicServiceMultiAZObservability[_a] = { fqn: "@cdklabs/multi-az-observability.BasicServiceMultiAZObservability", version: "0.0.1-alpha.12" };
482
+ BasicServiceMultiAZObservability[_a] = { fqn: "@cdklabs/multi-az-observability.BasicServiceMultiAZObservability", version: "0.0.1-alpha.13" };
483
483
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmFzaWNfb2JzZXJ2YWJpbGl0eS9CYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFFdEMsNkNBQXVDO0FBQ3ZDLCtEQWFvQztBQU9wQywyQ0FBbUQ7QUFHbkQsK0VBQTRFO0FBRTVFLG1FQUFnRTtBQUNoRSw4RkFBMkY7QUFDM0YsZ0ZBQTZFO0FBQzdFLDhEQUEyRDtBQUMzRCwrSEFBNEg7QUFFNUg7OztHQUdHO0FBQ0gsTUFBYSxnQ0FDWCxTQUFRLHNCQUFTO0lBOENqQixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE0QztRQUU1QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDckMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFFckMsSUFBSSxDQUFDLGtDQUFrQyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxFQUFFLENBQUM7UUFFekMsNkRBQTZEO1FBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxJQUFJLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUU5RSx1Q0FBdUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFL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LEVBQUU7Z0JBQ2pELFlBQVksQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUN2QyxTQUFTLEdBQUcsNkJBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLEdBQUcsNkJBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFOUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSwrQkFBYyxDQUFDO2dCQUNsRCxVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUMvQyxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsS0FBSyxFQUFFLGtCQUFrQixHQUFHLHFCQUFxQjtnQkFDakQsTUFBTSxFQUFFLE1BQU07YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7O0FBbHhCSCw0RUFteEJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtLFxuICBBbGFybVJ1bGUsXG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgQ29tcG9zaXRlQWxhcm0sXG4gIERhc2hib2FyZCxcbiAgSUFsYXJtLFxuICBJTWV0cmljLFxuICBNYXRoRXhwcmVzc2lvbixcbiAgTWV0cmljLFxuICBTdGF0cyxcbiAgVHJlYXRNaXNzaW5nRGF0YSxcbiAgVW5pdCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ2ZuTmF0R2F0ZXdheSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHtcbiAgQmFzZUxvYWRCYWxhbmNlcixcbiAgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxuICBJTG9hZEJhbGFuY2VyVjIsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IH0gZnJvbSAnLi9JQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuaW1wb3J0IHsgQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyB9IGZyb20gJy4vcHJvcHMvQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi4vYXptYXBwZXIvQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5pbXBvcnQgeyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4uL2F6bWFwcGVyL0lBdmFpbGFiaWxpdHlab25lTWFwcGVyJztcbmltcG9ydCB7IEJhc2ljU2VydmljZURhc2hib2FyZCB9IGZyb20gJy4vQmFzaWNTZXJ2aWNlRGFzaGJvYXJkJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUgfSBmcm9tICcuLi91dGlsaXRpZXMvQXZhaWxhYmlsaXR5TWV0cmljVHlwZSc7XG5pbXBvcnQgeyBNZXRyaWNzSGVscGVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL01ldHJpY3NIZWxwZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uIH0gZnJvbSAnLi9wcm9wcy9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lPdXRsaWVyQ2FsY3VsYXRpb24nO1xuXG4vKipcbiAqIEJhc2ljIG9ic2VydmFiaWxpdHkgZm9yIGEgc2VydmljZSB1c2luZyBtZXRyaWNzIGZyb21cbiAqIEFMQnMgYW5kIE5BVCBHYXRld2F5c1xuICovXG5leHBvcnQgY2xhc3MgQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkge1xuICAvKipcbiAgICogVGhlIE5BVCBHYXRld2F5cyBiZWluZyB1c2VkIGluIHRoZSBzZXJ2aWNlLCBlYWNoIHNldCBvZiBOQVQgR2F0ZXdheXNcbiAgICogYXJlIGtleWVkIGJ5IHRoZWlyIEF2YWlsYWJpbGl0eSBab25lIElkXG4gICAqL1xuICBuYXRHYXRld2F5cz86IHsgW2tleTogc3RyaW5nXTogQ2ZuTmF0R2F0ZXdheVtdIH07XG5cbiAgLyoqXG4gICAqIFRoZSBhcHBsaWNhdGlvbiBsb2FkIGJhbGFuY2VycyBiZWluZyB1c2VkIGJ5IHRoZSBzZXJ2aWNlXG4gICAqL1xuICBhcHBsaWNhdGlvbkxvYWRCYWxhbmNlcnM/OiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2VcbiAgICovXG4gIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGFybXMgaW5kaWNhdGluZyBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBOQVQgR1dcbiAgICogcGFja2V0IGxvc3MgYW5kIGhhcyBpc29sYXRlZCBpbXBhY3RcbiAgICovXG4gIG5hdEdXWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtcz86IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG5cbiAgLyoqXG4gICAqIFRoZSBhbGFybXMgaW5kaWNhdGluZyBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBBTEJcbiAgICogZmF1bHRzIGFuZCBoYXMgaXNvbGF0ZWQgaW1wYWN0XG4gICAqL1xuICBhbGJab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zPzogeyBba2V5OiBzdHJpbmddOiBJQWxhcm0gfTtcblxuICAvKipcbiAgICogVGhlIGFsYXJtcyBpbmRpY2F0aW5nIGlmIGFuIEFaIGhhcyBpc29sYXRlZCBpbXBhY3RcbiAgICogZnJvbSBlaXRoZXIgQUxCIG9yIE5BVCBHVyBtZXRyaWNzXG4gICAqL1xuICBhZ2dyZWdhdGVab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgZGFzaGJvYXJkIHRoYXQgaXMgb3B0aW9uYWxseSBjcmVhdGVkXG4gICAqL1xuICBkYXNoYm9hcmQ/OiBEYXNoYm9hcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBtYXBwZXIgcmVzb3VyY2VcbiAgICovXG4gIHByaXZhdGUgX2F6TWFwcGVyOiBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBJbml0aWFsaXplIGNsYXNzIHByb3BlcnRpZXNcbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gcHJvcHMuc2VydmljZU5hbWU7XG4gICAgdGhpcy5hcHBsaWNhdGlvbkxvYWRCYWxhbmNlcnMgPSBwcm9wcy5hcHBsaWNhdGlvbkxvYWRCYWxhbmNlcnM7XG4gICAgdGhpcy5uYXRHYXRld2F5cyA9IHByb3BzLm5hdEdhdGV3YXlzO1xuXG4gICAgdGhpcy5hZ2dyZWdhdGVab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zID0ge307XG4gICAgdGhpcy5hbGJab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zID0ge307XG4gICAgdGhpcy5uYXRHV1pvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybXMgPSB7fTtcblxuICAgIC8vIENyZWF0ZSB0aGUgQVogbWFwcGVyIHJlc291cmNlIHRvIHRyYW5zbGF0ZSBBWiBuYW1lcyB0byBpZHNcbiAgICB0aGlzLl9hek1hcHBlciA9IG5ldyBBdmFpbGFiaWxpdHlab25lTWFwcGVyKHRoaXMsICdhdmFpbGFiaWxpdHktem9uZS1tYXBwZXInKTtcblxuICAgIC8vIENyZWF0ZSBBTEIgbWV0cmljcyBhbmQgYWxhcm1zIHBlciBBWlxuICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uTG9hZEJhbGFuY2Vycykge1xuICAgICAgdGhpcy5hbGJab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zID0gdGhpcy5kb0FsYk1ldHJpY3MocHJvcHMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBOQVQgR2F0ZXdheSBtZXRyaWNzIGFuZCBhbGFybXMgcGVyIEFaXG4gICAgaWYgKHRoaXMubmF0R2F0ZXdheXMpIHtcbiAgICAgIHRoaXMubmF0R1dab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zID0gdGhpcy5jcmVhdGVOYXRHYXRld2F5Wm9uYWxJbXBhY3RBbGFybXMocHJvcHMpO1xuICAgIH1cblxuICAgIC8vIExvb2sgdGhyb3VnaCBhbGwgb2YgdGhlIHBlciBBWiBBTEIgYWxhcm1zLCBpZiB0aGVyZSdzIGFsc28gYSBOQVQgR1cgYWxhcm1cbiAgICAvLyBjcmVhdGUgYSBjb21wb3NpdGUgYWxhcm0gaWYgZWl0aGVyIG9mIHRoZW0gdHJpZ2dlclxuICAgIE9iamVjdC5rZXlzKHRoaXMuYWxiWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtcykuZm9yRWFjaCgoYXpMZXR0ZXI6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IHRoaXMuX2F6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcbiAgICAgIGlmIChhekxldHRlciBpbiB0aGlzLm5hdEdXWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtcyEpIHtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zW2F6TGV0dGVyXSA9IG5ldyBDb21wb3NpdGVBbGFybSh0aGlzLCBhekxldHRlciArIFwiLWlzb2xhdGVkLWltcGFjdC1hbGFybVwiLCB7XG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YodGhpcy5hbGJab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zIVthekxldHRlcl0sIHRoaXMubmF0R1dab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zIVthekxldHRlcl0pLFxuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItaXNvbGF0ZWQtaW1wYWN0LWFsYXJtXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zW2F6TGV0dGVyXSA9IG5ldyBDb21wb3NpdGVBbGFybSh0aGlzLCBhekxldHRlciArIFwiLWlzb2xhdGVkLWltcGFjdC1hbGFybVwiLCB7XG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YodGhpcy5hbGJab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zIVthekxldHRlcl0pLFxuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItaXNvbGF0ZWQtaW1wYWN0LWFsYXJtXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBMb29rIHRocm91Z2ggYWxsIG9mIHRoZSBwZXIgQVogTkFUIEdXIGFsYXJtcy4gSWYgdGhlcmUncyBhbiBBWiB3ZSBoYXZlbid0IHNlZW4gaW4gdGhlIEFMQlxuICAgIC8vIGFsYXJtcyB5ZXQsIHRoZW4gaXQgd2lsbCBqdXN0IGJlIGEgTkFUIEdXIGFsYXJtIHRoYXQgd2UnbGwgdHVybiBpbnRvIHRoZSBzYW1lIGtpbmQgb2ZcbiAgICAvLyBjb21wb3NpdGUgYWxhcm1cbiAgICBPYmplY3Qua2V5cyh0aGlzLm5hdEdXWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtcykuZm9yRWFjaCgoYXpMZXR0ZXI6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCEoYXpMZXR0ZXIgaW4gdGhpcy5hZ2dyZWdhdGVab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zKSkge1xuICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkID0gdGhpcy5fYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICAgIHRoaXMuYWdncmVnYXRlWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtc1thekxldHRlcl0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgYXpMZXR0ZXIgKyBcIi1pc29sYXRlZC1pbXBhY3QtYWxhcm1cIiwge1xuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKHRoaXMubmF0R1dab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zIVthekxldHRlcl0pLFxuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItaXNvbGF0ZWQtaW1wYWN0LWFsYXJtXCJcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gICAgLy8gU2hvdWxkIHdlIGNyZWF0ZSB0aGUgZGFzaGJvYXJkXG4gICAgaWYgKHByb3BzLmNyZWF0ZURhc2hib2FyZCA9PSB0cnVlKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZCA9IG5ldyBCYXNpY1NlcnZpY2VEYXNoYm9hcmQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdCYXNpY1NlcnZpY2VEYXNoYm9hcmQnLFxuICAgICAgICB7XG4gICAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtczpcbiAgICAgICAgICAgIHRoaXMuYWdncmVnYXRlWm9uYWxJc29sYXRlZEltcGFjdEFsYXJtcyxcbiAgICAgICAgICB6b25hbExvYWRCYWxhbmNlcklzb2xhdGVkSW1wYWN0QWxhcm1zOlxuICAgICAgICAgICAgdGhpcy5hbGJab25hbElzb2xhdGVkSW1wYWN0QWxhcm1zLFxuICAgICAgICAgIHpvbmFsTmF0R2F0ZXdheUlzb2xhdGVkSW1wYWN0QWxhcm1zOlxuICAgICAgICAgICAgdGhpcy5uYXRHV1pvbmFsSXNvbGF0ZWRJbXBhY3RBbGFybXMsXG4gICAgICAgICAgaW50ZXJ2YWw6IHByb3BzLmludGVydmFsLFxuICAgICAgICAgIGFsYnM6IHByb3BzLmFwcGxpY2F0aW9uTG9hZEJhbGFuY2VycyxcbiAgICAgICAgICAvKnpvbmFsTG9hZEJhbGFuY2VyRmF1bHRSYXRlTWV0cmljczogQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmdldFRvdGFsQWxiRmF1bHRDb3VudFBlclpvbmUoXG4gICAgICAgICAgICBwcm9wcy5hcHBsaWNhdGlvbkxvYWRCYWxhbmNlcnMgPyBwcm9wcy5hcHBsaWNhdGlvbkxvYWRCYWxhbmNlcnMgOiBbXSwgXG4gICAgICAgICAgICBwcm9wcy5wZXJpb2QgPyBwcm9wcy5wZXJpb2QgOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgICAgdGhpcy5fYXpNYXBwZXJcbiAgICAgICAgICApLCovXG4gICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QgPyBwcm9wcy5wZXJpb2QgOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIHpvbmFsTmF0R2F0ZXdheVBhY2tldERyb3BNZXRyaWNzOiB0aGlzLmdldFRvdGFsUGFja2V0RHJvcHNQZXJab25lKFxuICAgICAgICAgICAgcHJvcHMubmF0R2F0ZXdheXMgPyBwcm9wcy5uYXRHYXRld2F5cyA6IHt9LFxuICAgICAgICAgICAgcHJvcHMucGVyaW9kID8gcHJvcHMucGVyaW9kIDogRHVyYXRpb24ubWludXRlcygxKVxuICAgICAgICAgICksXG4gICAgICAgICAgYXpNYXBwZXI6IHRoaXMuX2F6TWFwcGVyLFxuICAgICAgICB9LFxuICAgICAgKS5kYXNoYm9hcmQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUaGVyZUFuQVpBdmFpbGFiaWxpdHlJbXBhY3RBbGIoXG4gICAgc2NvcGU6IElDb25zdHJ1Y3QsXG4gICAgYWxiOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsIFxuICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nLFxuICAgIGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZyxcbiAgICB0aHJlc2hvbGQ6IG51bWJlcixcbiAgICBrZXlwcmVmaXg6IHN0cmluZyxcbiAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICAgIGV2YWx1YXRpb25QZXJpb2RzOiBudW1iZXIsXG4gICAgZGF0YXBvaW50c1RvQWxhcm06IG51bWJlclxuICApIDogSUFsYXJtIHtcbiAgIFxuICAgIC8vIENyZWF0ZSBhIGZhdWx0IHJhdGUgYWxhcm0gZm9yIHRoZSBBTEIgaW4gdGhlIHNwZWNpZmllZCBBWlxuICAgIHJldHVybiBuZXcgQWxhcm0oXG4gICAgICBzY29wZSxcbiAgICAgIGtleXByZWZpeCArICctZmF1bHQtcmF0ZS1hbGFybScsXG4gICAgICB7XG4gICAgICAgIGFsYXJtTmFtZTpcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQgKyAnLScgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgJy1mYXVsdC1yYXRlJyxcbiAgICAgICAgYWN0aW9uc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBtZXRyaWM6IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcy5nZXRQZXJBWkF2YWlsYWJpbGl0eU1ldHJpYyhhbGIsIHtcbiAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJy0nICsgYWxiLmxvYWRCYWxhbmNlckFybiArICctZmF1bHQtcmF0ZScsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX1JBVEVcbiAgICAgICAgfSksXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06IGRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICB0aHJlc2hvbGQ6IHRocmVzaG9sZCxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5JR05PUkVcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUaGVyZUFaTGF0ZW5jeUltcGFjdEFsYihcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgXG4gICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcsXG4gICAgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nLFxuICAgIHRocmVzaG9sZDogbnVtYmVyLFxuICAgIHN0YXRpc3RpYzogc3RyaW5nLFxuICAgIGtleXByZWZpeDogc3RyaW5nLFxuICAgIHBlcmlvZDogRHVyYXRpb24sXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IG51bWJlcixcbiAgICBkYXRhcG9pbnRzVG9BbGFybTogbnVtYmVyXG4gICk6IElBbGFybSB7XG4gICAgXG4gICAgLy8gQ3JlYXRlIGEgZmF1bHQgcmF0ZSBhbGFybSBmb3IgdGhlIEFMQiBpbiB0aGUgc3BlY2lmaWVkIEFaXG4gICAgcmV0dXJuIG5ldyBBbGFybShcbiAgICAgIHNjb3BlLFxuICAgICAga2V5cHJlZml4ICsgJy1sYXRlbmN5LWFsYXJtJyxcbiAgICAgIHtcbiAgICAgICAgYWxhcm1OYW1lOlxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArICctJyArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyAnLWxhdGVuY3knLFxuICAgICAgICBhY3Rpb25zRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIG1ldHJpYzogQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmdldFBlckFaTGF0ZW5jeU1ldHJpYyh7XG4gICAgICAgICAgYWxiOiBhbGIsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgXCItdGFyZ2V0LWxhdGVuY3lcIixcbiAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICBzdGF0aXN0aWM6IHN0YXRpc3RpY1xuICAgICAgICB9KSxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTogZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgIHRocmVzaG9sZDogdGhyZXNob2xkLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLklHTk9SRVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0FaQW5PdXRsaWVyRm9yQXZhaWxhYmlsaXR5QWxiKFxuICAgIHNjb3BlOiBJQ29uc3RydWN0LFxuICAgIGFsYjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLCBcbiAgICBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyxcbiAgICBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcsXG4gICAgdGhyZXNob2xkOiBudW1iZXIsXG4gICAga2V5cHJlZml4OiBzdHJpbmcsXG4gICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICBldmFsdWF0aW9uUGVyaW9kczogbnVtYmVyLFxuICAgIGRhdGFwb2ludHNUb0FsYXJtOiBudW1iZXJcbiAgKSA6IElBbGFybSB7XG5cbiAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgIGxldCBhek1ldHJpY0lkOiBzdHJpbmcgPSBcIlwiO1xuXG4gICAgYWxiLnZwYyEuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoYXo6IHN0cmluZykgPT4ge1xuXG4gICAgICBsZXQgYXpGYXVsdENvdW50ID0gQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmdldFBlckFaQXZhaWxhYmlsaXR5TWV0cmljKFxuICAgICAgICBhbGIsXG4gICAgICAgIHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5ULFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLVwiICsgYWxiLmxvYWRCYWxhbmNlckFybiArIFwiLWZhdWx0LWNvdW50XCIsXG4gICAgICAgICAga2V5cHJlZml4OiBrZXlwcmVmaXhcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuXG4gICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IGF6RmF1bHRDb3VudDtcblxuICAgICAgaWYgKGF6ID09IGF2YWlsYWJpbGl0eVpvbmUpIHtcbiAgICAgICAgYXpNZXRyaWNJZCA9IGAke2tleXByZWZpeH0xYDtcbiAgICAgIH1cblxuICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBBbGFybShcbiAgICAgIHNjb3BlLFxuICAgICAga2V5cHJlZml4ICsgJy1hdmFpbGFiaWxpdHktb3V0bGllci1hbGFybScsXG4gICAgICB7XG4gICAgICAgIGFsYXJtTmFtZTpcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQgKyAnLScgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgJy1hdmFpbGFiaWxpdHktaW1wYWN0LW91dGxpZXInLFxuICAgICAgICBhY3Rpb25zRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIG1ldHJpYzogbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICBleHByZXNzaW9uOiBgJHthek1ldHJpY0lkIX0vKCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKX0pYCxcbiAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJy0nICsgYWxiLmxvYWRCYWxhbmNlckFybiArICctcGVyY2VudC1vZi1mYXVsdHMnLFxuICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICB9KSxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTogZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgIHRocmVzaG9sZDogdGhyZXNob2xkLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLklHTk9SRVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc0FaQW5PdXRsaWVyRm9yTGF0ZW5jeUFsYihcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgXG4gICAgYWxnb3JpdGhtOiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lPdXRsaWVyQ2FsY3VsYXRpb24sXG4gICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcsXG4gICAgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nLFxuICAgIHN0YXRpc3RpYzogc3RyaW5nLFxuICAgIHRocmVzaG9sZDogbnVtYmVyLFxuICAgIHBlcmlvZDogRHVyYXRpb24sXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IG51bWJlcixcbiAgICBkYXRhcG9pbnRzVG9BbGFybTogbnVtYmVyLFxuICAgIGtleXByZWZpeDogc3RyaW5nXG4gICkgOiBJQWxhcm0ge1xuXG4gICAgbGV0IHVzaW5nTWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0gPSB7fTtcbiAgICBsZXQgYXpNZXRyaWNJZDogc3RyaW5nID0gXCJcIjtcblxuICAgIHN3aXRjaCAoYWxnb3JpdGhtKVxuICAgIHtcbiAgICAgIGNhc2UgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLlpfU0NPUkU6XG4gICAgICBkZWZhdWx0OlxuXG4gICAgICAgIGFsYi52cGMhLmF2YWlsYWJpbGl0eVpvbmVzLmZvckVhY2goKGF6OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcblxuICAgICAgICAgIC8vIFRhcmdldCByZXNwb25zZSB0aW1lXG4gICAgICAgICAgbGV0IHRhcmdldFJlc3BvbnNlVGltZTogSU1ldHJpYyA9IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcy5nZXRQZXJBWkxhdGVuY3lNZXRyaWMoe1xuICAgICAgICAgICAgYWxiOiBhbGIsXG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBheixcbiAgICAgICAgICAgIGxhYmVsOiBheiArIFwiLXRhcmdldC1yZXNwb25zZS10aW1lXCIsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IHN0YXRpc3RpYyxcbiAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoYXogPT0gYXZhaWxhYmlsaXR5Wm9uZSkgeyAgICAgICBcbiAgICAgICAgICAgIGF6TWV0cmljSWQgPSBgYSR7aW5kZXh9YFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2BhJHtpbmRleH1gXSA9IHRhcmdldFJlc3BvbnNlVGltZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB1c2luZ01ldHJpY3NbYGIke2luZGV4fWBdID0gdGFyZ2V0UmVzcG9uc2VUaW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBBbGFybShcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICBrZXlwcmVmaXggKyBcIi1sYXRlbmN5LW91dGxpZXItYWxhcm1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGFybU5hbWU6XG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArICctJyArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyAnLWxhdGVuY3ktaW1wYWN0LW91dGxpZXInLFxuICAgICAgICAgICAgYWN0aW9uc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgbWV0cmljOiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICBleHByZXNzaW9uOiBgKCR7YXpNZXRyaWNJZCF9IC0gQVZHKE1FVFJJQ1MoXCJiXCIpKSkgLyBBVkcoU1REREVWKE1FVFJJQ1MoXCJiXCIpKSlgLFxuICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArICctJyArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyAnLWxhdGVuY3ktei1zY29yZScsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTogZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IHRocmVzaG9sZCxcbiAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLklHTk9SRVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIGNhc2UgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLlNUQVRJQzpcbiAgICAgICAgXG4gICAgICAgIGFsYi52cGMhLmF2YWlsYWJpbGl0eVpvbmVzLmZvckVhY2goKGF6OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAvLyBUYXJnZXQgcmVzcG9uc2UgdGltZVxuICAgICAgICAgIGxldCB0YXJnZXRSZXNwb25zZVRpbWU6IElNZXRyaWMgPSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2V0UGVyQVpMYXRlbmN5TWV0cmljKHtcbiAgICAgICAgICAgIGFsYjogYWxiLFxuICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXosXG4gICAgICAgICAgICBsYWJlbDogYXogKyBcIi10YXJnZXQtcmVzcG9uc2UtdGltZVwiLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBgVEMoJHt0aHJlc2hvbGR9OilgLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChheiA9PSBhdmFpbGFiaWxpdHlab25lKSB7ICAgICAgIFxuICAgICAgICAgICAgYXpNZXRyaWNJZCA9IGBhJHtpbmRleH1gXG4gICAgICAgICAgICB1c2luZ01ldHJpY3NbYGEke2luZGV4fWBdID0gdGFyZ2V0UmVzcG9uc2VUaW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgYiR7aW5kZXh9YF0gPSB0YXJnZXRSZXNwb25zZVRpbWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgQWxhcm0oXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAga2V5cHJlZml4ICsgXCItbGF0ZW5jeS1vdXRsaWVyLWFsYXJtXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQgKyAnLScgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgJy1sYXRlbmN5LWltcGFjdC1vdXRsaWVyJyxcbiAgICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1ldHJpYzogbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCR7YXpNZXRyaWNJZH0vKCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKX0pYCxcbiAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQgKyAnLScgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgJy1sYXRlbmN5LXN0YXRpYycsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTogZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgICAgICB0aHJlc2hvbGQ6IC42NixcbiAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICB0cmVhdE1pc3NpbmdEYXRhOiBUcmVhdE1pc3NpbmdEYXRhLklHTk9SRVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICogQHJldHVybnMgQSBjb21wb3NpdGUgYWxhcm0gcGVyIEFaIHRvIGluZGljYXRlIGlzb2xhdGVkIHpvbmFsIGltcGFjdC4gVGhlIGRpY3Rpb25hcnlcbiAgICogaXMga2V5ZWQgYnkgdGhlIGF6IGxldHRlciwgbGlrZSBcImFcIiwgXCJiXCIsIFwiY1wiLlxuICAgKi9cbiAgcHJpdmF0ZSBkb0FsYk1ldHJpY3MoXG4gICAgcHJvcHM6IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHNcbiAgKSA6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH0ge1xuXG4gICAgLy8gQ3JlYXRlIGltcGFjdCBhbGFybXMgcGVyIEFaLCB3aXRoIGVhY2ggQUxCIHByb3ZpZGluZ1xuICAgIC8vIGFuIGFsYXJtIGZvciBpdHMgQVpzXG4gICAgbGV0IHBlckFaSW1wYWN0QWxhcm1zOiB7IFtrZXk6IHN0cmluZ106IElBbGFybVtdIH0gPSB7fTtcblxuICAgIGxldCBrZXlQcmVmaXg6IHN0cmluZyA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoKTtcblxuICAgIC8vIEl0ZXJhdGUgZWFjaCBBTEJcbiAgICB0aGlzLmFwcGxpY2F0aW9uTG9hZEJhbGFuY2VycyEuZm9yRWFjaCgoYWxiKSA9PiB7XG4gICAgICBcbiAgICAgIC8vIEl0ZXJhdGUgZWFjaCBBWiBpbiB0aGUgVlBDXG4gICAgICBhbGIudnBjPy5hdmFpbGFiaWxpdHlab25lcy5mb3JFYWNoKChheikgPT4ge1xuXG4gICAgICAgIGlmICghKGF6IGluIHBlckFaSW1wYWN0QWxhcm1zKSkge1xuICAgICAgICAgIHBlckFaSW1wYWN0QWxhcm1zW2F6XSA9IFtdO1xuICAgICAgICB9XG4gICAgIFxuICAgICAgICAvLyBHZXQgQVogbGV0dGVyXG4gICAgICAgIGxldCBhekxldHRlciA9IGF6LnN1YnN0cmluZyhhei5sZW5ndGggLSAxKTtcblxuICAgICAgICAvLyBNYXAgbGV0dGVyIHRvIEFaIElEXG4gICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9XG4gICAgICAgICAgdGhpcy5fYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICAgIC8vIElzIHRoZXJlIGF2YWlsYWJpbGl0eSBpbXBhY3QgaW4gdGhpcyBBWj9cbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eUltcGFjdDogSUFsYXJtID0gQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkuaXNUaGVyZUFuQVpBdmFpbGFiaWxpdHlJbXBhY3RBbGIoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBhbGIsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF6LFxuICAgICAgICAgIHByb3BzLmZhdWx0Q291bnRQZXJjZW50YWdlVGhyZXNob2xkID8gcHJvcHMuZmF1bHRDb3VudFBlcmNlbnRhZ2VUaHJlc2hvbGQgOiAwLjA1LFxuICAgICAgICAgIGtleVByZWZpeCxcbiAgICAgICAgICBwcm9wcy5wZXJpb2QgPyBwcm9wcy5wZXJpb2QgOiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgICAgIHByb3BzLmV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICAgIHByb3BzLmRhdGFwb2ludHNUb0FsYXJtXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gSXMgdGhlcmUgbGF0ZW5jeSBpbXBhY3QgaW4gdGhpcyBBWj9cbiAgICAgICAgbGV0IGxhdGVuY3lJbXBhY3Q6IElBbGFybSA9IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmlzVGhlcmVBWkxhdGVuY3lJbXBhY3RBbGIoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBhbGIsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF6LFxuICAgICAgICAgIHByb3BzLmxhdGVuY3lUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeVN0YXRpc3RpYyxcbiAgICAgICAgICBrZXlQcmVmaXgsXG4gICAgICAgICAgcHJvcHMucGVyaW9kID8gcHJvcHMucGVyaW9kIDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICBwcm9wcy5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICBwcm9wcy5kYXRhcG9pbnRzVG9BbGFybVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIElzIHRoZSBBWiBhbiBvdXRsaWVyIGZvciBmYXVsdHNcbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eU91dGxpZXIgPSBCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS5pc0FaQW5PdXRsaWVyRm9yQXZhaWxhYmlsaXR5QWxiKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYWxiLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBheixcbiAgICAgICAgICBwcm9wcy5mYXVsdENvdW50UGVyY2VudGFnZVRocmVzaG9sZCA/IHByb3BzLmZhdWx0Q291bnRQZXJjZW50YWdlVGhyZXNob2xkIDogMC4wNSxcbiAgICAgICAgICBrZXlQcmVmaXgsXG4gICAgICAgICAgcHJvcHMucGVyaW9kID8gcHJvcHMucGVyaW9kIDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgICBwcm9wcy5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICBwcm9wcy5kYXRhcG9pbnRzVG9BbGFybVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIElzIHRoZSBBWiBhbiBvdXRsaWVyIGZvciBsYXRlbmN5XG4gICAgICAgIGxldCBsYXRlbmN5T3V0bGllciA9IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmlzQVpBbk91dGxpZXJGb3JMYXRlbmN5QWxiKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgYWxiLFxuICAgICAgICAgIHByb3BzLmxhdGVuY3lPdXRsaWVyQ2FsY3VsYXRpb24gPyBwcm9wcy5sYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uIDogQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckNhbGN1bGF0aW9uLlpfU0NPUkUsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF6LFxuICAgICAgICAgIHByb3BzLmxhdGVuY3lTdGF0aXN0aWMsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeU91dGxpZXJDYWxjdWxhdGlvbiA9PSBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lPdXRsaWVyQ2FsY3VsYXRpb24uWl9TQ09SRSA/IDMgOiBwcm9wcy5sYXRlbmN5VGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLnBlcmlvZCA/IHByb3BzLnBlcmlvZCA6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgICAgICAgcHJvcHMuZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgcHJvcHMuZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgICAgYXpMZXR0ZXJcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBbGFybSBpZiB0aGUgQVogc2hvd3MgaW1wYWN0IGFuZCBpcyBhbiBvdXRsaWVyXG4gICAgICAgIGxldCBhekltcGFjdEFsYXJtOiBJQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgXG4gICAgICAgICAgYXpMZXR0ZXIgKyAgXCItY29tcG9zaXRlLWltcGFjdC1hbGFybVwiLCBcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAgICAgQWxhcm1SdWxlLmFsbE9mKGF2YWlsYWJpbGl0eUltcGFjdCwgYXZhaWxhYmlsaXR5T3V0bGllciksIFxuICAgICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YobGF0ZW5jeUltcGFjdCwgbGF0ZW5jeU91dGxpZXIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOiBcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItXCIgKyBcbiAgICAgICAgICAgICAgKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcikubG9hZEJhbGFuY2VyTmFtZSArIFxuICAgICAgICAgICAgICBcIi1sYXRlbmN5LW9yLWF2YWlsYWJpbGl0eS1pbXBhY3RcIixcbiAgICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICAvLyBBZGQgdGhpcyBBTEIncyBmYXVsdCByYXRlIGFsYXJtXG4gICAgICAgIHBlckFaSW1wYWN0QWxhcm1zW2F6XS5wdXNoKGF6SW1wYWN0QWxhcm0pO1xuXG4gICAgICAgIC8vIEdldCBuZXh0IHVuaXF1ZSBrZXlcbiAgICAgICAga2V5UHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlQcmVmaXgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgYXpDb21wb3NpdGVBbGFybXM6IHtba2V5OiBzdHJpbmddOiBJQWxhcm19ID0ge307XG5cbiAgICAvLyBJdGVyYXRlIEFacyBmb3IgdGhlIEFMQiBpbXBhY3QgYWxhcm1zIHNvIHdlIGNhbiBqb2luIHRoZW1cbiAgICAvLyBpbnRvIGEgc2luZ2xlIGNvbXBvc2l0ZSBhbGFybSBmb3IgZWFjaCBBWlxuICAgIE9iamVjdC5rZXlzKHBlckFaSW1wYWN0QWxhcm1zKS5mb3JFYWNoKChheikgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyID0gYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gdGhpcy5fYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBhekNvbXBvc2l0ZUFsYXJtc1thekxldHRlcl0gPSBuZXcgQ29tcG9zaXRlQWxhcm0odGhpcywgYXpMZXR0ZXIgKyBcIi1hbGItaW1wYWN0LWNvbXBvc2l0ZS1hbGFybVwiLCB7XG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKC4uLnBlckFaSW1wYWN0QWxhcm1zW2F6XSksXG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItYWxiLWltcGFjdC1jb21wb3NpdGUtYWxhcm1cIlxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXpDb21wb3NpdGVBbGFybXM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBpc1RoZXJlQW5BWlBhY2tldExvc3NJbXBhY3ROQVRHVyhcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBuYXRnd3M6IENmbk5hdEdhdGV3YXlbXSwgXG4gICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcsXG4gICAgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nLFxuICAgIHRocmVzaG9sZDogbnVtYmVyLFxuICAgIHBlcmlvZDogRHVyYXRpb24sXG4gICAgZXZhbHVhdGlvblBlcmlvZHM6IG51bWJlcixcbiAgICBkYXRhcG9pbnRzVG9BbGFybTogbnVtYmVyXG4gICkgOiBJQWxhcm0ge1xuICAgIFxuICAgIGxldCBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKCk7XG5cbiAgICBsZXQgcGFja2V0RHJvcENvdW50TWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgbGV0IHBhY2tldHNJbkZyb21Tb3VyY2VNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICBsZXQgcGFja2V0c0luRnJvbURlc3RpbmF0aW9uTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICBcbiAgICBuYXRnd3MuZm9yRWFjaCgobmF0Z3c6IENmbk5hdEdhdGV3YXkpPT4ge1xuXG4gICAgICBwYWNrZXREcm9wQ291bnRNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBuZXcgTWV0cmljKHtcbiAgICAgICAgbWV0cmljTmFtZTogJ1BhY2tldHNEcm9wQ291bnQnLFxuICAgICAgICBuYW1lc3BhY2U6ICdBV1MvTkFUR2F0ZXdheScsXG4gICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICB1bml0OiBVbml0LkNPVU5ULFxuICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJyBwYWNrZXQgZHJvcHMnLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgTmF0R2F0ZXdheUlkOiBuYXRndy5hdHRyTmF0R2F0ZXdheUlkLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgIH0pO1xuICBcbiAgICAgIC8vIENhbGN1bGF0ZSBwYWNrZXRzIGluIGZyb20gc291cmNlXG4gICAgICBwYWNrZXRzSW5Gcm9tU291cmNlTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gbmV3IE1ldHJpYyh7XG4gICAgICAgIG1ldHJpY05hbWU6ICdQYWNrZXRzSW5Gcm9tU291cmNlJyxcbiAgICAgICAgbmFtZXNwYWNlOiAnQVdTL05BVEdhdGV3YXknLFxuICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgdW5pdDogVW5pdC5DT1VOVCxcbiAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgcGFja2V0cyBpbiBmcm9tIHNvdXJjZScsXG4gICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICBOYXRHYXRld2F5SWQ6IG5hdGd3LmF0dHJOYXRHYXRld2F5SWQsXG4gICAgICAgIH0sXG4gICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgfSk7XG4gIFxuICAgICAgLy8gQ2FsY3VsYXRlIHBhY2tldHMgaW4gZnJvbSBkZXN0aW5hdGlvblxuICAgICAgcGFja2V0c0luRnJvbURlc3RpbmF0aW9uTWV0cmljc1tgJHtrZXlwcmVmaXh9M2BdID0gbmV3IE1ldHJpYyh7XG4gICAgICAgIG1ldHJpY05hbWU6ICdQYWNrZXRzSW5Gcm9tRGVzdGluYXRpb24nLFxuICAgICAgICBuYW1lc3BhY2U6ICdBV1MvTkFUR2F0ZXdheScsXG4gICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICB1bml0OiBVbml0LkNPVU5ULFxuICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJyBwYWNrZXRzIGluIGZyb20gZGVzdGluYXRpb24nLFxuICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgTmF0R2F0ZXdheUlkOiBuYXRndy5hdHRyTmF0R2F0ZXdheUlkLFxuICAgICAgICB9LFxuICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgIH0pO1xuXG4gICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gICAgfSk7XG5cbiAgICBsZXQgcGFja2V0RHJvcFRvdGFsOiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIGV4cHJlc3Npb246IE9iamVjdC5rZXlzKHBhY2tldERyb3BDb3VudE1ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgdXNpbmdNZXRyaWNzOiBwYWNrZXREcm9wQ291bnRNZXRyaWNzLFxuICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICB9KTtcblxuICAgIGxldCBwYWNrZXRzSW5Gcm9tU291cmNlVG90YWw6IElNZXRyaWMgPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXMocGFja2V0c0luRnJvbVNvdXJjZU1ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgdXNpbmdNZXRyaWNzOiBwYWNrZXRzSW5Gcm9tU291cmNlTWV0cmljcyxcbiAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgfSk7XG5cbiAgICBsZXQgcGFja2V0c0luRnJvbURlc3RpbmF0aW9uVG90YWw6IElNZXRyaWMgPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXMocGFja2V0c0luRnJvbURlc3RpbmF0aW9uTWV0cmljcykuam9pbihcIitcIiksXG4gICAgICB1c2luZ01ldHJpY3M6IHBhY2tldHNJbkZyb21EZXN0aW5hdGlvbk1ldHJpY3MsXG4gICAgICBwZXJpb2Q6IHBlcmlvZFxuICAgIH0pO1xuICAgIFxuICAgIGxldCB1c2luZ01ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG4gICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBwYWNrZXREcm9wVG90YWw7XG4gICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSBwYWNrZXRzSW5Gcm9tU291cmNlVG90YWw7XG4gICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0zYF0gPSBwYWNrZXRzSW5Gcm9tRGVzdGluYXRpb25Ub3RhbDtcblxuICAgIC8vIENhbGN1bGF0ZSBhIHBlcmNlbnRhZ2Ugb2YgZHJvcHBlZCBwYWNrZXRzIGZvciB0aGUgTkFUIEdXXG4gICAgbGV0IHBhY2tldERyb3BQZXJjZW50YWdlOiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIGV4cHJlc3Npb246IGAoJHtrZXlwcmVmaXh9MSAvICgke2tleXByZWZpeH0yICsgJHtrZXlwcmVmaXh9MykpYCxcbiAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgcGFja2V0IGRyb3AgcGVyY2VudGFnZScsXG4gICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBhbiBhbGFybSBmb3IgdGhpcyBOQVQgR1cgaWYgcGFja2V0IGRyb3BzIGV4Y2VlZCB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZFxuICAgIHJldHVybiBuZXcgQWxhcm0oXG4gICAgICBzY29wZSxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSkgKyBcIi1wYWNrZXQtZHJvcC1pbXBhY3QtYWxhcm1cIixcbiAgICAgIHtcbiAgICAgICAgYWxhcm1OYW1lOlxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCArXG4gICAgICAgICAgJy1wYWNrZXQtZHJvcC1pbXBhY3QnLFxuICAgICAgICBhY3Rpb25zRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIG1ldHJpYzogcGFja2V0RHJvcFBlcmNlbnRhZ2UsXG4gICAgICAgIHRocmVzaG9sZDogdGhyZXNob2xkLFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5JR05PUkVcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNBWkFuT3V0bGllckZvclBhY2tldExvc3NOQVRHVyhcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBuYXRnd3M6IHtba2V5OiBzdHJpbmddOiBDZm5OYXRHYXRld2F5W119LCBcbiAgICBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyxcbiAgICBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcsXG4gICAgdGhyZXNob2xkOiBudW1iZXIsXG4gICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICBldmFsdWF0aW9uUGVyaW9kczogbnVtYmVyLFxuICAgIGRhdGFwb2ludHNUb0FsYXJtOiBudW1iZXJcbiAgKSA6IElBbGFybSB7XG5cbiAgICBsZXQga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuICAgIGxldCBhelBhY2tldERyb3BDb3VudE1ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgIGxldCBhektleTogc3RyaW5nID0gXCJcIjtcblxuICAgIE9iamVjdC5rZXlzKG5hdGd3cykuZm9yRWFjaCgoYXo6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IHBhY2tldERyb3BDb3VudE1ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuXG4gICAgICBuYXRnd3NbYXpdLmZvckVhY2goKG5hdGd3OiBDZm5OYXRHYXRld2F5LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHBhY2tldERyb3BDb3VudE1ldHJpY3NbYCR7a2V5cHJlZml4fSR7aW5kZXh9YF0gPSBuZXcgTWV0cmljKHtcbiAgICAgICAgICBtZXRyaWNOYW1lOiAnUGFja2V0c0Ryb3BDb3VudCcsXG4gICAgICAgICAgbmFtZXNwYWNlOiAnQVdTL05BVEdhdGV3YXknLFxuICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlQsXG4gICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArICcgcGFja2V0IGRyb3BzJyxcbiAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICBOYXRHYXRld2F5SWQ6IG5hdGd3LmF0dHJOYXRHYXRld2F5SWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGtleXByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5cHJlZml4KTtcbiAgICAgIH0pO1xuXG4gICAgICBhelBhY2tldERyb3BDb3VudE1ldHJpY3NbYCR7a2V5cHJlZml4fSR7bmF0Z3dzW2F6XS5sZW5ndGh9YF0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyhwYWNrZXREcm9wQ291bnRNZXRyaWNzKS5qb2luKFwiK1wiKSxcbiAgICAgICAgdXNpbmdNZXRyaWNzOiBwYWNrZXREcm9wQ291bnRNZXRyaWNzLFxuICAgICAgICBwZXJpb2Q6IHBlcmlvZFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChheiA9PSBhdmFpbGFiaWxpdHlab25lKSB7XG4gICAgICAgIGF6S2V5ID0gYCR7a2V5cHJlZml4fSR7bmF0Z3dzW2F6XS5sZW5ndGh9YDtcbiAgICAgIH1cblxuICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBBbGFybShcbiAgICAgIHNjb3BlLCBcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSkgKyBcIi1wYWNrZXQtbG9zcy1vdXRsaWVyXCIsIFxuICAgICAge1xuICAgICAgICAgbWV0cmljOiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogYCR7YXpLZXl9IC8gKCR7T2JqZWN0LmtleXMoYXpQYWNrZXREcm9wQ291bnRNZXRyaWNzKS5qb2luKFwiK1wiKX0pYCxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogYXpQYWNrZXREcm9wQ291bnRNZXRyaWNzLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgIH0pLFxuICAgICAgICAgdGhyZXNob2xkOiB0aHJlc2hvbGQsXG4gICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTogZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICAgdHJlYXRNaXNzaW5nRGF0YTogVHJlYXRNaXNzaW5nRGF0YS5JR05PUkVcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOYXRHYXRld2F5Wm9uYWxJbXBhY3RBbGFybXMoXG4gICAgcHJvcHM6IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHNcbiAgKToge1trZXk6IHN0cmluZ106IElBbGFybX0ge1xuXG4gICAgLy8gQ29sbGVjdCBhbGFybXMgZm9yIHBhY2tldCBkcm9wcyBleGNlZWRpbmcgYSB0aHJlc2hvbGQgcGVyIE5BVCBHV1xuICAgIGxldCBwYWNrZXRMb3NzUGVyQVpBbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH0gPSB7fTtcblxuICAgIC8vIEZvciBlYWNoIEFaLCBjcmVhdGUgbWV0cmljcyBmb3IgZWFjaCBOQVQgR1dcbiAgICBPYmplY3Qua2V5cyh0aGlzLm5hdEdhdGV3YXlzISkuZm9yRWFjaCgoYXo6IHN0cmluZykgPT4ge1xuXG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF6LnN1YnN0cmluZyhhei5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPVxuICAgICAgICB0aGlzLl9hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIC8vIElzIHRoZXJlIHBhY2tldCBsb3NzIGltcGFjdD9cbiAgICAgIGxldCBwYWNrZXRMb3NzSW1wYWN0OiBJQWxhcm0gPSBCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS5pc1RoZXJlQW5BWlBhY2tldExvc3NJbXBhY3ROQVRHVyhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5uYXRHYXRld2F5cyFbYXpdLFxuICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgIGF6LFxuICAgICAgICBwcm9wcy5wYWNrZXRMb3NzSW1wYWN0UGVyY2VudGFnZVRocmVzaG9sZCA/IHByb3BzLnBhY2tldExvc3NJbXBhY3RQZXJjZW50YWdlVGhyZXNob2xkIDogMC4wMSxcbiAgICAgICAgcHJvcHMucGVyaW9kID8gcHJvcHMucGVyaW9kIDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgcHJvcHMuZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgIHByb3BzLmRhdGFwb2ludHNUb0FsYXJtXG4gICAgICApO1xuICAgICAgLy8gSXMgdGhpcyBBWiBhbiBvdXRsaWVyIGZvciB0aGlzIE5BVEdXP1xuICAgICAgbGV0IHBhY2tldExvc3NPdXRsaWVyOiBJQWxhcm0gPSBCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS5pc0FaQW5PdXRsaWVyRm9yUGFja2V0TG9zc05BVEdXKFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLm5hdEdhdGV3YXlzISxcbiAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBheixcbiAgICAgICAgMC42NixcbiAgICAgICAgcHJvcHMucGVyaW9kID8gcHJvcHMucGVyaW9kIDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgICAgICAgcHJvcHMuZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgIHByb3BzLmRhdGFwb2ludHNUb0FsYXJtXG4gICAgICApO1xuICAgICAgcGFja2V0TG9zc1BlckFaQWxhcm1zW2F6TGV0dGVyXSA9IG5ldyBDb21wb3NpdGVBbGFybSh0aGlzLCBhei5zdWJzdHJpbmcoYXoubGVuZ3RoIC0gMSkgKyBcIi1wYWNrZXQtbG9zcy1jb21wb3NpdGUtYWxhcm1cIiwge1xuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbGxPZihwYWNrZXRMb3NzSW1wYWN0LCBwYWNrZXRMb3NzT3V0bGllciksXG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItcGFja2V0LWxvc3MtY29tcG9zaXRlLWFsYXJtXCJcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhY2tldExvc3NQZXJBWkFsYXJtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG90YWxQYWNrZXREcm9wc1BlclpvbmUoXG4gICAgbmF0Z3dzOiB7W2tleTogc3RyaW5nXTogQ2ZuTmF0R2F0ZXdheVtdfSxcbiAgICBwZXJpb2Q6IER1cmF0aW9uXG4gICkgOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY31cbiAge1xuICAgIGxldCBkcm9wc1BlclpvbmU6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgIGxldCBtZXRyaWNzUGVyQVo6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljW119ID0ge307XG4gICAgbGV0IGtleXByZWZpeDogc3RyaW5nID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuXG4gICAgT2JqZWN0LmtleXMobmF0Z3dzKS5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcblxuICAgICAgbGV0IGF6TGV0dGVyID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSB0aGlzLl9hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIGlmICghKGF6TGV0dGVyIGluIG1ldHJpY3NQZXJBWikpIHtcbiAgICAgICAgbWV0cmljc1BlckFaW2F6TGV0dGVyXSA9IFtdO1xuICAgICAgfVxuXG4gICAgICBuYXRnd3NbYXZhaWxhYmlsaXR5Wm9uZV0uZm9yRWFjaCgobmF0Z3c6IENmbk5hdEdhdGV3YXkpID0+IHtcblxuICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLnB1c2gobmV3IE1ldHJpYyh7XG4gICAgICAgICAgbWV0cmljTmFtZTogJ1BhY2tldHNEcm9wQ291bnQnLFxuICAgICAgICAgIG5hbWVzcGFjZTogJ0FXUy9OQVRHYXRld2F5JyxcbiAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICB1bml0OiBVbml0LkNPVU5ULFxuICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQgKyAnIHBhY2tldCBkcm9wcycsXG4gICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgTmF0R2F0ZXdheUlkOiBuYXRndy5hdHRyTmF0R2F0ZXdheUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgIH0pKTtcbiAgICAgIH0pOyAgIFxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBhekxldHRlciA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkID0gdGhpcy5fYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcblxuICAgICAgbWV0cmljc1BlckFaW2F6TGV0dGVyXS5mb3JFYWNoKChtZXRyaWM6IElNZXRyaWMpID0+IHtcbiAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBtZXRyaWM7XG4gICAgICAgIGtleXByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5cHJlZml4KTtcbiAgICAgIH0pO1xuXG4gICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG5cbiAgICAgIGRyb3BzUGVyWm9uZVthdmFpbGFiaWxpdHlab25lXSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgIGV4cHJlc3Npb246IE9iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbihcIitcIiksXG4gICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCIgdG90YWwgcGFja2V0IGRyb3BzXCIsXG4gICAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkcm9wc1BlclpvbmU7XG4gIH1cbn1cbiJdfQ==
Binary file
@@ -406,7 +406,6 @@ class ApplicationLoadBalancerMetrics {
406
406
  let faultsPerZone = {};
407
407
  let metricsPerAZ = {};
408
408
  let keyprefix = prefix ? prefix : MetricsHelper_1.MetricsHelper.nextChar();
409
- console.log("USING PREFIX: " + keyprefix);
410
409
  albs.forEach((alb) => {
411
410
  alb.vpc.availabilityZones.forEach((availabilityZone) => {
412
411
  let azLetter = availabilityZone.substring(availabilityZone.length - 1);
@@ -445,7 +444,8 @@ class ApplicationLoadBalancerMetrics {
445
444
  metricsPerAZ[azLetter].push(new aws_cloudwatch_1.MathExpression({
446
445
  expression: `FILL(${keyprefix}1, 0) + FILL(${keyprefix}2, 0)`,
447
446
  usingMetrics: usingMetrics,
448
- period: period
447
+ period: period,
448
+ label: availabilityZoneId
449
449
  }));
450
450
  keyprefix = MetricsHelper_1.MetricsHelper.nextChar(keyprefix);
451
451
  });
@@ -470,7 +470,6 @@ class ApplicationLoadBalancerMetrics {
470
470
  faultsPerZone[azLetter] = metricsPerAZ[azLetter][0];
471
471
  }
472
472
  });
473
- prefix = keyprefix;
474
473
  return faultsPerZone;
475
474
  }
476
475
  /**
@@ -535,7 +534,8 @@ class ApplicationLoadBalancerMetrics {
535
534
  metricsPerAZ[azLetter].push(new aws_cloudwatch_1.MathExpression({
536
535
  expression: `FILL(${keyprefix}1, 0) + FILL(${keyprefix}2, 0) + FILL(${keyprefix}3, 0)`,
537
536
  usingMetrics: usingMetrics,
538
- period: period
537
+ period: period,
538
+ label: availabilityZoneId
539
539
  }));
540
540
  keyprefix = MetricsHelper_1.MetricsHelper.nextChar(keyprefix);
541
541
  });
@@ -597,19 +597,23 @@ class ApplicationLoadBalancerMetrics {
597
597
  // We can have multiple load balancers per zone, so add their processed bytes together
598
598
  Object.keys(metricsPerAZ).forEach((azLetter) => {
599
599
  let availabilityZoneId = azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
600
- let usingMetrics = {};
601
- metricsPerAZ[azLetter].forEach((metric, index) => {
602
- usingMetrics[`${keyprefix}${index}`] = metric;
603
- });
604
- keyprefix = MetricsHelper_1.MetricsHelper.nextChar(keyprefix);
605
- requestsPerZone[azLetter] = new aws_cloudwatch_1.MathExpression({
606
- expression: Object.keys(usingMetrics).join("+"),
607
- usingMetrics: usingMetrics,
608
- label: availabilityZoneId,
609
- period: period
610
- });
600
+ if (metricsPerAZ[azLetter].length > 1) {
601
+ let usingMetrics = {};
602
+ metricsPerAZ[azLetter].forEach((metric, index) => {
603
+ usingMetrics[`${keyprefix}${index}`] = metric;
604
+ });
605
+ keyprefix = MetricsHelper_1.MetricsHelper.nextChar(keyprefix);
606
+ requestsPerZone[azLetter] = new aws_cloudwatch_1.MathExpression({
607
+ expression: Object.keys(usingMetrics).join("+"),
608
+ usingMetrics: usingMetrics,
609
+ label: availabilityZoneId,
610
+ period: period
611
+ });
612
+ }
613
+ else {
614
+ requestsPerZone[azLetter] = metricsPerAZ[azLetter][0];
615
+ }
611
616
  });
612
- prefix = keyprefix;
613
617
  return requestsPerZone;
614
618
  }
615
619
  /**
@@ -647,17 +651,22 @@ class ApplicationLoadBalancerMetrics {
647
651
  // We can have multiple load balancers per zone, so add their processed bytes together
648
652
  Object.keys(metricsPerAZ).forEach((azLetter) => {
649
653
  let availabilityZoneId = azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
650
- let usingMetrics = {};
651
- metricsPerAZ[azLetter].forEach((metric, index) => {
652
- usingMetrics[`${keyprefix}${index}`] = metric;
653
- });
654
- keyprefix = MetricsHelper_1.MetricsHelper.nextChar(keyprefix);
655
- processedBytesPerZone[azLetter] = new aws_cloudwatch_1.MathExpression({
656
- expression: Object.keys(usingMetrics).join("+"),
657
- usingMetrics: usingMetrics,
658
- label: availabilityZoneId,
659
- period: period
660
- });
654
+ if (metricsPerAZ[azLetter].length > 1) {
655
+ let usingMetrics = {};
656
+ metricsPerAZ[azLetter].forEach((metric, index) => {
657
+ usingMetrics[`${keyprefix}${index}`] = metric;
658
+ });
659
+ keyprefix = MetricsHelper_1.MetricsHelper.nextChar(keyprefix);
660
+ processedBytesPerZone[azLetter] = new aws_cloudwatch_1.MathExpression({
661
+ expression: Object.keys(usingMetrics).join("+"),
662
+ usingMetrics: usingMetrics,
663
+ label: availabilityZoneId,
664
+ period: period
665
+ });
666
+ }
667
+ else {
668
+ processedBytesPerZone[azLetter] = metricsPerAZ[azLetter][0];
669
+ }
661
670
  });
662
671
  return processedBytesPerZone;
663
672
  }
@@ -773,7 +782,7 @@ class ApplicationLoadBalancerMetrics {
773
782
  usingMetrics[`${keyprefix}1`] = faultsPerZone[key];
774
783
  usingMetrics[`${keyprefix}2`] = requestsPerZone[key];
775
784
  let zonalFaultRate = new aws_cloudwatch_1.MathExpression({
776
- expression: `${keyprefix}1/${keyprefix}2`,
785
+ expression: `(${keyprefix}1/${keyprefix}2) * 100`,
777
786
  usingMetrics: usingMetrics,
778
787
  period: period,
779
788
  label: azMapper.availabilityZoneIdFromAvailabilityZoneLetter(key)
@@ -826,4 +835,4 @@ class ApplicationLoadBalancerMetrics {
826
835
  }
827
836
  }
828
837
  exports.ApplicationLoadBalancerMetrics = ApplicationLoadBalancerMetrics;
829
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUFrRjtBQUNsRix1RkFBa0o7QUFDbEosZ0ZBQTZFO0FBRzdFLDZDQUE0QztBQUk1Qyw4REFBMkQ7QUFFM0QsTUFBYSw4QkFBOEI7SUFFdkM7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQ3hCLEtBQXFEO1FBRXJELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQ3ZDO1lBQ0UsYUFBYSxFQUFFO2dCQUNiLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQ3hDLFlBQVksRUFBRyxLQUFLLENBQUMsR0FBMkM7cUJBQzdELG9CQUFvQjthQUN4QjtZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLHVCQUF1QjtZQUM3RyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLElBQUksRUFBRSxxQkFBSSxDQUFDLE9BQU87U0FDbkIsQ0FDRixDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsd0NBQXdDLENBQzNDLElBQWdDLEVBQ2hDLEtBQTBEO1FBRTFELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FB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LGtCQUFrQixHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDM0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQywrQkFBK0IsQ0FDbEMsR0FBNkIsRUFDN0IsTUFBZ0IsRUFDaEIsa0JBQTRCO1FBRTVCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDOUIsTUFBTSxFQUFFLE1BQU07WUFDZCxhQUFhLEVBQUM7Z0JBQ1YsWUFBWSxFQUFHLEdBQTJDLENBQUMsb0JBQW9CO2FBQ2xGO1lBQ0QsS0FBSyxFQUFFLGlCQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDNUUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBM2tDRCx3RUEya0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1ldHJpYywgTWF0aEV4cHJlc3Npb24sIFN0YXRzLCBVbml0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgeyBCYXNlTG9hZEJhbGFuY2VyLCBIdHRwQ29kZUVsYiwgSHR0cENvZGVUYXJnZXQsIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgSUxvYWRCYWxhbmNlclYyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlXCI7XG5pbXBvcnQgeyBab25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSBcIi4uL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lNZXRyaWNQcm9wc1wiO1xuaW1wb3J0IHsgWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSBcIi4uL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzXCI7XG5pbXBvcnQgeyBBd3MsIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMgfSBmcm9tIFwiLi4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9SZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNcIjtcbmltcG9ydCB7IFJlZ2lvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tIFwiLi4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9SZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU1ldHJpY1Byb3BzXCI7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSBcIi4uL2F6bWFwcGVyL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJcIjtcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL01ldHJpY3NIZWxwZXJcIjtcblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcyB7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBUYXJnZXRSZXNwb25zZVRpbWUgbGF0ZW5jeSBmb3IgdGhlIEFMQlxuICAgICAqIHRhcmdldHNcbiAgICAgKiBAcGFyYW0gcHJvcHMgVGhlIHJlcXVlc3QgcHJvcHNcbiAgICAgKiBAcmV0dXJucyBUaGUgVGFyZ2V0UmVzcG9uc2VUaW1lIG1ldHJpYyBmb3IgdGhlIEFMQiBpbiB0aGUgc3BlY2lmaWVkIEFaXG4gICAgICovXG4gICAgc3RhdGljIGdldFBlckFaTGF0ZW5jeU1ldHJpYyhcbiAgICAgICAgcHJvcHM6IFpvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5TWV0cmljUHJvcHNcbiAgICApOiBJTWV0cmljIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmFsYi5tZXRyaWNzLnRhcmdldFJlc3BvbnNlVGltZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAocHJvcHMuYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkID8gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkIDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSArIFwiLXRhcmdldC1yZXNwb25zZS10aW1lXCIsXG4gICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IHByb3BzLnN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5TRUNPTkRTXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGVpdGhlciB0aGUgc3VjY2Vzc2Z1bCwgZmF1bHQsIG9yIHRvdGFsIGNvdW50IG1ldHJpY3NcbiAgICAgKiBmb3IgdGhlIGxvYWQgYmFsYW5jZXIgdGFyZ2V0cyBhY3Jvc3MgYWxsIG9mIHRoZSBwcm92aWRlZCBcbiAgICAgKiBBTEJzIGluIGVhY2ggQVouXG4gICAgICogQHBhcmFtIGFsYnMgVGhlIEFMQnMgdG8gYWdncmVnYXRlIHRoZSBjb3VudCBvZlxuICAgICAqIEBwYXJhbSBwcm9wcyBUaGUgcmVxdWVzdCBwcm9wc1xuICAgICAqIEByZXR1cm5zIFRoZSB0b3RhbCBjb3VudCBvZiBzdWNlc3MsIGZhdWx0cywgb3IgdG90YWwgcmVxdWVzdHMgaW4gdGhlIHNwZWNpZmllZCBBWlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRQZXJBWkF2YWlsYWJpbGl0eU1ldHJpY0NvdW50QWdncmVnYXRlKFxuICAgICAgICBhbGJzOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJbXSxcbiAgICAgICAgcHJvcHM6IFpvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJBdmFpbGFiaWxpdHlNZXRyaWNQcm9wc1xuICAgICk6IElNZXRyaWMge1xuICAgICAgICBsZXQga2V5cHJlZml4ID0gcHJvcHMua2V5cHJlZml4ID8gcHJvcHMua2V5cHJlZml4IDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcocHJvcHMuYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcblxuICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgICAgICBsZXQgbWV0cmljczogSU1ldHJpY1tdID0gW107XG5cbiAgICAgICAgYWxicy5mb3JFYWNoKChhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcikgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldDV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgICAgICAgIEh0dHBDb2RlVGFyZ2V0LlRBUkdFVF81WFhfQ09VTlQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi10YXJnZXQtNXh4XCIsXG4gICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi1lbGItNXh4XCIsXG4gICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICk7XG4gICAgICBcbiAgICAgICAgICAgICAgbGV0IHJlcXVlc3RDb3VudDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnJlcXVlc3RDb3VudChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLVwiICsgYWxiLmxvYWRCYWxhbmNlckFybiArIFwiLXJlcXVlc3QtY291bnRcIixcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgXG4gICAgICAgICAgICAgIGxldCB0YXJnZXQyeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfMlhYX0NPVU5ULFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgXCItdGFyZ2V0LTJ4eFwiLFxuICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICBcbiAgICAgICAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi1lbGItM3h4XCIsXG4gICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgIFxuICAgICAgICAgICAgICBsZXQgdGFyZ2V0M3h4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzNYWF9DT1VOVCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLVwiICsgYWxiLmxvYWRCYWxhbmNlckFybiArIFwiLXRhcmdldC0zeHhcIixcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgIFxuICAgICAgICAgICAgICBzd2l0Y2gocHJvcHMubWV0cmljVHlwZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5UOlxuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MWBdID0gdGFyZ2V0NXh4O1xuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gZWxiNXh4O1xuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGBGSUxMKCR7a2V5cHJlZml4fTEsIDApICsgRklMTCgke2tleXByZWZpeH0yLCAwKWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgXCItZmF1bHQtY291bnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5TVUNDRVNTX0NPVU5UOlxuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MWBdID0gdGFyZ2V0Mnh4O1xuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gdGFyZ2V0M3h4O1xuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9M2BdID0gZWxiM3h4O1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLnB1c2gobmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCR7a2V5cHJlZml4fTErJHtrZXlwcmVmaXh9Miske2tleXByZWZpeH0zYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi1zdWNjZXNzLWNvdW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlJFUVVFU1RfQ09VTlQ6XG4gICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLnB1c2gocmVxdWVzdENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBvbmx5IHN1cHBvcnRzIENPVU5UIGF2YWlsYWJpbGl0eSBtZXRyaWNzLlwiKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1ldHJpY3MuZm9yRWFjaCgobWV0cmljOiBJTWV0cmljLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fSR7aW5kZXh9YF0gPSBtZXRyaWM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKSxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3BlY2lmaWVkIGF2YWlsYWJpbGl0eSBtZXRyaWMgaW4gdGhlIHNwZWNpZmllZCBBWiBmb3IgdGhlIEFMQlxuICAgICAqIEBwYXJhbSBhbGIgVGhlIEFMQlxuICAgICAqIEBwYXJhbSBwcm9wcyBUaGUgcmVxdWVzdCBwcm9wc1xuICAgICAqIEByZXR1cm5zIFRoZSBtZXRyaWMgcmVxdWVzdGVkXG4gICAgICovXG4gICAgc3RhdGljIGdldFBlckFaQXZhaWxhYmlsaXR5TWV0cmljKFxuICAgICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgXG4gICAgICAgIHByb3BzOiBab25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNcbiAgICApOiBJTWV0cmljIHtcbiAgICAgICAgbGV0IGtleXByZWZpeCA9IHByb3BzLmtleXByZWZpeCA/IHByb3BzLmtleXByZWZpeCA6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKHByb3BzLmF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgbGV0IHRhcmdldDV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgIEh0dHBDb2RlVGFyZ2V0LlRBUkdFVF81WFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi10YXJnZXQtNXh4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICBcbiAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1lbGItNXh4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlcXVlc3RDb3VudDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnJlcXVlc3RDb3VudChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCB0YXJnZXQyeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfMlhYX0NPVU5ULFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItdGFyZ2V0LTJ4eFwiLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1lbGItM3h4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdGFyZ2V0M3h4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzNYWF9DT1VOVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLXRhcmdldC0zeHhcIixcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG5cbiAgICAgICAgc3dpdGNoKHByb3BzLm1ldHJpY1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVDpcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IHRhcmdldDV4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IGVsYjV4eDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBgRklMTCgke2tleXByZWZpeH0xLCAwKSArIEZJTEwoJHtrZXlwcmVmaXh9MiwgMClgLFxuICAgICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX1JBVEU6XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAvLyBSZXF1ZXN0IGNvdW50IG9ubHkgaW5jbHVkZXMgcmVxdWVzdHMgd2hlcmUgYSByZXNwb25zZSB3YXMgZ2VuZXJhdGVkIGZyb20gYSB0YXJnZXRcbiAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQ1eHg7XG4gICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gcmVxdWVzdENvdW50O1xuXG4gICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCgke2tleXByZWZpeH0xLyR7a2V5cHJlZml4fTIpKjEwMGAsXG4gICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfQ09VTlQ6XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQyeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSB0YXJnZXQzeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0zYF0gPSBlbGIzeHg7XG4gIFxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBgJHtrZXlwcmVmaXh9MSske2tleXByZWZpeH0yKyR7a2V5cHJlZml4fTNgLFxuICAgICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURTpcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IHRhcmdldDJ4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IHRhcmdldDN4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTNgXSA9IHJlcXVlc3RDb3VudDtcbiAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGAoKCR7a2V5cHJlZml4fTErJHtrZXlwcmVmaXh9MikvJHtrZXlwcmVmaXh9MykqMTAwYCxcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5SRVFVRVNUX0NPVU5UOlxuICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RDb3VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIEFMQnMgc3BlY2lmaWVkIGF2YWlsYWJpbGl0eSBtZXRyaWMgYXQgdGhlIHJlZ2lvbmFsIGxldmVsIChvbmx5IGxvb2tzXG4gICAgICogYXQgdGhlIHJlZ2lvbmFsIGRpbWVuc2lvbiBmb3IgdGhlIHRhcmdldHMsIG5vdCBwZXIgQVopXG4gICAgICogQHBhcmFtIGFsYiBUaGUgQUxCXG4gICAgICogQHBhcmFtIHByb3BzIFRoZSByZXF1ZXN0IHByb3BzXG4gICAgICogQHJldHVybnMgVGhlIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBtZXRyaWMgcmVxdWVzdGVkXG4gICAgICovXG4gICAgc3RhdGljIGdldFJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljKFxuICAgICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgXG4gICAgICAgIHByb3BzOiBSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNcbiAgICApOiBJTWV0cmljIHtcbiAgICAgICAgbGV0IGtleXByZWZpeCA9IHByb3BzLmtleXByZWZpeCA/IHByb3BzLmtleXByZWZpeCA6IFwiYVwiO1xuXG4gICAgICAgIGxldCB0YXJnZXQ1eHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfNVhYX0NPVU5ULFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXCJ0YXJnZXQtNXh4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICBcbiAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBcImVsYi01eHhcIixcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcmVxdWVzdENvdW50OiBJTWV0cmljID0gYWxiLm1ldHJpY3MucmVxdWVzdENvdW50KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXCJyZXF1ZXN0LWNvdW50XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdGFyZ2V0Mnh4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzJYWF9DT1VOVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IFwidGFyZ2V0LTJ4eFwiLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBcImVsYi0zeHhcIixcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCB0YXJnZXQzeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfM1hYX0NPVU5ULFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXCJ0YXJnZXQtM3h4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuXG4gICAgICAgIHN3aXRjaChwcm9wcy5tZXRyaWNUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQ6XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQ1eHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSBlbGI1eHg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYEZJTEwoJHtrZXlwcmVmaXh9MSwgMCkgKyBGSUxMKCR7a2V5cHJlZml4fTIsIDApYCxcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9SQVRFOlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQ1eHg7XG4gICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gcmVxdWVzdENvdW50O1xuXG4gICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCgke2tleXByZWZpeH0xLyR7a2V5cHJlZml4fTIpKjEwMGAsXG4gICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfQ09VTlQ6XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQyeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSB0YXJnZXQzeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0zYF0gPSBlbGIzeHg7XG4gIFxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBgJHtrZXlwcmVmaXh9MSske2tleXByZWZpeH0yKyR7a2V5cHJlZml4fTNgLFxuICAgICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURTpcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IHRhcmdldDJ4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IHRhcmdldDN4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTNgXSA9IHJlcXVlc3RDb3VudDtcbiAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGAoKCR7a2V5cHJlZml4fTErJHtrZXlwcmVmaXh9MikvJHtrZXlwcmVmaXh9MykqMTAwYCxcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5SRVFVRVNUX0NPVU5UOlxuICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RDb3VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIEFMQidzIFRhcmdldFJlc3BvbnNlVGltZSBtZXRyaWMgYXQgdGhlIHJlZ2lvbmFsIGxldmVsIChvbmx5IGxvb2tzXG4gICAgICogYXQgdGhlIHJlZ2lvbmFsIGRpbWVuc2lvbiBmb3IgdGhlIHRhcmdldHMsIG5vdCBwZXIgQVopXG4gICAgICogQHBhcmFtIHByb3BzICBUaGUgcmVxdWVzdCBwcm9wc1xuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRSZWdpb25hbExhdGVuY3lNZXRyaWMoXG4gICAgICAgIHByb3BzOiBSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU1ldHJpY1Byb3BzXG4gICAgKTogSU1ldHJpYyB7XG4gICAgICAgIHJldHVybiBwcm9wcy5hbGIubWV0cmljcy50YXJnZXRSZXNwb25zZVRpbWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChwcm9wcy5hbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBBd3MuUkVHSU9OLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBwcm9wcy5zdGF0aXN0aWMsXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuU0VDT05EU1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGZhdWx0cyBmb3IgYWxsIEFMQnMgY29tYmluZWQgcGVyIEFaXG4gICAgICogQHBhcmFtIGFsYnMgVGhlIEFMQnMgdG8gYWdncmVnYXRlXG4gICAgICogQHBhcmFtIHBlcmlvZCBUaGUgcGVyaW9kIG9mIHRpbWUgdG8gY2FsY3VsYXRlIHRoZSBtZXRyaWNzXG4gICAgICogQHBhcmFtIGF6TWFwcGVyIFRoZSBBWiBtYXBwZXIgZnVuY3Rpb24gc28gdGhlIG1ldHJpY3MgYXJlIGNvcnJlY3RseSBsYWJlbGVkIHdpdGggdGhlaXIgQVogSURcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VG90YWxBbGJGYXVsdENvdW50UGVyWm9uZShcbiAgICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICAgICAgcHJlZml4Pzogc3RyaW5nXG4gICAgKSA6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfVxuICAgIHtcbiAgICAgIGxldCBmYXVsdHNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgIGxldCBtZXRyaWNzUGVyQVo6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljW119ID0ge307XG4gICAgICBsZXQga2V5cHJlZml4OiBzdHJpbmcgPSBwcmVmaXggPyBwcmVmaXggOiBNZXRyaWNzSGVscGVyLm5leHRDaGFyKCk7XG4gICAgICBjb25zb2xlLmxvZyhcIlVTSU5HIFBSRUZJWDogXCIgKyBrZXlwcmVmaXgpO1xuICBcbiAgICAgIGFsYnMuZm9yRWFjaCgoYWxiOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIpID0+IHtcbiAgXG4gICAgICAgIGFsYi52cGMhLmF2YWlsYWJpbGl0eVpvbmVzLmZvckVhY2goKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGxldCBhekxldHRlciA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgICAgIGlmICghKGF6TGV0dGVyIGluIG1ldHJpY3NQZXJBWikpIHtcbiAgICAgICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0gPSBbXTtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIC8vIDV4eCByZXNwb25zZXMgZnJvbSB0YXJnZXRzXG4gICAgICAgICAgbGV0IHRhcmdldDV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzVYWF9DT1VOVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgICAgLy8gNXh4IHJlc3BvbnNlcyBmcm9tIEVMQlxuICAgICAgICAgIGxldCBlbGI1eHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZUVsYihcbiAgICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gIFxuICAgICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MWBdID0gZWxiNXh4O1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gdGFyZ2V0NXh4O1xuICBcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgZmF1bHRzIHBlciB6b25lIGZvciB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLnB1c2gobmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IGBGSUxMKCR7a2V5cHJlZml4fTEsIDApICsgRklMTCgke2tleXByZWZpeH0yLCAwKWAsXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgICAgICAgfSkpO1xuICBcbiAgICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gICAgICAgIH0pOyAgIFxuICAgICAgfSk7XG4gIFxuICAgICAgLy8gV2UgY2FuIGhhdmUgbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgcGVyIHpvbmUsIHNvIGFkZCB0aGVpciBmYXVsdCBjb3VudFxuICAgICAgLy8gbWV0cmljcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgaWYgKG1ldHJpY3NQZXJBWlthekxldHRlcl0ubGVuZ3RoID4gMSkge1xuICBcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmZvckVhY2goKG1ldHJpYzogSU1ldHJpYywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgICBmYXVsdHNQZXJab25lW2F6TGV0dGVyXSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBmYXVsdHNQZXJab25lW2F6TGV0dGVyXSA9IG1ldHJpY3NQZXJBWlthekxldHRlcl1bMF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICBcbiAgICAgIHByZWZpeCA9IGtleXByZWZpeDtcbiAgICAgIHJldHVybiBmYXVsdHNQZXJab25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBmYXVsdHMgZm9yIGFsbCBBTEJzIGNvbWJpbmVkIHBlciBBWlxuICAgICAqIEBwYXJhbSBhbGJzIFRoZSBBTEJzIHRvIGFnZ3JlZ2F0ZVxuICAgICAqIEBwYXJhbSBwZXJpb2QgVGhlIHBlcmlvZCBvZiB0aW1lIHRvIGNhbGN1bGF0ZSB0aGUgbWV0cmljc1xuICAgICAqIEBwYXJhbSBhek1hcHBlciBUaGUgQVogbWFwcGVyIGZ1bmN0aW9uIHNvIHRoZSBtZXRyaWNzIGFyZSBjb3JyZWN0bHkgbGFiZWxlZCB3aXRoIHRoZWlyIEFaIElEXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgc3RhdGljIGdldFRvdGFsQWxiU3VjY2Vzc0NvdW50UGVyWm9uZShcbiAgICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyXG4gICAgKSA6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfVxuICAgIHtcbiAgICAgIGxldCBzdWNjZXNzUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICBsZXQgbWV0cmljc1BlckFaOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY1tdfSA9IHt9O1xuICAgICAgbGV0IGtleXByZWZpeDogc3RyaW5nID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuICBcbiAgICAgIGFsYnMuZm9yRWFjaCgoYWxiOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIpID0+IHtcbiAgXG4gICAgICAgIGFsYi52cGMhLmF2YWlsYWJpbGl0eVpvbmVzLmZvckVhY2goKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGxldCBhekxldHRlciA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgICAgIGlmICghKGF6TGV0dGVyIGluIG1ldHJpY3NQZXJBWikpIHtcbiAgICAgICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0gPSBbXTtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIC8vIDJ4eCByZXNwb25zZXMgZnJvbSB0YXJnZXRzXG4gICAgICAgICAgbGV0IHRhcmdldDJ4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzJYWF9DT1VOVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIDN4eCByZXNwb25zZXMgZnJvbSB0YXJnZXRzXG4gICAgICAgICAgbGV0IHRhcmdldDN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzNYWF9DT1VOVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgICAgLy8gM3h4IHJlc3BvbnNlcyBmcm9tIEVMQlxuICAgICAgICAgIGxldCBlbGIzeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZUVsYihcbiAgICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gIFxuICAgICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MWBdID0gZWxiM3h4O1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gdGFyZ2V0Mnh4O1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9M2BdID0gdGFyZ2V0M3h4O1xuICBcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgZmF1bHRzIHBlciB6b25lIGZvciB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLnB1c2gobmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IGBGSUxMKCR7a2V5cHJlZml4fTEsIDApICsgRklMTCgke2tleXByZWZpeH0yLCAwKSArIEZJTEwoJHtrZXlwcmVmaXh9MywgMClgLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZFxuICAgICAgICAgIH0pKTtcbiAgXG4gICAgICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgICAgICB9KTsgICBcbiAgICAgIH0pO1xuICBcbiAgICAgIC8vIFdlIGNhbiBoYXZlIG11bHRpcGxlIGxvYWQgYmFsYW5jZXJzIHBlciB6b25lLCBzbyBhZGQgdGhlaXIgc3VjY2VzcyBjb3VudFxuICAgICAgLy8gbWV0cmljcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG5cbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmZvckVhY2goKG1ldHJpYzogSU1ldHJpYywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgICBzdWNjZXNzUGVyWm9uZVthekxldHRlcl0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKSxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3VjY2Vzc1BlclpvbmVbYXpMZXR0ZXJdID0gbWV0cmljc1BlckFaW2F6TGV0dGVyXVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgXG4gICAgICByZXR1cm4gc3VjY2Vzc1BlclpvbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NlZCBieXRlcyBmb3IgYWxsIEFMQnMgaW4gZWFjaCB6b25lXG4gICAgICogQHBhcmFtIGFsYnMgXG4gICAgICogQHBhcmFtIHBlcmlvZCBcbiAgICAgKiBAcGFyYW0gYXpNYXBwZXIgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgc3RhdGljIGdldFRvdGFsQWxiUmVxdWVzdHNQZXJab25lKFxuICAgICAgYWxiczogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyW10sXG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICAgICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICAgICBwcmVmaXg/OiBzdHJpbmdcbiAgICApIDoge1trZXk6IHN0cmluZ106IElNZXRyaWN9XG4gICAge1xuICAgICAgbGV0IHJlcXVlc3RzUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICBsZXQgbWV0cmljc1BlckFaOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY1tdfSA9IHt9O1xuICAgICAgbGV0IGtleXByZWZpeDogc3RyaW5nID0gcHJlZml4ID8gcHJlZml4IDogTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuXG4gICAgICBhbGJzLmZvckVhY2goKGFsYjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKSA9PiB7XG4gIFxuICAgICAgICBhbGIudnBjIS5hdmFpbGFiaWxpdHlab25lcy5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBsZXQgYXpMZXR0ZXIgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgICBpZiAoIShhekxldHRlciBpbiBtZXRyaWNzUGVyQVopKSB7XG4gICAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdID0gW107XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBsZXQgcmVxdWVzdENvdW50OiBJTWV0cmljID0gYWxiLm1ldHJpY3MucmVxdWVzdENvdW50KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLnB1c2gocmVxdWVzdENvdW50KTtcbiAgICAgICAgfSk7ICAgXG4gICAgICB9KTtcbiAgXG4gICAgICAvLyBXZSBjYW4gaGF2ZSBtdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBwZXIgem9uZSwgc28gYWRkIHRoZWlyIHByb2Nlc3NlZCBieXRlcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG4gIFxuICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgXG4gICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0uZm9yRWFjaCgobWV0cmljOiBJTWV0cmljLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICB9KTtcblxuICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gIFxuICAgICAgICByZXF1ZXN0c1BlclpvbmVbYXpMZXR0ZXJdID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcHJlZml4ID0ga2V5cHJlZml4O1xuICBcbiAgICAgIHJldHVybiByZXF1ZXN0c1BlclpvbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NlZCBieXRlcyBmb3IgYWxsIEFMQnMgaW4gZWFjaCB6b25lXG4gICAgICogQHBhcmFtIGFsYnMgXG4gICAgICogQHBhcmFtIHBlcmlvZCBcbiAgICAgKiBAcGFyYW0gYXpNYXBwZXIgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgc3RhdGljIGdldFRvdGFsQWxiUHJvY2Vzc2VkQnl0ZXNQZXJab25lKFxuICAgICAgYWxiczogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyW10sXG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICAgICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXJcbiAgICApIDoge1trZXk6IHN0cmluZ106IElNZXRyaWN9XG4gICAge1xuICAgICAgbGV0IHByb2Nlc3NlZEJ5dGVzUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICBsZXQgbWV0cmljc1BlckFaOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY1tdfSA9IHt9O1xuICAgICAgbGV0IGtleXByZWZpeDogc3RyaW5nID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuICBcbiAgICAgIGFsYnMuZm9yRWFjaCgoYWxiOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIpID0+IHtcbiAgXG4gICAgICAgIGFsYi52cGMhLmF2YWlsYWJpbGl0eVpvbmVzLmZvckVhY2goKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGxldCBhekxldHRlciA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgICAgIGlmICghKGF6TGV0dGVyIGluIG1ldHJpY3NQZXJBWikpIHtcbiAgICAgICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0gPSBbXTtcbiAgICAgICAgICB9XG4gIFxuICAgICAgICAgIGxldCBwcm9jZXNzZWRCeXRlczogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnByb2Nlc3NlZEJ5dGVzKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLnB1c2gocHJvY2Vzc2VkQnl0ZXMpO1xuICAgICAgICB9KTsgICBcbiAgICAgIH0pO1xuICBcbiAgICAgIC8vIFdlIGNhbiBoYXZlIG11bHRpcGxlIGxvYWQgYmFsYW5jZXJzIHBlciB6b25lLCBzbyBhZGQgdGhlaXIgcHJvY2Vzc2VkIGJ5dGVzIHRvZ2V0aGVyXG4gICAgICBPYmplY3Qua2V5cyhtZXRyaWNzUGVyQVopLmZvckVhY2goKGF6TGV0dGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgXG4gICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0uZm9yRWFjaCgobWV0cmljOiBJTWV0cmljLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICB9KTtcblxuICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gIFxuICAgICAgICBwcm9jZXNzZWRCeXRlc1BlclpvbmVbYXpMZXR0ZXJdID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgXG4gICAgICByZXR1cm4gcHJvY2Vzc2VkQnl0ZXNQZXJab25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgYSB3ZWlnaHRlZCBhcHByb3hpbWF0aW9uIG9mIHRoZSBsYXRlbmN5IGF0IHRoZSBwcm92aWRlZCBzdGF0aXN0aWMgZm9yIGFsbCBBTEJzXG4gICAgICogaW4gZWFjaCB6b25lLlxuICAgICAqIEBwYXJhbSBhbGJzIFxuICAgICAqIEBwYXJhbSBzdGF0aXN0aWMgXG4gICAgICogQHBhcmFtIHBlcmlvZCBcbiAgICAgKiBAcGFyYW0gYXpNYXBwZXIgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgc3RhdGljIGdldFRvdGFsQWxiTGF0ZW5jeVBlclpvbmUoXG4gICAgICBhbGJzOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJbXSxcbiAgICAgIHN0YXRpc3RpYzogc3RyaW5nLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyXG4gICAgKSA6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfVxuICAgIHtcbiAgICAgIGxldCBsYXRlbmN5UGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICBsZXQga2V5cHJlZml4OiBzdHJpbmcgPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKCk7XG5cbiAgICAgIGxldCByZXF1ZXN0Q291bnRzUGVyQVo6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljW119ID0ge307XG5cbiAgICAgIGxldCB3ZWlnaHRlZExhdGVuY3lQZXJBWjoge1trZXk6IHN0cmluZ106IElNZXRyaWNbXX0gPSB7fTtcbiAgXG4gICAgICBhbGJzLmZvckVhY2goKGFsYjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKSA9PiB7XG4gIFxuICAgICAgICBhbGIudnBjIS5hdmFpbGFiaWxpdHlab25lcy5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcblxuICAgICAgICAgIGxldCBhekxldHRlciA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICBpZiAoIShhekxldHRlciBpbiB3ZWlnaHRlZExhdGVuY3lQZXJBWikpIHtcbiAgICAgICAgICAgIHdlaWdodGVkTGF0ZW5jeVBlckFaW2F6TGV0dGVyXSA9IFtdO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghKGF6TGV0dGVyIGluIHJlcXVlc3RDb3VudHNQZXJBWikpIHtcbiAgICAgICAgICAgIHJlcXVlc3RDb3VudHNQZXJBWlthekxldHRlcl0gPSBbXTtcbiAgICAgICAgICB9XG4gICBcbiAgICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkID0gYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuICBcbiAgICAgICAgICBsZXQgbGF0ZW5jeTogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnRhcmdldFJlc3BvbnNlVGltZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBzdGF0aXN0aWMsXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuTUlMTElTRUNPTkRTXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBsZXQgcmVxdWVzdENvdW50OiBJTWV0cmljID0gYWxiLm1ldHJpY3MucmVxdWVzdENvdW50KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IGxhdGVuY3k7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSByZXF1ZXN0Q291bnQ7XG5cbiAgICAgICAgICBsZXQgd2VpZ2h0ZWRMYXRlbmN5OiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IGAke2tleXByZWZpeH0xKiR7a2V5cHJlZml4fTJgLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWRcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHdlaWdodGVkTGF0ZW5jeVBlckFaW2F6TGV0dGVyXS5wdXNoKHdlaWdodGVkTGF0ZW5jeSk7XG5cbiAgICAgICAgICByZXF1ZXN0Q291bnRzUGVyQVpbYXpMZXR0ZXJdLnB1c2gocmVxdWVzdENvdW50KTtcbiAgXG4gICAgICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgICAgICB9KTsgICBcbiAgICAgIH0pO1xuICBcbiAgICAgIC8vIFdlIGNhbiBoYXZlIG11bHRpcGxlIGxvYWQgYmFsYW5jZXJzIHBlciB6b25lLCBjb21iaW5lIHRoZWlyIGxhdGVuY3kgcGVyIHpvbmVcbiAgICAgIC8vIHRvIGdldCBhbiBhdmVyYWdlIGxhdGVuY3kgcGVyY2VudGlsZSBsYXRlbmN5LCBsaWtlIGF2ZXJhZ2UgcDk5XG4gICAgICBPYmplY3Qua2V5cyh3ZWlnaHRlZExhdGVuY3lQZXJBWikuZm9yRWFjaCgoYXpMZXR0ZXI6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkID0gYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuICBcbiAgICAgICAgbGV0IHVzaW5nTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG5cbiAgICAgICAgd2VpZ2h0ZWRMYXRlbmN5UGVyQVpbYXpMZXR0ZXJdLmZvckVhY2goKG1ldHJpYzogSU1ldHJpYywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9JHtpbmRleH1gXSA9IG1ldHJpYztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IG51bWVyYXRvciA9IFwiKFwiICsgT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKSArIFwiKVwiO1xuICAgICAgICBsZXQgaW5kZXggPSBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmxlbmd0aDtcblxuICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG5cbiAgICAgICAgcmVxdWVzdENvdW50c1BlckFaW2F6TGV0dGVyXS5mb3JFYWNoKChtZXRyaWM6IElNZXRyaWMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fSR7aW5kZXh9YF0gPSBtZXRyaWM7XG4gICAgICAgIH0pOyBcblxuICAgICAgICBsZXQgZGVub21pbmF0b3I6IHN0cmluZyA9IFwiKFwiICsgT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5zbGljZShpbmRleCkuam9pbihcIitcIikgKyBcIilcIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2Ugd2FudCB0byBjYWxjdWxhdGUgdGhpcyBmb3JtdWxhXG4gICAgICAgICAqIFxuICAgICAgICAgKiAocDk5XzEgKiByZXF1ZXN0c18xICsgcDk5XzIgKiByZXF1ZXN0c18yICsgcDk5XzMgKiByZXF1ZXN0c18zKSAvIChyZXF1ZXN0c18xICsgcmVxdWVzdHNfMiArIHJlcXVlc3RzXzMpXG4gICAgICAgICAqIFxuICAgICAgICAgKiBUaGlzIHdpbGwgcHJvdmlkZSBhIHJlcXVlc3Qgd2VpZ2h0ZWQgYXBwcm94aW1hdGlvbiBvZiB0aGUgcDk5XG4gICAgICAgICAqIGxhdGVuY3kgcGVyIEFaXG4gICAgICAgICAqL1xuICBcbiAgICAgICAgbGF0ZW5jeVBlclpvbmVbYXpMZXR0ZXJdID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICBleHByZXNzaW9uOiBudW1lcmF0b3IgKyBcIi9cIiArIGRlbm9taW5hdG9yLFxuICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgfSk7XG5cbiAgICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgICAgfSk7XG4gIFxuICAgICAgcmV0dXJuIGxhdGVuY3lQZXJab25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIGZhdWx0IHJhdGUgcGVyIEFaXG4gICAgICogQHBhcmFtIHJlcXVlc3RzUGVyWm9uZSBcbiAgICAgKiBAcGFyYW0gZmF1bHRzUGVyWm9uZSBcbiAgICAgKiBAcGFyYW0gcGVyaW9kIFxuICAgICAqIEBwYXJhbSBhek1hcHBlciBcbiAgICAgKiBAcmV0dXJucyBUaGUgZmF1bHQgcmF0ZSBwZXIgQVogdXNpbmcgdGhlIEFaIG5hbWUgbGV0dGVyIGFzIHRoZSBrZXkgZm9yIGVhY2ggbWV0cmljXG4gICAgICovXG4gICAgc3RhdGljIGdldFRvdGFsQWxiRmF1bHRSYXRlUGVyWm9uZShcbiAgICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICAgICkgOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30ge1xuXG4gICAgICBsZXQgZmF1bHRSYXRlTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICBsZXQgcmVxdWVzdHNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB0aGlzLmdldFRvdGFsQWxiUmVxdWVzdHNQZXJab25lKGFsYnMsIHBlcmlvZCwgYXpNYXBwZXIsIFwiYVwiKTtcbiAgICAgIGxldCBmYXVsdHNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB0aGlzLmdldFRvdGFsQWxiRmF1bHRDb3VudFBlclpvbmUoYWxicywgcGVyaW9kLCBhek1hcHBlciwgXCJlXCIpO1xuXG4gICAgICBPYmplY3Qua2V5cyhyZXF1ZXN0c1BlclpvbmUpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChrZXkgaW4gZmF1bHRzUGVyWm9uZSkge1xuICAgICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgICAgICAgIGxldCBrZXlwcmVmaXggPSAneicgKyBrZXk7XG4gICAgICAgICBcbiAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IGZhdWx0c1BlclpvbmVba2V5XTtcbiAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IHJlcXVlc3RzUGVyWm9uZVtrZXldO1xuXG4gICAgICAgICAgbGV0IHpvbmFsRmF1bHRSYXRlOiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IGAke2tleXByZWZpeH0xLyR7a2V5cHJlZml4fTJgLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgIGxhYmVsOiBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihrZXkpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBmYXVsdFJhdGVNZXRyaWNzW2tleV0gPSB6b25hbEZhdWx0UmF0ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgem9uZSBcIiArIGtleSArIFwiIGlzIG5vdCBwcmVzZW50IGluIHRoZSBmYXVsdHNQZXJab25lIHBhcmFtZXRlci5cIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBPYmplY3Qua2V5cyhmYXVsdHNQZXJab25lKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIShrZXkgaW4gcmVxdWVzdHNQZXJab25lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSB6b25lIFwiICsga2V5ICsgXCIgaXMgbm90IHByZXNlbnQgaW4gdGhlIHJlcXVlc3RzUGVyWm9uZSBwYXJhbWV0ZXIuXCIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGZhdWx0UmF0ZU1ldHJpY3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHpvbmFsIHByb2Nlc3NlZCBieXRlcyBtZXRyaWMgZm9yIHRoZSBzcGVjaWZpZWQgbG9hZCBiYWxhbmNlclxuICAgICAqIEBwYXJhbSBsb2FkQmFsYW5jZXJGdWxsTmFtZVxuICAgICAqIEBwYXJhbSBhdmFpbGFiaWxpdHlab25lTmFtZVxuICAgICAqIEBwYXJhbSBwZXJpb2RcbiAgICAgKiBAcmV0dXJucyBJTWV0cmljXG4gICAgICovXG4gICAgc3RhdGljIGdldFBlckFaUHJvY2Vzc2VkQnl0ZXNNZXRyaWMoXG4gICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZyxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGFkZExvYWRCYWxhbmNlckFyblRvTGFiZWw/OiBib29sZWFuXG4gICAgKTogSU1ldHJpYyB7XG4gICAgICByZXR1cm4gYWxiLm1ldHJpY3MucHJvY2Vzc2VkQnl0ZXMoe1xuICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgIGRpbWVuc2lvbnNNYXA6e1xuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArIChhZGRMb2FkQmFsYW5jZXJBcm5Ub0xhYmVsID8gXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuIDogXCJcIilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB6b25hbCBwcm9jZXNzZWQgYnl0ZXMgbWV0cmljIGZvciB0aGUgc3BlY2lmaWVkIGxvYWQgYmFsYW5jZXJcbiAgICAgKiBAcGFyYW0gbG9hZEJhbGFuY2VyRnVsbE5hbWVcbiAgICAgKiBAcGFyYW0gYXZhaWxhYmlsaXR5Wm9uZU5hbWVcbiAgICAgKiBAcGFyYW0gcGVyaW9kXG4gICAgICogQHJldHVybnMgSU1ldHJpY1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRSZWdpb25hbFByb2Nlc3NlZEJ5dGVzTWV0cmljKFxuICAgICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgICAgYWRkTG9hZEJhbGFuY2VyQXJuPzogYm9vbGVhblxuICAgICAgKTogSU1ldHJpYyB7XG4gICAgICAgIHJldHVybiBhbGIubWV0cmljcy5wcm9jZXNzZWRCeXRlcyh7XG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6e1xuICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcikubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IEF3cy5SRUdJT04gKyAoYWRkTG9hZEJhbGFuY2VyQXJuID8gXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuIDogXCJcIilcbiAgICAgICAgfSk7XG4gICAgfVxufSJdfQ==
838
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUFrRjtBQUNsRix1RkFBa0o7QUFDbEosZ0ZBQTZFO0FBRzdFLDZDQUE0QztBQUk1Qyw4REFBMkQ7QUFFM0QsTUFBYSw4QkFBOEI7SUFFdkM7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQ3hCLEtBQXFEO1FBRXJELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQ3ZDO1lBQ0UsYUFBYSxFQUFFO2dCQUNiLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQ3hDLFlBQVksRUFBRyxLQUFLLENBQUMsR0FBMkM7cUJBQzdELG9CQUFvQjthQUN4QjtZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLHVCQUF1QjtZQUM3RyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLElBQUksRUFBRSxxQkFBSSxDQUFDLE9BQU87U0FDbkIsQ0FDRixDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsd0NBQXdDLENBQzNDLElBQWdDLEVBQ2hDLEtBQTBEO1FBRTFELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FB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T0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLDRCQUE0QixDQUNqQyxHQUE2QixFQUM3QixnQkFBd0IsRUFDeEIsa0JBQTBCLEVBQzFCLE1BQWdCLEVBQ2hCLHlCQUFtQztRQUVuQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsYUFBYSxFQUFDO2dCQUNWLFlBQVksRUFBRyxHQUEyQyxDQUFDLG9CQUFvQjtnQkFDL0UsZ0JBQWdCLEVBQUUsZ0JBQWdCO2FBQ3JDO1lBQ0QsS0FBSyxFQUFFLGtCQUFrQixHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDM0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQywrQkFBK0IsQ0FDbEMsR0FBNkIsRUFDN0IsTUFBZ0IsRUFDaEIsa0JBQTRCO1FBRTVCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDOUIsTUFBTSxFQUFFLE1BQU07WUFDZCxhQUFhLEVBQUM7Z0JBQ1YsWUFBWSxFQUFHLEdBQTJDLENBQUMsb0JBQW9CO2FBQ2xGO1lBQ0QsS0FBSyxFQUFFLGlCQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDNUUsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBcGxDRCx3RUFvbENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1ldHJpYywgTWF0aEV4cHJlc3Npb24sIFN0YXRzLCBVbml0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5pbXBvcnQgeyBCYXNlTG9hZEJhbGFuY2VyLCBIdHRwQ29kZUVsYiwgSHR0cENvZGVUYXJnZXQsIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgSUxvYWRCYWxhbmNlclYyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlXCI7XG5pbXBvcnQgeyBab25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSBcIi4uL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lNZXRyaWNQcm9wc1wiO1xuaW1wb3J0IHsgWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSBcIi4uL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvWm9uYWxBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzXCI7XG5pbXBvcnQgeyBBd3MsIER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMgfSBmcm9tIFwiLi4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9SZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNcIjtcbmltcG9ydCB7IFJlZ2lvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tIFwiLi4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9SZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU1ldHJpY1Byb3BzXCI7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSBcIi4uL2F6bWFwcGVyL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJcIjtcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL01ldHJpY3NIZWxwZXJcIjtcblxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcyB7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBUYXJnZXRSZXNwb25zZVRpbWUgbGF0ZW5jeSBmb3IgdGhlIEFMQlxuICAgICAqIHRhcmdldHNcbiAgICAgKiBAcGFyYW0gcHJvcHMgVGhlIHJlcXVlc3QgcHJvcHNcbiAgICAgKiBAcmV0dXJucyBUaGUgVGFyZ2V0UmVzcG9uc2VUaW1lIG1ldHJpYyBmb3IgdGhlIEFMQiBpbiB0aGUgc3BlY2lmaWVkIEFaXG4gICAgICovXG4gICAgc3RhdGljIGdldFBlckFaTGF0ZW5jeU1ldHJpYyhcbiAgICAgICAgcHJvcHM6IFpvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5TWV0cmljUHJvcHNcbiAgICApOiBJTWV0cmljIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmFsYi5tZXRyaWNzLnRhcmdldFJlc3BvbnNlVGltZShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAocHJvcHMuYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkID8gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkIDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSArIFwiLXRhcmdldC1yZXNwb25zZS10aW1lXCIsXG4gICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IHByb3BzLnN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5TRUNPTkRTXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGVpdGhlciB0aGUgc3VjY2Vzc2Z1bCwgZmF1bHQsIG9yIHRvdGFsIGNvdW50IG1ldHJpY3NcbiAgICAgKiBmb3IgdGhlIGxvYWQgYmFsYW5jZXIgdGFyZ2V0cyBhY3Jvc3MgYWxsIG9mIHRoZSBwcm92aWRlZCBcbiAgICAgKiBBTEJzIGluIGVhY2ggQVouXG4gICAgICogQHBhcmFtIGFsYnMgVGhlIEFMQnMgdG8gYWdncmVnYXRlIHRoZSBjb3VudCBvZlxuICAgICAqIEBwYXJhbSBwcm9wcyBUaGUgcmVxdWVzdCBwcm9wc1xuICAgICAqIEByZXR1cm5zIFRoZSB0b3RhbCBjb3VudCBvZiBzdWNlc3MsIGZhdWx0cywgb3IgdG90YWwgcmVxdWVzdHMgaW4gdGhlIHNwZWNpZmllZCBBWlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRQZXJBWkF2YWlsYWJpbGl0eU1ldHJpY0NvdW50QWdncmVnYXRlKFxuICAgICAgICBhbGJzOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJbXSxcbiAgICAgICAgcHJvcHM6IFpvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJBdmFpbGFiaWxpdHlNZXRyaWNQcm9wc1xuICAgICk6IElNZXRyaWMge1xuICAgICAgICBsZXQga2V5cHJlZml4ID0gcHJvcHMua2V5cHJlZml4ID8gcHJvcHMua2V5cHJlZml4IDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcocHJvcHMuYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcblxuICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgICAgICBsZXQgbWV0cmljczogSU1ldHJpY1tdID0gW107XG5cbiAgICAgICAgYWxicy5mb3JFYWNoKChhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcikgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldDV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgICAgICAgIEh0dHBDb2RlVGFyZ2V0LlRBUkdFVF81WFhfQ09VTlQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi10YXJnZXQtNXh4XCIsXG4gICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi1lbGItNXh4XCIsXG4gICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICk7XG4gICAgICBcbiAgICAgICAgICAgICAgbGV0IHJlcXVlc3RDb3VudDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnJlcXVlc3RDb3VudChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLVwiICsgYWxiLmxvYWRCYWxhbmNlckFybiArIFwiLXJlcXVlc3QtY291bnRcIixcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgXG4gICAgICAgICAgICAgIGxldCB0YXJnZXQyeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfMlhYX0NPVU5ULFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgXCItdGFyZ2V0LTJ4eFwiLFxuICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICk7XG4gICAgICBcbiAgICAgICAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi1lbGItM3h4XCIsXG4gICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgIFxuICAgICAgICAgICAgICBsZXQgdGFyZ2V0M3h4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzNYWF9DT1VOVCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLVwiICsgYWxiLmxvYWRCYWxhbmNlckFybiArIFwiLXRhcmdldC0zeHhcIixcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgIFxuICAgICAgICAgICAgICBzd2l0Y2gocHJvcHMubWV0cmljVHlwZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5UOlxuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MWBdID0gdGFyZ2V0NXh4O1xuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gZWxiNXh4O1xuICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGBGSUxMKCR7a2V5cHJlZml4fTEsIDApICsgRklMTCgke2tleXByZWZpeH0yLCAwKWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuICsgXCItZmF1bHQtY291bnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5TVUNDRVNTX0NPVU5UOlxuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MWBdID0gdGFyZ2V0Mnh4O1xuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gdGFyZ2V0M3h4O1xuICAgICAgICAgICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9M2BdID0gZWxiM3h4O1xuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLnB1c2gobmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCR7a2V5cHJlZml4fTErJHtrZXlwcmVmaXh9Miske2tleXByZWZpeH0zYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1cIiArIGFsYi5sb2FkQmFsYW5jZXJBcm4gKyBcIi1zdWNjZXNzLWNvdW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlJFUVVFU1RfQ09VTlQ6XG4gICAgICAgICAgICAgICAgICAgICBtZXRyaWNzLnB1c2gocmVxdWVzdENvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG1ldGhvZCBvbmx5IHN1cHBvcnRzIENPVU5UIGF2YWlsYWJpbGl0eSBtZXRyaWNzLlwiKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1ldHJpY3MuZm9yRWFjaCgobWV0cmljOiBJTWV0cmljLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fSR7aW5kZXh9YF0gPSBtZXRyaWM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKSxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3BlY2lmaWVkIGF2YWlsYWJpbGl0eSBtZXRyaWMgaW4gdGhlIHNwZWNpZmllZCBBWiBmb3IgdGhlIEFMQlxuICAgICAqIEBwYXJhbSBhbGIgVGhlIEFMQlxuICAgICAqIEBwYXJhbSBwcm9wcyBUaGUgcmVxdWVzdCBwcm9wc1xuICAgICAqIEByZXR1cm5zIFRoZSBtZXRyaWMgcmVxdWVzdGVkXG4gICAgICovXG4gICAgc3RhdGljIGdldFBlckFaQXZhaWxhYmlsaXR5TWV0cmljKFxuICAgICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgXG4gICAgICAgIHByb3BzOiBab25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNcbiAgICApOiBJTWV0cmljIHtcbiAgICAgICAgbGV0IGtleXByZWZpeCA9IHByb3BzLmtleXByZWZpeCA/IHByb3BzLmtleXByZWZpeCA6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKHByb3BzLmF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgbGV0IHRhcmdldDV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlVGFyZ2V0KFxuICAgICAgICAgIEh0dHBDb2RlVGFyZ2V0LlRBUkdFVF81WFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi10YXJnZXQtNXh4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICBcbiAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1lbGItNXh4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHJlcXVlc3RDb3VudDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnJlcXVlc3RDb3VudChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCB0YXJnZXQyeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfMlhYX0NPVU5ULFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICsgXCItdGFyZ2V0LTJ4eFwiLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQgKyBcIi1lbGItM3h4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdGFyZ2V0M3h4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzNYWF9DT1VOVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArIFwiLXRhcmdldC0zeHhcIixcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG5cbiAgICAgICAgc3dpdGNoKHByb3BzLm1ldHJpY1R5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVDpcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IHRhcmdldDV4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IGVsYjV4eDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBgRklMTCgke2tleXByZWZpeH0xLCAwKSArIEZJTEwoJHtrZXlwcmVmaXh9MiwgMClgLFxuICAgICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX1JBVEU6XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAvLyBSZXF1ZXN0IGNvdW50IG9ubHkgaW5jbHVkZXMgcmVxdWVzdHMgd2hlcmUgYSByZXNwb25zZSB3YXMgZ2VuZXJhdGVkIGZyb20gYSB0YXJnZXRcbiAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQ1eHg7XG4gICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gcmVxdWVzdENvdW50O1xuXG4gICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCgke2tleXByZWZpeH0xLyR7a2V5cHJlZml4fTIpKjEwMGAsXG4gICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfQ09VTlQ6XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQyeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSB0YXJnZXQzeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0zYF0gPSBlbGIzeHg7XG4gIFxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBgJHtrZXlwcmVmaXh9MSske2tleXByZWZpeH0yKyR7a2V5cHJlZml4fTNgLFxuICAgICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURTpcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IHRhcmdldDJ4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IHRhcmdldDN4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTNgXSA9IHJlcXVlc3RDb3VudDtcbiAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGAoKCR7a2V5cHJlZml4fTErJHtrZXlwcmVmaXh9MikvJHtrZXlwcmVmaXh9MykqMTAwYCxcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5SRVFVRVNUX0NPVU5UOlxuICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RDb3VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIEFMQnMgc3BlY2lmaWVkIGF2YWlsYWJpbGl0eSBtZXRyaWMgYXQgdGhlIHJlZ2lvbmFsIGxldmVsIChvbmx5IGxvb2tzXG4gICAgICogYXQgdGhlIHJlZ2lvbmFsIGRpbWVuc2lvbiBmb3IgdGhlIHRhcmdldHMsIG5vdCBwZXIgQVopXG4gICAgICogQHBhcmFtIGFsYiBUaGUgQUxCXG4gICAgICogQHBhcmFtIHByb3BzIFRoZSByZXF1ZXN0IHByb3BzXG4gICAgICogQHJldHVybnMgVGhlIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBtZXRyaWMgcmVxdWVzdGVkXG4gICAgICovXG4gICAgc3RhdGljIGdldFJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljKFxuICAgICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciwgXG4gICAgICAgIHByb3BzOiBSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNcbiAgICApOiBJTWV0cmljIHtcbiAgICAgICAgbGV0IGtleXByZWZpeCA9IHByb3BzLmtleXByZWZpeCA/IHByb3BzLmtleXByZWZpeCA6IFwiYVwiO1xuXG4gICAgICAgIGxldCB0YXJnZXQ1eHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfNVhYX0NPVU5ULFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXCJ0YXJnZXQtNXh4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICBcbiAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl81WFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBcImVsYi01eHhcIixcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcmVxdWVzdENvdW50OiBJTWV0cmljID0gYWxiLm1ldHJpY3MucmVxdWVzdENvdW50KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXCJyZXF1ZXN0LWNvdW50XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdGFyZ2V0Mnh4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgSHR0cENvZGVUYXJnZXQuVEFSR0VUXzJYWF9DT1VOVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IFwidGFyZ2V0LTJ4eFwiLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgIEh0dHBDb2RlRWxiLkVMQl8zWFhfQ09VTlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiBcImVsYi0zeHhcIixcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICB1bml0OiBVbml0LkNPVU5UXG4gICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCB0YXJnZXQzeHg6IElNZXRyaWMgPSBhbGIubWV0cmljcy5odHRwQ29kZVRhcmdldChcbiAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfM1hYX0NPVU5ULFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsYWJlbDogXCJ0YXJnZXQtM3h4XCIsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMuU1VNLFxuICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuXG4gICAgICAgIHN3aXRjaChwcm9wcy5tZXRyaWNUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQ6XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQ1eHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSBlbGI1eHg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYEZJTEwoJHtrZXlwcmVmaXh9MSwgMCkgKyBGSUxMKCR7a2V5cHJlZml4fTIsIDApYCxcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9SQVRFOlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQ1eHg7XG4gICAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gcmVxdWVzdENvdW50O1xuXG4gICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogYCgke2tleXByZWZpeH0xLyR7a2V5cHJlZml4fTIpKjEwMGAsXG4gICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfQ09VTlQ6XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSB0YXJnZXQyeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSB0YXJnZXQzeHg7XG4gICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0zYF0gPSBlbGIzeHg7XG4gIFxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBgJHtrZXlwcmVmaXh9MSske2tleXByZWZpeH0yKyR7a2V5cHJlZml4fTNgLFxuICAgICAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURTpcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTFgXSA9IHRhcmdldDJ4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTJgXSA9IHRhcmdldDN4eDtcbiAgICAgICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fTNgXSA9IHJlcXVlc3RDb3VudDtcbiAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGAoKCR7a2V5cHJlZml4fTErJHtrZXlwcmVmaXh9MikvJHtrZXlwcmVmaXh9MykqMTAwYCxcbiAgICAgICAgICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5SRVFVRVNUX0NPVU5UOlxuICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RDb3VudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIEFMQidzIFRhcmdldFJlc3BvbnNlVGltZSBtZXRyaWMgYXQgdGhlIHJlZ2lvbmFsIGxldmVsIChvbmx5IGxvb2tzXG4gICAgICogYXQgdGhlIHJlZ2lvbmFsIGRpbWVuc2lvbiBmb3IgdGhlIHRhcmdldHMsIG5vdCBwZXIgQVopXG4gICAgICogQHBhcmFtIHByb3BzICBUaGUgcmVxdWVzdCBwcm9wc1xuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRSZWdpb25hbExhdGVuY3lNZXRyaWMoXG4gICAgICAgIHByb3BzOiBSZWdpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU1ldHJpY1Byb3BzXG4gICAgKTogSU1ldHJpYyB7XG4gICAgICAgIHJldHVybiBwcm9wcy5hbGIubWV0cmljcy50YXJnZXRSZXNwb25zZVRpbWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChwcm9wcy5hbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBBd3MuUkVHSU9OLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBwcm9wcy5zdGF0aXN0aWMsXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuU0VDT05EU1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGZhdWx0cyBmb3IgYWxsIEFMQnMgY29tYmluZWQgcGVyIEFaXG4gICAgICogQHBhcmFtIGFsYnMgVGhlIEFMQnMgdG8gYWdncmVnYXRlXG4gICAgICogQHBhcmFtIHBlcmlvZCBUaGUgcGVyaW9kIG9mIHRpbWUgdG8gY2FsY3VsYXRlIHRoZSBtZXRyaWNzXG4gICAgICogQHBhcmFtIGF6TWFwcGVyIFRoZSBBWiBtYXBwZXIgZnVuY3Rpb24gc28gdGhlIG1ldHJpY3MgYXJlIGNvcnJlY3RseSBsYWJlbGVkIHdpdGggdGhlaXIgQVogSURcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VG90YWxBbGJGYXVsdENvdW50UGVyWm9uZShcbiAgICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICAgICAgcHJlZml4Pzogc3RyaW5nXG4gICAgKSA6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfVxuICAgIHtcbiAgICAgIGxldCBmYXVsdHNQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgIGxldCBtZXRyaWNzUGVyQVo6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljW119ID0ge307XG4gICAgICBsZXQga2V5cHJlZml4OiBzdHJpbmcgPSBwcmVmaXggPyBwcmVmaXggOiBNZXRyaWNzSGVscGVyLm5leHRDaGFyKCk7XG4gIFxuICAgICAgYWxicy5mb3JFYWNoKChhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcikgPT4ge1xuICBcbiAgICAgICAgYWxiLnZwYyEuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IGF6TGV0dGVyID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkID0gYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICAgICAgaWYgKCEoYXpMZXR0ZXIgaW4gbWV0cmljc1BlckFaKSkge1xuICAgICAgICAgICAgbWV0cmljc1BlckFaW2F6TGV0dGVyXSA9IFtdO1xuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgLy8gNXh4IHJlc3BvbnNlcyBmcm9tIHRhcmdldHNcbiAgICAgICAgICBsZXQgdGFyZ2V0NXh4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfNVhYX0NPVU5ULFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgICAvLyA1eHggcmVzcG9uc2VzIGZyb20gRUxCXG4gICAgICAgICAgbGV0IGVsYjV4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgICAgSHR0cENvZGVFbGIuRUxCXzVYWF9DT1VOVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgXG4gICAgICAgICAgbGV0IHVzaW5nTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBlbGI1eHg7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSB0YXJnZXQ1eHg7XG4gIFxuICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBmYXVsdHMgcGVyIHpvbmUgZm9yIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0ucHVzaChuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogYEZJTEwoJHtrZXlwcmVmaXh9MSwgMCkgKyBGSUxMKCR7a2V5cHJlZml4fTIsIDApYCxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkXG4gICAgICAgICAgfSkpO1xuICBcbiAgICAgICAgICBrZXlwcmVmaXggPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKGtleXByZWZpeCk7XG4gICAgICAgIH0pOyAgIFxuICAgICAgfSk7XG4gIFxuICAgICAgLy8gV2UgY2FuIGhhdmUgbXVsdGlwbGUgbG9hZCBiYWxhbmNlcnMgcGVyIHpvbmUsIHNvIGFkZCB0aGVpciBmYXVsdCBjb3VudFxuICAgICAgLy8gbWV0cmljcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgaWYgKG1ldHJpY3NQZXJBWlthekxldHRlcl0ubGVuZ3RoID4gMSkge1xuICBcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmZvckVhY2goKG1ldHJpYzogSU1ldHJpYywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgICBmYXVsdHNQZXJab25lW2F6TGV0dGVyXSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBmYXVsdHNQZXJab25lW2F6TGV0dGVyXSA9IG1ldHJpY3NQZXJBWlthekxldHRlcl1bMF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZhdWx0c1BlclpvbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIGZhdWx0cyBmb3IgYWxsIEFMQnMgY29tYmluZWQgcGVyIEFaXG4gICAgICogQHBhcmFtIGFsYnMgVGhlIEFMQnMgdG8gYWdncmVnYXRlXG4gICAgICogQHBhcmFtIHBlcmlvZCBUaGUgcGVyaW9kIG9mIHRpbWUgdG8gY2FsY3VsYXRlIHRoZSBtZXRyaWNzXG4gICAgICogQHBhcmFtIGF6TWFwcGVyIFRoZSBBWiBtYXBwZXIgZnVuY3Rpb24gc28gdGhlIG1ldHJpY3MgYXJlIGNvcnJlY3RseSBsYWJlbGVkIHdpdGggdGhlaXIgQVogSURcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0VG90YWxBbGJTdWNjZXNzQ291bnRQZXJab25lKFxuICAgICAgYWxiczogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyW10sXG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICAgICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXJcbiAgICApIDoge1trZXk6IHN0cmluZ106IElNZXRyaWN9XG4gICAge1xuICAgICAgbGV0IHN1Y2Nlc3NQZXJab25lOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgIGxldCBtZXRyaWNzUGVyQVo6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljW119ID0ge307XG4gICAgICBsZXQga2V5cHJlZml4OiBzdHJpbmcgPSBNZXRyaWNzSGVscGVyLm5leHRDaGFyKCk7XG4gIFxuICAgICAgYWxicy5mb3JFYWNoKChhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcikgPT4ge1xuICBcbiAgICAgICAgYWxiLnZwYyEuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IGF6TGV0dGVyID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkID0gYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICAgICAgaWYgKCEoYXpMZXR0ZXIgaW4gbWV0cmljc1BlckFaKSkge1xuICAgICAgICAgICAgbWV0cmljc1BlckFaW2F6TGV0dGVyXSA9IFtdO1xuICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgLy8gMnh4IHJlc3BvbnNlcyBmcm9tIHRhcmdldHNcbiAgICAgICAgICBsZXQgdGFyZ2V0Mnh4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfMlhYX0NPVU5ULFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gM3h4IHJlc3BvbnNlcyBmcm9tIHRhcmdldHNcbiAgICAgICAgICBsZXQgdGFyZ2V0M3h4OiBJTWV0cmljID0gYWxiLm1ldHJpY3MuaHR0cENvZGVUYXJnZXQoXG4gICAgICAgICAgICBIdHRwQ29kZVRhcmdldC5UQVJHRVRfM1hYX0NPVU5ULFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICBcbiAgICAgICAgICAvLyAzeHggcmVzcG9uc2VzIGZyb20gRUxCXG4gICAgICAgICAgbGV0IGVsYjN4eDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLmh0dHBDb2RlRWxiKFxuICAgICAgICAgICAgSHR0cENvZGVFbGIuRUxCXzNYWF9DT1VOVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgXG4gICAgICAgICAgbGV0IHVzaW5nTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBlbGIzeHg7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSB0YXJnZXQyeHg7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0zYF0gPSB0YXJnZXQzeHg7XG4gIFxuICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHRvdGFsIG51bWJlciBvZiBmYXVsdHMgcGVyIHpvbmUgZm9yIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgICAgICAgIG1ldHJpY3NQZXJBWlthekxldHRlcl0ucHVzaChuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogYEZJTEwoJHtrZXlwcmVmaXh9MSwgMCkgKyBGSUxMKCR7a2V5cHJlZml4fTIsIDApICsgRklMTCgke2tleXByZWZpeH0zLCAwKWAsXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZFxuICAgICAgICAgIH0pKTtcbiAgXG4gICAgICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgICAgICB9KTsgICBcbiAgICAgIH0pO1xuICBcbiAgICAgIC8vIFdlIGNhbiBoYXZlIG11bHRpcGxlIGxvYWQgYmFsYW5jZXJzIHBlciB6b25lLCBzbyBhZGQgdGhlaXIgc3VjY2VzcyBjb3VudFxuICAgICAgLy8gbWV0cmljcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG5cbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmZvckVhY2goKG1ldHJpYzogSU1ldHJpYywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICAgIH0pO1xuICAgICAgICBcbiAgICAgICAgICBzdWNjZXNzUGVyWm9uZVthekxldHRlcl0gPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKFwiK1wiKSxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3VjY2Vzc1BlclpvbmVbYXpMZXR0ZXJdID0gbWV0cmljc1BlckFaW2F6TGV0dGVyXVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgXG4gICAgICByZXR1cm4gc3VjY2Vzc1BlclpvbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgdG90YWwgbnVtYmVyIG9mIHByb2Nlc3NlZCBieXRlcyBmb3IgYWxsIEFMQnMgaW4gZWFjaCB6b25lXG4gICAgICogQHBhcmFtIGFsYnMgXG4gICAgICogQHBhcmFtIHBlcmlvZCBcbiAgICAgKiBAcGFyYW0gYXpNYXBwZXIgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgc3RhdGljIGdldFRvdGFsQWxiUmVxdWVzdHNQZXJab25lKFxuICAgICAgYWxiczogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyW10sXG4gICAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICAgICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICAgICBwcmVmaXg/OiBzdHJpbmdcbiAgICApIDoge1trZXk6IHN0cmluZ106IElNZXRyaWN9XG4gICAge1xuICAgICAgbGV0IHJlcXVlc3RzUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICBsZXQgbWV0cmljc1BlckFaOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY1tdfSA9IHt9O1xuICAgICAgbGV0IGtleXByZWZpeDogc3RyaW5nID0gcHJlZml4ID8gcHJlZml4IDogTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuXG4gICAgICBhbGJzLmZvckVhY2goKGFsYjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKSA9PiB7XG4gIFxuICAgICAgICBhbGIudnBjIS5hdmFpbGFiaWxpdHlab25lcy5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBsZXQgYXpMZXR0ZXIgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgICBpZiAoIShhekxldHRlciBpbiBtZXRyaWNzUGVyQVopKSB7XG4gICAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdID0gW107XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBsZXQgcmVxdWVzdENvdW50OiBJTWV0cmljID0gYWxiLm1ldHJpY3MucmVxdWVzdENvdW50KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpXG4gICAgICAgICAgICAgICAgICAubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLlNVTSxcbiAgICAgICAgICAgICAgdW5pdDogVW5pdC5DT1VOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLnB1c2gocmVxdWVzdENvdW50KTtcbiAgICAgICAgfSk7ICAgXG4gICAgICB9KTtcbiAgXG4gICAgICAvLyBXZSBjYW4gaGF2ZSBtdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBwZXIgem9uZSwgc28gYWRkIHRoZWlyIHByb2Nlc3NlZCBieXRlcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgaWYgKG1ldHJpY3NQZXJBWlthekxldHRlcl0ubGVuZ3RoID4gMSkge1xuICBcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICBcbiAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdLmZvckVhY2goKG1ldHJpYzogSU1ldHJpYywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuICAgICAgICBcbiAgICAgICAgICByZXF1ZXN0c1BlclpvbmVbYXpMZXR0ZXJdID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IE9iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbihcIitcIiksXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJlcXVlc3RzUGVyWm9uZVthekxldHRlcl0gPSBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdWzBdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgXG4gICAgICByZXR1cm4gcmVxdWVzdHNQZXJab25lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBwcm9jZXNzZWQgYnl0ZXMgZm9yIGFsbCBBTEJzIGluIGVhY2ggem9uZVxuICAgICAqIEBwYXJhbSBhbGJzIFxuICAgICAqIEBwYXJhbSBwZXJpb2QgXG4gICAgICogQHBhcmFtIGF6TWFwcGVyIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUb3RhbEFsYlByb2Nlc3NlZEJ5dGVzUGVyWm9uZShcbiAgICAgIGFsYnM6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcltdLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyXG4gICAgKSA6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfVxuICAgIHtcbiAgICAgIGxldCBwcm9jZXNzZWRCeXRlc1BlclpvbmU6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgICAgbGV0IG1ldHJpY3NQZXJBWjoge1trZXk6IHN0cmluZ106IElNZXRyaWNbXX0gPSB7fTtcbiAgICAgIGxldCBrZXlwcmVmaXg6IHN0cmluZyA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoKTtcbiAgXG4gICAgICBhbGJzLmZvckVhY2goKGFsYjogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKSA9PiB7XG4gIFxuICAgICAgICBhbGIudnBjIS5hdmFpbGFiaWxpdHlab25lcy5mb3JFYWNoKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBsZXQgYXpMZXR0ZXIgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgICBpZiAoIShhekxldHRlciBpbiBtZXRyaWNzUGVyQVopKSB7XG4gICAgICAgICAgICBtZXRyaWNzUGVyQVpbYXpMZXR0ZXJdID0gW107XG4gICAgICAgICAgfVxuICBcbiAgICAgICAgICBsZXQgcHJvY2Vzc2VkQnl0ZXM6IElNZXRyaWMgPSBhbGIubWV0cmljcy5wcm9jZXNzZWRCeXRlcyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgXG4gICAgICAgICAgbWV0cmljc1BlckFaW2F6TGV0dGVyXS5wdXNoKHByb2Nlc3NlZEJ5dGVzKTtcbiAgICAgICAgfSk7ICAgXG4gICAgICB9KTtcbiAgXG4gICAgICAvLyBXZSBjYW4gaGF2ZSBtdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBwZXIgem9uZSwgc28gYWRkIHRoZWlyIHByb2Nlc3NlZCBieXRlcyB0b2dldGhlclxuICAgICAgT2JqZWN0LmtleXMobWV0cmljc1BlckFaKS5mb3JFYWNoKChhekxldHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQgPSBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgICAgaWYgKG1ldHJpY3NQZXJBWlthekxldHRlcl0ubGVuZ3RoID4gMSkge1xuXG4gICAgICAgICAgbGV0IHVzaW5nTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICAgICAgXG4gICAgICAgICAgbWV0cmljc1BlckFaW2F6TGV0dGVyXS5mb3JFYWNoKChtZXRyaWM6IElNZXRyaWMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9JHtpbmRleH1gXSA9IG1ldHJpYztcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGtleXByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5cHJlZml4KTtcbiAgICAgICAgXG4gICAgICAgICAgcHJvY2Vzc2VkQnl0ZXNQZXJab25lW2F6TGV0dGVyXSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oXCIrXCIpLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBwcm9jZXNzZWRCeXRlc1BlclpvbmVbYXpMZXR0ZXJdID0gbWV0cmljc1BlckFaW2F6TGV0dGVyXVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIFxuICAgICAgcmV0dXJuIHByb2Nlc3NlZEJ5dGVzUGVyWm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIGEgd2VpZ2h0ZWQgYXBwcm94aW1hdGlvbiBvZiB0aGUgbGF0ZW5jeSBhdCB0aGUgcHJvdmlkZWQgc3RhdGlzdGljIGZvciBhbGwgQUxCc1xuICAgICAqIGluIGVhY2ggem9uZS5cbiAgICAgKiBAcGFyYW0gYWxicyBcbiAgICAgKiBAcGFyYW0gc3RhdGlzdGljIFxuICAgICAqIEBwYXJhbSBwZXJpb2QgXG4gICAgICogQHBhcmFtIGF6TWFwcGVyIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUb3RhbEFsYkxhdGVuY3lQZXJab25lKFxuICAgICAgYWxiczogSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyW10sXG4gICAgICBzdGF0aXN0aWM6IHN0cmluZyxcbiAgICAgIHBlcmlvZDogRHVyYXRpb24sXG4gICAgICBhek1hcHBlcjogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlclxuICAgICkgOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY31cbiAgICB7XG4gICAgICBsZXQgbGF0ZW5jeVBlclpvbmU6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgICAgbGV0IGtleXByZWZpeDogc3RyaW5nID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuXG4gICAgICBsZXQgcmVxdWVzdENvdW50c1BlckFaOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY1tdfSA9IHt9O1xuXG4gICAgICBsZXQgd2VpZ2h0ZWRMYXRlbmN5UGVyQVo6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljW119ID0ge307XG4gIFxuICAgICAgYWxicy5mb3JFYWNoKChhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcikgPT4ge1xuICBcbiAgICAgICAgYWxiLnZwYyEuYXZhaWxhYmlsaXR5Wm9uZXMuZm9yRWFjaCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG5cbiAgICAgICAgICBsZXQgYXpMZXR0ZXIgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgICAgaWYgKCEoYXpMZXR0ZXIgaW4gd2VpZ2h0ZWRMYXRlbmN5UGVyQVopKSB7XG4gICAgICAgICAgICB3ZWlnaHRlZExhdGVuY3lQZXJBWlthekxldHRlcl0gPSBbXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIShhekxldHRlciBpbiByZXF1ZXN0Q291bnRzUGVyQVopKSB7XG4gICAgICAgICAgICByZXF1ZXN0Q291bnRzUGVyQVpbYXpMZXR0ZXJdID0gW107XG4gICAgICAgICAgfVxuICAgXG4gICAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcbiAgXG4gICAgICAgICAgbGV0IGxhdGVuY3k6IElNZXRyaWMgPSBhbGIubWV0cmljcy50YXJnZXRSZXNwb25zZVRpbWUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6IHtcbiAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcilcbiAgICAgICAgICAgICAgICAgIC5sb2FkQmFsYW5jZXJGdWxsTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgICAgIHN0YXRpc3RpYzogc3RhdGlzdGljLFxuICAgICAgICAgICAgICB1bml0OiBVbml0Lk1JTExJU0VDT05EU1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgbGV0IHJlcXVlc3RDb3VudDogSU1ldHJpYyA9IGFsYi5tZXRyaWNzLnJlcXVlc3RDb3VudChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGltZW5zaW9uc01hcDoge1xuICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgICAgICAgTG9hZEJhbGFuY2VyOiAoYWxiIGFzIElMb2FkQmFsYW5jZXJWMiBhcyBCYXNlTG9hZEJhbGFuY2VyKVxuICAgICAgICAgICAgICAgICAgLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgICAgc3RhdGlzdGljOiBTdGF0cy5TVU0sXG4gICAgICAgICAgICAgIHVuaXQ6IFVuaXQuQ09VTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgICAgbGV0IHVzaW5nTWV0cmljczoge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0ge307XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBsYXRlbmN5O1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlwcmVmaXh9MmBdID0gcmVxdWVzdENvdW50O1xuXG4gICAgICAgICAgbGV0IHdlaWdodGVkTGF0ZW5jeTogSU1ldHJpYyA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBgJHtrZXlwcmVmaXh9MSoke2tleXByZWZpeH0yYCxcbiAgICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgICAgcGVyaW9kOiBwZXJpb2QsXG4gICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB3ZWlnaHRlZExhdGVuY3lQZXJBWlthekxldHRlcl0ucHVzaCh3ZWlnaHRlZExhdGVuY3kpO1xuXG4gICAgICAgICAgcmVxdWVzdENvdW50c1BlckFaW2F6TGV0dGVyXS5wdXNoKHJlcXVlc3RDb3VudCk7XG4gIFxuICAgICAgICAgIGtleXByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5cHJlZml4KTtcbiAgICAgICAgfSk7ICAgXG4gICAgICB9KTtcbiAgXG4gICAgICAvLyBXZSBjYW4gaGF2ZSBtdWx0aXBsZSBsb2FkIGJhbGFuY2VycyBwZXIgem9uZSwgY29tYmluZSB0aGVpciBsYXRlbmN5IHBlciB6b25lXG4gICAgICAvLyB0byBnZXQgYW4gYXZlcmFnZSBsYXRlbmN5IHBlcmNlbnRpbGUgbGF0ZW5jeSwgbGlrZSBhdmVyYWdlIHA5OVxuICAgICAgT2JqZWN0LmtleXMod2VpZ2h0ZWRMYXRlbmN5UGVyQVopLmZvckVhY2goKGF6TGV0dGVyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZCA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcbiAgXG4gICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuXG4gICAgICAgIHdlaWdodGVkTGF0ZW5jeVBlckFaW2F6TGV0dGVyXS5mb3JFYWNoKChtZXRyaWM6IElNZXRyaWMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7a2V5cHJlZml4fSR7aW5kZXh9YF0gPSBtZXRyaWM7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBudW1lcmF0b3IgPSBcIihcIiArIE9iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbihcIitcIikgKyBcIilcIjtcbiAgICAgICAgbGV0IGluZGV4ID0gT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5sZW5ndGg7XG5cbiAgICAgICAga2V5cHJlZml4ID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcihrZXlwcmVmaXgpO1xuXG4gICAgICAgIHJlcXVlc3RDb3VudHNQZXJBWlthekxldHRlcl0uZm9yRWFjaCgobWV0cmljOiBJTWV0cmljLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0ke2luZGV4fWBdID0gbWV0cmljO1xuICAgICAgICB9KTsgXG5cbiAgICAgICAgbGV0IGRlbm9taW5hdG9yOiBzdHJpbmcgPSBcIihcIiArIE9iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuc2xpY2UoaW5kZXgpLmpvaW4oXCIrXCIpICsgXCIpXCI7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIHdhbnQgdG8gY2FsY3VsYXRlIHRoaXMgZm9ybXVsYVxuICAgICAgICAgKiBcbiAgICAgICAgICogKHA5OV8xICogcmVxdWVzdHNfMSArIHA5OV8yICogcmVxdWVzdHNfMiArIHA5OV8zICogcmVxdWVzdHNfMykgLyAocmVxdWVzdHNfMSArIHJlcXVlc3RzXzIgKyByZXF1ZXN0c18zKVxuICAgICAgICAgKiBcbiAgICAgICAgICogVGhpcyB3aWxsIHByb3ZpZGUgYSByZXF1ZXN0IHdlaWdodGVkIGFwcHJveGltYXRpb24gb2YgdGhlIHA5OVxuICAgICAgICAgKiBsYXRlbmN5IHBlciBBWlxuICAgICAgICAgKi9cbiAgXG4gICAgICAgIGxhdGVuY3lQZXJab25lW2F6TGV0dGVyXSA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgZXhwcmVzc2lvbjogbnVtZXJhdG9yICsgXCIvXCIgKyBkZW5vbWluYXRvcixcbiAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHBlcmlvZDogcGVyaW9kXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGtleXByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5cHJlZml4KTtcbiAgICAgIH0pO1xuICBcbiAgICAgIHJldHVybiBsYXRlbmN5UGVyWm9uZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBmYXVsdCByYXRlIHBlciBBWlxuICAgICAqIEBwYXJhbSByZXF1ZXN0c1BlclpvbmUgXG4gICAgICogQHBhcmFtIGZhdWx0c1BlclpvbmUgXG4gICAgICogQHBhcmFtIHBlcmlvZCBcbiAgICAgKiBAcGFyYW0gYXpNYXBwZXIgXG4gICAgICogQHJldHVybnMgVGhlIGZhdWx0IHJhdGUgcGVyIEFaIHVzaW5nIHRoZSBBWiBuYW1lIGxldHRlciBhcyB0aGUga2V5IGZvciBlYWNoIG1ldHJpY1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUb3RhbEFsYkZhdWx0UmF0ZVBlclpvbmUoXG4gICAgICBhbGJzOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJbXSxcbiAgICAgIHBlcmlvZDogRHVyYXRpb24sXG4gICAgICBhek1hcHBlcjogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcixcbiAgICApIDoge1trZXk6IHN0cmluZ106IElNZXRyaWN9IHtcblxuICAgICAgbGV0IGZhdWx0UmF0ZU1ldHJpY3M6IHtba2V5OiBzdHJpbmddOiBJTWV0cmljfSA9IHt9O1xuICAgICAgbGV0IHJlcXVlc3RzUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0gdGhpcy5nZXRUb3RhbEFsYlJlcXVlc3RzUGVyWm9uZShhbGJzLCBwZXJpb2QsIGF6TWFwcGVyLCBcImFcIik7XG4gICAgICBsZXQgZmF1bHRzUGVyWm9uZToge1trZXk6IHN0cmluZ106IElNZXRyaWN9ID0gdGhpcy5nZXRUb3RhbEFsYkZhdWx0Q291bnRQZXJab25lKGFsYnMsIHBlcmlvZCwgYXpNYXBwZXIsIFwiZVwiKTtcblxuICAgICAgT2JqZWN0LmtleXMocmVxdWVzdHNQZXJab25lKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIGZhdWx0c1BlclpvbmUpIHtcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7W2tleTogc3RyaW5nXTogSU1ldHJpY30gPSB7fTtcbiAgICAgICAgICBsZXQga2V5cHJlZml4ID0gJ3onICsga2V5O1xuICAgICAgICAgXG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0xYF0gPSBmYXVsdHNQZXJab25lW2tleV07XG4gICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleXByZWZpeH0yYF0gPSByZXF1ZXN0c1BlclpvbmVba2V5XTtcblxuICAgICAgICAgIGxldCB6b25hbEZhdWx0UmF0ZTogSU1ldHJpYyA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBgKCR7a2V5cHJlZml4fTEvJHtrZXlwcmVmaXh9MikgKiAxMDBgLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgIGxhYmVsOiBhek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihrZXkpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBmYXVsdFJhdGVNZXRyaWNzW2tleV0gPSB6b25hbEZhdWx0UmF0ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgem9uZSBcIiArIGtleSArIFwiIGlzIG5vdCBwcmVzZW50IGluIHRoZSBmYXVsdHNQZXJab25lIHBhcmFtZXRlci5cIik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBPYmplY3Qua2V5cyhmYXVsdHNQZXJab25lKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIShrZXkgaW4gcmVxdWVzdHNQZXJab25lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSB6b25lIFwiICsga2V5ICsgXCIgaXMgbm90IHByZXNlbnQgaW4gdGhlIHJlcXVlc3RzUGVyWm9uZSBwYXJhbWV0ZXIuXCIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGZhdWx0UmF0ZU1ldHJpY3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHpvbmFsIHByb2Nlc3NlZCBieXRlcyBtZXRyaWMgZm9yIHRoZSBzcGVjaWZpZWQgbG9hZCBiYWxhbmNlclxuICAgICAqIEBwYXJhbSBsb2FkQmFsYW5jZXJGdWxsTmFtZVxuICAgICAqIEBwYXJhbSBhdmFpbGFiaWxpdHlab25lTmFtZVxuICAgICAqIEBwYXJhbSBwZXJpb2RcbiAgICAgKiBAcmV0dXJucyBJTWV0cmljXG4gICAgICovXG4gICAgc3RhdGljIGdldFBlckFaUHJvY2Vzc2VkQnl0ZXNNZXRyaWMoXG4gICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZyxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nLFxuICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgIGFkZExvYWRCYWxhbmNlckFyblRvTGFiZWw/OiBib29sZWFuXG4gICAgKTogSU1ldHJpYyB7XG4gICAgICByZXR1cm4gYWxiLm1ldHJpY3MucHJvY2Vzc2VkQnl0ZXMoe1xuICAgICAgICAgIHBlcmlvZDogcGVyaW9kLFxuICAgICAgICAgIGRpbWVuc2lvbnNNYXA6e1xuICAgICAgICAgICAgICBMb2FkQmFsYW5jZXI6IChhbGIgYXMgSUxvYWRCYWxhbmNlclYyIGFzIEJhc2VMb2FkQmFsYW5jZXIpLmxvYWRCYWxhbmNlckZ1bGxOYW1lLFxuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArIChhZGRMb2FkQmFsYW5jZXJBcm5Ub0xhYmVsID8gXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuIDogXCJcIilcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSB6b25hbCBwcm9jZXNzZWQgYnl0ZXMgbWV0cmljIGZvciB0aGUgc3BlY2lmaWVkIGxvYWQgYmFsYW5jZXJcbiAgICAgKiBAcGFyYW0gbG9hZEJhbGFuY2VyRnVsbE5hbWVcbiAgICAgKiBAcGFyYW0gYXZhaWxhYmlsaXR5Wm9uZU5hbWVcbiAgICAgKiBAcGFyYW0gcGVyaW9kXG4gICAgICogQHJldHVybnMgSU1ldHJpY1xuICAgICAqL1xuICAgIHN0YXRpYyBnZXRSZWdpb25hbFByb2Nlc3NlZEJ5dGVzTWV0cmljKFxuICAgICAgICBhbGI6IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgICAgICAgcGVyaW9kOiBEdXJhdGlvbixcbiAgICAgICAgYWRkTG9hZEJhbGFuY2VyQXJuPzogYm9vbGVhblxuICAgICAgKTogSU1ldHJpYyB7XG4gICAgICAgIHJldHVybiBhbGIubWV0cmljcy5wcm9jZXNzZWRCeXRlcyh7XG4gICAgICAgICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgICAgICAgIGRpbWVuc2lvbnNNYXA6e1xuICAgICAgICAgICAgICAgIExvYWRCYWxhbmNlcjogKGFsYiBhcyBJTG9hZEJhbGFuY2VyVjIgYXMgQmFzZUxvYWRCYWxhbmNlcikubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6IEF3cy5SRUdJT04gKyAoYWRkTG9hZEJhbGFuY2VyQXJuID8gXCItXCIgKyBhbGIubG9hZEJhbGFuY2VyQXJuIDogXCJcIilcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -15,5 +15,5 @@ class CanaryMetrics {
15
15
  }
16
16
  exports.CanaryMetrics = CanaryMetrics;
17
17
  _a = JSII_RTTI_SYMBOL_1;
18
- CanaryMetrics[_a] = { fqn: "@cdklabs/multi-az-observability.CanaryMetrics", version: "0.0.1-alpha.12" };
18
+ CanaryMetrics[_a] = { fqn: "@cdklabs/multi-az-observability.CanaryMetrics", version: "0.0.1-alpha.13" };
19
19
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5TWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9DYW5hcnlNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUE7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFXeEIsWUFBWSxLQUF3QjtRQUNsQyxJQUFJLENBQUMsK0JBQStCO1lBQ2xDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQztRQUN4QyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLDBCQUEwQixDQUFDO0lBQ3JFLENBQUM7O0FBZkgsc0NBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUNhbmFyeU1ldHJpY3MgfSBmcm9tICcuL0lDYW5hcnlNZXRyaWNzJztcbmltcG9ydCB7IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9JT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5pbXBvcnQgeyBDYW5hcnlNZXRyaWNQcm9wcyB9IGZyb20gJy4vcHJvcHMvQ2FuYXJ5TWV0cmljUHJvcHMnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgbWV0cmljcyBmb3IgYSBjYW5hcnkgdGVzdGluZyBhIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNsYXNzIENhbmFyeU1ldHJpY3MgaW1wbGVtZW50cyBJQ2FuYXJ5TWV0cmljcyB7XG4gIC8qKlxuICAgKiBUaGUgY2FuYXJ5IGF2YWlsYWJpbGl0eSBtZXRyaWMgZGV0YWlsc1xuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5hcnkgbGF0ZW5jeSBtZXRyaWMgZGV0YWlsc1xuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDYW5hcnlNZXRyaWNQcm9wcykge1xuICAgIHRoaXMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyA9XG4gICAgICBwcm9wcy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzO1xuICAgIHRoaXMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBwcm9wcy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscztcbiAgfVxufVxuIl19
@@ -19,5 +19,5 @@ class CanaryTestMetricsOverride {
19
19
  }
20
20
  exports.CanaryTestMetricsOverride = CanaryTestMetricsOverride;
21
21
  _a = JSII_RTTI_SYMBOL_1;
22
- CanaryTestMetricsOverride[_a] = { fqn: "@cdklabs/multi-az-observability.CanaryTestMetricsOverride", version: "0.0.1-alpha.12" };
22
+ CanaryTestMetricsOverride[_a] = { fqn: "@cdklabs/multi-az-observability.CanaryTestMetricsOverride", version: "0.0.1-alpha.13" };
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9DYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUE7OztHQUdHO0FBQ0gsTUFBYSx5QkFBeUI7SUFvQ3BDLFlBQVksS0FBcUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDakQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDO0lBQ3ZELENBQUM7O0FBM0NILDhEQTRDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSUNhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUgfSBmcm9tICcuL0lDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlJztcbmltcG9ydCB7IENhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGVQcm9wcyB9IGZyb20gJy4vcHJvcHMvQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZVByb3BzJztcblxuLyoqXG4gKiBQcm92aWRlcyBvdmVycmlkZXMgZm9yIHRoZSBkZWZhdWx0IG1ldHJpYyBzZXR0aW5nc1xuICogdXNlZCBmb3IgdGhlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBjYW5hcnkgdGVzdHNcbiAqL1xuZXhwb3J0IGNsYXNzIENhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUgaW1wbGVtZW50cyBJQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSB7XG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljIHVzZWQgZm9yIGFsYXJtcywgZm9yIGF2YWlsYWJpbGl0eSBtZXRyaWNzIHRoaXMgc2hvdWxkXG4gICAqIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgY291bGQgc29tZXRoaW5nIGxpa2UgXCJwOTlcIiBvciBcInA5OS45XCJcbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtU3RhdGlzdGljPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyaW9kIGZvciB0aGUgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWx0aXkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBldmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXRhcG9pbnRzIHRvIGFsYXJtIG9uIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWxpdHkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBkYXRhcG9pbnRzVG9BbGFybT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRocmVzaG9sZCBmb3IgYWxhcm1zIGFzc29jaWF0ZWQgd2l0aCBzdWNjZXNzIG1ldHJpY3MsIGZvciBleGFtcGxlIGlmIG1lYXN1cmluZ1xuICAgKiBzdWNjZXNzIHJhdGUsIHRoZSB0aHJlc2hvbGQgbWF5IGJlIDk5LCBtZWFuaW5nIHlvdSB3b3VsZCB3YW50IGFuIGFsYXJtIHRoYXQgdHJpZ2dlcnNcbiAgICogaWYgc3VjY2VzcyBkcm9wcyBiZWxvdyA5OSUuXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIGFsYXJtcyBhc3NvY2lhdGVkIHdpdGggZmF1bHQgbWV0cmljcywgZm9yIGV4YW1wbGUgaWYgbWVhc3VyaW5nXG4gICAqIGZhdWx0IHJhdGUsIHRoZSB0aHJlc2hvbGQgbWF5IGJlIDEsIG1lYW5pbmcgeW91IHdvdWxkIHdhbnQgYW4gYWxhcm0gdGhhdCB0cmlnZ2Vyc1xuICAgKiBpZiB0aGUgZmF1bHQgcmF0ZSBnb2VzIGFib3ZlIDElLlxuICAgKi9cbiAgcmVhZG9ubHkgZmF1bHRBbGFybVRocmVzaG9sZD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZVByb3BzKSB7XG4gICAgdGhpcy5hbGFybVN0YXRpc3RpYyA9IHByb3BzLmFsYXJtU3RhdGlzdGljO1xuICAgIHRoaXMucGVyaW9kID0gcHJvcHMucGVyaW9kO1xuICAgIHRoaXMuZXZhbHVhdGlvblBlcmlvZHMgPSBwcm9wcy5ldmFsdWF0aW9uUGVyaW9kcztcbiAgICB0aGlzLmRhdGFwb2ludHNUb0FsYXJtID0gcHJvcHMuZGF0YXBvaW50c1RvQWxhcm07XG4gICAgdGhpcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQgPSBwcm9wcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQ7XG4gICAgdGhpcy5mYXVsdEFsYXJtVGhyZXNob2xkID0gcHJvcHMuZmF1bHRBbGFybVRocmVzaG9sZDtcbiAgfVxufVxuIl19
@@ -19,5 +19,5 @@ class ContributorInsightRuleDetails {
19
19
  }
20
20
  exports.ContributorInsightRuleDetails = ContributorInsightRuleDetails;
21
21
  _a = JSII_RTTI_SYMBOL_1;
22
- ContributorInsightRuleDetails[_a] = { fqn: "@cdklabs/multi-az-observability.ContributorInsightRuleDetails", version: "0.0.1-alpha.12" };
22
+ ContributorInsightRuleDetails[_a] = { fqn: "@cdklabs/multi-az-observability.ContributorInsightRuleDetails", version: "0.0.1-alpha.13" };
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFNQTs7O0dBR0c7QUFDSCxNQUFhLDZCQUE2QjtJQXdDeEMsWUFBWSxLQUF5QztRQUNuRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLDBCQUEwQixDQUFDO1FBQ25FLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUN6RCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDO0lBQ3pFLENBQUM7O0FBL0NILHNFQWdEQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IElMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyB9IGZyb20gJy4vSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmltcG9ydCB7IENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3Byb3BzL0NvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzUHJvcHMnO1xuXG4vKipcbiAqIFRoZSBjb250cmlidXRvciBpbnNpZ2h0IHJ1bGUgZGV0YWlscyBmb3IgY3JlYXRpbmcgYW5cbiAqIGluc2lnaHQgcnVsZVxuICovXG5leHBvcnQgY2xhc3MgQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNcbmltcGxlbWVudHMgSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzIHtcbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXBzIHdoZXJlIENsb3VkV2F0Y2ggbG9ncyBmb3IgdGhlIG9wZXJhdGlvbiBhcmUgbG9jYXRlZC4gSWZcbiAgICogdGhpcyBpcyBub3QgcHJvdmlkZWQsIENvbnRyaWJ1dG9yIEluc2lnaHQgcnVsZXMgY2Fubm90IGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cHM6IElMb2dHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbiB0aGUgbG9nIGZpbGVzIHRvIHRoZSBmaWVsZCB0aGF0IGluZGljYXRlcyB0aGUgbGF0ZW5jeVxuICAgKiBmb3IgdGhlIHJlc3BvbnNlLiBUaGlzIGNvdWxkIGVpdGhlciBiZSBzdWNjZXNzIGxhdGVuY3kgb3IgZmF1bHRcbiAgICogbGF0ZW5jeSBkZXBlbmRpbmcgb24gdGhlIGFsYXJtcyBhbmQgcnVsZXMgeW91IGFyZSBjcmVhdGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHN1Y2Nlc3NMYXRlbmN5TWV0cmljSnNvblBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggaW4gdGhlIGxvZyBmaWxlcyB0byB0aGUgZmllbGQgdGhhdCBpZGVudGlmaWVzIHRoZSBvcGVyYXRpb25cbiAgICogdGhlIGxvZyBmaWxlIGlzIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWVKc29uUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBpbiB0aGUgbG9nIGZpbGVzIHRvIHRoZSBmaWVsZCB0aGF0IGlkZW50aWZpZXMgaWYgdGhlIHJlc3BvbnNlXG4gICAqIHJlc3VsdGVkIGluIGEgZmF1bHQsIGZvciBleGFtcGxlIHsgXCJGYXVsdFwiIDogMSB9IHdvdWxkIGhhdmUgYSBwYXRoIG9mICQuRmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0TWV0cmljSnNvblBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggaW4gdGhlIGxvZyBmaWxlcyB0byB0aGUgZmllbGQgdGhhdCBpZGVudGlmaWVzIHRoZSBBdmFpbGFiaWxpdHkgWm9uZVxuICAgKiBJZCB0aGF0IHRoZSByZXF1ZXN0IHdhcyBoYW5kbGVkIGluLCBmb3IgZXhhbXBsZSB7IFwiQVotSURcIjogXCJ1c2UxLWF6MVwiIH0gd291bGRcbiAgICogaGF2ZSBhIHBhdGggb2YgJC5BWi1JRFxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZUlkSnNvblBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEpTT04gcGF0aCB0byB0aGUgaW5zdGFuY2UgaWQgZmllbGQgaW4gdGhlIGxvZyBmaWxlcywgb25seSByZXF1aXJlZCBmb3Igc2VydmVyLXNpZGVcbiAgICogcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlSWRKc29uUGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlsc1Byb3BzKSB7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSWRKc29uUGF0aCA9IHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZEpzb25QYXRoO1xuICAgIHRoaXMuZmF1bHRNZXRyaWNKc29uUGF0aCA9IHByb3BzLmZhdWx0TWV0cmljSnNvblBhdGg7XG4gICAgdGhpcy5pbnN0YW5jZUlkSnNvblBhdGggPSBwcm9wcy5pbnN0YW5jZUlkSnNvblBhdGg7XG4gICAgdGhpcy5sb2dHcm91cHMgPSBwcm9wcy5sb2dHcm91cHM7XG4gICAgdGhpcy5vcGVyYXRpb25OYW1lSnNvblBhdGggPSBwcm9wcy5vcGVyYXRpb25OYW1lSnNvblBhdGg7XG4gICAgdGhpcy5zdWNjZXNzTGF0ZW5jeU1ldHJpY0pzb25QYXRoID0gcHJvcHMuc3VjY2Vzc0xhdGVuY3lNZXRyaWNKc29uUGF0aDtcbiAgfVxufVxuIl19
@@ -306,5 +306,5 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
306
306
  }
307
307
  exports.InstrumentedServiceMultiAZObservability = InstrumentedServiceMultiAZObservability;
308
308
  _a = JSII_RTTI_SYMBOL_1;
309
- InstrumentedServiceMultiAZObservability[_a] = { fqn: "@cdklabs/multi-az-observability.InstrumentedServiceMultiAZObservability", version: "0.0.1-alpha.12" };
309
+ InstrumentedServiceMultiAZObservability[_a] = { fqn: "@cdklabs/multi-az-observability.InstrumentedServiceMultiAZObservability", version: "0.0.1-alpha.13" };
310
310
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQW9EO0FBSXBELDJDQUF1QztBQUN2QyxtREFBZ0Q7QUFJaEQsMkNBQXdDO0FBQ3hDLHFFQUFrRTtBQUVsRSwrREFBNEQ7QUFHNUQsdUZBQW9GO0FBQ3BGLG1GQUFnRjtBQUNoRiwrRUFBNEU7QUFDNUUsK0RBQTREO0FBQzVELHVEQUFvRDtBQUVwRCxxSEFBa0g7QUFDbEgsaUhBQThHO0FBQzlHLDRGQUF5RjtBQUN6RixzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFOzs7O0dBSUc7QUFDSCxNQUFhLHVDQUNYLFNBQVEsc0JBQVM7SUFtRGpCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1EO1FBRW5ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxnQkFBd0IsQ0FBQztRQUU3QixJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsUUFBUSxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDeEMsS0FBSyxxREFBeUIsQ0FBQyxXQUFXO29CQUN4QyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLE1BQU07Z0JBQ1IsS0FBSyxxREFBeUIsQ0FBQyxHQUFHO29CQUNoQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7b0JBQ3ZCLE1BQU07Z0JBQ1IsS0FBSyxxREFBeUIsQ0FBQyxHQUFHO29CQUNoQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7b0JBQ3JCLE1BQU07Z0JBQ1IsS0FBSyxxREFBeUIsQ0FBQyxNQUFNO29CQUNuQyxnQkFBZ0IsR0FBRyxH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QUMsQ0FBQyxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixzQkFBc0IsRUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQ0FBaUM7Z0JBQ3RELG9CQUFvQixFQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGtDQUFrQztnQkFDdkQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3hCLENBQ0YsQ0FBQyxTQUFTLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQzs7QUFwZ0JILDBGQXFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiwgTmVzdGVkU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEYXNoYm9hcmQsIElBbGFybSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSUxvZ0dyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDYW5hcnlNZXRyaWNzIH0gZnJvbSAnLi9DYW5hcnlNZXRyaWNzJztcbmltcG9ydCB7IElJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL0lJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4vSU9wZXJhdGlvbic7XG5pbXBvcnQgeyBJT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4vSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSAnLi9PcGVyYXRpb24nO1xuaW1wb3J0IHsgT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4vT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5pbXBvcnQgeyBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyB9IGZyb20gJy4vcHJvcHMvSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMnO1xuaW1wb3J0IHsgTWV0cmljRGltZW5zaW9ucyB9IGZyb20gJy4vcHJvcHMvTWV0cmljRGltZW5zaW9ucyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9JT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSVNlcnZpY2VBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4uL2FsYXJtc2FuZHJ1bGVzL0lTZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9TZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4uL2F6bWFwcGVyL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgQ2FuYXJ5RnVuY3Rpb24gfSBmcm9tICcuLi9jYW5hcmllcy9DYW5hcnlGdW5jdGlvbic7XG5pbXBvcnQgeyBDYW5hcnlUZXN0IH0gZnJvbSAnLi4vY2FuYXJpZXMvQ2FuYXJ5VGVzdCc7XG5pbXBvcnQgeyBBZGRDYW5hcnlUZXN0UHJvcHMgfSBmcm9tICcuLi9jYW5hcmllcy9wcm9wcy9BZGRDYW5hcnlUZXN0UHJvcHMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCB9IGZyb20gJy4uL2Rhc2hib2FyZHMvT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCc7XG5pbXBvcnQgeyBTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCB9IGZyb20gJy4uL2Rhc2hib2FyZHMvU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQnO1xuaW1wb3J0IHsgT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uIH0gZnJvbSAnLi4vb3V0bGllci1kZXRlY3Rpb24vT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuLi91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSc7XG5pbXBvcnQgeyBTdGFja1dpdGhEeW5hbWljU291cmNlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL1N0YWNrV2l0aER5bmFtaWNTb3VyY2UnO1xuXG4vKipcbiAqIEFuIHNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzIGl0cyBvd24gaW5zdHJ1bWVudGF0aW9uIHRvIHJlY29yZFxuICogYXZhaWxhYmlsaXR5IGFuZCBsYXRlbmN5IG1ldHJpY3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGVcbiAqIGFsYXJtcywgcnVsZXMsIGFuZCBkYXNoYm9hcmRzIGZyb21cbiAqL1xuZXhwb3J0IGNsYXNzIEluc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkge1xuICAvKipcbiAgICogS2V5IHJlcHJlc2VudHMgdGhlIG9wZXJhdGlvbiBuYW1lIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHNldFxuICAgKiBvZiB6b25hbCBhbGFybXMgYW5kIHJ1bGVzIGZvciB0aGF0IG9wZXJhdGlvbi4gVGhlIHZhbHVlcyB0aGVtc2VsdmVzXG4gICAqIGFyZSBkaWN0aW9uYXJpZXMgdGhhdCBoYXZlIGEga2V5IGZvciBlYWNoIEFaIElELlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlczoge1xuICAgIFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcztcbiAgfTtcblxuICAvKipcbiAgICogSW5kZXggaW50byB0aGUgZGljdGlvbmFyeSBieSBvcGVyYXRpb24gbmFtZSwgdGhlbiBieSBBdmFpbGFiaWxpdHkgWm9uZSBJZFxuICAgKiB0byBnZXQgdGhlIGFsYXJtcyB0aGF0IGluZGljYXRlIGFuIEFaIHNob3dzIGlzb2xhdGVkIGltcGFjdCBmcm9tIGF2YWlsYWJpbGl0eVxuICAgKiBvciBsYXRlbmN5IGFzIHNlZW4gYnkgZWl0aGVyIHRoZSBzZXJ2ZXItc2lkZSBvciBjYW5hcnkuIFRoZXNlIGFyZSB0aGUgYWxhcm1zXG4gICAqIHlvdSB3b3VsZCB3YW50IHRvIHVzZSB0byB0cmlnZ2VyIGF1dG9tYXRpb24gdG8gZXZhY3VhdGUgYW4gQVouXG4gICAqL1xuICByZWFkb25seSBwZXJPcGVyYXRpb25ab25hbEltcGFjdEFsYXJtczoge1xuICAgIFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBhbGFybXMgYW5kIHJ1bGVzIGZvciB0aGUgb3ZlcmFsbCBzZXJ2aWNlXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlQWxhcm1zOiBJU2VydmljZUFsYXJtc0FuZFJ1bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGFzaGJvYXJkcyBmb3IgZWFjaCBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbkRhc2hib2FyZHM/OiBEYXNoYm9hcmRbXTtcblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgbGV2ZWwgZGFzaGJvYXJkXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlRGFzaGJvYXJkPzogRGFzaGJvYXJkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVogbWFwcGVyIGN1c3RvbSByZXNvdXJjZSB1c2VkIHRvIG1hcCBBWiBJZHMgdG8gTmFtZXMgYW5kIHZpY2UgYSB2ZXJzYVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBhek1hcHBlcjogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcjtcblxuICAvKipcbiAgICogSWYgdGhlIHNlcnZpY2UgaXMgY29uZmlndXJlZCB0byBoYXZlIGNhbmFyeSB0ZXN0cyBjcmVhdGVkLCB0aGlzIHdpbGxcbiAgICogYmUgdGhlIGxvZyBncm91cCB3aGVyZSB0aGUgY2FuYXJ5J3MgbG9ncyBhcmUgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGxvZyBncm91cCBpcyBjcmVhdGVkIGlmIHRoZSBjYW5hcnkgaXMgbm90IHJlcXVlc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeUxvZ0dyb3VwPzogSUxvZ0dyb3VwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0bGllckRldGVjdGlvbkZ1bmN0aW9uPzogSUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgb3V0bGllclRocmVzaG9sZDogbnVtYmVyO1xuXG4gICAgaWYgKCFwcm9wcy5vdXRsaWVyVGhyZXNob2xkKSB7XG4gICAgICBzd2l0Y2ggKHByb3BzLm91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0pIHtcbiAgICAgICAgY2FzZSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLkNISV9TUVVBUkVEOlxuICAgICAgICAgIG91dGxpZXJUaHJlc2hvbGQgPSAwLjA1O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uSVFSOlxuICAgICAgICAgIG91dGxpZXJUaHJlc2hvbGQgPSAxLjU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5NQUQ6XG4gICAgICAgICAgb3V0bGllclRocmVzaG9sZCA9IDM7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5TVEFUSUM6XG4gICAgICAgICAgb3V0bGllclRocmVzaG9sZCA9IDAuNztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlpfU0NPUkU6XG4gICAgICAgICAgb3V0bGllclRocmVzaG9sZCA9IDI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dGxpZXJUaHJlc2hvbGQgPSBwcm9wcy5vdXRsaWVyVGhyZXNob2xkO1xuICAgIH1cblxuICAgIHRoaXMuYXpNYXBwZXIgPSBuZXcgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcih0aGlzLCAnQVpNYXBwZXInLCB7XG4gICAgICBhdmFpbGFiaWxpdHlab25lTmFtZXM6IHByb3BzLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBjYW5hcnlTdGFjazogU3RhY2tXaXRoRHluYW1pY1NvdXJjZSA9IG5ldyBTdGFja1dpdGhEeW5hbWljU291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQ2FuYXJ5JyxcbiAgICAgICAge1xuICAgICAgICAgIGFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lOiBwcm9wcy5hc3NldHNCdWNrZXRQYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgIGFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWU6XG4gICAgICAgICAgICBwcm9wcy5hc3NldHNCdWNrZXRQcmVmaXhQYXJhbWV0ZXJOYW1lLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgbGV0IGNhbmFyeSA9IG5ldyBDYW5hcnlGdW5jdGlvbihjYW5hcnlTdGFjaywgJ0NhbmFyeUZ1bmN0aW9uJywge1xuICAgICAgICB2cGM6IHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzLm5ldHdvcmtDb25maWd1cmF0aW9uPy52cGMsXG4gICAgICAgIHN1Ym5ldFNlbGVjdGlvbjpcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcy5uZXR3b3JrQ29uZmlndXJhdGlvbj8uc3VibmV0U2VsZWN0aW9uLFxuICAgICAgICBodHRwVGltZW91dDogcHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMudGltZW91dFxuICAgICAgICAgID8gcHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMudGltZW91dFxuICAgICAgICAgIDogRHVyYXRpb24uc2Vjb25kcygyKSxcbiAgICAgICAgaWdub3JlVGxzRXJyb3JzOiBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcy5pZ25vcmVUbHNFcnJvcnNcbiAgICAgICAgICA/IHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzLmlnbm9yZVRsc0Vycm9yc1xuICAgICAgICAgIDogZmFsc2UsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jYW5hcnlMb2dHcm91cCA9IGNhbmFyeS5sb2dHcm91cDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IG9wZXJhdGlvbjogSU9wZXJhdGlvbiA9IHByb3BzLnNlcnZpY2Uub3BlcmF0aW9uc1tpXTtcblxuICAgICAgICBpZiAob3BlcmF0aW9uLm9wdE91dE9mU2VydmljZUNyZWF0ZWRDYW5hcnkgIT0gdHJ1ZSkge1xuICAgICAgICAgIGxldCB0ZXN0UHJvcHM6IEFkZENhbmFyeVRlc3RQcm9wcyA9IG9wZXJhdGlvbi5jYW5hcnlUZXN0UHJvcHNcbiAgICAgICAgICAgID8gb3BlcmF0aW9uLmNhbmFyeVRlc3RQcm9wc1xuICAgICAgICAgICAgOiAocHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMgYXMgQWRkQ2FuYXJ5VGVzdFByb3BzKTtcblxuICAgICAgICAgIGxldCBuZXN0ZWRTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyAnQ2FuYXJ5VGVzdCcsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgbGV0IHRlc3QgPSBuZXcgQ2FuYXJ5VGVzdChuZXN0ZWRTdGFjaywgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiBjYW5hcnkuZnVuY3Rpb24sXG4gICAgICAgICAgICByZXF1ZXN0Q291bnQ6IHRlc3RQcm9wcy5yZXF1ZXN0Q291bnQsXG4gICAgICAgICAgICByZWdpb25hbFJlcXVlc3RDb3VudDogdGVzdFByb3BzLnJlZ2lvbmFsUmVxdWVzdENvdW50XG4gICAgICAgICAgICAgID8gdGVzdFByb3BzLnJlZ2lvbmFsUmVxdWVzdENvdW50XG4gICAgICAgICAgICAgIDogdGVzdFByb3BzLnJlcXVlc3RDb3VudCxcbiAgICAgICAgICAgIHNjaGVkdWxlOiB0ZXN0UHJvcHMuc2NoZWR1bGUsXG4gICAgICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbixcbiAgICAgICAgICAgIGxvYWRCYWxhbmNlcjogdGVzdFByb3BzLmxvYWRCYWxhbmNlcixcbiAgICAgICAgICAgIGhlYWRlcnM6IHRlc3RQcm9wcy5oZWFkZXJzLFxuICAgICAgICAgICAgcG9zdERhdGE6IHRlc3RQcm9wcy5wb3N0RGF0YSxcbiAgICAgICAgICAgIGF6TWFwcGVyOiB0aGlzLmF6TWFwcGVyLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgbGV0IGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uTWV0cmljRGV0YWlscztcbiAgICAgICAgICBsZXQgZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uTWV0cmljRGV0YWlscztcblxuICAgICAgICAgIGlmIChvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscz8uY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscykge1xuICAgICAgICAgICAgZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICAgIG1ldHJpY0RpbWVuc2lvbnM6IG5ldyBNZXRyaWNEaW1lbnNpb25zKFxuICAgICAgICAgICAgICAgICAgeyBPcGVyYXRpb246IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lIH0sXG4gICAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICAgJ1JlZ2lvbicsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgLmFsYXJtU3RhdGlzdGljLFxuICAgICAgICAgICAgICAgIGRhdGFwb2ludHNUb0FsYXJtOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICAgICAgICBmYXVsdEFsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuZmF1bHRBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuZmF1bHRNZXRyaWNOYW1lcyxcbiAgICAgICAgICAgICAgICBncmFwaGVkRmF1bHRTdGF0aXN0aWNzOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuZ3JhcGhlZEZhdWx0U3RhdGlzdGljcyxcbiAgICAgICAgICAgICAgICBncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3M6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5ncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3MsXG4gICAgICAgICAgICAgICAgbWV0cmljTmFtZXNwYWNlOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICAgIHBlcmlvZDpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgLnBlcmlvZCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5zdWNjZXNzQWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgc3VjY2Vzc01ldHJpY05hbWVzOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuc3VjY2Vzc01ldHJpY05hbWVzLFxuICAgICAgICAgICAgICAgIHVuaXQ6IG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy51bml0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcGVyYXRpb24uc2VydmljZS5kZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZSkge1xuICAgICAgICAgICAgZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgc3VjY2Vzc01ldHJpY05hbWVzOiBbJ1N1Y2Nlc3MnXSxcbiAgICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOiBbJ0ZhdWx0JywgJ0ZhaWx1cmUnXSxcbiAgICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICAgIHsgT3BlcmF0aW9uOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSB9LFxuICAgICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAgIC5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAgIC5kYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAgIC5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICAgICAgICBmYXVsdEFsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgICAgLmZhdWx0QWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgcGVyaW9kOiBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZS5wZXJpb2QsXG4gICAgICAgICAgICAgICAgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcHJvcHMuc2VydmljZS5kZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzID0gbmV3IE9wZXJhdGlvbk1ldHJpY0RldGFpbHMoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBtZXRyaWNOYW1lc3BhY2U6IHRlc3QubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczogWydTdWNjZXNzJ10sXG4gICAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczogWydGYXVsdCcsICdGYWlsdXJlJ10sXG4gICAgICAgICAgICAgICAgbWV0cmljRGltZW5zaW9uczogbmV3IE1ldHJpY0RpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAgICdBWi1JRCcsXG4gICAgICAgICAgICAgICAgICAnUmVnaW9uJyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHM/LmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzKSB7XG4gICAgICAgICAgICBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICAgIG1ldHJpY0RpbWVuc2lvbnM6IG5ldyBNZXRyaWNEaW1lbnNpb25zKFxuICAgICAgICAgICAgICAgICAgeyBPcGVyYXRpb246IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lIH0sXG4gICAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICAgJ1JlZ2lvbicsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5kYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICAgICAgICBmYXVsdEFsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgLmZhdWx0QWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5mYXVsdE1ldHJpY05hbWVzLFxuICAgICAgICAgICAgICAgIGdyYXBoZWRGYXVsdFN0YXRpc3RpY3M6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuZ3JhcGhlZEZhdWx0U3RhdGlzdGljcyxcbiAgICAgICAgICAgICAgICBncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3M6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuZ3JhcGhlZFN1Y2Nlc3NTdGF0aXN0aWNzLFxuICAgICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgcGVyaW9kOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgLnBlcmlvZCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAuc3VjY2Vzc0FsYXJtVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIC5zdWNjZXNzTWV0cmljTmFtZXMsXG4gICAgICAgICAgICAgICAgdW5pdDogb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC51bml0LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcGVyYXRpb24uc2VydmljZS5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlKSB7XG4gICAgICAgICAgICBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgc3VjY2Vzc01ldHJpY05hbWVzOiBbJ1N1Y2Nlc3NMYXRlbmN5J10sXG4gICAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczogWydGYXVsdExhdGVuY3knXSxcbiAgICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICAgIHsgT3BlcmF0aW9uOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSB9LFxuICAgICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZS5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZS5kYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZS5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICAgICAgICBmYXVsdEFsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAgIC5mYXVsdEFsYXJtVGhyZXNob2xkLFxuICAgICAgICAgICAgICAgIHBlcmlvZDogb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlLnBlcmlvZCxcbiAgICAgICAgICAgICAgICBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcHJvcHMuc2VydmljZS5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgc3VjY2Vzc01ldHJpY05hbWVzOiBbJ1N1Y2Nlc3NMYXRlbmN5J10sXG4gICAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczogWydGYXVsdExhdGVuY3knXSxcbiAgICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICAgIHsgT3BlcmF0aW9uOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSB9LFxuICAgICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHByb3BzLnNlcnZpY2UuZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgbmV3T3BlcmF0aW9uID0gbmV3IE9wZXJhdGlvbih7XG4gICAgICAgICAgICBzZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzOlxuICAgICAgICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgICAgc2VydmljZTogb3BlcmF0aW9uLnNlcnZpY2UsXG4gICAgICAgICAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgIHBhdGg6IG9wZXJhdGlvbi5wYXRoLFxuICAgICAgICAgICAgY3JpdGljYWw6IG9wZXJhdGlvbi5jcml0aWNhbCxcbiAgICAgICAgICAgIGh0dHBNZXRob2RzOiBvcGVyYXRpb24uaHR0cE1ldGhvZHMsXG4gICAgICAgICAgICBjYW5hcnlNZXRyaWNEZXRhaWxzOiBuZXcgQ2FuYXJ5TWV0cmljcyh7XG4gICAgICAgICAgICAgIGNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6IGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgICBjYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsczogZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnNbaV0gPSBuZXdPcGVyYXRpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSAhPSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlNUQVRJQykge1xuICAgICAgbGV0IG91dGxpZXJEZXRlY3Rpb25TdGFjazogU3RhY2tXaXRoRHluYW1pY1NvdXJjZSA9XG4gICAgICAgIG5ldyBTdGFja1dpdGhEeW5hbWljU291cmNlKHRoaXMsICdPdXRsaWVyRGV0ZWN0aW9uU3RhY2snLCB7XG4gICAgICAgICAgYXNzZXRzQnVja2V0c1BhcmFtZXRlck5hbWU6IHByb3BzLmFzc2V0c0J1Y2tldFBhcmFtZXRlck5hbWUsXG4gICAgICAgICAgYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZTpcbiAgICAgICAgICAgIHByb3BzLmFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiA9IG5ldyBPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24oXG4gICAgICAgIG91dGxpZXJEZXRlY3Rpb25TdGFjayxcbiAgICAgICAgJ091dGxpZXJEZXRlY3Rpb25GdW5jdGlvbicsXG4gICAgICAgIHt9LFxuICAgICAgKS5mdW5jdGlvbjtcbiAgICB9XG5cbiAgICB0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBuZXN0ZWRTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdPcGVyYXRpb25BbGFybXNBbmRSdWxlc05lc3RlZFN0YWNrJyxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIG5ldyBPcGVyYXRpb25BbGFybXNBbmRSdWxlcyhuZXN0ZWRTdGFjaywgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uLFxuICAgICAgICAgICAgb3V0bGllckRldGVjdGlvbkFsZ29yaXRobTogcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICAgIG91dGxpZXJUaHJlc2hvbGQ6IG91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgICBsb2FkQmFsYW5jZXI6IHByb3BzLnNlcnZpY2UubG9hZEJhbGFuY2VyLFxuICAgICAgICAgICAgYXpNYXBwZXI6IHRoaXMuYXpNYXBwZXIsXG4gICAgICAgICAgICBvdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb246IHRoaXMub3V0bGllckRldGVjdGlvbkZ1bmN0aW9uLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMucGVyT3BlcmF0aW9uWm9uYWxJbXBhY3RBbGFybXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICByZXR1cm4gW2tleSwgdmFsdWUuYWdncmVnYXRlWm9uYWxBbGFybXNNYXBdO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCBzZXJ2aWNlQWxhcm1zU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgdGhpcyxcbiAgICAgICdTZXJ2aWNlQWxhcm1zTmVzdGVkU3RhY2snLFxuICAgICk7XG5cbiAgICB0aGlzLnNlcnZpY2VBbGFybXMgPSBuZXcgU2VydmljZUFsYXJtc0FuZFJ1bGVzKFxuICAgICAgc2VydmljZUFsYXJtc1N0YWNrLFxuICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgcGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM6IHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMsXG4gICAgICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2UsXG4gICAgICAgIGF6TWFwcGVyOiB0aGlzLmF6TWFwcGVyLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLmNyZWF0ZURhc2hib2FyZHMpIHtcbiAgICAgIHRoaXMub3BlcmF0aW9uRGFzaGJvYXJkcyA9IFtdO1xuXG4gICAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBsZXQgZGFzaGJvYXJkU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgeC5vcGVyYXRpb25OYW1lICsgJ0Rhc2hib2FyZCcsXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uRGFzaGJvYXJkcykge1xuICAgICAgICAgIHRoaXMub3BlcmF0aW9uRGFzaGJvYXJkcy5wdXNoKFxuICAgICAgICAgICAgbmV3IE9wZXJhdGlvbkF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQoXG4gICAgICAgICAgICAgIGRhc2hib2FyZFN0YWNrLFxuICAgICAgICAgICAgICB4Lm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IHgsXG4gICAgICAgICAgICAgICAgYXpNYXBwZXI6IHRoaXMuYXpNYXBwZXIsXG4gICAgICAgICAgICAgICAgaW50ZXJ2YWw6IHByb3BzLmludGVydmFsXG4gICAgICAgICAgICAgICAgICA/IHByb3BzLmludGVydmFsXG4gICAgICAgICAgICAgICAgICA6IER1cmF0aW9uLm1pbnV0ZXMoNjApLFxuICAgICAgICAgICAgICAgIGxvYWRCYWxhbmNlcjogcHJvcHMuc2VydmljZS5sb2FkQmFsYW5jZXIsXG5cbiAgICAgICAgICAgICAgICByZWdpb25hbEVuZHBvaW50Q2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm06XG4gICAgICAgICAgICAgICAgICB0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzW3gub3BlcmF0aW9uTmFtZV1cbiAgICAgICAgICAgICAgICAgICAgLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXM/LmF2YWlsYWJpbGl0eUFsYXJtLFxuXG4gICAgICAgICAgICAgICAgcmVnaW9uYWxFbmRwb2ludENhbmFyeUxhdGVuY3lBbGFybTpcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbeC5vcGVyYXRpb25OYW1lXVxuICAgICAgICAgICAgICAgICAgICAuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcz8ubGF0ZW5jeUFsYXJtLFxuXG4gICAgICAgICAgICAgICAgcmVnaW9uYWxFbmRwb2ludFNlcnZlckF2YWlsYWJpbGl0eUFsYXJtOlxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlc1t4Lm9wZXJhdGlvbk5hbWVdXG4gICAgICAgICAgICAgICAgICAgIC5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcy5hdmFpbGFiaWxpdHlBbGFybSxcblxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsRW5kcG9pbnRTZXJ2ZXJMYXRlbmN5QWxhcm06XG4gICAgICAgICAgICAgICAgICB0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzW3gub3BlcmF0aW9uTmFtZV1cbiAgICAgICAgICAgICAgICAgICAgLnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzLmxhdGVuY3lBbGFybSxcblxuICAgICAgICAgICAgICAgIHpvbmFsRW5kcG9pbnRDYW5hcnlBdmFpbGFiaWxpdHlBbGFybXM6XG4gICAgICAgICAgICAgICAgICB0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzW1xuICAgICAgICAgICAgICAgICAgICB4Lm9wZXJhdGlvbk5hbWVcbiAgICAgICAgICAgICAgICAgIF0uY2FuYXJ5Wm9uYWxBbGFybXNBbmRSdWxlcz8ubWFwKChhKSA9PiBhLmF2YWlsYWJpbGl0eUFsYXJtKSxcblxuICAgICAgICAgICAgICAgIHpvbmFsRW5kcG9pbnRDYW5hcnlMYXRlbmN5QWxhcm1zOlxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlc1tcbiAgICAgICAgICAgICAgICAgICAgeC5vcGVyYXRpb25OYW1lXG4gICAgICAgICAgICAgICAgICBdLmNhbmFyeVpvbmFsQWxhcm1zQW5kUnVsZXM/Lm1hcCgoYSkgPT4gYS5sYXRlbmN5QWxhcm0pLFxuXG4gICAgICAgICAgICAgICAgem9uYWxFbmRwb2ludFNlcnZlckF2YWlsYWJpbGl0eUFsYXJtczpcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbXG4gICAgICAgICAgICAgICAgICAgIHgub3BlcmF0aW9uTmFtZVxuICAgICAgICAgICAgICAgICAgXS5zZXJ2ZXJTaWRlWm9uYWxBbGFybXNBbmRSdWxlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChhKSA9PiBhLmF2YWlsYWJpbGl0eUFsYXJtLFxuICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIHpvbmFsRW5kcG9pbnRTZXJ2ZXJMYXRlbmN5QWxhcm1zOlxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlc1tcbiAgICAgICAgICAgICAgICAgICAgeC5vcGVyYXRpb25OYW1lXG4gICAgICAgICAgICAgICAgICBdLnNlcnZlclNpZGVab25hbEFsYXJtc0FuZFJ1bGVzLm1hcCgoYSkgPT4gYS5sYXRlbmN5QWxhcm0pLFxuXG4gICAgICAgICAgICAgICAgaXNvbGF0ZWRBWkltcGFjdEFsYXJtczpcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbeC5vcGVyYXRpb25OYW1lXVxuICAgICAgICAgICAgICAgICAgICAuYWdncmVnYXRlWm9uYWxBbGFybXMsXG5cbiAgICAgICAgICAgICAgICByZWdpb25hbEltcGFjdEFsYXJtOlxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlc1t4Lm9wZXJhdGlvbk5hbWVdXG4gICAgICAgICAgICAgICAgICAgIC5hZ2dyZWdhdGVSZWdpb25hbEFsYXJtLFxuXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0czpcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbeC5vcGVyYXRpb25OYW1lXVxuICAgICAgICAgICAgICAgICAgICAuc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNcbiAgICAgICAgICAgICAgICAgICAgLmluc3RhbmNlQ29udHJpYnV0b3JzVG9SZWdpb25hbEZhdWx0cyxcblxuICAgICAgICAgICAgICAgIGluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeTpcbiAgICAgICAgICAgICAgICAgIHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbeC5vcGVyYXRpb25OYW1lXVxuICAgICAgICAgICAgICAgICAgICAuc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNcbiAgICAgICAgICAgICAgICAgICAgLmluc3RhbmNlQ29udHJpYnV0b3JzVG9SZWdpb25hbEhpZ2hMYXRlbmN5LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKS5kYXNoYm9hcmQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGxldCBkYXNoYm9hcmRTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdTZXJ2aWNlRGFzaGJvYXJkJyxcbiAgICAgICAge30sXG4gICAgICApO1xuXG4gICAgICB0aGlzLnNlcnZpY2VEYXNoYm9hcmQgPSBuZXcgU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQoXG4gICAgICAgIGRhc2hib2FyZFN0YWNrLFxuICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIHtcbiAgICAgICAgICBpbnRlcnZhbDogcHJvcHMuaW50ZXJ2YWwgPyBwcm9wcy5pbnRlcnZhbCA6IER1cmF0aW9uLm1pbnV0ZXMoNjApLFxuICAgICAgICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2UsXG4gICAgICAgICAgYWdncmVnYXRlUmVnaW9uYWxBbGFybTpcbiAgICAgICAgICAgIHRoaXMuc2VydmljZUFsYXJtcy5yZWdpb25hbEZhdWx0Q291bnRTZXJ2ZXJTaWRlQWxhcm0sXG4gICAgICAgICAgem9uYWxBZ2dyZWdhdGVBbGFybXM6XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VBbGFybXMuem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtcyxcbiAgICAgICAgICBhek1hcHBlcjogdGhpcy5hek1hcHBlcixcbiAgICAgICAgfSxcbiAgICAgICkuZGFzaGJvYXJkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -30,5 +30,5 @@ class Operation {
30
30
  }
31
31
  exports.Operation = Operation;
32
32
  _a = JSII_RTTI_SYMBOL_1;
33
- Operation[_a] = { fqn: "@cdklabs/multi-az-observability.Operation", version: "0.0.1-alpha.12" };
33
+ Operation[_a] = { fqn: "@cdklabs/multi-az-observability.Operation", version: "0.0.1-alpha.13" };
34
34
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL09wZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBOztHQUVHO0FBQ0gsTUFBYSxTQUFTO0lBOEVwQixZQUFZLEtBQXFCO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQ0FBbUM7WUFDdEMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDO1FBQzVDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUMsOEJBQThCLENBQUM7UUFDM0UsSUFBSSxDQUFDLHVDQUF1QztZQUMxQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxxQ0FBcUM7WUFDeEMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQ0FBZ0M7WUFDbkMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsNEJBQTRCLENBQUM7SUFDekUsQ0FBQzs7QUFqR0gsOEJBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUNhbmFyeU1ldHJpY3MgfSBmcm9tICcuL0lDYW5hcnlNZXRyaWNzJztcbmltcG9ydCB7IElDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlIH0gZnJvbSAnLi9JQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSc7XG5pbXBvcnQgeyBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuL0lDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnLi9JT3BlcmF0aW9uJztcbmltcG9ydCB7IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9JT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4vSVNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlcmF0aW9uUHJvcHMgfSBmcm9tICcuL3Byb3BzL09wZXJhdGlvblByb3BzJztcbmltcG9ydCB7IEFkZENhbmFyeVRlc3RQcm9wcyB9IGZyb20gJy4uL2NhbmFyaWVzL3Byb3BzL0FkZENhbmFyeVRlc3RQcm9wcyc7XG5cbi8qKlxuICogQSBzaW5nbGUgb3BlcmF0aW9uIHRoYXQgaXMgcGFydCBvZiBhIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbiBpbXBsZW1lbnRzIElPcGVyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlIG9wZXJhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGhcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2U6IElTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBUaGUgSFRUUCBwYXRoIGZvciB0aGUgb3BlcmF0aW9uIGZvciBjYW5hcmllc1xuICAgKiAgdG8gcnVuIGFnYWluc3QsIHNvbWV0aGluZyBsaWtlIFwiL3Byb2R1Y3RzL2xpc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgYXZhaWxhYmlsaXR5IG1ldHJpYyBkZXRhaWxzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSBsYXRlbmN5IG1ldHJpYyBkZXRhaWxzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRyaWMgZGV0YWlscyBpZiB0aGUgc2VydmljZSBoYXMgYSBjYW5hcnlcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeU1ldHJpY0RldGFpbHM/OiBJQ2FuYXJ5TWV0cmljcztcblxuICAvKipcbiAgICogVGhlIG92ZXJyaWRlIHZhbHVlcyBmb3IgYXV0b21hdGljYWxseSBjcmVhdGVkIGNhbmFyeSB0ZXN0cyBzbyB5b3UgY2FuXG4gICAqIHVzZSB2YWx1ZXMgb3RoZXIgdGhhbiB0aGUgc2VydmljZSBkZWZhdWx0cyB0byBkZWZpbmUgdGhlIHRocmVzaG9sZHMgZm9yXG4gICAqIGF2YWlsYWJpbGl0eS5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGU/OiBJQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZTtcblxuICAvKipcbiAgICogVGhlIG92ZXJyaWRlIHZhbHVlcyBmb3IgYXV0b21hdGljYWxseSBjcmVhdGVkIGNhbmFyeSB0ZXN0cyBzbyB5b3UgY2FuXG4gICAqIHVzZSB2YWx1ZXMgb3RoZXIgdGhhbiB0aGUgc2VydmljZSBkZWZhdWx0cyB0byBkZWZpbmUgdGhlIHRocmVzaG9sZHMgZm9yXG4gICAqIGxhdGVuY3kuXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZT86IElDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgZGV0YWlscyBmb3IgY29udHJpYnV0b3IgaW5zaWdodHMgcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscz86IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoaXMgaXMgYSBjcml0aWNhbCBvcGVyYXRpb24gZm9yIHRoZSBzZXJ2aWNlXG4gICAqIGFuZCB3aWxsIGJlIGluY2x1ZGVkIGluIHNlcnZpY2UgbGV2ZWwgbWV0cmljcyBhbmRcbiAgICogZGFzaGJvYXJkc1xuICAgKi9cbiAgcmVhZG9ubHkgY3JpdGljYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBodHRwIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBNZXRob2RzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhleSBoYXZlIGJlZW4gYWRkZWQsIHRoZSBwcm9wZXJ0aWVzIGZvclxuICAgKiBjcmVhdGluZyBuZXcgY2FuYXJ5IHRlc3RzIG9uIHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlUZXN0UHJvcHM/OiBBZGRDYW5hcnlUZXN0UHJvcHM7XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIGlmIHlvdSBoYXZlIGRlZmluZWQgQ2FuYXJ5VGVzdFByb3BzIGZvciB5b3VyXG4gICAqIHNlcnZpY2UsIHdoaWNoIGFwcGxpZXMgdG8gYWxsIG9wZXJhdGlvbnMsIGJ1dCB5b3Ugd2FudCB0b1xuICAgKiBvcHQgb3V0IG9mIGNyZWF0aW5nIHRoZSBjYW5hcnkgdGVzdCBmb3IgdGhpcyBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIG9wZXJhdGlvbiBpcyBub3Qgb3B0ZWQgb3V0XG4gICAqL1xuICByZWFkb25seSBvcHRPdXRPZlNlcnZpY2VDcmVhdGVkQ2FuYXJ5PzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogT3BlcmF0aW9uUHJvcHMpIHtcbiAgICB0aGlzLmNhbmFyeU1ldHJpY0RldGFpbHMgPSBwcm9wcy5jYW5hcnlNZXRyaWNEZXRhaWxzO1xuICAgIHRoaXMuaHR0cE1ldGhvZHMgPSBwcm9wcy5odHRwTWV0aG9kcztcbiAgICB0aGlzLmNyaXRpY2FsID0gcHJvcHMuY3JpdGljYWw7XG4gICAgdGhpcy5vcGVyYXRpb25OYW1lID0gcHJvcHMub3BlcmF0aW9uTmFtZTtcbiAgICB0aGlzLnBhdGggPSBwcm9wcy5wYXRoO1xuICAgIHRoaXMuc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPVxuICAgICAgcHJvcHMuc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBwcm9wcy5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgPVxuICAgICAgcHJvcHMuc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuICAgIHRoaXMuc2VydmljZSA9IHByb3BzLnNlcnZpY2U7XG4gICAgdGhpcy5jYW5hcnlUZXN0UHJvcHMgPSBwcm9wcy5jYW5hcnlUZXN0UHJvcHM7XG4gICAgdGhpcy5vcHRPdXRPZlNlcnZpY2VDcmVhdGVkQ2FuYXJ5ID0gcHJvcHMub3B0T3V0T2ZTZXJ2aWNlQ3JlYXRlZENhbmFyeTtcbiAgICB0aGlzLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGUgPVxuICAgICAgcHJvcHMuY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZTtcbiAgICB0aGlzLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlID1cbiAgICAgIHByb3BzLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlO1xuICAgIHRoaXMub3B0T3V0T2ZTZXJ2aWNlQ3JlYXRlZENhbmFyeSA9IHByb3BzLm9wdE91dE9mU2VydmljZUNyZWF0ZWRDYW5hcnk7XG4gIH1cbn1cbiJdfQ==
@@ -46,5 +46,5 @@ class OperationMetricDetails {
46
46
  }
47
47
  exports.OperationMetricDetails = OperationMetricDetails;
48
48
  _a = JSII_RTTI_SYMBOL_1;
49
- OperationMetricDetails[_a] = { fqn: "@cdklabs/multi-az-observability.OperationMetricDetails", version: "0.0.1-alpha.12" };
49
+ OperationMetricDetails[_a] = { fqn: "@cdklabs/multi-az-observability.OperationMetricDetails", version: "0.0.1-alpha.13" };
50
50
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uTWV0cmljRGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9PcGVyYXRpb25NZXRyaWNEZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBU0E7O0dBRUc7QUFDSCxNQUFhLHNCQUFzQjtJQXFGakMsWUFDRSxLQUFrQyxFQUNsQyxZQUFtQztRQUVuQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjO1lBQ3hDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYztZQUN0QixDQUFDLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQjtZQUM5QyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtZQUN6QixDQUFDLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDO1FBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCO1lBQzlDLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCO1lBQ3pCLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUI7WUFDbEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxtQkFBbUI7WUFDM0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQjtZQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QixDQUFDLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUMsc0JBQXNCO1lBQ3hELENBQUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCO1lBQzlCLENBQUMsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUM7UUFDeEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQyx3QkFBd0I7WUFDNUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyx3QkFBd0I7WUFDaEMsQ0FBQyxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlO1lBQzFDLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBZTtZQUN2QixDQUFDLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCO1lBQ3RELENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCO1lBQzdCLENBQUMsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0I7WUFDaEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDMUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRCxDQUFDOztBQTNISCx3REE0SEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFVuaXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4vSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9JU2VydmljZU1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgTWV0cmljRGltZW5zaW9ucyB9IGZyb20gJy4vcHJvcHMvTWV0cmljRGltZW5zaW9ucyc7XG5pbXBvcnQgeyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3Byb3BzL09wZXJhdGlvbk1ldHJpY0RldGFpbHNQcm9wcyc7XG5cbi8qKlxuICogR2VuZXJpYyBtZXRyaWMgZGV0YWlscyBmb3IgYW4gb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzIGltcGxlbWVudHMgSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMge1xuICAvKipcbiAgICogVGhlIG9wZXJhdGlvbiB0aGVzZSBtZXRyaWMgZGV0YWlscyBhcmUgZm9yXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBDbG91ZFdhdGNoIG1ldHJpYyBuYW1lc3BhY2UgZm9yIHRoZXNlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWVzcGFjZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2Ygc3VjY2VzcyBpbmRpY2F0aW5nIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IHN1Y2Nlc3NNZXRyaWNOYW1lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lcyBvZiBmYXVsdCBpbmRpY2F0aW5nIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0TWV0cmljTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljIHVzZWQgZm9yIGFsYXJtcywgZm9yIGF2YWlsYWJpbGl0eSBtZXRyaWNzIHRoaXMgc2hvdWxkXG4gICAqIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgY291bGQgc29tZXRoaW5nIGxpa2UgXCJwOTlcIiBvciBcInA5OS45XCJcbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtU3RhdGlzdGljOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0aXN0aWNzIGZvciBzdWNjZXNzZXMgeW91IHdhbnQgdG8gYXBwZWFyIG9uIGRhc2hib2FyZHMsIGZvciBleGFtcGxlLCB3aXRoXG4gICAqIGxhdGVuY3kgbWV0cmljcywgeW91IG1pZ2h0IHdhbnQgcDUwLCBwOTksIGFuZCB0bTk5LiBGb3IgYXZhaWxhYmlsaXR5XG4gICAqIG1ldHJpY3MgdGhpcyB3aWxsIHR5cGljYWxseSBqdXN0IGJlIFwiU3VtXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRm9yIGF2YWlsYWJpbGl0eSBtZXRyaWNzLCB0aGlzIHdpbGwgYmUgXCJTdW1cIiwgZm9yIGxhdGVuY3kgbWV0cmljcyBpdCB3aWxsIGJlIGp1c3QgXCJwOTlcIlxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhcGhlZFN1Y2Nlc3NTdGF0aXN0aWNzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0aXN0aWNzIGZvciBmYXVsdHMgeW91IHdhbnQgdG8gYXBwZWFyIG9uIGRhc2hib2FyZHMsIGZvciBleGFtcGxlLCB3aXRoXG4gICAqIGxhdGVuY3kgbWV0cmljcywgeW91IG1pZ2h0IHdhbnQgcDUwLCBwOTksIGFuZCB0bTk5LiBGb3IgYXZhaWxhYmlsaXR5XG4gICAqIG1ldHJpY3MgdGhpcyB3aWxsIHR5cGljYWxseSBqdXN0IGJlIFwiU3VtXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRm9yIGF2YWlsYWJpbGl0eSBtZXRyaWNzLCB0aGlzIHdpbGwgYmUgXCJTdW1cIiwgZm9yIGxhdGVuY3kgbWV0cmljcyBpdCB3aWxsIGJlIGp1c3QgXCJwOTlcIlxuICAgKi9cbiAgcmVhZG9ubHkgZ3JhcGhlZEZhdWx0U3RhdGlzdGljcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pdCB1c2VkIGZvciB0aGVzZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSB1bml0OiBVbml0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyaW9kIGZvciB0aGUgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgcGVyaW9kOiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBldmFsdWF0aW9uIHBlcmlvZHMgZm9yIGxhdGVuY3kgYW5kIGF2YWlsYWJpbHRpeSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRpb25QZXJpb2RzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZGF0YXBvaW50cyB0byBhbGFybSBvbiBmb3IgbGF0ZW5jeSBhbmQgYXZhaWxhYmlsaXR5IGFsYXJtc1xuICAgKi9cbiAgcmVhZG9ubHkgZGF0YXBvaW50c1RvQWxhcm06IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRocmVzaG9sZCBmb3IgYWxhcm1zIGFzc29jaWF0ZWQgd2l0aCBzdWNjZXNzIG1ldHJpY3MsIGZvciBleGFtcGxlIGlmIG1lYXN1cmluZ1xuICAgKiBzdWNjZXNzIHJhdGUsIHRoZSB0aHJlc2hvbGQgbWF5IGJlIDk5LCBtZWFuaW5nIHlvdSB3b3VsZCB3YW50IGFuIGFsYXJtIHRoYXQgdHJpZ2dlcnNcbiAgICogaWYgc3VjY2VzcyBkcm9wcyBiZWxvdyA5OSUuXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHRocmVzaG9sZCBmb3IgYWxhcm1zIGFzc29jaWF0ZWQgd2l0aCBmYXVsdCBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBtZWFzdXJpbmdcbiAgICogZmF1bHQgcmF0ZSwgdGhlIHRocmVzaG9sZCBtYXkgYmUgMSwgbWVhbmluZyB5b3Ugd291bGQgd2FudCBhbiBhbGFybSB0aGF0IHRyaWdnZXJzXG4gICAqIGlmIHRoZSBmYXVsdCByYXRlIGdvZXMgYWJvdmUgMSUuXG4gICAqL1xuICByZWFkb25seSBmYXVsdEFsYXJtVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgZGltZW5zaW9ucyBmb3IgdGhpcyBvcGVyYXRpb24sIG11c3QgYmUgaW1wbGVtZW50ZWRcbiAgICogYXMgYSBjb25jcmV0ZSBjbGFzcyBieSB0aGUgdXNlclxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljRGltZW5zaW9uczogTWV0cmljRGltZW5zaW9ucztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm9wczogT3BlcmF0aW9uTWV0cmljRGV0YWlsc1Byb3BzLFxuICAgIGRlZmF1bHRQcm9wczogSVNlcnZpY2VNZXRyaWNEZXRhaWxzLFxuICApIHtcbiAgICB0aGlzLmFsYXJtU3RhdGlzdGljID0gcHJvcHMuYWxhcm1TdGF0aXN0aWNcbiAgICAgID8gcHJvcHMuYWxhcm1TdGF0aXN0aWNcbiAgICAgIDogZGVmYXVsdFByb3BzLmFsYXJtU3RhdGlzdGljO1xuICAgIHRoaXMuZGF0YXBvaW50c1RvQWxhcm0gPSBwcm9wcy5kYXRhcG9pbnRzVG9BbGFybVxuICAgICAgPyBwcm9wcy5kYXRhcG9pbnRzVG9BbGFybVxuICAgICAgOiBkZWZhdWx0UHJvcHMuZGF0YXBvaW50c1RvQWxhcm07XG4gICAgdGhpcy5ldmFsdWF0aW9uUGVyaW9kcyA9IHByb3BzLmV2YWx1YXRpb25QZXJpb2RzXG4gICAgICA/IHByb3BzLmV2YWx1YXRpb25QZXJpb2RzXG4gICAgICA6IGRlZmF1bHRQcm9wcy5ldmFsdWF0aW9uUGVyaW9kcztcbiAgICB0aGlzLmZhdWx0QWxhcm1UaHJlc2hvbGQgPSBwcm9wcy5mYXVsdEFsYXJtVGhyZXNob2xkXG4gICAgICA/IHByb3BzLmZhdWx0QWxhcm1UaHJlc2hvbGRcbiAgICAgIDogZGVmYXVsdFByb3BzLmZhdWx0QWxhcm1UaHJlc2hvbGQ7XG4gICAgdGhpcy5mYXVsdE1ldHJpY05hbWVzID0gcHJvcHMuZmF1bHRNZXRyaWNOYW1lc1xuICAgICAgPyBwcm9wcy5mYXVsdE1ldHJpY05hbWVzXG4gICAgICA6IGRlZmF1bHRQcm9wcy5mYXVsdE1ldHJpY05hbWVzO1xuICAgIHRoaXMuZ3JhcGhlZEZhdWx0U3RhdGlzdGljcyA9IHByb3BzLmdyYXBoZWRGYXVsdFN0YXRpc3RpY3NcbiAgICAgID8gcHJvcHMuZ3JhcGhlZEZhdWx0U3RhdGlzdGljc1xuICAgICAgOiBkZWZhdWx0UHJvcHMuZ3JhcGhlZEZhdWx0U3RhdGlzdGljcztcbiAgICB0aGlzLmdyYXBoZWRTdWNjZXNzU3RhdGlzdGljcyA9IHByb3BzLmdyYXBoZWRTdWNjZXNzU3RhdGlzdGljc1xuICAgICAgPyBwcm9wcy5ncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3NcbiAgICAgIDogZGVmYXVsdFByb3BzLmdyYXBoZWRTdWNjZXNzU3RhdGlzdGljcztcbiAgICB0aGlzLm1ldHJpY05hbWVzcGFjZSA9IHByb3BzLm1ldHJpY05hbWVzcGFjZVxuICAgICAgPyBwcm9wcy5tZXRyaWNOYW1lc3BhY2VcbiAgICAgIDogZGVmYXVsdFByb3BzLm1ldHJpY05hbWVzcGFjZTtcbiAgICB0aGlzLm9wZXJhdGlvbk5hbWUgPSBwcm9wcy5vcGVyYXRpb25OYW1lO1xuICAgIHRoaXMucGVyaW9kID0gcHJvcHMucGVyaW9kID8gcHJvcHMucGVyaW9kIDogZGVmYXVsdFByb3BzLnBlcmlvZDtcbiAgICB0aGlzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCA9IHByb3BzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZFxuICAgICAgPyBwcm9wcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGRcbiAgICAgIDogZGVmYXVsdFByb3BzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZDtcbiAgICB0aGlzLnN1Y2Nlc3NNZXRyaWNOYW1lcyA9IHByb3BzLnN1Y2Nlc3NNZXRyaWNOYW1lc1xuICAgICAgPyBwcm9wcy5zdWNjZXNzTWV0cmljTmFtZXNcbiAgICAgIDogZGVmYXVsdFByb3BzLnN1Y2Nlc3NNZXRyaWNOYW1lcztcbiAgICB0aGlzLnVuaXQgPSBwcm9wcy51bml0ID8gcHJvcHMudW5pdCA6IGRlZmF1bHRQcm9wcy51bml0O1xuICAgIHRoaXMubWV0cmljRGltZW5zaW9ucyA9IHByb3BzLm1ldHJpY0RpbWVuc2lvbnM7XG4gIH1cbn1cbiJdfQ==
@@ -32,5 +32,5 @@ class Service {
32
32
  }
33
33
  exports.Service = Service;
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- Service[_a] = { fqn: "@cdklabs/multi-az-observability.Service", version: "0.0.1-alpha.12" };
35
+ Service[_a] = { fqn: "@cdklabs/multi-az-observability.Service", version: "0.0.1-alpha.13" };
36
36
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBV0E7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUF5RWxCLFlBQVksS0FBbUI7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdDQUFnQztZQUNuQyxLQUFLLENBQUMsZ0NBQWdDLENBQUM7UUFDekMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztRQUNyRSxJQUFJLENBQUMsb0NBQW9DO1lBQ3ZDLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLFNBQXFCO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O0FBL0ZILDBCQWdHQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSUxvYWRCYWxhbmNlclYyIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xuaW1wb3J0IHsgSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzIH0gZnJvbSAnLi9JQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4vSU9wZXJhdGlvbic7XG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4vSVNlcnZpY2UnO1xuaW1wb3J0IHsgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9JU2VydmljZU1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgU2VydmljZVByb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlUHJvcHMnO1xuaW1wb3J0IHsgQWRkQ2FuYXJ5VGVzdFByb3BzIH0gZnJvbSAnLi4vY2FuYXJpZXMvcHJvcHMvQWRkQ2FuYXJ5VGVzdFByb3BzJztcblxuLyoqXG4gKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYSBzZXJ2aWNlIGNvbXBvc2VkIG9mIG11bHRpcGxlIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2UgaW1wbGVtZW50cyBJU2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB5b3VyIHNlcnZpY2VcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGVuZHBvaW50IGZvciB0aGlzIHNlcnZpY2UsIGxpa2UgXCJodHRwczovL3d3dy5leGFtcGxlLmNvbVwiLiBPcGVyYXRpb24gcGF0aHMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGlzIGVuZHBvaW50IGZvciBjYW5hcnkgdGVzdGluZyB0aGUgc2VydmljZS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VVcmw6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZhdWx0IGNvdW50IHRocmVzaG9sZCB0aGF0IGluZGljYXRlcyB0aGUgc2VydmljZSBpcyB1bmhlYWx0aHkuIFRoaXMgaXMgYW4gYWJzb2x1dGUgdmFsdWUgb2YgZmF1bHRzXG4gICAqIGJlaW5nIHByb2R1Y2VkIGJ5IGFsbCBjcml0aWNhbCBvcGVyYXRpb25zIGluIGFnZ3JlZ2F0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0Q291bnRUaHJlc2hvbGQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIHRoZSBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lcyB1c2VkIGJ5IHRoaXMgYXBwbGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVOYW1lczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2QgZm9yIHdoaWNoIG1ldHJpY3MgZm9yIHRoZSBzZXJ2aWNlIHNob3VsZCBiZSBhZ2dyZWdhdGVkXG4gICAqL1xuICByZWFkb25seSBwZXJpb2Q6IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW9ucyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgc2VydmljZVxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uczogSU9wZXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9hZCBiYWxhbmNlciB0aGlzIHNlcnZpY2Ugc2l0cyBiZWhpbmRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBsb2FkIGJhbGFuY2VyIG1ldHJpY3Mgd2lsbCBiZSBpbmNsdWRlZCBpblxuICAgKiBkYXNoYm9hcmRzIGFuZCBpdHMgQVJOIHdpbGwgbm90IGJlIGFkZGVkIHRvIHRvcCBsZXZlbCBBWlxuICAgKiBhbGFybSBkZXNjcmlwdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBJTG9hZEJhbGFuY2VyVjI7XG5cbiAgLyoqXG4gICAqIERlZmluZSB0aGVzZSBzZXR0aW5ncyBpZiB5b3Ugd2FudCB0byBhdXRvbWF0aWNhbGx5IGFkZCBjYW5hcnlcbiAgICogdGVzdHMgdG8geW91ciBvcGVyYXRpb25zLiBPcGVyYXRpb25zIGNhbiBpbmRpdmlkdWFsbHkgb3B0IG91dFxuICAgKiBvZiBjYW5hcnkgdGVzdCBjcmVhdGlvbiBpZiB5b3UgZGVmaW5lIHRoaXMgc2V0dGluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvbWF0aWMgY2FuYXJ5IHRlc3RzIHdpbGwgbm90IGJlIGNyZWF0ZWQgZm9yXG4gICAqIG9wZXJhdGlvbnMgaW4gdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5VGVzdFByb3BzPzogQWRkQ2FuYXJ5VGVzdFByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IGFyZSB1c2VkIGZvciBhdmFpbGFiaWxpdHkgbWV0cmljc1xuICAgKiBmb3IgYWxsIG9wZXJhdGlvbnMgdW5sZXNzIHNwZWNpZmljYWxseSBvdmVycmlkZGVuIGluIGFuXG4gICAqIG9wZXJhdGlvbiBkZWZpbml0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6IElTZXJ2aWNlTWV0cmljRGV0YWlscztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgc2V0dGluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgYXZhaWxhYmlsaXR5IG1ldHJpY3NcbiAgICogZm9yIGFsbCBvcGVyYXRpb25zIHVubGVzcyBzcGVjaWZpY2FsbHkgb3ZlcnJpZGRlbiBpbiBhblxuICAgKiBvcGVyYXRpb24gZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlsczogSVNlcnZpY2VNZXRyaWNEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBzZXR0aW5ncyB0aGF0IGFyZSB1c2VkIGZvciBjb250cmlidXRvciBpbnNpZ2h0XG4gICAqIHJ1bGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlZmF1bHRzIGFyZSBwcm92aWRlZCBhbmQgbXVzdCBiZSBzcGVjaWZpZWQgcGVyIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzPzogSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZXJ2aWNlUHJvcHMpIHtcbiAgICB0aGlzLnNlcnZpY2VOYW1lID0gcHJvcHMuc2VydmljZU5hbWU7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lTmFtZXMgPSBwcm9wcy5hdmFpbGFiaWxpdHlab25lTmFtZXM7XG4gICAgdGhpcy5iYXNlVXJsID0gcHJvcHMuYmFzZVVybDtcbiAgICB0aGlzLmZhdWx0Q291bnRUaHJlc2hvbGQgPSBwcm9wcy5mYXVsdENvdW50VGhyZXNob2xkO1xuICAgIHRoaXMub3BlcmF0aW9ucyA9IFtdO1xuICAgIHRoaXMucGVyaW9kID0gcHJvcHMucGVyaW9kO1xuICAgIHRoaXMubG9hZEJhbGFuY2VyID0gcHJvcHMubG9hZEJhbGFuY2VyO1xuICAgIHRoaXMuY2FuYXJ5VGVzdFByb3BzID0gcHJvcHMuY2FuYXJ5VGVzdFByb3BzO1xuICAgIHRoaXMuZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPVxuICAgICAgcHJvcHMuZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBwcm9wcy5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5kZWZhdWx0Q29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgPVxuICAgICAgcHJvcHMuZGVmYXVsdENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gb3BlcmF0aW9uIHRvIHRoaXMgc2VydmljZSBhbmQgc2V0cyB0aGUgb3BlcmF0aW9uJ3NcbiAgICogc2VydmljZSBwcm9wZXJ0eVxuICAgKi9cbiAgYWRkT3BlcmF0aW9uKG9wZXJhdGlvbjogSU9wZXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMub3BlcmF0aW9ucy5wdXNoKG9wZXJhdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -24,5 +24,5 @@ class ServiceMetricDetails {
24
24
  }
25
25
  exports.ServiceMetricDetails = ServiceMetricDetails;
26
26
  _a = JSII_RTTI_SYMBOL_1;
27
- ServiceMetricDetails[_a] = { fqn: "@cdklabs/multi-az-observability.ServiceMetricDetails", version: "0.0.1-alpha.12" };
27
+ ServiceMetricDetails[_a] = { fqn: "@cdklabs/multi-az-observability.ServiceMetricDetails", version: "0.0.1-alpha.13" };
28
28
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZU1ldHJpY0RldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvU2VydmljZU1ldHJpY0RldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFPQTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBMEUvQixZQUFZLEtBQWdDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDakQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQy9DLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztRQUMvRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQzs7QUF2Rkgsb0RBd0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBVbml0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9JU2VydmljZU1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcyB9IGZyb20gJy4vcHJvcHMvU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcyc7XG5cbi8qKlxuICogRGVmYXVsdCBtZXRyaWMgZGV0YWlscyBmb3IgYSBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlTWV0cmljRGV0YWlscyBpbXBsZW1lbnRzIElTZXJ2aWNlTWV0cmljRGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBtZXRyaWMgbmFtZXNwYWNlIGZvciB0aGVzZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNOYW1lc3BhY2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzIG9mIHN1Y2Nlc3MgaW5kaWNhdGluZyBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzTWV0cmljTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2YgZmF1bHQgaW5kaWNhdGluZyBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBmYXVsdE1ldHJpY05hbWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHN0YXRpc3RpYyB1c2VkIGZvciBhbGFybXMsIGZvciBhdmFpbGFiaWxpdHkgbWV0cmljcyB0aGlzIHNob3VsZFxuICAgKiBiZSBcIlN1bVwiLCBmb3IgbGF0ZW5jeSBtZXRyaWNzIGl0IGNvdWxkIHNvbWV0aGluZyBsaWtlIFwicDk5XCIgb3IgXCJwOTkuOVwiXG4gICAqL1xuICByZWFkb25seSBhbGFybVN0YXRpc3RpYzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljcyBmb3Igc3VjY2Vzc2VzIHlvdSB3YW50IHRvIGFwcGVhciBvbiBkYXNoYm9hcmRzLCBmb3IgZXhhbXBsZSwgd2l0aFxuICAgKiBsYXRlbmN5IG1ldHJpY3MsIHlvdSBtaWdodCB3YW50IHA1MCwgcDk5LCBhbmQgdG05OS4gRm9yIGF2YWlsYWJpbGl0eVxuICAgKiBtZXRyaWNzIHRoaXMgd2lsbCB0eXBpY2FsbHkganVzdCBiZSBcIlN1bVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEZvciBhdmFpbGFiaWxpdHkgbWV0cmljcywgdGhpcyB3aWxsIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgd2lsbCBiZSBqdXN0IFwicDk5XCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYXBoZWRTdWNjZXNzU3RhdGlzdGljcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljcyBmb3IgZmF1bHRzIHlvdSB3YW50IHRvIGFwcGVhciBvbiBkYXNoYm9hcmRzLCBmb3IgZXhhbXBsZSwgd2l0aFxuICAgKiBsYXRlbmN5IG1ldHJpY3MsIHlvdSBtaWdodCB3YW50IHA1MCwgcDk5LCBhbmQgdG05OS4gRm9yIGF2YWlsYWJpbGl0eVxuICAgKiBtZXRyaWNzIHRoaXMgd2lsbCB0eXBpY2FsbHkganVzdCBiZSBcIlN1bVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEZvciBhdmFpbGFiaWxpdHkgbWV0cmljcywgdGhpcyB3aWxsIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgd2lsbCBiZSBqdXN0IFwicDk5XCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYXBoZWRGYXVsdFN0YXRpc3RpY3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXQgdXNlZCBmb3IgdGhlc2UgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgdW5pdDogVW5pdDtcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWx0aXkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBldmFsdWF0aW9uUGVyaW9kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludHMgdG8gYWxhcm0gb24gZm9yIGxhdGVuY3kgYW5kIGF2YWlsYWJpbGl0eSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFwb2ludHNUb0FsYXJtOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIGFsYXJtcyBhc3NvY2lhdGVkIHdpdGggc3VjY2VzcyBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBtZWFzdXJpbmdcbiAgICogc3VjY2VzcyByYXRlLCB0aGUgdGhyZXNob2xkIG1heSBiZSA5OSwgbWVhbmluZyB5b3Ugd291bGQgd2FudCBhbiBhbGFybSB0aGF0IHRyaWdnZXJzXG4gICAqIGlmIHN1Y2Nlc3MgZHJvcHMgYmVsb3cgOTklLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIGFsYXJtcyBhc3NvY2lhdGVkIHdpdGggZmF1bHQgbWV0cmljcywgZm9yIGV4YW1wbGUgaWYgbWVhc3VyaW5nXG4gICAqIGZhdWx0IHJhdGUsIHRoZSB0aHJlc2hvbGQgbWF5IGJlIDEsIG1lYW5pbmcgeW91IHdvdWxkIHdhbnQgYW4gYWxhcm0gdGhhdCB0cmlnZ2Vyc1xuICAgKiBpZiB0aGUgZmF1bHQgcmF0ZSBnb2VzIGFib3ZlIDElLlxuICAgKi9cbiAgcmVhZG9ubHkgZmF1bHRBbGFybVRocmVzaG9sZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZXJ2aWNlTWV0cmljRGV0YWlsc1Byb3BzKSB7XG4gICAgdGhpcy5hbGFybVN0YXRpc3RpYyA9IHByb3BzLmFsYXJtU3RhdGlzdGljO1xuICAgIHRoaXMuZGF0YXBvaW50c1RvQWxhcm0gPSBwcm9wcy5kYXRhcG9pbnRzVG9BbGFybTtcbiAgICB0aGlzLmV2YWx1YXRpb25QZXJpb2RzID0gcHJvcHMuZXZhbHVhdGlvblBlcmlvZHM7XG4gICAgdGhpcy5mYXVsdEFsYXJtVGhyZXNob2xkID0gcHJvcHMuZmF1bHRBbGFybVRocmVzaG9sZDtcbiAgICB0aGlzLmZhdWx0TWV0cmljTmFtZXMgPSBwcm9wcy5mYXVsdE1ldHJpY05hbWVzO1xuICAgIHRoaXMuZ3JhcGhlZEZhdWx0U3RhdGlzdGljcyA9IHByb3BzLmdyYXBoZWRGYXVsdFN0YXRpc3RpY3M7XG4gICAgdGhpcy5ncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3MgPSBwcm9wcy5ncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3M7XG4gICAgdGhpcy5tZXRyaWNOYW1lc3BhY2UgPSBwcm9wcy5tZXRyaWNOYW1lc3BhY2U7XG4gICAgdGhpcy5wZXJpb2QgPSBwcm9wcy5wZXJpb2Q7XG4gICAgdGhpcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQgPSBwcm9wcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQ7XG4gICAgdGhpcy5zdWNjZXNzTWV0cmljTmFtZXMgPSBwcm9wcy5zdWNjZXNzTWV0cmljTmFtZXM7XG4gICAgdGhpcy51bml0ID0gcHJvcHMudW5pdDtcbiAgfVxufVxuIl19
@@ -59,5 +59,5 @@ class MetricDimensions {
59
59
  }
60
60
  exports.MetricDimensions = MetricDimensions;
61
61
  _a = JSII_RTTI_SYMBOL_1;
62
- MetricDimensions[_a] = { fqn: "@cdklabs/multi-az-observability.MetricDimensions", version: "0.0.1-alpha.12" };
62
+ MetricDimensions[_a] = { fqn: "@cdklabs/multi-az-observability.MetricDimensions", version: "0.0.1-alpha.13" };
63
63
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljRGltZW5zaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9wcm9wcy9NZXRyaWNEaW1lbnNpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUV0Qzs7O0dBR0c7QUFDSCxNQUFhLGdCQUFnQjtJQXdCM0IsWUFDRSxnQkFBMkMsRUFDM0MscUJBQTZCLEVBQzdCLFNBQWtCO1FBRWxCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGVBQWUsQ0FDYixrQkFBMEIsRUFDMUIsTUFBYztRQUVkLElBQUksR0FBRyxHQUE4QixFQUFFLENBQUM7UUFDeEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1FBRXJELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILGtCQUFrQixDQUFDLE1BQWM7UUFDL0IsSUFBSSxHQUFHLEdBQThCLEVBQUUsQ0FBQztRQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFsRkgsNENBbUZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGdldCBvcGVyYXRpb24gc3BlY2lmaWMgbWV0cmljIGRpbWVuc2lvbnNcbiAqIGZvciBtZXRyaWNzIGF0IHRoZSByZWdpb25hbCBsZXZlbCBhcyB3ZWxsIGFzIEF2YWlsYWJpbGl0eSBab25lIGxldmVsXG4gKi9cbmV4cG9ydCBjbGFzcyBNZXRyaWNEaW1lbnNpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIHRoYXQgYXJlIHRoZSBzYW1lIGZvciBhbGwgQXZhaWxhYmlsaXR5IFpvbmVzIGZvciBleGFtcGxlOlxuICAgKiB7XG4gICAqICAgXCJPcGVyYXRpb25cIjogXCJyaWRlXCIsXG4gICAqICAgXCJTZXJ2aWNlXCI6IFwiV2lsZFJ5ZGVzXCJcbiAgICogfVxuICAgKi9cbiAgc3RhdGljRGltZW5zaW9uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGtleSB1c2VkIHRvIHNwZWNpZnkgYW4gQXZhaWxhYmlsaXR5IFpvbmUgc3BlY2lmaWMgbWV0cmljIGRpbWVuc2lvbiwgZm9yXG4gICAqIGV4YW1wbGU6IFwiQVotSURcIlxuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkS2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgdXNlZCBmb3IgdGhlIFJlZ2lvbiBpbiB5b3VyIGRpbWVuc2lvbnMsIGlmIHlvdSBwcm92aWRlIG9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIHJlZ2lvbiBzcGVjaWZpYyBrZXkgYW5kIHZhbHVlIGlzIG5vdCBhZGRlZCB0byB5b3VyXG4gICAqIHpvbmFsIGFuZCByZWdpb25hbCBtZXRyaWMgZGltZW5zaW9uc1xuICAgKi9cbiAgcmVnaW9uS2V5Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHN0YXRpY0RpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgYXZhaWxhYmlsaXR5Wm9uZUlkS2V5OiBzdHJpbmcsXG4gICAgcmVnaW9uS2V5Pzogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLnN0YXRpY0RpbWVuc2lvbnMgPSBzdGF0aWNEaW1lbnNpb25zO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlkS2V5ID0gYXZhaWxhYmlsaXR5Wm9uZUlkS2V5O1xuICAgIHRoaXMucmVnaW9uS2V5ID0gcmVnaW9uS2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHpvbmFsIGRpbWVuc2lvbnMgZm9yIHRoZXNlIG1ldHJpY3MgYnkgY29tYmluaW5nIHRoZSBzdGF0aWNcbiAgICogbWV0cmljIGRpbWVuc2lvbnMgd2l0aCB0aGUga2V5cyBwcm92aWRlZCBmb3IgQXZhaWxhYmlsaXR5IFpvbmUgYW5kXG4gICAqIG9wdGlvbmFsIFJlZ2lvbiwgZXhwZWN0ZWQgdG8gcmV0dXJuIHNvbWV0aGluZyBsaWtlXG4gICAqIHtcbiAgICogICBcIlJlZ2lvblwiOiBcInVzLWVhc3QtMVwiLFxuICAgKiAgIFwiQVotSURcIjogXCJ1c2UxLWF6MVwiLFxuICAgKiAgIFwiT3BlcmF0aW9uXCI6IFwicmlkZVwiLFxuICAgKiAgIFwiU2VydmljZVwiOiBcIldpbGRSeWRlc1wiXG4gICAqIH1cbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVJZFxuICAgKiBAcGFyYW0gcmVnaW9uXG4gICAqL1xuICB6b25hbERpbWVuc2lvbnMoXG4gICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGxldCB0bXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBPYmplY3QuYXNzaWduKHRtcCwgdGhpcy5zdGF0aWNEaW1lbnNpb25zKTtcbiAgICB0bXBbdGhpcy5hdmFpbGFiaWxpdHlab25lSWRLZXldID0gYXZhaWxhYmlsaXR5Wm9uZUlkO1xuXG4gICAgaWYgKHRoaXMucmVnaW9uS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRtcFt0aGlzLnJlZ2lvbktleV0gPSByZWdpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHRtcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByZWdpb25hbCBkaW1lbnNpb25zIGZvciB0aGVzZSBtZXRyaWNzIGJ5IGNvbWJpbmluZyB0aGUgc3RhdGljXG4gICAqIG1ldHJpYyBkaW1lbnNpb25zIHdpdGggdGhlIGtleXMgcHJvdmlkZWQgdGhlIG9wdGlvbmFsIFJlZ2lvbiBrZXksXG4gICAqIGV4cGVjdGVkIHRvIHJldHVybiBzb21ldGhpbmcgbGlrZVxuICAgKiB7XG4gICAqICAgXCJSZWdpb25cIjogXCJ1cy1lYXN0LTFcIixcbiAgICogICBcIk9wZXJhdGlvblwiOiBcInJpZGVcIixcbiAgICogICBcIlNlcnZpY2VcIjogXCJXaWxkUnlkZXNcIlxuICAgKiB9XG4gICAqIEBwYXJhbSByZWdpb25cbiAgICovXG4gIHJlZ2lvbmFsRGltZW5zaW9ucyhyZWdpb246IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGxldCB0bXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBPYmplY3QuYXNzaWduKHRtcCwgdGhpcy5zdGF0aWNEaW1lbnNpb25zKTtcblxuICAgIGlmICh0aGlzLnJlZ2lvbktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0bXBbdGhpcy5yZWdpb25LZXldID0gcmVnaW9uO1xuICAgIH1cblxuICAgIHJldHVybiB0bXA7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -53,7 +53,7 @@
53
53
  "@types/jest": "^29.5.14",
54
54
  "@types/node": "^18",
55
55
  "aws-cdk-lib": "2.170.0",
56
- "cdk-nag": "^2.35.45",
56
+ "cdk-nag": "^2.35.46",
57
57
  "cdklabs-projen-project-types": "^0.1.211",
58
58
  "commit-and-tag-version": "^12",
59
59
  "constructs": "10.0.5",
@@ -92,7 +92,7 @@
92
92
  "publishConfig": {
93
93
  "access": "public"
94
94
  },
95
- "version": "0.0.1-alpha.12",
95
+ "version": "0.0.1-alpha.13",
96
96
  "jest": {
97
97
  "coverageProvider": "v8",
98
98
  "roots": [