@po-ui/ng-components 14.7.0 → 14.8.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.
Files changed (99) hide show
  1. package/esm2020/lib/components/components.module.mjs +14 -7
  2. package/esm2020/lib/components/index.mjs +2 -1
  3. package/esm2020/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.mjs +12 -2
  4. package/esm2020/lib/components/po-field/po-checkbox-group/po-checkbox-group.component.mjs +4 -4
  5. package/esm2020/lib/components/po-field/po-combo/po-combo-base.component.mjs +13 -3
  6. package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +8 -6
  7. package/esm2020/lib/components/po-field/po-datepicker/po-datepicker-base.component.mjs +21 -3
  8. package/esm2020/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +8 -7
  9. package/esm2020/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.mjs +13 -3
  10. package/esm2020/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +4 -4
  11. package/esm2020/lib/components/po-field/po-decimal/po-decimal.component.mjs +8 -7
  12. package/esm2020/lib/components/po-field/po-email/po-email.component.mjs +8 -6
  13. package/esm2020/lib/components/po-field/po-field-container/po-field-container-literals.mjs +9 -5
  14. package/esm2020/lib/components/po-field/po-field-container/po-field-container.component.mjs +60 -23
  15. package/esm2020/lib/components/po-field/po-field-container/po-field-container.module.mjs +5 -4
  16. package/esm2020/lib/components/po-field/po-field-validate.model.mjs +13 -3
  17. package/esm2020/lib/components/po-field/po-input/po-input-base.component.mjs +15 -4
  18. package/esm2020/lib/components/po-field/po-input/po-input.component.mjs +8 -6
  19. package/esm2020/lib/components/po-field/po-login/po-login.component.mjs +8 -6
  20. package/esm2020/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +24 -6
  21. package/esm2020/lib/components/po-field/po-lookup/po-lookup.component.mjs +8 -8
  22. package/esm2020/lib/components/po-field/po-lookup/services/po-lookup-modal.service.mjs +7 -1
  23. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +15 -3
  24. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +4 -4
  25. package/esm2020/lib/components/po-field/po-number/po-number.component.mjs +8 -6
  26. package/esm2020/lib/components/po-field/po-password/po-password.component.mjs +8 -7
  27. package/esm2020/lib/components/po-field/po-radio/po-radio.component.mjs +39 -26
  28. package/esm2020/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +13 -3
  29. package/esm2020/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +4 -4
  30. package/esm2020/lib/components/po-field/po-rich-text/po-rich-text-base.component.mjs +13 -3
  31. package/esm2020/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.mjs +7 -4
  32. package/esm2020/lib/components/po-field/po-rich-text/po-rich-text.component.mjs +5 -5
  33. package/esm2020/lib/components/po-field/po-select/po-select.component.mjs +8 -7
  34. package/esm2020/lib/components/po-field/po-switch/po-switch.component.mjs +11 -7
  35. package/esm2020/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +14 -5
  36. package/esm2020/lib/components/po-field/po-textarea/po-textarea.component.mjs +8 -6
  37. package/esm2020/lib/components/po-field/po-upload/po-upload-base.component.mjs +13 -3
  38. package/esm2020/lib/components/po-field/po-upload/po-upload.component.mjs +33 -32
  39. package/esm2020/lib/components/po-field/po-url/po-url.component.mjs +8 -6
  40. package/esm2020/lib/components/po-label/index.mjs +3 -0
  41. package/esm2020/lib/components/po-label/po-label.component.mjs +94 -0
  42. package/esm2020/lib/components/po-label/po-label.module.mjs +19 -0
  43. package/esm2020/lib/components/po-table/po-table-icon/po-table-icon.component.mjs +4 -4
  44. package/esm2020/lib/components/po-table/po-table.component.mjs +7 -7
  45. package/esm2020/lib/components/po-widget/po-widget-base.component.mjs +11 -2
  46. package/esm2020/lib/components/po-widget/po-widget.component.mjs +12 -4
  47. package/fesm2015/po-ui-ng-components.mjs +1482 -1128
  48. package/fesm2015/po-ui-ng-components.mjs.map +1 -1
  49. package/fesm2020/po-ui-ng-components.mjs +1469 -1129
  50. package/fesm2020/po-ui-ng-components.mjs.map +1 -1
  51. package/lib/components/components.module.d.ts +2 -1
  52. package/lib/components/index.d.ts +1 -0
  53. package/lib/components/po-field/po-checkbox-group/po-checkbox-group-base.component.d.ts +8 -1
  54. package/lib/components/po-field/po-combo/po-combo-base.component.d.ts +9 -2
  55. package/lib/components/po-field/po-combo/po-combo.component.d.ts +1 -0
  56. package/lib/components/po-field/po-datepicker/po-datepicker-base.component.d.ts +17 -2
  57. package/lib/components/po-field/po-datepicker/po-datepicker.component.d.ts +1 -0
  58. package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +9 -2
  59. package/lib/components/po-field/po-decimal/po-decimal.component.d.ts +1 -0
  60. package/lib/components/po-field/po-email/po-email.component.d.ts +1 -0
  61. package/lib/components/po-field/po-field-container/po-field-container-literals.d.ts +4 -0
  62. package/lib/components/po-field/po-field-container/po-field-container.component.d.ts +18 -3
  63. package/lib/components/po-field/po-field-container/po-field-container.module.d.ts +2 -1
  64. package/lib/components/po-field/po-field-validate.model.d.ts +9 -2
  65. package/lib/components/po-field/po-input/po-input-base.component.d.ts +11 -3
  66. package/lib/components/po-field/po-input/po-input.component.d.ts +1 -0
  67. package/lib/components/po-field/po-login/po-login.component.d.ts +1 -0
  68. package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +14 -3
  69. package/lib/components/po-field/po-lookup/po-lookup.component.d.ts +1 -1
  70. package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +1 -0
  71. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +11 -2
  72. package/lib/components/po-field/po-number/po-number.component.d.ts +1 -0
  73. package/lib/components/po-field/po-password/po-password.component.d.ts +1 -0
  74. package/lib/components/po-field/po-radio/po-radio.component.d.ts +7 -4
  75. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +9 -2
  76. package/lib/components/po-field/po-rich-text/po-rich-text-base.component.d.ts +9 -2
  77. package/lib/components/po-field/po-rich-text/po-rich-text-body/po-rich-text-body.component.d.ts +2 -1
  78. package/lib/components/po-field/po-select/po-select.component.d.ts +1 -0
  79. package/lib/components/po-field/po-switch/po-switch.component.d.ts +1 -0
  80. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +10 -4
  81. package/lib/components/po-field/po-textarea/po-textarea.component.d.ts +1 -0
  82. package/lib/components/po-field/po-upload/po-upload-base.component.d.ts +9 -2
  83. package/lib/components/po-field/po-upload/po-upload.component.d.ts +1 -0
  84. package/lib/components/po-field/po-url/po-url.component.d.ts +1 -0
  85. package/lib/components/po-label/index.d.ts +2 -0
  86. package/lib/components/po-label/po-label.component.d.ts +40 -0
  87. package/lib/components/po-label/po-label.module.d.ts +8 -0
  88. package/lib/components/po-widget/po-widget-base.component.d.ts +11 -2
  89. package/lib/components/po-widget/po-widget.component.d.ts +1 -0
  90. package/package.json +4 -4
  91. package/po-ui-ng-components-14.8.0.tgz +0 -0
  92. package/schematics/ng-add/index.js +1 -1
  93. package/schematics/ng-update/v14/index.js +1 -1
  94. package/schematics/ng-update/v2/index.js +1 -1
  95. package/schematics/ng-update/v3/index.js +1 -1
  96. package/schematics/ng-update/v4/index.js +1 -1
  97. package/schematics/ng-update/v5/index.js +1 -1
  98. package/schematics/ng-update/v6/index.js +1 -1
  99. package/po-ui-ng-components-14.7.0.tgz +0 -0
@@ -7,6 +7,7 @@ import { convertToBoolean, isTypeof } from '../../../utils/util';
7
7
  import { requiredFailed } from '../validators';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "./services/po-lookup-filter.service";
10
+ import * as i2 from "./services/po-lookup-modal.service";
10
11
  /**
11
12
  * @description
12
13
  *
@@ -24,9 +25,10 @@ import * as i1 from "./services/po-lookup-filter.service";
24
25
  * `po-select` ou o `po-combo`.
25
26
  */
26
27
  export class PoLookupBaseComponent {
27
- constructor(defaultService, injector) {
28
+ constructor(defaultService, injector, poLookupModalService) {
28
29
  this.defaultService = defaultService;
29
30
  this.injector = injector;
31
+ this.poLookupModalService = poLookupModalService;
30
32
  /**
31
33
  * @optional
32
34
  *
@@ -127,6 +129,13 @@ export class PoLookupBaseComponent {
127
129
  this._required = false;
128
130
  this._autoHeight = false;
129
131
  this.onChangePropagate = null;
132
+ /**
133
+ * Define se a indicação de campo obrigatório seré exibida.
134
+ *
135
+ * > Não será exibida a indicação se:
136
+ * - Não possuir `p-help` e/ou `p-label`.
137
+ */
138
+ this.showRequired = false;
130
139
  }
131
140
  /** Mensagem que aparecerá enquanto o campo não estiver preenchido. */
132
141
  set placeholder(value) {
@@ -223,9 +232,11 @@ export class PoLookupBaseComponent {
223
232
  }
224
233
  /**
225
234
  * @optional
235
+ *
226
236
  * @description
227
237
  *
228
- * Indica que o campo será obrigatório. Esta propriedade é desconsiderada quando o campo está desabilitado (p-disabled).
238
+ * Define que o campo será obrigatório.
239
+ * > Esta propriedade é desconsiderada quando o input está desabilitado `(p-disabled)`.
229
240
  *
230
241
  * @default `false`
231
242
  */
@@ -266,6 +277,10 @@ export class PoLookupBaseComponent {
266
277
  this.callOnChange(undefined);
267
278
  }
268
279
  ngOnChanges(changes) {
280
+ if (changes.columns?.currentValue) {
281
+ this.columns = changes.columns.currentValue;
282
+ this.poLookupModalService?.setChangeColumns(this.columns);
283
+ }
269
284
  if (changes.multiple && isTypeof(this.filterService, 'string')) {
270
285
  this.service.setConfig(this.filterService, this.fieldValue, this.multiple);
271
286
  }
@@ -425,8 +440,8 @@ export class PoLookupBaseComponent {
425
440
  }
426
441
  }
427
442
  }
428
- PoLookupBaseComponent.ɵfac = function PoLookupBaseComponent_Factory(t) { return new (t || PoLookupBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLookupFilterService), i0.ɵɵdirectiveInject(Injector)); };
429
- PoLookupBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoLookupBaseComponent, inputs: { autoFocus: ["p-auto-focus", "autoFocus"], label: ["p-label", "label"], literals: ["p-literals", "literals"], help: ["p-help", "help"], placeholder: ["p-placeholder", "placeholder"], name: "name", fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], filterParams: ["p-filter-params", "filterParams"], fieldFormat: ["p-field-format", "fieldFormat"], columns: ["p-columns", "columns"], optional: ["p-optional", "optional"], advancedFilters: ["p-advanced-filters", "advancedFilters"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], clean: ["p-clean", "clean"], multiple: ["p-multiple", "multiple"], autoHeight: ["p-auto-height", "autoHeight"], filterService: ["p-filter-service", "filterService"], noAutocomplete: ["p-no-autocomplete", "noAutocomplete"], required: ["p-required", "required"], disabled: ["p-disabled", "disabled"] }, outputs: { onError: "p-error", selected: "p-selected", change: "p-change", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵNgOnChangesFeature] });
443
+ PoLookupBaseComponent.ɵfac = function PoLookupBaseComponent_Factory(t) { return new (t || PoLookupBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLookupFilterService), i0.ɵɵdirectiveInject(Injector), i0.ɵɵdirectiveInject(i2.PoLookupModalService)); };
444
+ PoLookupBaseComponent.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoLookupBaseComponent, inputs: { autoFocus: ["p-auto-focus", "autoFocus"], label: ["p-label", "label"], literals: ["p-literals", "literals"], help: ["p-help", "help"], placeholder: ["p-placeholder", "placeholder"], name: "name", fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"], filterParams: ["p-filter-params", "filterParams"], fieldFormat: ["p-field-format", "fieldFormat"], columns: ["p-columns", "columns"], optional: ["p-optional", "optional"], advancedFilters: ["p-advanced-filters", "advancedFilters"], infiniteScroll: ["p-infinite-scroll", "infiniteScroll"], clean: ["p-clean", "clean"], multiple: ["p-multiple", "multiple"], autoHeight: ["p-auto-height", "autoHeight"], filterService: ["p-filter-service", "filterService"], noAutocomplete: ["p-no-autocomplete", "noAutocomplete"], required: ["p-required", "required"], showRequired: ["p-show-required", "showRequired"], disabled: ["p-disabled", "disabled"] }, outputs: { onError: "p-error", selected: "p-selected", change: "p-change", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵNgOnChangesFeature] });
430
445
  __decorate([
431
446
  InputBoolean()
432
447
  ], PoLookupBaseComponent.prototype, "autoFocus", void 0);
@@ -447,7 +462,7 @@ __decorate([
447
462
  }], function () { return [{ type: i1.PoLookupFilterService }, { type: i0.Injector, decorators: [{
448
463
  type: Inject,
449
464
  args: [Injector]
450
- }] }]; }, { autoFocus: [{
465
+ }] }, { type: i2.PoLookupModalService }]; }, { autoFocus: [{
451
466
  type: Input,
452
467
  args: ['p-auto-focus']
453
468
  }], label: [{
@@ -522,8 +537,11 @@ __decorate([
522
537
  }], required: [{
523
538
  type: Input,
524
539
  args: ['p-required']
540
+ }], showRequired: [{
541
+ type: Input,
542
+ args: ['p-show-required']
525
543
  }], disabled: [{
526
544
  type: Input,
527
545
  args: ['p-disabled']
528
546
  }] }); })();
