@aws-cdk/aws-imagebuilder-alpha 2.234.1-alpha.0 → 2.235.1-alpha.0

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.
@@ -90,6 +90,9 @@ var LifecyclePolicyResourceType;
90
90
  LifecyclePolicyResourceType["CONTAINER_IMAGE"] = "CONTAINER_IMAGE";
91
91
  })(LifecyclePolicyResourceType || (exports.LifecyclePolicyResourceType = LifecyclePolicyResourceType = {}));
92
92
  class LifecyclePolicyBase extends cdk.Resource {
93
+ /**
94
+ * [disable-awslint:no-grants]
95
+ */
93
96
  grant(grantee, ...actions) {
94
97
  return iam.Grant.addToPrincipal({
95
98
  grantee,
@@ -98,6 +101,9 @@ class LifecyclePolicyBase extends cdk.Resource {
98
101
  scope: this,
99
102
  });
100
103
  }
104
+ /**
105
+ * [disable-awslint:no-grants]
106
+ */
101
107
  grantRead(grantee) {
102
108
  return this.grant(grantee, 'imagebuilder:GetLifecyclePolicy');
103
109
  }
@@ -121,7 +127,7 @@ let LifecyclePolicy = (() => {
121
127
  LifecyclePolicy = _classThis = _classDescriptor.value;
122
128
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
123
129
  }
124
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.234.1-alpha.0" };
130
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.235.1-alpha.0" };
125
131
  /** Uniquely identifies this class. */
126
132
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.LifecyclePolicy';
127
133
  /**
@@ -456,4 +462,4 @@ let LifecyclePolicy = (() => {
456
462
  return LifecyclePolicy = _classThis;
457
463
  })();
458
464
  exports.LifecyclePolicy = LifecyclePolicy;
459
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpZmVjeWNsZS1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFDbEUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUkxRSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztBQW9DOUY7O0dBRUc7QUFDSCxJQUFZLHlCQWFYO0FBYkQsV0FBWSx5QkFBeUI7SUFDbkM7O09BRUc7SUFDSCw4Q0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILG9EQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gsZ0RBQW1CLENBQUE7QUFDckIsQ0FBQyxFQWJXLHlCQUF5Qix5Q0FBekIseUJBQXlCLFFBYXBDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQVVYO0FBVkQsV0FBWSxxQkFBcUI7SUFDL0I7O09BRUc7SUFDSCw0Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQVVoQztBQUVEOztHQUVHO0FBQ0gsSUFBWSwyQkFVWDtBQVZELFdBQVksMkJBQTJCO0lBQ3JDOztPQUVHO0lBQ0gsc0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrRUFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBVlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFVdEM7QUF5UEQsTUFBZSxtQkFBb0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQUk5QyxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FB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QUksRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsMkNBQTJDLFVBQVUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BHO1FBRU8sMkJBQTJCO1lBQ2pDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sQ0FBQyw2RkFBNkY7WUFDdkcsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLDhEQUE4RCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RHLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLCtDQUErQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9EQUFvRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUMxRCxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQywyQ0FBMkMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRixDQUFDO1NBQ0Y7O1lBM1pVLHVEQUFlOzs7OztBQUFmLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkxpZmVjeWNsZVBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJUmVjaXBlQmFzZSB9IGZyb20gJy4vcmVjaXBlLWJhc2UnO1xuXG5jb25zdCBMSUZFQ1lDTEVfUE9MSUNZX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuTGlmZWN5Y2xlUG9saWN5Jyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgTGlmZWN5Y2xlIFBvbGljeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTGlmZWN5Y2xlUG9saWN5IGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgLSBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBvbiB0aGUgcmVzb3VyY2VzIHdoaWNoIHRoZSBwb2xpY3kgYXBwbGllcyB0b1xuICovXG5leHBvcnQgZW51bSBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBydWxlIHNob3VsZCBkZWxldGUgdGhlIHJlc291cmNlIHdoZW4gaXQgaXMgYXBwbGllZFxuICAgKi9cbiAgREVMRVRFID0gJ0RFTEVURScsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcnVsZSBzaG91bGQgZGVwcmVjYXRlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERFUFJFQ0FURSA9ICdERVBSRUNBVEUnLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHJ1bGUgc2hvdWxkIGRpc2FibGUgdGhlIHJlc291cmNlIHdoZW4gaXQgaXMgYXBwbGllZFxuICAgKi9cbiAgRElTQUJMRSA9ICdESVNBQkxFJyxcbn1cblxuLyoqXG4gKiBUaGUgc3RhdHVzIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LCBpbmRpY2F0aW5nIHdoZXRoZXIgaXQgd2lsbCBydW5cbiAqL1xuZXhwb3J0IGVudW0gTGlmZWN5Y2xlUG9saWN5U3RhdHVzIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBsaWZlY3ljbGUgcG9saWN5IHNob3VsZCBiZSBlbmFibGVkXG4gICAqL1xuICBFTkFCTEVEID0gJ0VOQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgdHlwZSB3aGljaCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBpcyBhcHBsaWVkIHRvXG4gKi9cbmV4cG9ydCBlbnVtIExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBvbGljeSBhcHBsaWVzIHRvIEFNSS1iYXNlZCBpbWFnZXNcbiAgICovXG4gIEFNSV9JTUFHRSA9ICdBTUlfSU1BR0UnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBvbGljeSBhcHBsaWVzIHRvIGNvbnRhaW5lciBpbWFnZXNcbiAgICovXG4gIENPTlRBSU5FUl9JTUFHRSA9ICdDT05UQUlORVJfSU1BR0UnLFxufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5QWN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBvbiB0aGUgcmVzb3VyY2VzIHNlbGVjdGVkIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IExpZmVjeWNsZVBvbGljeUFjdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBBTUlzIGluIHRoZSBzY29wZSBvZiB0aGUgbGlmZWN5Y2xlIHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlIGZvciBBTUktYmFzZWQgcG9saWNpZXMsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUFtaXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgY29udGFpbmVycyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgY29udGFpbmVyLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDb250YWluZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHNuYXBzaG90cyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgQU1JLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVTbmFwc2hvdHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSByZXNvdXJjZSBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUZpbHRlciB7XG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgYWdlIGZpbHRlciB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBhIGNvdW50IGZpbHRlciBpcyBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbiBhZ2UgZmlsdGVyIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlRmlsdGVyPzogTGlmZWN5Y2xlUG9saWN5QWdlRmlsdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgY291bnQgZmlsdGVyIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGFuIGFnZSBmaWx0ZXIgaXMgcHJvdmlkZWQuIE90aGVyd2lzZSwgYSBjb3VudCBmaWx0ZXIgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSBjb3VudEZpbHRlcj86IExpZmVjeWNsZVBvbGljeUNvdW50RmlsdGVyO1xufVxuXG4vKipcbiAqIFRoZSBjb3VudC1iYXNlZCBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gYSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lDb3VudEZpbHRlciB7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgcmVzb3VyY2VzIHRvIGtlZXAgb24gaGFuZCBhcyBwYXJ0IG9mIHJlc291cmNlIGZpbHRlcmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgY291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgYWdlLWJhc2VkIGZpbHRlcmluZyB0byBhcHBseSBpbiBhIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFnZUZpbHRlciB7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBhZ2Ugb2YgdGhlIHJlc291cmNlIHRvIGZpbHRlci4gVGhlIHByb3ZpZGVkIGR1cmF0aW9uIHdpbGwgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdFxuICAgKiBkYXkvd2Vlay9tb250aC95ZWFyIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlOiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEZvciBhZ2UtYmFzZWQgZmlsdGVycywgdGhlIG51bWJlciBvZiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgdG8ga2VlcCBvbiBoYW5kIG9uY2UgdGhlIHJ1bGUgaXMgYXBwbGllZC4gVGhlIHZhbHVlXG4gICAqIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgcmV0YWluQXRMZWFzdD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5SW1hZ2VFeGNsdXNpb25SdWxlcyB7XG4gIC8qKlxuICAgKiBFeGNsdWRlcyBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgd2l0aCBhbnkgb2YgdGhlIHByb3ZpZGVkIHRhZ3MgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBydWxlcyB0byBhcHBseSBmb3IgZXhjbHVkaW5nIEFNSXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5QW1pRXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogRXhjbHVkZXMgcHVibGljIEFNSXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlIGlmIHRydWVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzUHVibGljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXhjbHVkZXMgQU1JcyB3aGljaCB3ZXJlIGxhdW5jaGVkIGZyb20gd2l0aGluIHRoZSBwcm92aWRlZCBkdXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsYXN0TGF1bmNoZWQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggcmVzaWRlIGluIGFueSBvZiB0aGUgcHJvdmlkZWQgcmVnaW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSByZWdpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggYXJlIHNoYXJlZCB3aXRoIGFueSBvZiB0aGUgcHJvdmlkZWQgc2hhcmVkIGFjY291bnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZEFjY291bnRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggaGF2ZSBhbnkgb2YgdGhlIHByb3ZpZGVkIHRhZ3MgYXBwbGllZCB0byBpdFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyByZXNvdXJjZXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5RXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiB0aGUgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlRXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lJbWFnZUV4Y2x1c2lvblJ1bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiB0aGUgQU1JXG4gICAqL1xuICByZWFkb25seSBhbWlFeGNsdXNpb25SdWxlcz86IExpZmVjeWNsZVBvbGljeUFtaUV4Y2x1c2lvblJ1bGVzO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lEZXRhaWwge1xuICAvKipcbiAgICogVGhlIGFjdGlvbiB0byBwZXJmb3JtIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbjogTGlmZWN5Y2xlUG9saWN5QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgZmlsdGVyaW5nIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcjogTGlmZWN5Y2xlUG9saWN5RmlsdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyByZXNvdXJjZXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9uIHJ1bGVzIGFyZSBhcHBsaWVkIG9uIGFueSByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lFeGNsdXNpb25SdWxlcztcbn1cblxuLyoqXG4gKiBTZWxlY3Rpb24gY3JpdGVyaWEgZm9yIHRoZSByZXNvdXJjZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VTZWxlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgaW1hZ2UgcmVjaXBlcyBvciBjb250YWluZXIgcmVjaXBlcyB0byBhcHBseSB0aGUgbGlmZWN5Y2xlIHBvbGljeSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgdGFnIHNlbGVjdGlvbnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGF0IGxlYXN0IG9uZSByZWNpcGUgb3IgdGFnIHNlbGVjdGlvbiBtdXN0IGJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSByZWNpcGVzPzogSVJlY2lwZUJhc2VbXTtcblxuICAvKipcbiAgICogU2VsZWN0cyBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgY29udGFpbmluZyBhbnkgb2YgdGhlIHByb3ZpZGVkIHRhZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHJlY2lwZSBzZWxlY3Rpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgcmVjaXBlIG9yIHRhZyBzZWxlY3Rpb24gbXVzdCBiZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBMaWZlY3ljbGUgUG9saWN5IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5UHJvcHMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgSW1hZ2UgQnVpbGRlciByZXNvdXJjZSB0aGF0IHRoZSBsaWZlY3ljbGUgcG9saWN5IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbHM6IExpZmVjeWNsZVBvbGljeURldGFpbFtdO1xuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gY3JpdGVyaWEgZm9yIHRoZSByZXNvdXJjZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VTZWxlY3Rpb246IExpZmVjeWNsZVBvbGljeVJlc291cmNlU2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5hbWUgaXMgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBMaWZlY3ljbGVQb2xpY3lTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogTGlmZWN5Y2xlUG9saWN5U3RhdHVzO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdGhhdCBncmFudHMgSW1hZ2UgQnVpbGRlciBhY2Nlc3MgdG8gcnVuIGxpZmVjeWNsZSBhY3Rpb25zLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBhY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5hYnN0cmFjdCBjbGFzcyBMaWZlY3ljbGVQb2xpY3lCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUxpZmVjeWNsZVBvbGljeSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nO1xuICBhYnN0cmFjdCByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMubGlmZWN5Y2xlUG9saWN5QXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRMaWZlY3ljbGVQb2xpY3knKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgTGlmZWN5Y2xlIFBvbGljeS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtaW1hZ2UtbGlmZWN5Y2xlcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBMaWZlY3ljbGVQb2xpY3kgZXh0ZW5kcyBMaWZlY3ljbGVQb2xpY3lCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkxpZmVjeWNsZVBvbGljeSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBsaWZlY3ljbGUgcG9saWN5IGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21MaWZlY3ljbGVQb2xpY3lBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbGlmZWN5Y2xlUG9saWN5QXJuOiBzdHJpbmcpOiBJTGlmZWN5Y2xlUG9saWN5IHtcbiAgICBjb25zdCBsaWZlY3ljbGVQb2xpY3lOYW1lID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgIGxpZmVjeWNsZVBvbGljeUFybixcbiAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBMaWZlY3ljbGVQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm4gPSBsaWZlY3ljbGVQb2xpY3lBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZSA9IGxpZmVjeWNsZVBvbGljeU5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbGlmZWN5Y2xlIHBvbGljeSBnaXZlbiBpdHMgbmFtZS4gSWYgdGhlIG5hbWUgaXMgYSB0b2tlbiByZXByZXNlbnRpbmcgYSBkeW5hbWljIENsb3VkRm9ybWF0aW9uXG4gICAqIGV4cHJlc3Npb24sIHlvdSBtdXN0IGVuc3VyZSBhbGwgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGluIHRoZSBleHByZXNzaW9uIGFyZSBhbHJlYWR5IGxvd2VyY2FzZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxpZmVjeWNsZVBvbGljeU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nKTogSUxpZmVjeWNsZVBvbGljeSB7XG4gICAgcmV0dXJuIExpZmVjeWNsZVBvbGljeS5mcm9tTGlmZWN5Y2xlUG9saWN5QXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBpZCxcbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnbGlmZWN5Y2xlLXBvbGljeScsXG4gICAgICAgIHJlc291cmNlTmFtZTogbGlmZWN5Y2xlUG9saWN5TmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIExpZmVjeWNsZVBvbGljeS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNMaWZlY3ljbGVQb2xpY3koeDogYW55KTogeCBpcyBMaWZlY3ljbGVQb2xpY3kge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBMSUZFQ1lDTEVfUE9MSUNZX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciBsaWZlY3ljbGUgcG9saWN5IGV4ZWN1dGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlOiBpYW0uSVJvbGU7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMaWZlY3ljbGVQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5saWZlY3ljbGVQb2xpY3lOYW1lID8/XG4gICAgICAgIGNkay5MYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIGNkay5OYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgICBtYXhMZW5ndGg6IDEyOCxcbiAgICAgICAgICAgICAgc2VwYXJhdG9yOiAnLScsXG4gICAgICAgICAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogJy0nLFxuICAgICAgICAgICAgfSkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlTGlmZWN5Y2xlUG9saWN5TmFtZSgpO1xuICAgIHRoaXMudmFsaWRhdGVQb2xpY3kocHJvcHMpO1xuXG4gICAgdGhpcy5leGVjdXRpb25Sb2xlID1cbiAgICAgIHByb3BzLmV4ZWN1dGlvblJvbGUgPz9cbiAgICAgIG5ldyBpYW0uUm9sZSh0aGlzLCAnRXhlY3V0aW9uUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2ltYWdlYnVpbGRlci5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0VDMkltYWdlQnVpbGRlckxpZmVjeWNsZUV4ZWN1dGlvblBvbGljeScpLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICBjb25zdCBsaWZlY3ljbGVQb2xpY3kgPSBuZXcgQ2ZuTGlmZWN5Y2xlUG9saWN5KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcmVzb3VyY2VUeXBlOiBwcm9wcy5yZXNvdXJjZVR5cGUsXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGUucm9sZUFybixcbiAgICAgIHBvbGljeURldGFpbHM6IHRoaXMuYnVpbGRQb2xpY3lEZXRhaWxzKHByb3BzLnJlc291cmNlVHlwZSwgcHJvcHMuZGV0YWlscyksXG4gICAgICByZXNvdXJjZVNlbGVjdGlvbjoge1xuICAgICAgICAuLi4ocHJvcHMucmVzb3VyY2VTZWxlY3Rpb24ucmVjaXBlcyAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICByZWNpcGVzOiB0aGlzLmJ1aWxkUmVjaXBlcyhwcm9wcy5yZXNvdXJjZVR5cGUsIHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnJlY2lwZXMpLFxuICAgICAgICB9KSxcbiAgICAgICAgdGFnTWFwOiBwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi50YWdzLFxuICAgICAgfSxcbiAgICAgIHN0YXR1czogcHJvcHMuc3RhdHVzLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMubGlmZWN5Y2xlUG9saWN5TmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKGxpZmVjeWNsZVBvbGljeS5yZWYpO1xuICAgIHRoaXMubGlmZWN5Y2xlUG9saWN5QXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShsaWZlY3ljbGVQb2xpY3kuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2xpZmVjeWNsZS1wb2xpY3knLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIHBvbGljeSBkZXRhaWxzIHByb3BlcnR5IGludG8gdGhlIGBQb2xpY3lEZXRhaWxgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgVGhlIHJlc291cmNlIHR5cGUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogQHBhcmFtIGRldGFpbHMgVGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRQb2xpY3lEZXRhaWxzKFxuICAgIHJlc291cmNlVHlwZTogTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLFxuICAgIGRldGFpbHM6IExpZmVjeWNsZVBvbGljeURldGFpbFtdLFxuICApOiBDZm5MaWZlY3ljbGVQb2xpY3kuUG9saWN5RGV0YWlsUHJvcGVydHlbXSB7XG4gICAgcmV0dXJuIGRldGFpbHMubWFwKChkZXRhaWwpOiBDZm5MaWZlY3ljbGVQb2xpY3kuUG9saWN5RGV0YWlsUHJvcGVydHkgPT4ge1xuICAgICAgY29uc3QgYWN0aW9uID0gdGhpcy5idWlsZEFjdGlvbihyZXNvdXJjZVR5cGUsIGRldGFpbC5hY3Rpb24pO1xuICAgICAgY29uc3QgZXhjbHVzaW9uUnVsZXMgPVxuICAgICAgICBkZXRhaWwuZXhjbHVzaW9uUnVsZXMgIT09IHVuZGVmaW5lZCA/IHRoaXMuYnVpbGRFeGNsdXNpb25SdWxlcyhkZXRhaWwuZXhjbHVzaW9uUnVsZXMpIDogdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnZhbGlkYXRlUG9saWN5RGV0YWlsQWN0aW9uKHJlc291cmNlVHlwZSwgZGV0YWlsLmFjdGlvbiwgZXhjbHVzaW9uUnVsZXM/LmFtaXMpO1xuICAgICAgdGhpcy52YWxpZGF0ZVBvbGljeURldGFpbEZpbHRlcihkZXRhaWwuZmlsdGVyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgIHJldGFpbkF0TGVhc3Q6IGRldGFpbC5maWx0ZXIuYWdlRmlsdGVyPy5yZXRhaW5BdExlYXN0LFxuICAgICAgICAgIHR5cGU6IGRldGFpbC5maWx0ZXIuYWdlRmlsdGVyICE9PSB1bmRlZmluZWQgPyAnQUdFJyA6ICdDT1VOVCcsXG4gICAgICAgICAgLi4uKGRldGFpbC5maWx0ZXIuYWdlRmlsdGVyICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gdGhpcy5jb252ZXJ0RHVyYXRpb25Ub1RpbWVVbml0VmFsdWUoZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXIuYWdlKVxuICAgICAgICAgICAgOiB7IHZhbHVlOiBkZXRhaWwuZmlsdGVyLmNvdW50RmlsdGVyIS5jb3VudCB9KSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzICE9PSB1bmRlZmluZWQgJiYgeyBleGNsdXNpb25SdWxlcyB9KSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSByZWNpcGVzIHByb3BlcnR5IGluIHRoZSByZXNvdXJjZSBzZWxlY3Rpb24gaW50byB0aGUgYFJlY2lwZVNlbGVjdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSBUaGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBAcGFyYW0gcmVjaXBlcyBUaGUgcmVjaXBlcyBwYXNzZWQgaW4gdGhlIHByb3BzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUmVjaXBlcyhcbiAgICByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSxcbiAgICByZWNpcGVzOiBJUmVjaXBlQmFzZVtdLFxuICApOiBDZm5MaWZlY3ljbGVQb2xpY3kuUmVjaXBlU2VsZWN0aW9uUHJvcGVydHlbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHJlY2lwZXM/Lm1hcCgocmVjaXBlKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LlJlY2lwZVNlbGVjdGlvblByb3BlcnR5ID0+IHtcbiAgICAgIGlmIChyZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSkge1xuICAgICAgICBpZiAocmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQ09OVEFJTkVSX0lNQUdFKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgcmVjaXBlcyBpbiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIG11c3QgYWxsIGJlIGNvbnRhaW5lciByZWNpcGVzIGZvciBwb2xpY3kgdHlwZSAke0xpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5DT05UQUlORVJfSU1BR0V9YCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogcmVjaXBlLmltYWdlUmVjaXBlTmFtZSxcbiAgICAgICAgICBzZW1hbnRpY1ZlcnNpb246IHJlY2lwZS5pbWFnZVJlY2lwZVZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkpIHtcbiAgICAgICAgaWYgKHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkFNSV9JTUFHRSkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYHJlY2lwZXMgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBtdXN0IGFsbCBiZSBpbWFnZSByZWNpcGVzIGZvciBwb2xpY3kgdHlwZSAke0xpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5BTUlfSU1BR0V9YCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogcmVjaXBlLmNvbnRhaW5lclJlY2lwZU5hbWUsXG4gICAgICAgICAgc2VtYW50aWNWZXJzaW9uOiByZWNpcGUuY29udGFpbmVyUmVjaXBlVmVyc2lvbixcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdyZWNpcGVzIGluIHRoZSByZXNvdXJjZSBzZWxlY3Rpb24gbXVzdCBlaXRoZXIgYmUgYW4gSUltYWdlUmVjaXBlIG9yIElDb250YWluZXJSZWNpcGUnLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGV4Y2x1c2lvbiBydWxlcyBwcm9wZXJ0eSBpbnRvIHRoZSBgRXhjbHVzaW9uUnVsZXNgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBleGNsdXNpb25SdWxlcyBUaGUgZXhjbHVzaW9uIHJ1bGVzIGZvciByZXNvdXJjZXMgYXBwbGllZCBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRXhjbHVzaW9uUnVsZXMoXG4gICAgZXhjbHVzaW9uUnVsZXM6IExpZmVjeWNsZVBvbGljeUV4Y2x1c2lvblJ1bGVzLFxuICApOiBDZm5MaWZlY3ljbGVQb2xpY3kuRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYW1pRXhjbHVzaW9uUnVsZXM6IENmbkxpZmVjeWNsZVBvbGljeS5BbWlFeGNsdXNpb25SdWxlc1Byb3BlcnR5ID0ge1xuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5pc1B1YmxpYyAmJiB7IGlzUHVibGljOiBleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy5pc1B1YmxpYyB9KSxcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcz8ubGFzdExhdW5jaGVkICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBsYXN0TGF1bmNoZWQ6IHRoaXMuY29udmVydER1cmF0aW9uVG9UaW1lVW5pdFZhbHVlKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLmxhc3RMYXVuY2hlZCwgMzY1KSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5yZWdpb25zPy5sZW5ndGggJiYgeyByZWdpb25zOiBleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy5yZWdpb25zIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5zaGFyZWRBY2NvdW50cz8ubGVuZ3RoICYmIHtcbiAgICAgICAgc2hhcmVkQWNjb3VudHM6IGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLnNoYXJlZEFjY291bnRzLFxuICAgICAgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXM/LnRhZ3MgJiYgeyB0YWdNYXA6IGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLnRhZ3MgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IGNmbkV4Y2x1c2lvblJ1bGVzOiBDZm5MaWZlY3ljbGVQb2xpY3kuRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihPYmplY3Qua2V5cyhhbWlFeGNsdXNpb25SdWxlcykubGVuZ3RoICYmIHsgYW1pczogYW1pRXhjbHVzaW9uUnVsZXMgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuaW1hZ2VFeGNsdXNpb25SdWxlcyAhPT0gdW5kZWZpbmVkICYmIHsgdGFnTWFwOiBleGNsdXNpb25SdWxlcy5pbWFnZUV4Y2x1c2lvblJ1bGVzLnRhZ3MgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhleGNsdXNpb25SdWxlcykubGVuZ3RoID8gY2ZuRXhjbHVzaW9uUnVsZXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBhY3Rpb24gcHJvcGVydHkgaW50byB0aGUgYEFjdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSBUaGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gYmVpbmcgdGFrZW4gaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFjdGlvbihcbiAgICByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSxcbiAgICBhY3Rpb246IExpZmVjeWNsZVBvbGljeUFjdGlvbixcbiAgKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LkFjdGlvblByb3BlcnR5IHtcbiAgICBjb25zdCBpc0NvbnRhaW5lclBvbGljeSA9XG4gICAgICAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChyZXNvdXJjZVR5cGUpICYmIHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkNPTlRBSU5FUl9JTUFHRTtcbiAgICBjb25zdCBpc0FtaVBvbGljeSA9ICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHJlc291cmNlVHlwZSkgJiYgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQU1JX0lNQUdFO1xuXG4gICAgY29uc3QgYW1pcyA9IGFjdGlvbi5pbmNsdWRlQW1pcyA/PyAoaXNBbWlQb2xpY3kgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBzbmFwc2hvdHMgPSBhY3Rpb24uaW5jbHVkZVNuYXBzaG90cyA/PyAoaXNBbWlQb2xpY3kgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBjb250YWluZXJzID0gYWN0aW9uLmluY2x1ZGVDb250YWluZXJzID8/IChpc0NvbnRhaW5lclBvbGljeSA/IHRydWUgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGluY2x1ZGVSZXNvdXJjZXM6IENmbkxpZmVjeWNsZVBvbGljeS5JbmNsdWRlUmVzb3VyY2VzUHJvcGVydHkgPSB7XG4gICAgICAuLi4oYW1pcyAhPT0gdW5kZWZpbmVkICYmIHsgYW1pcyB9KSxcbiAgICAgIC4uLihzbmFwc2hvdHMgIT09IHVuZGVmaW5lZCAmJiB7IHNuYXBzaG90cyB9KSxcbiAgICAgIC4uLihjb250YWluZXJzICE9PSB1bmRlZmluZWQgJiYgeyBjb250YWluZXJzIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogYWN0aW9uLnR5cGUsXG4gICAgICAuLi4oT2JqZWN0LmtleXMoaW5jbHVkZVJlc291cmNlcykubGVuZ3RoICYmIHsgaW5jbHVkZVJlc291cmNlcyB9KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdG9wLWxldmVsIHByb3BlcnRpZXMgb2YgdGhlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BzIHBhc3NlZCBhcyBpbnB1dCB0byB0aGUgY29uc3RydWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5KHByb3BzOiBMaWZlY3ljbGVQb2xpY3lQcm9wcyk6IHZvaWQge1xuICAgIGlmIChwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzPy5sZW5ndGggJiYgT2JqZWN0LmtleXMocHJvcHMucmVzb3VyY2VTZWxlY3Rpb24udGFncyB8fCB7fSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigncmVzb3VyY2Ugc2VsZWN0aW9uIGNhbm5vdCBjb250YWluIGJvdGggcmVjaXBlcyBhbmQgdGFncycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICghcHJvcHMucmVzb3VyY2VTZWxlY3Rpb24ucmVjaXBlcz8ubGVuZ3RoICYmICFPYmplY3Qua2V5cyhwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi50YWdzIHx8IHt9KS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdyZXNvdXJjZSBzZWxlY3Rpb24gbXVzdCBjb250YWluIGVpdGhlciByZWNpcGVzIG9yIHRhZ3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGV0YWlscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdhIGxpZmVjeWNsZSBwb2xpY3kgbXVzdCBoYXZlIGF0IGxlYXN0IDEgcnVsZScsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5kZXRhaWxzLmxlbmd0aCA+IDMpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdhIGxpZmVjeWNsZSBwb2xpY3kgY2FuIG9ubHkgaGF2ZSB1cCB0byAzIHJ1bGVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aW9ucyA9IHByb3BzLmRldGFpbHMubWFwKChkZXRhaWwpID0+IGRldGFpbC5hY3Rpb24udHlwZSk7XG4gICAgaWYgKG5ldyBTZXQoYWN0aW9ucykuc2l6ZSAhPSBhY3Rpb25zLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2xpZmVjeWNsZSBwb2xpY3kgcnVsZXMgbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBhY3Rpb25zJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHBvbGljeSBkZXRhaWwgZmlsdGVyIHdpdGhpbiBhIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiBiZWluZyB0YWtlbiBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwYXJhbSBhbWlFeGNsdXNpb25SdWxlcyBUaGUgQU1JIGV4Y2x1c2lvbiBydWxlcyBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5RGV0YWlsQWN0aW9uKFxuICAgIHJlc291cmNlVHlwZTogTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLFxuICAgIGFjdGlvbjogTGlmZWN5Y2xlUG9saWN5QWN0aW9uLFxuICAgIGFtaUV4Y2x1c2lvblJ1bGVzOiBDZm5MaWZlY3ljbGVQb2xpY3kuQW1pRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSB8IGNkay5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHJlc291cmNlVHlwZSkgJiYgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQ09OVEFJTkVSX0lNQUdFKSB7XG4gICAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoYWN0aW9uLnR5cGUpICYmIGFjdGlvbi50eXBlICE9PSBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlLkRFTEVURSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigneW91IG1heSBvbmx5IHNwZWNpZnkgREVMRVRFIHJ1bGVzIGZvciBjb250YWluZXIgcG9saWNpZXMnLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5pbmNsdWRlQW1pcykge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigneW91IGNhbm5vdCBpbmNsdWRlIEFNSXMgaW4gYSBjb250YWluZXIgcG9saWN5JywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3Rpb24uaW5jbHVkZVNuYXBzaG90cykge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigneW91IGNhbm5vdCBpbmNsdWRlIHNuYXBzaG90cyBpbiBhIGNvbnRhaW5lciBwb2xpY3knLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFtaUV4Y2x1c2lvblJ1bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3lvdSBjYW5ub3QgZXhjbHVkZSBBTUlzIGluIGEgY29udGFpbmVyIHBvbGljeScsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHJlc291cmNlVHlwZSkgJiZcbiAgICAgIHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkFNSV9JTUFHRSAmJlxuICAgICAgYWN0aW9uLmluY2x1ZGVDb250YWluZXJzXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigneW91IGNhbm5vdCBpbmNsdWRlIGNvbnRhaW5lcnMgaW4gYW4gQU1JIHBvbGljeScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBwb2xpY3kgZGV0YWlsIGZpbHRlclxuICAgKlxuICAgKiBAcGFyYW0gZmlsdGVyIFRoZSBsaWZlY3ljbGUgcG9saWN5IHJlc291cmNlIGZpbHRlciBhcHBsaWVkIGluIHRoZSBydWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5RGV0YWlsRmlsdGVyKGZpbHRlcjogTGlmZWN5Y2xlUG9saWN5RmlsdGVyKSB7XG4gICAgaWYgKGZpbHRlci5hZ2VGaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXIuY291bnRGaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2VpdGhlciBhZ2UgY291bnQgY2FuIGJlIHNwZWNpZmllZCBpbiBhIHBvbGljeSBmaWx0ZXIsIGJ1dCBub3QgYm90aCcsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXIuYWdlRmlsdGVyID09PSB1bmRlZmluZWQgJiYgZmlsdGVyLmNvdW50RmlsdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd5b3UgbXVzdCBwcm92aWRlIGFuIGFnZSBvciBjb3VudCBmaWx0ZXIgaW4gdGhlIHBvbGljeScsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHJldGFpbkF0TGVhc3QgPSBmaWx0ZXIuYWdlRmlsdGVyPy5yZXRhaW5BdExlYXN0O1xuICAgIGlmIChyZXRhaW5BdExlYXN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChyZXRhaW5BdExlYXN0IDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJldGFpbkF0TGVhc3QgZmlsdGVyIHZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMScsIHRoaXMpO1xuICAgICAgfVxuICAgICAgaWYgKHJldGFpbkF0TGVhc3QgPiAxMCkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHJldGFpbkF0TGVhc3QgZmlsdGVyIHZhbHVlIG11c3QgYmUgYXQgbW9zdCAxMCcsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGBjZGsuRHVyYXRpb25gIGludG8gdGhlIHZhbHVlIGFuZCB1bml0IHdoaWNoIGlzIGFjY2VwdGVkIGFzIGZpbHRlciBhZ2UgYW5kIGxhc3QgbGF1bmNoZWQgYWdlIGluIHRoZVxuICAgKiBsaWZlY3ljbGUgcG9saWN5LiBUaGUgdmFsdWUgaXMgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCB3aG9sZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBkdXJhdGlvbiBUaGUgZHVyYXRpb24gdG8gY29udmVydFxuICAgKiBAcGFyYW0gdmFsdWVMaW1pdCBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSBzcGVjaWZpZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29udmVydER1cmF0aW9uVG9UaW1lVW5pdFZhbHVlKFxuICAgIGR1cmF0aW9uOiBjZGsuRHVyYXRpb24sXG4gICAgdmFsdWVMaW1pdDogbnVtYmVyID0gMTAwMCxcbiAgKTogeyB2YWx1ZTogbnVtYmVyOyB1bml0OiAnREFZUycgfCAnV0VFS1MnIHwgJ01PTlRIUycgfCAnWUVBUlMnIH0ge1xuICAgIGNvbnN0IERBWVNfUEVSX1dFRUsgPSA3O1xuICAgIGNvbnN0IERBWVNfUEVSX01PTlRIID0gMzA7XG4gICAgY29uc3QgREFZU19QRVJfWUVBUiA9IDM2NTtcblxuICAgIGNvbnN0IHZhbHVlSW5EYXlzID0gTWF0aC5jZWlsKGR1cmF0aW9uLnRvRGF5cygpKTtcbiAgICBpZiAodmFsdWVJbkRheXMgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHByb3ZpZGVkIGR1cmF0aW9uIG11c3QgYmUgYXQgbGVhc3QgMSBkYXknLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWVJbkRheXMgPD0gdmFsdWVMaW1pdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlSW5EYXlzLCB1bml0OiAnREFZUycgfTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUluV2Vla3MgPSBNYXRoLmNlaWwodmFsdWVJbkRheXMgLyBEQVlTX1BFUl9XRUVLKTtcbiAgICBpZiAodmFsdWVJbldlZWtzIDw9IHZhbHVlTGltaXQpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZUluV2Vla3MsIHVuaXQ6ICdXRUVLUycgfTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUluTW9udGhzID0gTWF0aC5jZWlsKHZhbHVlSW5EYXlzIC8gREFZU19QRVJfTU9OVEgpO1xuICAgIGlmICh2YWx1ZUluTW9udGhzIDw9IHZhbHVlTGltaXQpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZUluTW9udGhzLCB1bml0OiAnTU9OVEhTJyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlSW5ZZWFycyA9IE1hdGguY2VpbCh2YWx1ZUluRGF5cyAvIERBWVNfUEVSX1lFQVIpO1xuICAgIGlmICh2YWx1ZUluWWVhcnMgPD0gdmFsdWVMaW1pdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlSW5ZZWFycywgdW5pdDogJ1lFQVJTJyB9O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGB0aGUgcHJvdmlkZWQgZHVyYXRpb24gbXVzdCBiZSBsZXNzIHRoYW4gJHt2YWx1ZUxpbWl0fSB5ZWFyc2AsIHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUxpZmVjeWNsZVBvbGljeU5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBsaWZlY3ljbGVQb2xpY3lOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGxpZmVjeWNsZVBvbGljeU5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpZmVjeWNsZS1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFDbEUsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUkxRSxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztBQW9DOUY7O0dBRUc7QUFDSCxJQUFZLHlCQWFYO0FBYkQsV0FBWSx5QkFBeUI7SUFDbkM7O09BRUc7SUFDSCw4Q0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILG9EQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gsZ0RBQW1CLENBQUE7QUFDckIsQ0FBQyxFQWJXLHlCQUF5Qix5Q0FBekIseUJBQXlCLFFBYXBDO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLHFCQVVYO0FBVkQsV0FBWSxxQkFBcUI7SUFDL0I7O09BRUc7SUFDSCw0Q0FBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDhDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQVVoQztBQUVEOztHQUVHO0FBQ0gsSUFBWSwyQkFVWDtBQVZELFdBQVksMkJBQTJCO0lBQ3JDOztPQUVHO0lBQ0gsc0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrRUFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBVlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFVdEM7QUF5UEQsTUFBZSxtQkFBb0IsU0FBUSxHQUFHLENBQUMsUUFBUTtJQUlyRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPO1lBQ1AsT0FBTztZQUNQLFlB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S0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDaEQsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLDJDQUEyQyxVQUFVLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNwRztRQUVPLDJCQUEyQjtZQUNqQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxPQUFPLENBQUMsNkZBQTZGO1lBQ3ZHLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyw4REFBOEQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0RyxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQywrQ0FBK0MsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxvREFBb0QsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsMkNBQTJDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkYsQ0FBQztTQUNGOztZQTNaVSx1REFBZTs7Ozs7QUFBZiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5MaWZlY3ljbGVQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcblxuY29uc3QgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkxpZmVjeWNsZVBvbGljeScpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIExpZmVjeWNsZSBQb2xpY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpZmVjeWNsZVBvbGljeSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIHJlc291cmNlcyB3aGljaCB0aGUgcG9saWN5IGFwcGxpZXMgdG9cbiAqL1xuZXhwb3J0IGVudW0gTGlmZWN5Y2xlUG9saWN5QWN0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcnVsZSBzaG91bGQgZGVsZXRlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERFTEVURSA9ICdERUxFVEUnLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHJ1bGUgc2hvdWxkIGRlcHJlY2F0ZSB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBhcHBsaWVkXG4gICAqL1xuICBERVBSRUNBVEUgPSAnREVQUkVDQVRFJyxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBydWxlIHNob3VsZCBkaXNhYmxlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERJU0FCTEUgPSAnRElTQUJMRScsXG59XG5cbi8qKlxuICogVGhlIHN0YXR1cyBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeSwgaW5kaWNhdGluZyB3aGV0aGVyIGl0IHdpbGwgcnVuXG4gKi9cbmV4cG9ydCBlbnVtIExpZmVjeWNsZVBvbGljeVN0YXR1cyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBzaG91bGQgYmUgZW5hYmxlZFxuICAgKi9cbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbi8qKlxuICogVGhlIHJlc291cmNlIHR5cGUgd2hpY2ggdGhlIGxpZmVjeWNsZSBwb2xpY3kgaXMgYXBwbGllZCB0b1xuICovXG5leHBvcnQgZW51bSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwb2xpY3kgYXBwbGllcyB0byBBTUktYmFzZWQgaW1hZ2VzXG4gICAqL1xuICBBTUlfSU1BR0UgPSAnQU1JX0lNQUdFJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwb2xpY3kgYXBwbGllcyB0byBjb250YWluZXIgaW1hZ2VzXG4gICAqL1xuICBDT05UQUlORVJfSU1BR0UgPSAnQ09OVEFJTkVSX0lNQUdFJyxcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFjdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIHJlc291cmNlcyBzZWxlY3RlZCBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgQU1JcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgQU1JLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVBbWlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGNvbnRhaW5lcnMgaW4gdGhlIHNjb3BlIG9mIHRoZSBsaWZlY3ljbGUgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIGNvbnRhaW5lci1iYXNlZCBwb2xpY2llcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ29udGFpbmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBzbmFwc2hvdHMgaW4gdGhlIHNjb3BlIG9mIHRoZSBsaWZlY3ljbGUgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIEFNSS1iYXNlZCBwb2xpY2llcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlU25hcHNob3RzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgZmlsdGVyaW5nIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIHJlc291cmNlIGFnZSBmaWx0ZXIgdG8gYXBwbHkgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYSBjb3VudCBmaWx0ZXIgaXMgcHJvdmlkZWQuIE90aGVyd2lzZSwgYW4gYWdlIGZpbHRlciBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZUZpbHRlcj86IExpZmVjeWNsZVBvbGljeUFnZUZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGNvdW50IGZpbHRlciB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBhbiBhZ2UgZmlsdGVyIGlzIHByb3ZpZGVkLiBPdGhlcndpc2UsIGEgY291bnQgZmlsdGVyIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY291bnRGaWx0ZXI/OiBMaWZlY3ljbGVQb2xpY3lDb3VudEZpbHRlcjtcbn1cblxuLyoqXG4gKiBUaGUgY291bnQtYmFzZWQgZmlsdGVyaW5nIHRvIGFwcGx5IGluIGEgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5Q291bnRGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHJlc291cmNlcyB0byBrZWVwIG9uIGhhbmQgYXMgcGFydCBvZiByZXNvdXJjZSBmaWx0ZXJpbmdcbiAgICovXG4gIHJlYWRvbmx5IGNvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGFnZS1iYXNlZCBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gYSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lBZ2VGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gYWdlIG9mIHRoZSByZXNvdXJjZSB0byBmaWx0ZXIuIFRoZSBwcm92aWRlZCBkdXJhdGlvbiB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgICogZGF5L3dlZWsvbW9udGgveWVhciB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGFnZTogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBGb3IgYWdlLWJhc2VkIGZpbHRlcnMsIHRoZSBudW1iZXIgb2YgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIHRvIGtlZXAgb24gaGFuZCBvbmNlIHRoZSBydWxlIGlzIGFwcGxpZWQuIFRoZSB2YWx1ZVxuICAgKiBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHJldGFpbkF0TGVhc3Q/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUltYWdlRXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogRXhjbHVkZXMgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIHdpdGggYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFtaUV4Y2x1c2lvblJ1bGVzIHtcbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIHB1YmxpYyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZSBpZiB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1B1YmxpYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggd2VyZSBsYXVuY2hlZCBmcm9tIHdpdGhpbiB0aGUgcHJvdmlkZWQgZHVyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdExhdW5jaGVkPzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIHJlc2lkZSBpbiBhbnkgb2YgdGhlIHByb3ZpZGVkIHJlZ2lvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIGFyZSBzaGFyZWQgd2l0aCBhbnkgb2YgdGhlIHByb3ZpZGVkIHNoYXJlZCBhY2NvdW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRBY2NvdW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIGhhdmUgYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzIGFwcGxpZWQgdG8gaXRcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgcmVzb3VyY2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUV4Y2x1c2lvblJ1bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBydWxlcyB0byBhcHBseSBmb3IgZXhjbHVkaW5nIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlcyBmcm9tIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGNsdXNpb24gcnVsZXMgYXJlIGFwcGxpZWQgb24gdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSBpbWFnZUV4Y2x1c2lvblJ1bGVzPzogTGlmZWN5Y2xlUG9saWN5SW1hZ2VFeGNsdXNpb25SdWxlcztcblxuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgQU1JcyBmcm9tIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGNsdXNpb24gcnVsZXMgYXJlIGFwcGxpZWQgb24gdGhlIEFNSVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pRXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lBbWlFeGNsdXNpb25SdWxlcztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5RGV0YWlsIHtcbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSBhY3Rpb246IExpZmVjeWNsZVBvbGljeUFjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGZpbHRlcmluZyB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI6IExpZmVjeWNsZVBvbGljeUZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgcmVzb3VyY2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiBhbnkgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1c2lvblJ1bGVzPzogTGlmZWN5Y2xlUG9saWN5RXhjbHVzaW9uUnVsZXM7XG59XG5cbi8qKlxuICogU2VsZWN0aW9uIGNyaXRlcmlhIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgYXBwbGllcyB0b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeVJlc291cmNlU2VsZWN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGltYWdlIHJlY2lwZXMgb3IgY29udGFpbmVyIHJlY2lwZXMgdG8gYXBwbHkgdGhlIGxpZmVjeWNsZSBwb2xpY3kgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHRhZyBzZWxlY3Rpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgcmVjaXBlIG9yIHRhZyBzZWxlY3Rpb24gbXVzdCBiZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlcz86IElSZWNpcGVCYXNlW107XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGNvbnRhaW5pbmcgYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiByZWNpcGUgc2VsZWN0aW9ucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYXQgbGVhc3Qgb25lIHJlY2lwZSBvciB0YWcgc2VsZWN0aW9uIG11c3QgYmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgTGlmZWN5Y2xlIFBvbGljeSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIEltYWdlIEJ1aWxkZXIgcmVzb3VyY2UgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZXMuXG4gICAqL1xuICByZWFkb25seSBkZXRhaWxzOiBMaWZlY3ljbGVQb2xpY3lEZXRhaWxbXTtcblxuICAvKipcbiAgICogU2VsZWN0aW9uIGNyaXRlcmlhIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlU2VsZWN0aW9uOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgTGlmZWN5Y2xlUG9saWN5U3RhdHVzLkVOQUJMRURcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IExpZmVjeWNsZVBvbGljeVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHRoYXQgZ3JhbnRzIEltYWdlIEJ1aWxkZXIgYWNjZXNzIHRvIHJ1biBsaWZlY3ljbGUgYWN0aW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogYWN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuYWJzdHJhY3QgY2xhc3MgTGlmZWN5Y2xlUG9saWN5QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElMaWZlY3ljbGVQb2xpY3kge1xuICBhYnN0cmFjdCByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmxpZmVjeWNsZVBvbGljeUFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0TGlmZWN5Y2xlUG9saWN5Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIExpZmVjeWNsZSBQb2xpY3kuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLWltYWdlLWxpZmVjeWNsZXMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlUG9saWN5IGV4dGVuZHMgTGlmZWN5Y2xlUG9saWN5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5MaWZlY3ljbGVQb2xpY3knO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbGlmZWN5Y2xlIHBvbGljeSBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTGlmZWN5Y2xlUG9saWN5QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nKTogSUxpZmVjeWNsZVBvbGljeSB7XG4gICAgY29uc3QgbGlmZWN5Y2xlUG9saWN5TmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBsaWZlY3ljbGVQb2xpY3lBcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgTGlmZWN5Y2xlUG9saWN5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5QXJuID0gbGlmZWN5Y2xlUG9saWN5QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeU5hbWUgPSBsaWZlY3ljbGVQb2xpY3lOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGxpZmVjeWNsZSBwb2xpY3kgZ2l2ZW4gaXRzIG5hbWUuIElmIHRoZSBuYW1lIGlzIGEgdG9rZW4gcmVwcmVzZW50aW5nIGEgZHluYW1pYyBDbG91ZEZvcm1hdGlvblxuICAgKiBleHByZXNzaW9uLCB5b3UgbXVzdCBlbnN1cmUgYWxsIGFscGhhYmV0aWMgY2hhcmFjdGVycyBpbiB0aGUgZXhwcmVzc2lvbiBhcmUgYWxyZWFkeSBsb3dlcmNhc2VkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21MaWZlY3ljbGVQb2xpY3lOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxpZmVjeWNsZVBvbGljeU5hbWU6IHN0cmluZyk6IElMaWZlY3ljbGVQb2xpY3kge1xuICAgIHJldHVybiBMaWZlY3ljbGVQb2xpY3kuZnJvbUxpZmVjeWNsZVBvbGljeUFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2xpZmVjeWNsZS1wb2xpY3knLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGxpZmVjeWNsZVBvbGljeU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBMaWZlY3ljbGVQb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzTGlmZWN5Y2xlUG9saWN5KHg6IGFueSk6IHggaXMgTGlmZWN5Y2xlUG9saWN5IHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgbGlmZWN5Y2xlIHBvbGljeSBleGVjdXRpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZTogaWFtLklSb2xlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGlmZWN5Y2xlUG9saWN5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMubGlmZWN5Y2xlUG9saWN5TmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIExJRkVDWUNMRV9QT0xJQ1lfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUxpZmVjeWNsZVBvbGljeU5hbWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlUG9saWN5KHByb3BzKTtcblxuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9XG4gICAgICBwcm9wcy5leGVjdXRpb25Sb2xlID8/XG4gICAgICBuZXcgaWFtLlJvbGUodGhpcywgJ0V4ZWN1dGlvblJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdpbWFnZWJ1aWxkZXIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9FQzJJbWFnZUJ1aWxkZXJMaWZlY3ljbGVFeGVjdXRpb25Qb2xpY3knKSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgbGlmZWN5Y2xlUG9saWN5ID0gbmV3IENmbkxpZmVjeWNsZVBvbGljeSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHJlc291cmNlVHlwZTogcHJvcHMucmVzb3VyY2VUeXBlLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlLnJvbGVBcm4sXG4gICAgICBwb2xpY3lEZXRhaWxzOiB0aGlzLmJ1aWxkUG9saWN5RGV0YWlscyhwcm9wcy5yZXNvdXJjZVR5cGUsIHByb3BzLmRldGFpbHMpLFxuICAgICAgcmVzb3VyY2VTZWxlY3Rpb246IHtcbiAgICAgICAgLi4uKHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnJlY2lwZXMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgcmVjaXBlczogdGhpcy5idWlsZFJlY2lwZXMocHJvcHMucmVzb3VyY2VUeXBlLCBwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzKSxcbiAgICAgICAgfSksXG4gICAgICAgIHRhZ01hcDogcHJvcHMucmVzb3VyY2VTZWxlY3Rpb24udGFncyxcbiAgICAgIH0sXG4gICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxpZmVjeWNsZVBvbGljeU5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShsaWZlY3ljbGVQb2xpY3kucmVmKTtcbiAgICB0aGlzLmxpZmVjeWNsZVBvbGljeUFybiA9IHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUobGlmZWN5Y2xlUG9saWN5LmF0dHJBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgcmVzb3VyY2U6ICdsaWZlY3ljbGUtcG9saWN5JyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBwb2xpY3kgZGV0YWlscyBwcm9wZXJ0eSBpbnRvIHRoZSBgUG9saWN5RGV0YWlsYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSBkZXRhaWxzIFRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUG9saWN5RGV0YWlscyhcbiAgICByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSxcbiAgICBkZXRhaWxzOiBMaWZlY3ljbGVQb2xpY3lEZXRhaWxbXSxcbiAgKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LlBvbGljeURldGFpbFByb3BlcnR5W10ge1xuICAgIHJldHVybiBkZXRhaWxzLm1hcCgoZGV0YWlsKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LlBvbGljeURldGFpbFByb3BlcnR5ID0+IHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMuYnVpbGRBY3Rpb24ocmVzb3VyY2VUeXBlLCBkZXRhaWwuYWN0aW9uKTtcbiAgICAgIGNvbnN0IGV4Y2x1c2lvblJ1bGVzID1cbiAgICAgICAgZGV0YWlsLmV4Y2x1c2lvblJ1bGVzICE9PSB1bmRlZmluZWQgPyB0aGlzLmJ1aWxkRXhjbHVzaW9uUnVsZXMoZGV0YWlsLmV4Y2x1c2lvblJ1bGVzKSA6IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy52YWxpZGF0ZVBvbGljeURldGFpbEFjdGlvbihyZXNvdXJjZVR5cGUsIGRldGFpbC5hY3Rpb24sIGV4Y2x1c2lvblJ1bGVzPy5hbWlzKTtcbiAgICAgIHRoaXMudmFsaWRhdGVQb2xpY3lEZXRhaWxGaWx0ZXIoZGV0YWlsLmZpbHRlcik7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBmaWx0ZXI6IHtcbiAgICAgICAgICByZXRhaW5BdExlYXN0OiBkZXRhaWwuZmlsdGVyLmFnZUZpbHRlcj8ucmV0YWluQXRMZWFzdCxcbiAgICAgICAgICB0eXBlOiBkZXRhaWwuZmlsdGVyLmFnZUZpbHRlciAhPT0gdW5kZWZpbmVkID8gJ0FHRScgOiAnQ09VTlQnLFxuICAgICAgICAgIC4uLihkZXRhaWwuZmlsdGVyLmFnZUZpbHRlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IHRoaXMuY29udmVydER1cmF0aW9uVG9UaW1lVW5pdFZhbHVlKGRldGFpbC5maWx0ZXIuYWdlRmlsdGVyLmFnZSlcbiAgICAgICAgICAgIDogeyB2YWx1ZTogZGV0YWlsLmZpbHRlci5jb3VudEZpbHRlciEuY291bnQgfSksXG4gICAgICAgIH0sXG4gICAgICAgIC4uLihleGNsdXNpb25SdWxlcyAhPT0gdW5kZWZpbmVkICYmIHsgZXhjbHVzaW9uUnVsZXMgfSksXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgcmVjaXBlcyBwcm9wZXJ0eSBpbiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIGludG8gdGhlIGBSZWNpcGVTZWxlY3Rpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgVGhlIHJlc291cmNlIHR5cGUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogQHBhcmFtIHJlY2lwZXMgVGhlIHJlY2lwZXMgcGFzc2VkIGluIHRoZSBwcm9wc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFJlY2lwZXMoXG4gICAgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUsXG4gICAgcmVjaXBlczogSVJlY2lwZUJhc2VbXSxcbiAgKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LlJlY2lwZVNlbGVjdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiByZWNpcGVzPy5tYXAoKHJlY2lwZSk6IENmbkxpZmVjeWNsZVBvbGljeS5SZWNpcGVTZWxlY3Rpb25Qcm9wZXJ0eSA9PiB7XG4gICAgICBpZiAocmVjaXBlLl9pc0ltYWdlUmVjaXBlKCkpIHtcbiAgICAgICAgaWYgKHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkNPTlRBSU5FUl9JTUFHRSkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYHJlY2lwZXMgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBtdXN0IGFsbCBiZSBjb250YWluZXIgcmVjaXBlcyBmb3IgcG9saWN5IHR5cGUgJHtMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQ09OVEFJTkVSX0lNQUdFfWAsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHJlY2lwZS5pbWFnZVJlY2lwZU5hbWUsXG4gICAgICAgICAgc2VtYW50aWNWZXJzaW9uOiByZWNpcGUuaW1hZ2VSZWNpcGVWZXJzaW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5BTUlfSU1BR0UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgIGByZWNpcGVzIGluIHRoZSByZXNvdXJjZSBzZWxlY3Rpb24gbXVzdCBhbGwgYmUgaW1hZ2UgcmVjaXBlcyBmb3IgcG9saWN5IHR5cGUgJHtMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQU1JX0lNQUdFfWAsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHJlY2lwZS5jb250YWluZXJSZWNpcGVOYW1lLFxuICAgICAgICAgIHNlbWFudGljVmVyc2lvbjogcmVjaXBlLmNvbnRhaW5lclJlY2lwZVZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAncmVjaXBlcyBpbiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBleGNsdXNpb24gcnVsZXMgcHJvcGVydHkgaW50byB0aGUgYEV4Y2x1c2lvblJ1bGVzYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZXhjbHVzaW9uUnVsZXMgVGhlIGV4Y2x1c2lvbiBydWxlcyBmb3IgcmVzb3VyY2VzIGFwcGxpZWQgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEV4Y2x1c2lvblJ1bGVzKFxuICAgIGV4Y2x1c2lvblJ1bGVzOiBMaWZlY3ljbGVQb2xpY3lFeGNsdXNpb25SdWxlcyxcbiAgKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LkV4Y2x1c2lvblJ1bGVzUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGFtaUV4Y2x1c2lvblJ1bGVzOiBDZm5MaWZlY3ljbGVQb2xpY3kuQW1pRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcz8uaXNQdWJsaWMgJiYgeyBpc1B1YmxpYzogZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXMuaXNQdWJsaWMgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXM/Lmxhc3RMYXVuY2hlZCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgbGFzdExhdW5jaGVkOiB0aGlzLmNvbnZlcnREdXJhdGlvblRvVGltZVVuaXRWYWx1ZShleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy5sYXN0TGF1bmNoZWQsIDM2NSksXG4gICAgICB9KSxcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcz8ucmVnaW9ucz8ubGVuZ3RoICYmIHsgcmVnaW9uczogZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXMucmVnaW9ucyB9KSxcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcz8uc2hhcmVkQWNjb3VudHM/Lmxlbmd0aCAmJiB7XG4gICAgICAgIHNoYXJlZEFjY291bnRzOiBleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy5zaGFyZWRBY2NvdW50cyxcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy50YWdzICYmIHsgdGFnTWFwOiBleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy50YWdzIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBjZm5FeGNsdXNpb25SdWxlczogQ2ZuTGlmZWN5Y2xlUG9saWN5LkV4Y2x1c2lvblJ1bGVzUHJvcGVydHkgPSB7XG4gICAgICAuLi4oT2JqZWN0LmtleXMoYW1pRXhjbHVzaW9uUnVsZXMpLmxlbmd0aCAmJiB7IGFtaXM6IGFtaUV4Y2x1c2lvblJ1bGVzIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmltYWdlRXhjbHVzaW9uUnVsZXMgIT09IHVuZGVmaW5lZCAmJiB7IHRhZ01hcDogZXhjbHVzaW9uUnVsZXMuaW1hZ2VFeGNsdXNpb25SdWxlcy50YWdzIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXhjbHVzaW9uUnVsZXMpLmxlbmd0aCA/IGNmbkV4Y2x1c2lvblJ1bGVzIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgYWN0aW9uIHByb3BlcnR5IGludG8gdGhlIGBBY3Rpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgVGhlIHJlc291cmNlIHR5cGUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIGJlaW5nIHRha2VuIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRBY3Rpb24oXG4gICAgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUsXG4gICAgYWN0aW9uOiBMaWZlY3ljbGVQb2xpY3lBY3Rpb24sXG4gICk6IENmbkxpZmVjeWNsZVBvbGljeS5BY3Rpb25Qcm9wZXJ0eSB7XG4gICAgY29uc3QgaXNDb250YWluZXJQb2xpY3kgPVxuICAgICAgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocmVzb3VyY2VUeXBlKSAmJiByZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5DT05UQUlORVJfSU1BR0U7XG4gICAgY29uc3QgaXNBbWlQb2xpY3kgPSAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChyZXNvdXJjZVR5cGUpICYmIHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkFNSV9JTUFHRTtcblxuICAgIGNvbnN0IGFtaXMgPSBhY3Rpb24uaW5jbHVkZUFtaXMgPz8gKGlzQW1pUG9saWN5ID8gdHJ1ZSA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3Qgc25hcHNob3RzID0gYWN0aW9uLmluY2x1ZGVTbmFwc2hvdHMgPz8gKGlzQW1pUG9saWN5ID8gdHJ1ZSA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgY29udGFpbmVycyA9IGFjdGlvbi5pbmNsdWRlQ29udGFpbmVycyA/PyAoaXNDb250YWluZXJQb2xpY3kgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBpbmNsdWRlUmVzb3VyY2VzOiBDZm5MaWZlY3ljbGVQb2xpY3kuSW5jbHVkZVJlc291cmNlc1Byb3BlcnR5ID0ge1xuICAgICAgLi4uKGFtaXMgIT09IHVuZGVmaW5lZCAmJiB7IGFtaXMgfSksXG4gICAgICAuLi4oc25hcHNob3RzICE9PSB1bmRlZmluZWQgJiYgeyBzbmFwc2hvdHMgfSksXG4gICAgICAuLi4oY29udGFpbmVycyAhPT0gdW5kZWZpbmVkICYmIHsgY29udGFpbmVycyB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IGFjdGlvbi50eXBlLFxuICAgICAgLi4uKE9iamVjdC5rZXlzKGluY2x1ZGVSZXNvdXJjZXMpLmxlbmd0aCAmJiB7IGluY2x1ZGVSZXNvdXJjZXMgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIHRvcC1sZXZlbCBwcm9wZXJ0aWVzIG9mIHRoZSBwb2xpY3lcbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wcyBwYXNzZWQgYXMgaW5wdXQgdG8gdGhlIGNvbnN0cnVjdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBvbGljeShwcm9wczogTGlmZWN5Y2xlUG9saWN5UHJvcHMpOiB2b2lkIHtcbiAgICBpZiAocHJvcHMucmVzb3VyY2VTZWxlY3Rpb24ucmVjaXBlcz8ubGVuZ3RoICYmIE9iamVjdC5rZXlzKHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnRhZ3MgfHwge30pLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3Jlc291cmNlIHNlbGVjdGlvbiBjYW5ub3QgY29udGFpbiBib3RoIHJlY2lwZXMgYW5kIHRhZ3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb3BzLnJlc291cmNlU2VsZWN0aW9uLnJlY2lwZXM/Lmxlbmd0aCAmJiAhT2JqZWN0LmtleXMocHJvcHMucmVzb3VyY2VTZWxlY3Rpb24udGFncyB8fCB7fSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigncmVzb3VyY2Ugc2VsZWN0aW9uIG11c3QgY29udGFpbiBlaXRoZXIgcmVjaXBlcyBvciB0YWdzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRldGFpbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignYSBsaWZlY3ljbGUgcG9saWN5IG11c3QgaGF2ZSBhdCBsZWFzdCAxIHJ1bGUnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGV0YWlscy5sZW5ndGggPiAzKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignYSBsaWZlY3ljbGUgcG9saWN5IGNhbiBvbmx5IGhhdmUgdXAgdG8gMyBydWxlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbnMgPSBwcm9wcy5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwuYWN0aW9uLnR5cGUpO1xuICAgIGlmIChuZXcgU2V0KGFjdGlvbnMpLnNpemUgIT0gYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdsaWZlY3ljbGUgcG9saWN5IHJ1bGVzIG1heSBub3QgaGF2ZSBkdXBsaWNhdGUgYWN0aW9ucycsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYSBwb2xpY3kgZGV0YWlsIGZpbHRlciB3aXRoaW4gYSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSBUaGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gYmVpbmcgdGFrZW4gaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKiBAcGFyYW0gYW1pRXhjbHVzaW9uUnVsZXMgVGhlIEFNSSBleGNsdXNpb24gcnVsZXMgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBvbGljeURldGFpbEFjdGlvbihcbiAgICByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSxcbiAgICBhY3Rpb246IExpZmVjeWNsZVBvbGljeUFjdGlvbixcbiAgICBhbWlFeGNsdXNpb25SdWxlczogQ2ZuTGlmZWN5Y2xlUG9saWN5LkFtaUV4Y2x1c2lvblJ1bGVzUHJvcGVydHkgfCBjZGsuSVJlc29sdmFibGUgfCB1bmRlZmluZWQsXG4gICkge1xuICAgIGlmICghY2RrLlRva2VuLmlzVW5yZXNvbHZlZChyZXNvdXJjZVR5cGUpICYmIHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkNPTlRBSU5FUl9JTUFHRSkge1xuICAgICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKGFjdGlvbi50eXBlKSAmJiBhY3Rpb24udHlwZSAhPT0gTGlmZWN5Y2xlUG9saWN5QWN0aW9uVHlwZS5ERUxFVEUpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3lvdSBtYXkgb25seSBzcGVjaWZ5IERFTEVURSBydWxlcyBmb3IgY29udGFpbmVyIHBvbGljaWVzJywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3Rpb24uaW5jbHVkZUFtaXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3lvdSBjYW5ub3QgaW5jbHVkZSBBTUlzIGluIGEgY29udGFpbmVyIHBvbGljeScsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aW9uLmluY2x1ZGVTbmFwc2hvdHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3lvdSBjYW5ub3QgaW5jbHVkZSBzbmFwc2hvdHMgaW4gYSBjb250YWluZXIgcG9saWN5JywgdGhpcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbWlFeGNsdXNpb25SdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd5b3UgY2Fubm90IGV4Y2x1ZGUgQU1JcyBpbiBhIGNvbnRhaW5lciBwb2xpY3knLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChyZXNvdXJjZVR5cGUpICYmXG4gICAgICByZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5BTUlfSU1BR0UgJiZcbiAgICAgIGFjdGlvbi5pbmNsdWRlQ29udGFpbmVyc1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3lvdSBjYW5ub3QgaW5jbHVkZSBjb250YWluZXJzIGluIGFuIEFNSSBwb2xpY3knLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcG9saWN5IGRldGFpbCBmaWx0ZXJcbiAgICpcbiAgICogQHBhcmFtIGZpbHRlciBUaGUgbGlmZWN5Y2xlIHBvbGljeSByZXNvdXJjZSBmaWx0ZXIgYXBwbGllZCBpbiB0aGUgcnVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBvbGljeURldGFpbEZpbHRlcihmaWx0ZXI6IExpZmVjeWNsZVBvbGljeUZpbHRlcikge1xuICAgIGlmIChmaWx0ZXIuYWdlRmlsdGVyICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyLmNvdW50RmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdlaXRoZXIgYWdlIGNvdW50IGNhbiBiZSBzcGVjaWZpZWQgaW4gYSBwb2xpY3kgZmlsdGVyLCBidXQgbm90IGJvdGgnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoZmlsdGVyLmFnZUZpbHRlciA9PT0gdW5kZWZpbmVkICYmIGZpbHRlci5jb3VudEZpbHRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigneW91IG11c3QgcHJvdmlkZSBhbiBhZ2Ugb3IgY291bnQgZmlsdGVyIGluIHRoZSBwb2xpY3knLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXRhaW5BdExlYXN0ID0gZmlsdGVyLmFnZUZpbHRlcj8ucmV0YWluQXRMZWFzdDtcbiAgICBpZiAocmV0YWluQXRMZWFzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmV0YWluQXRMZWFzdCA8IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZXRhaW5BdExlYXN0IGZpbHRlciB2YWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDEnLCB0aGlzKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXRhaW5BdExlYXN0ID4gMTApIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSByZXRhaW5BdExlYXN0IGZpbHRlciB2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgMTAnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBgY2RrLkR1cmF0aW9uYCBpbnRvIHRoZSB2YWx1ZSBhbmQgdW5pdCB3aGljaCBpcyBhY2NlcHRlZCBhcyBmaWx0ZXIgYWdlIGFuZCBsYXN0IGxhdW5jaGVkIGFnZSBpbiB0aGVcbiAgICogbGlmZWN5Y2xlIHBvbGljeS4gVGhlIHZhbHVlIGlzIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3Qgd2hvbGUgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0gZHVyYXRpb24gVGhlIGR1cmF0aW9uIHRvIGNvbnZlcnRcbiAgICogQHBhcmFtIHZhbHVlTGltaXQgVGhlIG1heGltdW0gdmFsdWUgdGhhdCBjYW4gYmUgc3BlY2lmaWVkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnREdXJhdGlvblRvVGltZVVuaXRWYWx1ZShcbiAgICBkdXJhdGlvbjogY2RrLkR1cmF0aW9uLFxuICAgIHZhbHVlTGltaXQ6IG51bWJlciA9IDEwMDAsXG4gICk6IHsgdmFsdWU6IG51bWJlcjsgdW5pdDogJ0RBWVMnIHwgJ1dFRUtTJyB8ICdNT05USFMnIHwgJ1lFQVJTJyB9IHtcbiAgICBjb25zdCBEQVlTX1BFUl9XRUVLID0gNztcbiAgICBjb25zdCBEQVlTX1BFUl9NT05USCA9IDMwO1xuICAgIGNvbnN0IERBWVNfUEVSX1lFQVIgPSAzNjU7XG5cbiAgICBjb25zdCB2YWx1ZUluRGF5cyA9IE1hdGguY2VpbChkdXJhdGlvbi50b0RheXMoKSk7XG4gICAgaWYgKHZhbHVlSW5EYXlzIDwgMSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSBwcm92aWRlZCBkdXJhdGlvbiBtdXN0IGJlIGF0IGxlYXN0IDEgZGF5JywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlSW5EYXlzIDw9IHZhbHVlTGltaXQpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZUluRGF5cywgdW5pdDogJ0RBWVMnIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVJbldlZWtzID0gTWF0aC5jZWlsKHZhbHVlSW5EYXlzIC8gREFZU19QRVJfV0VFSyk7XG4gICAgaWYgKHZhbHVlSW5XZWVrcyA8PSB2YWx1ZUxpbWl0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWVJbldlZWtzLCB1bml0OiAnV0VFS1MnIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVJbk1vbnRocyA9IE1hdGguY2VpbCh2YWx1ZUluRGF5cyAvIERBWVNfUEVSX01PTlRIKTtcbiAgICBpZiAodmFsdWVJbk1vbnRocyA8PSB2YWx1ZUxpbWl0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWVJbk1vbnRocywgdW5pdDogJ01PTlRIUycgfTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZUluWWVhcnMgPSBNYXRoLmNlaWwodmFsdWVJbkRheXMgLyBEQVlTX1BFUl9ZRUFSKTtcbiAgICBpZiAodmFsdWVJblllYXJzIDw9IHZhbHVlTGltaXQpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiB2YWx1ZUluWWVhcnMsIHVuaXQ6ICdZRUFSUycgfTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihgdGhlIHByb3ZpZGVkIGR1cmF0aW9uIG11c3QgYmUgbGVzcyB0aGFuICR7dmFsdWVMaW1pdH0geWVhcnNgLCB0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVMaWZlY3ljbGVQb2xpY3lOYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGxpZmVjeWNsZVBvbGljeU5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBsaWZlY3ljbGVQb2xpY3lOYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGxpZmVjeWNsZVBvbGljeU5hbWUgbXVzdCBiZSBsb3dlcmNhc2UnLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/lib/os-version.js CHANGED
@@ -25,7 +25,7 @@ var Platform;
25
25
  * Represents an OS version for an EC2 Image Builder image
26
26
  */
27
27
  class OSVersion {
28
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.OSVersion", version: "2.234.1-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.OSVersion", version: "2.235.1-alpha.0" };
29
29
  /**
30
30
  * OS version for all Linux images
31
31
  */
@@ -6,7 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  * The parameter value for a component parameter
7
7
  */
8
8
  class ComponentParameterValue {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentParameterValue", version: "2.234.1-alpha.0" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentParameterValue", version: "2.235.1-alpha.0" };
10
10
  /**
11
11
  * The value of the parameter as a string
12
12
  *
package/lib/workflow.d.ts CHANGED
@@ -341,12 +341,14 @@ export declare abstract class S3WorkflowData extends WorkflowData {
341
341
  render(): WorkflowDataConfig;
342
342
  /**
343
343
  * Grant put permissions to the given grantee for the workflow data in S3
344
+ * [disable-awslint:no-grants]
344
345
  *
345
346
  * @param grantee The principal
346
347
  */
347
348
  grantPut(grantee: iam.IGrantable): iam.Grant;
348
349
  /**
349
350
  * Grant read permissions to the given grantee for the workflow data in S3
351
+ * [disable-awslint:no-grants]
350
352
  *
351
353
  * @param grantee The principal
352
354
  */
@@ -437,6 +439,7 @@ declare abstract class WorkflowBase extends cdk.Resource implements IWorkflow {
437
439
  abstract readonly workflowVersion: string;
438
440
  /**
439
441
  * Grant custom actions to the given grantee for the workflow
442
+ * [disable-awslint:no-grants]
440
443
  *
441
444
  * @param grantee The principal
442
445
  * @param actions The list of actions
@@ -444,6 +447,7 @@ declare abstract class WorkflowBase extends cdk.Resource implements IWorkflow {
444
447
  grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
445
448
  /**
446
449
  * Grant read permissions to the given grantee for the workflow
450
+ * [disable-awslint:no-grants]
447
451
  *
448
452
  * @param grantee The principal
449
453
  */
package/lib/workflow.js CHANGED
@@ -201,7 +201,7 @@ var WorkflowType;
201
201
  * Helper class for referencing and uploading workflow data
202
202
  */
203
203
  class WorkflowData {
204
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowData", version: "2.234.1-alpha.0" };
204
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowData", version: "2.235.1-alpha.0" };
205
205
  /**
206
206
  * Uploads workflow data from a local file to S3 to use as the workflow data
207
207
  *
@@ -246,7 +246,7 @@ exports.WorkflowData = WorkflowData;
246
246
  * Helper class for S3-based workflow data references, containing additional permission grant methods on the S3 object
247
247
  */
248
248
  class S3WorkflowData extends WorkflowData {
249
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3WorkflowData", version: "2.234.1-alpha.0" };
249
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3WorkflowData", version: "2.235.1-alpha.0" };
250
250
  bucket;
251
251
  key;
252
252
  constructor(bucket, key) {
@@ -262,6 +262,7 @@ class S3WorkflowData extends WorkflowData {
262
262
  }
263
263
  /**
264
264
  * Grant put permissions to the given grantee for the workflow data in S3
265
+ * [disable-awslint:no-grants]
265
266
  *
266
267
  * @param grantee The principal
267
268
  */
@@ -270,6 +271,7 @@ class S3WorkflowData extends WorkflowData {
270
271
  }
271
272
  /**
272
273
  * Grant read permissions to the given grantee for the workflow data in S3
274
+ * [disable-awslint:no-grants]
273
275
  *
274
276
  * @param grantee The principal
275
277
  */
@@ -305,7 +307,7 @@ class S3WorkflowDataFromAsset extends S3WorkflowData {
305
307
  * The parameter value for a workflow parameter
306
308
  */
307
309
  class WorkflowParameterValue {
308
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowParameterValue", version: "2.234.1-alpha.0" };
310
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.WorkflowParameterValue", version: "2.235.1-alpha.0" };
309
311
  /**
310
312
  * The value of the parameter as a boolean
311
313
  *
@@ -352,6 +354,7 @@ exports.WorkflowParameterValue = WorkflowParameterValue;
352
354
  class WorkflowBase extends cdk.Resource {
353
355
  /**
354
356
  * Grant custom actions to the given grantee for the workflow
357
+ * [disable-awslint:no-grants]
355
358
  *
356
359
  * @param grantee The principal
357
360
  * @param actions The list of actions
@@ -366,6 +369,7 @@ class WorkflowBase extends cdk.Resource {
366
369
  }
367
370
  /**
368
371
  * Grant read permissions to the given grantee for the workflow
372
+ * [disable-awslint:no-grants]
369
373
  *
370
374
  * @param grantee The principal
371
375
  */
@@ -392,7 +396,7 @@ let Workflow = (() => {
392
396
  Workflow = _classThis = _classDescriptor.value;
393
397
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
394
398
  }
395
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Workflow", version: "2.234.1-alpha.0" };
399
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Workflow", version: "2.235.1-alpha.0" };
396
400
  /** Uniquely identifies this class. */
397
401
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Workflow';
398
402
  /**
@@ -545,4 +549,4 @@ let Workflow = (() => {
545
549
  return Workflow = _classThis;
546
550
  })();
547
551
  exports.Workflow = Workflow;
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLG1FQUEyRDtBQUczRCxzREFBc0Q7QUFDdEQsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSw2QkFBNkI7QUFFN0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBRS9FOzs7OztHQUtHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBOEkvQjs7R0FFRztBQUNILElBQVksY0E0Rlg7QUE1RkQsV0FBWSxjQUFjO0lBQ3hCOzs7T0FHRztJQUNILHlFQUF1RCxDQUFBO0lBRXZEOzs7T0FHRztJQUNILG9GQUFrRSxDQUFBO0lBRWxFOzs7T0FHRztJQUNILGlFQUErQyxDQUFBO0lBRS9DOztPQUVHO0lBQ0gsMEVBQXdELENBQUE7SUFFeEQ7O09BRUc7SUFDSCw4Q0FBNEIsQ0FBQTtJQUU1Qjs7O09BR0c7SUFDSCxzREFBb0MsQ0FBQTtJQUVwQzs7T0FFRztJQUNILDBEQUF3QyxDQUFBO0lBRXhDOzs7T0FHRztJQUNILCtEQUE2QyxDQUFBO0lBRTdDOzs7T0FHRztJQUNILG9EQUFrQyxDQUFBO0lBRWxDOztPQUVHO0lBQ0gsbUVBQWlELENBQUE7SUFFakQ7O09BRUc7SUFDSCw0Q0FBMEIsQ0FBQTtJQUUxQjs7T0FFRztJQUNILGtEQUFnQyxDQUFBO0lBRWhDOztPQUVHO0lBQ0gsNkNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCx3REFBc0MsQ0FBQTtJQUV0Qzs7T0FFRztJQUNILDBEQUF3QyxDQUFBO0lBRXhDOzs7T0FHRztJQUNILG1EQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gsd0RBQXNDLENBQUE7QUFDeEMsQ0FBQyxFQTVGVyxjQUFjLDhC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QUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyx1REFBdUQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvRixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyx3Q0FBd0MsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyw2Q0FBNkMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyRixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDMUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsb0NBQW9DLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUUsQ0FBQztTQUNGOztZQS9LVSx1REFBUTs7Ozs7QUFBUiw0QkFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5Xb3JrZmxvdyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzYXNzZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyB5YW1sIGZyb20gJ3lhbWwnO1xuXG5jb25zdCBXT1JLRkxPV19TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLldvcmtmbG93Jyk7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYSB3b3JrZmxvdy4gV2hlbiB1c2luZyB0aGUgd29ya2Zsb3cgaW4gYSBwaXBlbGluZSwgdGhlIHBpcGVsaW5lIHdpbGwgdXNlIHRoZVxuICogbGF0ZXN0IHdvcmtmbG93IGF0IHRoZSB0aW1lIG9mIGV4ZWN1dGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pYmhvdy1zZW1hbnRpYy12ZXJzaW9uaW5nLmh0bWxcbiAqL1xuY29uc3QgTEFURVNUX1ZFUlNJT04gPSAneC54LngnO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIFdvcmtmbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElXb3JrZmxvdyBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1ZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFdvcmtmbG93IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2Zsb3cgZG9jdW1lbnQgY29udGVudCB0aGF0IGRlZmluZXMgdGhlIGltYWdlIGNyZWF0aW9uIHByb2Nlc3MuXG4gICAqL1xuICByZWFkb25seSBkYXRhOiBXb3JrZmxvd0RhdGE7XG5cbiAgLyoqXG4gICAqIFRoZSBwaGFzZSBpbiB0aGUgaW1hZ2UgYnVpbGQgcHJvY2VzcyBmb3Igd2hpY2ggdGhlIHdvcmtmbG93IHJlc291cmNlIGlzIHJlc3BvbnNpYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dUeXBlOiBXb3JrZmxvd1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5hbWUgaXMgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgMS4wLjBcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSB3b3JrZmxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjaGFuZ2UgZGVzY3JpcHRpb24gb2YgdGhlIHdvcmtmbG93LiBEZXNjcmliZXMgd2hhdCBjaGFuZ2UgaGFzIGJlZW4gbWFkZSBpbiB0aGlzIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93LCBvclxuICAgKiB3aGF0IG1ha2VzIHRoaXMgdmVyc2lvbiBkaWZmZXJlbnQgZnJvbSBvdGhlciB2ZXJzaW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY2hhbmdlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGlzIHdvcmtmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIEltYWdlIEJ1aWxkZXIgb3duZWQga2V5IHdpbGwgYmUgdXNlZCB0byBlbmNyeXB0IHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gRUMyIEltYWdlIEJ1aWxkZXIgV29ya2Zsb3dcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgQVJOIGlzIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0ZWQgaWYgYSB3b3JrZmxvd05hbWUgYW5kIHdvcmtmbG93VHlwZSBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIGFcbiAgICogd29ya2Zsb3dBcm4gaXMgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93QXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgbmFtZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdGVkIGlmIGEgd29ya2Zsb3dBcm4gaXMgcHJvdmlkZWQsIG90aGVyd2lzZSBhIHdvcmtmbG93TmFtZSBpcyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgdHlwZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdGVkIGlmIGEgd29ya2Zsb3dBcm4gaXMgcHJvdmlkZWQsIG90aGVyd2lzZSBhIHdvcmtmbG93VHlwZSBpcyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dUeXBlPzogV29ya2Zsb3dUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGRlZmF1bHQgeC54LnhcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIGZvciBhIHN0ZXAgd2l0aGluIHRoZSB3b3JrZmxvdyBkb2N1bWVudFxuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd0FjdGlvbiB7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGN1c3RvbWl6YXRpb25zIGFuZCBjb25maWd1cmF0aW9ucyB0byB0aGUgaW5wdXQgQU1Jcywgc3VjaCBhcyBwdWJsaXNoaW5nIHRoZSBBTUkgdG8gU1NNIFBhcmFtZXRlciBTdG9yZSxcbiAgICogb3IgY3JlYXRpbmcgbGF1bmNoIHRlbXBsYXRlIHZlcnNpb25zIHdpdGggdGhlIEFNSSBJRHMgcHJvdmlkZWQgaW4gdGhlIGlucHV0XG4gICAqL1xuICBBUFBMWV9JTUFHRV9DT05GSUdVUkFUSU9OUyA9ICdBcHBseUltYWdlQ29uZmlndXJhdGlvbnMnLFxuXG4gIC8qKlxuICAgKiBUaGUgQm9vdHN0cmFwSW5zdGFuY2VGb3JDb250YWluZXIgYWN0aW9uIHJ1bnMgYSBzZXJ2aWNlIHNjcmlwdCB0byBib290c3RyYXAgdGhlIGluc3RhbmNlIHdpdGggbWluaW11bSByZXF1aXJlbWVudHNcbiAgICogdG8gcnVuIGNvbnRhaW5lciB3b3JrZmxvd3NcbiAgICovXG4gIEJPT1RTVFJBUF9JTlNUQU5DRV9GT1JfQ09OVEFJTkVSID0gJ0Jvb3RzdHJhcEluc3RhbmNlRm9yQ29udGFpbmVyJyxcblxuICAvKipcbiAgICogVGhlIENvbGxlY3RJbWFnZU1ldGFkYXRhIGFjdGlvbiBjb2xsZWN0cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnN0YW5jZSwgc3VjaCBhcyB0aGUgbGlzdCBvZiBwYWNrYWdlc1xuICAgKiBhbmQgdGhlaXIgcmVzcGVjdGl2ZSB2ZXJzaW9uc1xuICAgKi9cbiAgQ09MTEVDVF9JTUFHRV9NRVRBREFUQSA9ICdDb2xsZWN0SW1hZ2VNZXRhZGF0YScsXG5cbiAgLyoqXG4gICAqIFRoZSBDb2xsZWN0SW1hZ2VTY2FuRmluZGluZ3MgYWN0aW9uIGNvbGxlY3RzIGZpbmRpbmdzIHJlcG9ydGVkIGJ5IEFtYXpvbiBJbnNwZWN0b3IgZm9yIHRoZSBwcm92aWRlZCBpbnN0YW5jZVxuICAgKi9cbiAgQ09MTEVDVF9JTUFHRV9TQ0FOX0ZJTkRJTkdTID0gJ0NvbGxlY3RJbWFnZVNjYW5GaW5kaW5ncycsXG5cbiAgLyoqXG4gICAqIFRoZSBDcmVhdGVJbWFnZSBhY3Rpb24gY3JlYXRlcyBhbiBBTUkgZnJvbSBhIHJ1bm5pbmcgaW5zdGFuY2Ugd2l0aCB0aGUgZWMyOkNyZWF0ZUltYWdlIEFQSVxuICAgKi9cbiAgQ1JFQVRFX0lNQUdFID0gJ0NyZWF0ZUltYWdlJyxcblxuICAvKipcbiAgICogVGhlIERpc3RyaWJ1dGVJbWFnZSBhY3Rpb24gY29waWVzIGFuIEFNSSB1c2luZyB0aGUgaW1hZ2UncyBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiwgb3IgdXNpbmcgdGhlIGRpc3RyaWJ1dGlvblxuICAgKiBzZXR0aW5ncyBpbiB0aGUgc3RlcCBpbnB1dFxuICAgKi9cbiAgRElTVFJJQlVURV9JTUFHRSA9ICdEaXN0cmlidXRlSW1hZ2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgRXhlY3V0ZUNvbXBvbmVudHMgYWN0aW9uIHJ1bnMgY29tcG9uZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIHJlY2lwZSBmb3IgdGhlIGN1cnJlbnQgaW1hZ2UgYmVpbmcgYnVpbHRcbiAgICovXG4gIEVYRUNVVEVfQ09NUE9ORU5UUyA9ICdFeGVjdXRlQ29tcG9uZW50cycsXG5cbiAgLyoqXG4gICAqIFRoZSBFeGVjdXRlU3RhdGVNYWNoaW5lIGFjdGlvbiBleGVjdXRlcyBhIHRoZSBzdGF0ZSBtYWNoaW5lIHByb3ZpZGVkIGFuZCB3YWl0cyBmb3IgY29tcGxldGlvbiBhcyBwYXJ0IG9mIHRoZVxuICAgKiB3b3JrZmxvd1xuICAgKi9cbiAgRVhFQ1VURV9TVEFURV9NQUNISU5FID0gJ0V4ZWN1dGVTdGF0ZU1hY2hpbmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgTGF1bmNoSW5zdGFuY2UgYWN0aW9uIGxhdW5jaGVzIGFuIGluc3RhbmNlIHVzaW5nIHRoZSBzZXR0aW5ncyBmcm9tIHlvdXIgcmVjaXBlIGFuZCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uXG4gICAqIHJlc291cmNlc1xuICAgKi9cbiAgTEFVTkNIX0lOU1RBTkNFID0gJ0xhdW5jaEluc3RhbmNlJyxcblxuICAvKipcbiAgICogQXBwbGllcyBhdHRyaWJ1dGUgdXBkYXRlcyB0byB0aGUgcHJvdmlkZWQgc2V0IG9mIGRpc3RyaWJ1dGVkIGltYWdlcywgc3VjaCBhcyBsYXVuY2ggcGVybWlzc2lvbiB1cGRhdGVzXG4gICAqL1xuICBNT0RJRllfSU1BR0VfQVRUUklCVVRFUyA9ICdNb2RpZnlJbWFnZUF0dHJpYnV0ZXMnLFxuXG4gIC8qKlxuICAgKiBUaGUgUnVuQ29tbWFuZCBhY3Rpb24gcnVucyBhIGNvbW1hbmQgZG9jdW1lbnQgYWdhaW5zdCB0aGUgcHJvdmlkZWQgaW5zdGFuY2VcbiAgICovXG4gIFJVTl9DT01NQU5EID0gJ1J1bkNvbW1hbmQnLFxuXG4gIC8qKlxuICAgKiBUaGUgUmVnaXN0ZXJJbWFnZSBhY3Rpb24gY3JlYXRlcyBhbiBBTUkgZnJvbSBhIHNldCBvZiBzbmFwc2hvdHMgd2l0aCB0aGUgZWMyOlJlZ2lzdGVySW1hZ2UgQVBJXG4gICAqL1xuICBSRUdJU1RFUl9JTUFHRSA9ICdSZWdpc3RlckltYWdlJyxcblxuICAvKipcbiAgICogVGhlIFJ1blN5c3ByZXAgYWN0aW9uIHJ1bnMgdGhlIFN5c3ByZXAgZG9jdW1lbnQgb24gdGhlIHByb3ZpZGVkIFdpbmRvd3MgaW5zdGFuY2VcbiAgICovXG4gIFJVTl9TWVNfUFJFUCA9ICdSdW5TeXNQcmVwJyxcblxuICAvKipcbiAgICogVGhlIFNhbml0aXplSW5zdGFuY2UgYWN0aW9uIHJ1bnMgYSByZWNvbW1lbmRlZCBzYW5pdGl6YXRpb24gc2NyaXB0IG9uIExpbnV4IGluc3RhbmNlc1xuICAgKi9cbiAgU0FOSVRJWkVfSU5TVEFOQ0UgPSAnU2FuaXRpemVJbnN0YW5jZScsXG5cbiAgLyoqXG4gICAqIFRoZSBUZXJtaW5hdGVJbnN0YW5jZSBhY3Rpb24gdGVybWluYXRlcyB0aGUgcHJvdmlkZWQgaW5zdGFuY2VcbiAgICovXG4gIFRFUk1JTkFURV9JTlNUQU5DRSA9ICdUZXJtaW5hdGVJbnN0YW5jZScsXG5cbiAgLyoqXG4gICAqIFRoZSBXYWl0Rm9yQWN0aW9uIGFjdGlvbiBwYXVzZXMgdGhlIHdvcmtmbG93IGFuZCB3YWl0cyB0byByZWNlaXZlIGFuIGV4dGVybmFsIHNpZ25hbCBmcm9tIHRoZVxuICAgKiBpbWFnZWJ1aWxkZXI6U2VuZFdvcmtmbG93U3RlcEFjdGlvbiBBUElcbiAgICovXG4gIFdBSVRfRk9SX0FDVElPTiA9ICdXYWl0Rm9yQWN0aW9uJyxcblxuICAvKipcbiAgICogVGhlIFdhaXRGb3JTU01BZ2VudCBhY3Rpb24gd2FpdHMgZm9yIHRoZSBnaXZlbiBpbnN0YW5jZSB0byBoYXZlIGNvbm5lY3Rpdml0eSB3aXRoIFNTTSBiZWZvcmUgcHJvY2VlZGluZ1xuICAgKi9cbiAgV0FJVF9GT1JfU1NNX0FHRU5UID0gJ1dhaXRGb3JTU01BZ2VudCcsXG59XG5cbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIGlmIHRoZSB3b3JrZmxvdyBmYWlsc1xuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd09uRmFpbHVyZSB7XG4gIC8qKlxuICAgKiBGYWlscyB0aGUgaW1hZ2UgYnVpbGQgaWYgdGhlIHdvcmtmbG93IGZhaWxzXG4gICAqL1xuICBBQk9SVCA9ICdBYm9ydCcsXG5cbiAgLyoqXG4gICAqIENvbnRpbnVlcyB3aXRoIHRoZSBpbWFnZSBidWlsZCBpZiB0aGUgd29ya2Zsb3cgZmFpbHNcbiAgICovXG4gIENPTlRJTlVFID0gJ0NvbnRpbnVlJyxcbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVyIHR5cGUgZm9yIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXJcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dQYXJhbWV0ZXJUeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyIGhhcyBhIGJvb2xlYW4gdmFsdWVcbiAgICovXG4gIEJPT0xFQU4gPSAnYm9vbGVhbicsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyIGhhcyBhbiBpbnRlZ2VyIHZhbHVlXG4gICAqL1xuICBJTlRFR0VSID0gJ2ludGVnZXInLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IHBhcmFtZXRlciBoYXMgYSBzdHJpbmcgdmFsdWVcbiAgICovXG4gIFNUUklORyA9ICdzdHJpbmcnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IHBhcmFtZXRlciBoYXMgYSBzdHJpbmcgbGlzdCB2YWx1ZVxuICAgKi9cbiAgU1RSSU5HX0xJU1QgPSAnc3RyaW5nTGlzdCcsXG59XG5cbi8qKlxuICogVGhlIHNjaGVtYSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICovXG5leHBvcnQgZW51bSBXb3JrZmxvd1NjaGVtYVZlcnNpb24ge1xuICAvKipcbiAgICogU2NoZW1hIHZlcnNpb24gMS4wIGZvciB0aGUgd29ya2Zsb3cgZG9jdW1lbnRcbiAgICovXG4gIFYxXzAgPSAnMS4wJyxcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgd29ya2Zsb3dcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dUeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgaXMgZm9yIGJ1aWxkaW5nIGltYWdlc1xuICAgKi9cbiAgQlVJTEQgPSAnQlVJTEQnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IGlzIGZvciB0ZXN0aW5nIGltYWdlc1xuICAgKi9cbiAgVEVTVCA9ICdURVNUJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBpcyBmb3IgZGlzdHJpYnV0aW5nIGltYWdlc1xuICAgKi9cbiAgRElTVFJJQlVUSU9OID0gJ0RJU1RSSUJVVElPTicsXG59XG5cbi8qKlxuICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEgdmFsdWUsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb24uXG4gKiAtIEZvciBpbmxpbmUgd29ya2Zsb3dzLCBkYXRhIGlzIHRoZSB3b3JrZmxvdyB0ZXh0XG4gKiAtIEZvciBTMy1iYWNrZWQgd29ya2Zsb3dzLCB1cmkgaXMgdGhlIFMzIFVSTFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93RGF0YUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgdXJpIGlzIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEgVVJJLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBkYXRhIGlzIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgdXJpPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3IgcmVmZXJlbmNpbmcgYW5kIHVwbG9hZGluZyB3b3JrZmxvdyBkYXRhXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXb3JrZmxvd0RhdGEge1xuICAvKipcbiAgICogVXBsb2FkcyB3b3JrZmxvdyBkYXRhIGZyb20gYSBsb2NhbCBmaWxlIHRvIFMzIHRvIHVzZSBhcyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBwYXRoIFRoZSBsb2NhbCBwYXRoIHRvIHRoZSB3b3JrZmxvdyBkYXRhIGZpbGVcbiAgICogQHBhcmFtIG9wdGlvbnMgUzMgYXNzZXQgdXBsb2FkIG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogczNhc3NldHMuQXNzZXRPcHRpb25zID0ge30sXG4gICk6IFMzV29ya2Zsb3dEYXRhIHtcbiAgICBjb25zdCBhc3NldCA9IG5ldyBzM2Fzc2V0cy5Bc3NldChzY29wZSwgaWQsIHsgLi4ub3B0aW9ucywgcGF0aCB9KTtcbiAgICByZXR1cm4gbmV3IFMzV29ya2Zsb3dEYXRhRnJvbUFzc2V0KGFzc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2VzIHdvcmtmbG93IGRhdGEgZnJvbSBhIHByZS1leGlzdGluZyBTMyBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGJ1Y2tldCBUaGUgUzMgYnVja2V0IHdoZXJlIHRoZSB3b3JrZmxvdyBkYXRhIGlzIHN0b3JlZFxuICAgKiBAcGFyYW0ga2V5IFRoZSBTMyBrZXkgb2YgdGhlIHdvcmtmbG93IGRhdGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZyk6IFMzV29ya2Zsb3dEYXRhIHtcbiAgICByZXR1cm4gbmV3IFMzV29ya2Zsb3dEYXRhRnJvbUJ1Y2tldEtleShidWNrZXQsIGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyBhbiBpbmxpbmUgSlNPTiBvYmplY3QgYXMgdGhlIHdvcmtmbG93IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgQW4gaW5saW5lIEpTT04gb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSnNvbk9iamVjdChkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogV29ya2Zsb3dEYXRhIHtcbiAgICBjb25zdCBpbmxpbmVEYXRhID0geWFtbC5zdHJpbmdpZnkoZGF0YSwgeyBpbmRlbnQ6IDIgfSk7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVXb3JrZmxvd0RhdGEoaW5saW5lRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlcyBhbiBpbmxpbmUgSlNPTiBvciBZQU1MIHN0cmluZyBhcyB0aGUgd29ya2Zsb3cgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBBbiBpbmxpbmUgSlNPTiBvciBZQU1MIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHdvcmtmbG93IGRhdGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlubGluZShkYXRhOiBzdHJpbmcpOiBXb3JrZmxvd0RhdGEge1xuICAgIHJldHVybiBuZXcgSW5saW5lV29ya2Zsb3dEYXRhKGRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhIHZhbHVlLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uLlxuICAgKiAtIEZvciBpbmxpbmUgd29ya2Zsb3dzLCBkYXRhIGlzIHRoZSB3b3JrZmxvdyB0ZXh0XG4gICAqIC0gRm9yIFMzLWJhY2tlZCB3b3JrZmxvd3MsIHVyaSBpcyB0aGUgUzMgVVJMXG4gICAqL1xuICBhYnN0cmFjdCByZW5kZXIoKTogV29ya2Zsb3dEYXRhQ29uZmlnO1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3IgUzMtYmFzZWQgd29ya2Zsb3cgZGF0YSByZWZlcmVuY2VzLCBjb250YWluaW5nIGFkZGl0aW9uYWwgcGVybWlzc2lvbiBncmFudCBtZXRob2RzIG9uIHRoZSBTMyBvYmplY3RcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFMzV29ya2Zsb3dEYXRhIGV4dGVuZHMgV29ya2Zsb3dEYXRhIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJ1Y2tldDogczMuSUJ1Y2tldDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYnVja2V0ID0gYnVja2V0O1xuICAgIHRoaXMua2V5ID0ga2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhIHRleHQsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogV29ya2Zsb3dEYXRhQ29uZmlnIHtcbiAgICByZXR1cm4geyB1cmk6IHRoaXMuYnVja2V0LnMzVXJsRm9yT2JqZWN0KHRoaXMua2V5KSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHB1dCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93IGRhdGEgaW4gUzNcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvdyBkYXRhIGluIFMzXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFJlYWQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG59XG5cbmNsYXNzIElubGluZVdvcmtmbG93RGF0YSBleHRlbmRzIFdvcmtmbG93RGF0YSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhOiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGE6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhIHRleHQsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogV29ya2Zsb3dEYXRhQ29uZmlnIHtcbiAgICByZXR1cm4geyBkYXRhOiB0aGlzLmRhdGEgfTtcbiAgfVxufVxuXG5jbGFzcyBTM1dvcmtmbG93RGF0YUZyb21CdWNrZXRLZXkgZXh0ZW5kcyBTM1dvcmtmbG93RGF0YSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYnVja2V0LCBrZXkpO1xuICB9XG59XG5cbmNsYXNzIFMzV29ya2Zsb3dEYXRhRnJvbUFzc2V0IGV4dGVuZHMgUzNXb3JrZmxvd0RhdGEge1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXNzZXQ6IHMzYXNzZXRzLkFzc2V0KSB7XG4gICAgc3VwZXIoYXNzZXQuYnVja2V0LCBhc3NldC5zM09iamVjdEtleSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVyIHZhbHVlIGZvciBhIHdvcmtmbG93IHBhcmFtZXRlclxuICovXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIGJvb2xlYW5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBib29sZWFuIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUoW3ZhbHVlLnRvU3RyaW5nKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhbiBpbnRlZ2VyXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbnRlZ2VyKHZhbHVlOiBudW1iZXIpOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUoW3ZhbHVlLnRvU3RyaW5nKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUge1xuICAgIHJldHVybiBuZXcgV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZShbdmFsdWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZXMgVGhlIHN0cmluZyBsaXN0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZ0xpc3QodmFsdWVzOiBzdHJpbmdbXSk6IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUge1xuICAgIHJldHVybiBuZXcgV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSh2YWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBwYXJhbWV0ZXIgdmFsdWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nW107XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYSB3b3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2Zsb3cgdG8gZXhlY3V0ZSBpbiB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93OiBJV29ya2Zsb3c7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gdGFrZSBpZiB0aGUgd29ya2Zsb3cgZmFpbHNcbiAgICpcbiAgICogQGRlZmF1bHQgV29ya2Zsb3dPbkZhaWx1cmUuQUJPUlRcbiAgICovXG4gIHJlYWRvbmx5IG9uRmFpbHVyZT86IFdvcmtmbG93T25GYWlsdXJlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZWQgcGFyYWxsZWwgZ3JvdXAgdG8gaW5jbHVkZSB0aGlzIHdvcmtmbG93IGluLiBXb3JrZmxvd3MgaW4gdGhlIHNhbWUgcGFyYWxsZWwgZ3JvdXAgcnVuIGluIHBhcmFsbGVsIG9mIGVhY2hcbiAgICogb3RoZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFsbGVsR3JvdXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIHdvcmtmbG93IGF0IGV4ZWN1dGlvbiB0aW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiB0aGUgd29ya2Zsb3cgaGFzIG5vIHBhcmFtZXRlcnMsIG90aGVyd2lzZSB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogeyBbbmFtZTogc3RyaW5nXTogV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB9O1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIFdvcmtmbG93XG4gKi9cbmFic3RyYWN0IGNsYXNzIFdvcmtmbG93QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElXb3JrZmxvdyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSB3b3JrZmxvd05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSB3b3JrZmxvd1R5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSB3b3JrZmxvd1ZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLndvcmtmbG93QXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldFdvcmtmbG93Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIFdvcmtmbG93LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1pbWFnZS13b3JrZmxvd3MuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgV29ya2Zsb3cgZXh0ZW5kcyBXb3JrZmxvd0Jhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuV29ya2Zsb3cnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3Rpbmcgd29ya2Zsb3cgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVdvcmtmbG93QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHdvcmtmbG93QXJuOiBzdHJpbmcpOiBJV29ya2Zsb3cge1xuICAgIHJldHVybiB0aGlzLmZyb21Xb3JrZmxvd0F0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IHdvcmtmbG93QXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB3b3JrZmxvdyBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLiBZb3UgbWF5IG5vdFxuICAgKiBwcm92aWRlIGEgZHluYW1pYyBleHByZXNzaW9uIGZvciB0aGUgd29ya2Zsb3dBcm4gb3Igd29ya2Zsb3dUeXBlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Xb3JrZmxvd0F0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFdvcmtmbG93QXR0cmlidXRlcyk6IElXb3JrZmxvdyB7XG4gICAgaWYgKFxuICAgICAgYXR0cnMud29ya2Zsb3dBcm4gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgKGF0dHJzLndvcmtmbG93TmFtZSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJzLndvcmtmbG93VHlwZSAhPT0gdW5kZWZpbmVkIHx8IGF0dHJzLndvcmtmbG93VmVyc2lvbiAhPT0gdW5kZWZpbmVkKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdhIHdvcmtmbG93TmFtZSwgd29ya2Zsb3dUeXBlLCBvciB3b3JrZmxvd1ZlcnNpb24gY2Fubm90IGJlIHByb3ZpZGVkIHdoZW4gYSB3b3JrZmxvd0FybiBpcyBwcm92aWRlZCcsXG4gICAgICAgIHNjb3BlLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMud29ya2Zsb3dBcm4gPT09IHVuZGVmaW5lZCAmJiAoYXR0cnMud29ya2Zsb3dOYW1lID09PSB1bmRlZmluZWQgfHwgYXR0cnMud29ya2Zsb3dUeXBlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignZWl0aGVyIHdvcmtmbG93QXJuLCBvciB3b3JrZmxvd05hbWUgYW5kIHdvcmtmbG93VHlwZSBpcyByZXF1aXJlZCcsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAoYXR0cnMud29ya2Zsb3dUeXBlICYmIGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoYXR0cnMud29ya2Zsb3dUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3dvcmtmbG93VHlwZSBjYW5ub3QgYmUgYW4gdW5yZXNvbHZlZCB0b2tlbicsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBjb25zdCB3b3JrZmxvd0FybiA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMud29ya2Zsb3dBcm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gYXR0cnMud29ya2Zsb3dBcm47XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ3dvcmtmbG93JyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy53b3JrZmxvd1R5cGUhLnRvTG93ZXJDYXNlKCl9LyR7YXR0cnMud29ya2Zsb3dOYW1lIX0vJHthdHRycy53b3JrZmxvd1ZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuICAgIH0pKCk7XG5cbiAgICBjb25zdCBbd29ya2Zsb3dUeXBlLCB3b3JrZmxvd05hbWUsIHdvcmtmbG93VmVyc2lvbl0gPSAoKCkgPT4ge1xuICAgICAgaWYgKGF0dHJzLndvcmtmbG93TmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMud29ya2Zsb3dUeXBlIS50b1VwcGVyQ2FzZSgpLCBhdHRycy53b3JrZmxvd05hbWUsIGF0dHJzLndvcmtmbG93VmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgICAgd29ya2Zsb3dBcm4sXG4gICAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVzb3VyY2VOYW1lITtcblxuICAgICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQod29ya2Zsb3dOYW1lVHlwZVZlcnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICd0aGUgd29ya2Zsb3dOYW1lLCB3b3JrZmxvd1R5cGUsIGFuZCB3b3JrZmxvd1ZlcnNpb24gaW4gdGhlIHdvcmtmbG93QXJuIGNhbm5vdCBiZSBhbiB1bnJlc29sdmVkIHRva2VuJyxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uLnNwbGl0KCcvJykubGVuZ3RoIDwgMykge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAndGhlIHdvcmtmbG93IEFSTiBtdXN0IGVuZCB3aXRoIDx3b3JrZmxvdy10eXBlPi88d29ya2Zsb3ctbmFtZT4vPHdvcmtmbG93LXZlcnNpb24+JyxcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd29ya2Zsb3dOYW1lVHlwZVZlcnNpb25TcGxpdCA9IHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uLnNwbGl0KCcvJyk7XG4gICAgICBjb25zdCBbd29ya2Zsb3dUeXBlRnJvbUFybiwgd29ya2Zsb3dOYW1lRnJvbUFybiwgd29ya2Zsb3dWZXJzaW9uRnJvbUFybl0gPSB3b3JrZmxvd05hbWVUeXBlVmVyc2lvblNwbGl0LnNsaWNlKFxuICAgICAgICAwLFxuICAgICAgICAzLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFt3b3JrZmxvd1R5cGVGcm9tQXJuLnRvVXBwZXJDYXNlKCksIHdvcmtmbG93TmFtZUZyb21Bcm4sIHdvcmtmbG93VmVyc2lvbkZyb21Bcm5dO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBXb3JrZmxvd0Jhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93QXJuID0gd29ya2Zsb3dBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dOYW1lID0gd29ya2Zsb3dOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VHlwZSA9IHdvcmtmbG93VHlwZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd1ZlcnNpb24gPSB3b3JrZmxvd1ZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgV29ya2Zsb3cuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzV29ya2Zsb3coeDogYW55KTogeCBpcyBXb3JrZmxvdyB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIFdPUktGTE9XX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd1ZlcnNpb246IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdvcmtmbG93UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMud29ya2Zsb3dOYW1lID8/XG4gICAgICAgIGNkay5MYXp5LnN0cmluZyh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIGNkay5OYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICAgICAgICBtYXhMZW5ndGg6IDEyOCxcbiAgICAgICAgICAgICAgc2VwYXJhdG9yOiAnLScsXG4gICAgICAgICAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogJy0nLFxuICAgICAgICAgICAgfSkudG9Mb3dlckNhc2UoKSwgLy8gRW5mb3JjZSBsb3dlcmNhc2UgZm9yIHRoZSBhdXRvLWdlbmVyYXRlZCBmYWxsYmFja1xuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBXT1JLRkxPV19TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlV29ya2Zsb3dOYW1lKCk7XG5cbiAgICBjb25zdCB3b3JrZmxvd1ZlcnNpb24gPSBwcm9wcy53b3JrZmxvd1ZlcnNpb24gPz8gJzEuMC4wJztcbiAgICBjb25zdCB3b3JrZmxvdyA9IG5ldyBDZm5Xb3JrZmxvdyh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIHZlcnNpb246IHdvcmtmbG93VmVyc2lvbixcbiAgICAgIHR5cGU6IHByb3BzLndvcmtmbG93VHlwZSxcbiAgICAgIGNoYW5nZURlc2NyaXB0aW9uOiBwcm9wcy5jaGFuZ2VEZXNjcmlwdGlvbixcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGttc0tleUlkOiBwcm9wcy5rbXNLZXk/LmtleUFybixcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICAuLi5wcm9wcy5kYXRhLnJlbmRlcigpLFxuICAgIH0pO1xuXG4gICAgdGhpcy53b3JrZmxvd05hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh3b3JrZmxvdy5nZXRBdHQoJ05hbWUnKS50b1N0cmluZygpKTtcbiAgICB0aGlzLndvcmtmbG93QXJuID0gd29ya2Zsb3cuYXR0ckFybjtcbiAgICB0aGlzLndvcmtmbG93VmVyc2lvbiA9IHdvcmtmbG93VmVyc2lvbjtcbiAgICB0aGlzLndvcmtmbG93VHlwZSA9IHByb3BzLndvcmtmbG93VHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVXb3JrZmxvd05hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgd29ya2Zsb3dOYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHdvcmtmbG93TmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSB3b3JrZmxvd05hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUgIT09IHRoaXMucGh5c2ljYWxOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgd29ya2Zsb3dOYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
552
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3b3JrZmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsMkNBQTJDO0FBQzNDLG1FQUEyRDtBQUczRCxzREFBc0Q7QUFDdEQsOEVBQThFO0FBQzlFLDBFQUEwRTtBQUUxRSw2QkFBNkI7QUFFN0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0FBRS9FOzs7OztHQUtHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBOEkvQjs7R0FFRztBQUNILElBQVksY0E0Rlg7QUE1RkQsV0FBWSxjQUFjO0lBQ3hCOzs7T0FHRztJQUNILHlFQUF1RCxDQUFBO0lBRXZEOzs7T0FHRztJQUNILG9GQUFrRSxDQUFBO0lBRWxFOzs7T0FHRztJQUNILGlFQUErQyxDQUFBO0lBRS9DOztPQUVHO0lBQ0gsMEVBQXdELENBQUE7SUFFeEQ7O09BRUc7SUFDSCw4Q0FBNEIsQ0FBQTtJQUU1Qjs7O09BR0c7SUFDSCxzREFBb0MsQ0FBQTtJQUVwQzs7T0FFRztJQUNILDBEQUF3QyxDQUFBO0lBRXhDOzs7T0FHRztJQUNILCtEQUE2QyxDQUFBO0lBRTdDOzs7T0FHRztJQUNILG9EQUFrQyxDQUFBO0lBRWxDOztPQUVHO0lBQ0gsbUVBQWlELENBQUE7SUFFakQ7O09BRUc7SUFDSCw0Q0FBMEIsQ0FBQTtJQUUxQjs7T0FFRztJQUNILGtEQUFnQyxDQUFBO0lBRWhDOztPQUVHO0lBQ0gsNkNBQTJCLENBQUE7SUFFM0I7O09BRUc7SUFDSCx3REFBc0MsQ0FBQTtJQUV0Qzs7T0FFRztJQUNILDBEQUF3QyxDQUFBO0lBRXhDOzs7T0FHRztJQUNILG1EQUFpQyxDQUFBO0lBRWpDOztPQUVHO0lBQ0gsd0RBQXNDLENBQUE7QUFDeEMsQ0FBQyxFQTVGVyxjQUFjLDhC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QU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsdURBQXVELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0YsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEYsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsNkNBQTZDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9DQUFvQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVFLENBQUM7U0FDRjs7WUEvS1UsdURBQVE7Ozs7O0FBQVIsNEJBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuV29ya2Zsb3cgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICd5YW1sJztcblxuY29uc3QgV09SS0ZMT1dfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5Xb3JrZmxvdycpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgd29ya2Zsb3cuIFdoZW4gdXNpbmcgdGhlIHdvcmtmbG93IGluIGEgcGlwZWxpbmUsIHRoZSBwaXBlbGluZSB3aWxsIHVzZSB0aGVcbiAqIGxhdGVzdCB3b3JrZmxvdyBhdCB0aGUgdGltZSBvZiBleGVjdXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvaWJob3ctc2VtYW50aWMtdmVyc2lvbmluZy5odG1sXG4gKi9cbmNvbnN0IExBVEVTVF9WRVJTSU9OID0gJ3gueC54JztcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBXb3JrZmxvdy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJV29ya2Zsb3cgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3dcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvd1xuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQ7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBXb3JrZmxvdyByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93UHJvcHMge1xuICAvKipcbiAgICogVGhlIHdvcmtmbG93IGRvY3VtZW50IGNvbnRlbnQgdGhhdCBkZWZpbmVzIHRoZSBpbWFnZSBjcmVhdGlvbiBwcm9jZXNzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YTogV29ya2Zsb3dEYXRhO1xuXG4gIC8qKlxuICAgKiBUaGUgcGhhc2UgaW4gdGhlIGltYWdlIGJ1aWxkIHByb2Nlc3MgZm9yIHdoaWNoIHRoZSB3b3JrZmxvdyByZXNvdXJjZSBpcyByZXNwb25zaWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VHlwZTogV29ya2Zsb3dUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEuMC4wXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgd29ya2Zsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hhbmdlIGRlc2NyaXB0aW9uIG9mIHRoZSB3b3JrZmxvdy4gRGVzY3JpYmVzIHdoYXQgY2hhbmdlIGhhcyBiZWVuIG1hZGUgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvdywgb3JcbiAgICogd2hhdCBtYWtlcyB0aGlzIHZlcnNpb24gZGlmZmVyZW50IGZyb20gb3RoZXIgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNoYW5nZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhpcyB3b3JrZmxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBJbWFnZSBCdWlsZGVyIG93bmVkIGtleSB3aWxsIGJlIHVzZWQgdG8gZW5jcnlwdCB0aGUgd29ya2Zsb3cuXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIEVDMiBJbWFnZSBCdWlsZGVyIFdvcmtmbG93XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIEFSTiBpcyBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdGVkIGlmIGEgd29ya2Zsb3dOYW1lIGFuZCB3b3JrZmxvd1R5cGUgaXMgcHJvdmlkZWQsIG90aGVyd2lzZSBhXG4gICAqIHdvcmtmbG93QXJuIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd0Fybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIG5hbWUgaXMgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RlZCBpZiBhIHdvcmtmbG93QXJuIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgYSB3b3JrZmxvd05hbWUgaXMgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHR5cGUgaXMgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RlZCBpZiBhIHdvcmtmbG93QXJuIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgYSB3b3JrZmxvd1R5cGUgaXMgcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93VHlwZT86IFdvcmtmbG93VHlwZTtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gICAqXG4gICAqIEBkZWZhdWx0IHgueC54XG4gICAqL1xuICByZWFkb25seSB3b3JrZmxvd1ZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGFjdGlvbiBmb3IgYSBzdGVwIHdpdGhpbiB0aGUgd29ya2Zsb3cgZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dBY3Rpb24ge1xuICAvKipcbiAgICogQXBwbGllcyBjdXN0b21pemF0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgdG8gdGhlIGlucHV0IEFNSXMsIHN1Y2ggYXMgcHVibGlzaGluZyB0aGUgQU1JIHRvIFNTTSBQYXJhbWV0ZXIgU3RvcmUsXG4gICAqIG9yIGNyZWF0aW5nIGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9ucyB3aXRoIHRoZSBBTUkgSURzIHByb3ZpZGVkIGluIHRoZSBpbnB1dFxuICAgKi9cbiAgQVBQTFlfSU1BR0VfQ09ORklHVVJBVElPTlMgPSAnQXBwbHlJbWFnZUNvbmZpZ3VyYXRpb25zJyxcblxuICAvKipcbiAgICogVGhlIEJvb3RzdHJhcEluc3RhbmNlRm9yQ29udGFpbmVyIGFjdGlvbiBydW5zIGEgc2VydmljZSBzY3JpcHQgdG8gYm9vdHN0cmFwIHRoZSBpbnN0YW5jZSB3aXRoIG1pbmltdW0gcmVxdWlyZW1lbnRzXG4gICAqIHRvIHJ1biBjb250YWluZXIgd29ya2Zsb3dzXG4gICAqL1xuICBCT09UU1RSQVBfSU5TVEFOQ0VfRk9SX0NPTlRBSU5FUiA9ICdCb290c3RyYXBJbnN0YW5jZUZvckNvbnRhaW5lcicsXG5cbiAgLyoqXG4gICAqIFRoZSBDb2xsZWN0SW1hZ2VNZXRhZGF0YSBhY3Rpb24gY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5zdGFuY2UsIHN1Y2ggYXMgdGhlIGxpc3Qgb2YgcGFja2FnZXNcbiAgICogYW5kIHRoZWlyIHJlc3BlY3RpdmUgdmVyc2lvbnNcbiAgICovXG4gIENPTExFQ1RfSU1BR0VfTUVUQURBVEEgPSAnQ29sbGVjdEltYWdlTWV0YWRhdGEnLFxuXG4gIC8qKlxuICAgKiBUaGUgQ29sbGVjdEltYWdlU2NhbkZpbmRpbmdzIGFjdGlvbiBjb2xsZWN0cyBmaW5kaW5ncyByZXBvcnRlZCBieSBBbWF6b24gSW5zcGVjdG9yIGZvciB0aGUgcHJvdmlkZWQgaW5zdGFuY2VcbiAgICovXG4gIENPTExFQ1RfSU1BR0VfU0NBTl9GSU5ESU5HUyA9ICdDb2xsZWN0SW1hZ2VTY2FuRmluZGluZ3MnLFxuXG4gIC8qKlxuICAgKiBUaGUgQ3JlYXRlSW1hZ2UgYWN0aW9uIGNyZWF0ZXMgYW4gQU1JIGZyb20gYSBydW5uaW5nIGluc3RhbmNlIHdpdGggdGhlIGVjMjpDcmVhdGVJbWFnZSBBUElcbiAgICovXG4gIENSRUFURV9JTUFHRSA9ICdDcmVhdGVJbWFnZScsXG5cbiAgLyoqXG4gICAqIFRoZSBEaXN0cmlidXRlSW1hZ2UgYWN0aW9uIGNvcGllcyBhbiBBTUkgdXNpbmcgdGhlIGltYWdlJ3MgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIG9yIHVzaW5nIHRoZSBkaXN0cmlidXRpb25cbiAgICogc2V0dGluZ3MgaW4gdGhlIHN0ZXAgaW5wdXRcbiAgICovXG4gIERJU1RSSUJVVEVfSU1BR0UgPSAnRGlzdHJpYnV0ZUltYWdlJyxcblxuICAvKipcbiAgICogVGhlIEV4ZWN1dGVDb21wb25lbnRzIGFjdGlvbiBydW5zIGNvbXBvbmVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSByZWNpcGUgZm9yIHRoZSBjdXJyZW50IGltYWdlIGJlaW5nIGJ1aWx0XG4gICAqL1xuICBFWEVDVVRFX0NPTVBPTkVOVFMgPSAnRXhlY3V0ZUNvbXBvbmVudHMnLFxuXG4gIC8qKlxuICAgKiBUaGUgRXhlY3V0ZVN0YXRlTWFjaGluZSBhY3Rpb24gZXhlY3V0ZXMgYSB0aGUgc3RhdGUgbWFjaGluZSBwcm92aWRlZCBhbmQgd2FpdHMgZm9yIGNvbXBsZXRpb24gYXMgcGFydCBvZiB0aGVcbiAgICogd29ya2Zsb3dcbiAgICovXG4gIEVYRUNVVEVfU1RBVEVfTUFDSElORSA9ICdFeGVjdXRlU3RhdGVNYWNoaW5lJyxcblxuICAvKipcbiAgICogVGhlIExhdW5jaEluc3RhbmNlIGFjdGlvbiBsYXVuY2hlcyBhbiBpbnN0YW5jZSB1c2luZyB0aGUgc2V0dGluZ3MgZnJvbSB5b3VyIHJlY2lwZSBhbmQgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKiByZXNvdXJjZXNcbiAgICovXG4gIExBVU5DSF9JTlNUQU5DRSA9ICdMYXVuY2hJbnN0YW5jZScsXG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgYXR0cmlidXRlIHVwZGF0ZXMgdG8gdGhlIHByb3ZpZGVkIHNldCBvZiBkaXN0cmlidXRlZCBpbWFnZXMsIHN1Y2ggYXMgbGF1bmNoIHBlcm1pc3Npb24gdXBkYXRlc1xuICAgKi9cbiAgTU9ESUZZX0lNQUdFX0FUVFJJQlVURVMgPSAnTW9kaWZ5SW1hZ2VBdHRyaWJ1dGVzJyxcblxuICAvKipcbiAgICogVGhlIFJ1bkNvbW1hbmQgYWN0aW9uIHJ1bnMgYSBjb21tYW5kIGRvY3VtZW50IGFnYWluc3QgdGhlIHByb3ZpZGVkIGluc3RhbmNlXG4gICAqL1xuICBSVU5fQ09NTUFORCA9ICdSdW5Db21tYW5kJyxcblxuICAvKipcbiAgICogVGhlIFJlZ2lzdGVySW1hZ2UgYWN0aW9uIGNyZWF0ZXMgYW4gQU1JIGZyb20gYSBzZXQgb2Ygc25hcHNob3RzIHdpdGggdGhlIGVjMjpSZWdpc3RlckltYWdlIEFQSVxuICAgKi9cbiAgUkVHSVNURVJfSU1BR0UgPSAnUmVnaXN0ZXJJbWFnZScsXG5cbiAgLyoqXG4gICAqIFRoZSBSdW5TeXNwcmVwIGFjdGlvbiBydW5zIHRoZSBTeXNwcmVwIGRvY3VtZW50IG9uIHRoZSBwcm92aWRlZCBXaW5kb3dzIGluc3RhbmNlXG4gICAqL1xuICBSVU5fU1lTX1BSRVAgPSAnUnVuU3lzUHJlcCcsXG5cbiAgLyoqXG4gICAqIFRoZSBTYW5pdGl6ZUluc3RhbmNlIGFjdGlvbiBydW5zIGEgcmVjb21tZW5kZWQgc2FuaXRpemF0aW9uIHNjcmlwdCBvbiBMaW51eCBpbnN0YW5jZXNcbiAgICovXG4gIFNBTklUSVpFX0lOU1RBTkNFID0gJ1Nhbml0aXplSW5zdGFuY2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgVGVybWluYXRlSW5zdGFuY2UgYWN0aW9uIHRlcm1pbmF0ZXMgdGhlIHByb3ZpZGVkIGluc3RhbmNlXG4gICAqL1xuICBURVJNSU5BVEVfSU5TVEFOQ0UgPSAnVGVybWluYXRlSW5zdGFuY2UnLFxuXG4gIC8qKlxuICAgKiBUaGUgV2FpdEZvckFjdGlvbiBhY3Rpb24gcGF1c2VzIHRoZSB3b3JrZmxvdyBhbmQgd2FpdHMgdG8gcmVjZWl2ZSBhbiBleHRlcm5hbCBzaWduYWwgZnJvbSB0aGVcbiAgICogaW1hZ2VidWlsZGVyOlNlbmRXb3JrZmxvd1N0ZXBBY3Rpb24gQVBJXG4gICAqL1xuICBXQUlUX0ZPUl9BQ1RJT04gPSAnV2FpdEZvckFjdGlvbicsXG5cbiAgLyoqXG4gICAqIFRoZSBXYWl0Rm9yU1NNQWdlbnQgYWN0aW9uIHdhaXRzIGZvciB0aGUgZ2l2ZW4gaW5zdGFuY2UgdG8gaGF2ZSBjb25uZWN0aXZpdHkgd2l0aCBTU00gYmVmb3JlIHByb2NlZWRpbmdcbiAgICovXG4gIFdBSVRfRk9SX1NTTV9BR0VOVCA9ICdXYWl0Rm9yU1NNQWdlbnQnLFxufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gdGFrZSBpZiB0aGUgd29ya2Zsb3cgZmFpbHNcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dPbkZhaWx1cmUge1xuICAvKipcbiAgICogRmFpbHMgdGhlIGltYWdlIGJ1aWxkIGlmIHRoZSB3b3JrZmxvdyBmYWlsc1xuICAgKi9cbiAgQUJPUlQgPSAnQWJvcnQnLFxuXG4gIC8qKlxuICAgKiBDb250aW51ZXMgd2l0aCB0aGUgaW1hZ2UgYnVpbGQgaWYgdGhlIHdvcmtmbG93IGZhaWxzXG4gICAqL1xuICBDT05USU5VRSA9ICdDb250aW51ZScsXG59XG5cbi8qKlxuICogVGhlIHBhcmFtZXRlciB0eXBlIGZvciB0aGUgd29ya2Zsb3cgcGFyYW1ldGVyXG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93UGFyYW1ldGVyVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IHBhcmFtZXRlciBoYXMgYSBib29sZWFuIHZhbHVlXG4gICAqL1xuICBCT09MRUFOID0gJ2Jvb2xlYW4nLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IHBhcmFtZXRlciBoYXMgYW4gaW50ZWdlciB2YWx1ZVxuICAgKi9cbiAgSU5URUdFUiA9ICdpbnRlZ2VyJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXIgaGFzIGEgc3RyaW5nIHZhbHVlXG4gICAqL1xuICBTVFJJTkcgPSAnc3RyaW5nJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBwYXJhbWV0ZXIgaGFzIGEgc3RyaW5nIGxpc3QgdmFsdWVcbiAgICovXG4gIFNUUklOR19MSVNUID0gJ3N0cmluZ0xpc3QnLFxufVxuXG4vKipcbiAqIFRoZSBzY2hlbWEgdmVyc2lvbiBvZiB0aGUgd29ya2Zsb3dcbiAqL1xuZXhwb3J0IGVudW0gV29ya2Zsb3dTY2hlbWFWZXJzaW9uIHtcbiAgLyoqXG4gICAqIFNjaGVtYSB2ZXJzaW9uIDEuMCBmb3IgdGhlIHdvcmtmbG93IGRvY3VtZW50XG4gICAqL1xuICBWMV8wID0gJzEuMCcsXG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIHdvcmtmbG93XG4gKi9cbmV4cG9ydCBlbnVtIFdvcmtmbG93VHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHdvcmtmbG93IGlzIGZvciBidWlsZGluZyBpbWFnZXNcbiAgICovXG4gIEJVSUxEID0gJ0JVSUxEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSB3b3JrZmxvdyBpcyBmb3IgdGVzdGluZyBpbWFnZXNcbiAgICovXG4gIFRFU1QgPSAnVEVTVCcsXG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgd29ya2Zsb3cgaXMgZm9yIGRpc3RyaWJ1dGluZyBpbWFnZXNcbiAgICovXG4gIERJU1RSSUJVVElPTiA9ICdESVNUUklCVVRJT04nLFxufVxuXG4vKipcbiAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhIHZhbHVlLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uLlxuICogLSBGb3IgaW5saW5lIHdvcmtmbG93cywgZGF0YSBpcyB0aGUgd29ya2Zsb3cgdGV4dFxuICogLSBGb3IgUzMtYmFja2VkIHdvcmtmbG93cywgdXJpIGlzIHRoZSBTMyBVUkxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd0RhdGFDb25maWcge1xuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIHdvcmtmbG93IGRhdGEsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHVyaSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhIFVSSSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgZGF0YSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IHVyaT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIHJlZmVyZW5jaW5nIGFuZCB1cGxvYWRpbmcgd29ya2Zsb3cgZGF0YVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV29ya2Zsb3dEYXRhIHtcbiAgLyoqXG4gICAqIFVwbG9hZHMgd29ya2Zsb3cgZGF0YSBmcm9tIGEgbG9jYWwgZmlsZSB0byBTMyB0byB1c2UgYXMgdGhlIHdvcmtmbG93IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gcGF0aCBUaGUgbG9jYWwgcGF0aCB0byB0aGUgd29ya2Zsb3cgZGF0YSBmaWxlXG4gICAqIEBwYXJhbSBvcHRpb25zIFMzIGFzc2V0IHVwbG9hZCBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Bc3NldChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHMzYXNzZXRzLkFzc2V0T3B0aW9ucyA9IHt9LFxuICApOiBTM1dvcmtmbG93RGF0YSB7XG4gICAgY29uc3QgYXNzZXQgPSBuZXcgczNhc3NldHMuQXNzZXQoc2NvcGUsIGlkLCB7IC4uLm9wdGlvbnMsIHBhdGggfSk7XG4gICAgcmV0dXJuIG5ldyBTM1dvcmtmbG93RGF0YUZyb21Bc3NldChhc3NldCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXJlbmNlcyB3b3JrZmxvdyBkYXRhIGZyb20gYSBwcmUtZXhpc3RpbmcgUzMgb2JqZWN0XG4gICAqXG4gICAqIEBwYXJhbSBidWNrZXQgVGhlIFMzIGJ1Y2tldCB3aGVyZSB0aGUgd29ya2Zsb3cgZGF0YSBpcyBzdG9yZWRcbiAgICogQHBhcmFtIGtleSBUaGUgUzMga2V5IG9mIHRoZSB3b3JrZmxvdyBkYXRhIGZpbGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVMzKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpOiBTM1dvcmtmbG93RGF0YSB7XG4gICAgcmV0dXJuIG5ldyBTM1dvcmtmbG93RGF0YUZyb21CdWNrZXRLZXkoYnVja2V0LCBrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgYW4gaW5saW5lIEpTT04gb2JqZWN0IGFzIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIEFuIGlubGluZSBKU09OIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHdvcmtmbG93IGRhdGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUpzb25PYmplY3QoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IFdvcmtmbG93RGF0YSB7XG4gICAgY29uc3QgaW5saW5lRGF0YSA9IHlhbWwuc3RyaW5naWZ5KGRhdGEsIHsgaW5kZW50OiAyIH0pO1xuICAgIHJldHVybiBuZXcgSW5saW5lV29ya2Zsb3dEYXRhKGlubGluZURhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgYW4gaW5saW5lIEpTT04gb3IgWUFNTCBzdHJpbmcgYXMgdGhlIHdvcmtmbG93IGRhdGFcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgQW4gaW5saW5lIEpTT04gb3IgWUFNTCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB3b3JrZmxvdyBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoZGF0YTogc3RyaW5nKTogV29ya2Zsb3dEYXRhIHtcbiAgICByZXR1cm4gbmV3IElubGluZVdvcmtmbG93RGF0YShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAgICogLSBGb3IgaW5saW5lIHdvcmtmbG93cywgZGF0YSBpcyB0aGUgd29ya2Zsb3cgdGV4dFxuICAgKiAtIEZvciBTMy1iYWNrZWQgd29ya2Zsb3dzLCB1cmkgaXMgdGhlIFMzIFVSTFxuICAgKi9cbiAgYWJzdHJhY3QgcmVuZGVyKCk6IFdvcmtmbG93RGF0YUNvbmZpZztcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIFMzLWJhc2VkIHdvcmtmbG93IGRhdGEgcmVmZXJlbmNlcywgY29udGFpbmluZyBhZGRpdGlvbmFsIHBlcm1pc3Npb24gZ3JhbnQgbWV0aG9kcyBvbiB0aGUgUzMgb2JqZWN0XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTM1dvcmtmbG93RGF0YSBleHRlbmRzIFdvcmtmbG93RGF0YSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBrZXk6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmJ1Y2tldCA9IGJ1Y2tldDtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgd29ya2Zsb3cgZGF0YSB0ZXh0LCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IFdvcmtmbG93RGF0YUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgdXJpOiB0aGlzLmJ1Y2tldC5zM1VybEZvck9iamVjdCh0aGlzLmtleSkgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvdyBkYXRhIGluIFMzXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRQdXQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFB1dChncmFudGVlLCB0aGlzLmtleSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIHdvcmtmbG93IGRhdGEgaW4gUzNcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFJlYWQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG59XG5cbmNsYXNzIElubGluZVdvcmtmbG93RGF0YSBleHRlbmRzIFdvcmtmbG93RGF0YSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhOiBzdHJpbmc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGRhdGE6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCB3b3JrZmxvdyBkYXRhIHRleHQsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogV29ya2Zsb3dEYXRhQ29uZmlnIHtcbiAgICByZXR1cm4geyBkYXRhOiB0aGlzLmRhdGEgfTtcbiAgfVxufVxuXG5jbGFzcyBTM1dvcmtmbG93RGF0YUZyb21CdWNrZXRLZXkgZXh0ZW5kcyBTM1dvcmtmbG93RGF0YSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYnVja2V0LCBrZXkpO1xuICB9XG59XG5cbmNsYXNzIFMzV29ya2Zsb3dEYXRhRnJvbUFzc2V0IGV4dGVuZHMgUzNXb3JrZmxvd0RhdGEge1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXNzZXQ6IHMzYXNzZXRzLkFzc2V0KSB7XG4gICAgc3VwZXIoYXNzZXQuYnVja2V0LCBhc3NldC5zM09iamVjdEtleSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVyIHZhbHVlIGZvciBhIHdvcmtmbG93IHBhcmFtZXRlclxuICovXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIGJvb2xlYW5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSBib29sZWFuIHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJvb2xlYW4odmFsdWU6IGJvb2xlYW4pOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUoW3ZhbHVlLnRvU3RyaW5nKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhbiBpbnRlZ2VyXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbnRlZ2VyKHZhbHVlOiBudW1iZXIpOiBXb3JrZmxvd1BhcmFtZXRlclZhbHVlIHtcbiAgICByZXR1cm4gbmV3IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUoW3ZhbHVlLnRvU3RyaW5nKCldKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZ1xuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdHJpbmcodmFsdWU6IHN0cmluZyk6IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUge1xuICAgIHJldHVybiBuZXcgV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZShbdmFsdWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZXMgVGhlIHN0cmluZyBsaXN0IHZhbHVlIG9mIHRoZSBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVN0cmluZ0xpc3QodmFsdWVzOiBzdHJpbmdbXSk6IFdvcmtmbG93UGFyYW1ldGVyVmFsdWUge1xuICAgIHJldHVybiBuZXcgV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSh2YWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBwYXJhbWV0ZXIgdmFsdWVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nW107XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgYSB3b3JrZmxvd1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93Q29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgd29ya2Zsb3cgdG8gZXhlY3V0ZSBpbiB0aGUgaW1hZ2UgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IHdvcmtmbG93OiBJV29ya2Zsb3c7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gdGFrZSBpZiB0aGUgd29ya2Zsb3cgZmFpbHNcbiAgICpcbiAgICogQGRlZmF1bHQgV29ya2Zsb3dPbkZhaWx1cmUuQUJPUlRcbiAgICovXG4gIHJlYWRvbmx5IG9uRmFpbHVyZT86IFdvcmtmbG93T25GYWlsdXJlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZWQgcGFyYWxsZWwgZ3JvdXAgdG8gaW5jbHVkZSB0aGlzIHdvcmtmbG93IGluLiBXb3JrZmxvd3MgaW4gdGhlIHNhbWUgcGFyYWxsZWwgZ3JvdXAgcnVuIGluIHBhcmFsbGVsIG9mIGVhY2hcbiAgICogb3RoZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFsbGVsR3JvdXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJhbWV0ZXJzIHRvIHBhc3MgdG8gdGhlIHdvcmtmbG93IGF0IGV4ZWN1dGlvbiB0aW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiB0aGUgd29ya2Zsb3cgaGFzIG5vIHBhcmFtZXRlcnMsIG90aGVyd2lzZSB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogeyBbbmFtZTogc3RyaW5nXTogV29ya2Zsb3dQYXJhbWV0ZXJWYWx1ZSB9O1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIFdvcmtmbG93XG4gKi9cbmFic3RyYWN0IGNsYXNzIFdvcmtmbG93QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElXb3JrZmxvdyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgd29ya2Zsb3dBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSB3b3JrZmxvd05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSB3b3JrZmxvd1R5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSB3b3JrZmxvd1ZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSB3b3JrZmxvd1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy53b3JrZmxvd0Fybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgd29ya2Zsb3dcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0V29ya2Zsb3cnKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgV29ya2Zsb3cuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLWltYWdlLXdvcmtmbG93cy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBXb3JrZmxvdyBleHRlbmRzIFdvcmtmbG93QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5Xb3JrZmxvdyc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyB3b3JrZmxvdyBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tV29ya2Zsb3dBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgd29ya2Zsb3dBcm46IHN0cmluZyk6IElXb3JrZmxvdyB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbVdvcmtmbG93QXR0cmlidXRlcyhzY29wZSwgaWQsIHsgd29ya2Zsb3dBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHdvcmtmbG93IGJ5IHByb3ZpZGluZyBpdHMgYXR0cmlidXRlcy4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmdcbiAgICogYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuIFlvdSBtYXkgbm90XG4gICAqIHByb3ZpZGUgYSBkeW5hbWljIGV4cHJlc3Npb24gZm9yIHRoZSB3b3JrZmxvd0FybiBvciB3b3JrZmxvd1R5cGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVdvcmtmbG93QXR0cmlidXRlcyhzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogV29ya2Zsb3dBdHRyaWJ1dGVzKTogSVdvcmtmbG93IHtcbiAgICBpZiAoXG4gICAgICBhdHRycy53b3JrZmxvd0FybiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoYXR0cnMud29ya2Zsb3dOYW1lICE9PSB1bmRlZmluZWQgfHwgYXR0cnMud29ya2Zsb3dUeXBlICE9PSB1bmRlZmluZWQgfHwgYXR0cnMud29ya2Zsb3dWZXJzaW9uICE9PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ2Egd29ya2Zsb3dOYW1lLCB3b3JrZmxvd1R5cGUsIG9yIHdvcmtmbG93VmVyc2lvbiBjYW5ub3QgYmUgcHJvdmlkZWQgd2hlbiBhIHdvcmtmbG93QXJuIGlzIHByb3ZpZGVkJyxcbiAgICAgICAgc2NvcGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhdHRycy53b3JrZmxvd0FybiA9PT0gdW5kZWZpbmVkICYmIChhdHRycy53b3JrZmxvd05hbWUgPT09IHVuZGVmaW5lZCB8fCBhdHRycy53b3JrZmxvd1R5cGUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdlaXRoZXIgd29ya2Zsb3dBcm4sIG9yIHdvcmtmbG93TmFtZSBhbmQgd29ya2Zsb3dUeXBlIGlzIHJlcXVpcmVkJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChhdHRycy53b3JrZmxvd1R5cGUgJiYgY2RrLlRva2VuLmlzVW5yZXNvbHZlZChhdHRycy53b3JrZmxvd1R5cGUpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignd29ya2Zsb3dUeXBlIGNhbm5vdCBiZSBhbiB1bnJlc29sdmVkIHRva2VuJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdvcmtmbG93QXJuID0gKCgpID0+IHtcbiAgICAgIGlmIChhdHRycy53b3JrZmxvd0FybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBhdHRycy53b3JrZmxvd0FybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnd29ya2Zsb3cnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLndvcmtmbG93VHlwZSEudG9Mb3dlckNhc2UoKX0vJHthdHRycy53b3JrZmxvd05hbWUhfS8ke2F0dHJzLndvcmtmbG93VmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTn1gLFxuICAgICAgfSk7XG4gICAgfSkoKTtcblxuICAgIGNvbnN0IFt3b3JrZmxvd1R5cGUsIHdvcmtmbG93TmFtZSwgd29ya2Zsb3dWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMud29ya2Zsb3dOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFthdHRycy53b3JrZmxvd1R5cGUhLnRvVXBwZXJDYXNlKCksIGF0dHJzLndvcmtmbG93TmFtZSwgYXR0cnMud29ya2Zsb3dWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OXTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgd29ya2Zsb3dOYW1lVHlwZVZlcnNpb24gPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgICB3b3JrZmxvd0FybixcbiAgICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh3b3JrZmxvd05hbWVUeXBlVmVyc2lvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgJ3RoZSB3b3JrZmxvd05hbWUsIHdvcmtmbG93VHlwZSwgYW5kIHdvcmtmbG93VmVyc2lvbiBpbiB0aGUgd29ya2Zsb3dBcm4gY2Fubm90IGJlIGFuIHVucmVzb2x2ZWQgdG9rZW4nLFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAod29ya2Zsb3dOYW1lVHlwZVZlcnNpb24uc3BsaXQoJy8nKS5sZW5ndGggPCAzKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICd0aGUgd29ya2Zsb3cgQVJOIG11c3QgZW5kIHdpdGggPHdvcmtmbG93LXR5cGU+Lzx3b3JrZmxvdy1uYW1lPi88d29ya2Zsb3ctdmVyc2lvbj4nLFxuICAgICAgICAgIHNjb3BlLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB3b3JrZmxvd05hbWVUeXBlVmVyc2lvblNwbGl0ID0gd29ya2Zsb3dOYW1lVHlwZVZlcnNpb24uc3BsaXQoJy8nKTtcbiAgICAgIGNvbnN0IFt3b3JrZmxvd1R5cGVGcm9tQXJuLCB3b3JrZmxvd05hbWVGcm9tQXJuLCB3b3JrZmxvd1ZlcnNpb25Gcm9tQXJuXSA9IHdvcmtmbG93TmFtZVR5cGVWZXJzaW9uU3BsaXQuc2xpY2UoXG4gICAgICAgIDAsXG4gICAgICAgIDMsXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gW3dvcmtmbG93VHlwZUZyb21Bcm4udG9VcHBlckNhc2UoKSwgd29ya2Zsb3dOYW1lRnJvbUFybiwgd29ya2Zsb3dWZXJzaW9uRnJvbUFybl07XG4gICAgfSkoKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFdvcmtmbG93QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dBcm4gPSB3b3JrZmxvd0FybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd05hbWUgPSB3b3JrZmxvd05hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dUeXBlID0gd29ya2Zsb3dUeXBlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VmVyc2lvbiA9IHdvcmtmbG93VmVyc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBXb3JrZmxvdy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNXb3JrZmxvdyh4OiBhbnkpOiB4IGlzIFdvcmtmbG93IHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgV09SS0ZMT1dfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgd29ya2Zsb3dcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3b3JrZmxvd05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIHdvcmtmbG93XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgd29ya2Zsb3dUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSB3b3JrZmxvd1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdvcmtmbG93VmVyc2lvbjogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogV29ya2Zsb3dQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy53b3JrZmxvd05hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFdPUktGTE9XX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVXb3JrZmxvd05hbWUoKTtcblxuICAgIGNvbnN0IHdvcmtmbG93VmVyc2lvbiA9IHByb3BzLndvcmtmbG93VmVyc2lvbiA/PyAnMS4wLjAnO1xuICAgIGNvbnN0IHdvcmtmbG93ID0gbmV3IENmbldvcmtmbG93KHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgdmVyc2lvbjogd29ya2Zsb3dWZXJzaW9uLFxuICAgICAgdHlwZTogcHJvcHMud29ya2Zsb3dUeXBlLFxuICAgICAgY2hhbmdlRGVzY3JpcHRpb246IHByb3BzLmNoYW5nZURlc2NyaXB0aW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAga21zS2V5SWQ6IHByb3BzLmttc0tleT8ua2V5QXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLnByb3BzLmRhdGEucmVuZGVyKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLndvcmtmbG93TmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHdvcmtmbG93LmdldEF0dCgnTmFtZScpLnRvU3RyaW5nKCkpO1xuICAgIHRoaXMud29ya2Zsb3dBcm4gPSB3b3JrZmxvdy5hdHRyQXJuO1xuICAgIHRoaXMud29ya2Zsb3dWZXJzaW9uID0gd29ya2Zsb3dWZXJzaW9uO1xuICAgIHRoaXMud29ya2Zsb3dUeXBlID0gcHJvcHMud29ya2Zsb3dUeXBlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVdvcmtmbG93TmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSB3b3JrZmxvd05hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCcgJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgd29ya2Zsb3dOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigndGhlIHdvcmtmbG93TmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3RoZSB3b3JrZmxvd05hbWUgbXVzdCBiZSBsb3dlcmNhc2UnLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/aws-imagebuilder-alpha",
3
- "version": "2.234.1-alpha.0",
3
+ "version": "2.235.1-alpha.0",
4
4
  "private": false,
5
5
  "description": "The CDK Construct Library for EC2 Image Builder",
6
6
  "main": "lib/index.js",
@@ -77,11 +77,11 @@
77
77
  },
78
78
  "license": "Apache-2.0",
79
79
  "devDependencies": {
80
- "aws-cdk-lib": "2.234.1",
81
- "@aws-cdk/cdk-build-tools": "2.234.1-alpha.0",
82
- "@aws-cdk/integ-runner": "^2.192.2",
83
- "@aws-cdk/pkglint": "2.234.1-alpha.0",
84
- "@aws-cdk/integ-tests-alpha": "2.234.1-alpha.0",
80
+ "aws-cdk-lib": "2.235.1",
81
+ "@aws-cdk/cdk-build-tools": "2.235.1-alpha.0",
82
+ "@aws-cdk/integ-runner": "^2.193.4",
83
+ "@aws-cdk/pkglint": "2.235.1-alpha.0",
84
+ "@aws-cdk/integ-tests-alpha": "2.235.1-alpha.0",
85
85
  "@types/jest": "^29.5.14",
86
86
  "constructs": "^10.0.0",
87
87
  "jest": "^29.7.0"
@@ -94,7 +94,7 @@
94
94
  ],
95
95
  "homepage": "https://github.com/aws/aws-cdk",
96
96
  "peerDependencies": {
97
- "aws-cdk-lib": "^2.234.1",
97
+ "aws-cdk-lib": "^2.235.1",
98
98
  "constructs": "^10.0.0"
99
99
  },
100
100
  "engines": {