@aws-cdk/aws-imagebuilder-alpha 2.235.1-alpha.0 → 2.237.0-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.
@@ -1,4 +1,11 @@
1
1
  "use strict";
2
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
+ var useValue = arguments.length > 2;
4
+ for (var i = 0; i < initializers.length; i++) {
5
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
6
+ }
7
+ return useValue ? value : void 0;
8
+ };
2
9
  var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
10
  function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
11
  var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
@@ -26,13 +33,6 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
26
33
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
34
  done = true;
28
35
  };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.LifecyclePolicy = exports.LifecyclePolicyResourceType = exports.LifecyclePolicyStatus = exports.LifecyclePolicyActionType = void 0;
38
38
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
@@ -40,6 +40,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
40
  const cdk = require("aws-cdk-lib");
41
41
  const iam = require("aws-cdk-lib/aws-iam");
42
42
  const aws_imagebuilder_1 = require("aws-cdk-lib/aws-imagebuilder");
43
+ const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
43
44
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
44
45
  const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
45
46
  const LIFECYCLE_POLICY_SYMBOL = Symbol.for('@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy');
@@ -119,15 +120,22 @@ let LifecyclePolicy = (() => {
119
120
  let _classExtraInitializers = [];
120
121
  let _classThis;
121
122
  let _classSuper = LifecyclePolicyBase;
123
+ let _instanceExtraInitializers = [];
124
+ let _get_lifecyclePolicyName_decorators;
125
+ let _get_lifecyclePolicyArn_decorators;
122
126
  var LifecyclePolicy = class extends _classSuper {
123
127
  static { _classThis = this; }
124
128
  static {
125
129
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
130
+ _get_lifecyclePolicyName_decorators = [helpers_internal_1.memoizedGetter];
131
+ _get_lifecyclePolicyArn_decorators = [helpers_internal_1.memoizedGetter];
132
+ __esDecorate(this, null, _get_lifecyclePolicyName_decorators, { kind: "getter", name: "lifecyclePolicyName", static: false, private: false, access: { has: obj => "lifecyclePolicyName" in obj, get: obj => obj.lifecyclePolicyName }, metadata: _metadata }, null, _instanceExtraInitializers);
133
+ __esDecorate(this, null, _get_lifecyclePolicyArn_decorators, { kind: "getter", name: "lifecyclePolicyArn", static: false, private: false, access: { has: obj => "lifecyclePolicyArn" in obj, get: obj => obj.lifecyclePolicyArn }, metadata: _metadata }, null, _instanceExtraInitializers);
126
134
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
127
135
  LifecyclePolicy = _classThis = _classDescriptor.value;
128
136
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
129
137
  }
130
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.235.1-alpha.0" };
138
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.237.0-alpha.0" };
131
139
  /** Uniquely identifies this class. */
132
140
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.LifecyclePolicy';
133
141
  /**
@@ -158,18 +166,11 @@ let LifecyclePolicy = (() => {
158
166
  static isLifecyclePolicy(x) {
159
167
  return x !== null && typeof x === 'object' && LIFECYCLE_POLICY_SYMBOL in x;
160
168
  }
161
- /**
162
- * The ARN of the lifecycle policy
163
- */
164
- lifecyclePolicyArn;
165
- /**
166
- * The name of the lifecycle policy
167
- */
168
- lifecyclePolicyName;
169
169
  /**
170
170
  * The execution role used for lifecycle policy executions
171
171
  */
172
- executionRole;
172
+ executionRole = __runInitializers(this, _instanceExtraInitializers);
173
+ resource;
173
174
  constructor(scope, id, props) {
174
175
  super(scope, id, {
175
176
  physicalName: props.lifecyclePolicyName ??
@@ -218,8 +219,13 @@ let LifecyclePolicy = (() => {
218
219
  status: props.status,
219
220
  tags: props.tags,
220
221
  });
221
- this.lifecyclePolicyName = this.getResourceNameAttribute(lifecyclePolicy.ref);
222
- this.lifecyclePolicyArn = this.getResourceArnAttribute(lifecyclePolicy.attrArn, {
222
+ this.resource = lifecyclePolicy;
223
+ }
224
+ get lifecyclePolicyName() {
225
+ return this.getResourceNameAttribute(this.resource.ref);
226
+ }
227
+ get lifecyclePolicyArn() {
228
+ return this.getResourceArnAttribute(this.resource.attrArn, {
223
229
  service: 'imagebuilder',
224
230
  resource: 'lifecycle-policy',
225
231
  resourceName: this.physicalName,
@@ -462,4 +468,4 @@ let LifecyclePolicy = (() => {
462
468
  return LifecyclePolicy = _classThis;
463
469
  })();
464
470
  exports.LifecyclePolicy = LifecyclePolicy;
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==
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpZmVjeWNsZS1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFDbEUsNEVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFJMUUsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFvQzlGOztHQUVHO0FBQ0gsSUFBWSx5QkFhWDtBQWJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsOENBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvREFBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFiVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQWFwQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFVWDtBQVZELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsNENBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCw4Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFVaEM7QUFFRDs7R0FFRztBQUNILElBQVksMkJBVVg7QUFWRCxXQUFZLDJCQUEyQjtJQUNyQzs7T0FFRztJQUNILHNEQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsa0VBQW1DLENBQUE7QUFDckMsQ0FBQyxFQVZXLDJCQUEyQiwyQ0FBM0IsMkJBQTJCLFFBVXRDO0FBeVBELE1BQWUsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFJckQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQ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QUFFLElBQUksQ0FBQyxDQUFDO1lBQ25GLENBQUM7U0FDRjs7WUE1WlUsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuTGlmZWN5Y2xlUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJUmVjaXBlQmFzZSB9IGZyb20gJy4vcmVjaXBlLWJhc2UnO1xuXG5jb25zdCBMSUZFQ1lDTEVfUE9MSUNZX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuTGlmZWN5Y2xlUG9saWN5Jyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgTGlmZWN5Y2xlIFBvbGljeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTGlmZWN5Y2xlUG9saWN5IGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgLSBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQ7XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBvbiB0aGUgcmVzb3VyY2VzIHdoaWNoIHRoZSBwb2xpY3kgYXBwbGllcyB0b1xuICovXG5leHBvcnQgZW51bSBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBydWxlIHNob3VsZCBkZWxldGUgdGhlIHJlc291cmNlIHdoZW4gaXQgaXMgYXBwbGllZFxuICAgKi9cbiAgREVMRVRFID0gJ0RFTEVURScsXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcnVsZSBzaG91bGQgZGVwcmVjYXRlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERFUFJFQ0FURSA9ICdERVBSRUNBVEUnLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHJ1bGUgc2hvdWxkIGRpc2FibGUgdGhlIHJlc291cmNlIHdoZW4gaXQgaXMgYXBwbGllZFxuICAgKi9cbiAgRElTQUJMRSA9ICdESVNBQkxFJyxcbn1cblxuLyoqXG4gKiBUaGUgc3RhdHVzIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LCBpbmRpY2F0aW5nIHdoZXRoZXIgaXQgd2lsbCBydW5cbiAqL1xuZXhwb3J0IGVudW0gTGlmZWN5Y2xlUG9saWN5U3RhdHVzIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBsaWZlY3ljbGUgcG9saWN5IHNob3VsZCBiZSBlbmFibGVkXG4gICAqL1xuICBFTkFCTEVEID0gJ0VOQUJMRUQnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICovXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgdHlwZSB3aGljaCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBpcyBhcHBsaWVkIHRvXG4gKi9cbmV4cG9ydCBlbnVtIExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBvbGljeSBhcHBsaWVzIHRvIEFNSS1iYXNlZCBpbWFnZXNcbiAgICovXG4gIEFNSV9JTUFHRSA9ICdBTUlfSU1BR0UnLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIHBvbGljeSBhcHBsaWVzIHRvIGNvbnRhaW5lciBpbWFnZXNcbiAgICovXG4gIENPTlRBSU5FUl9JTUFHRSA9ICdDT05UQUlORVJfSU1BR0UnLFxufVxuXG4vKipcbiAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5QWN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBvbiB0aGUgcmVzb3VyY2VzIHNlbGVjdGVkIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IExpZmVjeWNsZVBvbGljeUFjdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBBTUlzIGluIHRoZSBzY29wZSBvZiB0aGUgbGlmZWN5Y2xlIHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlIGZvciBBTUktYmFzZWQgcG9saWNpZXMsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5jbHVkZUFtaXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgY29udGFpbmVycyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgY29udGFpbmVyLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVDb250YWluZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIHNuYXBzaG90cyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgQU1JLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVTbmFwc2hvdHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSByZXNvdXJjZSBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUZpbHRlciB7XG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgYWdlIGZpbHRlciB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBhIGNvdW50IGZpbHRlciBpcyBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhbiBhZ2UgZmlsdGVyIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlRmlsdGVyPzogTGlmZWN5Y2xlUG9saWN5QWdlRmlsdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgY291bnQgZmlsdGVyIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGFuIGFnZSBmaWx0ZXIgaXMgcHJvdmlkZWQuIE90aGVyd2lzZSwgYSBjb3VudCBmaWx0ZXIgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSBjb3VudEZpbHRlcj86IExpZmVjeWNsZVBvbGljeUNvdW50RmlsdGVyO1xufVxuXG4vKipcbiAqIFRoZSBjb3VudC1iYXNlZCBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gYSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lDb3VudEZpbHRlciB7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgcmVzb3VyY2VzIHRvIGtlZXAgb24gaGFuZCBhcyBwYXJ0IG9mIHJlc291cmNlIGZpbHRlcmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgY291bnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgYWdlLWJhc2VkIGZpbHRlcmluZyB0byBhcHBseSBpbiBhIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFnZUZpbHRlciB7XG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBhZ2Ugb2YgdGhlIHJlc291cmNlIHRvIGZpbHRlci4gVGhlIHByb3ZpZGVkIGR1cmF0aW9uIHdpbGwgYmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdFxuICAgKiBkYXkvd2Vlay9tb250aC95ZWFyIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWdlOiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEZvciBhZ2UtYmFzZWQgZmlsdGVycywgdGhlIG51bWJlciBvZiBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgdG8ga2VlcCBvbiBoYW5kIG9uY2UgdGhlIHJ1bGUgaXMgYXBwbGllZC4gVGhlIHZhbHVlXG4gICAqIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMC5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgcmV0YWluQXRMZWFzdD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5SW1hZ2VFeGNsdXNpb25SdWxlcyB7XG4gIC8qKlxuICAgKiBFeGNsdWRlcyBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgd2l0aCBhbnkgb2YgdGhlIHByb3ZpZGVkIHRhZ3MgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSB0YWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFRoZSBydWxlcyB0byBhcHBseSBmb3IgZXhjbHVkaW5nIEFNSXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5QW1pRXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogRXhjbHVkZXMgcHVibGljIEFNSXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlIGlmIHRydWVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzUHVibGljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXhjbHVkZXMgQU1JcyB3aGljaCB3ZXJlIGxhdW5jaGVkIGZyb20gd2l0aGluIHRoZSBwcm92aWRlZCBkdXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsYXN0TGF1bmNoZWQ/OiBjZGsuRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggcmVzaWRlIGluIGFueSBvZiB0aGUgcHJvdmlkZWQgcmVnaW9uc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSByZWdpb25zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggYXJlIHNoYXJlZCB3aXRoIGFueSBvZiB0aGUgcHJvdmlkZWQgc2hhcmVkIGFjY291bnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHNoYXJlZEFjY291bnRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggaGF2ZSBhbnkgb2YgdGhlIHByb3ZpZGVkIHRhZ3MgYXBwbGllZCB0byBpdFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyByZXNvdXJjZXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5RXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiB0aGUgaW1hZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlRXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lJbWFnZUV4Y2x1c2lvblJ1bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiB0aGUgQU1JXG4gICAqL1xuICByZWFkb25seSBhbWlFeGNsdXNpb25SdWxlcz86IExpZmVjeWNsZVBvbGljeUFtaUV4Y2x1c2lvblJ1bGVzO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lEZXRhaWwge1xuICAvKipcbiAgICogVGhlIGFjdGlvbiB0byBwZXJmb3JtIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbjogTGlmZWN5Y2xlUG9saWN5QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgZmlsdGVyaW5nIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcjogTGlmZWN5Y2xlUG9saWN5RmlsdGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyByZXNvdXJjZXMgZnJvbSB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhjbHVzaW9uIHJ1bGVzIGFyZSBhcHBsaWVkIG9uIGFueSByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lFeGNsdXNpb25SdWxlcztcbn1cblxuLyoqXG4gKiBTZWxlY3Rpb24gY3JpdGVyaWEgZm9yIHRoZSByZXNvdXJjZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VTZWxlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgaW1hZ2UgcmVjaXBlcyBvciBjb250YWluZXIgcmVjaXBlcyB0byBhcHBseSB0aGUgbGlmZWN5Y2xlIHBvbGljeSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgdGFnIHNlbGVjdGlvbnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGF0IGxlYXN0IG9uZSByZWNpcGUgb3IgdGFnIHNlbGVjdGlvbiBtdXN0IGJlIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSByZWNpcGVzPzogSVJlY2lwZUJhc2VbXTtcblxuICAvKipcbiAgICogU2VsZWN0cyBFQzIgSW1hZ2UgQnVpbGRlciBpbWFnZXMgY29udGFpbmluZyBhbnkgb2YgdGhlIHByb3ZpZGVkIHRhZ3NcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHJlY2lwZSBzZWxlY3Rpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgcmVjaXBlIG9yIHRhZyBzZWxlY3Rpb24gbXVzdCBiZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBMaWZlY3ljbGUgUG9saWN5IHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5UHJvcHMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgSW1hZ2UgQnVpbGRlciByZXNvdXJjZSB0aGF0IHRoZSBsaWZlY3ljbGUgcG9saWN5IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZTtcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbHM6IExpZmVjeWNsZVBvbGljeURldGFpbFtdO1xuXG4gIC8qKlxuICAgKiBTZWxlY3Rpb24gY3JpdGVyaWEgZm9yIHRoZSByZXNvdXJjZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VTZWxlY3Rpb246IExpZmVjeWNsZVBvbGljeVJlc291cmNlU2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5hbWUgaXMgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdHVzIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBMaWZlY3ljbGVQb2xpY3lTdGF0dXMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogTGlmZWN5Y2xlUG9saWN5U3RhdHVzO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdGhhdCBncmFudHMgSW1hZ2UgQnVpbGRlciBhY2Nlc3MgdG8gcnVuIGxpZmVjeWNsZSBhY3Rpb25zLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCB0aGUgbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBhY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBleGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5hYnN0cmFjdCBjbGFzcyBMaWZlY3ljbGVQb2xpY3lCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUxpZmVjeWNsZVBvbGljeSB7XG4gIGFic3RyYWN0IHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nO1xuICBhYnN0cmFjdCByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMubGlmZWN5Y2xlUG9saWN5QXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRMaWZlY3ljbGVQb2xpY3knKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgTGlmZWN5Y2xlIFBvbGljeS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtaW1hZ2UtbGlmZWN5Y2xlcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBMaWZlY3ljbGVQb2xpY3kgZXh0ZW5kcyBMaWZlY3ljbGVQb2xpY3lCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkxpZmVjeWNsZVBvbGljeSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBsaWZlY3ljbGUgcG9saWN5IGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21MaWZlY3ljbGVQb2xpY3lBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbGlmZWN5Y2xlUG9saWN5QXJuOiBzdHJpbmcpOiBJTGlmZWN5Y2xlUG9saWN5IHtcbiAgICBjb25zdCBsaWZlY3ljbGVQb2xpY3lOYW1lID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgIGxpZmVjeWNsZVBvbGljeUFybixcbiAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBMaWZlY3ljbGVQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm4gPSBsaWZlY3ljbGVQb2xpY3lBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZSA9IGxpZmVjeWNsZVBvbGljeU5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbGlmZWN5Y2xlIHBvbGljeSBnaXZlbiBpdHMgbmFtZS4gSWYgdGhlIG5hbWUgaXMgYSB0b2tlbiByZXByZXNlbnRpbmcgYSBkeW5hbWljIENsb3VkRm9ybWF0aW9uXG4gICAqIGV4cHJlc3Npb24sIHlvdSBtdXN0IGVuc3VyZSBhbGwgYWxwaGFiZXRpYyBjaGFyYWN0ZXJzIGluIHRoZSBleHByZXNzaW9uIGFyZSBhbHJlYWR5IGxvd2VyY2FzZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxpZmVjeWNsZVBvbGljeU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nKTogSUxpZmVjeWNsZVBvbGljeSB7XG4gICAgcmV0dXJuIExpZmVjeWNsZVBvbGljeS5mcm9tTGlmZWN5Y2xlUG9saWN5QXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBpZCxcbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnbGlmZWN5Y2xlLXBvbGljeScsXG4gICAgICAgIHJlc291cmNlTmFtZTogbGlmZWN5Y2xlUG9saWN5TmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIExpZmVjeWNsZVBvbGljeS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNMaWZlY3ljbGVQb2xpY3koeDogYW55KTogeCBpcyBMaWZlY3ljbGVQb2xpY3kge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBMSUZFQ1lDTEVfUE9MSUNZX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIGZvciBsaWZlY3ljbGUgcG9saWN5IGV4ZWN1dGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGVjdXRpb25Sb2xlOiBpYW0uSVJvbGU7XG5cbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuTGlmZWN5Y2xlUG9saWN5O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGlmZWN5Y2xlUG9saWN5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMubGlmZWN5Y2xlUG9saWN5TmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIExJRkVDWUNMRV9QT0xJQ1lfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUxpZmVjeWNsZVBvbGljeU5hbWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlUG9saWN5KHByb3BzKTtcblxuICAgIHRoaXMuZXhlY3V0aW9uUm9sZSA9XG4gICAgICBwcm9wcy5leGVjdXRpb25Sb2xlID8/XG4gICAgICBuZXcgaWFtLlJvbGUodGhpcywgJ0V4ZWN1dGlvblJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdpbWFnZWJ1aWxkZXIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ3NlcnZpY2Utcm9sZS9FQzJJbWFnZUJ1aWxkZXJMaWZlY3ljbGVFeGVjdXRpb25Qb2xpY3knKSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgbGlmZWN5Y2xlUG9saWN5ID0gbmV3IENmbkxpZmVjeWNsZVBvbGljeSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIHJlc291cmNlVHlwZTogcHJvcHMucmVzb3VyY2VUeXBlLFxuICAgICAgZXhlY3V0aW9uUm9sZTogdGhpcy5leGVjdXRpb25Sb2xlLnJvbGVBcm4sXG4gICAgICBwb2xpY3lEZXRhaWxzOiB0aGlzLmJ1aWxkUG9saWN5RGV0YWlscyhwcm9wcy5yZXNvdXJjZVR5cGUsIHByb3BzLmRldGFpbHMpLFxuICAgICAgcmVzb3VyY2VTZWxlY3Rpb246IHtcbiAgICAgICAgLi4uKHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnJlY2lwZXMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgcmVjaXBlczogdGhpcy5idWlsZFJlY2lwZXMocHJvcHMucmVzb3VyY2VUeXBlLCBwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzKSxcbiAgICAgICAgfSksXG4gICAgICAgIHRhZ01hcDogcHJvcHMucmVzb3VyY2VTZWxlY3Rpb24udGFncyxcbiAgICAgIH0sXG4gICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbGlmZWN5Y2xlUG9saWN5O1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgbGlmZWN5Y2xlUG9saWN5TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLnJlZik7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBsaWZlY3ljbGVQb2xpY3lBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgcmVzb3VyY2U6ICdsaWZlY3ljbGUtcG9saWN5JyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBwb2xpY3kgZGV0YWlscyBwcm9wZXJ0eSBpbnRvIHRoZSBgUG9saWN5RGV0YWlsYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSBkZXRhaWxzIFRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUG9saWN5RGV0YWlscyhcbiAgICByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSxcbiAgICBkZXRhaWxzOiBMaWZlY3ljbGVQb2xpY3lEZXRhaWxbXSxcbiAgKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LlBvbGljeURldGFpbFByb3BlcnR5W10ge1xuICAgIHJldHVybiBkZXRhaWxzLm1hcCgoZGV0YWlsKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LlBvbGljeURldGFpbFByb3BlcnR5ID0+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.235.1-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.OSVersion", version: "2.237.0-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.235.1-alpha.0" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentParameterValue", version: "2.237.0-alpha.0" };
10
10
  /**
11
11
  * The value of the parameter as a string
12
12
  *
package/lib/workflow.d.ts CHANGED
@@ -475,14 +475,6 @@ export declare class Workflow extends WorkflowBase {
475
475
  * Return whether the given object is a Workflow.
476
476
  */
477
477
  static isWorkflow(x: any): x is Workflow;
478
- /**
479
- * The ARN of the workflow
480
- */
481
- readonly workflowArn: string;
482
- /**
483
- * The name of the workflow
484
- */
485
- readonly workflowName: string;
486
478
  /**
487
479
  * The type of the workflow
488
480
  */
@@ -491,7 +483,10 @@ export declare class Workflow extends WorkflowBase {
491
483
  * The version of the workflow
492
484
  */
493
485
  readonly workflowVersion: string;
486
+ private resource;
494
487
  constructor(scope: Construct, id: string, props: WorkflowProps);
488
+ get workflowName(): string;
489
+ get workflowArn(): string;
495
490
  private validateWorkflowName;
496
491
  }
497
492
  export {};