529
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE2RCxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPL0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsTUFBTSxPQUFnQixxQkFBcUI7SUFtYXpDLFlBQW9CLGNBQXFDLEVBQTRCLFFBQWtCO1FBQW5GLG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUE0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBamF2Rzs7Ozs7Ozs7OztXQVVHO1FBQ29DLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFpTGxFOzs7Ozs7OztXQVFHO1FBQ3lDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRTVFLGlEQUFpRDtRQUNmLFVBQUssR0FBWSxLQUFLLENBQUM7UUFFekQ7Ozs7Ozs7Ozs7V0FVRztRQUNrQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRS9EOzs7Ozs7Ozs7V0FTRztRQUNxQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXBFOzs7V0FHRztR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aXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0RmxhZ3MsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBQb0xvb2t1cEFkdmFuY2VkRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1hZHZhbmNlZC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWxvb2t1cC1maWx0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSB1dGlsaXphZG8gcGFyYSBhYnJpciB1bWEgamFuZWxhIGRlIGJ1c2NhIGNvbSB1bWEgdGFiZWxhIHF1ZSBsaXN0YSBkYWRvcyBkZSB1bSBzZXJ2acOnby4gTmVzdGEgamFuZWxhIMOpIHBvc3PDrXZlbCBidXNjYXIgZVxuICogc2VsZWNpb25hciB1bSBvdSBtYWlzIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIGVudmlhZG9zIHBhcmEgbyBjYW1wby4gTyBgcG8tbG9va3VwYCBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmFcbiAqIGJ1c2NhciB1bSByZWdpc3Ryby5cbiAqXG4gKiA+IENhc28gbyBjYW1wbyBzZWphIGluaWNpYWRvIG91IHByZWVuY2hpZG8gY29tIHVtIHZhbG9yIGluZXhpc3RlbnRlIG5hIGJ1c2NhLCBvIG1lc21vIHNlcsOhIGxpbXBhZG8uXG4gKiBObyBzZWd1bmRvIGNhc28gb2NvcnJlcsOhIGFww7NzIGVzdGUgcGVyZGVyIG8gZm9jbzsgYW1ib3Mgb3MgY2Fzb3MgbyBjYW1wbyBmaWNhcsOhIGludsOhbGlkbyBxdWFuZG8gcmVxdWVyaWRvLlxuICpcbiAqID4gRW5xdWFudG8gbyBjb21wb25lbnRlIHJlYWxpemEgYSByZXF1aXNpw6fDo28gYW8gc2Vydmlkb3IsIG8gY29tcG9uZW50ZSBmaWNhcsOhIGRlc2FiaWxpdGFkbyBlIGNvbSBvIHN0YXR1cyBpbnRlcm5vIGRvXG4gKiBbbW9kZWxvXShodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZm9ybS12YWxpZGF0aW9uI2NyZWF0aW5nLWFzeW5jaHJvbm91cy12YWxpZGF0b3JzKSBjb21vIGBwZW5kaW5nYC5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgbsOjbyDDqSByZWNvbWVuZGFkbyBxdWFuZG8gYSBidXNjYSBkb3MgZGFkb3MgcG9zc3VpciBwb3VjYXMgaW5mb3JtYcOnw7VlcywgcGFyYSBpc3NvIHV0aWxpemUgb3V0cm9zIGNvbXBvbmVudGVzIGNvbW8gb1xuICogYHBvLXNlbGVjdGAgb3UgbyBgcG8tY29tYm9gLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0xvb2t1cEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIExhYmVsIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IFF1YW5kbyB1dGlsaXphciBlc3RhIHByb3ByaWVkYWRlIG8gc2V1IHZhbG9yIHNlcsOhIHV0aWxpemFkbyBjb21vIHTDrXR1bG8gZGEgbW9kYWwgZG8gY29tcG9uZW50ZSBjYXNvIG7Do28gdGVuaGFcbiAgICogc2lkbyBkZWZpbmlkbyB1bSBgbW9kYWxUaXRsZWAgbmEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKi9cbiAgQElucHV0KCdwLWxhYmVsJykgbGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tbG9va3VwYC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscyA9IHtcbiAgICogICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnLFxuICAgKiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsJyxcbiAgICogICAgbW9kYWxQbGFjZWhvbGRlcjogJ1NlYXJjaCBWYWx1ZScsXG4gICAqICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6ICdObyBjb2x1bW5zJyxcbiAgICogICAgbW9kYWxUYWJsZU5vRGF0YTogJ05vIGRhdGEnLFxuICAgKiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6ICdMb2FkaW5nIGRhdGEnLFxuICAgKiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiAnTG9hZCBtb3JlJyxcbiAgICogICAgbW9kYWxUaXRsZTogJ1NlbGVjdCBhIHVzZXInLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRlcicsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ1JldHVybicsXG4gICAqICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdQcmVzZW50aW5nIHJlc3VsdHMgZmlsdGVyZWQgYnk6J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIE91IHBhc3NhbmRvIGFwZW5hcyBhcyBsaXRlcmFpcyBxdWUgZGVzZWphIGN1c3RvbWl6YXI6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHMgPSB7XG4gICAqICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWN0J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbG9va3VwXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1sb29rdXA+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIGxpdGVyYWxzPzogUG9Mb29rdXBMaXRlcmFscztcblxuICAvKiogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKiogTWVuc2FnZW0gcXVlIGFwYXJlY2Vyw6EgZW5xdWFudG8gbyBjYW1wbyBuw6NvIGVzdGl2ZXIgcHJlZW5jaGlkby4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlIHx8ICcnO1xuICB9XG5cbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKiBOb21lIGUgSWQgZG8gY29tcG9uZW50ZS4gKi9cbiAgQElucHV0KCduYW1lJykgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyB2YWxvciBkbyBjYW1wby5cbiAgICpcbiAgICogPiBBdGVuw6fDo286IENhc28gbsOjbyBzZWphIHBhc3NhZGEgb3UgdGVuaGEgbyBjb250ZcO6ZG8gaW5jb3JyZXRvLCBuw6NvIGlyw6EgYXR1YWxpemFyIG8gbW9kZWwgZG8gZm9ybXVsw6FyaW8uXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBmaWVsZFZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqIEluZGljYSBhIGNvbHVuYSBxdWUgc2Vyw6EgdXRpbGl6YWRhIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8gZSBjb21vIGZpbHRybyBkZW50cm8gZGEgamFuZWxhLiAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBzZXQgZmllbGRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRMYWJlbCA9IHZhbHVlO1xuICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKiBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGNvbW8gcGFyw6JtZXRybyBwYXJhIGEgVVJMIG91IGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgYFBvTG9va3VwRmlsdGVyYC4gKi9cbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBmaWx0ZXJQYXJhbXM/OiBhbnk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRm9ybWF0byBkZSBleGliacOnw6NvIGRvIGNhbXBvLlxuICAgKlxuICAgKiBSZWNlYmUgdW1hIGZ1bsOnw6NvIHF1ZSBkZXZlIHJldG9ybmFyIHVtYSAqc3RyaW5nKiBjb20gby9vcyB2YWxvcmVzIGRvIG9iamV0byBmb3JtYXRhZG9zIHBhcmEgZXhpYmnDp8OjbywgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBmaWVsZEZvcm1hdChvYmopIHtcbiAgICogICByZXR1cm4gYCR7b2JqLmlkfSAtICR7b2JqLm5hbWV9YDtcbiAgICogfVxuICAgKiBgYGBcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNvYnJlcMO1ZSBvIHZhbG9yIGRhIHByb3ByaWVkYWRlIGBwLWZpZWxkLWxhYmVsYCBuYSBkZXNjcmnDp8OjbyBkbyBjYW1wby5cbiAgICpcbiAgICogUG9kZS1zZSBpbmZvcm1hciB1bWEgbGlzdGEgZGUgcHJvcHJpZWRhZGVzIHF1ZSBkZXNlamEgZXhpYmlyIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8sIFBvciBleGVtcGxvOlxuICAgKiBgYGBcbiAgICogPHBvLWxvb2t1cFxuICAgKiAgLi4uXG4gICAqICBbcC1maWVsZC1mb3JtYXRdPVwiWydpZCcsJ25pY2tuYW1lJ11cIlxuICAgKiAgLi4uXG4gICAqID5cbiAgICpcbiAgICogT2JqZXRvIHJldG9ybmFkbzpcbiAgICogICB7XG4gICAqICAgICAgaWQ6MTIzLFxuICAgKiAgICAgIG5hbWU6ICdLYWthcm90bycsXG4gICAqICAgICAgbmlja25hbWU6ICdHb2t1JyxcbiAgICogICB9XG4gICAqIEFwcmVzZW50YcOnw6NvIG5vIGNhbXBvOiAxMjMgLSBHb2t1XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IFNlcsOhIHV0aWxpemFkbyBgIC0gYCBjb21vIHNlcGFyYWRvci5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1mb3JtYXQnKSBmaWVsZEZvcm1hdD86ICgodmFsdWUpID0+IHN0cmluZykgfCBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBMaXN0YSBkYXMgY29sdW5hcyBkYSB0YWJlbGEuXG4gICAqIEVzc2EgcHJvcHJpZWRhZGUgZGV2ZSByZWNlYmVyIHVtIGFycmF5IGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIFBvTG9va3VwQ29sdW1uLlxuICAgKi9cbiAgQElucHV0KCdwLWNvbHVtbnMnKSBjb2x1bW5zPzogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgb2JqZXRvcyBkb3MgY2FtcG9zIHF1ZSBzZXLDo28gY3JpYWRvcyBuYSBidXNjYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqID4gQ2FzbyBuw6NvIHNlamEgcGFzc2FkbyB1bSBvYmpldG8gb3UgZW50w6NvIGVsZSBlc3RlamEgZW0gYnJhbmNvIG8gbGluayBkZSBidXNjYSBhdmFuw6dhZGEgZmljYXLDoSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgVVJMIGNvbSBidXNjYSBhdmFuw6dhZGE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJm5hbWU9VG9ueSUyMFN0YXJrJm5pY2tuYW1lPUhvbWVtJTIwZGUlMjBGZXJyb1xuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBhbGd1bSBwYXLDom1ldHJvIHNlamEgdW1hIGxpc3RhLCBhIGNvbmNhdGVuYcOnw6NvIMOpIGZlaXRhIHV0aWxpemFuZG8gdsOtcmd1bGEuXG4gICAqIEV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJm5hbWU9VG9ueSUyMFN0YXJrLFBldGVyJTIwUGFya2VyLEdvaGFuXG4gICAqIGBgYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWFkdmFuY2VkLWZpbHRlcnMnKSBhZHZhbmNlZEZpbHRlcnM6IEFycmF5PFBvTG9va3VwQWR2YW5jZWRGaWx0ZXI+O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaW5maW5pdGUtc2Nyb2xsJykgQElucHV0Qm9vbGVhbigpIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEV4aWJlIHVtIMOtY29uZSBxdWUgcGVybWl0ZSBsaW1wYXIgbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWNsZWFuJykgQElucHV0Qm9vbGVhbigpIGNsZWFuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHNlbGXDp8OjbyBkZSBtw7psdGlwbG9zIGl0ZW5zLlxuICAgKlxuICAgKiA+IFF1YW5kbyBoYWJpbGl0YWRvIG8gdmFsb3IgZG8gY2FtcG8gcGFzc2Fyw6EgYSBzZXIgdW1hIGxpc3RhIGRlIHZhbG9yZXMsIHBvciBleGVtcGxvOiBgWyAxMjM0NSwgNjc4OTAgXWBcbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW11bHRpcGxlJykgQElucHV0Qm9vbGVhbigpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIHNlcsOhIGF1dG8gYWp1c3TDoXZlbCwgcG9zc3VpbmRvIHVtYSBhbHR1cmEgbWluaW1hIHBvcsOpbSBhIGFsdHVyYSBtw6F4aW1hIHNlcsOhIGRlIGFjb3Jkb1xuICAgKiBjb20gbyBuw7ptZXJvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIGEgZXh0ZW5zw6NvIGRvcyBtZXNtb3MsIG1hbnRlbmRvLW9zIHNlbXByZSB2aXPDrXZlaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1hdXRvLWhlaWdodCcpIEBJbnB1dEJvb2xlYW4oKSBhdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG9jb3JyZXIgYWxndW0gZXJybyBuYSByZXF1aXNpw6fDo28gZGUgYnVzY2EgZG8gaXRlbS5cbiAgICogU2Vyw6EgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBvIG9iamV0byBkZSBlcnJvIHJldG9ybmFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtZXJyb3InKSBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG9jb3JyZXIgYWxndW1hIHNlbGXDp8Ojby5cbiAgICogU2Vyw6EgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBvIG9iamV0byBjb20gbyB2YWxvciBzZWxlY2lvbmFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc2VsZWN0ZWQnKSBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiAgRXZlbnRvIHF1ZSBzZXLDoSBkaXNwYXJhZG8gYW8gYWx0ZXJhciBvIG1vZGVsLlxuICAgKiAgUG9yIHBhcsOibWV0cm8gc2Vyw6EgcGFzc2FkbyBvIG5vdm8gdmFsb3IuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGZlY2hhciBvIHBvcG92ZXIgZG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcyBhcMOzcyBhbHRlcmFyIGFzIGNvbHVuYXMgdmlzw612ZWlzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyB2aXPDrXZlaXMgYXR1YWxpemFkYXMuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLXZpc2libGUtY29sdW1ucycpIGNoYW5nZVZpc2libGVDb2x1bW5zID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxzdHJpbmc+PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSByZXN0YXVyYXIgcGFkcsOjbyBubyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyBjb25maWd1cmFkYXMgaW5pY2lhbG1lbnRlLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLXJlc3RvcmUtY29sdW1uLW1hbmFnZXInKSBjb2x1bW5SZXN0b3JlTWFuYWdlciA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U3RyaW5nPj4oKTtcblxuICBzZXJ2aWNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICBwcm90ZWN0ZWQgZ2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBrZXlzRGVzY3JpcHRpb246IEFycmF5PGFueT47XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCB2YWx1ZVRvTW9kZWw7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZVRvTW9kZWwgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZExhYmVsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b0hlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgYXV0b0hlaWdodEluaXRpYWxWYWx1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBvbkNoYW5nZVByb3BhZ2F0ZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICBwcml2YXRlIGNvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgLyoqXG4gICAqIFNlcnZpw6dvIHJlc3BvbnPDoXZlbCBwb3IgYnVzY2FyIG9zIGRhZG9zIGRhIHRhYmVsYSBuYSBqYW5lbGEuIFBvZGUgc2VyIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBxdWUgaW1wbGVtZW50ZSBhIGludGVyZmFjZVxuICAgKiBgUG9Mb29rdXBGaWx0ZXJgIG91IHVtYSBVUkwuXG4gICAqXG4gICAqIFF1YW5kbyB1dGlsaXphZGEgdW1hIFVSTCBkZSB1bSBzZXJ2acOnbywgc2Vyw6EgY29uY2F0ZW5hZGEgbmVzdGEgVVJMIG8gdmFsb3IgcXVlIGRlc2VqYS1zZSBmaWx0cmFyLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIHV0aWxpemFyIG9yZGVuYcOnw6NvLCBhIGNvbHVuYSBvcmRlbmFkYSBzZXLDoSBlbnZpYWRhIGF0cmF2w6lzIGRvIHBhcsOibWV0cm8gYG9yZGVyYCwgcG9yIGV4ZW1wbG86XG4gICAqIC0gQ29sdW5hIGRlY3Jlc2NlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyJm9yZGVyPS1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiAtIENvbHVuYSBhc2NlbmRlbnRlOlxuICAgKiBgYGBcbiAgICogIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmZmlsdGVyPVBldGVyJm9yZGVyPW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIFNlIGZvciBkZWZpbmlkbyBhIHByb3ByaWVkYWRlIGBwLWZpbHRlci1wYXJhbXNgLCBvIG1lc21vIHRhbWLDqW0gc2Vyw6EgY29uY2F0ZW5hZG8uIFBvciBleGVtcGxvLCBwYXJhIG9cbiAgICogcGFyw6JtZXRybyBgeyBhZ2U6IDIzIH1gIGEgVVJMIGZpY2FyaWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmFnZT0yMyZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIEFvIGluaWNpYXIgbyBjYW1wbyBjb20gdmFsb3IsIG9zIHJlZ2lzdHJvcyBzZXLDo28gYnVzY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6XG4gICAqIGBgYFxuICAgKiBtb2RlbCA9IDEyMzQ7XG4gICAqXG4gICAqIEdFVCB1cmwvMTIzNFxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBlc3RpdmVyIGNvbSBtw7psdGlwbGEgc2VsZcOnw6NvIGhhYmlsaXRhZGE6XG4gICAqIGBgYFxuICAgKiBtb2RlbCA9IFsxMjM0LCA1Njc4XVxuICAgKlxuICAgKiBHRVQgdXJsPyR7ZmllbGRWYWx1ZX09MTIzNCw1Njc4XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IEVzdGEgVVJMIGRldmUgcmV0b3JuYXIgZSByZWNlYmVyIG9zIGRhZG9zIG5vIHBhZHLDo28gZGUgW0FQSSBkbyBQTyBVSV0oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKSBlIHV0aWxpemEgb3MgdmFsb3Jlc1xuICAgKiBkZWZpbmlkb3MgbmFzIHByb3ByaWVkYWRlcyBgcC1maWVsZC1sYWJlbGAgZSBgcC1maWVsZC12YWx1ZWAgcGFyYSBhIGNvbnN0cnXDp8OjbyBkbyBgcG8tbG9va3VwYC5cbiAgICpcbiAgICogQ2FzbyBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmEgcmVhbGl6YXIgYSBidXNjYSBkZSB1bSByZWdpc3RybyBlc3BlY8OtZmljbywgbyB2YWxvciBxdWUgc2VcbiAgICogZGVzZWphIGZpbHRyYXIgc2Vyw6EgY29kaWZpY2FkbyB1dGlsaXphbmRvIGEgZnVuw6fDo28gW2VuY29kZVVSSUNvbXBvbmVudF0oaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1lbmNvZGV1cmljb21wb25lbnQtdXJpY29tcG9uZW50KVxuICAgKiBlIGNvbmNhdGVuYWRvIG5hIFVSTCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybC92YWxvciUyMHF1ZSUyMHNlJTIwZGVzZWphJTIwZmlsdHJhclxuICAgKiBgYGBcbiAgICpcbiAgICogPiBRdWFuZG8gaW5mb3JtYWRvIHVtIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRlIGEgaW50ZXJmYWNlIGBQb0xvb2t1cEZpbHRlcmAgbyB0cmF0YW1lbnRvIGRlIGVuY29kaW5nIGRvIHZhbG9yIGEgc2VyIGZpbHRyYWRvIGZpY2Fyw6EgYSBjYXJnbyBkbyBkZXNlbnZvbHZlZG9yLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1zZXJ2aWNlJykgc2V0IGZpbHRlclNlcnZpY2UoZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWx0ZXJTZXJ2aWNlID0gZmlsdGVyU2VydmljZTtcbiAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUnKSBzZXQgbm9BdXRvY29tcGxldGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9ub0F1dG9jb21wbGV0ZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IG5vQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9ub0F1dG9jb21wbGV0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uIEVzdGEgcHJvcHJpZWRhZGUgw6kgZGVzY29uc2lkZXJhZGEgcXVhbmRvIG8gY2FtcG8gZXN0w6EgZGVzYWJpbGl0YWRvIChwLWRpc2FibGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLnZhbHVlVG9Nb2RlbCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gPGFueT5kaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWZhdWx0U2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLCBASW5qZWN0KEluamVjdG9yKSBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5nZXRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRDb250cm9sKCk7XG4gIH1cblxuICBjbGVhbk1vZGVsKCkge1xuICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh1bmRlZmluZWQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLm11bHRpcGxlICYmIGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuZmlsdGVyU2VydmljZSwgdGhpcy5maWVsZFZhbHVlLCB0aGlzLm11bHRpcGxlKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uVG91Y2hlZChmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZ1bmM7XG4gIH1cblxuICAvLyBTZWxlY2lvbmEgbyB2YWxvciBkbyBtb2RlbC5cbiAgc2VsZWN0VmFsdWUodmFsdWVTZWxlY3RlZDogYW55KSB7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSB2YWx1ZVNlbGVjdGVkO1xuICAgIHRoaXMubXVsdGlwbGVcbiAgICAgID8gdGhpcy5jYWxsT25DaGFuZ2UodGhpcy52YWx1ZVRvTW9kZWwpXG4gICAgICA6IHRoaXMudmFsdWVUb01vZGVsXG4gICAgICA/IHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMudmFsdWVUb01vZGVsW3RoaXMuZmllbGRWYWx1ZV0pXG4gICAgICA6IHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlU2VsZWN0ZWQpO1xuICB9XG5cbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBRdWFuZG8gbyBpbnB1dCBuw6NvIHBvc3N1aSB1bSBmb3JtdWzDoXJpbywgZW50w6NvIGVzdGEgZnVuw6fDo28gbsOjbyDDqSByZWdpc3RyYWRhLlxuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vbGRWYWx1ZVRvTW9kZWwgIT09IHRoaXMudmFsdWVUb01vZGVsKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBcm1hemVuYXIgbyB2YWxvciBhbnRpZ28gZG8gbW9kZWxcbiAgICB0aGlzLm9sZFZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsO1xuICB9XG5cbiAgc2VhcmNoQnlJZCh2YWx1ZSkge1xuICAgIGxldCBjaGVja2VkVmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY2hlY2tlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY2hlY2tlZFZhbHVlID0gY2hlY2tlZFZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tlZFZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3Qgb2xkRGlzYWJsZSA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAvLyA6VE9ETzogUmV0aXJhciBubyBmdXR1cm8gcG9pcyBlc3NlIHNldFRpbWVvdXQgZm9pIGZlaXRvXG4gICAgICAgIC8vIHBvaXMgcXVhbmRvIG8gY2FtcG8gw6kgYWNpb25hZG8gcGVsb3MgbcOpdG9kb3Mgc2V0VmFsdWUgb3UgcGF0Y2hWYWx1ZVxuICAgICAgICAvLyBhIG11ZGFuw6dhIG7Do28gw6kgZGV0ZWN0YWRhXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250cm9sLm1hcmtBc1BlbmRpbmcoKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCB0aGlzLmZpbHRlclBhcmFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG9sZERpc2FibGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudD8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50KSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2NsYWltZXJzKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsKHRoaXMubXVsdGlwbGUgPyBlbGVtZW50IDogW2VsZW1lbnRdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZT8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpKSB7XG4gICAgICAvLyBFc3RhIGNvbmRpw6fDo28gw6kgZXhlY3V0YWRhIHNvbWVudGUgcXVhbmRvIMOpIHBhc3NhZG8gbyBJRCBwYXJhIHJlYWxpemFyIGEgYnVzY2EgcGVsbyBJRC5cbiAgICAgIHRoaXMuc2VhcmNoQnlJZCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW5WaWV3VmFsdWUoKSB7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVycyhbXSk7XG4gICAgdGhpcy5zZXRWaWV3VmFsdWUoJycsIHt9KTtcbiAgICB0aGlzLm9sZFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGxhYmVsIGRvIGNhbXBvLlxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy5rZXlzRGVzY3JpcHRpb24ubWFwKGNvbHVtbiA9PiB2YWx1ZVtjb2x1bW5dKS5qb2luKCcgLSAnKSA6ICcnO1xuICB9XG5cbiAgLy8gQ2hhbWEgbyBtw6l0b2RvIHdyaXRlVmFsdWUgZSBwcmVlbmNoZSBvIG1vZGVsLlxuICBwcm90ZWN0ZWQgc2VsZWN0TW9kZWwob3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbLi4ub3B0aW9uc107XG5cbiAgICAgIGNvbnN0IG5ld01vZGVsID0gdGhpcy5tdWx0aXBsZSA/IG9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSkgOiBvcHRpb25zWzBdO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZShuZXdNb2RlbCk7XG5cbiAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gb3B0aW9uc1swXVt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmdldEZvcm1hdHRlZExhYmVsKG9wdGlvbnNbMF0pLCBvcHRpb25zWzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlcnZpY2Uoc2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Mb29rdXBGaWx0ZXJTZXJ2aWNlPnNlcnZpY2U7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyhzZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbCgpIHtcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgSW5qZWN0RmxhZ3MuU2VsZik7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29sdW1uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkTGFiZWwpIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW107XG5cbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gdGhpcy5jb2x1bW5zLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuZmllbGRMYWJlbCkubWFwKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9wZXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXRyaWJ1aSB1bSBvdSBtYWlzIHZhbG9yZXMgYW8gY2FtcG8uXG4gIGFic3RyYWN0IHNldFZpZXdWYWx1ZSh2YWx1ZTogYW55LCBvYmplY3Q6IGFueSk6IHZvaWQ7XG5cbiAgLy8gTcOpdG9kbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gcGFyYSBhYnJpciBvIGxvb2t1cC5cbiAgYWJzdHJhY3Qgb3Blbkxvb2t1cCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHNldERpc2NsYWltZXJzKGEpO1xuICBhYnN0cmFjdCB1cGRhdGVWaXNpYmxlSXRlbXMoKTtcbn1cbiJdfQ==
547
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE2RCxTQUFTLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBUS9DOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE1BQU0sT0FBZ0IscUJBQXFCO0lBNmF6QyxZQUNVLGNBQXFDLEVBQ25CLFFBQWtCLEVBQ3JDLG9CQUEwQztRQUZ6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNyQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBOWFuRDs7Ozs7Ozs7OztXQVVHO1FBQ29DLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFpTGxFOzs7Ozs7OztXQVFHO1FBQ3lDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRTVFLGlEQUFpRDtRQUNmLFVBQUssR0FBWSxLQUFLLENBQUM7UUFFekQ7Ozs7Ozs7Ozs7V0FVRztRQUNrQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRS9EOzs7Ozs7Ozs7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QkFBMEI7WUFXRSxvQkFBb0I7a0JBQXZELE1BQU07bUJBQUMsMEJBQTBCO1lBb0ZILGFBQWE7a0JBQTNDLEtBQUs7bUJBQUMsa0JBQWtCO1lBa0JPLGNBQWM7a0JBQTdDLEtBQUs7bUJBQUMsbUJBQW1CO1lBa0JELFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQWdCTyxZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQVVDLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdEZsYWdzLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFVudHlwZWRGb3JtQ29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGlzVHlwZW9mIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyByZXF1aXJlZEZhaWxlZCB9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgUG9Mb29rdXBBZHZhbmNlZEZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtYWR2YW5jZWQtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cENvbHVtbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cExpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBNb2RhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWxvb2t1cC1tb2RhbC5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIHV0aWxpemFkbyBwYXJhIGFicmlyIHVtYSBqYW5lbGEgZGUgYnVzY2EgY29tIHVtYSB0YWJlbGEgcXVlIGxpc3RhIGRhZG9zIGRlIHVtIHNlcnZpw6dvLiBOZXN0YSBqYW5lbGEgw6kgcG9zc8OtdmVsIGJ1c2NhciBlXG4gKiBzZWxlY2lvbmFyIHVtIG91IG1haXMgcmVnaXN0cm9zIHF1ZSBzZXLDo28gZW52aWFkb3MgcGFyYSBvIGNhbXBvLiBPIGBwby1sb29rdXBgIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gZGlnaXRlIHVtIHZhbG9yIGUgcHJlc3Npb25lIGEgdGVjbGEgKlRBQiogcGFyYVxuICogYnVzY2FyIHVtIHJlZ2lzdHJvLlxuICpcbiAqID4gQ2FzbyBvIGNhbXBvIHNlamEgaW5pY2lhZG8gb3UgcHJlZW5jaGlkbyBjb20gdW0gdmFsb3IgaW5leGlzdGVudGUgbmEgYnVzY2EsIG8gbWVzbW8gc2Vyw6EgbGltcGFkby5cbiAqIE5vIHNlZ3VuZG8gY2FzbyBvY29ycmVyw6EgYXDDs3MgZXN0ZSBwZXJkZXIgbyBmb2NvOyBhbWJvcyBvcyBjYXNvcyBvIGNhbXBvIGZpY2Fyw6EgaW52w6FsaWRvIHF1YW5kbyByZXF1ZXJpZG8uXG4gKlxuICogPiBFbnF1YW50byBvIGNvbXBvbmVudGUgcmVhbGl6YSBhIHJlcXVpc2nDp8OjbyBhbyBzZXJ2aWRvciwgbyBjb21wb25lbnRlIGZpY2Fyw6EgZGVzYWJpbGl0YWRvIGUgY29tIG8gc3RhdHVzIGludGVybm8gZG9cbiAqIFttb2RlbG9dKGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9mb3JtLXZhbGlkYXRpb24jY3JlYXRpbmctYXN5bmNocm9ub3VzLXZhbGlkYXRvcnMpIGNvbW8gYHBlbmRpbmdgLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSBuw6NvIMOpIHJlY29tZW5kYWRvIHF1YW5kbyBhIGJ1c2NhIGRvcyBkYWRvcyBwb3NzdWlyIHBvdWNhcyBpbmZvcm1hw6fDtWVzLCBwYXJhIGlzc28gdXRpbGl6ZSBvdXRyb3MgY29tcG9uZW50ZXMgY29tbyBvXG4gKiBgcG8tc2VsZWN0YCBvdSBvIGBwby1jb21ib2AuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTG9va3VwQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmFsaWRhdG9yLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1mb2N1cycpIEBJbnB1dEJvb2xlYW4oKSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTGFiZWwgZG8gY2FtcG8uXG4gICAqXG4gICAqID4gUXVhbmRvIHV0aWxpemFyIGVzdGEgcHJvcHJpZWRhZGUgbyBzZXUgdmFsb3Igc2Vyw6EgdXRpbGl6YWRvIGNvbW8gdMOtdHVsbyBkYSBtb2RhbCBkbyBjb21wb25lbnRlIGNhc28gbsOjbyB0ZW5oYVxuICAgKiBzaWRvIGRlZmluaWRvIHVtIGBtb2RhbFRpdGxlYCBuYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AuXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1sb29rdXBgLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0xvb2t1cExpdGVyYWxzID0ge1xuICAgKiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCcsXG4gICAqICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdDYW5jZWwnLFxuICAgKiAgICBtb2RhbFBsYWNlaG9sZGVyOiAnU2VhcmNoIFZhbHVlJyxcbiAgICogICAgbW9kYWxUYWJsZU5vQ29sdW1uczogJ05vIGNvbHVtbnMnLFxuICAgKiAgICBtb2RhbFRhYmxlTm9EYXRhOiAnTm8gZGF0YScsXG4gICAqICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogJ0xvYWRpbmcgZGF0YScsXG4gICAqICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6ICdMb2FkIG1vcmUnLFxuICAgKiAgICBtb2RhbFRpdGxlOiAnU2VsZWN0IGEgdXNlcicsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdGVyJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnUmV0dXJuJyxcbiAgICogICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ1ByZXNlbnRpbmcgcmVzdWx0cyBmaWx0ZXJlZCBieTonXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscyA9IHtcbiAgICogICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1sb29rdXBcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLWxvb2t1cD5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgbGl0ZXJhbHM/OiBQb0xvb2t1cExpdGVyYWxzO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBkbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBNZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBvIGNhbXBvIG7Do28gZXN0aXZlciBwcmVlbmNoaWRvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqIE5vbWUgZSBJZCBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIHZhbG9yIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IEF0ZW7Dp8OjbzogQ2FzbyBuw6NvIHNlamEgcGFzc2FkYSBvdSB0ZW5oYSBvIGNvbnRlw7pkbyBpbmNvcnJldG8sIG7Do28gaXLDoSBhdHVhbGl6YXIgbyBtb2RlbCBkbyBmb3JtdWzDoXJpby5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIGZpZWxkVmFsdWU6IHN0cmluZztcblxuICAvKiogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wbyBlIGNvbW8gZmlsdHJvIGRlbnRybyBkYSBqYW5lbGEuICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWU7XG4gICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbdGhpcy5maWVsZExhYmVsXTtcbiAgfVxuXG4gIGdldCBmaWVsZExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZExhYmVsO1xuICB9XG5cbiAgLyoqIFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gY29tbyBwYXLDom1ldHJvIHBhcmEgYSBVUkwgb3UgYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9Mb29rdXBGaWx0ZXJgLiAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXBhcmFtcycpIGZpbHRlclBhcmFtcz86IGFueTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZG8gY2FtcG8uXG4gICAqXG4gICAqIFJlY2ViZSB1bWEgZnVuw6fDo28gcXVlIGRldmUgcmV0b3JuYXIgdW1hICpzdHJpbmcqIGNvbSBvL29zIHZhbG9yZXMgZG8gb2JqZXRvIGZvcm1hdGFkb3MgcGFyYSBleGliacOnw6NvLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGZpZWxkRm9ybWF0KG9iaikge1xuICAgKiAgIHJldHVybiBgJHtvYmouaWR9IC0gJHtvYmoubmFtZX1gO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc29icmVww7VlIG8gdmFsb3IgZGEgcHJvcHJpZWRhZGUgYHAtZmllbGQtbGFiZWxgIG5hIGRlc2NyacOnw6NvIGRvIGNhbXBvLlxuICAgKlxuICAgKiBQb2RlLXNlIGluZm9ybWFyIHVtYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRlc2VqYSBleGliaXIgY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wbywgUG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiA8cG8tbG9va3VwXG4gICAqICAuLi5cbiAgICogIFtwLWZpZWxkLWZvcm1hdF09XCJbJ2lkJywnbmlja25hbWUnXVwiXG4gICAqICAuLi5cbiAgICogPlxuICAgKlxuICAgKiBPYmpldG8gcmV0b3JuYWRvOlxuICAgKiAgIHtcbiAgICogICAgICBpZDoxMjMsXG4gICAqICAgICAgbmFtZTogJ0tha2Fyb3RvJyxcbiAgICogICAgICBuaWNrbmFtZTogJ0dva3UnLFxuICAgKiAgIH1cbiAgICogQXByZXNlbnRhw6fDo28gbm8gY2FtcG86IDEyMyAtIEdva3VcbiAgICogYGBgXG4gICAqXG4gICAqID4gU2Vyw6EgdXRpbGl6YWRvIGAgLSBgIGNvbW8gc2VwYXJhZG9yLlxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLWZvcm1hdCcpIGZpZWxkRm9ybWF0PzogKCh2YWx1ZSkgPT4gc3RyaW5nKSB8IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIExpc3RhIGRhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICogRXNzYSBwcm9wcmllZGFkZSBkZXZlIHJlY2ViZXIgdW0gYXJyYXkgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgUG9Mb29rdXBDb2x1bW4uXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIGNvbHVtbnM/OiBBcnJheTxQb0xvb2t1cENvbHVtbj47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBPIGNhbXBvIGNvbnRlciBgcC1yZXF1aXJlZGA7XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9uYWwnKSBvcHRpb25hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBvYmpldG9zIGRvcyBjYW1wb3MgcXVlIHNlcsOjbyBjcmlhZG9zIG5hIGJ1c2NhIGF2YW7Dp2FkYS5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIG9iamV0byBvdSBlbnTDo28gZWxlIGVzdGVqYSBlbSBicmFuY28gbyBsaW5rIGRlIGJ1c2NhIGF2YW7Dp2FkYSBmaWNhcsOhIGVzY29uZGlkby5cbiAgICpcbiAgICogRXhlbXBsbyBkZSBVUkwgY29tIGJ1c2NhIGF2YW7Dp2FkYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmbmFtZT1Ub255JTIwU3Rhcmsmbmlja25hbWU9SG9tZW0lMjBkZSUyMEZlcnJvXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIGFsZ3VtIHBhcsOibWV0cm8gc2VqYSB1bWEgbGlzdGEsIGEgY29uY2F0ZW5hw6fDo28gw6kgZmVpdGEgdXRpbGl6YW5kbyB2w61yZ3VsYS5cbiAgICogRXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmbmFtZT1Ub255JTIwU3RhcmssUGV0ZXIlMjBQYXJrZXIsR29oYW5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYWR2YW5jZWQtZmlsdGVycycpIGFkdmFuY2VkRmlsdGVyczogQXJyYXk8UG9Mb29rdXBBZHZhbmNlZEZpbHRlcj47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBhIHRhYmVsYSBleGliaWRhIG5vIHJldG9ybm8gZGEgY29uc3VsdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1pbmZpbml0ZS1zY3JvbGwnKSBASW5wdXRCb29sZWFuKCkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXhpYmUgdW0gw61jb25lIHF1ZSBwZXJtaXRlIGxpbXBhciBvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtY2xlYW4nKSBASW5wdXRCb29sZWFuKCkgY2xlYW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGEgc2VsZcOnw6NvIGRlIG3Dumx0aXBsb3MgaXRlbnMuXG4gICAqXG4gICAqID4gUXVhbmRvIGhhYmlsaXRhZG8gbyB2YWxvciBkbyBjYW1wbyBwYXNzYXLDoSBhIHNlciB1bWEgbGlzdGEgZGUgdmFsb3JlcywgcG9yIGV4ZW1wbG86IGBbIDEyMzQ1LCA2Nzg5MCBdYFxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbXVsdGlwbGUnKSBASW5wdXRCb29sZWFuKCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIGEgYWx0dXJhIGRvIGNvbXBvbmVudGUgc2Vyw6EgYXV0byBhanVzdMOhdmVsLCBwb3NzdWluZG8gdW1hIGFsdHVyYSBtaW5pbWEgcG9yw6ltIGEgYWx0dXJhIG3DoXhpbWEgc2Vyw6EgZGUgYWNvcmRvXG4gICAqIGNvbSBvIG7Dum1lcm8gZGUgaXRlbnMgc2VsZWNpb25hZG9zIGUgYSBleHRlbnPDo28gZG9zIG1lc21vcywgbWFudGVuZG8tb3Mgc2VtcHJlIHZpc8OtdmVpcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8taGVpZ2h0JykgQElucHV0Qm9vbGVhbigpIGF1dG9IZWlnaHQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bSBlcnJvIG5hIHJlcXVpc2nDp8OjbyBkZSBidXNjYSBkbyBpdGVtLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGRlIGVycm8gcmV0b3JuYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lcnJvcicpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bWEgc2VsZcOnw6NvLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGNvbSBvIHZhbG9yIHNlbGVjaW9uYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zZWxlY3RlZCcpIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqICBFdmVudG8gcXVlIHNlcsOhIGRpc3BhcmFkbyBhbyBhbHRlcmFyIG8gbW9kZWwuXG4gICAqICBQb3IgcGFyw6JtZXRybyBzZXLDoSBwYXNzYWRvIG8gbm92byB2YWxvci5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZmVjaGFyIG8gcG9wb3ZlciBkbyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzIGFww7NzIGFsdGVyYXIgYXMgY29sdW5hcyB2aXPDrXZlaXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIHZpc8OtdmVpcyBhdHVhbGl6YWRhcy5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zJykgY2hhbmdlVmlzaWJsZUNvbHVtbnMgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PHN0cmluZz4+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIHJlc3RhdXJhciBwYWRyw6NvIG5vIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIGNvbmZpZ3VyYWRhcyBpbmljaWFsbWVudGUuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtcmVzdG9yZS1jb2x1bW4tbWFuYWdlcicpIGNvbHVtblJlc3RvcmVNYW5hZ2VyID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTdHJpbmc+PigpO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gIHByb3RlY3RlZCBnZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGtleXNEZXNjcmlwdGlvbjogQXJyYXk8YW55PjtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIHZhbHVlVG9Nb2RlbDtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlVG9Nb2RlbCA9IG51bGw7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmc7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhdXRvSGVpZ2h0SW5pdGlhbFZhbHVlOiBib29sZWFuO1xuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuXG4gIHByaXZhdGUgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcblxuICAvKipcbiAgICogU2VydmnDp28gcmVzcG9uc8OhdmVsIHBvciBidXNjYXIgb3MgZGFkb3MgZGEgdGFiZWxhIG5hIGphbmVsYS4gUG9kZSBzZXIgaW5mb3JtYWRvIHVtIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRlIGEgaW50ZXJmYWNlXG4gICAqIGBQb0xvb2t1cEZpbHRlcmAgb3UgdW1hIFVSTC5cbiAgICpcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHVtIHNlcnZpw6dvLCBzZXLDoSBjb25jYXRlbmFkYSBuZXN0YSBVUkwgbyB2YWxvciBxdWUgZGVzZWphLXNlIGZpbHRyYXIsIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gdXRpbGl6YXIgb3JkZW5hw6fDo28sIGEgY29sdW5hIG9yZGVuYWRhIHNlcsOhIGVudmlhZGEgYXRyYXbDqXMgZG8gcGFyw6JtZXRybyBgb3JkZXJgLCBwb3IgZXhlbXBsbzpcbiAgICogLSBDb2x1bmEgZGVjcmVzY2VudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXImb3JkZXI9LW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIC0gQ29sdW5hIGFzY2VuZGVudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXImb3JkZXI9bmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogU2UgZm9yIGRlZmluaWRvIGEgcHJvcHJpZWRhZGUgYHAtZmlsdGVyLXBhcmFtc2AsIG8gbWVzbW8gdGFtYsOpbSBzZXLDoSBjb25jYXRlbmFkby4gUG9yIGV4ZW1wbG8sIHBhcmEgb1xuICAgKiBwYXLDom1ldHJvIGB7IGFnZTogMjMgfWAgYSBVUkwgZmljYXJpYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmYWdlPTIzJmZpbHRlcj1QZXRlclxuICAgKiBgYGBcbiAgICpcbiAgICogQW8gaW5pY2lhciBvIGNhbXBvIGNvbSB2YWxvciwgb3MgcmVnaXN0cm9zIHNlcsOjbyBidXNjYWRvcyBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIG1vZGVsID0gMTIzNDtcbiAgICpcbiAgICogR0VUIHVybC8xMjM0XG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIGVzdGl2ZXIgY29tIG3Dumx0aXBsYSBzZWxlw6fDo28gaGFiaWxpdGFkYTpcbiAgICogYGBgXG4gICAqIG1vZGVsID0gWzEyMzQsIDU2NzhdXG4gICAqXG4gICAqIEdFVCB1cmw/JHtmaWVsZFZhbHVlfT0xMjM0LDU2NzhcbiAgICogYGBgXG4gICAqXG4gICAqID4gRXN0YSBVUkwgZGV2ZSByZXRvcm5hciBlIHJlY2ViZXIgb3MgZGFkb3Mgbm8gcGFkcsOjbyBkZSBbQVBJIGRvIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpIGUgdXRpbGl6YSBvcyB2YWxvcmVzXG4gICAqIGRlZmluaWRvcyBuYXMgcHJvcHJpZWRhZGVzIGBwLWZpZWxkLWxhYmVsYCBlIGBwLWZpZWxkLXZhbHVlYCBwYXJhIGEgY29uc3RydcOnw6NvIGRvIGBwby1sb29rdXBgLlxuICAgKlxuICAgKiBDYXNvIG8gdXN1w6FyaW8gZGlnaXRlIHVtIHZhbG9yIGUgcHJlc3Npb25lIGEgdGVjbGEgKlRBQiogcGFyYSByZWFsaXphciBhIGJ1c2NhIGRlIHVtIHJlZ2lzdHJvIGVzcGVjw61maWNvLCBvIHZhbG9yIHF1ZSBzZVxuICAgKiBkZXNlamEgZmlsdHJhciBzZXLDoSBjb2RpZmljYWRvIHV0aWxpemFuZG8gYSBmdW7Dp8OjbyBbZW5jb2RlVVJJQ29tcG9uZW50XShodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWVuY29kZXVyaWNvbXBvbmVudC11cmljb21wb25lbnQpXG4gICAqIGUgY29uY2F0ZW5hZG8gbmEgVVJMIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsL3ZhbG9yJTIwcXVlJTIwc2UlMjBkZXNlamElMjBmaWx0cmFyXG4gICAqIGBgYFxuICAgKlxuICAgKiA+IFF1YW5kbyBpbmZvcm1hZG8gdW0gc2VydmnDp28gcXVlIGltcGxlbWVudGUgYSBpbnRlcmZhY2UgYFBvTG9va3VwRmlsdGVyYCBvIHRyYXRhbWVudG8gZGUgZW5jb2RpbmcgZG8gdmFsb3IgYSBzZXIgZmlsdHJhZG8gZmljYXLDoSBhIGNhcmdvIGRvIGRlc2Vudm9sdmVkb3IuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBzZXQgZmlsdGVyU2VydmljZShmaWx0ZXJTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlciB8IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UgPSBmaWx0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICB9XG5cbiAgZ2V0IGZpbHRlclNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIMOpIGRlc2NvbnNpZGVyYWRhIHF1YW5kbyBvIGlucHV0IGVzdMOhIGRlc2FiaWxpdGFkbyBgKHAtZGlzYWJsZWQpYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLnZhbHVlVG9Nb2RlbCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDqSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gPGFueT5kaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHB1YmxpYyBwb0xvb2t1cE1vZGFsU2VydmljZTogUG9Mb29rdXBNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmdldFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW4oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldENvbnRyb2woKTtcbiAgfVxuXG4gIGNsZWFuTW9kZWwoKSB7XG4gICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29sdW1ucz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSBjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZT8uc2V0Q2hhbmdlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm11bHRpcGxlICYmIGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuZmlsdGVyU2VydmljZSwgdGhpcy5maWVsZFZhbHVlLCB0aGlzLm11bHRpcGxlKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uVG91Y2hlZChmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZ1bmM7XG4gIH1cblxuICAvLyBTZWxlY2lvbmEgbyB2YWxvciBkbyBtb2RlbC5cbiAgc2VsZWN0VmFsdWUodmFsdWVTZWxlY3RlZDogYW55KSB7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSB2YWx1ZVNlbGVjdGVkO1xuICAgIHRoaXMubXVsdGlwbGVcbiAgICAgID8gdGhpcy5jYWxsT25DaGFuZ2UodGhpcy52YWx1ZVRvTW9kZWwpXG4gICAgICA6IHRoaXMudmFsdWVUb01vZGVsXG4gICAgICA/IHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMudmFsdWVUb01vZGVsW3RoaXMuZmllbGRWYWx1ZV0pXG4gICAgICA6IHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlU2VsZWN0ZWQpO1xuICB9XG5cbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBRdWFuZG8gbyBpbnB1dCBuw6NvIHBvc3N1aSB1bSBmb3JtdWzDoXJpbywgZW50w6NvIGVzdGEgZnVuw6fDo28gbsOjbyDDqSByZWdpc3RyYWRhLlxuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vbGRWYWx1ZVRvTW9kZWwgIT09IHRoaXMudmFsdWVUb01vZGVsKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBcm1hemVuYXIgbyB2YWxvciBhbnRpZ28gZG8gbW9kZWxcbiAgICB0aGlzLm9sZFZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsO1xuICB9XG5cbiAgc2VhcmNoQnlJZCh2YWx1ZSkge1xuICAgIGxldCBjaGVja2VkVmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY2hlY2tlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY2hlY2tlZFZhbHVlID0gY2hlY2tlZFZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tlZFZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3Qgb2xkRGlzYWJsZSA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAvLyA6VE9ETzogUmV0aXJhciBubyBmdXR1cm8gcG9pcyBlc3NlIHNldFRpbWVvdXQgZm9pIGZlaXRvXG4gICAgICAgIC8vIHBvaXMgcXVhbmRvIG8gY2FtcG8gw6kgYWNpb25hZG8gcGVsb3MgbcOpdG9kb3Mgc2V0VmFsdWUgb3UgcGF0Y2hWYWx1ZVxuICAgICAgICAvLyBhIG11ZGFuw6dhIG7Do28gw6kgZGV0ZWN0YWRhXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250cm9sLm1hcmtBc1BlbmRpbmcoKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCB0aGlzLmZpbHRlclBhcmFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG9sZERpc2FibGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudD8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50KSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2NsYWltZXJzKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsKHRoaXMubXVsdGlwbGUgPyBlbGVtZW50IDogW2VsZW1lbnRdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZT8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpKSB7XG4gICAgICAvLyBFc3RhIGNvbmRpw6fDo28gw6kgZXhlY3V0YWRhIHNvbWVudGUgcXVhbmRvIMOpIHBhc3NhZG8gbyBJRCBwYXJhIHJlYWxpemFyIGEgYnVzY2EgcGVsbyBJRC5cbiAgICAgIHRoaXMuc2VhcmNoQnlJZCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW5WaWV3VmFsdWUoKSB7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVycyhbXSk7XG4gICAgdGhpcy5zZXRWaWV3VmFsdWUoJycsIHt9KTtcbiAgICB0aGlzLm9sZFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGxhYmVsIGRvIGNhbXBvLlxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy5rZXlzRGVzY3JpcHRpb24ubWFwKGNvbHVtbiA9PiB2YWx1ZVtjb2x1bW5dKS5qb2luKCcgLSAnKSA6ICcnO1xuICB9XG5cbiAgLy8gQ2hhbWEgbyBtw6l0b2RvIHdyaXRlVmFsdWUgZSBwcmVlbmNoZSBvIG1vZGVsLlxuICBwcm90ZWN0ZWQgc2VsZWN0TW9kZWwob3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbLi4ub3B0aW9uc107XG5cbiAgICAgIGNvbnN0IG5ld01vZGVsID0gdGhpcy5tdWx0aXBsZSA/IG9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSkgOiBvcHRpb25zWzBdO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZShuZXdNb2RlbCk7XG5cbiAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gb3B0aW9uc1swXVt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmdldEZvcm1hdHRlZExhYmVsKG9wdGlvbnNbMF0pLCBvcHRpb25zWzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlcnZpY2Uoc2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Mb29rdXBGaWx0ZXJTZXJ2aWNlPnNlcnZpY2U7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyhzZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbCgpIHtcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgSW5qZWN0RmxhZ3MuU2VsZik7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29sdW1uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkTGFiZWwpIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW107XG5cbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gdGhpcy5jb2x1bW5zLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuZmllbGRMYWJlbCkubWFwKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9wZXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXRyaWJ1aSB1bSBvdSBtYWlzIHZhbG9yZXMgYW8gY2FtcG8uXG4gIGFic3RyYWN0IHNldFZpZXdWYWx1ZSh2YWx1ZTogYW55LCBvYmplY3Q6IGFueSk6IHZvaWQ7XG5cbiAgLy8gTcOpdG9kbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gcGFyYSBhYnJpciBvIGxvb2t1cC5cbiAgYWJzdHJhY3Qgb3Blbkxvb2t1cCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHNldERpc2NsYWltZXJzKGEpO1xuICBhYnN0cmFjdCB1cGRhdGVWaXNpYmxlSXRlbXMoKTtcbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { Component, ElementRef, forwardRef, ViewChild, ChangeDetectionStrategy } from '@angular/core';
2
2
  import { NgControl, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { uuid } from '../../../utils/util';
3
4
  import { PoLookupBaseComponent } from './po-lookup-base.component';
4
5
  import { PoLookupFilterService } from './services/po-lookup-filter.service';
5
6
  import { PoLookupModalService } from './services/po-lookup-modal.service';
@@ -35,8 +36,7 @@ function PoLookupComponent_div_1_Template(rf, ctx) { if (rf & 1) {
35
36
  const _r3 = i0.ɵɵreference(2);
36
37
  const ctx_r0 = i0.ɵɵnextContext();
37
38
  i0.ɵɵadvance(1);
38
- i0.ɵɵproperty("ngClass", ctx_r0.clean && _r3.value ? "po-input-double-icon-right" : "po-input-icon-right")("autocomplete", ctx_r0.autocomplete)("disabled", ctx_r0.disabled)("placeholder", ctx_r0.disabled ? "" : ctx_r0.placeholder)("required", ctx_r0.required);
39
- i0.ɵɵattribute("aria-label", ctx_r0.label);
39
+ i0.ɵɵproperty("id", ctx_r0.id)("ngClass", ctx_r0.clean && _r3.value ? "po-input-double-icon-right" : "po-input-icon-right")("autocomplete", ctx_r0.autocomplete)("disabled", ctx_r0.disabled)("placeholder", ctx_r0.disabled ? "" : ctx_r0.placeholder)("required", ctx_r0.required);
40
40
  i0.ɵɵadvance(3);
41
41
  i0.ɵɵproperty("ngIf", ctx_r0.clean && !ctx_r0.disabled);
42
42
  i0.ɵɵadvance(1);
@@ -164,14 +164,14 @@ const providers = [
164
164
  */
165
165
  export class PoLookupComponent extends PoLookupBaseComponent {
166
166
  constructor(renderer, poLookupFilterService, poLookupModalService, cd, injector) {
167
- super(poLookupFilterService, injector);
167
+ super(poLookupFilterService, injector, poLookupModalService);
168
168
  this.renderer = renderer;
169
- this.poLookupModalService = poLookupModalService;
170
169
  this.cd = cd;
171
170
  this.initialized = false;
172
171
  this.visibleElement = false;
173
172
  this.disclaimers = [];
174
173
  this.visibleDisclaimers = [];
174
+ this.id = `po-lookup[${uuid()}]`;
175
175
  this.isCalculateVisibleItems = true;
176
176
  }
177
177
  get autocomplete() {
@@ -411,7 +411,7 @@ PoLookupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoLookupC
411
411
  } if (rf & 2) {
412
412
  let _t;
413
413
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputEl = _t.first);
414
- } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 5, consts: [[3, "p-label", "p-help", "p-optional"], ["class", "po-field-container-content", 4, "ngIf", "ngIfElse"], ["disclaimersTemplate", ""], [1, "po-field-container-content"], ["type", "text", 1, "po-input", 3, "ngClass", "autocomplete", "disabled", "placeholder", "required", "blur"], ["inp", ""], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], ["tabindex", "-1", 1, "po-icon", "po-field-icon", "po-icon-search", "po-icon-input", 3, "click", "focus"], ["iconLookup", ""], [1, "po-icon-input", 3, "p-element-ref", "p-change-event"], [1, "po-input", "po-input-icon-right", "po-lookup-input", "po-icon-input", 3, "tabindex"], ["class", "po-lookup-input-placeholder", 4, "ngIf"], ["class", "po-lookup-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "po-clickable", "p-close-action", 4, "ngFor", "ngForOf"], [1, "po-lookup-input-placeholder"], [1, "po-lookup-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "p-close-action"]], template: function PoLookupComponent_Template(rf, ctx) { if (rf & 1) {
414
+ } }, features: [i0.ɵɵProvidersFeature(providers), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 9, consts: [[3, "p-disabled", "p-help", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], ["class", "po-field-container-content", 4, "ngIf", "ngIfElse"], ["disclaimersTemplate", ""], [1, "po-field-container-content"], ["type", "text", 1, "po-input", 3, "id", "ngClass", "autocomplete", "disabled", "placeholder", "required", "blur"], ["inp", ""], [1, "po-field-icon-container-right"], ["class", "po-icon-input", 3, "p-element-ref", "p-change-event", 4, "ngIf"], ["tabindex", "-1", 1, "po-icon", "po-field-icon", "po-icon-search", "po-icon-input", 3, "click", "focus"], ["iconLookup", ""], [1, "po-icon-input", 3, "p-element-ref", "p-change-event"], [1, "po-input", "po-input-icon-right", "po-lookup-input", "po-icon-input", 3, "tabindex"], ["class", "po-lookup-input-placeholder", 4, "ngIf"], ["class", "po-lookup-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "po-clickable", "p-close-action", 4, "ngFor", "ngForOf"], [1, "po-lookup-input-placeholder"], [1, "po-lookup-input-disclaimer", 3, "p-label", "p-value", "p-hide-close", "p-close-action"]], template: function PoLookupComponent_Template(rf, ctx) { if (rf & 1) {
415
415
  i0.ɵɵelementStart(0, "po-field-container", 0);
416
416
  i0.ɵɵtemplate(1, PoLookupComponent_div_1_Template, 7, 11, "div", 1);
417
417
  i0.ɵɵelement(2, "po-field-container-bottom");
@@ -419,15 +419,15 @@ PoLookupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoLookupC
419
419
  i0.ɵɵtemplate(3, PoLookupComponent_ng_template_3_Template, 8, 13, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
420
420
  } if (rf & 2) {
421
421
  const _r1 = i0.ɵɵreference(4);
422
- i0.ɵɵproperty("p-label", ctx.label)("p-help", ctx.help)("p-optional", !ctx.required && ctx.optional);
422
+ i0.ɵɵproperty("p-disabled", ctx.disabled)("p-help", ctx.help)("p-id", ctx.id)("p-label", ctx.label)("p-optional", ctx.optional)("p-required", ctx.required)("p-show-required", ctx.showRequired);
423
423
  i0.ɵɵadvance(1);
424
424
  i0.ɵɵproperty("ngIf", !ctx.disclaimers.length)("ngIfElse", _r1);
425
425
  } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i4.PoCleanComponent, i5.PoDisclaimerComponent, i6.PoFieldContainerBottomComponent, i7.PoFieldContainerComponent], encapsulation: 2, changeDetection: 0 });
426
426
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLookupComponent, [{
427
427
  type: Component,
428
- args: [{ selector: 'po-lookup', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container [p-label]=\"label\" [p-help]=\"help\" [p-optional]=\"!required && optional\">\n <div class=\"po-field-container-content\" *ngIf=\"!disclaimers.length; else disclaimersTemplate\">\n <input\n #inp\n class=\"po-input\"\n type=\"text\"\n [attr.aria-label]=\"label\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [required]=\"required\"\n (blur)=\"searchEvent()\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"cleanModel()\"\n >\n </po-clean>\n\n <span\n #iconLookup\n class=\"po-icon po-field-icon po-icon-search po-icon-input\"\n tabindex=\"-1\"\n [class.po-field-icon]=\"!disabled\"\n [class.po-field-icon-disabled]=\"disabled\"\n (click)=\"openLookup()\"\n (focus)=\"inp.focus()\"\n >\n </span>\n </div>\n </div>\n <po-field-container-bottom></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #disclaimersTemplate>\n <div class=\"po-field-container-content\">\n <div\n #inp\n [tabindex]=\"disabled ? -1 : 0\"\n class=\"po-input po-input-icon-right po-lookup-input po-icon-input\"\n [class.po-lookup-input-auto]=\"autoHeight\"\n [class.po-lookup-input-static]=\"!autoHeight\"\n [class.po-lookup-input-disabled]=\"disabled\"\n >\n <span *ngIf=\"placeholder && !disclaimers?.length\" class=\"po-lookup-input-placeholder\">\n {{ placeholder }}\n </span>\n\n <po-disclaimer\n *ngFor=\"let disclaimer of visibleDisclaimers\"\n class=\"po-lookup-input-disclaimer\"\n [p-label]=\"disclaimer.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || disabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !disabled\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n >\n </po-disclaimer>\n </div>\n\n <div class=\"po-field-icon-container-right\">\n <span\n #iconLookup\n class=\"po-icon po-field-icon po-icon-search po-icon-input\"\n tabindex=\"-1\"\n [class.po-field-icon]=\"!disabled\"\n [class.po-field-icon-disabled]=\"disabled\"\n (click)=\"openLookup()\"\n (focus)=\"inp.focus()\"\n >\n </span>\n </div>\n </div>\n</ng-template>\n" }]
428
+ args: [{ selector: 'po-lookup', changeDetection: ChangeDetectionStrategy.OnPush, providers: providers, template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-help]=\"help\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\" *ngIf=\"!disclaimers.length; else disclaimersTemplate\">\n <input\n #inp\n class=\"po-input\"\n [id]=\"id\"\n type=\"text\"\n [ngClass]=\"clean && inp.value ? 'po-input-double-icon-right' : 'po-input-icon-right'\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [placeholder]=\"disabled ? '' : placeholder\"\n [required]=\"required\"\n (blur)=\"searchEvent()\"\n />\n\n <div class=\"po-field-icon-container-right\">\n <po-clean\n class=\"po-icon-input\"\n *ngIf=\"clean && !disabled\"\n [p-element-ref]=\"inputEl\"\n (p-change-event)=\"cleanModel()\"\n >\n </po-clean>\n\n <span\n #iconLookup\n class=\"po-icon po-field-icon po-icon-search po-icon-input\"\n tabindex=\"-1\"\n [class.po-field-icon]=\"!disabled\"\n [class.po-field-icon-disabled]=\"disabled\"\n (click)=\"openLookup()\"\n (focus)=\"inp.focus()\"\n >\n </span>\n </div>\n </div>\n <po-field-container-bottom></po-field-container-bottom>\n</po-field-container>\n\n<ng-template #disclaimersTemplate>\n <div class=\"po-field-container-content\">\n <div\n #inp\n [tabindex]=\"disabled ? -1 : 0\"\n class=\"po-input po-input-icon-right po-lookup-input po-icon-input\"\n [class.po-lookup-input-auto]=\"autoHeight\"\n [class.po-lookup-input-static]=\"!autoHeight\"\n [class.po-lookup-input-disabled]=\"disabled\"\n >\n <span *ngIf=\"placeholder && !disclaimers?.length\" class=\"po-lookup-input-placeholder\">\n {{ placeholder }}\n </span>\n\n <po-disclaimer\n *ngFor=\"let disclaimer of visibleDisclaimers\"\n class=\"po-lookup-input-disclaimer\"\n [p-label]=\"disclaimer.label\"\n [p-value]=\"disclaimer.value\"\n [p-hide-close]=\"disclaimer.value === '' || disabled\"\n [class.po-clickable]=\"disclaimer.value === '' && !disabled\"\n (p-close-action)=\"closeDisclaimer(disclaimer.value)\"\n >\n </po-disclaimer>\n </div>\n\n <div class=\"po-field-icon-container-right\">\n <span\n #iconLookup\n class=\"po-icon po-field-icon po-icon-search po-icon-input\"\n tabindex=\"-1\"\n [class.po-field-icon]=\"!disabled\"\n [class.po-field-icon-disabled]=\"disabled\"\n (click)=\"openLookup()\"\n (focus)=\"inp.focus()\"\n >\n </span>\n </div>\n </div>\n</ng-template>\n" }]
429
429
  }], function () { return [{ type: i0.Renderer2 }, { type: i1.PoLookupFilterService }, { type: i2.PoLookupModalService }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }]; }, { inputEl: [{
430
430
  type: ViewChild,
431
431
  args: ['inp', { read: ElementRef, static: false }]
432
432
  }] }); })();
