@aws-cdk/aws-imagebuilder-alpha 2.242.0-alpha.0 → 2.244.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.
@@ -135,7 +135,7 @@ let LifecyclePolicy = (() => {
135
135
  LifecyclePolicy = _classThis = _classDescriptor.value;
136
136
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
137
137
  }
138
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.242.0-alpha.0" };
138
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.LifecyclePolicy", version: "2.244.0-alpha.0" };
139
139
  /** Uniquely identifies this class. */
140
140
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.LifecyclePolicy';
141
141
  /**
@@ -269,7 +269,7 @@ let LifecyclePolicy = (() => {
269
269
  return recipes?.map((recipe) => {
270
270
  if (recipe._isImageRecipe()) {
271
271
  if (resourceType === LifecyclePolicyResourceType.CONTAINER_IMAGE) {
272
- throw new cdk.ValidationError(`recipes in the resource selection must all be container recipes for policy type ${LifecyclePolicyResourceType.CONTAINER_IMAGE}`, this);
272
+ throw new cdk.ValidationError('RecipeTypeMismatchForContainerPolicy', `recipes in the resource selection must all be container recipes for policy type ${LifecyclePolicyResourceType.CONTAINER_IMAGE}`, this);
273
273
  }
274
274
  return {
275
275
  name: recipe.imageRecipeName,
@@ -278,14 +278,14 @@ let LifecyclePolicy = (() => {
278
278
  }
279
279
  if (recipe._isContainerRecipe()) {
280
280
  if (resourceType === LifecyclePolicyResourceType.AMI_IMAGE) {
281
- throw new cdk.ValidationError(`recipes in the resource selection must all be image recipes for policy type ${LifecyclePolicyResourceType.AMI_IMAGE}`, this);
281
+ throw new cdk.ValidationError('RecipeTypeMismatchForAmiPolicy', `recipes in the resource selection must all be image recipes for policy type ${LifecyclePolicyResourceType.AMI_IMAGE}`, this);
282
282
  }
283
283
  return {
284
284
  name: recipe.containerRecipeName,
285
285
  semanticVersion: recipe.containerRecipeVersion,
286
286
  };
287
287
  }
288
- throw new cdk.ValidationError('recipes in the resource selection must either be an IImageRecipe or IContainerRecipe', this);
288
+ throw new cdk.ValidationError('InvalidRecipeType', 'recipes in the resource selection must either be an IImageRecipe or IContainerRecipe', this);
289
289
  });
290
290
  }
291
291
  /**
@@ -343,20 +343,20 @@ let LifecyclePolicy = (() => {
343
343
  */
344
344
  validatePolicy(props) {
345
345
  if (props.resourceSelection.recipes?.length && Object.keys(props.resourceSelection.tags || {}).length) {
346
- throw new cdk.ValidationError('resource selection cannot contain both recipes and tags', this);
346
+ throw new cdk.ValidationError('ResourceSelectionCannotContainBothRecipesAndTags', 'resource selection cannot contain both recipes and tags', this);
347
347
  }
348
348
  if (!props.resourceSelection.recipes?.length && !Object.keys(props.resourceSelection.tags || {}).length) {
349
- throw new cdk.ValidationError('resource selection must contain either recipes or tags', this);
349
+ throw new cdk.ValidationError('ResourceSelectionRequired', 'resource selection must contain either recipes or tags', this);
350
350
  }
351
351
  if (props.details.length === 0) {
352
- throw new cdk.ValidationError('a lifecycle policy must have at least 1 rule', this);
352
+ throw new cdk.ValidationError('MinimumOneRuleRequired', 'a lifecycle policy must have at least 1 rule', this);
353
353
  }
354
354
  if (props.details.length > 3) {
355
- throw new cdk.ValidationError('a lifecycle policy can only have up to 3 rules', this);
355
+ throw new cdk.ValidationError('MaximumThreeRulesExceeded', 'a lifecycle policy can only have up to 3 rules', this);
356
356
  }
357
357
  const actions = props.details.map((detail) => detail.action.type);
358
358
  if (new Set(actions).size != actions.length) {
359
- throw new cdk.ValidationError('lifecycle policy rules may not have duplicate actions', this);
359
+ throw new cdk.ValidationError('DuplicateActions', 'lifecycle policy rules may not have duplicate actions', this);
360
360
  }
361
361
  }
362
362
  /**
@@ -370,22 +370,22 @@ let LifecyclePolicy = (() => {
370
370
  validatePolicyDetailAction(resourceType, action, amiExclusionRules) {
371
371
  if (!cdk.Token.isUnresolved(resourceType) && resourceType === LifecyclePolicyResourceType.CONTAINER_IMAGE) {
372
372
  if (!cdk.Token.isUnresolved(action.type) && action.type !== LifecyclePolicyActionType.DELETE) {
373
- throw new cdk.ValidationError('you may only specify DELETE rules for container policies', this);
373
+ throw new cdk.ValidationError('OnlyDeleteRulesForContainerPolicies', 'you may only specify DELETE rules for container policies', this);
374
374
  }
375
375
  if (action.includeAmis) {
376
- throw new cdk.ValidationError('you cannot include AMIs in a container policy', this);
376
+ throw new cdk.ValidationError('CannotIncludeAmisInContainerPolicy', 'you cannot include AMIs in a container policy', this);
377
377
  }
378
378
  if (action.includeSnapshots) {
379
- throw new cdk.ValidationError('you cannot include snapshots in a container policy', this);
379
+ throw new cdk.ValidationError('CannotIncludeSnapshotsInContainerPolicy', 'you cannot include snapshots in a container policy', this);
380
380
  }
381
381
  if (amiExclusionRules !== undefined) {
382
- throw new cdk.ValidationError('you cannot exclude AMIs in a container policy', this);
382
+ throw new cdk.ValidationError('CannotExcludeAmisInContainerPolicy', 'you cannot exclude AMIs in a container policy', this);
383
383
  }
384
384
  }
385
385
  if (!cdk.Token.isUnresolved(resourceType) &&
386
386
  resourceType === LifecyclePolicyResourceType.AMI_IMAGE &&
387
387
  action.includeContainers) {
388
- throw new cdk.ValidationError('you cannot include containers in an AMI policy', this);
388
+ throw new cdk.ValidationError('CannotIncludeContainersInAmiPolicy', 'you cannot include containers in an AMI policy', this);
389
389
  }
390
390
  }
391
391
  /**
@@ -396,18 +396,18 @@ let LifecyclePolicy = (() => {
396
396
  */
397
397
  validatePolicyDetailFilter(filter) {
398
398
  if (filter.ageFilter !== undefined && filter.countFilter !== undefined) {
399
- throw new cdk.ValidationError('either age count can be specified in a policy filter, but not both', this);
399
+ throw new cdk.ValidationError('AgeAndCountFilterConflict', 'either age count can be specified in a policy filter, but not both', this);
400
400
  }
401
401
  if (filter.ageFilter === undefined && filter.countFilter === undefined) {
402
- throw new cdk.ValidationError('you must provide an age or count filter in the policy', this);
402
+ throw new cdk.ValidationError('AgeOrCountFilterRequired', 'you must provide an age or count filter in the policy', this);
403
403
  }
404
404
  const retainAtLeast = filter.ageFilter?.retainAtLeast;
405
405
  if (retainAtLeast !== undefined) {
406
406
  if (retainAtLeast < 1) {
407
- throw new cdk.ValidationError('the retainAtLeast filter value must be at least 1', this);
407
+ throw new cdk.ValidationError('RetainAtLeastTooLow', 'the retainAtLeast filter value must be at least 1', this);
408
408
  }
409
409
  if (retainAtLeast > 10) {
410
- throw new cdk.ValidationError('the retainAtLeast filter value must be at most 10', this);
410
+ throw new cdk.ValidationError('RetainAtLeastTooHigh', 'the retainAtLeast filter value must be at most 10', this);
411
411
  }
412
412
  }
413
413
  }
@@ -425,7 +425,7 @@ let LifecyclePolicy = (() => {
425
425
  const DAYS_PER_YEAR = 365;
426
426
  const valueInDays = Math.ceil(duration.toDays());
427
427
  if (valueInDays < 1) {
428
- throw new cdk.ValidationError('the provided duration must be at least 1 day', this);
428
+ throw new cdk.ValidationError('DurationTooShort', 'the provided duration must be at least 1 day', this);
429
429
  }
430
430
  if (valueInDays <= valueLimit) {
431
431
  return { value: valueInDays, unit: 'DAYS' };
@@ -442,23 +442,23 @@ let LifecyclePolicy = (() => {
442
442
  if (valueInYears <= valueLimit) {
443
443
  return { value: valueInYears, unit: 'YEARS' };
444
444
  }
445
- throw new cdk.ValidationError(`the provided duration must be less than ${valueLimit} years`, this);
445
+ throw new cdk.ValidationError('DurationTooLong', `the provided duration must be less than ${valueLimit} years`, this);
446
446
  }
447
447
  validateLifecyclePolicyName() {
448
448
  if (cdk.Token.isUnresolved(this.physicalName)) {
449
449
  return; // Cannot validate unresolved tokens, given their actual value is rendered at deployment time
450
450
  }
451
451
  if (this.physicalName.length > 128) {
452
- throw new cdk.ValidationError('The lifecyclePolicyName cannot be longer than 128 characters', this);
452
+ throw new cdk.ValidationError('LifecyclePolicyNameTooLong', 'The lifecyclePolicyName cannot be longer than 128 characters', this);
453
453
  }
454
454
  if (this.physicalName.includes(' ')) {
455
- throw new cdk.ValidationError('The lifecyclePolicyName cannot contain spaces', this);
455
+ throw new cdk.ValidationError('LifecyclePolicyNameContainsSpaces', 'The lifecyclePolicyName cannot contain spaces', this);
456
456
  }
457
457
  if (this.physicalName.includes('_')) {
458
- throw new cdk.ValidationError('The lifecyclePolicyName cannot contain underscores', this);
458
+ throw new cdk.ValidationError('LifecyclePolicyNameContainsUnderscores', 'The lifecyclePolicyName cannot contain underscores', this);
459
459
  }
460
460
  if (this.physicalName !== this.physicalName.toLowerCase()) {
461
- throw new cdk.ValidationError('The lifecyclePolicyName must be lowercase', this);
461
+ throw new cdk.ValidationError('LifecyclePolicyNameNotLowercase', 'The lifecyclePolicyName must be lowercase', this);
462
462
  }
463
463
  }
464
464
  static {
@@ -468,4 +468,4 @@ let LifecyclePolicy = (() => {
468
468
  return LifecyclePolicy = _classThis;
469
469
  })();
470
470
  exports.LifecyclePolicy = LifecyclePolicy;
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpZmVjeWNsZS1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFDbEUsNEVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFJMUUsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFvQzlGOztHQUVHO0FBQ0gsSUFBWSx5QkFhWDtBQWJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsOENBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvREFBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFiVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQWFwQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFVWDtBQVZELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsNENBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCw4Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFVaEM7QUFFRDs7R0FFRztBQUNILElBQVksMkJBVVg7QUFWRCxXQUFZLDJCQUEyQjtJQUNyQzs7T0FFRztJQUNILHNEQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsa0VBQW1DLENBQUE7QUFDckMsQ0FBQyxFQVZXLDJCQUEyQiwyQ0FBM0IsMkJBQTJCLFFBVXRDO0FBeVBELE1BQWUsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFJckQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQ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QUFFLElBQUksQ0FBQyxDQUFDO1lBQ25GLENBQUM7U0FDRjs7WUE1WlUsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuTGlmZWN5Y2xlUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcblxuY29uc3QgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkxpZmVjeWNsZVBvbGljeScpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIExpZmVjeWNsZSBQb2xpY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpZmVjeWNsZVBvbGljeSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIHJlc291cmNlcyB3aGljaCB0aGUgcG9saWN5IGFwcGxpZXMgdG9cbiAqL1xuZXhwb3J0IGVudW0gTGlmZWN5Y2xlUG9saWN5QWN0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcnVsZSBzaG91bGQgZGVsZXRlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERFTEVURSA9ICdERUxFVEUnLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHJ1bGUgc2hvdWxkIGRlcHJlY2F0ZSB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBhcHBsaWVkXG4gICAqL1xuICBERVBSRUNBVEUgPSAnREVQUkVDQVRFJyxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBydWxlIHNob3VsZCBkaXNhYmxlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERJU0FCTEUgPSAnRElTQUJMRScsXG59XG5cbi8qKlxuICogVGhlIHN0YXR1cyBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeSwgaW5kaWNhdGluZyB3aGV0aGVyIGl0IHdpbGwgcnVuXG4gKi9cbmV4cG9ydCBlbnVtIExpZmVjeWNsZVBvbGljeVN0YXR1cyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBzaG91bGQgYmUgZW5hYmxlZFxuICAgKi9cbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbi8qKlxuICogVGhlIHJlc291cmNlIHR5cGUgd2hpY2ggdGhlIGxpZmVjeWNsZSBwb2xpY3kgaXMgYXBwbGllZCB0b1xuICovXG5leHBvcnQgZW51bSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwb2xpY3kgYXBwbGllcyB0byBBTUktYmFzZWQgaW1hZ2VzXG4gICAqL1xuICBBTUlfSU1BR0UgPSAnQU1JX0lNQUdFJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwb2xpY3kgYXBwbGllcyB0byBjb250YWluZXIgaW1hZ2VzXG4gICAqL1xuICBDT05UQUlORVJfSU1BR0UgPSAnQ09OVEFJTkVSX0lNQUdFJyxcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFjdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIHJlc291cmNlcyBzZWxlY3RlZCBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgQU1JcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgQU1JLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVBbWlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGNvbnRhaW5lcnMgaW4gdGhlIHNjb3BlIG9mIHRoZSBsaWZlY3ljbGUgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIGNvbnRhaW5lci1iYXNlZCBwb2xpY2llcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ29udGFpbmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBzbmFwc2hvdHMgaW4gdGhlIHNjb3BlIG9mIHRoZSBsaWZlY3ljbGUgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIEFNSS1iYXNlZCBwb2xpY2llcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlU25hcHNob3RzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgZmlsdGVyaW5nIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIHJlc291cmNlIGFnZSBmaWx0ZXIgdG8gYXBwbHkgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYSBjb3VudCBmaWx0ZXIgaXMgcHJvdmlkZWQuIE90aGVyd2lzZSwgYW4gYWdlIGZpbHRlciBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZUZpbHRlcj86IExpZmVjeWNsZVBvbGljeUFnZUZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGNvdW50IGZpbHRlciB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBhbiBhZ2UgZmlsdGVyIGlzIHByb3ZpZGVkLiBPdGhlcndpc2UsIGEgY291bnQgZmlsdGVyIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY291bnRGaWx0ZXI/OiBMaWZlY3ljbGVQb2xpY3lDb3VudEZpbHRlcjtcbn1cblxuLyoqXG4gKiBUaGUgY291bnQtYmFzZWQgZmlsdGVyaW5nIHRvIGFwcGx5IGluIGEgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5Q291bnRGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHJlc291cmNlcyB0byBrZWVwIG9uIGhhbmQgYXMgcGFydCBvZiByZXNvdXJjZSBmaWx0ZXJpbmdcbiAgICovXG4gIHJlYWRvbmx5IGNvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGFnZS1iYXNlZCBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gYSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lBZ2VGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gYWdlIG9mIHRoZSByZXNvdXJjZSB0byBmaWx0ZXIuIFRoZSBwcm92aWRlZCBkdXJhdGlvbiB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgICogZGF5L3dlZWsvbW9udGgveWVhciB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGFnZTogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBGb3IgYWdlLWJhc2VkIGZpbHRlcnMsIHRoZSBudW1iZXIgb2YgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIHRvIGtlZXAgb24gaGFuZCBvbmNlIHRoZSBydWxlIGlzIGFwcGxpZWQuIFRoZSB2YWx1ZVxuICAgKiBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHJldGFpbkF0TGVhc3Q/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUltYWdlRXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogRXhjbHVkZXMgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIHdpdGggYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFtaUV4Y2x1c2lvblJ1bGVzIHtcbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIHB1YmxpYyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZSBpZiB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1B1YmxpYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggd2VyZSBsYXVuY2hlZCBmcm9tIHdpdGhpbiB0aGUgcHJvdmlkZWQgZHVyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdExhdW5jaGVkPzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIHJlc2lkZSBpbiBhbnkgb2YgdGhlIHByb3ZpZGVkIHJlZ2lvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIGFyZSBzaGFyZWQgd2l0aCBhbnkgb2YgdGhlIHByb3ZpZGVkIHNoYXJlZCBhY2NvdW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRBY2NvdW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIGhhdmUgYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzIGFwcGxpZWQgdG8gaXRcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgcmVzb3VyY2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUV4Y2x1c2lvblJ1bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBydWxlcyB0byBhcHBseSBmb3IgZXhjbHVkaW5nIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlcyBmcm9tIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGNsdXNpb24gcnVsZXMgYXJlIGFwcGxpZWQgb24gdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSBpbWFnZUV4Y2x1c2lvblJ1bGVzPzogTGlmZWN5Y2xlUG9saWN5SW1hZ2VFeGNsdXNpb25SdWxlcztcblxuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgQU1JcyBmcm9tIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGNsdXNpb24gcnVsZXMgYXJlIGFwcGxpZWQgb24gdGhlIEFNSVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pRXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lBbWlFeGNsdXNpb25SdWxlcztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5RGV0YWlsIHtcbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSBhY3Rpb246IExpZmVjeWNsZVBvbGljeUFjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGZpbHRlcmluZyB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI6IExpZmVjeWNsZVBvbGljeUZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgcmVzb3VyY2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiBhbnkgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1c2lvblJ1bGVzPzogTGlmZWN5Y2xlUG9saWN5RXhjbHVzaW9uUnVsZXM7XG59XG5cbi8qKlxuICogU2VsZWN0aW9uIGNyaXRlcmlhIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgYXBwbGllcyB0b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeVJlc291cmNlU2VsZWN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGltYWdlIHJlY2lwZXMgb3IgY29udGFpbmVyIHJlY2lwZXMgdG8gYXBwbHkgdGhlIGxpZmVjeWNsZSBwb2xpY3kgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHRhZyBzZWxlY3Rpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgcmVjaXBlIG9yIHRhZyBzZWxlY3Rpb24gbXVzdCBiZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlcz86IElSZWNpcGVCYXNlW107XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGNvbnRhaW5pbmcgYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiByZWNpcGUgc2VsZWN0aW9ucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYXQgbGVhc3Qgb25lIHJlY2lwZSBvciB0YWcgc2VsZWN0aW9uIG11c3QgYmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgTGlmZWN5Y2xlIFBvbGljeSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIEltYWdlIEJ1aWxkZXIgcmVzb3VyY2UgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZXMuXG4gICAqL1xuICByZWFkb25seSBkZXRhaWxzOiBMaWZlY3ljbGVQb2xpY3lEZXRhaWxbXTtcblxuICAvKipcbiAgICogU2VsZWN0aW9uIGNyaXRlcmlhIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlU2VsZWN0aW9uOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgTGlmZWN5Y2xlUG9saWN5U3RhdHVzLkVOQUJMRURcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IExpZmVjeWNsZVBvbGljeVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHRoYXQgZ3JhbnRzIEltYWdlIEJ1aWxkZXIgYWNjZXNzIHRvIHJ1biBsaWZlY3ljbGUgYWN0aW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogYWN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuYWJzdHJhY3QgY2xhc3MgTGlmZWN5Y2xlUG9saWN5QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElMaWZlY3ljbGVQb2xpY3kge1xuICBhYnN0cmFjdCByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmxpZmVjeWNsZVBvbGljeUFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0TGlmZWN5Y2xlUG9saWN5Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIExpZmVjeWNsZSBQb2xpY3kuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLWltYWdlLWxpZmVjeWNsZXMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlUG9saWN5IGV4dGVuZHMgTGlmZWN5Y2xlUG9saWN5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5MaWZlY3ljbGVQb2xpY3knO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbGlmZWN5Y2xlIHBvbGljeSBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTGlmZWN5Y2xlUG9saWN5QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nKTogSUxpZmVjeWNsZVBvbGljeSB7XG4gICAgY29uc3QgbGlmZWN5Y2xlUG9saWN5TmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBsaWZlY3ljbGVQb2xpY3lBcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgTGlmZWN5Y2xlUG9saWN5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5QXJuID0gbGlmZWN5Y2xlUG9saWN5QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeU5hbWUgPSBsaWZlY3ljbGVQb2xpY3lOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGxpZmVjeWNsZSBwb2xpY3kgZ2l2ZW4gaXRzIG5hbWUuIElmIHRoZSBuYW1lIGlzIGEgdG9rZW4gcmVwcmVzZW50aW5nIGEgZHluYW1pYyBDbG91ZEZvcm1hdGlvblxuICAgKiBleHByZXNzaW9uLCB5b3UgbXVzdCBlbnN1cmUgYWxsIGFscGhhYmV0aWMgY2hhcmFjdGVycyBpbiB0aGUgZXhwcmVzc2lvbiBhcmUgYWxyZWFkeSBsb3dlcmNhc2VkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21MaWZlY3ljbGVQb2xpY3lOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxpZmVjeWNsZVBvbGljeU5hbWU6IHN0cmluZyk6IElMaWZlY3ljbGVQb2xpY3kge1xuICAgIHJldHVybiBMaWZlY3ljbGVQb2xpY3kuZnJvbUxpZmVjeWNsZVBvbGljeUFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2xpZmVjeWNsZS1wb2xpY3knLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGxpZmVjeWNsZVBvbGljeU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBMaWZlY3ljbGVQb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzTGlmZWN5Y2xlUG9saWN5KHg6IGFueSk6IHggaXMgTGlmZWN5Y2xlUG9saWN5IHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgbGlmZWN5Y2xlIHBvbGljeSBleGVjdXRpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZTogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkxpZmVjeWNsZVBvbGljeTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpZmVjeWNsZVBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmxpZmVjeWNsZVBvbGljeU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBMSUZFQ1lDTEVfUE9MSUNZX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVMaWZlY3ljbGVQb2xpY3lOYW1lKCk7XG4gICAgdGhpcy52YWxpZGF0ZVBvbGljeShwcm9wcyk7XG5cbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPVxuICAgICAgcHJvcHMuZXhlY3V0aW9uUm9sZSA/P1xuICAgICAgbmV3IGlhbS5Sb2xlKHRoaXMsICdFeGVjdXRpb25Sb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnaW1hZ2VidWlsZGVyLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvRUMySW1hZ2VCdWlsZGVyTGlmZWN5Y2xlRXhlY3V0aW9uUG9saWN5JyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIGNvbnN0IGxpZmVjeWNsZVBvbGljeSA9IG5ldyBDZm5MaWZlY3ljbGVQb2xpY3kodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByZXNvdXJjZVR5cGU6IHByb3BzLnJlc291cmNlVHlwZSxcbiAgICAgIGV4ZWN1dGlvblJvbGU6IHRoaXMuZXhlY3V0aW9uUm9sZS5yb2xlQXJuLFxuICAgICAgcG9saWN5RGV0YWlsczogdGhpcy5idWlsZFBvbGljeURldGFpbHMocHJvcHMucmVzb3VyY2VUeXBlLCBwcm9wcy5kZXRhaWxzKSxcbiAgICAgIHJlc291cmNlU2VsZWN0aW9uOiB7XG4gICAgICAgIC4uLihwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgIHJlY2lwZXM6IHRoaXMuYnVpbGRSZWNpcGVzKHByb3BzLnJlc291cmNlVHlwZSwgcHJvcHMucmVzb3VyY2VTZWxlY3Rpb24ucmVjaXBlcyksXG4gICAgICAgIH0pLFxuICAgICAgICB0YWdNYXA6IHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnRhZ3MsXG4gICAgICB9LFxuICAgICAgc3RhdHVzOiBwcm9wcy5zdGF0dXMsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IGxpZmVjeWNsZVBvbGljeTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGxpZmVjeWNsZVBvbGljeU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgbGlmZWN5Y2xlUG9saWN5QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnbGlmZWN5Y2xlLXBvbGljeScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgcG9saWN5IGRldGFpbHMgcHJvcGVydHkgaW50byB0aGUgYFBvbGljeURldGFpbGAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSBUaGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBAcGFyYW0gZGV0YWlscyBUaGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBvbGljeURldGFpbHMoXG4gICAgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUsXG4gICAgZGV0YWlsczogTGlmZWN5Y2xlUG9saWN5RGV0YWlsW10sXG4gICk6IENmbkxpZmVjeWNsZVBvbGljeS5Qb2xpY3lEZXRhaWxQcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gZGV0YWlscy5tYXAoKGRldGFpbCk6IENmbkxpZmVjeWNsZVBvbGljeS5Qb2xpY3lEZXRhaWxQcm9wZXJ0eSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmJ1aWxkQWN0aW9uKHJlc291cmNlVHlwZSwgZGV0YWlsLmFjdGlvbik7XG4gICAgICBjb25zdCBleGNsdXNpb25SdWxlcyA9XG4gICAgICAgIGRldGFpbC5leGNsdXNpb25SdWxlcyAhPT0gdW5kZWZpbmVkID8gdGhpcy5idWlsZEV4Y2x1c2lvblJ1bGVzKGRldGFpbC5leGNsdXNpb25SdWxlcykgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVQb2xpY3lEZXRhaWxBY3Rpb24ocmVzb3VyY2VUeXBlLCBkZXRhaWwuYWN0aW9uLCBleGNsdXNpb25SdWxlcz8uYW1pcyk7XG4gICAgICB0aGlzLnZhbGlkYXRlUG9saWN5RGV0YWlsRmlsdGVyKGRldGFpbC5maWx0ZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgcmV0YWluQXRMZWFzdDogZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXI/LnJldGFpbkF0TGVhc3QsXG4gICAgICAgICAgdHlwZTogZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXIgIT09IHVuZGVmaW5lZCA/ICdBR0UnIDogJ0NPVU5UJyxcbiAgICAgICAgICAuLi4oZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB0aGlzLmNvbnZlcnREdXJhdGlvblRvVGltZVVuaXRWYWx1ZShkZXRhaWwuZmlsdGVyLmFnZUZpbHRlci5hZ2UpXG4gICAgICAgICAgICA6IHsgdmFsdWU6IGRldGFpbC5maWx0ZXIuY291bnRGaWx0ZXIhLmNvdW50IH0pLFxuICAgICAgICB9LFxuICAgICAgICAuLi4oZXhjbHVzaW9uUnVsZXMgIT09IHVuZGVmaW5lZCAmJiB7IGV4Y2x1c2lvblJ1bGVzIH0pLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIHJlY2lwZXMgcHJvcGVydHkgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBpbnRvIHRoZSBgUmVjaXBlU2VsZWN0aW9uYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMVxuICAgKiBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSByZWNpcGVzIFRoZSByZWNpcGVzIHBhc3NlZCBpbiB0aGUgcHJvcHNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRSZWNpcGVzKFxuICAgIHJlc291cmNlVHlwZTogTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLFxuICAgIHJlY2lwZXM6IElSZWNpcGVCYXNlW10sXG4gICk6IENmbkxpZmVjeWNsZVBvbGljeS5SZWNpcGVTZWxlY3Rpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gcmVjaXBlcz8ubWFwKChyZWNpcGUpOiBDZm5MaWZlY3ljbGVQb2xpY3kuUmVjaXBlU2VsZWN0aW9uUHJvcGVydHkgPT4ge1xuICAgICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5DT05UQUlORVJfSU1BR0UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgIGByZWNpcGVzIGluIHRoZSByZXNvdXJjZSBzZWxlY3Rpb24gbXVzdCBhbGwgYmUgY29udGFpbmVyIHJlY2lwZXMgZm9yIHBvbGljeSB0eXBlICR7TGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkNPTlRBSU5FUl9JTUFHRX1gLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiByZWNpcGUuaW1hZ2VSZWNpcGVOYW1lLFxuICAgICAgICAgIHNlbWFudGljVmVyc2lvbjogcmVjaXBlLmltYWdlUmVjaXBlVmVyc2lvbixcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgICBpZiAocmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQU1JX0lNQUdFKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgcmVjaXBlcyBpbiB0aGUgcmVzb3VyY2Ugc2VsZWN0aW9uIG11c3QgYWxsIGJlIGltYWdlIHJlY2lwZXMgZm9yIHBvbGljeSB0eXBlICR7TGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkFNSV9JTUFHRX1gLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiByZWNpcGUuY29udGFpbmVyUmVjaXBlTmFtZSxcbiAgICAgICAgICBzZW1hbnRpY1ZlcnNpb246IHJlY2lwZS5jb250YWluZXJSZWNpcGVWZXJzaW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ3JlY2lwZXMgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBtdXN0IGVpdGhlciBiZSBhbiBJSW1hZ2VSZWNpcGUgb3IgSUNvbnRhaW5lclJlY2lwZScsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgZXhjbHVzaW9uIHJ1bGVzIHByb3BlcnR5IGludG8gdGhlIGBFeGNsdXNpb25SdWxlc2AgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGV4Y2x1c2lvblJ1bGVzIFRoZSBleGNsdXNpb24gcnVsZXMgZm9yIHJlc291cmNlcyBhcHBsaWVkIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRFeGNsdXNpb25SdWxlcyhcbiAgICBleGNsdXNpb25SdWxlczogTGlmZWN5Y2xlUG9saWN5RXhjbHVzaW9uUnVsZXMsXG4gICk6IENmbkxpZmVjeWNsZVBvbGljeS5FeGNsdXNpb25SdWxlc1Byb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhbWlFeGNsdXNpb25SdWxlczogQ2ZuTGlmZWN5Y2xlUG9saWN5LkFtaUV4Y2x1c2lvblJ1bGVzUHJvcGVydHkgPSB7XG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXM/LmlzUHVibGljICYmIHsgaXNQdWJsaWM6IGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLmlzUHVibGljIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5sYXN0TGF1bmNoZWQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIGxhc3RMYXVuY2hlZDogdGhpcy5jb252ZXJ0RHVyYXRpb25Ub1RpbWVVbml0VmFsdWUoZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXMubGFzdExhdW5jaGVkLCAzNjUpLFxuICAgICAgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXM/LnJlZ2lvbnM/Lmxlbmd0aCAmJiB7IHJlZ2lvbnM6IGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLnJlZ2lvbnMgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXM/LnNoYXJlZEFjY291bnRzPy5sZW5ndGggJiYge1xuICAgICAgICBzaGFyZWRBY2NvdW50czogZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXMuc2hhcmVkQWNjb3VudHMsXG4gICAgICB9KSxcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcz8udGFncyAmJiB7IHRhZ01hcDogZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXMudGFncyB9KSxcbiAgICB9O1xuXG4gICAgY29uc3QgY2ZuRXhjbHVzaW9uUnVsZXM6IENmbkxpZmVjeWNsZVBvbGljeS5FeGNsdXNpb25SdWxlc1Byb3BlcnR5ID0ge1xuICAgICAgLi4uKE9iamVjdC5rZXlzKGFtaUV4Y2x1c2lvblJ1bGVzKS5sZW5ndGggJiYgeyBhbWlzOiBhbWlFeGNsdXNpb25SdWxlcyB9KSxcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5pbWFnZUV4Y2x1c2lvblJ1bGVzICE9PSB1bmRlZmluZWQgJiYgeyB0YWdNYXA6IGV4Y2x1c2lvblJ1bGVzLmltYWdlRXhjbHVzaW9uUnVsZXMudGFncyB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGV4Y2x1c2lvblJ1bGVzKS5sZW5ndGggPyBjZm5FeGNsdXNpb25SdWxlcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGFjdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgQWN0aW9uYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiBiZWluZyB0YWtlbiBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQWN0aW9uKFxuICAgIHJlc291cmNlVHlwZTogTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLFxuICAgIGFjdGlvbjogTGlmZWN5Y2xlUG9saWN5QWN0aW9uLFxuICApOiBDZm5MaWZlY3ljbGVQb2xpY3kuQWN0aW9uUHJvcGVydHkge1xuICAgIGNvbnN0IGlzQ29udGFpbmVyUG9saWN5ID1cbiAgICAgICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHJlc291cmNlVHlwZSkgJiYgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQ09OVEFJTkVSX0lNQUdFO1xuICAgIGNvbnN0IGlzQW1pUG9saWN5ID0gIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocmVzb3VyY2VUeXBlKSAmJiByZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5BTUlfSU1BR0U7XG5cbiAgICBjb25zdCBhbWlzID0gYWN0aW9uLmluY2x1ZGVBbWlzID8/IChpc0FtaVBvbGljeSA/IHRydWUgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHNuYXBzaG90cyA9IGFjdGlvbi5pbmNsdWRlU25hcHNob3RzID8/IChpc0FtaVBvbGljeSA/IHRydWUgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBhY3Rpb24uaW5jbHVkZUNvbnRhaW5lcnMgPz8gKGlzQ29udGFpbmVyUG9saWN5ID8gdHJ1ZSA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgaW5jbHVkZVJlc291cmNlczogQ2ZuTGlmZWN5Y2xlUG9saWN5LkluY2x1ZGVSZXNvdXJjZXNQcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihhbWlzICE9PSB1bmRlZmluZWQgJiYgeyBhbWlzIH0pLFxuICAgICAgLi4uKHNuYXBzaG90cyAhPT0gdW5kZWZpbmVkICYmIHsgc25hcHNob3RzIH0pLFxuICAgICAgLi4uKGNvbnRhaW5lcnMgIT09IHVuZGVmaW5lZCAmJiB7IGNvbnRhaW5lcnMgfSksXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBhY3Rpb24udHlwZSxcbiAgICAgIC4uLihPYmplY3Qua2V5cyhpbmNsdWRlUmVzb3VyY2VzKS5sZW5ndGggJiYgeyBpbmNsdWRlUmVzb3VyY2VzIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0b3AtbGV2ZWwgcHJvcGVydGllcyBvZiB0aGUgcG9saWN5XG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcHMgcGFzc2VkIGFzIGlucHV0IHRvIHRoZSBjb25zdHJ1Y3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQb2xpY3kocHJvcHM6IExpZmVjeWNsZVBvbGljeVByb3BzKTogdm9pZCB7XG4gICAgaWYgKHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnJlY2lwZXM/Lmxlbmd0aCAmJiBPYmplY3Qua2V5cyhwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi50YWdzIHx8IHt9KS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdyZXNvdXJjZSBzZWxlY3Rpb24gY2Fubm90IGNvbnRhaW4gYm90aCByZWNpcGVzIGFuZCB0YWdzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzPy5sZW5ndGggJiYgIU9iamVjdC5rZXlzKHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnRhZ3MgfHwge30pLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3Jlc291cmNlIHNlbGVjdGlvbiBtdXN0IGNvbnRhaW4gZWl0aGVyIHJlY2lwZXMgb3IgdGFncycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5kZXRhaWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2EgbGlmZWN5Y2xlIHBvbGljeSBtdXN0IGhhdmUgYXQgbGVhc3QgMSBydWxlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRldGFpbHMubGVuZ3RoID4gMykge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2EgbGlmZWN5Y2xlIHBvbGljeSBjYW4gb25seSBoYXZlIHVwIHRvIDMgcnVsZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb25zID0gcHJvcHMuZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gZGV0YWlsLmFjdGlvbi50eXBlKTtcbiAgICBpZiAobmV3IFNldChhY3Rpb25zKS5zaXplICE9IGFjdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignbGlmZWN5Y2xlIHBvbGljeSBydWxlcyBtYXkgbm90IGhhdmUgZHVwbGljYXRlIGFjdGlvbnMnLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcG9saWN5IGRldGFpbCBmaWx0ZXIgd2l0aGluIGEgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgVGhlIHJlc291cmNlIHR5cGUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogQHBhcmFtIGFjdGlvbiBUaGUgYWN0aW9uIGJlaW5nIHRha2VuIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICogQHBhcmFtIGFtaUV4Y2x1c2lvblJ1bGVzIFRoZSBBTUkgZXhjbHVzaW9uIHJ1bGVzIGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQb2xpY3lEZXRhaWxBY3Rpb24oXG4gICAgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUsXG4gICAgYWN0aW9uOiBMaWZlY3ljbGVQb2xpY3lBY3Rpb24sXG4gICAgYW1pRXhjbHVzaW9uUnVsZXM6IENmbkxpZmVjeWNsZVBvbGljeS5BbWlFeGNsdXNpb25SdWxlc1Byb3BlcnR5IHwgY2RrLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocmVzb3VyY2VUeXBlKSAmJiByZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5DT05UQUlORVJfSU1BR0UpIHtcbiAgICAgIGlmICghY2RrLlRva2VuLmlzVW5yZXNvbHZlZChhY3Rpb24udHlwZSkgJiYgYWN0aW9uLnR5cGUgIT09IExpZmVjeWNsZVBvbGljeUFjdGlvblR5cGUuREVMRVRFKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd5b3UgbWF5IG9ubHkgc3BlY2lmeSBERUxFVEUgcnVsZXMgZm9yIGNvbnRhaW5lciBwb2xpY2llcycsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWN0aW9uLmluY2x1ZGVBbWlzKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd5b3UgY2Fubm90IGluY2x1ZGUgQU1JcyBpbiBhIGNvbnRhaW5lciBwb2xpY3knLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5pbmNsdWRlU25hcHNob3RzKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd5b3UgY2Fubm90IGluY2x1ZGUgc25hcHNob3RzIGluIGEgY29udGFpbmVyIHBvbGljeScsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW1pRXhjbHVzaW9uUnVsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcigneW91IGNhbm5vdCBleGNsdWRlIEFNSXMgaW4gYSBjb250YWluZXIgcG9saWN5JywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocmVzb3VyY2VUeXBlKSAmJlxuICAgICAgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQU1JX0lNQUdFICYmXG4gICAgICBhY3Rpb24uaW5jbHVkZUNvbnRhaW5lcnNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd5b3UgY2Fubm90IGluY2x1ZGUgY29udGFpbmVycyBpbiBhbiBBTUkgcG9saWN5JywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHBvbGljeSBkZXRhaWwgZmlsdGVyXG4gICAqXG4gICAqIEBwYXJhbSBmaWx0ZXIgVGhlIGxpZmVjeWNsZSBwb2xpY3kgcmVzb3VyY2UgZmlsdGVyIGFwcGxpZWQgaW4gdGhlIHJ1bGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQb2xpY3lEZXRhaWxGaWx0ZXIoZmlsdGVyOiBMaWZlY3ljbGVQb2xpY3lGaWx0ZXIpIHtcbiAgICBpZiAoZmlsdGVyLmFnZUZpbHRlciAhPT0gdW5kZWZpbmVkICYmIGZpbHRlci5jb3VudEZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignZWl0aGVyIGFnZSBjb3VudCBjYW4gYmUgc3BlY2lmaWVkIGluIGEgcG9saWN5IGZpbHRlciwgYnV0IG5vdCBib3RoJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlci5hZ2VGaWx0ZXIgPT09IHVuZGVmaW5lZCAmJiBmaWx0ZXIuY291bnRGaWx0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ3lvdSBtdXN0IHByb3ZpZGUgYW4gYWdlIG9yIGNvdW50IGZpbHRlciBpbiB0aGUgcG9saWN5JywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmV0YWluQXRMZWFzdCA9IGZpbHRlci5hZ2VGaWx0ZXI/LnJldGFpbkF0TGVhc3Q7XG4gICAgaWYgKHJldGFpbkF0TGVhc3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHJldGFpbkF0TGVhc3QgPCAxKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgcmV0YWluQXRMZWFzdCBmaWx0ZXIgdmFsdWUgbXVzdCBiZSBhdCBsZWFzdCAxJywgdGhpcyk7XG4gICAgICB9XG4gICAgICBpZiAocmV0YWluQXRMZWFzdCA+IDEwKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgcmV0YWluQXRMZWFzdCBmaWx0ZXIgdmFsdWUgbXVzdCBiZSBhdCBtb3N0IDEwJywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgYGNkay5EdXJhdGlvbmAgaW50byB0aGUgdmFsdWUgYW5kIHVuaXQgd2hpY2ggaXMgYWNjZXB0ZWQgYXMgZmlsdGVyIGFnZSBhbmQgbGFzdCBsYXVuY2hlZCBhZ2UgaW4gdGhlXG4gICAqIGxpZmVjeWNsZSBwb2xpY3kuIFRoZSB2YWx1ZSBpcyByb3VuZGVkIHVwIHRvIHRoZSBuZWFyZXN0IHdob2xlIG51bWJlci5cbiAgICpcbiAgICogQHBhcmFtIGR1cmF0aW9uIFRoZSBkdXJhdGlvbiB0byBjb252ZXJ0XG4gICAqIEBwYXJhbSB2YWx1ZUxpbWl0IFRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIHNwZWNpZmllZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RHVyYXRpb25Ub1RpbWVVbml0VmFsdWUoXG4gICAgZHVyYXRpb246IGNkay5EdXJhdGlvbixcbiAgICB2YWx1ZUxpbWl0OiBudW1iZXIgPSAxMDAwLFxuICApOiB7IHZhbHVlOiBudW1iZXI7IHVuaXQ6ICdEQVlTJyB8ICdXRUVLUycgfCAnTU9OVEhTJyB8ICdZRUFSUycgfSB7XG4gICAgY29uc3QgREFZU19QRVJfV0VFSyA9IDc7XG4gICAgY29uc3QgREFZU19QRVJfTU9OVEggPSAzMDtcbiAgICBjb25zdCBEQVlTX1BFUl9ZRUFSID0gMzY1O1xuXG4gICAgY29uc3QgdmFsdWVJbkRheXMgPSBNYXRoLmNlaWwoZHVyYXRpb24udG9EYXlzKCkpO1xuICAgIGlmICh2YWx1ZUluRGF5cyA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCd0aGUgcHJvdmlkZWQgZHVyYXRpb24gbXVzdCBiZSBhdCBsZWFzdCAxIGRheScsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZUluRGF5cyA8PSB2YWx1ZUxpbWl0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWVJbkRheXMsIHVuaXQ6ICdEQVlTJyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlSW5XZWVrcyA9IE1hdGguY2VpbCh2YWx1ZUluRGF5cyAvIERBWVNfUEVSX1dFRUspO1xuICAgIGlmICh2YWx1ZUluV2Vla3MgPD0gdmFsdWVMaW1pdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlSW5XZWVrcywgdW5pdDogJ1dFRUtTJyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlSW5Nb250aHMgPSBNYXRoLmNlaWwodmFsdWVJbkRheXMgLyBEQVlTX1BFUl9NT05USCk7XG4gICAgaWYgKHZhbHVlSW5Nb250aHMgPD0gdmFsdWVMaW1pdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlSW5Nb250aHMsIHVuaXQ6ICdNT05USFMnIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVJblllYXJzID0gTWF0aC5jZWlsKHZhbHVlSW5EYXlzIC8gREFZU19QRVJfWUVBUik7XG4gICAgaWYgKHZhbHVlSW5ZZWFycyA8PSB2YWx1ZUxpbWl0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWVJblllYXJzLCB1bml0OiAnWUVBUlMnIH07XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBwcm92aWRlZCBkdXJhdGlvbiBtdXN0IGJlIGxlc3MgdGhhbiAke3ZhbHVlTGltaXR9IHllYXJzYCwgdGhpcyk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlTGlmZWN5Y2xlUG9saWN5TmFtZSgpIHtcbiAgICBpZiAoY2RrLlRva2VuLmlzVW5yZXNvbHZlZCh0aGlzLnBoeXNpY2FsTmFtZSkpIHtcbiAgICAgIHJldHVybjsgLy8gQ2Fubm90IHZhbGlkYXRlIHVucmVzb2x2ZWQgdG9rZW5zLCBnaXZlbiB0aGVpciBhY3R1YWwgdmFsdWUgaXMgcmVuZGVyZWQgYXQgZGVwbG95bWVudCB0aW1lXG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBsaWZlY3ljbGVQb2xpY3lOYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGxpZmVjeWNsZVBvbGljeU5hbWUgY2Fubm90IGNvbnRhaW4gc3BhY2VzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBjYW5ub3QgY29udGFpbiB1bmRlcnNjb3JlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1RoZSBsaWZlY3ljbGVQb2xpY3lOYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
471
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlmZWN5Y2xlLXBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpZmVjeWNsZS1wb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBQ25DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFDbEUsNEVBQXVFO0FBQ3ZFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFJMUUsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFvQzlGOztHQUVHO0FBQ0gsSUFBWSx5QkFhWDtBQWJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsOENBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvREFBdUIsQ0FBQTtJQUN2Qjs7T0FFRztJQUNILGdEQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFiVyx5QkFBeUIseUNBQXpCLHlCQUF5QixRQWFwQztBQUVEOztHQUVHO0FBQ0gsSUFBWSxxQkFVWDtBQVZELFdBQVkscUJBQXFCO0lBQy9COztPQUVHO0lBQ0gsNENBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCw4Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBVlcscUJBQXFCLHFDQUFyQixxQkFBcUIsUUFVaEM7QUFFRDs7R0FFRztBQUNILElBQVksMkJBVVg7QUFWRCxXQUFZLDJCQUEyQjtJQUNyQzs7T0FFRztJQUNILHNEQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsa0VBQW1DLENBQUE7QUFDckMsQ0FBQyxFQVZXLDJCQUEyQiwyQ0FBM0IsMkJBQTJCLFFBVXRDO0FBeVBELE1BQWUsbUJBQW9CLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFJckQ7O09BRUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQ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Q0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsd0NBQXdDLEVBQUUsb0RBQW9ELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEksQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLGlDQUFpQyxFQUFFLDJDQUEyQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3RILENBQUM7U0FDRjs7WUEvWlUsdURBQWU7Ozs7O0FBQWYsMENBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuTGlmZWN5Y2xlUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgeyBtZW1vaXplZEdldHRlciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcblxuY29uc3QgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkxpZmVjeWNsZVBvbGljeScpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIExpZmVjeWNsZSBQb2xpY3kuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpZmVjeWNsZVBvbGljeSBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIHJlc291cmNlcyB3aGljaCB0aGUgcG9saWN5IGFwcGxpZXMgdG9cbiAqL1xuZXhwb3J0IGVudW0gTGlmZWN5Y2xlUG9saWN5QWN0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgcnVsZSBzaG91bGQgZGVsZXRlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERFTEVURSA9ICdERUxFVEUnLFxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIHJ1bGUgc2hvdWxkIGRlcHJlY2F0ZSB0aGUgcmVzb3VyY2Ugd2hlbiBpdCBpcyBhcHBsaWVkXG4gICAqL1xuICBERVBSRUNBVEUgPSAnREVQUkVDQVRFJyxcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IHRoZSBydWxlIHNob3VsZCBkaXNhYmxlIHRoZSByZXNvdXJjZSB3aGVuIGl0IGlzIGFwcGxpZWRcbiAgICovXG4gIERJU0FCTEUgPSAnRElTQUJMRScsXG59XG5cbi8qKlxuICogVGhlIHN0YXR1cyBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeSwgaW5kaWNhdGluZyB3aGV0aGVyIGl0IHdpbGwgcnVuXG4gKi9cbmV4cG9ydCBlbnVtIExpZmVjeWNsZVBvbGljeVN0YXR1cyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBzaG91bGQgYmUgZW5hYmxlZFxuICAgKi9cbiAgRU5BQkxFRCA9ICdFTkFCTEVEJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBESVNBQkxFRCA9ICdESVNBQkxFRCcsXG59XG5cbi8qKlxuICogVGhlIHJlc291cmNlIHR5cGUgd2hpY2ggdGhlIGxpZmVjeWNsZSBwb2xpY3kgaXMgYXBwbGllZCB0b1xuICovXG5leHBvcnQgZW51bSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwb2xpY3kgYXBwbGllcyB0byBBTUktYmFzZWQgaW1hZ2VzXG4gICAqL1xuICBBTUlfSU1BR0UgPSAnQU1JX0lNQUdFJyxcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBwb2xpY3kgYXBwbGllcyB0byBjb250YWluZXIgaW1hZ2VzXG4gICAqL1xuICBDT05UQUlORVJfSU1BR0UgPSAnQ09OVEFJTkVSX0lNQUdFJyxcbn1cblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFjdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRvIHBlcmZvcm0gb24gdGhlIHJlc291cmNlcyBzZWxlY3RlZCBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgQU1JcyBpbiB0aGUgc2NvcGUgb2YgdGhlIGxpZmVjeWNsZSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZSBmb3IgQU1JLWJhc2VkIHBvbGljaWVzLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVBbWlzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBpbmNsdWRlIGNvbnRhaW5lcnMgaW4gdGhlIHNjb3BlIG9mIHRoZSBsaWZlY3ljbGUgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIGNvbnRhaW5lci1iYXNlZCBwb2xpY2llcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlQ29udGFpbmVycz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBzbmFwc2hvdHMgaW4gdGhlIHNjb3BlIG9mIHRoZSBsaWZlY3ljbGUgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWUgZm9yIEFNSS1iYXNlZCBwb2xpY2llcywgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBpbmNsdWRlU25hcHNob3RzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgcmVzb3VyY2UgZmlsdGVyaW5nIHRvIGFwcGx5IGluIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIHJlc291cmNlIGFnZSBmaWx0ZXIgdG8gYXBwbHkgaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgYSBjb3VudCBmaWx0ZXIgaXMgcHJvdmlkZWQuIE90aGVyd2lzZSwgYW4gYWdlIGZpbHRlciBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFnZUZpbHRlcj86IExpZmVjeWNsZVBvbGljeUFnZUZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGNvdW50IGZpbHRlciB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBhbiBhZ2UgZmlsdGVyIGlzIHByb3ZpZGVkLiBPdGhlcndpc2UsIGEgY291bnQgZmlsdGVyIGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY291bnRGaWx0ZXI/OiBMaWZlY3ljbGVQb2xpY3lDb3VudEZpbHRlcjtcbn1cblxuLyoqXG4gKiBUaGUgY291bnQtYmFzZWQgZmlsdGVyaW5nIHRvIGFwcGx5IGluIGEgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5Q291bnRGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIHJlc291cmNlcyB0byBrZWVwIG9uIGhhbmQgYXMgcGFydCBvZiByZXNvdXJjZSBmaWx0ZXJpbmdcbiAgICovXG4gIHJlYWRvbmx5IGNvdW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIGFnZS1iYXNlZCBmaWx0ZXJpbmcgdG8gYXBwbHkgaW4gYSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWZlY3ljbGVQb2xpY3lBZ2VGaWx0ZXIge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gYWdlIG9mIHRoZSByZXNvdXJjZSB0byBmaWx0ZXIuIFRoZSBwcm92aWRlZCBkdXJhdGlvbiB3aWxsIGJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3RcbiAgICogZGF5L3dlZWsvbW9udGgveWVhciB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGFnZTogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBGb3IgYWdlLWJhc2VkIGZpbHRlcnMsIHRoZSBudW1iZXIgb2YgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIHRvIGtlZXAgb24gaGFuZCBvbmNlIHRoZSBydWxlIGlzIGFwcGxpZWQuIFRoZSB2YWx1ZVxuICAgKiBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHJldGFpbkF0TGVhc3Q/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUltYWdlRXhjbHVzaW9uUnVsZXMge1xuICAvKipcbiAgICogRXhjbHVkZXMgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIHdpdGggYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgcnVsZXMgdG8gYXBwbHkgZm9yIGV4Y2x1ZGluZyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUFtaUV4Y2x1c2lvblJ1bGVzIHtcbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIHB1YmxpYyBBTUlzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZSBpZiB0cnVlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpc1B1YmxpYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGVzIEFNSXMgd2hpY2ggd2VyZSBsYXVuY2hlZCBmcm9tIHdpdGhpbiB0aGUgcHJvdmlkZWQgZHVyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFzdExhdW5jaGVkPzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIHJlc2lkZSBpbiBhbnkgb2YgdGhlIHByb3ZpZGVkIHJlZ2lvbnNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIGFyZSBzaGFyZWQgd2l0aCBhbnkgb2YgdGhlIHByb3ZpZGVkIHNoYXJlZCBhY2NvdW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRBY2NvdW50cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBFeGNsdWRlcyBBTUlzIHdoaWNoIGhhdmUgYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzIGFwcGxpZWQgdG8gaXRcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgcmVzb3VyY2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeUV4Y2x1c2lvblJ1bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBydWxlcyB0byBhcHBseSBmb3IgZXhjbHVkaW5nIEVDMiBJbWFnZSBCdWlsZGVyIGltYWdlcyBmcm9tIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGNsdXNpb24gcnVsZXMgYXJlIGFwcGxpZWQgb24gdGhlIGltYWdlXG4gICAqL1xuICByZWFkb25seSBpbWFnZUV4Y2x1c2lvblJ1bGVzPzogTGlmZWN5Y2xlUG9saWN5SW1hZ2VFeGNsdXNpb25SdWxlcztcblxuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgQU1JcyBmcm9tIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleGNsdXNpb24gcnVsZXMgYXJlIGFwcGxpZWQgb24gdGhlIEFNSVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pRXhjbHVzaW9uUnVsZXM/OiBMaWZlY3ljbGVQb2xpY3lBbWlFeGNsdXNpb25SdWxlcztcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIHRoZSBsaWZlY3ljbGUgcG9saWN5IHJ1bGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlUG9saWN5RGV0YWlsIHtcbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gcGVyZm9ybSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSBhY3Rpb246IExpZmVjeWNsZVBvbGljeUFjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGZpbHRlcmluZyB0byBhcHBseSBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI6IExpZmVjeWNsZVBvbGljeUZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIHJ1bGVzIHRvIGFwcGx5IGZvciBleGNsdWRpbmcgcmVzb3VyY2VzIGZyb20gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4Y2x1c2lvbiBydWxlcyBhcmUgYXBwbGllZCBvbiBhbnkgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1c2lvblJ1bGVzPzogTGlmZWN5Y2xlUG9saWN5RXhjbHVzaW9uUnVsZXM7XG59XG5cbi8qKlxuICogU2VsZWN0aW9uIGNyaXRlcmlhIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgYXBwbGllcyB0b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeVJlc291cmNlU2VsZWN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGltYWdlIHJlY2lwZXMgb3IgY29udGFpbmVyIHJlY2lwZXMgdG8gYXBwbHkgdGhlIGxpZmVjeWNsZSBwb2xpY3kgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIHRhZyBzZWxlY3Rpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgcmVjaXBlIG9yIHRhZyBzZWxlY3Rpb24gbXVzdCBiZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVjaXBlcz86IElSZWNpcGVCYXNlW107XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VzIGNvbnRhaW5pbmcgYW55IG9mIHRoZSBwcm92aWRlZCB0YWdzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiByZWNpcGUgc2VsZWN0aW9ucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYXQgbGVhc3Qgb25lIHJlY2lwZSBvciB0YWcgc2VsZWN0aW9uIG11c3QgYmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgTGlmZWN5Y2xlIFBvbGljeSByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpZmVjeWNsZVBvbGljeVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIEltYWdlIEJ1aWxkZXIgcmVzb3VyY2UgdGhhdCB0aGUgbGlmZWN5Y2xlIHBvbGljeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZXMuXG4gICAqL1xuICByZWFkb25seSBkZXRhaWxzOiBMaWZlY3ljbGVQb2xpY3lEZXRhaWxbXTtcblxuICAvKipcbiAgICogU2VsZWN0aW9uIGNyaXRlcmlhIGZvciB0aGUgcmVzb3VyY2VzIHRoYXQgdGhlIGxpZmVjeWNsZSBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlU2VsZWN0aW9uOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpZmVjeWNsZSBwb2xpY3kuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeS5cbiAgICpcbiAgICogQGRlZmF1bHQgTGlmZWN5Y2xlUG9saWN5U3RhdHVzLkVOQUJMRURcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IExpZmVjeWNsZVBvbGljeVN0YXR1cztcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHRoYXQgZ3JhbnRzIEltYWdlIEJ1aWxkZXIgYWNjZXNzIHRvIHJ1biBsaWZlY3ljbGUgYWN0aW9ucy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICogYWN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBleGVjdXRpb24gcm9sZSB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGxpZmVjeWNsZSBwb2xpY3lcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuYWJzdHJhY3QgY2xhc3MgTGlmZWN5Y2xlUG9saWN5QmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElMaWZlY3ljbGVQb2xpY3kge1xuICBhYnN0cmFjdCByZWFkb25seSBsaWZlY3ljbGVQb2xpY3lBcm46IHN0cmluZztcbiAgYWJzdHJhY3QgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmxpZmVjeWNsZVBvbGljeUFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0TGlmZWN5Y2xlUG9saWN5Jyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIExpZmVjeWNsZSBQb2xpY3kuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLWltYWdlLWxpZmVjeWNsZXMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgTGlmZWN5Y2xlUG9saWN5IGV4dGVuZHMgTGlmZWN5Y2xlUG9saWN5QmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5MaWZlY3ljbGVQb2xpY3knO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgbGlmZWN5Y2xlIHBvbGljeSBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTGlmZWN5Y2xlUG9saWN5QXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxpZmVjeWNsZVBvbGljeUFybjogc3RyaW5nKTogSUxpZmVjeWNsZVBvbGljeSB7XG4gICAgY29uc3QgbGlmZWN5Y2xlUG9saWN5TmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBsaWZlY3ljbGVQb2xpY3lBcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgTGlmZWN5Y2xlUG9saWN5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGlmZWN5Y2xlUG9saWN5QXJuID0gbGlmZWN5Y2xlUG9saWN5QXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGxpZmVjeWNsZVBvbGljeU5hbWUgPSBsaWZlY3ljbGVQb2xpY3lOYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGxpZmVjeWNsZSBwb2xpY3kgZ2l2ZW4gaXRzIG5hbWUuIElmIHRoZSBuYW1lIGlzIGEgdG9rZW4gcmVwcmVzZW50aW5nIGEgZHluYW1pYyBDbG91ZEZvcm1hdGlvblxuICAgKiBleHByZXNzaW9uLCB5b3UgbXVzdCBlbnN1cmUgYWxsIGFscGhhYmV0aWMgY2hhcmFjdGVycyBpbiB0aGUgZXhwcmVzc2lvbiBhcmUgYWxyZWFkeSBsb3dlcmNhc2VkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21MaWZlY3ljbGVQb2xpY3lOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGxpZmVjeWNsZVBvbGljeU5hbWU6IHN0cmluZyk6IElMaWZlY3ljbGVQb2xpY3kge1xuICAgIHJldHVybiBMaWZlY3ljbGVQb2xpY3kuZnJvbUxpZmVjeWNsZVBvbGljeUFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2xpZmVjeWNsZS1wb2xpY3knLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGxpZmVjeWNsZVBvbGljeU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBMaWZlY3ljbGVQb2xpY3kuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzTGlmZWN5Y2xlUG9saWN5KHg6IGFueSk6IHggaXMgTGlmZWN5Y2xlUG9saWN5IHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgTElGRUNZQ0xFX1BPTElDWV9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZXhlY3V0aW9uIHJvbGUgdXNlZCBmb3IgbGlmZWN5Y2xlIHBvbGljeSBleGVjdXRpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXhlY3V0aW9uUm9sZTogaWFtLklSb2xlO1xuXG4gIHByaXZhdGUgcmVzb3VyY2U6IENmbkxpZmVjeWNsZVBvbGljeTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpZmVjeWNsZVBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmxpZmVjeWNsZVBvbGljeU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBMSUZFQ1lDTEVfUE9MSUNZX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMudmFsaWRhdGVMaWZlY3ljbGVQb2xpY3lOYW1lKCk7XG4gICAgdGhpcy52YWxpZGF0ZVBvbGljeShwcm9wcyk7XG5cbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPVxuICAgICAgcHJvcHMuZXhlY3V0aW9uUm9sZSA/P1xuICAgICAgbmV3IGlhbS5Sb2xlKHRoaXMsICdFeGVjdXRpb25Sb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnaW1hZ2VidWlsZGVyLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvRUMySW1hZ2VCdWlsZGVyTGlmZWN5Y2xlRXhlY3V0aW9uUG9saWN5JyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIGNvbnN0IGxpZmVjeWNsZVBvbGljeSA9IG5ldyBDZm5MaWZlY3ljbGVQb2xpY3kodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByZXNvdXJjZVR5cGU6IHByb3BzLnJlc291cmNlVHlwZSxcbiAgICAgIGV4ZWN1dGlvblJvbGU6IHRoaXMuZXhlY3V0aW9uUm9sZS5yb2xlQXJuLFxuICAgICAgcG9saWN5RGV0YWlsczogdGhpcy5idWlsZFBvbGljeURldGFpbHMocHJvcHMucmVzb3VyY2VUeXBlLCBwcm9wcy5kZXRhaWxzKSxcbiAgICAgIHJlc291cmNlU2VsZWN0aW9uOiB7XG4gICAgICAgIC4uLihwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgIHJlY2lwZXM6IHRoaXMuYnVpbGRSZWNpcGVzKHByb3BzLnJlc291cmNlVHlwZSwgcHJvcHMucmVzb3VyY2VTZWxlY3Rpb24ucmVjaXBlcyksXG4gICAgICAgIH0pLFxuICAgICAgICB0YWdNYXA6IHByb3BzLnJlc291cmNlU2VsZWN0aW9uLnRhZ3MsXG4gICAgICB9LFxuICAgICAgc3RhdHVzOiBwcm9wcy5zdGF0dXMsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IGxpZmVjeWNsZVBvbGljeTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGxpZmVjeWNsZVBvbGljeU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5yZWYpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgbGlmZWN5Y2xlUG9saWN5QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnbGlmZWN5Y2xlLXBvbGljeScsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgcG9saWN5IGRldGFpbHMgcHJvcGVydHkgaW50byB0aGUgYFBvbGljeURldGFpbGAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSBUaGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBAcGFyYW0gZGV0YWlscyBUaGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBvbGljeURldGFpbHMoXG4gICAgcmVzb3VyY2VUeXBlOiBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUsXG4gICAgZGV0YWlsczogTGlmZWN5Y2xlUG9saWN5RGV0YWlsW10sXG4gICk6IENmbkxpZmVjeWNsZVBvbGljeS5Qb2xpY3lEZXRhaWxQcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gZGV0YWlscy5tYXAoKGRldGFpbCk6IENmbkxpZmVjeWNsZVBvbGljeS5Qb2xpY3lEZXRhaWxQcm9wZXJ0eSA9PiB7XG4gICAgICBjb25zdCBhY3Rpb24gPSB0aGlzLmJ1aWxkQWN0aW9uKHJlc291cmNlVHlwZSwgZGV0YWlsLmFjdGlvbik7XG4gICAgICBjb25zdCBleGNsdXNpb25SdWxlcyA9XG4gICAgICAgIGRldGFpbC5leGNsdXNpb25SdWxlcyAhPT0gdW5kZWZpbmVkID8gdGhpcy5idWlsZEV4Y2x1c2lvblJ1bGVzKGRldGFpbC5leGNsdXNpb25SdWxlcykgOiB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudmFsaWRhdGVQb2xpY3lEZXRhaWxBY3Rpb24ocmVzb3VyY2VUeXBlLCBkZXRhaWwuYWN0aW9uLCBleGNsdXNpb25SdWxlcz8uYW1pcyk7XG4gICAgICB0aGlzLnZhbGlkYXRlUG9saWN5RGV0YWlsRmlsdGVyKGRldGFpbC5maWx0ZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgcmV0YWluQXRMZWFzdDogZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXI/LnJldGFpbkF0TGVhc3QsXG4gICAgICAgICAgdHlwZTogZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXIgIT09IHVuZGVmaW5lZCA/ICdBR0UnIDogJ0NPVU5UJyxcbiAgICAgICAgICAuLi4oZGV0YWlsLmZpbHRlci5hZ2VGaWx0ZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyB0aGlzLmNvbnZlcnREdXJhdGlvblRvVGltZVVuaXRWYWx1ZShkZXRhaWwuZmlsdGVyLmFnZUZpbHRlci5hZ2UpXG4gICAgICAgICAgICA6IHsgdmFsdWU6IGRldGFpbC5maWx0ZXIuY291bnRGaWx0ZXIhLmNvdW50IH0pLFxuICAgICAgICB9LFxuICAgICAgICAuLi4oZXhjbHVzaW9uUnVsZXMgIT09IHVuZGVmaW5lZCAmJiB7IGV4Y2x1c2lvblJ1bGVzIH0pLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIHJlY2lwZXMgcHJvcGVydHkgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBpbnRvIHRoZSBgUmVjaXBlU2VsZWN0aW9uYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMVxuICAgKiBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSByZWNpcGVzIFRoZSByZWNpcGVzIHBhc3NlZCBpbiB0aGUgcHJvcHNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRSZWNpcGVzKFxuICAgIHJlc291cmNlVHlwZTogTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLFxuICAgIHJlY2lwZXM6IElSZWNpcGVCYXNlW10sXG4gICk6IENmbkxpZmVjeWNsZVBvbGljeS5SZWNpcGVTZWxlY3Rpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gcmVjaXBlcz8ubWFwKChyZWNpcGUpOiBDZm5MaWZlY3ljbGVQb2xpY3kuUmVjaXBlU2VsZWN0aW9uUHJvcGVydHkgPT4ge1xuICAgICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5DT05UQUlORVJfSU1BR0UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICdSZWNpcGVUeXBlTWlzbWF0Y2hGb3JDb250YWluZXJQb2xpY3knLFxuICAgICAgICAgICAgYHJlY2lwZXMgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBtdXN0IGFsbCBiZSBjb250YWluZXIgcmVjaXBlcyBmb3IgcG9saWN5IHR5cGUgJHtMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQ09OVEFJTkVSX0lNQUdFfWAsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHJlY2lwZS5pbWFnZVJlY2lwZU5hbWUsXG4gICAgICAgICAgc2VtYW50aWNWZXJzaW9uOiByZWNpcGUuaW1hZ2VSZWNpcGVWZXJzaW9uLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICAgIGlmIChyZXNvdXJjZVR5cGUgPT09IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5BTUlfSU1BR0UpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICAgICdSZWNpcGVUeXBlTWlzbWF0Y2hGb3JBbWlQb2xpY3knLFxuICAgICAgICAgICAgYHJlY2lwZXMgaW4gdGhlIHJlc291cmNlIHNlbGVjdGlvbiBtdXN0IGFsbCBiZSBpbWFnZSByZWNpcGVzIGZvciBwb2xpY3kgdHlwZSAke0xpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZS5BTUlfSU1BR0V9YCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogcmVjaXBlLmNvbnRhaW5lclJlY2lwZU5hbWUsXG4gICAgICAgICAgc2VtYW50aWNWZXJzaW9uOiByZWNpcGUuY29udGFpbmVyUmVjaXBlVmVyc2lvbixcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICdJbnZhbGlkUmVjaXBlVHlwZScsXG4gICAgICAgICdyZWNpcGVzIGluIHRoZSByZXNvdXJjZSBzZWxlY3Rpb24gbXVzdCBlaXRoZXIgYmUgYW4gSUltYWdlUmVjaXBlIG9yIElDb250YWluZXJSZWNpcGUnLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGV4Y2x1c2lvbiBydWxlcyBwcm9wZXJ0eSBpbnRvIHRoZSBgRXhjbHVzaW9uUnVsZXNgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBleGNsdXNpb25SdWxlcyBUaGUgZXhjbHVzaW9uIHJ1bGVzIGZvciByZXNvdXJjZXMgYXBwbGllZCBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkRXhjbHVzaW9uUnVsZXMoXG4gICAgZXhjbHVzaW9uUnVsZXM6IExpZmVjeWNsZVBvbGljeUV4Y2x1c2lvblJ1bGVzLFxuICApOiBDZm5MaWZlY3ljbGVQb2xpY3kuRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYW1pRXhjbHVzaW9uUnVsZXM6IENmbkxpZmVjeWNsZVBvbGljeS5BbWlFeGNsdXNpb25SdWxlc1Byb3BlcnR5ID0ge1xuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5pc1B1YmxpYyAmJiB7IGlzUHVibGljOiBleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy5pc1B1YmxpYyB9KSxcbiAgICAgIC4uLihleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcz8ubGFzdExhdW5jaGVkICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBsYXN0TGF1bmNoZWQ6IHRoaXMuY29udmVydER1cmF0aW9uVG9UaW1lVW5pdFZhbHVlKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLmxhc3RMYXVuY2hlZCwgMzY1KSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5yZWdpb25zPy5sZW5ndGggJiYgeyByZWdpb25zOiBleGNsdXNpb25SdWxlcy5hbWlFeGNsdXNpb25SdWxlcy5yZWdpb25zIH0pLFxuICAgICAgLi4uKGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzPy5zaGFyZWRBY2NvdW50cz8ubGVuZ3RoICYmIHtcbiAgICAgICAgc2hhcmVkQWNjb3VudHM6IGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLnNoYXJlZEFjY291bnRzLFxuICAgICAgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuYW1pRXhjbHVzaW9uUnVsZXM/LnRhZ3MgJiYgeyB0YWdNYXA6IGV4Y2x1c2lvblJ1bGVzLmFtaUV4Y2x1c2lvblJ1bGVzLnRhZ3MgfSksXG4gICAgfTtcblxuICAgIGNvbnN0IGNmbkV4Y2x1c2lvblJ1bGVzOiBDZm5MaWZlY3ljbGVQb2xpY3kuRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihPYmplY3Qua2V5cyhhbWlFeGNsdXNpb25SdWxlcykubGVuZ3RoICYmIHsgYW1pczogYW1pRXhjbHVzaW9uUnVsZXMgfSksXG4gICAgICAuLi4oZXhjbHVzaW9uUnVsZXMuaW1hZ2VFeGNsdXNpb25SdWxlcyAhPT0gdW5kZWZpbmVkICYmIHsgdGFnTWFwOiBleGNsdXNpb25SdWxlcy5pbWFnZUV4Y2x1c2lvblJ1bGVzLnRhZ3MgfSksXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhleGNsdXNpb25SdWxlcykubGVuZ3RoID8gY2ZuRXhjbHVzaW9uUnVsZXMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBhY3Rpb24gcHJvcGVydHkgaW50byB0aGUgYEFjdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDEgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSBUaGUgcmVzb3VyY2UgdHlwZSBvZiB0aGUgbGlmZWN5Y2xlIHBvbGljeVxuICAgKiBAcGFyYW0gYWN0aW9uIFRoZSBhY3Rpb24gYmVpbmcgdGFrZW4gaW4gdGhlIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEFjdGlvbihcbiAgICByZXNvdXJjZVR5cGU6IExpZmVjeWNsZVBvbGljeVJlc291cmNlVHlwZSxcbiAgICBhY3Rpb246IExpZmVjeWNsZVBvbGljeUFjdGlvbixcbiAgKTogQ2ZuTGlmZWN5Y2xlUG9saWN5LkFjdGlvblByb3BlcnR5IHtcbiAgICBjb25zdCBpc0NvbnRhaW5lclBvbGljeSA9XG4gICAgICAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChyZXNvdXJjZVR5cGUpICYmIHJlc291cmNlVHlwZSA9PT0gTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLkNPTlRBSU5FUl9JTUFHRTtcbiAgICBjb25zdCBpc0FtaVBvbGljeSA9ICFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHJlc291cmNlVHlwZSkgJiYgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQU1JX0lNQUdFO1xuXG4gICAgY29uc3QgYW1pcyA9IGFjdGlvbi5pbmNsdWRlQW1pcyA/PyAoaXNBbWlQb2xpY3kgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBzbmFwc2hvdHMgPSBhY3Rpb24uaW5jbHVkZVNuYXBzaG90cyA/PyAoaXNBbWlQb2xpY3kgPyB0cnVlIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBjb250YWluZXJzID0gYWN0aW9uLmluY2x1ZGVDb250YWluZXJzID8/IChpc0NvbnRhaW5lclBvbGljeSA/IHRydWUgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGluY2x1ZGVSZXNvdXJjZXM6IENmbkxpZmVjeWNsZVBvbGljeS5JbmNsdWRlUmVzb3VyY2VzUHJvcGVydHkgPSB7XG4gICAgICAuLi4oYW1pcyAhPT0gdW5kZWZpbmVkICYmIHsgYW1pcyB9KSxcbiAgICAgIC4uLihzbmFwc2hvdHMgIT09IHVuZGVmaW5lZCAmJiB7IHNuYXBzaG90cyB9KSxcbiAgICAgIC4uLihjb250YWluZXJzICE9PSB1bmRlZmluZWQgJiYgeyBjb250YWluZXJzIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogYWN0aW9uLnR5cGUsXG4gICAgICAuLi4oT2JqZWN0LmtleXMoaW5jbHVkZVJlc291cmNlcykubGVuZ3RoICYmIHsgaW5jbHVkZVJlc291cmNlcyB9KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgdG9wLWxldmVsIHByb3BlcnRpZXMgb2YgdGhlIHBvbGljeVxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIHByb3BzIHBhc3NlZCBhcyBpbnB1dCB0byB0aGUgY29uc3RydWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5KHByb3BzOiBMaWZlY3ljbGVQb2xpY3lQcm9wcyk6IHZvaWQge1xuICAgIGlmIChwcm9wcy5yZXNvdXJjZVNlbGVjdGlvbi5yZWNpcGVzPy5sZW5ndGggJiYgT2JqZWN0LmtleXMocHJvcHMucmVzb3VyY2VTZWxlY3Rpb24udGFncyB8fCB7fSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignUmVzb3VyY2VTZWxlY3Rpb25DYW5ub3RDb250YWluQm90aFJlY2lwZXNBbmRUYWdzJywgJ3Jlc291cmNlIHNlbGVjdGlvbiBjYW5ub3QgY29udGFpbiBib3RoIHJlY2lwZXMgYW5kIHRhZ3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb3BzLnJlc291cmNlU2VsZWN0aW9uLnJlY2lwZXM/Lmxlbmd0aCAmJiAhT2JqZWN0LmtleXMocHJvcHMucmVzb3VyY2VTZWxlY3Rpb24udGFncyB8fCB7fSkubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignUmVzb3VyY2VTZWxlY3Rpb25SZXF1aXJlZCcsICdyZXNvdXJjZSBzZWxlY3Rpb24gbXVzdCBjb250YWluIGVpdGhlciByZWNpcGVzIG9yIHRhZ3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGV0YWlscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdNaW5pbXVtT25lUnVsZVJlcXVpcmVkJywgJ2EgbGlmZWN5Y2xlIHBvbGljeSBtdXN0IGhhdmUgYXQgbGVhc3QgMSBydWxlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRldGFpbHMubGVuZ3RoID4gMykge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ01heGltdW1UaHJlZVJ1bGVzRXhjZWVkZWQnLCAnYSBsaWZlY3ljbGUgcG9saWN5IGNhbiBvbmx5IGhhdmUgdXAgdG8gMyBydWxlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGlvbnMgPSBwcm9wcy5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBkZXRhaWwuYWN0aW9uLnR5cGUpO1xuICAgIGlmIChuZXcgU2V0KGFjdGlvbnMpLnNpemUgIT0gYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdEdXBsaWNhdGVBY3Rpb25zJywgJ2xpZmVjeWNsZSBwb2xpY3kgcnVsZXMgbWF5IG5vdCBoYXZlIGR1cGxpY2F0ZSBhY3Rpb25zJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhIHBvbGljeSBkZXRhaWwgZmlsdGVyIHdpdGhpbiBhIGxpZmVjeWNsZSBwb2xpY3kgcnVsZVxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIFRoZSByZXNvdXJjZSB0eXBlIG9mIHRoZSBsaWZlY3ljbGUgcG9saWN5XG4gICAqIEBwYXJhbSBhY3Rpb24gVGhlIGFjdGlvbiBiZWluZyB0YWtlbiBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwYXJhbSBhbWlFeGNsdXNpb25SdWxlcyBUaGUgQU1JIGV4Y2x1c2lvbiBydWxlcyBpbiB0aGUgbGlmZWN5Y2xlIHBvbGljeSBydWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUG9saWN5RGV0YWlsQWN0aW9uKFxuICAgIHJlc291cmNlVHlwZTogTGlmZWN5Y2xlUG9saWN5UmVzb3VyY2VUeXBlLFxuICAgIGFjdGlvbjogTGlmZWN5Y2xlUG9saWN5QWN0aW9uLFxuICAgIGFtaUV4Y2x1c2lvblJ1bGVzOiBDZm5MaWZlY3ljbGVQb2xpY3kuQW1pRXhjbHVzaW9uUnVsZXNQcm9wZXJ0eSB8IGNkay5JUmVzb2x2YWJsZSB8IHVuZGVmaW5lZCxcbiAgKSB7XG4gICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHJlc291cmNlVHlwZSkgJiYgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQ09OVEFJTkVSX0lNQUdFKSB7XG4gICAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQoYWN0aW9uLnR5cGUpICYmIGFjdGlvbi50eXBlICE9PSBMaWZlY3ljbGVQb2xpY3lBY3Rpb25UeXBlLkRFTEVURSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignT25seURlbGV0ZVJ1bGVzRm9yQ29udGFpbmVyUG9saWNpZXMnLCAneW91IG1heSBvbmx5IHNwZWNpZnkgREVMRVRFIHJ1bGVzIGZvciBjb250YWluZXIgcG9saWNpZXMnLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5pbmNsdWRlQW1pcykge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignQ2Fubm90SW5jbHVkZUFtaXNJbkNvbnRhaW5lclBvbGljeScsICd5b3UgY2Fubm90IGluY2x1ZGUgQU1JcyBpbiBhIGNvbnRhaW5lciBwb2xpY3knLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5pbmNsdWRlU25hcHNob3RzKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdDYW5ub3RJbmNsdWRlU25hcHNob3RzSW5Db250YWluZXJQb2xpY3knLCAneW91IGNhbm5vdCBpbmNsdWRlIHNuYXBzaG90cyBpbiBhIGNvbnRhaW5lciBwb2xpY3knLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFtaUV4Y2x1c2lvblJ1bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0Nhbm5vdEV4Y2x1ZGVBbWlzSW5Db250YWluZXJQb2xpY3knLCAneW91IGNhbm5vdCBleGNsdWRlIEFNSXMgaW4gYSBjb250YWluZXIgcG9saWN5JywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocmVzb3VyY2VUeXBlKSAmJlxuICAgICAgcmVzb3VyY2VUeXBlID09PSBMaWZlY3ljbGVQb2xpY3lSZXNvdXJjZVR5cGUuQU1JX0lNQUdFICYmXG4gICAgICBhY3Rpb24uaW5jbHVkZUNvbnRhaW5lcnNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdDYW5ub3RJbmNsdWRlQ29udGFpbmVyc0luQW1pUG9saWN5JywgJ3lvdSBjYW5ub3QgaW5jbHVkZSBjb250YWluZXJzIGluIGFuIEFNSSBwb2xpY3knLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgcG9saWN5IGRldGFpbCBmaWx0ZXJcbiAgICpcbiAgICogQHBhcmFtIGZpbHRlciBUaGUgbGlmZWN5Y2xlIHBvbGljeSByZXNvdXJjZSBmaWx0ZXIgYXBwbGllZCBpbiB0aGUgcnVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVBvbGljeURldGFpbEZpbHRlcihmaWx0ZXI6IExpZmVjeWNsZVBvbGljeUZpbHRlcikge1xuICAgIGlmIChmaWx0ZXIuYWdlRmlsdGVyICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyLmNvdW50RmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdBZ2VBbmRDb3VudEZpbHRlckNvbmZsaWN0JywgJ2VpdGhlciBhZ2UgY291bnQgY2FuIGJlIHNwZWNpZmllZCBpbiBhIHBvbGljeSBmaWx0ZXIsIGJ1dCBub3QgYm90aCcsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXIuYWdlRmlsdGVyID09PSB1bmRlZmluZWQgJiYgZmlsdGVyLmNvdW50RmlsdGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdBZ2VPckNvdW50RmlsdGVyUmVxdWlyZWQnLCAneW91IG11c3QgcHJvdmlkZSBhbiBhZ2Ugb3IgY291bnQgZmlsdGVyIGluIHRoZSBwb2xpY3knLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXRhaW5BdExlYXN0ID0gZmlsdGVyLmFnZUZpbHRlcj8ucmV0YWluQXRMZWFzdDtcbiAgICBpZiAocmV0YWluQXRMZWFzdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocmV0YWluQXRMZWFzdCA8IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ1JldGFpbkF0TGVhc3RUb29Mb3cnLCAndGhlIHJldGFpbkF0TGVhc3QgZmlsdGVyIHZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMScsIHRoaXMpO1xuICAgICAgfVxuICAgICAgaWYgKHJldGFpbkF0TGVhc3QgPiAxMCkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignUmV0YWluQXRMZWFzdFRvb0hpZ2gnLCAndGhlIHJldGFpbkF0TGVhc3QgZmlsdGVyIHZhbHVlIG11c3QgYmUgYXQgbW9zdCAxMCcsIHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGBjZGsuRHVyYXRpb25gIGludG8gdGhlIHZhbHVlIGFuZCB1bml0IHdoaWNoIGlzIGFjY2VwdGVkIGFzIGZpbHRlciBhZ2UgYW5kIGxhc3QgbGF1bmNoZWQgYWdlIGluIHRoZVxuICAgKiBsaWZlY3ljbGUgcG9saWN5LiBUaGUgdmFsdWUgaXMgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdCB3aG9sZSBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBkdXJhdGlvbiBUaGUgZHVyYXRpb24gdG8gY29udmVydFxuICAgKiBAcGFyYW0gdmFsdWVMaW1pdCBUaGUgbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSBzcGVjaWZpZWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29udmVydER1cmF0aW9uVG9UaW1lVW5pdFZhbHVlKFxuICAgIGR1cmF0aW9uOiBjZGsuRHVyYXRpb24sXG4gICAgdmFsdWVMaW1pdDogbnVtYmVyID0gMTAwMCxcbiAgKTogeyB2YWx1ZTogbnVtYmVyOyB1bml0OiAnREFZUycgfCAnV0VFS1MnIHwgJ01PTlRIUycgfCAnWUVBUlMnIH0ge1xuICAgIGNvbnN0IERBWVNfUEVSX1dFRUsgPSA3O1xuICAgIGNvbnN0IERBWVNfUEVSX01PTlRIID0gMzA7XG4gICAgY29uc3QgREFZU19QRVJfWUVBUiA9IDM2NTtcblxuICAgIGNvbnN0IHZhbHVlSW5EYXlzID0gTWF0aC5jZWlsKGR1cmF0aW9uLnRvRGF5cygpKTtcbiAgICBpZiAodmFsdWVJbkRheXMgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignRHVyYXRpb25Ub29TaG9ydCcsICd0aGUgcHJvdmlkZWQgZHVyYXRpb24gbXVzdCBiZSBhdCBsZWFzdCAxIGRheScsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZUluRGF5cyA8PSB2YWx1ZUxpbWl0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWVJbkRheXMsIHVuaXQ6ICdEQVlTJyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlSW5XZWVrcyA9IE1hdGguY2VpbCh2YWx1ZUluRGF5cyAvIERBWVNfUEVSX1dFRUspO1xuICAgIGlmICh2YWx1ZUluV2Vla3MgPD0gdmFsdWVMaW1pdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlSW5XZWVrcywgdW5pdDogJ1dFRUtTJyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlSW5Nb250aHMgPSBNYXRoLmNlaWwodmFsdWVJbkRheXMgLyBEQVlTX1BFUl9NT05USCk7XG4gICAgaWYgKHZhbHVlSW5Nb250aHMgPD0gdmFsdWVMaW1pdCkge1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlSW5Nb250aHMsIHVuaXQ6ICdNT05USFMnIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVJblllYXJzID0gTWF0aC5jZWlsKHZhbHVlSW5EYXlzIC8gREFZU19QRVJfWUVBUik7XG4gICAgaWYgKHZhbHVlSW5ZZWFycyA8PSB2YWx1ZUxpbWl0KSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogdmFsdWVJblllYXJzLCB1bml0OiAnWUVBUlMnIH07XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0R1cmF0aW9uVG9vTG9uZycsIGB0aGUgcHJvdmlkZWQgZHVyYXRpb24gbXVzdCBiZSBsZXNzIHRoYW4gJHt2YWx1ZUxpbWl0fSB5ZWFyc2AsIHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUxpZmVjeWNsZVBvbGljeU5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKCdMaWZlY3ljbGVQb2xpY3lOYW1lVG9vTG9uZycsICdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0xpZmVjeWNsZVBvbGljeU5hbWVDb250YWluc1NwYWNlcycsICdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0xpZmVjeWNsZVBvbGljeU5hbWVDb250YWluc1VuZGVyc2NvcmVzJywgJ1RoZSBsaWZlY3ljbGVQb2xpY3lOYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignTGlmZWN5Y2xlUG9saWN5TmFtZU5vdExvd2VyY2FzZScsICdUaGUgbGlmZWN5Y2xlUG9saWN5TmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxufVxuIl19
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.242.0-alpha.0" };
28
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.OSVersion", version: "2.244.0-alpha.0" };
29
29
  /**
30
30
  * OS version for all Linux images
31
31
  */
@@ -24,10 +24,10 @@ exports.buildImageTestsConfiguration = buildImageTestsConfiguration;
24
24
  */
25
25
  const buildImageScanningConfiguration = (scope, props) => {
26
26
  if (!props.recipe._isContainerRecipe() && props.imageScanningEcrRepository !== undefined) {
27
- throw new cdk.ValidationError('imageScanningEcrRepository is only supported for container recipe builds', scope);
27
+ throw new cdk.ValidationError('EcrRepositoryOnlySupportedForContainerRecipe', 'imageScanningEcrRepository is only supported for container recipe builds', scope);
28
28
  }
29
29
  if (!props.recipe._isContainerRecipe() && props.imageScanningEcrTags !== undefined) {
30
- throw new cdk.ValidationError('imageScanningEcrTags is only supported for container recipe builds', scope);
30
+ throw new cdk.ValidationError('EcrTagsOnlySupportedForContainerRecipe', 'imageScanningEcrTags is only supported for container recipe builds', scope);
31
31
  }
32
32
  const ecrConfiguration = {
33
33
  ...(props.imageScanningEcrRepository !== undefined && {
@@ -64,4 +64,4 @@ const buildWorkflows = (props) => {
64
64
  return cfnWorkflows?.length ? cfnWorkflows : undefined;
65
65
  };
66
66
  exports.buildWorkflows = buildWorkflows;
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBTW5DOzs7OztHQUtHO0FBQ0ksTUFBTSw0QkFBNEIsR0FBRyxDQUkxQyxLQUFhLEVBQ1EsRUFBRTtJQUN2QixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBYSxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQVhXLFFBQUEsNEJBQTRCLGdDQVd2QztBQUVGOzs7Ozs7R0FNRztBQUNJLE1BQU0sK0JBQStCLEdBQUcsQ0FJN0MsS0FBZ0IsRUFDaEIsS0FBYSxFQUNRLEVBQUU7SUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxLQUFLLENBQUMsMEJBQTBCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsMEVBQTBFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLElBQUksS0FBSyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25GLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9FQUFvRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUE4QztRQUNsRSxHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixLQUFLLFNBQVMsSUFBSTtZQUNwRCxjQUFjLEVBQUUsS0FBSyxDQUFDLDBCQUEwQixDQUFDLGNBQWM7U0FDaEUsQ0FBQztRQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDaEcsQ0FBQztJQUVGLE1BQU0sMEJBQTBCLEdBQUc7UUFDakMsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNyRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUM7S0FDbEUsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsMEJBQXNDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM5RyxDQUFDLENBQUM7QUE1QlcsUUFBQSwrQkFBK0IsbUNBNEIxQztBQUVGOzs7OztHQUtHO0FBQ0ksTUFBTSxjQUFjLEdBQUcsQ0FJNUIsS0FBYSxFQUNRLEVBQUU7SUFDdkIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkYsSUFBSTtZQUNKLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU87WUFDTCxXQUFXLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7WUFDckMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFFLFlBQXdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFwQlcsUUFBQSxjQUFjLGtCQW9CekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDZm5JbWFnZSwgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VQcm9wcyB9IGZyb20gJy4uL2ltYWdlJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VQaXBlbGluZVByb3BzIH0gZnJvbSAnLi4vaW1hZ2UtcGlwZWxpbmUnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2UgdGVzdHMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gKiBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY29uc3QgYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbiA9IDxcbiAgUHJvcHNUIGV4dGVuZHMgSW1hZ2VQaXBlbGluZVByb3BzIHwgSW1hZ2VQcm9wcyxcbiAgT3V0cHV0VCBleHRlbmRzIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IENmbkltYWdlLkltYWdlVGVzdHNDb25maWd1cmF0aW9uUHJvcGVydHksXG4+KFxuICBwcm9wczogUHJvcHNULFxuKTogT3V0cHV0VCB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChwcm9wcy5pbWFnZVRlc3RzRW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7IGltYWdlVGVzdHNFbmFibGVkOiBwcm9wcy5pbWFnZVRlc3RzRW5hYmxlZCB9IGFzIE91dHB1dFQ7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2Ugc2Nhbm5pbmcgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uXG4gKiBMMSBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24gPSA8XG4gIFByb3BzVCBleHRlbmRzIEltYWdlUGlwZWxpbmVQcm9wcyB8IEltYWdlUHJvcHMsXG4gIE91dHB1dFQgZXh0ZW5kcyBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCBDZm5JbWFnZS5JbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvblByb3BlcnR5LFxuPihcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgcHJvcHM6IFByb3BzVCxcbik6IE91dHB1dFQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIXByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSAmJiBwcm9wcy5pbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ2ltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjb250YWluZXIgcmVjaXBlIGJ1aWxkcycsIHNjb3BlKTtcbiAgfVxuXG4gIGlmICghcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHByb3BzLmltYWdlU2Nhbm5pbmdFY3JUYWdzICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignaW1hZ2VTY2FubmluZ0VjclRhZ3MgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNvbnRhaW5lciByZWNpcGUgYnVpbGRzJywgc2NvcGUpO1xuICB9XG5cbiAgY29uc3QgZWNyQ29uZmlndXJhdGlvbjogQ2ZuSW1hZ2VQaXBlbGluZS5FY3JDb25maWd1cmF0aW9uUHJvcGVydHkgPSB7XG4gICAgLi4uKHByb3BzLmltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5ICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgcmVwb3NpdG9yeU5hbWU6IHByb3BzLmltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5LnJlcG9zaXRvcnlOYW1lLFxuICAgIH0pLFxuICAgIC4uLigocHJvcHMuaW1hZ2VTY2FubmluZ0VjclRhZ3MgPz8gW10pLmxlbmd0aCAmJiB7IGNvbnRhaW5lclRhZ3M6IHByb3BzLmltYWdlU2Nhbm5pbmdFY3JUYWdzIH0pLFxuICB9O1xuXG4gIGNvbnN0IGltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uID0ge1xuICAgIC4uLihwcm9wcy5pbWFnZVNjYW5uaW5nRW5hYmxlZCAhPT0gdW5kZWZpbmVkICYmIHsgaW1hZ2VTY2FubmluZ0VuYWJsZWQ6IHByb3BzLmltYWdlU2Nhbm5pbmdFbmFibGVkIH0pLFxuICAgIC4uLihPYmplY3Qua2V5cyhlY3JDb25maWd1cmF0aW9uKS5sZW5ndGggJiYgeyBlY3JDb25maWd1cmF0aW9uIH0pLFxuICB9O1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbikubGVuZ3RoID8gKGltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uIGFzIE91dHB1dFQpIDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHdvcmtmbG93cyBwcm9wZXJ0eSBpbnRvIHRoZSBgV29ya2Zsb3dDb25maWd1cmF0aW9uYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMVxuICogZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkV29ya2Zsb3dzID0gPFxuICBQcm9wc1QgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lUHJvcHMgfCBJbWFnZVByb3BzLFxuICBPdXRwdXRUIGV4dGVuZHMgQ2ZuSW1hZ2VQaXBlbGluZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgQ2ZuSW1hZ2UuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXSxcbj4oXG4gIHByb3BzOiBQcm9wc1QsXG4pOiBPdXRwdXRUIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY2ZuV29ya2Zsb3dzID0gcHJvcHMud29ya2Zsb3dzPy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IE9iamVjdC5lbnRyaWVzKHdvcmtmbG93LnBhcmFtZXRlcnMgPz8ge30pLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHtcbiAgICAgIG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSkpO1xuICAgIHJldHVybiB7XG4gICAgICB3b3JrZmxvd0Fybjogd29ya2Zsb3cud29ya2Zsb3cud29ya2Zsb3dBcm4sXG4gICAgICBvbkZhaWx1cmU6IHdvcmtmbG93Lm9uRmFpbHVyZSxcbiAgICAgIHBhcmFsbGVsR3JvdXA6IHdvcmtmbG93LnBhcmFsbGVsR3JvdXAsXG4gICAgICAuLi4ocGFyYW1ldGVycy5sZW5ndGggJiYgeyBwYXJhbWV0ZXJzIH0pLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiBjZm5Xb3JrZmxvd3M/Lmxlbmd0aCA/IChjZm5Xb3JrZmxvd3MgYXMgT3V0cHV0VCkgOiB1bmRlZmluZWQ7XG59O1xuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtYW5kLXBpcGVsaW5lLXByb3BzLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW1DO0FBTW5DOzs7OztHQUtHO0FBQ0ksTUFBTSw0QkFBNEIsR0FBRyxDQUkxQyxLQUFhLEVBQ1EsRUFBRTtJQUN2QixJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBYSxDQUFDO0FBQ25FLENBQUMsQ0FBQztBQVhXLFFBQUEsNEJBQTRCLGdDQVd2QztBQUVGOzs7Ozs7R0FNRztBQUNJLE1BQU0sK0JBQStCLEdBQUcsQ0FJN0MsS0FBZ0IsRUFDaEIsS0FBYSxFQUNRLEVBQUU7SUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxLQUFLLENBQUMsMEJBQTBCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDekYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsOENBQThDLEVBQUUsMEVBQTBFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkssQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLElBQUksS0FBSyxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25GLE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLHdDQUF3QyxFQUFFLG9FQUFvRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZKLENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUE4QztRQUNsRSxHQUFHLENBQUMsS0FBSyxDQUFDLDBCQUEwQixLQUFLLFNBQVMsSUFBSTtZQUNwRCxjQUFjLEVBQUUsS0FBSyxDQUFDLDBCQUEwQixDQUFDLGNBQWM7U0FDaEUsQ0FBQztRQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDaEcsQ0FBQztJQUVGLE1BQU0sMEJBQTBCLEdBQUc7UUFDakMsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNyRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUM7S0FDbEUsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsMEJBQXNDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM5RyxDQUFDLENBQUM7QUE1QlcsUUFBQSwrQkFBK0IsbUNBNEIxQztBQUVGOzs7OztHQUtHO0FBQ0ksTUFBTSxjQUFjLEdBQUcsQ0FJNUIsS0FBYSxFQUNRLEVBQUU7SUFDdkIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkYsSUFBSTtZQUNKLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztTQUNuQixDQUFDLENBQUMsQ0FBQztRQUNKLE9BQU87WUFDTCxXQUFXLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXO1lBQzFDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7WUFDckMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQztTQUN6QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFFLFlBQXdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFwQlcsUUFBQSxjQUFjLGtCQW9CekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgeyBDZm5JbWFnZSwgQ2ZuSW1hZ2VQaXBlbGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pbWFnZWJ1aWxkZXInO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VQcm9wcyB9IGZyb20gJy4uL2ltYWdlJztcbmltcG9ydCB0eXBlIHsgSW1hZ2VQaXBlbGluZVByb3BzIH0gZnJvbSAnLi4vaW1hZ2UtcGlwZWxpbmUnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2UgdGVzdHMgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxXG4gKiBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICovXG5leHBvcnQgY29uc3QgYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbiA9IDxcbiAgUHJvcHNUIGV4dGVuZHMgSW1hZ2VQaXBlbGluZVByb3BzIHwgSW1hZ2VQcm9wcyxcbiAgT3V0cHV0VCBleHRlbmRzIENmbkltYWdlUGlwZWxpbmUuSW1hZ2VUZXN0c0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IENmbkltYWdlLkltYWdlVGVzdHNDb25maWd1cmF0aW9uUHJvcGVydHksXG4+KFxuICBwcm9wczogUHJvcHNULFxuKTogT3V0cHV0VCB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChwcm9wcy5pbWFnZVRlc3RzRW5hYmxlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7IGltYWdlVGVzdHNFbmFibGVkOiBwcm9wcy5pbWFnZVRlc3RzRW5hYmxlZCB9IGFzIE91dHB1dFQ7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgaW1hZ2Ugc2Nhbm5pbmcgY29uZmlndXJhdGlvbiBwcm9wZXJ0eSBpbnRvIHRoZSBgSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb25gIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uXG4gKiBMMSBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBzY29wZSBUaGUgY29uc3RydWN0IHNjb3BlXG4gKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb24gPSA8XG4gIFByb3BzVCBleHRlbmRzIEltYWdlUGlwZWxpbmVQcm9wcyB8IEltYWdlUHJvcHMsXG4gIE91dHB1dFQgZXh0ZW5kcyBDZm5JbWFnZVBpcGVsaW5lLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCBDZm5JbWFnZS5JbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvblByb3BlcnR5LFxuPihcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgcHJvcHM6IFByb3BzVCxcbik6IE91dHB1dFQgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoIXByb3BzLnJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSAmJiBwcm9wcy5pbWFnZVNjYW5uaW5nRWNyUmVwb3NpdG9yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoJ0VjclJlcG9zaXRvcnlPbmx5U3VwcG9ydGVkRm9yQ29udGFpbmVyUmVjaXBlJywgJ2ltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjb250YWluZXIgcmVjaXBlIGJ1aWxkcycsIHNjb3BlKTtcbiAgfVxuXG4gIGlmICghcHJvcHMucmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpICYmIHByb3BzLmltYWdlU2Nhbm5pbmdFY3JUYWdzICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignRWNyVGFnc09ubHlTdXBwb3J0ZWRGb3JDb250YWluZXJSZWNpcGUnLCAnaW1hZ2VTY2FubmluZ0VjclRhZ3MgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNvbnRhaW5lciByZWNpcGUgYnVpbGRzJywgc2NvcGUpO1xuICB9XG5cbiAgY29uc3QgZWNyQ29uZmlndXJhdGlvbjogQ2ZuSW1hZ2VQaXBlbGluZS5FY3JDb25maWd1cmF0aW9uUHJvcGVydHkgPSB7XG4gICAgLi4uKHByb3BzLmltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5ICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgcmVwb3NpdG9yeU5hbWU6IHByb3BzLmltYWdlU2Nhbm5pbmdFY3JSZXBvc2l0b3J5LnJlcG9zaXRvcnlOYW1lLFxuICAgIH0pLFxuICAgIC4uLigocHJvcHMuaW1hZ2VTY2FubmluZ0VjclRhZ3MgPz8gW10pLmxlbmd0aCAmJiB7IGNvbnRhaW5lclRhZ3M6IHByb3BzLmltYWdlU2Nhbm5pbmdFY3JUYWdzIH0pLFxuICB9O1xuXG4gIGNvbnN0IGltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uID0ge1xuICAgIC4uLihwcm9wcy5pbWFnZVNjYW5uaW5nRW5hYmxlZCAhPT0gdW5kZWZpbmVkICYmIHsgaW1hZ2VTY2FubmluZ0VuYWJsZWQ6IHByb3BzLmltYWdlU2Nhbm5pbmdFbmFibGVkIH0pLFxuICAgIC4uLihPYmplY3Qua2V5cyhlY3JDb25maWd1cmF0aW9uKS5sZW5ndGggJiYgeyBlY3JDb25maWd1cmF0aW9uIH0pLFxuICB9O1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhpbWFnZVNjYW5uaW5nQ29uZmlndXJhdGlvbikubGVuZ3RoID8gKGltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uIGFzIE91dHB1dFQpIDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHdvcmtmbG93cyBwcm9wZXJ0eSBpbnRvIHRoZSBgV29ya2Zsb3dDb25maWd1cmF0aW9uYCB0eXBlIGluIHRoZSBDbG91ZEZvcm1hdGlvbiBMMVxuICogZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkV29ya2Zsb3dzID0gPFxuICBQcm9wc1QgZXh0ZW5kcyBJbWFnZVBpcGVsaW5lUHJvcHMgfCBJbWFnZVByb3BzLFxuICBPdXRwdXRUIGV4dGVuZHMgQ2ZuSW1hZ2VQaXBlbGluZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgQ2ZuSW1hZ2UuV29ya2Zsb3dDb25maWd1cmF0aW9uUHJvcGVydHlbXSxcbj4oXG4gIHByb3BzOiBQcm9wc1QsXG4pOiBPdXRwdXRUIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgY2ZuV29ya2Zsb3dzID0gcHJvcHMud29ya2Zsb3dzPy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVycyA9IE9iamVjdC5lbnRyaWVzKHdvcmtmbG93LnBhcmFtZXRlcnMgPz8ge30pLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHtcbiAgICAgIG5hbWUsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXG4gICAgfSkpO1xuICAgIHJldHVybiB7XG4gICAgICB3b3JrZmxvd0Fybjogd29ya2Zsb3cud29ya2Zsb3cud29ya2Zsb3dBcm4sXG4gICAgICBvbkZhaWx1cmU6IHdvcmtmbG93Lm9uRmFpbHVyZSxcbiAgICAgIHBhcmFsbGVsR3JvdXA6IHdvcmtmbG93LnBhcmFsbGVsR3JvdXAsXG4gICAgICAuLi4ocGFyYW1ldGVycy5sZW5ndGggJiYgeyBwYXJhbWV0ZXJzIH0pLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiBjZm5Xb3JrZmxvd3M/Lmxlbmd0aCA/IChjZm5Xb3JrZmxvd3MgYXMgT3V0cHV0VCkgOiB1bmRlZmluZWQ7XG59O1xuIl19
@@ -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.242.0-alpha.0" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ComponentParameterValue", version: "2.244.0-alpha.0" };
10
10
  /**
11
11
  * The value of the parameter as a string
12
12
  *