433
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFLVixTQUFTLEVBQ1QsdUJBQXVCLEVBRXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7OztJQ0hwRSxvQ0FLQztJQURDLDhMQUFrQixlQUFBLG1CQUFZLENBQUEsSUFBQztJQUVqQyxpQkFBVzs7O0lBSFQsOENBQXlCOzs7O0lBbEIvQiw4QkFBOEYsa0JBQUE7SUFXMUYsMkpBQVEsZUFBQSxvQkFBYSxDQUFBLElBQUM7SUFWeEIsaUJBV0U7SUFFRiw4QkFBMkM7SUFDekMsa0ZBTVc7SUFFWCxrQ0FRQztJQUZDLDZKQUFTLGVBQUEsb0JBQVksQ0FBQSxJQUFDLDJJQUNiLGVBQUEsV0FBVyxDQUFBLElBREU7SUFHeEIsaUJBQU8sRUFBQSxFQUFBOzs7O0lBMUJQLGVBQXFGO0lBQXJGLDBHQUFxRixxQ0FBQSw2QkFBQSwwREFBQSw2QkFBQTtJQURyRiwwQ0FB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QUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUNsRSxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDbEUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztrRkE5U1UsaUJBQWlCO29FQUFqQixpQkFBaUI7K0JBQ0YsVUFBVTs7OzswQ0FIcEMsU0FBUztRQ3pHWCw2Q0FBMkY7UUFDekYsbUVBa0NNO1FBQ04sNENBQXVEO1FBQ3pELGlCQUFxQjtRQUVyQixvSEF1Q2M7OztRQTlFTSxtQ0FBaUIsb0JBQUEsNkNBQUE7UUFDTSxlQUEyQjtRQUEzQiw4Q0FBMkIsaUJBQUE7O3VGRDBHekQsaUJBQWlCO2NBTjdCLFNBQVM7MkJBQ0UsV0FBVyxtQkFFSix1QkFBdUIsQ0FBQyxNQUFNLGFBQy9DLFNBQVM7MExBRzhDLE9BQU87a0JBQTdELFNBQVM7bUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRG9DaGVjayxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvTG9va3VwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbG9va3VwLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTG9va3VwTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtbW9kYWwuc2VydmljZSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTG9va3VwRmlsdGVyU2VydmljZSxcbiAgUG9Mb29rdXBNb2RhbFNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0xvb2t1cENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb29rdXBDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICBwcm92aWRlOiBOZ0NvbnRyb2wsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb29rdXBDb21wb25lbnQpLFxuICAgIG11bHRpOiBmYWxzZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0xvb2t1cEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBRdWFuZG8gZXhpc3RlIG11aXRvcyBkYWRvcyBvIHBvLWxvb2t1cCBwb3IgcGFkcsOjbyB0cmF6IGFwZW5hcyAxMCBpdGVucyBuYSB0YWJlbGEgZSBvcyBkZW1haXMgc8OjbyBjYXJyZWdhZG9zIHBvciBkZW1hbmRhIGF0cmF2w6lzIGRvXG4gKiBib3TDo28gJ0NhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcycuIFBhcmEgcXVlIGZ1bmNpb25lIGNvcnJldGFtZW50ZSwgw6kgaW1wb3J0YW50ZSBxdWUgbyBzZXJ2acOnbyBzaWdhIG9cbiAqIFtHdWlhIGRlIGltcGxlbWVudGHDp8OjbyBkYXMgQVBJcyBUT1RWU10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKS5cbiAqXG4gKiBJbXBvcnRhbnRlOlxuICpcbiAqIC0gQ2FzbyBvIHBvLWxvb2t1cCBjb250ZW5oYSBvIFsobmdNb2RlbCldIHNlbSBvIGF0cmlidXRvIG5hbWUsIG9jb3JyZXLDoSB1bSBlcnJvIGRlIGFuZ3VsYXIuXG4gKiBFbnTDo28gc2Vyw6EgbmVjZXNzw6FyaW8gaW5mb3JtYXIgbyBhdHJpYnV0byBuYW1lIG91IG8gYXRyaWJ1dG8gW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiLlxuICogYGBgXG4gKiA8cG8tbG9va3VwXG4gKiAgIFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVcIlxuICogICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XG4gKiA8L3BvLWxvb2t1cD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxvb2t1cC1iYXNpY1wiIHRpdGxlPVwiUE8gTG9va3VwIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtYmFzaWMvc2FtcGxlLXBvLWxvb2t1cC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtYmFzaWMvc2FtcGxlLXBvLWxvb2t1cC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtbGFic1wiIHRpdGxlPVwiUE8gTG9va3VwIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1sYWJzL3NhbXBsZS1wby1sb29rdXAtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtbGFicy9zYW1wbGUtcG8tbG9va3VwLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLWhlcm9cIiB0aXRsZT1cIlBPIExvb2t1cCAtIEhlcm9cIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvL3NhbXBsZS1wby1sb29rdXAtaGVyby5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtaGVyby9zYW1wbGUtcG8tbG9va3VwLWhlcm8uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLWhlcm8tcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gTG9va3VwIC0gSGVybyBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtaGVyby1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1sb29rdXAtaGVyby1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLXN3LWZpbG1zXCIgdGl0bGU9XCJQTyBMb29rdXAgLSBTdGFyIFdhcnMgZmlsbXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy9zYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy9zYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtc3ctZmlsbXMvc2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLW11bHRpcGxlXCIgdGl0bGU9XCJQTyBMb29rdXAgLSBNdWx0aXBsZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlL3NhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlL3NhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1tdWx0aXBsZS9zYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1sb29rdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbG9va3VwLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyc1xufSlcbmV4cG9ydCBjbGFzcyBQb0xvb2t1cENvbXBvbmVudCBleHRlbmRzIFBvTG9va3VwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBEb0NoZWNrIHtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgdGltZW91dFJlc2l6ZTtcbiAgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcblxuICBkaXNjbGFpbWVycyA9IFtdO1xuICB2aXNpYmxlRGlzY2xhaW1lcnMgPSBbXTtcblxuICBwcml2YXRlIG1vZGFsU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaXNDYWxjdWxhdGVWaXNpYmxlSXRlbXM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGdldCBhdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9BdXRvY29tcGxldGUgPyAnb2ZmJyA6ICdvbic7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcG9Mb29rdXBGaWx0ZXJTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb0xvb2t1cE1vZGFsU2VydmljZTogUG9Mb29rdXBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge1xuICAgIHN1cGVyKHBvTG9va3VwRmlsdGVyU2VydmljZSwgaW5qZWN0b3IpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuaW5wdXRFbD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBkaXNjbGFpbWVycyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICgoaW5wdXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB8fCAoaW5wdXRXaWR0aCAmJiB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zKSkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy52aXNpYmxlRWxlbWVudCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2RhbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2RhbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvTG9va3VwQ29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb0xvb2t1cENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbG9va3VwOiBQb0xvb2t1cENvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNMb29rdXAoKSB7XG4gICAqICAgdGhpcy5sb29rdXAuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvcGVuTG9va3VwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQWxsb3dlZE9wZW5Nb2RhbCgpKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFkdmFuY2VkRmlsdGVycyxcbiAgICAgICAgc2VydmljZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICBsaXRlcmFscyxcbiAgICAgICAgaW5maW5pdGVTY3JvbGwsXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBmaWVsZExhYmVsLFxuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBjaGFuZ2VWaXNpYmxlQ29sdW1ucyxcbiAgICAgICAgY29sdW1uUmVzdG9yZU1hbmFnZXJcbiAgICAgIH0gPSB0aGlzO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5jaGVja1NlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZS5vcGVuTW9kYWwoe1xuICAgICAgICBhZHZhbmNlZEZpbHRlcnMsXG4gICAgICAgIHNlcnZpY2UsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFiZWwsXG4gICAgICAgIGxpdGVyYWxzLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgIGZpZWxkTGFiZWwsXG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGNoYW5nZVZpc2libGVDb2x1bW5zLFxuICAgICAgICBjb2x1bW5SZXN0b3JlTWFuYWdlclxuICAgICAgfSk7XG5cbiAgICAgIGlmICghdGhpcy5tb2RhbFN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLm1vZGFsU3Vic2NyaXB0aW9uID0gdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZS5zZWxlY3RWYWx1ZUV2ZW50LnN1YnNjcmliZShzZWxlY3RlZE9wdGlvbnMgPT4ge1xuICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMSB8fCB0aGlzLmRpc2NsYWltZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXNjbGFpbWVycyhzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsKHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrU2VsZWN0ZWRJdGVtcygpIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLmRpc2NsYWltZXJzLmxlbmd0aCAmJiB0aGlzLnZhbHVlVG9Nb2RlbD8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbeyB2YWx1ZTogdGhpcy52YWx1ZVRvTW9kZWxbMF0sIGxhYmVsOiB0aGlzLm9sZFZhbHVlLCAuLi50aGlzLnNlbGVjdGVkT3B0aW9uc1swXSB9XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZGlzY2xhaW1lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlVG9Nb2RlbDtcbiAgICB9XG4gIH1cblxuICBzZXREaXNjbGFpbWVycyhzZWxlY3RlZE9wdGlvbnM6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLmRpc2NsYWltZXJzID0gc2VsZWN0ZWRPcHRpb25zLm1hcChzZWxlY3RlZE9wdGlvbiA9PiAoe1xuICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0sXG4gICAgICBsYWJlbDogc2VsZWN0ZWRPcHRpb25bdGhpcy5maWVsZExhYmVsXSxcbiAgICAgIC4uLnNlbGVjdGVkT3B0aW9uXG4gICAgfSkpO1xuXG4gICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMgPSBbLi4udGhpcy5kaXNjbGFpbWVyc107XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldFZpZXdWYWx1ZSh2YWx1ZTogYW55LCBvYmplY3Q6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0RWwgJiYgdGhpcy5maWVsZEZvcm1hdCkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlV2lwb2llbGRGb3JtYXQob2JqZWN0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlVG9Nb2RlbCB8fCB0aGlzLnZhbHVlVG9Nb2RlbCA9PT0gMCA/IHZhbHVlIDogJyc7XG4gICAgfVxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRWaWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZWFyY2hFdmVudCgpIHtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZpZXdWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCkgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ5SWQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGlzY2xhaW1lcih2YWx1ZSkge1xuICAgIHRoaXMuZGlzY2xhaW1lcnMgPSB0aGlzLmRpc2NsYWltZXJzLmZpbHRlcihkaXNjbGFpbWVyID0+IGRpc2NsYWltZXIudmFsdWUgIT09IHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsLmZpbHRlcihtb2RlbCA9PiBtb2RlbCAhPT0gdmFsdWUpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbC5sZW5ndGggPyB0aGlzLnZhbHVlVG9Nb2RlbCA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuZGlzY2xhaW1lcnMgJiYgdGhpcy5kaXNjbGFpbWVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFtdLmNvbmNhdCh0aGlzLmRpc2NsYWltZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA0MDtcbiAgfVxuXG4gIGdldERpc2NsYWltZXJzV2lkdGgoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnMgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwby1kaXNjbGFpbWVyJyk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGlzY2xhaW1lcnMpLm1hcChkaXNjbGFpbWVyID0+IGRpc2NsYWltZXJbJ29mZnNldFdpZHRoJ10pO1xuICB9XG5cbiAgY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzV2lkdGggPSB0aGlzLmdldERpc2NsYWltZXJzV2lkdGgoKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5nZXRJbnB1dFdpZHRoKCk7XG4gICAgY29uc3QgZXh0cmFEaXNjbGFpbWVyU2l6ZSA9IDM4O1xuICAgIGNvbnN0IGRpc2NsYWltZXJzVmlzaWJsZSA9IGRpc2NsYWltZXJzV2lkdGhbMF07XG5cbiAgICBjb25zdCBuZXdEaXNjbGFpbWVycyA9IFtdO1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gdGhpcy5kaXNjbGFpbWVycztcblxuICAgIGlmIChpbnB1dFdpZHRoID4gMCkge1xuICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgZGlzY2xhaW1lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3VtICs9IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgIG5ld0Rpc2NsYWltZXJzLnB1c2goZGlzY2xhaW1lcnNbaV0pO1xuXG4gICAgICAgIGlmIChzdW0gPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgc3VtIC09IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNjbGFpbWVyc1Zpc2libGUgfHwgIWRpc2NsYWltZXJzLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSA9PT0gZGlzY2xhaW1lcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdW0gKyBleHRyYURpc2NsYWltZXJTaXplID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMiwgMik7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoICsgMSAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgbmV3RGlzY2xhaW1lcnMucHVzaCh7IHZhbHVlOiAnJywgbGFiZWw6IGxhYmVsIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMSwgMSk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICBuZXdEaXNjbGFpbWVycy5wdXNoKHsgdmFsdWU6ICcnLCBsYWJlbDogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFsuLi5uZXdEaXNjbGFpbWVyc107XG4gIH1cblxuICBwcml2YXRlIGlzQWxsb3dlZE9wZW5Nb2RhbCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgY29uc29sZS53YXJuKCdObyBzZXJ2aWNlIGluZm9ybWVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKHRoaXMuc2VydmljZSAmJiAhdGhpcy5kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEZpZWxkcyhvYmplY3RTZWxlY3RlZCwgcHJvcGVydGllcykge1xuICAgIGxldCBmb3JtYXRlZEZpZWxkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnRpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKG9iamVjdFNlbGVjdGVkICYmIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XSkge1xuICAgICAgICAgIGlmICghZm9ybWF0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IGZvcm1hdGVkRmllbGQgKyAnIC0gJyArIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvcm1hdGVkRmllbGQpIHtcbiAgICAgIGZvcm1hdGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0ZWRGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRWYWx1ZVdpcG9pZWxkRm9ybWF0KG9iamVjdFNlbGVjdGVkOiBhbnkpIHtcbiAgICBjb25zdCBpc0VtcHR5ID0gT2JqZWN0LmtleXMob2JqZWN0U2VsZWN0ZWQpLmxlbmd0aCA9PT0gMDtcbiAgICBsZXQgZmllbGRGb3JtYXRlZDtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5mb3JtYXRGaWVsZHMob2JqZWN0U2VsZWN0ZWQsIHRoaXMuZmllbGRGb3JtYXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5maWVsZEZvcm1hdChvYmplY3RTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbGRWYWx1ZSA9IGlzRW1wdHkgPyAnJyA6IGZpZWxkRm9ybWF0ZWQ7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBpc0VtcHR5ID8gJycgOiBmaWVsZEZvcm1hdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtbGFiZWxdPVwibGFiZWxcIiBbcC1oZWxwXT1cImhlbHBcIiBbcC1vcHRpb25hbF09XCIhcmVxdWlyZWQgJiYgb3B0aW9uYWxcIj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCIgKm5nSWY9XCIhZGlzY2xhaW1lcnMubGVuZ3RoOyBlbHNlIGRpc2NsYWltZXJzVGVtcGxhdGVcIj5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICBbbmdDbGFzc109XCJjbGVhbiAmJiBpbnAudmFsdWUgPyAncG8taW5wdXQtZG91YmxlLWljb24tcmlnaHQnIDogJ3BvLWlucHV0LWljb24tcmlnaHQnXCJcbiAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiZGlzYWJsZWQgPyAnJyA6IHBsYWNlaG9sZGVyXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAoYmx1cik9XCJzZWFyY2hFdmVudCgpXCJcbiAgICAvPlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8cG8tY2xlYW5cbiAgICAgICAgY2xhc3M9XCJwby1pY29uLWlucHV0XCJcbiAgICAgICAgKm5nSWY9XCJjbGVhbiAmJiAhZGlzYWJsZWRcIlxuICAgICAgICBbcC1lbGVtZW50LXJlZl09XCJpbnB1dEVsXCJcbiAgICAgICAgKHAtY2hhbmdlLWV2ZW50KT1cImNsZWFuTW9kZWwoKVwiXG4gICAgICA+XG4gICAgICA8L3BvLWNsZWFuPlxuXG4gICAgICA8c3BhblxuICAgICAgICAjaWNvbkxvb2t1cFxuICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLXNlYXJjaCBwby1pY29uLWlucHV0XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uXT1cIiFkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Mb29rdXAoKVwiXG4gICAgICAgIChmb2N1cyk9XCJpbnAuZm9jdXMoKVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkaXNjbGFpbWVyc1RlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIj5cbiAgICA8ZGl2XG4gICAgICAjaW5wXG4gICAgICBbdGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgY2xhc3M9XCJwby1pbnB1dCBwby1pbnB1dC1pY29uLXJpZ2h0IHBvLWxvb2t1cC1pbnB1dCBwby1pY29uLWlucHV0XCJcbiAgICAgIFtjbGFzcy5wby1sb29rdXAtaW5wdXQtYXV0b109XCJhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1sb29rdXAtaW5wdXQtc3RhdGljXT1cIiFhdXRvSGVpZ2h0XCJcbiAgICAgIFtjbGFzcy5wby1sb29rdXAtaW5wdXQtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgIWRpc2NsYWltZXJzPy5sZW5ndGhcIiBjbGFzcz1cInBvLWxvb2t1cC1pbnB1dC1wbGFjZWhvbGRlclwiPlxuICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8cG8tZGlzY2xhaW1lclxuICAgICAgICAqbmdGb3I9XCJsZXQgZGlzY2xhaW1lciBvZiB2aXNpYmxlRGlzY2xhaW1lcnNcIlxuICAgICAgICBjbGFzcz1cInBvLWxvb2t1cC1pbnB1dC1kaXNjbGFpbWVyXCJcbiAgICAgICAgW3AtbGFiZWxdPVwiZGlzY2xhaW1lci5sYWJlbFwiXG4gICAgICAgIFtwLXZhbHVlXT1cImRpc2NsYWltZXIudmFsdWVcIlxuICAgICAgICBbcC1oaWRlLWNsb3NlXT1cImRpc2NsYWltZXIudmFsdWUgPT09ICcnIHx8IGRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLnBvLWNsaWNrYWJsZV09XCJkaXNjbGFpbWVyLnZhbHVlID09PSAnJyAmJiAhZGlzYWJsZWRcIlxuICAgICAgICAocC1jbG9zZS1hY3Rpb24pPVwiY2xvc2VEaXNjbGFpbWVyKGRpc2NsYWltZXIudmFsdWUpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tZGlzY2xhaW1lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJwby1maWVsZC1pY29uLWNvbnRhaW5lci1yaWdodFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgI2ljb25Mb29rdXBcbiAgICAgICAgY2xhc3M9XCJwby1pY29uIHBvLWZpZWxkLWljb24gcG8taWNvbi1zZWFyY2ggcG8taWNvbi1pbnB1dFwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbl09XCIhZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MucG8tZmllbGQtaWNvbi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIChjbGljayk9XCJvcGVuTG9va3VwKClcIlxuICAgICAgICAoZm9jdXMpPVwiaW5wLmZvY3VzKClcIlxuICAgICAgPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
433
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvcG8tbG9va3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFLVixTQUFTLEVBQ1QsdUJBQXVCLEVBRXhCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0UsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7Ozs7Ozs7SUNHcEUsb0NBS0M7SUFEQyw4TEFBa0IsZUFBQSxtQkFBWSxDQUFBLElBQUM7SUFFakMsaUJBQVc7OztJQUhULDhDQUF5Qjs7OztJQWxCL0IsOEJBQThGLGtCQUFBO0lBVzFGLDJKQUFRLGVBQUEsb0JBQWEsQ0FBQSxJQUFDO0lBVnhCLGlCQVdFO0lBRUYsOEJBQTJDO0lBQ3pDLGtGQU1XO0lBRVgsa0NBUUM7SUFGQyw2SkFBUyxlQUFBLG9CQUFZLENBQUEsSUFBQywySUFDYixlQUFBLFdBQVcsQ0FBQSxJQURFO0lBR3hCLGlCQUFPLEVBQUEsRUFBQTs7OztJQTVCUCxlQUFTO0lBQVQs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LENBQUMsYUFBYSxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO0lBQ2xFLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2tGQWhUVSxpQkFBaUI7b0VBQWpCLGlCQUFpQjsrQkFDRixVQUFVOzs7OzBDQUhwQyxTQUFTO1FDM0dYLDZDQVFDO1FBQ0MsbUVBa0NNO1FBQ04sNENBQXVEO1FBQ3pELGlCQUFxQjtRQUVyQixvSEF1Q2M7OztRQXJGWix5Q0FBdUIsb0JBQUEsZ0JBQUEsc0JBQUEsNEJBQUEsNEJBQUEscUNBQUE7UUFRa0IsZUFBMkI7UUFBM0IsOENBQTJCLGlCQUFBOzt1RkRvR3pELGlCQUFpQjtjQU43QixTQUFTOzJCQUNFLFdBQVcsbUJBRUosdUJBQXVCLENBQUMsTUFBTSxhQUMvQyxTQUFTOzBMQUc4QyxPQUFPO2tCQUE3RCxTQUFTO21CQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERvQ2hlY2ssXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvTG9va3VwQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tbG9va3VwLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTG9va3VwTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtbW9kYWwuc2VydmljZSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBwcm92aWRlcnMgPSBbXG4gIFBvTG9va3VwRmlsdGVyU2VydmljZSxcbiAgUG9Mb29rdXBNb2RhbFNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0xvb2t1cENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb29rdXBDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICBwcm92aWRlOiBOZ0NvbnRyb2wsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Mb29rdXBDb21wb25lbnQpLFxuICAgIG11bHRpOiBmYWxzZVxuICB9XG5dO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0xvb2t1cEJhc2VDb21wb25lbnRcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBRdWFuZG8gZXhpc3RlIG11aXRvcyBkYWRvcyBvIHBvLWxvb2t1cCBwb3IgcGFkcsOjbyB0cmF6IGFwZW5hcyAxMCBpdGVucyBuYSB0YWJlbGEgZSBvcyBkZW1haXMgc8OjbyBjYXJyZWdhZG9zIHBvciBkZW1hbmRhIGF0cmF2w6lzIGRvXG4gKiBib3TDo28gJ0NhcnJlZ2FyIG1haXMgcmVzdWx0YWRvcycuIFBhcmEgcXVlIGZ1bmNpb25lIGNvcnJldGFtZW50ZSwgw6kgaW1wb3J0YW50ZSBxdWUgbyBzZXJ2acOnbyBzaWdhIG9cbiAqIFtHdWlhIGRlIGltcGxlbWVudGHDp8OjbyBkYXMgQVBJcyBUT1RWU10oaHR0cHM6Ly9wby11aS5pby9ndWlkZXMvYXBpKS5cbiAqXG4gKiBJbXBvcnRhbnRlOlxuICpcbiAqIC0gQ2FzbyBvIHBvLWxvb2t1cCBjb250ZW5oYSBvIFsobmdNb2RlbCldIHNlbSBvIGF0cmlidXRvIG5hbWUsIG9jb3JyZXLDoSB1bSBlcnJvIGRlIGFuZ3VsYXIuXG4gKiBFbnTDo28gc2Vyw6EgbmVjZXNzw6FyaW8gaW5mb3JtYXIgbyBhdHJpYnV0byBuYW1lIG91IG8gYXRyaWJ1dG8gW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiLlxuICogYGBgXG4gKiA8cG8tbG9va3VwXG4gKiAgIFsobmdNb2RlbCldPVwicGVzc29hLm5vbWVcIlxuICogICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XG4gKiA8L3BvLWxvb2t1cD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWxvb2t1cC1iYXNpY1wiIHRpdGxlPVwiUE8gTG9va3VwIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtYmFzaWMvc2FtcGxlLXBvLWxvb2t1cC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtYmFzaWMvc2FtcGxlLXBvLWxvb2t1cC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1sb29rdXAtbGFic1wiIHRpdGxlPVwiUE8gTG9va3VwIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1sYWJzL3NhbXBsZS1wby1sb29rdXAtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtbGFicy9zYW1wbGUtcG8tbG9va3VwLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLWhlcm9cIiB0aXRsZT1cIlBPIExvb2t1cCAtIEhlcm9cIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvL3NhbXBsZS1wby1sb29rdXAtaGVyby5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtaGVyby9zYW1wbGUtcG8tbG9va3VwLWhlcm8uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLWhlcm8tcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gTG9va3VwIC0gSGVybyBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtaGVyby1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1sb29rdXAtaGVyby1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWxvb2t1cC1oZXJvLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLXN3LWZpbG1zXCIgdGl0bGU9XCJQTyBMb29rdXAgLSBTdGFyIFdhcnMgZmlsbXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy9zYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy9zYW1wbGUtcG8tbG9va3VwLXN3LWZpbG1zLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1sb29rdXAtc3ctZmlsbXMvc2FtcGxlLXBvLWxvb2t1cC1zdy1maWxtcy5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tbG9va3VwLW11bHRpcGxlXCIgdGl0bGU9XCJQTyBMb29rdXAgLSBNdWx0aXBsZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlL3NhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlL3NhbXBsZS1wby1sb29rdXAtbXVsdGlwbGUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWxvb2t1cC1tdWx0aXBsZS9zYW1wbGUtcG8tbG9va3VwLW11bHRpcGxlLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1sb29rdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tbG9va3VwLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyc1xufSlcbmV4cG9ydCBjbGFzcyBQb0xvb2t1cENvbXBvbmVudCBleHRlbmRzIFBvTG9va3VwQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0LCBEb0NoZWNrIHtcbiAgQFZpZXdDaGlsZCgnaW5wJywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IGZhbHNlIH0pIGlucHV0RWw6IEVsZW1lbnRSZWY7XG5cbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgdGltZW91dFJlc2l6ZTtcbiAgdmlzaWJsZUVsZW1lbnQgPSBmYWxzZTtcblxuICBkaXNjbGFpbWVycyA9IFtdO1xuICB2aXNpYmxlRGlzY2xhaW1lcnMgPSBbXTtcblxuICBpZCA9IGBwby1sb29rdXBbJHt1dWlkKCl9XWA7XG5cbiAgcHJpdmF0ZSBtb2RhbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcblxuICBnZXQgYXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLm5vQXV0b2NvbXBsZXRlID8gJ29mZicgOiAnb24nO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHBvTG9va3VwRmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLFxuICAgIHBvTG9va3VwTW9kYWxTZXJ2aWNlOiBQb0xvb2t1cE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgc3VwZXIocG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLCBpbmplY3RvciwgcG9Mb29rdXBNb2RhbFNlcnZpY2UpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICB0aGlzLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ0RvQ2hlY2soKSB7XG4gICAgY29uc3QgaW5wdXRXaWR0aCA9IHRoaXMuaW5wdXRFbD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAvLyBQZXJtaXRlIHF1ZSBvcyBkaXNjbGFpbWVycyBzZWphbSBjYWxjdWxhZG9zIG5hIHByaW1laXJhIHZleiBxdWUgbyBjb21wb25lbnRlIHRvcm5hLXNlIHZpc8OtdmVsLFxuICAgIC8vIGV2aXRhbmRvIGNvbSBpc3NvLCBwcm9ibGVtYXMgY29tIFRhYnMgb3UgRGl2cyBxdWUgaW5pY2llbSBlc2NvbmRpZGFzLlxuICAgIGlmICgoaW5wdXRXaWR0aCAmJiAhdGhpcy52aXNpYmxlRWxlbWVudCAmJiB0aGlzLmluaXRpYWxpemVkKSB8fCAoaW5wdXRXaWR0aCAmJiB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zKSkge1xuICAgICAgdGhpcy5kZWJvdW5jZVJlc2l6ZSgpO1xuICAgICAgdGhpcy52aXNpYmxlRWxlbWVudCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2RhbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5tb2RhbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvTG9va3VwQ29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb0xvb2t1cENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgbG9va3VwOiBQb0xvb2t1cENvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNMb29rdXAoKSB7XG4gICAqICAgdGhpcy5sb29rdXAuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvcGVuTG9va3VwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQWxsb3dlZE9wZW5Nb2RhbCgpKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGFkdmFuY2VkRmlsdGVycyxcbiAgICAgICAgc2VydmljZSxcbiAgICAgICAgY29sdW1ucyxcbiAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICBsaXRlcmFscyxcbiAgICAgICAgaW5maW5pdGVTY3JvbGwsXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBmaWVsZExhYmVsLFxuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBjaGFuZ2VWaXNpYmxlQ29sdW1ucyxcbiAgICAgICAgY29sdW1uUmVzdG9yZU1hbmFnZXJcbiAgICAgIH0gPSB0aGlzO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5jaGVja1NlbGVjdGVkSXRlbXMoKTtcblxuICAgICAgdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZS5vcGVuTW9kYWwoe1xuICAgICAgICBhZHZhbmNlZEZpbHRlcnMsXG4gICAgICAgIHNlcnZpY2UsXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgdGl0bGU6IHRoaXMubGFiZWwsXG4gICAgICAgIGxpdGVyYWxzLFxuICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICAgIGZpZWxkTGFiZWwsXG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGNoYW5nZVZpc2libGVDb2x1bW5zLFxuICAgICAgICBjb2x1bW5SZXN0b3JlTWFuYWdlclxuICAgICAgfSk7XG5cbiAgICAgIGlmICghdGhpcy5tb2RhbFN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLm1vZGFsU3Vic2NyaXB0aW9uID0gdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZS5zZWxlY3RWYWx1ZUV2ZW50LnN1YnNjcmliZShzZWxlY3RlZE9wdGlvbnMgPT4ge1xuICAgICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMSB8fCB0aGlzLmRpc2NsYWltZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXNjbGFpbWVycyhzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsKHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoZWNrU2VsZWN0ZWRJdGVtcygpIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLmRpc2NsYWltZXJzLmxlbmd0aCAmJiB0aGlzLnZhbHVlVG9Nb2RlbD8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbeyB2YWx1ZTogdGhpcy52YWx1ZVRvTW9kZWxbMF0sIGxhYmVsOiB0aGlzLm9sZFZhbHVlLCAuLi50aGlzLnNlbGVjdGVkT3B0aW9uc1swXSB9XTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZGlzY2xhaW1lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlVG9Nb2RlbDtcbiAgICB9XG4gIH1cblxuICBzZXREaXNjbGFpbWVycyhzZWxlY3RlZE9wdGlvbnM6IEFycmF5PGFueT4pIHtcbiAgICB0aGlzLmRpc2NsYWltZXJzID0gc2VsZWN0ZWRPcHRpb25zLm1hcChzZWxlY3RlZE9wdGlvbiA9PiAoe1xuICAgICAgdmFsdWU6IHNlbGVjdGVkT3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0sXG4gICAgICBsYWJlbDogc2VsZWN0ZWRPcHRpb25bdGhpcy5maWVsZExhYmVsXSxcbiAgICAgIC4uLnNlbGVjdGVkT3B0aW9uXG4gICAgfSkpO1xuXG4gICAgdGhpcy52aXNpYmxlRGlzY2xhaW1lcnMgPSBbLi4udGhpcy5kaXNjbGFpbWVyc107XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHNldFZpZXdWYWx1ZSh2YWx1ZTogYW55LCBvYmplY3Q6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0RWwgJiYgdGhpcy5maWVsZEZvcm1hdCkge1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlV2lwb2llbGRGb3JtYXQob2JqZWN0KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaW5wdXRFbCkge1xuICAgICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnZhbHVlVG9Nb2RlbCB8fCB0aGlzLnZhbHVlVG9Nb2RlbCA9PT0gMCA/IHZhbHVlIDogJyc7XG4gICAgfVxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXRWaWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBzZWFyY2hFdmVudCgpIHtcbiAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZpZXdWYWx1ZSgpO1xuXG4gICAgaWYgKHRoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCkgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaEJ5SWQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlRGlzY2xhaW1lcih2YWx1ZSkge1xuICAgIHRoaXMuZGlzY2xhaW1lcnMgPSB0aGlzLmRpc2NsYWltZXJzLmZpbHRlcihkaXNjbGFpbWVyID0+IGRpc2NsYWltZXIudmFsdWUgIT09IHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsLmZpbHRlcihtb2RlbCA9PiBtb2RlbCAhPT0gdmFsdWUpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbC5sZW5ndGggPyB0aGlzLnZhbHVlVG9Nb2RlbCA6IHVuZGVmaW5lZCk7XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlSXRlbXMoKSB7XG4gICAgaWYgKHRoaXMuZGlzY2xhaW1lcnMgJiYgdGhpcy5kaXNjbGFpbWVycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFtdLmNvbmNhdCh0aGlzLmRpc2NsYWltZXJzKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlYm91bmNlUmVzaXplKCk7XG5cbiAgICBpZiAoIXRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSB7XG4gICAgICB0aGlzLmlzQ2FsY3VsYXRlVmlzaWJsZUl0ZW1zID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBkZWJvdW5jZVJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMuYXV0b0hlaWdodCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dFJlc2l6ZSk7XG4gICAgICB0aGlzLnRpbWVvdXRSZXNpemUgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgIH0sIDIwMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0SW5wdXRXaWR0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLSA0MDtcbiAgfVxuXG4gIGdldERpc2NsYWltZXJzV2lkdGgoKSB7XG4gICAgY29uc3QgZGlzY2xhaW1lcnMgPSB0aGlzLmlucHV0RWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwby1kaXNjbGFpbWVyJyk7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZGlzY2xhaW1lcnMpLm1hcChkaXNjbGFpbWVyID0+IGRpc2NsYWltZXJbJ29mZnNldFdpZHRoJ10pO1xuICB9XG5cbiAgY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKCkge1xuICAgIGNvbnN0IGRpc2NsYWltZXJzV2lkdGggPSB0aGlzLmdldERpc2NsYWltZXJzV2lkdGgoKTtcbiAgICBjb25zdCBpbnB1dFdpZHRoID0gdGhpcy5nZXRJbnB1dFdpZHRoKCk7XG4gICAgY29uc3QgZXh0cmFEaXNjbGFpbWVyU2l6ZSA9IDM4O1xuICAgIGNvbnN0IGRpc2NsYWltZXJzVmlzaWJsZSA9IGRpc2NsYWltZXJzV2lkdGhbMF07XG5cbiAgICBjb25zdCBuZXdEaXNjbGFpbWVycyA9IFtdO1xuICAgIGNvbnN0IGRpc2NsYWltZXJzID0gdGhpcy5kaXNjbGFpbWVycztcblxuICAgIGlmIChpbnB1dFdpZHRoID4gMCkge1xuICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgZGlzY2xhaW1lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgc3VtICs9IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgIG5ld0Rpc2NsYWltZXJzLnB1c2goZGlzY2xhaW1lcnNbaV0pO1xuXG4gICAgICAgIGlmIChzdW0gPiBpbnB1dFdpZHRoKSB7XG4gICAgICAgICAgc3VtIC09IGRpc2NsYWltZXJzV2lkdGhbaV07XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXNjbGFpbWVyc1Zpc2libGUgfHwgIWRpc2NsYWltZXJzLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSA9PT0gZGlzY2xhaW1lcnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5pc0NhbGN1bGF0ZVZpc2libGVJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdW0gKyBleHRyYURpc2NsYWltZXJTaXplID4gaW5wdXRXaWR0aCkge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMiwgMik7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoICsgMSAtIGkpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgbmV3RGlzY2xhaW1lcnMucHVzaCh7IHZhbHVlOiAnJywgbGFiZWw6IGxhYmVsIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0Rpc2NsYWltZXJzLnNwbGljZSgtMSwgMSk7XG4gICAgICAgICAgY29uc3QgbGFiZWwgPSAnKycgKyAoZGlzY2xhaW1lcnMubGVuZ3RoIC0gaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICBuZXdEaXNjbGFpbWVycy5wdXNoKHsgdmFsdWU6ICcnLCBsYWJlbDogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnZpc2libGVEaXNjbGFpbWVycyA9IFsuLi5uZXdEaXNjbGFpbWVyc107XG4gIH1cblxuICBwcml2YXRlIGlzQWxsb3dlZE9wZW5Nb2RhbCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuc2VydmljZSkge1xuICAgICAgY29uc29sZS53YXJuKCdObyBzZXJ2aWNlIGluZm9ybWVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKHRoaXMuc2VydmljZSAmJiAhdGhpcy5kaXNhYmxlZCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdEZpZWxkcyhvYmplY3RTZWxlY3RlZCwgcHJvcGVydGllcykge1xuICAgIGxldCBmb3JtYXRlZEZpZWxkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnRpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKG9iamVjdFNlbGVjdGVkICYmIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XSkge1xuICAgICAgICAgIGlmICghZm9ybWF0ZWRGaWVsZCkge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ZWRGaWVsZCA9IGZvcm1hdGVkRmllbGQgKyAnIC0gJyArIG9iamVjdFNlbGVjdGVkW3Byb3BlcnR5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWZvcm1hdGVkRmllbGQpIHtcbiAgICAgIGZvcm1hdGVkRmllbGQgPSBvYmplY3RTZWxlY3RlZFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0ZWRGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5wdXRWYWx1ZVdpcG9pZWxkRm9ybWF0KG9iamVjdFNlbGVjdGVkOiBhbnkpIHtcbiAgICBjb25zdCBpc0VtcHR5ID0gT2JqZWN0LmtleXMob2JqZWN0U2VsZWN0ZWQpLmxlbmd0aCA9PT0gMDtcbiAgICBsZXQgZmllbGRGb3JtYXRlZDtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZmllbGRGb3JtYXQpKSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5mb3JtYXRGaWVsZHMob2JqZWN0U2VsZWN0ZWQsIHRoaXMuZmllbGRGb3JtYXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZEZvcm1hdGVkID0gdGhpcy5maWVsZEZvcm1hdChvYmplY3RTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbGRWYWx1ZSA9IGlzRW1wdHkgPyAnJyA6IGZpZWxkRm9ybWF0ZWQ7XG4gICAgdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBpc0VtcHR5ID8gJycgOiBmaWVsZEZvcm1hdGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1oZWxwXT1cImhlbHBcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCIgKm5nSWY9XCIhZGlzY2xhaW1lcnMubGVuZ3RoOyBlbHNlIGRpc2NsYWltZXJzVGVtcGxhdGVcIj5cbiAgICA8aW5wdXRcbiAgICAgICNpbnBcbiAgICAgIGNsYXNzPVwicG8taW5wdXRcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIFtuZ0NsYXNzXT1cImNsZWFuICYmIGlucC52YWx1ZSA/ICdwby1pbnB1dC1kb3VibGUtaWNvbi1yaWdodCcgOiAncG8taW5wdXQtaWNvbi1yaWdodCdcIlxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJkaXNhYmxlZCA/ICcnIDogcGxhY2Vob2xkZXJcIlxuICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgIChibHVyKT1cInNlYXJjaEV2ZW50KClcIlxuICAgIC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtaWNvbi1jb250YWluZXItcmlnaHRcIj5cbiAgICAgIDxwby1jbGVhblxuICAgICAgICBjbGFzcz1cInBvLWljb24taW5wdXRcIlxuICAgICAgICAqbmdJZj1cImNsZWFuICYmICFkaXNhYmxlZFwiXG4gICAgICAgIFtwLWVsZW1lbnQtcmVmXT1cImlucHV0RWxcIlxuICAgICAgICAocC1jaGFuZ2UtZXZlbnQpPVwiY2xlYW5Nb2RlbCgpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tY2xlYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICNpY29uTG9va3VwXG4gICAgICAgIGNsYXNzPVwicG8taWNvbiBwby1maWVsZC1pY29uIHBvLWljb24tc2VhcmNoIHBvLWljb24taW5wdXRcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgW2NsYXNzLnBvLWZpZWxkLWljb25dPVwiIWRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLnBvLWZpZWxkLWljb24tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAoY2xpY2spPVwib3Blbkxvb2t1cCgpXCJcbiAgICAgICAgKGZvY3VzKT1cImlucC5mb2N1cygpXCJcbiAgICAgID5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Rpc2NsYWltZXJzVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiPlxuICAgIDxkaXZcbiAgICAgICNpbnBcbiAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICBjbGFzcz1cInBvLWlucHV0IHBvLWlucHV0LWljb24tcmlnaHQgcG8tbG9va3VwLWlucHV0IHBvLWljb24taW5wdXRcIlxuICAgICAgW2NsYXNzLnBvLWxvb2t1cC1pbnB1dC1hdXRvXT1cImF1dG9IZWlnaHRcIlxuICAgICAgW2NsYXNzLnBvLWxvb2t1cC1pbnB1dC1zdGF0aWNdPVwiIWF1dG9IZWlnaHRcIlxuICAgICAgW2NsYXNzLnBvLWxvb2t1cC1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgPlxuICAgICAgPHNwYW4gKm5nSWY9XCJwbGFjZWhvbGRlciAmJiAhZGlzY2xhaW1lcnM/Lmxlbmd0aFwiIGNsYXNzPVwicG8tbG9va3VwLWlucHV0LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxwby1kaXNjbGFpbWVyXG4gICAgICAgICpuZ0Zvcj1cImxldCBkaXNjbGFpbWVyIG9mIHZpc2libGVEaXNjbGFpbWVyc1wiXG4gICAgICAgIGNsYXNzPVwicG8tbG9va3VwLWlucHV0LWRpc2NsYWltZXJcIlxuICAgICAgICBbcC1sYWJlbF09XCJkaXNjbGFpbWVyLmxhYmVsXCJcbiAgICAgICAgW3AtdmFsdWVdPVwiZGlzY2xhaW1lci52YWx1ZVwiXG4gICAgICAgIFtwLWhpZGUtY2xvc2VdPVwiZGlzY2xhaW1lci52YWx1ZSA9PT0gJycgfHwgZGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MucG8tY2xpY2thYmxlXT1cImRpc2NsYWltZXIudmFsdWUgPT09ICcnICYmICFkaXNhYmxlZFwiXG4gICAgICAgIChwLWNsb3NlLWFjdGlvbik9XCJjbG9zZURpc2NsYWltZXIoZGlzY2xhaW1lci52YWx1ZSlcIlxuICAgICAgPlxuICAgICAgPC9wby1kaXNjbGFpbWVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWljb24tY29udGFpbmVyLXJpZ2h0XCI+XG4gICAgICA8c3BhblxuICAgICAgICAjaWNvbkxvb2t1cFxuICAgICAgICBjbGFzcz1cInBvLWljb24gcG8tZmllbGQtaWNvbiBwby1pY29uLXNlYXJjaCBwby1pY29uLWlucHV0XCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uXT1cIiFkaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5wby1maWVsZC1pY29uLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5Mb29rdXAoKVwiXG4gICAgICAgIChmb2N1cyk9XCJpbnAuZm9jdXMoKVwiXG4gICAgICA+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -50,6 +50,12 @@ export class PoLookupModalService {
50
50
  this.componentRef.changeDetectorRef.detectChanges();
51
51
  this.componentRef.instance.openModal();
52
52
  }
53
+ setChangeColumns(columns) {
54
+ if (this.componentRef !== null) {
55
+ this.componentRef.instance.columns = columns;
56
+ this.componentRef.changeDetectorRef.detectChanges();
57
+ }
58
+ }
53
59
  // Este metodo é chamado quando é selecionado um item na lookup modal.
54
60
  selectValue(value) {
55
61
  if (value) {
@@ -63,4 +69,4 @@ PoLookupModalService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PoL
63
69
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLookupModalService, [{
64
70
  type: Injectable
65
71
  }], function () { return [{ type: i1.PoComponentInjectorService }]; }, null); })();
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLW1vZGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbG9va3VwL3NlcnZpY2VzL3BvLWxvb2t1cC1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU92RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBRXRGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLFlBQW9CLG1CQUErQztRQUEvQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBSm5FLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXRELGlCQUFZLEdBQXNCLElBQUksQ0FBQztJQUV1QixDQUFDO0lBRXZFOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsU0FBUyxDQUFDLE1BY1Q7UUFDQyxNQUFNLEVBQ0osZUFBZSxFQUNmLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3JCLEdBQUcsTUFBTSxDQUFDO1FBRVgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsc0VBQXNFO0lBQ3RFLFdBQVcsQ0FBQyxLQUFLO1FBQ2YsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDOzt3RkFoRlUsb0JBQW9COzBFQUFwQixvQkFBb0IsV0FBcEIsb0JBQW9CO3VGQUFwQixvQkFBb0I7Y0FEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudFJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvRHluYW1pY0Zvcm1GaWVsZCB9IGZyb20gJy4vLi4vLi4vLi4vcG8tZHluYW1pYy9wby1keW5hbWljLWZvcm0vcG8tZHluYW1pYy1mb3JtLWZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWNvbXBvbmVudC1pbmplY3Rvci9wby1jb21wb25lbnQtaW5qZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQb0xvb2t1cENvbHVtbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbG9va3VwL2ludGVyZmFjZXMvcG8tbG9va3VwLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwTGl0ZXJhbHMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3BvLWxvb2t1cC1tb2RhbC9wby1sb29rdXAtbW9kYWwuY29tcG9uZW50JztcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBTZXJ2acOnbyByZXNwb25zw6F2ZWwgcG9yIGNvbnRyb2xhciBhIGFiZXJ0dXJhIGRvIGNvbXBvbmVudGUgUG8gTG9va3VwIE1vZGFsLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUG9Mb29rdXBNb2RhbFNlcnZpY2Uge1xuICBzZWxlY3RWYWx1ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PiA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb0NvbXBvbmVudEluamVjdG9yOiBQb0NvbXBvbmVudEluamVjdG9yU2VydmljZSkge31cblxuICAvKipcbiAgICogTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGFicmlyIGEgbW9kYWwgZGUgYnVzY2EgZGFzIGluZm9ybWHDp8O1ZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhZHZhbmNlZEZpbHRlcnMge0FycmF5PFBvRHluYW1pY0Zvcm1GaWVsZD59IE9iamV0byB1dGlsaXphZG8gcGFyYSBjcmlhciBvIGJ1c2NhIGF2YW7Dp2FkYS5cbiAgICogQHBhcmFtIHNlcnZpY2Uge1BvTG9va3VwRmlsdGVyfSBTZXJ2acOnbyByZXNwb25zw6F2ZWwgcG9yIHJlYWxpemFyIGEgYnVzY2Egbm8gc2VydmnDp28gZG9zIGRhZG9zLlxuICAgKiBAcGFyYW0gY29sdW1ucyB7QXJyYXk8UG9Mb29rdXBDb2x1bW4+fSBEZWZpbmnDp8OjbyBkYXMgY29sdW5hcyBuYSBtb2RhbCBkZSBidXNjYS5cbiAgICogQHBhcmFtIGZpbHRlclBhcmFtcyB7YW55fSBWYWxvciBxdWUgc2Vyw6EgcmVwYXNzYWRvIGFvcyBtw6l0b2RvcyBkbyBzZXJ2acOnbyBwYXJhIGF1eGlsaWFyIG5vIGZpbHRybyBkb3MgZGFkb3MuXG4gICAqIEBwYXJhbSB0aXRsZSB7c3RyaW5nfSBEZWZpbmnDp8OjbyBkbyB0w610dWxvIGRhIG1vZGFsLlxuICAgKiBAcGFyYW0gbGl0ZXJhbHMge1BvTG9va3VwTGl0ZXJhbHN9IExpdGVyYWlzIHV0aWxpemFkYXMgbm8gY29tcG9uZW50ZS5cbiAgICogQHBhcmFtIHNlbGVjdGVkSXRlbXMge2FueX0gVmFsb3IgcXVlIGVzdMOhIHNlbGVjaW9uYWRvIHF1ZSBzZXLDoSByZXBhc3NhZG8gcGFyYSBvIG1vZGFsIHBhcmEgYXByZXNlbnRhciBuYSB0YWJlbGEuXG4gICAqIEBwYXJhbSBmaWVsZExhYmVsIHtzdHJpbmd9IFZhbG9yIHF1ZSBzZXLDoSB1dGlsaXphZG8gY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wby5cbiAgICogQHBhcmFtIGZpZWxkVmFsdWUge3N0cmluZ30gVmFsb3IgcXVlIHNlcsOhIHV0aWxpemFkbyBjb21vIHZhbG9yIGRvIGNhbXBvLlxuICAgKiBAcGFyYW0gY2hhbmdlVmlzaWJsZUNvbHVtbnMge2Z1bmN0aW9ufSBGdW7Dp8OjbyBxdWUgc2Vyw6EgZXhlY3V0YWRhIHF1YW5kbyBmb3IgYWx0ZXJhZGEgYSB2aXNpYmlsaWRhZGUgZGFzIGNvbHVuYXMuXG4gICAqIEBwYXJhbSBjb2x1bW5SZXN0b3JlTWFuYWdlciB7ZnVuY3Rpb259IEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgcXVhbmRvIGZvciByZXN0YXVyYXIgYXMgY29sdW5hcyBwYWRyw6NvLlxuICAgKi9cbiAgb3Blbk1vZGFsKHBhcmFtczoge1xuICAgIGFkdmFuY2VkRmlsdGVyczogQXJyYXk8UG9EeW5hbWljRm9ybUZpZWxkPjtcbiAgICBzZXJ2aWNlOiBQb0xvb2t1cEZpbHRlcjtcbiAgICBjb2x1bW5zOiBBcnJheTxQb0xvb2t1cENvbHVtbj47XG4gICAgZmlsdGVyUGFyYW1zOiBhbnk7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBsaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscztcbiAgICBpbmZpbml0ZVNjcm9sbDogYm9vbGVhbjtcbiAgICBtdWx0aXBsZTogYm9vbGVhbjtcbiAgICBzZWxlY3RlZEl0ZW1zOiBBcnJheTxhbnk+O1xuICAgIGZpZWxkTGFiZWw6IHN0cmluZztcbiAgICBmaWVsZFZhbHVlOiBzdHJpbmc7XG4gICAgY2hhbmdlVmlzaWJsZUNvbHVtbnM6IEZ1bmN0aW9uO1xuICAgIGNvbHVtblJlc3RvcmVNYW5hZ2VyOiBGdW5jdGlvbjtcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGFkdmFuY2VkRmlsdGVycyxcbiAgICAgIHNlcnZpY2UsXG4gICAgICBjb2x1bW5zLFxuICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgdGl0bGUsXG4gICAgICBsaXRlcmFscyxcbiAgICAgIGluZmluaXRlU2Nyb2xsLFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBzZWxlY3RlZEl0ZW1zLFxuICAgICAgZmllbGRMYWJlbCxcbiAgICAgIGZpZWxkVmFsdWUsXG4gICAgICBjaGFuZ2VWaXNpYmxlQ29sdW1ucyxcbiAgICAgIGNvbHVtblJlc3RvcmVNYW5hZ2VyXG4gICAgfSA9IHBhcmFtcztcblxuICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy5wb0NvbXBvbmVudEluamVjdG9yLmNyZWF0ZUNvbXBvbmVudEluQXBwbGljYXRpb24oUG9Mb29rdXBNb2RhbENvbXBvbmVudCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYWR2YW5jZWRGaWx0ZXJzID0gYWR2YW5jZWRGaWx0ZXJzO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnRpdGxlID0gdGl0bGU7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyU2VydmljZSA9IHNlcnZpY2U7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZmlsdGVyUGFyYW1zID0gZmlsdGVyUGFyYW1zO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmxpdGVyYWxzID0gbGl0ZXJhbHM7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubW9kZWwuc3Vic2NyaWJlKCRldmVudCA9PiB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlKCRldmVudCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuaW5maW5pdGVTY3JvbGwgPSBpbmZpbml0ZVNjcm9sbDtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tdWx0aXBsZSA9IG11bHRpcGxlO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkTGFiZWwgPSBmaWVsZExhYmVsO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmNoYW5nZVZpc2libGVDb2x1bW5zID0gY2hhbmdlVmlzaWJsZUNvbHVtbnM7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY29sdW1uUmVzdG9yZU1hbmFnZXIgPSBjb2x1bW5SZXN0b3JlTWFuYWdlcjtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uub3Blbk1vZGFsKCk7XG4gIH1cblxuICAvLyBFc3RlIG1ldG9kbyDDqSBjaGFtYWRvIHF1YW5kbyDDqSBzZWxlY2lvbmFkbyB1bSBpdGVtIG5hIGxvb2t1cCBtb2RhbC5cbiAgc2VsZWN0VmFsdWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWVFdmVudC5lbWl0KHZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLW1vZGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbG9va3VwL3NlcnZpY2VzL3BvLWxvb2t1cC1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU92RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7O0FBRXRGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBSy9CLFlBQW9CLG1CQUErQztRQUEvQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBSm5FLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXRELGlCQUFZLEdBQXNCLElBQUksQ0FBQztJQUV1QixDQUFDO0lBRXZFOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsU0FBUyxDQUFDLE1BY1Q7UUFDQyxNQUFNLEVBQ0osZUFBZSxFQUNmLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLEtBQUssRUFDTCxRQUFRLEVBQ1IsY0FBYyxFQUNkLFFBQVEsRUFDUixhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3JCLEdBQUcsTUFBTSxDQUFDO1FBRVgsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ25ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBTztRQUN0QixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxzRUFBc0U7SUFDdEUsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7O3dGQXZGVSxvQkFBb0I7MEVBQXBCLG9CQUFvQixXQUFwQixvQkFBb0I7dUZBQXBCLG9CQUFvQjtjQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50UmVmLCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9EeW5hbWljRm9ybUZpZWxkIH0gZnJvbSAnLi8uLi8uLi8uLi9wby1keW5hbWljL3BvLWR5bmFtaWMtZm9ybS9wby1keW5hbWljLWZvcm0tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvQ29tcG9uZW50SW5qZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvcG8tY29tcG9uZW50LWluamVjdG9yL3BvLWNvbXBvbmVudC1pbmplY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1maWVsZC9wby1sb29rdXAvaW50ZXJmYWNlcy9wby1sb29rdXAtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbG9va3VwL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBMaXRlcmFscyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vcG8tbG9va3VwLW1vZGFsL3BvLWxvb2t1cC1tb2RhbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIFNlcnZpw6dvIHJlc3BvbnPDoXZlbCBwb3IgY29udHJvbGFyIGEgYWJlcnR1cmEgZG8gY29tcG9uZW50ZSBQbyBMb29rdXAgTW9kYWwuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQb0xvb2t1cE1vZGFsU2VydmljZSB7XG4gIHNlbGVjdFZhbHVlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+ID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvQ29tcG9uZW50SW5qZWN0b3I6IFBvQ29tcG9uZW50SW5qZWN0b3JTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgYWJyaXIgYSBtb2RhbCBkZSBidXNjYSBkYXMgaW5mb3JtYcOnw7Vlcy5cbiAgICpcbiAgICogQHBhcmFtIGFkdmFuY2VkRmlsdGVycyB7QXJyYXk8UG9EeW5hbWljRm9ybUZpZWxkPn0gT2JqZXRvIHV0aWxpemFkbyBwYXJhIGNyaWFyIG8gYnVzY2EgYXZhbsOnYWRhLlxuICAgKiBAcGFyYW0gc2VydmljZSB7UG9Mb29rdXBGaWx0ZXJ9IFNlcnZpw6dvIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgYSBidXNjYSBubyBzZXJ2acOnbyBkb3MgZGFkb3MuXG4gICAqIEBwYXJhbSBjb2x1bW5zIHtBcnJheTxQb0xvb2t1cENvbHVtbj59IERlZmluacOnw6NvIGRhcyBjb2x1bmFzIG5hIG1vZGFsIGRlIGJ1c2NhLlxuICAgKiBAcGFyYW0gZmlsdGVyUGFyYW1zIHthbnl9IFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHBhcmEgYXV4aWxpYXIgbm8gZmlsdHJvIGRvcyBkYWRvcy5cbiAgICogQHBhcmFtIHRpdGxlIHtzdHJpbmd9IERlZmluacOnw6NvIGRvIHTDrXR1bG8gZGEgbW9kYWwuXG4gICAqIEBwYXJhbSBsaXRlcmFscyB7UG9Mb29rdXBMaXRlcmFsc30gTGl0ZXJhaXMgdXRpbGl6YWRhcyBubyBjb21wb25lbnRlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRJdGVtcyB7YW55fSBWYWxvciBxdWUgZXN0w6Egc2VsZWNpb25hZG8gcXVlIHNlcsOhIHJlcGFzc2FkbyBwYXJhIG8gbW9kYWwgcGFyYSBhcHJlc2VudGFyIG5hIHRhYmVsYS5cbiAgICogQHBhcmFtIGZpZWxkTGFiZWwge3N0cmluZ30gVmFsb3IgcXVlIHNlcsOhIHV0aWxpemFkbyBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvLlxuICAgKiBAcGFyYW0gZmllbGRWYWx1ZSB7c3RyaW5nfSBWYWxvciBxdWUgc2Vyw6EgdXRpbGl6YWRvIGNvbW8gdmFsb3IgZG8gY2FtcG8uXG4gICAqIEBwYXJhbSBjaGFuZ2VWaXNpYmxlQ29sdW1ucyB7ZnVuY3Rpb259IEZ1bsOnw6NvIHF1ZSBzZXLDoSBleGVjdXRhZGEgcXVhbmRvIGZvciBhbHRlcmFkYSBhIHZpc2liaWxpZGFkZSBkYXMgY29sdW5hcy5cbiAgICogQHBhcmFtIGNvbHVtblJlc3RvcmVNYW5hZ2VyIHtmdW5jdGlvbn0gRnVuw6fDo28gcXVlIHNlcsOhIGV4ZWN1dGFkYSBxdWFuZG8gZm9yIHJlc3RhdXJhciBhcyBjb2x1bmFzIHBhZHLDo28uXG4gICAqL1xuICBvcGVuTW9kYWwocGFyYW1zOiB7XG4gICAgYWR2YW5jZWRGaWx0ZXJzOiBBcnJheTxQb0R5bmFtaWNGb3JtRmllbGQ+O1xuICAgIHNlcnZpY2U6IFBvTG9va3VwRmlsdGVyO1xuICAgIGNvbHVtbnM6IEFycmF5PFBvTG9va3VwQ29sdW1uPjtcbiAgICBmaWx0ZXJQYXJhbXM6IGFueTtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGxpdGVyYWxzOiBQb0xvb2t1cExpdGVyYWxzO1xuICAgIGluZmluaXRlU2Nyb2xsOiBib29sZWFuO1xuICAgIG11bHRpcGxlOiBib29sZWFuO1xuICAgIHNlbGVjdGVkSXRlbXM6IEFycmF5PGFueT47XG4gICAgZmllbGRMYWJlbDogc3RyaW5nO1xuICAgIGZpZWxkVmFsdWU6IHN0cmluZztcbiAgICBjaGFuZ2VWaXNpYmxlQ29sdW1uczogRnVuY3Rpb247XG4gICAgY29sdW1uUmVzdG9yZU1hbmFnZXI6IEZ1bmN0aW9uO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgYWR2YW5jZWRGaWx0ZXJzLFxuICAgICAgc2VydmljZSxcbiAgICAgIGNvbHVtbnMsXG4gICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICB0aXRsZSxcbiAgICAgIGxpdGVyYWxzLFxuICAgICAgaW5maW5pdGVTY3JvbGwsXG4gICAgICBtdWx0aXBsZSxcbiAgICAgIHNlbGVjdGVkSXRlbXMsXG4gICAgICBmaWVsZExhYmVsLFxuICAgICAgZmllbGRWYWx1ZSxcbiAgICAgIGNoYW5nZVZpc2libGVDb2x1bW5zLFxuICAgICAgY29sdW1uUmVzdG9yZU1hbmFnZXJcbiAgICB9ID0gcGFyYW1zO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnBvQ29tcG9uZW50SW5qZWN0b3IuY3JlYXRlQ29tcG9uZW50SW5BcHBsaWNhdGlvbihQb0xvb2t1cE1vZGFsQ29tcG9uZW50KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hZHZhbmNlZEZpbHRlcnMgPSBhZHZhbmNlZEZpbHRlcnM7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UudGl0bGUgPSB0aXRsZTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb2x1bW5zID0gY29sdW1ucztcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWx0ZXJTZXJ2aWNlID0gc2VydmljZTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5maWx0ZXJQYXJhbXMgPSBmaWx0ZXJQYXJhbXM7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubGl0ZXJhbHMgPSBsaXRlcmFscztcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tb2RlbC5zdWJzY3JpYmUoJGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUoJGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5pbmZpbml0ZVNjcm9sbCA9IGluZmluaXRlU2Nyb2xsO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm11bHRpcGxlID0gbXVsdGlwbGU7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkSXRlbXM7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZmllbGRMYWJlbCA9IGZpZWxkTGFiZWw7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZmllbGRWYWx1ZSA9IGZpZWxkVmFsdWU7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2hhbmdlVmlzaWJsZUNvbHVtbnMgPSBjaGFuZ2VWaXNpYmxlQ29sdW1ucztcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb2x1bW5SZXN0b3JlTWFuYWdlciA9IGNvbHVtblJlc3RvcmVNYW5hZ2VyO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5vcGVuTW9kYWwoKTtcbiAgfVxuXG4gIHNldENoYW5nZUNvbHVtbnMoY29sdW1ucykge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gRXN0ZSBtZXRvZG8gw6kgY2hhbWFkbyBxdWFuZG8gw6kgc2VsZWNpb25hZG8gdW0gaXRlbSBuYSBsb29rdXAgbW9kYWwuXG4gIHNlbGVjdFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdFZhbHVlRXZlbnQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19