@ethlete/cdk 3.8.0 → 3.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 3.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`ab5ee515`](https://github.com/ethlete-io/ethdk/commit/ab5ee515e38280d10ec50910042706902ccc099e) Thanks [@TomTomB](https://github.com/TomTomB)! - Add missing a11y logic for combobox component
8
+
3
9
  ## 3.8.0
4
10
 
5
11
  ### Minor Changes
@@ -17,7 +17,7 @@ export class ComboboxComponent extends DecoratedInputBase {
17
17
  this.combobox.setBodyComponent(ComboboxBodyComponent);
18
18
  }
19
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ComboboxComponent, isStandalone: true, selector: "et-combobox", host: { listeners: { "click": "combobox.selectInputAndOpen()" }, classAttribute: "et-combobox" }, usesInheritance: true, hostDirectives: [{ directive: i1.AnimatedOverlayDirective }, { directive: i2.InputDirective, inputs: ["placeholder", "placeholder"] }, { directive: i3.ComboboxDirective, inputs: ["options", "options", "initialValue", "initialValue", "filterInternal", "filterInternal", "loading", "loading", "error", "error", "emptyText", "emptyText", "placeholder", "placeholder", "multiple", "multiple", "bindLabel", "bindLabel", "bindValue", "bindValue", "allowCustomValues", "allowCustomValues", "selectedOptionComponent", "selectedOptionComponent", "optionComponent", "optionComponent", "bodyErrorComponent", "bodyErrorComponent", "bodyLoadingComponent", "bodyLoadingComponent", "bodyEmptyComponent", "bodyEmptyComponent"], outputs: ["filterChange", "filterChange"] }], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"combobox.multiple$ | async\" class=\"et-combobox-selected-options\">\n <li\n *ngFor=\"let item of combobox.selectedOptions$ | async; trackBy: combobox.trackByOptionKeyFn\"\n class=\"et-combobox-selected-option\"\n >\n <ng-container\n *ngIf=\"\n combobox.customSelectedOptionTpl$ | async as customSelectedOptionTpl;\n else compOrDefaultSelectedOptionLabelTpl\n \"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #compOrDefaultSelectedOptionLabelTpl>\n <ng-container\n *ngIf=\"combobox.customSelectedOptionComponent$ | async as comp; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngComponentOutlet=\"comp; inputs: { option: item }\"></ng-container>\n </ng-container>\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ combobox.getOptionLabel(item) | async }}\n </ng-template>\n </ng-template>\n\n <span\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </span>\n </li>\n <li class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </li>\n </ul>\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.placeholder]=\"input.placeholder || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n <ng-container *ngIf=\"(combobox.multiple$ | async) === false\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </ng-container>\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ComboboxComponent, isStandalone: true, selector: "et-combobox", host: { listeners: { "click": "combobox.selectInputAndOpen()" }, classAttribute: "et-combobox" }, usesInheritance: true, hostDirectives: [{ directive: i1.AnimatedOverlayDirective }, { directive: i2.InputDirective, inputs: ["placeholder", "placeholder"] }, { directive: i3.ComboboxDirective, inputs: ["options", "options", "initialValue", "initialValue", "filterInternal", "filterInternal", "loading", "loading", "error", "error", "emptyText", "emptyText", "placeholder", "placeholder", "multiple", "multiple", "bindLabel", "bindLabel", "bindValue", "bindValue", "allowCustomValues", "allowCustomValues", "selectedOptionComponent", "selectedOptionComponent", "optionComponent", "optionComponent", "bodyErrorComponent", "bodyErrorComponent", "bodyLoadingComponent", "bodyLoadingComponent", "bodyEmptyComponent", "bodyEmptyComponent"], outputs: ["filterChange", "filterChange"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div>\n <div *ngIf=\"combobox.multiple$ | async\" class=\"et-combobox-selected-options\">\n <div\n *ngFor=\"let item of combobox.selectedOptions$ | async; trackBy: combobox.trackByOptionKeyFn\"\n class=\"et-combobox-selected-option\"\n aria-hidden=\"true\"\n >\n <ng-container\n *ngIf=\"\n combobox.customSelectedOptionTpl$ | async as customSelectedOptionTpl;\n else compOrDefaultSelectedOptionLabelTpl\n \"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #compOrDefaultSelectedOptionLabelTpl>\n <ng-container\n *ngIf=\"combobox.customSelectedOptionComponent$ | async as comp; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngComponentOutlet=\"comp; inputs: { option: item }\"></ng-container>\n </ng-container>\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ combobox.getOptionLabel(item) | async }}\n </ng-template>\n </ng-template>\n\n <button\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </button>\n </div>\n <div class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </div>\n </div>\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.id]=\"input.id\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-expanded]=\"combobox.isOpen$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-activedescendant]=\"combobox.activeOptionId$ | async\"\n [attr.aria-controls]=\"(combobox.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(combobox.selectBodyId$ | async) || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n class=\"et-combobox-wrapper\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n <ng-container *ngIf=\"(combobox.multiple$ | async) === false\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </ng-container>\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container{--_clip-bottom: 0%;--_clip-bottom-to: 100%;--_clip-top: 0%;--_clip-top-to: 100%;clip-path:inset(var(--_clip-top) 0% var(--_clip-bottom) 0%)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{--_clip-bottom: var(--_clip-bottom-to);--_clip-top: var(--_clip-top-to)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:clip-path .15s var(--ease-1)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:clip-path 125ms var(--ease-3)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{--_clip-bottom-to: 0%;--_clip-top-to: 100%}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{--_clip-bottom-to: 100%;--_clip-top-to: 0%}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
21
21
  }
22
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ComboboxComponent, decorators: [{
23
23
  type: Component,
@@ -59,6 +59,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
59
59
  // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property
60
60
  outputs: ['filterChange'],
61
61
  },
62
- ], template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"combobox.multiple$ | async\" class=\"et-combobox-selected-options\">\n <li\n *ngFor=\"let item of combobox.selectedOptions$ | async; trackBy: combobox.trackByOptionKeyFn\"\n class=\"et-combobox-selected-option\"\n >\n <ng-container\n *ngIf=\"\n combobox.customSelectedOptionTpl$ | async as customSelectedOptionTpl;\n else compOrDefaultSelectedOptionLabelTpl\n \"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #compOrDefaultSelectedOptionLabelTpl>\n <ng-container\n *ngIf=\"combobox.customSelectedOptionComponent$ | async as comp; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngComponentOutlet=\"comp; inputs: { option: item }\"></ng-container>\n </ng-container>\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ combobox.getOptionLabel(item) | async }}\n </ng-template>\n </ng-template>\n\n <span\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </span>\n </li>\n <li class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </li>\n </ul>\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.placeholder]=\"input.placeholder || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n <ng-container *ngIf=\"(combobox.multiple$ | async) === false\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </ng-container>\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"] }]
62
+ ], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<div>\n <div *ngIf=\"combobox.multiple$ | async\" class=\"et-combobox-selected-options\">\n <div\n *ngFor=\"let item of combobox.selectedOptions$ | async; trackBy: combobox.trackByOptionKeyFn\"\n class=\"et-combobox-selected-option\"\n aria-hidden=\"true\"\n >\n <ng-container\n *ngIf=\"\n combobox.customSelectedOptionTpl$ | async as customSelectedOptionTpl;\n else compOrDefaultSelectedOptionLabelTpl\n \"\n >\n <ng-container *ngTemplateOutlet=\"customSelectedOptionTpl; context: { option: item }\" />\n </ng-container>\n\n <ng-template #compOrDefaultSelectedOptionLabelTpl>\n <ng-container\n *ngIf=\"combobox.customSelectedOptionComponent$ | async as comp; else defaultSelectedOptionLabelTpl\"\n >\n <ng-container *ngComponentOutlet=\"comp; inputs: { option: item }\"></ng-container>\n </ng-container>\n <ng-template #defaultSelectedOptionLabelTpl>\n {{ combobox.getOptionLabel(item) | async }}\n </ng-template>\n </ng-template>\n\n <button\n (click)=\"combobox.removeSelectedOption(item); $event.stopPropagation()\"\n class=\"et-combobox-selected-option-remove\"\n tabindex=\"-1\"\n >\n x\n </button>\n </div>\n <div class=\"et-combobox-muliple-input\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </div>\n </div>\n\n <ng-template #inputTpl>\n <input\n [disabled]=\"input.disabled\"\n [attr.id]=\"input.id\"\n [attr.aria-required]=\"(input.required$ | async) || null\"\n [attr.aria-disabled]=\"(input.disabled$ | async) || null\"\n [attr.aria-invalid]=\"(input.invalid$ | async) || null\"\n [attr.aria-expanded]=\"combobox.isOpen$ | async\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-activedescendant]=\"combobox.activeOptionId$ | async\"\n [attr.aria-controls]=\"(combobox.selectBodyId$ | async) || null\"\n [attr.aria-owns]=\"(combobox.selectBodyId$ | async) || null\"\n (keydown)=\"combobox._processKeydownEvent($event)\"\n (keyup)=\"combobox._processKeyupEvent()\"\n (click)=\"combobox.open()\"\n (blur)=\"combobox._handleBlurEvent()\"\n (input)=\"combobox._processInputEvent($event)\"\n class=\"et-combobox-wrapper\"\n aria-haspopup=\"listbox\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n type=\"text\"\n value=\"{{ combobox.currentFilter }}\"\n etNativeInputRef\n />\n </ng-template>\n\n <ng-container *ngIf=\"(combobox.multiple$ | async) === false\">\n <ng-container *ngTemplateOutlet=\"inputTpl\" />\n </ng-container>\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container{--_clip-bottom: 0%;--_clip-bottom-to: 100%;--_clip-top: 0%;--_clip-top-to: 100%;clip-path:inset(var(--_clip-top) 0% var(--_clip-bottom) 0%)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{--_clip-bottom: var(--_clip-bottom-to);--_clip-top: var(--_clip-top-to)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:clip-path .15s var(--ease-1)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:clip-path 125ms var(--ease-3)}.et-combobox-body.et-with-default-animation[et-floating-placement^=top] .et-combobox-body-container{--_clip-bottom-to: 0%;--_clip-top-to: 100%}.et-combobox-body.et-with-default-animation[et-floating-placement^=bottom] .et-combobox-body-container{--_clip-bottom-to: 100%;--_clip-top-to: 0%}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:min(200px,var(--et-floating-max-height, 200px));overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid;transform:var(--et-floating-translate);will-change:transform}.et-combobox-option{display:block}:where(.et-combobox-option--active){background-color:#1e1e1e}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"] }]
63
63
  }], ctorParameters: function () { return []; } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFtRHZELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFHdkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhTLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFLbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBUFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsczdCQzFEOUIsMHlFQXFFQSw4L0NEaERJLElBQUksNkZBQ0osdUJBQXVCLCtJQUN2QixTQUFTLDhDQUNULG9CQUFvQiw0REFFcEIsS0FBSyxtSEFDTCxnQkFBZ0Isb0pBQ2hCLGlCQUFpQjs7MkZBOEJSLGlCQUFpQjtrQkFqRDdCLFNBQVM7K0JBQ0UsYUFBYSxjQUdYLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsYUFBYTt3QkFDcEIsU0FBUyxFQUFFLCtCQUErQjtxQkFDM0MsV0FDUTt3QkFDUCxJQUFJO3dCQUNKLHVCQUF1Qjt3QkFDdkIsU0FBUzt3QkFDVCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osS0FBSzt3QkFDTCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjtxQkFDbEIsa0JBQ2U7d0JBQ2Qsd0JBQXdCO3dCQUN4QixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7d0JBQ3REOzRCQUNFLFNBQVMsRUFBRSxpQkFBaUI7NEJBQzVCLE1BQU0sRUFBRTtnQ0FDTixTQUFTO2dDQUNULGNBQWM7Z0NBQ2QsZ0JBQWdCO2dDQUNoQixTQUFTO2dDQUNULE9BQU87Z0NBQ1AsV0FBVztnQ0FDWCxhQUFhO2dDQUNiLFVBQVU7Z0NBQ1YsV0FBVztnQ0FDWCxXQUFXO2dDQUNYLG1CQUFtQjtnQ0FDbkIseUJBQXlCO2dDQUN6QixpQkFBaUI7Z0NBQ2pCLG9CQUFvQjtnQ0FDcEIsc0JBQXNCO2dDQUN0QixvQkFBb0I7NkJBQ3JCOzRCQUNELHdFQUF3RTs0QkFDeEUsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO3lCQUMxQjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSwgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBDaGV2cm9uSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2ljb25zJztcbmltcG9ydCB7IElucHV0RGlyZWN0aXZlLCBOYXRpdmVJbnB1dFJlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRGVjb3JhdGVkSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ09NQk9CT1hfVE9LRU4sIENvbWJvYm94RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb21ib2JveEJvZHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJ0aWFscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tYm9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbWJvYm94JyxcbiAgICAnKGNsaWNrKSc6ICdjb21ib2JveC5zZWxlY3RJbnB1dEFuZE9wZW4oKScsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5hdGl2ZUlucHV0UmVmRGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBDaGV2cm9uSWNvbkNvbXBvbmVudCxcbiAgICBMZXREaXJlY3RpdmUsXG4gICAgTmdGb3IsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUsXG4gICAgeyBkaXJlY3RpdmU6IElucHV0RGlyZWN0aXZlLCBpbnB1dHM6IFsncGxhY2Vob2xkZXInXSB9LFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogQ29tYm9ib3hEaXJlY3RpdmUsXG4gICAgICBpbnB1dHM6IFtcbiAgICAgICAgJ29wdGlvbnMnLFxuICAgICAgICAnaW5pdGlhbFZhbHVlJyxcbiAgICAgICAgJ2ZpbHRlckludGVybmFsJyxcbiAgICAgICAgJ2xvYWRpbmcnLFxuICAgICAgICAnZXJyb3InLFxuICAgICAgICAnZW1wdHlUZXh0JyxcbiAgICAgICAgJ3BsYWNlaG9sZGVyJyxcbiAgICAgICAgJ211bHRpcGxlJyxcbiAgICAgICAgJ2JpbmRMYWJlbCcsXG4gICAgICAgICdiaW5kVmFsdWUnLFxuICAgICAgICAnYWxsb3dDdXN0b21WYWx1ZXMnLFxuICAgICAgICAnc2VsZWN0ZWRPcHRpb25Db21wb25lbnQnLFxuICAgICAgICAnb3B0aW9uQ29tcG9uZW50JyxcbiAgICAgICAgJ2JvZHlFcnJvckNvbXBvbmVudCcsXG4gICAgICAgICdib2R5TG9hZGluZ0NvbXBvbmVudCcsXG4gICAgICAgICdib2R5RW1wdHlDb21wb25lbnQnLFxuICAgICAgXSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgb3V0cHV0czogWydmaWx0ZXJDaGFuZ2UnXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudCBleHRlbmRzIERlY29yYXRlZElucHV0QmFzZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21ib2JveCA9IGluamVjdChDT01CT0JPWF9UT0tFTik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuY29tYm9ib3guc2V0Qm9keUNvbXBvbmVudChDb21ib2JveEJvZHlDb21wb25lbnQpO1xuICB9XG59XG4iLCI8IS0tIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzIC0tPlxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2V0SW5wdXRQcmVmaXhdXCIgLz5cblxuPGRpdiBjbGFzcz1cImV0LWNvbWJvYm94LXdyYXBwZXJcIj5cbiAgPHVsICpuZ0lmPVwiY29tYm9ib3gubXVsdGlwbGUkIHwgYXN5bmNcIiBjbGFzcz1cImV0LWNvbWJvYm94LXNlbGVjdGVkLW9wdGlvbnNcIj5cbiAgICA8bGlcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbWJvYm94LnNlbGVjdGVkT3B0aW9ucyQgfCBhc3luYzsgdHJhY2tCeTogY29tYm9ib3gudHJhY2tCeU9wdGlvbktleUZuXCJcbiAgICAgIGNsYXNzPVwiZXQtY29tYm9ib3gtc2VsZWN0ZWQtb3B0aW9uXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29tYm9ib3guY3VzdG9tU2VsZWN0ZWRPcHRpb25UcGwkIHwgYXN5bmMgYXMgY3VzdG9tU2VsZWN0ZWRPcHRpb25UcGw7XG4gICAgICAgICAgZWxzZSBjb21wT3JEZWZhdWx0U2VsZWN0ZWRPcHRpb25MYWJlbFRwbFxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tU2VsZWN0ZWRPcHRpb25UcGw7IGNvbnRleHQ6IHsgb3B0aW9uOiBpdGVtIH1cIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcE9yRGVmYXVsdFNlbGVjdGVkT3B0aW9uTGFiZWxUcGw+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImNvbWJvYm94LmN1c3RvbVNlbGVjdGVkT3B0aW9uQ29tcG9uZW50JCB8IGFzeW5jIGFzIGNvbXA7IGVsc2UgZGVmYXVsdFNlbGVjdGVkT3B0aW9uTGFiZWxUcGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wOyBpbnB1dHM6IHsgb3B0aW9uOiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlbGVjdGVkT3B0aW9uTGFiZWxUcGw+XG4gICAgICAgICAge3sgY29tYm9ib3guZ2V0T3B0aW9uTGFiZWwoaXRlbSkgfCBhc3luYyB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPHNwYW5cbiAgICAgICAgKGNsaWNrKT1cImNvbWJvYm94LnJlbW92ZVNlbGVjdGVkT3B0aW9uKGl0ZW0pOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICBjbGFzcz1cImV0LWNvbWJvYm94LXNlbGVjdGVkLW9wdGlvbi1yZW1vdmVcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgID5cbiAgICAgICAgeFxuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gICAgPGxpIGNsYXNzPVwiZXQtY29tYm9ib3gtbXVsaXBsZS1pbnB1dFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VHBsXCIgLz5cbiAgICA8L2xpPlxuICA8L3VsPlxuXG4gIDxuZy10ZW1wbGF0ZSAjaW5wdXRUcGw+XG4gICAgPGlucHV0XG4gICAgICBbZGlzYWJsZWRdPVwiaW5wdXQuZGlzYWJsZWRcIlxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiaW5wdXQucGxhY2Vob2xkZXIgfHwgbnVsbFwiXG4gICAgICAoa2V5ZG93bik9XCJjb21ib2JveC5fcHJvY2Vzc0tleWRvd25FdmVudCgkZXZlbnQpXCJcbiAgICAgIChrZXl1cCk9XCJjb21ib2JveC5fcHJvY2Vzc0tleXVwRXZlbnQoKVwiXG4gICAgICAoY2xpY2spPVwiY29tYm9ib3gub3BlbigpXCJcbiAgICAgIChibHVyKT1cImNvbWJvYm94Ll9oYW5kbGVCbHVyRXZlbnQoKVwiXG4gICAgICAoaW5wdXQpPVwiY29tYm9ib3guX3Byb2Nlc3NJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgdmFsdWU9XCJ7eyBjb21ib2JveC5jdXJyZW50RmlsdGVyIH19XCJcbiAgICAgIGV0TmF0aXZlSW5wdXRSZWZcbiAgICAvPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoY29tYm9ib3gubXVsdGlwbGUkIHwgYXN5bmMpID09PSBmYWxzZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRwbFwiIC8+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxldC1jaGV2cm9uLWljb24gY2xhc3M9XCJldC1jb21ib2JveC1jaGV2cm9uXCIgLz5cbjwvZGl2PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJbZXRJbnB1dFN1ZmZpeF1cIiAvPlxuXG48bmctdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFtRHZELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBa0I7SUFHdkQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUhTLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFLbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OEdBUFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsczdCQzFEOUIsbzVGQWtGQSxndUREN0RJLElBQUksNkZBQ0osdUJBQXVCLCtJQUN2QixTQUFTLDhDQUNULG9CQUFvQiw0REFFcEIsS0FBSyxtSEFDTCxnQkFBZ0Isb0pBQ2hCLGlCQUFpQjs7MkZBOEJSLGlCQUFpQjtrQkFqRDdCLFNBQVM7K0JBQ0UsYUFBYSxjQUdYLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsYUFBYTt3QkFDcEIsU0FBUyxFQUFFLCtCQUErQjtxQkFDM0MsV0FDUTt3QkFDUCxJQUFJO3dCQUNKLHVCQUF1Qjt3QkFDdkIsU0FBUzt3QkFDVCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osS0FBSzt3QkFDTCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjtxQkFDbEIsa0JBQ2U7d0JBQ2Qsd0JBQXdCO3dCQUN4QixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7d0JBQ3REOzRCQUNFLFNBQVMsRUFBRSxpQkFBaUI7NEJBQzVCLE1BQU0sRUFBRTtnQ0FDTixTQUFTO2dDQUNULGNBQWM7Z0NBQ2QsZ0JBQWdCO2dDQUNoQixTQUFTO2dDQUNULE9BQU87Z0NBQ1AsV0FBVztnQ0FDWCxhQUFhO2dDQUNiLFVBQVU7Z0NBQ1YsV0FBVztnQ0FDWCxXQUFXO2dDQUNYLG1CQUFtQjtnQ0FDbkIseUJBQXlCO2dDQUN6QixpQkFBaUI7Z0NBQ2pCLG9CQUFvQjtnQ0FDcEIsc0JBQXNCO2dDQUN0QixvQkFBb0I7NkJBQ3JCOzRCQUNELHdFQUF3RTs0QkFDeEUsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO3lCQUMxQjtxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSwgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBDaGV2cm9uSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2ljb25zJztcbmltcG9ydCB7IElucHV0RGlyZWN0aXZlLCBOYXRpdmVJbnB1dFJlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRGVjb3JhdGVkSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ09NQk9CT1hfVE9LRU4sIENvbWJvYm94RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb21ib2JveEJvZHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJ0aWFscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tYm9ib3guY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbWJvYm94JyxcbiAgICAnKGNsaWNrKSc6ICdjb21ib2JveC5zZWxlY3RJbnB1dEFuZE9wZW4oKScsXG4gIH0sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5hdGl2ZUlucHV0UmVmRGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBDaGV2cm9uSWNvbkNvbXBvbmVudCxcbiAgICBMZXREaXJlY3RpdmUsXG4gICAgTmdGb3IsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICBBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUsXG4gICAgeyBkaXJlY3RpdmU6IElucHV0RGlyZWN0aXZlLCBpbnB1dHM6IFsncGxhY2Vob2xkZXInXSB9LFxuICAgIHtcbiAgICAgIGRpcmVjdGl2ZTogQ29tYm9ib3hEaXJlY3RpdmUsXG4gICAgICBpbnB1dHM6IFtcbiAgICAgICAgJ29wdGlvbnMnLFxuICAgICAgICAnaW5pdGlhbFZhbHVlJyxcbiAgICAgICAgJ2ZpbHRlckludGVybmFsJyxcbiAgICAgICAgJ2xvYWRpbmcnLFxuICAgICAgICAnZXJyb3InLFxuICAgICAgICAnZW1wdHlUZXh0JyxcbiAgICAgICAgJ3BsYWNlaG9sZGVyJyxcbiAgICAgICAgJ211bHRpcGxlJyxcbiAgICAgICAgJ2JpbmRMYWJlbCcsXG4gICAgICAgICdiaW5kVmFsdWUnLFxuICAgICAgICAnYWxsb3dDdXN0b21WYWx1ZXMnLFxuICAgICAgICAnc2VsZWN0ZWRPcHRpb25Db21wb25lbnQnLFxuICAgICAgICAnb3B0aW9uQ29tcG9uZW50JyxcbiAgICAgICAgJ2JvZHlFcnJvckNvbXBvbmVudCcsXG4gICAgICAgICdib2R5TG9hZGluZ0NvbXBvbmVudCcsXG4gICAgICAgICdib2R5RW1wdHlDb21wb25lbnQnLFxuICAgICAgXSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgb3V0cHV0czogWydmaWx0ZXJDaGFuZ2UnXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudCBleHRlbmRzIERlY29yYXRlZElucHV0QmFzZSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21ib2JveCA9IGluamVjdChDT01CT0JPWF9UT0tFTik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuY29tYm9ib3guc2V0Qm9keUNvbXBvbmVudChDb21ib2JveEJvZHlDb21wb25lbnQpO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbZXRJbnB1dFByZWZpeF1cIiAvPlxuXG48ZGl2PlxuICA8ZGl2ICpuZ0lmPVwiY29tYm9ib3gubXVsdGlwbGUkIHwgYXN5bmNcIiBjbGFzcz1cImV0LWNvbWJvYm94LXNlbGVjdGVkLW9wdGlvbnNcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb21ib2JveC5zZWxlY3RlZE9wdGlvbnMkIHwgYXN5bmM7IHRyYWNrQnk6IGNvbWJvYm94LnRyYWNrQnlPcHRpb25LZXlGblwiXG4gICAgICBjbGFzcz1cImV0LWNvbWJvYm94LXNlbGVjdGVkLW9wdGlvblwiXG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb21ib2JveC5jdXN0b21TZWxlY3RlZE9wdGlvblRwbCQgfCBhc3luYyBhcyBjdXN0b21TZWxlY3RlZE9wdGlvblRwbDtcbiAgICAgICAgICBlbHNlIGNvbXBPckRlZmF1bHRTZWxlY3RlZE9wdGlvbkxhYmVsVHBsXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TZWxlY3RlZE9wdGlvblRwbDsgY29udGV4dDogeyBvcHRpb246IGl0ZW0gfVwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNjb21wT3JEZWZhdWx0U2VsZWN0ZWRPcHRpb25MYWJlbFRwbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tU2VsZWN0ZWRPcHRpb25Db21wb25lbnQkIHwgYXN5bmMgYXMgY29tcDsgZWxzZSBkZWZhdWx0U2VsZWN0ZWRPcHRpb25MYWJlbFRwbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogeyBvcHRpb246IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VsZWN0ZWRPcHRpb25MYWJlbFRwbD5cbiAgICAgICAgICB7eyBjb21ib2JveC5nZXRPcHRpb25MYWJlbChpdGVtKSB8IGFzeW5jIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJjb21ib2JveC5yZW1vdmVTZWxlY3RlZE9wdGlvbihpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgY2xhc3M9XCJldC1jb21ib2JveC1zZWxlY3RlZC1vcHRpb24tcmVtb3ZlXCJcbiAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICA+XG4gICAgICAgIHhcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJldC1jb21ib2JveC1tdWxpcGxlLWlucHV0XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUcGxcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8bmctdGVtcGxhdGUgI2lucHV0VHBsPlxuICAgIDxpbnB1dFxuICAgICAgW2Rpc2FibGVkXT1cImlucHV0LmRpc2FibGVkXCJcbiAgICAgIFthdHRyLmlkXT1cImlucHV0LmlkXCJcbiAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiKGlucHV0LnJlcXVpcmVkJCB8IGFzeW5jKSB8fCBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiKGlucHV0LmRpc2FibGVkJCB8IGFzeW5jKSB8fCBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCIoaW5wdXQuaW52YWxpZCQgfCBhc3luYykgfHwgbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImNvbWJvYm94LmlzT3BlbiQgfCBhc3luY1wiXG4gICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlucHV0LmRlc2NyaWJlZEJ5JCB8IGFzeW5jXCJcbiAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cImlucHV0LnBsYWNlaG9sZGVyIHx8IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImNvbWJvYm94LmFjdGl2ZU9wdGlvbklkJCB8IGFzeW5jXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiKGNvbWJvYm94LnNlbGVjdEJvZHlJZCQgfCBhc3luYykgfHwgbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLW93bnNdPVwiKGNvbWJvYm94LnNlbGVjdEJvZHlJZCQgfCBhc3luYykgfHwgbnVsbFwiXG4gICAgICAoa2V5ZG93bik9XCJjb21ib2JveC5fcHJvY2Vzc0tleWRvd25FdmVudCgkZXZlbnQpXCJcbiAgICAgIChrZXl1cCk9XCJjb21ib2JveC5fcHJvY2Vzc0tleXVwRXZlbnQoKVwiXG4gICAgICAoY2xpY2spPVwiY29tYm9ib3gub3BlbigpXCJcbiAgICAgIChibHVyKT1cImNvbWJvYm94Ll9oYW5kbGVCbHVyRXZlbnQoKVwiXG4gICAgICAoaW5wdXQpPVwiY29tYm9ib3guX3Byb2Nlc3NJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgY2xhc3M9XCJldC1jb21ib2JveC13cmFwcGVyXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgdmFsdWU9XCJ7eyBjb21ib2JveC5jdXJyZW50RmlsdGVyIH19XCJcbiAgICAgIGV0TmF0aXZlSW5wdXRSZWZcbiAgICAvPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoY29tYm9ib3gubXVsdGlwbGUkIHwgYXN5bmMpID09PSBmYWxzZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFRwbFwiIC8+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxldC1jaGV2cm9uLWljb24gY2xhc3M9XCJldC1jb21ib2JveC1jaGV2cm9uXCIgLz5cbjwvZGl2PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJbZXRJbnB1dFN1ZmZpeF1cIiAvPlxuXG48bmctdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -156,8 +156,10 @@ export class ComboboxDirective {
156
156
  //#region Members
157
157
  this._shouldIgnoreNextBlurEvent = false;
158
158
  this._deletedSearchWithKeyPress = false;
159
+ this.selectBodyId$ = new BehaviorSubject(null);
160
+ this.activeOptionId$ = new BehaviorSubject(null);
159
161
  this._currentFilter$ = new BehaviorSubject('');
160
- this._isOpen$ = this._animatedOverlay.isMounted$;
162
+ this.isOpen$ = this._animatedOverlay.isMounted$;
161
163
  this._selectionModel = new SelectionModel();
162
164
  this._activeSelectionModel = new ActiveSelectionModel();
163
165
  this._backspaceKeyPressManager = new KeyPressManager(BACKSPACE);
@@ -179,13 +181,13 @@ export class ComboboxDirective {
179
181
  observable: this._error$.pipe(map((v) => !!v)),
180
182
  }, {
181
183
  attribute: 'class.et-combobox--open',
182
- observable: this._isOpen$,
184
+ observable: this.isOpen$,
183
185
  }, {
184
186
  attribute: 'class.et-select-field--multiple',
185
187
  observable: this.multiple$,
186
188
  }, {
187
189
  attribute: 'class.et-select-field--open',
188
- observable: this._isOpen$,
190
+ observable: this.isOpen$,
189
191
  });
190
192
  this._comboboxBodyComponent = null;
191
193
  //#endregion
@@ -207,7 +209,7 @@ export class ComboboxDirective {
207
209
  this._animatedOverlay.autoResize = true;
208
210
  this._selectField._bindings.push({
209
211
  attribute: 'class.et-select-field--open',
210
- observable: this._isOpen$,
212
+ observable: this.isOpen$,
211
213
  });
212
214
  this._selectField._bindings.push({
213
215
  attribute: 'class.et-select-field--multiple',
@@ -253,7 +255,10 @@ export class ComboboxDirective {
253
255
  component: this._comboboxBodyComponent,
254
256
  mirrorWidth: true,
255
257
  });
256
- bodyRef?._options$
258
+ if (!bodyRef)
259
+ return;
260
+ this.selectBodyId$.next(bodyRef.id);
261
+ bodyRef._options$
257
262
  .pipe(switchMap((queryList) => combineLatest([
258
263
  queryList?.changes.pipe(startWith(queryList), map((l) => l.toArray())) ?? of([]),
259
264
  this._activeSelectionModel.activeOption$,
@@ -266,8 +271,16 @@ export class ComboboxDirective {
266
271
  element: optionRef._elementRef.nativeElement,
267
272
  container: bodyRef._containerElementRef?.nativeElement,
268
273
  });
274
+ this.activeOptionId$.next(optionRef.id);
269
275
  }), takeUntil(this._destroy$), takeUntil(this._animatedOverlay.afterClosed()))
270
276
  .subscribe();
277
+ this._animatedOverlay
278
+ .afterClosed()
279
+ .pipe(takeUntil(this._destroy$), tap(() => {
280
+ this.selectBodyId$.next(null);
281
+ this.activeOptionId$.next(null);
282
+ }))
283
+ .subscribe();
271
284
  }
272
285
  close() {
273
286
  if (!this._isOpen || this._animatedOverlay.isUnmounting)
@@ -614,4 +627,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
614
627
  type: ContentChild,
615
628
  args: [COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, { read: TemplateRef }]
616
629
  }] } });
617
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvZGlyZWN0aXZlcy9jb21ib2JveC9jb21ib2JveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osY0FBYyxFQUNkLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLHdCQUF3QixFQUN4QixlQUFlLEVBQ2YsY0FBYyxFQUdkLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsRUFBRSxFQUNGLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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Q0FQRSwgVEFCIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEFjdGl2ZVNlbGVjdGlvbk1vZGVsLFxuICBBbmltYXRlZE92ZXJsYXlDb21wb25lbnRCYXNlLFxuICBBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUsXG4gIEtleVByZXNzTWFuYWdlcixcbiAgU2VsZWN0aW9uTW9kZWwsXG4gIFNlbGVjdGlvbk1vZGVsQmluZGluZyxcbiAgVHlwZWRRdWVyeUxpc3QsXG4gIGNyZWF0ZURlc3Ryb3ksXG4gIGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MsXG4gIGlzRW1wdHlBcnJheSxcbiAgaXNPYmplY3RBcnJheSxcbiAgaXNQcmltaXRpdmVBcnJheSxcbiAgc2Nyb2xsVG9FbGVtZW50LFxufSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBvZixcbiAgc2tpcCxcbiAgc2tpcFdoaWxlLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSU5QVVRfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNFTEVDVF9GSUVMRF9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQ09ORklHX1RPS0VOLCBDT01CT0JPWF9ERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBDb21ib2JveE9wdGlvblR5cGUsXG4gIENvbXBvbmVudFdpdGhFcnJvcixcbiAgQ29tcG9uZW50V2l0aE9wdGlvbixcbiAgS2V5SGFuZGxlclJlc3VsdCxcbiAgVGVtcGxhdGVSZWZXaXRoRXJyb3IsXG4gIFRlbXBsYXRlUmVmV2l0aE9wdGlvbixcbiAgYXNzZXRDb21ib2JveEJvZHlDb21wb25lbnRTZXQsXG4gIGNvbWJvYm94RXJyb3IsXG59IGZyb20gJy4uLy4uL3ByaXZhdGUnO1xuaW1wb3J0IHsgaXNPcHRpb25EaXNhYmxlZCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENPTUJPQk9YX0JPRFlfRU1QVFlfVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1ib2R5LWVtcHR5LXRlbXBsYXRlJztcbmltcG9ydCB7IENPTUJPQk9YX0JPRFlfRVJST1JfVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1ib2R5LWVycm9yLXRlbXBsYXRlJztcbmltcG9ydCB7IENPTUJPQk9YX0JPRFlfTE9BRElOR19URU1QTEFURV9UT0tFTiB9IGZyb20gJy4uL2NvbWJvYm94LWJvZHktbG9hZGluZy10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9PUFRJT05fVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1vcHRpb24tdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfU0VMRUNURURfT1BUSU9OX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtc2VsZWN0ZWQtb3B0aW9uLXRlbXBsYXRlJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENvbWJvYm94RGlyZWN0aXZlPignRVRfQ09NQk9CT1hfSU5QVVRfVE9LRU4nKTtcblxuZXhwb3J0IHR5cGUgQWJzdHJhY3RDb21ib2JveEJvZHkgPSBBbmltYXRlZE92ZXJsYXlDb21wb25lbnRCYXNlICYge1xuICBfb3B0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxUeXBlZFF1ZXJ5TGlzdDxBYnN0cmFjdENvbWJvYm94T3B0aW9uPiB8IG51bGw+O1xuICBfY29udGFpbmVyRWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBYnN0cmFjdENvbWJvYm94T3B0aW9uID0ge1xuICBfb3B0aW9uJDogQmVoYXZpb3JTdWJqZWN0PHVua25vd24+O1xuICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ09NQk9CT1hfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogQ29tYm9ib3hEaXJlY3RpdmUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tYm9ib3hEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyNyZWdpb24gSW5qZWN0c1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dCA9IGluamVjdChJTlBVVF9UT0tFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdEZpZWxkID0gaW5qZWN0KFNFTEVDVF9GSUVMRF9UT0tFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGVkT3ZlcmxheSA9IGluamVjdDxBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU8QWJzdHJhY3RDb21ib2JveEJvZHk+PihBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb21ib2JveENvbmZpZyA9IGluamVjdChDT01CT0JPWF9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLy8jcmVnaW9uIElucHV0c1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5nZXRGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgfVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogdW5rbm93bltdKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0T3B0aW9ucyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaW5pdGlhbFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0aW9uKHZhbHVlKTtcbiAgICB0aGlzLl9pbml0aWFsVmFsdWUkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2luaXRpYWxWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd24+KG51bGwpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBmaWx0ZXJJbnRlcm5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySW50ZXJuYWwkLnZhbHVlO1xuICB9XG4gIHNldCBmaWx0ZXJJbnRlcm5hbCh2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IHZhbCA9IGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpO1xuICAgIHRoaXMuX2ZpbHRlckludGVybmFsJC5uZXh0KHZhbCk7XG5cbiAgICBpZiAoIXZhbCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2ZpbHRlckludGVybmFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC52YWx1ZTtcbiAgfVxuICBzZXQgbG9hZGluZyh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQoYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSkpO1xuICB9XG4gIHByaXZhdGUgX2xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRpbmckID0gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGVycm9yKCkge1xuICAgIHJldHVybiB0aGlzLl9lcnJvciQudmFsdWU7XG4gIH1cbiAgc2V0IGVycm9yKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fZXJyb3IkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj4obnVsbCk7XG5cbiAgQElucHV0KClcbiAgZW1wdHlUZXh0ID0gdGhpcy5fY29tYm9ib3hDb25maWc/LmVtcHR5VGV4dCA/PyBDT01CT0JPWF9ERUZBVUxUX0NPTkZJRy5lbXB0eVRleHQ7XG5cbiAgQElucHV0KClcbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlciQudmFsdWU7XG4gIH1cbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQElucHV0KClcbiAgc2V0IG11bHRpcGxlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0QWxsb3dNdWx0aXBsZShib29sZWFuQXR0cmlidXRlKHZhbHVlKSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYmluZExhYmVsKHZhbHVlOiBTZWxlY3Rpb25Nb2RlbEJpbmRpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0TGFiZWxCaW5kaW5nKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBiaW5kVmFsdWUodmFsdWU6IFNlbGVjdGlvbk1vZGVsQmluZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRWYWx1ZUJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJpbmRLZXkodmFsdWU6IFNlbGVjdGlvbk1vZGVsQmluZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRLZXlCaW5kaW5nKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBhbGxvd0N1c3RvbVZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dDdXN0b21WYWx1ZXMkLnZhbHVlO1xuICB9XG4gIHNldCBhbGxvd0N1c3RvbVZhbHVlcyh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2FsbG93Q3VzdG9tVmFsdWVzJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9hbGxvd0N1c3RvbVZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBnZXQgb3B0aW9uQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25Db21wb25lbnQkLnZhbHVlO1xuICB9XG4gIHNldCBvcHRpb25Db21wb25lbnQoY29tcG9uZW50OiBDb21wb25lbnRXaXRoT3B0aW9uIHwgbnVsbCkge1xuICAgIHRoaXMuX29wdGlvbkNvbXBvbmVudCQubmV4dChjb21wb25lbnQpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbkNvbXBvbmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbXBvbmVudFdpdGhPcHRpb24gfCBudWxsPihcbiAgICB0aGlzLl9jb21ib2JveENvbmZpZz8ub3B0aW9uQ29tcG9uZW50ID8/IG51bGwsXG4gICk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkT3B0aW9uQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCQudmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkT3B0aW9uQ29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50V2l0aE9wdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCQubmV4dChjb21wb25lbnQpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkT3B0aW9uQ29tcG9uZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50V2l0aE9wdGlvbiB8IG51bGw+KFxuICAgIHRoaXMuX2NvbWJvYm94Q29uZmlnPy5zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCA/PyBudWxsLFxuICApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBib2R5RXJyb3JDb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JvZHlFcnJvckNvbXBvbmVudCQudmFsdWU7XG4gIH1cbiAgc2V0IGJvZHlFcnJvckNvbXBvbmVudCh2YWx1ZTogQ29tcG9uZW50V2l0aEVycm9yIHwgbnVsbCkge1xuICAgIHRoaXMuX2JvZHlFcnJvckNvbXBvbmVudCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYm9keUVycm9yQ29tcG9uZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50V2l0aEVycm9yIHwgbnVsbD4oXG4gICAgdGhpcy5fY29tYm9ib3hDb25maWc/LmJvZHlFcnJvckNvbXBvbmVudCA/PyBudWxsLFxuICApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBib2R5TG9hZGluZ0NvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYm9keUxvYWRpbmdDb21wb25lbnQkLnZhbHVlO1xuICB9XG4gIHNldCBib2R5TG9hZGluZ0NvbXBvbmVudCh2YWx1ZTogQ29tcG9uZW50VHlwZTx1bmtub3duPiB8IG51bGwpIHtcbiAgICB0aGlzLl9ib2R5TG9hZGluZ0NvbXBvbmVudCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYm9keUxvYWRpbmdDb21wb25lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb21wb25lbnRUeXBlPHVua25vd24+IHwgbnVsbD4oXG4gICAgdGhpcy5fY29tYm9ib3hDb25maWc/LmJvZHlMb2FkaW5nQ29tcG9uZW50ID8/IG51bGwsXG4gICk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGJvZHlFbXB0eUNvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYm9keUVtcHR5Q29tcG9uZW50JC52YWx1ZTtcbiAgfVxuICBzZXQgYm9keUVtcHR5Q29tcG9uZW50KHZhbHVlOiBDb21wb25lbnRUeXBlPHVua25vd24+IHwgbnVsbCkge1xuICAgIHRoaXMuX2JvZHlFbXB0eUNvbXBvbmVudCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYm9keUVtcHR5Q29tcG9uZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50VHlwZTx1bmtub3duPiB8IG51bGw+KFxuICAgIHRoaXMuX2NvbWJvYm94Q29uZmlnPy5ib2R5RW1wdHlDb21wb25lbnQgPz8gbnVsbCxcbiAgKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gT3V0cHV0c1xuXG4gIEBPdXRwdXQoKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIE1lbWJlcnNcblxuICBwcml2YXRlIF9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSBmYWxzZTtcblxuICBnZXQgY3VycmVudEZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZpbHRlciQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudEZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgZ2V0IF9pc09wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQ7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPcGVuJCA9IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQkO1xuXG4gIHJlYWRvbmx5IF9zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVTZWxlY3Rpb25Nb2RlbCA9IG5ldyBBY3RpdmVTZWxlY3Rpb25Nb2RlbCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrc3BhY2VLZXlQcmVzc01hbmFnZXIgPSBuZXcgS2V5UHJlc3NNYW5hZ2VyKEJBQ0tTUEFDRSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRPcHRpb25zJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiQ7XG4gIHJlYWRvbmx5IG11bHRpcGxlJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUkO1xuICByZWFkb25seSBtdWx0aXBsZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMubXVsdGlwbGUkLCB7IHJlcXVpcmVTeW5jOiB0cnVlIH0pO1xuICByZWFkb25seSBvcHRpb25zJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmZpbHRlcmVkT3B0aW9ucyQ7XG4gIHJlYWRvbmx5IHJhd09wdGlvbnMkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwub3B0aW9ucyQ7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9PUFRJT05fVEVNUExBVEVfVE9LRU4sIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgc2V0IG9wdGlvblRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZldpdGhPcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9vcHRpb25UZW1wbGF0ZSQubmV4dCh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25UZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfU0VMRUNURURfT1BUSU9OX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBzZWxlY3RlZE9wdGlvblRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZldpdGhPcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9zZWxlY3RlZE9wdGlvblRlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZldpdGhPcHRpb24gfCBudWxsPihudWxsKTtcblxuICBAQ29udGVudENoaWxkKENPTUJPQk9YX0JPRFlfTE9BRElOR19URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keUxvYWRpbmdUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5TG9hZGluZ1RlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHlMb2FkaW5nVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfQk9EWV9FUlJPUl9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keUVycm9yVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmV2l0aEVycm9yIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYm9keUVycm9yVGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keUVycm9yVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZldpdGhFcnJvciB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfQk9EWV9FTVBUWV9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keUVtcHR5VGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYm9keUVtcHR5VGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keUVtcHR5VGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IF9iaW5kaW5ncyA9IGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MoXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtY29tYm9ib3gtLWxvYWRpbmcnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fbG9hZGluZyQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1jb21ib2JveC0tZXJyb3InLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fZXJyb3IkLnBpcGUobWFwKCh2KSA9PiAhIXYpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LWNvbWJvYm94LS1vcGVuJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2lzT3BlbiQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zZWxlY3QtZmllbGQtLW11bHRpcGxlJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMubXVsdGlwbGUkLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2VsZWN0LWZpZWxkLS1vcGVuJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2lzT3BlbiQsXG4gICAgfSxcbiAgKTtcblxuICBwcml2YXRlIF9jb21ib2JveEJvZHlDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8QWJzdHJhY3RDb21ib2JveEJvZHk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIENvbXB1dGVzXG5cbiAgcmVhZG9ubHkgY3VzdG9tT3B0aW9uVHBsJCA9IHRoaXMuX29wdGlvblRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tT3B0aW9uQ29tcG9uZW50JCA9IHRoaXMuX29wdGlvbkNvbXBvbmVudCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbVNlbGVjdGVkT3B0aW9uVHBsJCA9IHRoaXMuX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21TZWxlY3RlZE9wdGlvbkNvbXBvbmVudCQgPSB0aGlzLl9zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbUJvZHlMb2FkaW5nVHBsJCA9IHRoaXMuX2JvZHlMb2FkaW5nVGVtcGxhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5TG9hZGluZ0NvbXBvbmVudCQgPSB0aGlzLl9ib2R5TG9hZGluZ0NvbXBvbmVudCQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbUJvZHlFcnJvclRwbCQgPSB0aGlzLl9ib2R5RXJyb3JUZW1wbGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbUJvZHlFcnJvckNvbXBvbmVudCQgPSB0aGlzLl9ib2R5RXJyb3JDb21wb25lbnQkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5RW1wdHlUcGwkID0gdGhpcy5fYm9keUVtcHR5VGVtcGxhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5RW1wdHlDb21wb25lbnQkID0gdGhpcy5fYm9keUVtcHR5Q29tcG9uZW50JC5hc09ic2VydmFibGUoKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gTGlmZWN5Y2xlXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0aW9uTW9kZWwodGhpcy5fc2VsZWN0aW9uTW9kZWwpO1xuXG4gICAgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LnBsYWNlbWVudCA9ICdib3R0b20nO1xuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5mYWxsYmFja1BsYWNlbWVudHMgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuYXV0b1Jlc2l6ZSA9IHRydWU7XG5cbiAgICB0aGlzLl9zZWxlY3RGaWVsZC5fYmluZGluZ3MucHVzaCh7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zZWxlY3QtZmllbGQtLW9wZW4nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5faXNPcGVuJCxcbiAgICB9KTtcblxuICAgIHRoaXMuX3NlbGVjdEZpZWxkLl9iaW5kaW5ncy5wdXNoKHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNlbGVjdC1maWVsZC0tbXVsdGlwbGUnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5tdWx0aXBsZSQsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0RGlzcGF0Y2hGaWx0ZXJDaGFuZ2VzKCk7XG5cbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZygpO1xuICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodmFsdWUpO1xuICAgICAgICAgIHRoaXMuX3NldEZpbHRlckZyb21JbnB1dFZhbHVlKCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5faW5wdXQub25FeHRlcm5hbFVwZGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0aW9uKHRoaXMuX2lucHV0LnZhbHVlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICBzZXRCb2R5Q29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxBYnN0cmFjdENvbWJvYm94Qm9keT4pIHtcbiAgICB0aGlzLl9jb21ib2JveEJvZHlDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBnZXRPcHRpb25MYWJlbChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwkKG9wdGlvbik7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZShvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0VmFsdWUkKG9wdGlvbik7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb246IHVua25vd24pIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgYXNzZXRDb21ib2JveEJvZHlDb21wb25lbnRTZXQodGhpcy5fY29tYm9ib3hCb2R5Q29tcG9uZW50KTtcblxuICAgIGlmICh0aGlzLl9pc09wZW4gfHwgdGhpcy5faW5wdXQuZGlzYWJsZWQgfHwgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LmlzTW91bnRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IGJvZHlSZWYgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkubW91bnQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLl9jb21ib2JveEJvZHlDb21wb25lbnQsXG4gICAgICBtaXJyb3JXaWR0aDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGJvZHlSZWY/Ll9vcHRpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0KSA9PlxuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgcXVlcnlMaXN0Py5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aChxdWVyeUxpc3QpLFxuICAgICAgICAgICAgICBtYXAoKGwpID0+IGwudG9BcnJheSgpKSxcbiAgICAgICAgICAgICkgPz8gb2YoW10gYXMgQWJzdHJhY3RDb21ib2JveE9wdGlvbltdKSxcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLmFjdGl2ZU9wdGlvbiQsXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoW29wdGlvbnMsIGFjdGl2ZU9wdGlvbkRhdGFdKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9uUmVmID0gb3B0aW9ucy5maW5kKChvKSA9PiBvLl9vcHRpb24kLnZhbHVlID09PSBhY3RpdmVPcHRpb25EYXRhKTtcblxuICAgICAgICAgIGlmICghb3B0aW9uUmVmPy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgICAgICAgc2Nyb2xsVG9FbGVtZW50KHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnaW5zdGFudCcsXG4gICAgICAgICAgICBlbGVtZW50OiBvcHRpb25SZWYuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogYm9keVJlZi5fY29udGFpbmVyRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9hbmltYXRlZE92ZXJsYXkuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzT3BlbiB8fCB0aGlzLl9hbmltYXRlZE92ZXJsYXkuaXNVbm1vdW50aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkudW5tb3VudCgpO1xuICB9XG5cbiAgZm9jdXMoKSB7XG4gICAgdGhpcy5faW5wdXQubmF0aXZlSW5wdXRSZWY/LmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgc2VsZWN0SW5wdXRBbmRPcGVuKCkge1xuICAgIGlmICh0aGlzLl9pbnB1dC5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5faW5wdXQubmF0aXZlSW5wdXRSZWY/LmVsZW1lbnQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcbiAgICB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWVGcm9tT3B0aW9uKG9wdGlvbjogdW5rbm93bikge1xuICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWRkU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3NldEZpbHRlckZyb21JbnB1dFZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcignJyk7XG4gICAgfVxuICB9XG5cbiAgaXNPcHRpb25TZWxlY3RlZChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCQob3B0aW9uKTtcbiAgfVxuXG4gIGlzT3B0aW9uQWN0aXZlKG9wdGlvbjogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlbC5hY3RpdmVPcHRpb24kLnBpcGUobWFwKChhY3RpdmVPcHRpb24pID0+IGFjdGl2ZU9wdGlvbiA9PT0gb3B0aW9uKSk7XG4gIH1cblxuICB0cmFja0J5T3B0aW9uS2V5Rm46IFRyYWNrQnlGdW5jdGlvbjx1bmtub3duPiA9IChpbmRleCwgaXRlbSkgPT4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0S2V5KGl0ZW0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gIF9pZ25vcmVOZXh0Qmx1ckV2ZW50KCkge1xuICAgIHRoaXMuX3Nob3VsZElnbm9yZU5leHRCbHVyRXZlbnQgPSB0cnVlO1xuICB9XG5cbiAgX3Byb2Nlc3NLZXlkb3duRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBpc09wZW4gPSB0aGlzLl9pc09wZW47XG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGU7XG4gICAgY29uc3QgY2FuQWRkQ3VzdG9tVmFsdWUgPSB0aGlzLmFsbG93Q3VzdG9tVmFsdWVzO1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICBjb25zdCBoYXNGaWx0ZXJWYWx1ZSA9ICEhdmFsdWU7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uO1xuICAgIGNvbnN0IGlzQmFja3NwYWNlUHJlc3NlZCA9IHRoaXMuX2JhY2tzcGFjZUtleVByZXNzTWFuYWdlci5pc1ByZXNzZWQoZXZlbnQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBLZXlIYW5kbGVyUmVzdWx0ID0ge307XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgLy8gVGhlIHVzZXIgdHlwZWQgYSBjdXN0b20gdmFsdWUgYW5kIHByZXNzZWQgZW50ZXIuIEFkZCBpdCB0byB0aGUgc2VsZWN0ZWQgb3B0aW9ucy5cbiAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgaXQgaXMgaW1wb3NzaWJsZSB0byBzZWxlY3QgdGhlIGFjdGl2ZSBvcHRpb24gd2l0aCB0aGUga2V5Ym9hcmQgaWYgY2FuQWRkQ3VzdG9tVmFsdWUgaXMgdHJ1ZS5cbiAgICAgIC8vIFRvIGZpeCB0aGlzLCB0aGUgYWN0aXZlIG9wdGlvbiBzaG91bGQgYWxzbyBpbmNsdWRlIHRoZSBvcmlnaW4gaXQgZ290IGFjdGl2ZSBmcm9tIChrZXlib2FyZCBvciBwcm9ncmFtbWF0aWMpLlxuICAgICAgLy8gVGhlIFwidmFsdWVcIiBjaGFuZ2luZyBzaG91bGQgcHV0IHRoZSBjb21ib2JveCBpbnRvIGEgXCJ1c2UgdGhlIGN1c3RvbSBpbnB1dCBvbiBlbnRlclwiIG1vZGUuXG4gICAgICAvLyBUaGUgXCJhY3RpdmUgb3B0aW9uXCIgY2hhbmdpbmcgdmlhIGtleWJvYXJkIHNob3VsZCBwdXQgdGhlIGNvbWJvYm94IGludG8gYSBcInVzZSB0aGUgYWN0aXZlIG9wdGlvbiBvbiBlbnRlclwiIG1vZGUuXG4gICAgICBpZiAoY2FuQWRkQ3VzdG9tVmFsdWUgJiYgaGFzRmlsdGVyVmFsdWUpIHtcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ2FkZCcsIG9wdGlvbjogdmFsdWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLmFjdGl2ZU9wdGlvbjtcblxuICAgICAgICBpZiAoYWN0aXZlT3B0aW9uKSB7XG4gICAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSB7IHR5cGU6ICd0b2dnbGUnLCBvcHRpb246IGFjdGl2ZU9wdGlvbiB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0geyB0eXBlOiAnYWRkJywgb3B0aW9uOiBhY3RpdmVPcHRpb24gfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgcmVzdWx0LnNldEZpbHRlciA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBFU0NBUEUpIHtcbiAgICAgIGlmIChpc09wZW4pIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgfSBlbHNlIGlmICghaXNNdWx0aXBsZSkge1xuICAgICAgICByZXN1bHQuc2V0RmlsdGVyID0gJyc7XG4gICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSAnY2xlYXInO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBUQUIpIHtcbiAgICAgIHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID0gJ2Nsb3NlJztcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IEJBQ0tTUEFDRSkge1xuICAgICAgaWYgKGlzQmFja3NwYWNlUHJlc3NlZCAmJiB2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFoYXNGaWx0ZXJWYWx1ZSAmJiBpc011bHRpcGxlICYmIHNlbGVjdGlvbi5sZW5ndGggJiYgIXRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MpIHtcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ3JlbW92ZScsIG9wdGlvbjogc2VsZWN0aW9uW3NlbGVjdGlvbi5sZW5ndGggLSAxXSB9O1xuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzQmFja3NwYWNlUHJlc3NlZCkge1xuICAgICAgICB0aGlzLl9kZWxldGVkU2VhcmNoV2l0aEtleVByZXNzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnb3Blbic7XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuZXZhbHVhdGVLZXlib2FyZEV2ZW50KGV2ZW50KTtcblxuICAgIGlmIChrZXlDb2RlID09PSBBICYmIGV2ZW50LmN0cmxLZXkgJiYgaXNNdWx0aXBsZSkge1xuICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9ICd0b2dnbGVBbGwnO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQpO1xuICB9XG5cbiAgX3Byb2Nlc3NLZXl1cEV2ZW50KCkge1xuICAgIHRoaXMuX2JhY2tzcGFjZUtleVByZXNzTWFuYWdlci5jbGVhcigpO1xuICB9XG5cbiAgX3Byb2Nlc3NJbnB1dEV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIHRoaXMuX3VwZGF0ZUZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICBfaGFuZGxlQmx1ckV2ZW50KCkge1xuICAgIGlmICh0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50KSB7XG4gICAgICB0aGlzLl9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcignJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlciA9PT0gJycpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICBwcml2YXRlIF9pbml0RGlzcGF0Y2hGaWx0ZXJDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2N1cnJlbnRGaWx0ZXIkXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKCgpID0+IHRoaXMuZmlsdGVySW50ZXJuYWwpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCh2KSA9PiB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHYpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0Lm5hdGl2ZUlucHV0UmVmICYmIHRoaXMuX2lucHV0Lm5hdGl2ZUlucHV0UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX2lucHV0Lm5hdGl2ZUlucHV0UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXIgPT09IHZhbHVlKSByZXR1cm47XG5cbiAgICB0aGlzLl9jdXJyZW50RmlsdGVyJC5uZXh0KHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmZpbHRlckludGVybmFsKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRGaWx0ZXIodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEZpbHRlckZyb21JbnB1dFZhbHVlKCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlKSByZXR1cm47XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2lucHV0LnZhbHVlO1xuXG4gICAgaWYgKCF2YWx1ZSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyKCcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5nZXRPcHRpb25CeVZhbHVlKHZhbHVlKTtcblxuICAgIGlmICghb3B0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBsYWJlbCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmdldExhYmVsKG9wdGlvbik7XG5cbiAgICBpZiAodHlwZW9mIGxhYmVsICE9PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgdGhpcy5fdXBkYXRlRmlsdGVyKGxhYmVsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0OiBLZXlIYW5kbGVyUmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIGlmIChyZXN1bHQub3ZlcmxheU9wZXJhdGlvbiA9PT0gJ29wZW4nKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0LnNldEZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl91cGRhdGVGaWx0ZXIocmVzdWx0LnNldEZpbHRlcik7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5vcHRpb25BY3Rpb24pIHtcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5vcHRpb25BY3Rpb24gPT09ICdjbGVhcicpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhclNlbGVjdGVkT3B0aW9ucygpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5vcHRpb25BY3Rpb24gPT09ICd0b2dnbGVBbGwnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlQWxsU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgb3B0aW9uIH0gPSByZXN1bHQub3B0aW9uQWN0aW9uO1xuXG4gICAgICAgIGlmIChpc09wdGlvbkRpc2FibGVkKG9wdGlvbikpIHJldHVybjtcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ2FkZCcpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hZGRTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICdyZW1vdmUnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwucmVtb3ZlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlID09PSAndG9nZ2xlJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnRvZ2dsZVNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gRGV2IG1vZGVcblxuICBwcml2YXRlIF9kZWJ1Z1ZhbGlkYXRlQ29tYm9ib3hDb25maWcoaXNSZXRyeSA9IGZhbHNlKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fc2VsZWN0aW9uTW9kZWwubGFiZWxCaW5kaW5nJCwgdGhpcy5fc2VsZWN0aW9uTW9kZWwudmFsdWVCaW5kaW5nJCwgdGhpcy5fYWxsb3dDdXN0b21WYWx1ZXMkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKGlzUmV0cnkgPyAxIDogMCksIC8vIFNraXAgaWYgcmV0cnlpbmcgdG8gYXZvaWQgaW5maW5pdGUgbG9vcFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIG1hcCgoW2JpbmRMYWJlbCwgYmluZFZhbHVlLCBhbGxvd0N1c3RvbVZhbHVlc10pID0+IHtcbiAgICAgICAgICBjb25zdCBzaG91bGRCZU9iamVjdHMgPSBiaW5kTGFiZWwgJiYgYmluZFZhbHVlICYmICFhbGxvd0N1c3RvbVZhbHVlcztcblxuICAgICAgICAgIGlmIChzaG91bGRCZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHJldHVybiBDb21ib2JveE9wdGlvblR5cGUuT2JqZWN0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBDb21ib2JveE9wdGlvblR5cGUuUHJpbWl0aXZlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChleHBlY3RlZE9wdGlvblR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwub3B0aW9ucztcblxuICAgICAgICAgIGlmIChpc0VtcHR5QXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXhwZWN0ZWRPcHRpb25UeXBlID09PSBDb21ib2JveE9wdGlvblR5cGUuT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0QXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICAgICAgdGhyb3cgY29tYm9ib3hFcnJvcignb3B0aW9uc19vYmplY3RfbWlzbWF0Y2gnLCB0cnVlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGV4cGVjdGVkT3B0aW9uVHlwZSA9PT0gQ29tYm9ib3hPcHRpb25UeXBlLlByaW1pdGl2ZSkge1xuICAgICAgICAgICAgaWYgKCFpc1ByaW1pdGl2ZUFycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoJ29wdGlvbnNfcHJpbWl0aXZlX21pc21hdGNoJywgdHJ1ZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZyh0cnVlKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZWJ1Z1ZhbGlkYXRlT3B0aW9uQW5kSW5pdGlhbFZhbHVlU2NoZW1hKGlzUmV0cnkgPSBmYWxzZSkge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMub3B0aW9ucyQsIHRoaXMuX2luaXRpYWxWYWx1ZSRdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoaXNSZXRyeSA/IDEgOiAwKSwgLy8gU2tpcCBpZiByZXRyeWluZyB0byBhdm9pZCBpbmZpbml0ZSBsb29wXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoW29wdGlvbnMsIGluaXRpYWxWYWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09PSBudWxsIHx8IGluaXRpYWxWYWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IGlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmVBcnJheShvcHRpb25zKTtcbiAgICAgICAgICBjb25zdCBpbml0aWFsVmFsdWVJc1ByaW1pdGl2ZSA9IHRoaXMubXVsdGlwbGVcbiAgICAgICAgICAgID8gaXNQcmltaXRpdmVBcnJheShpbml0aWFsVmFsdWUpXG4gICAgICAgICAgICA6IHR5cGVvZiBpbml0aWFsVmFsdWUgIT09ICdvYmplY3QnO1xuXG4gICAgICAgICAgaWYgKGlzUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICBpZiAoIWluaXRpYWxWYWx1ZUlzUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoJ2luaXRfdmFsX3ByaW1pdGl2ZV9taXNtYXRjaCcsIHRydWUsIHsgaW5pdGlhbFZhbHVlLCBvcHRpb25zIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5pdGlhbFZhbHVlSXNQcmltaXRpdmUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgY29tYm9ib3hFcnJvcignaW5pdF92YWxfb2JqZWN0X21pc21hdGNoJywgdHJ1ZSwgeyBpbml0aWFsVmFsdWUsIG9wdGlvbnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVPcHRpb25BbmRJbml0aWFsVmFsdWVTY2hlbWEodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=
630
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvZGlyZWN0aXZlcy9jb21ib2JveC9jb21ib2JveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osY0FBYyxFQUNkLEtBQUssRUFFTCxNQUFNLEVBQ04sV0FBVyxFQUVYLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLHdCQUF3QixFQUN4QixlQUFlLEVBQ2YsY0FBYyxFQUdkLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsWUFBWSxFQUNaLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZUFBZSxHQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLFVBQVUsRUFDVixhQUFhLEVBQ2IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsRUFBRSxFQUNGLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNILFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFB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LEtBQUs7Z0JBWUYsa0JBQWtCO3NCQURyQixLQUFLO2dCQVlGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFZRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBZ0JhLFlBQVk7c0JBRDlCLE1BQU07Z0JBa0NILGNBQWM7c0JBRGpCLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQU8vRCxzQkFBc0I7c0JBRHpCLFlBQVk7dUJBQUMsdUNBQXVDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQU94RSxtQkFBbUI7c0JBRHRCLFlBQVk7dUJBQUMsb0NBQW9DLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQU9yRSxpQkFBaUI7c0JBRHBCLFlBQVk7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQU9uRSxpQkFBaUI7c0JBRHBCLFlBQVk7dUJBQUMsa0NBQWtDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQSwgQkFDS1NQQUNFLCBFTlRFUiwgRVNDQVBFLCBUQUIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaXNEZXZNb2RlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgQWN0aXZlU2VsZWN0aW9uTW9kZWwsXG4gIEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2UsXG4gIEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSxcbiAgS2V5UHJlc3NNYW5hZ2VyLFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgU2VsZWN0aW9uTW9kZWxCaW5kaW5nLFxuICBUeXBlZFF1ZXJ5TGlzdCxcbiAgY3JlYXRlRGVzdHJveSxcbiAgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyxcbiAgaXNFbXB0eUFycmF5LFxuICBpc09iamVjdEFycmF5LFxuICBpc1ByaW1pdGl2ZUFycmF5LFxuICBzY3JvbGxUb0VsZW1lbnQsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjYXRjaEVycm9yLFxuICBjb21iaW5lTGF0ZXN0LFxuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIG9mLFxuICBza2lwLFxuICBza2lwV2hpbGUsXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgdGhyb3dFcnJvcixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTlBVVF9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgU0VMRUNUX0ZJRUxEX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDT01CT0JPWF9DT05GSUdfVE9LRU4sIENPTUJPQk9YX0RFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENvbWJvYm94T3B0aW9uVHlwZSxcbiAgQ29tcG9uZW50V2l0aEVycm9yLFxuICBDb21wb25lbnRXaXRoT3B0aW9uLFxuICBLZXlIYW5kbGVyUmVzdWx0LFxuICBUZW1wbGF0ZVJlZldpdGhFcnJvcixcbiAgVGVtcGxhdGVSZWZXaXRoT3B0aW9uLFxuICBhc3NldENvbWJvYm94Qm9keUNvbXBvbmVudFNldCxcbiAgY29tYm9ib3hFcnJvcixcbn0gZnJvbSAnLi4vLi4vcHJpdmF0ZSc7XG5pbXBvcnQgeyBpc09wdGlvbkRpc2FibGVkIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQk9EWV9FTVBUWV9URU1QTEFURV9UT0tFTiB9IGZyb20gJy4uL2NvbWJvYm94LWJvZHktZW1wdHktdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQk9EWV9FUlJPUl9URU1QTEFURV9UT0tFTiB9IGZyb20gJy4uL2NvbWJvYm94LWJvZHktZXJyb3ItdGVtcGxhdGUnO1xuaW1wb3J0IHsgQ09NQk9CT1hfQk9EWV9MT0FESU5HX1RFTVBMQVRFX1RPS0VOIH0gZnJvbSAnLi4vY29tYm9ib3gtYm9keS1sb2FkaW5nLXRlbXBsYXRlJztcbmltcG9ydCB7IENPTUJPQk9YX09QVElPTl9URU1QTEFURV9UT0tFTiB9IGZyb20gJy4uL2NvbWJvYm94LW9wdGlvbi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9TRUxFQ1RFRF9PUFRJT05fVEVNUExBVEVfVE9LRU4gfSBmcm9tICcuLi9jb21ib2JveC1zZWxlY3RlZC1vcHRpb24tdGVtcGxhdGUnO1xuXG5leHBvcnQgY29uc3QgQ09NQk9CT1hfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYm9ib3hEaXJlY3RpdmU+KCdFVF9DT01CT0JPWF9JTlBVVF9UT0tFTicpO1xuXG5leHBvcnQgdHlwZSBBYnN0cmFjdENvbWJvYm94Qm9keSA9IEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2UgJiB7XG4gIF9vcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PFR5cGVkUXVlcnlMaXN0PEFic3RyYWN0Q29tYm9ib3hPcHRpb24+IHwgbnVsbD47XG4gIF9jb250YWluZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZDtcbiAgaWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFic3RyYWN0Q29tYm9ib3hPcHRpb24gPSB7XG4gIF9vcHRpb24kOiBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj47XG4gIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgaWQ6IHN0cmluZztcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT01CT0JPWF9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBDb21ib2JveERpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vI3JlZ2lvbiBJbmplY3RzXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHJlYWRvbmx5IF9pbnB1dCA9IGluamVjdChJTlBVVF9UT0tFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdEZpZWxkID0gaW5qZWN0KFNFTEVDVF9GSUVMRF9UT0tFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGVkT3ZlcmxheSA9IGluamVjdDxBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU8QWJzdHJhY3RDb21ib2JveEJvZHk+PihBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb21ib2JveENvbmZpZyA9IGluamVjdChDT01CT0JPWF9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLy8jcmVnaW9uIElucHV0c1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5nZXRGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgfVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogdW5rbm93bltdKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0T3B0aW9ucyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaW5pdGlhbFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0aW9uKHZhbHVlKTtcbiAgICB0aGlzLl9pbml0aWFsVmFsdWUkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2luaXRpYWxWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHVua25vd24+KG51bGwpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBmaWx0ZXJJbnRlcm5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySW50ZXJuYWwkLnZhbHVlO1xuICB9XG4gIHNldCBmaWx0ZXJJbnRlcm5hbCh2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IHZhbCA9IGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpO1xuICAgIHRoaXMuX2ZpbHRlckludGVybmFsJC5uZXh0KHZhbCk7XG5cbiAgICBpZiAoIXZhbCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKCcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2ZpbHRlckludGVybmFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC52YWx1ZTtcbiAgfVxuICBzZXQgbG9hZGluZyh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQoYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSkpO1xuICB9XG4gIHByaXZhdGUgX2xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRpbmckID0gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGVycm9yKCkge1xuICAgIHJldHVybiB0aGlzLl9lcnJvciQudmFsdWU7XG4gIH1cbiAgc2V0IGVycm9yKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fZXJyb3IkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dW5rbm93bj4obnVsbCk7XG5cbiAgQElucHV0KClcbiAgZW1wdHlUZXh0ID0gdGhpcy5fY29tYm9ib3hDb25maWc/LmVtcHR5VGV4dCA/PyBDT01CT0JPWF9ERUZBVUxUX0NPTkZJRy5lbXB0eVRleHQ7XG5cbiAgQElucHV0KClcbiAgZ2V0IHBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlciQudmFsdWU7XG4gIH1cbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgQElucHV0KClcbiAgc2V0IG11bHRpcGxlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0QWxsb3dNdWx0aXBsZShib29sZWFuQXR0cmlidXRlKHZhbHVlKSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYmluZExhYmVsKHZhbHVlOiBTZWxlY3Rpb25Nb2RlbEJpbmRpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0TGFiZWxCaW5kaW5nKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBiaW5kVmFsdWUodmFsdWU6IFNlbGVjdGlvbk1vZGVsQmluZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRWYWx1ZUJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGJpbmRLZXkodmFsdWU6IFNlbGVjdGlvbk1vZGVsQmluZGluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRLZXlCaW5kaW5nKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBhbGxvd0N1c3RvbVZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dDdXN0b21WYWx1ZXMkLnZhbHVlO1xuICB9XG4gIHNldCBhbGxvd0N1c3RvbVZhbHVlcyh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2FsbG93Q3VzdG9tVmFsdWVzJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9hbGxvd0N1c3RvbVZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBnZXQgb3B0aW9uQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25Db21wb25lbnQkLnZhbHVlO1xuICB9XG4gIHNldCBvcHRpb25Db21wb25lbnQoY29tcG9uZW50OiBDb21wb25lbnRXaXRoT3B0aW9uIHwgbnVsbCkge1xuICAgIHRoaXMuX29wdGlvbkNvbXBvbmVudCQubmV4dChjb21wb25lbnQpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wdGlvbkNvbXBvbmVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbXBvbmVudFdpdGhPcHRpb24gfCBudWxsPihcbiAgICB0aGlzLl9jb21ib2JveENvbmZpZz8ub3B0aW9uQ29tcG9uZW50ID8/IG51bGwsXG4gICk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkT3B0aW9uQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCQudmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkT3B0aW9uQ29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50V2l0aE9wdGlvbiB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCQubmV4dChjb21wb25lbnQpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkT3B0aW9uQ29tcG9uZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50V2l0aE9wdGlvbiB8IG51bGw+KFxuICAgIHRoaXMuX2NvbWJvYm94Q29uZmlnPy5zZWxlY3RlZE9wdGlvbkNvbXBvbmVudCA/PyBudWxsLFxuICApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBib2R5RXJyb3JDb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JvZHlFcnJvckNvbXBvbmVudCQudmFsdWU7XG4gIH1cbiAgc2V0IGJvZHlFcnJvckNvbXBvbmVudCh2YWx1ZTogQ29tcG9uZW50V2l0aEVycm9yIHwgbnVsbCkge1xuICAgIHRoaXMuX2JvZHlFcnJvckNvbXBvbmVudCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYm9keUVycm9yQ29tcG9uZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50V2l0aEVycm9yIHwgbnVsbD4oXG4gICAgdGhpcy5fY29tYm9ib3hDb25maWc/LmJvZHlFcnJvckNvbXBvbmVudCA/PyBudWxsLFxuICApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBib2R5TG9hZGluZ0NvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYm9keUxvYWRpbmdDb21wb25lbnQkLnZhbHVlO1xuICB9XG4gIHNldCBib2R5TG9hZGluZ0NvbXBvbmVudCh2YWx1ZTogQ29tcG9uZW50VHlwZTx1bmtub3duPiB8IG51bGwpIHtcbiAgICB0aGlzLl9ib2R5TG9hZGluZ0NvbXBvbmVudCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYm9keUxvYWRpbmdDb21wb25lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb21wb25lbnRUeXBlPHVua25vd24+IHwgbnVsbD4oXG4gICAgdGhpcy5fY29tYm9ib3hDb25maWc/LmJvZHlMb2FkaW5nQ29tcG9uZW50ID8/IG51bGwsXG4gICk7XG5cbiAgQElucHV0KClcbiAgZ2V0IGJvZHlFbXB0eUNvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYm9keUVtcHR5Q29tcG9uZW50JC52YWx1ZTtcbiAgfVxuICBzZXQgYm9keUVtcHR5Q29tcG9uZW50KHZhbHVlOiBDb21wb25lbnRUeXBlPHVua25vd24+IHwgbnVsbCkge1xuICAgIHRoaXMuX2JvZHlFbXB0eUNvbXBvbmVudCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYm9keUVtcHR5Q29tcG9uZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29tcG9uZW50VHlwZTx1bmtub3duPiB8IG51bGw+KFxuICAgIHRoaXMuX2NvbWJvYm94Q29uZmlnPy5ib2R5RW1wdHlDb21wb25lbnQgPz8gbnVsbCxcbiAgKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gT3V0cHV0c1xuXG4gIEBPdXRwdXQoKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIE1lbWJlcnNcblxuICBwcml2YXRlIF9zaG91bGRJZ25vcmVOZXh0Qmx1ckV2ZW50ID0gZmFsc2U7XG4gIHByaXZhdGUgX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSBmYWxzZTtcblxuICByZWFkb25seSBzZWxlY3RCb2R5SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgYWN0aXZlT3B0aW9uSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBnZXQgY3VycmVudEZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZpbHRlciQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudEZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgZ2V0IF9pc09wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQ7XG4gIH1cbiAgcmVhZG9ubHkgaXNPcGVuJCA9IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQkO1xuXG4gIHJlYWRvbmx5IF9zZWxlY3Rpb25Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Nb2RlbCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVTZWxlY3Rpb25Nb2RlbCA9IG5ldyBBY3RpdmVTZWxlY3Rpb25Nb2RlbCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrc3BhY2VLZXlQcmVzc01hbmFnZXIgPSBuZXcgS2V5UHJlc3NNYW5hZ2VyKEJBQ0tTUEFDRSk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRPcHRpb25zJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiQ7XG4gIHJlYWRvbmx5IG11bHRpcGxlJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUkO1xuICByZWFkb25seSBtdWx0aXBsZVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMubXVsdGlwbGUkLCB7IHJlcXVpcmVTeW5jOiB0cnVlIH0pO1xuICByZWFkb25seSBvcHRpb25zJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmZpbHRlcmVkT3B0aW9ucyQ7XG4gIHJlYWRvbmx5IHJhd09wdGlvbnMkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwub3B0aW9ucyQ7XG5cbiAgQENvbnRlbnRDaGlsZChDT01CT0JPWF9PUFRJT05fVEVNUExBVEVfVE9LRU4sIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgc2V0IG9wdGlvblRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZldpdGhPcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9vcHRpb25UZW1wbGF0ZSQubmV4dCh2YWx1ZSA/PyBudWxsKTtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25UZW1wbGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmV2l0aE9wdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfU0VMRUNURURfT1BUSU9OX1RFTVBMQVRFX1RPS0VOLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHNldCBzZWxlY3RlZE9wdGlvblRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZldpdGhPcHRpb24gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9zZWxlY3RlZE9wdGlvblRlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkT3B0aW9uVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZldpdGhPcHRpb24gfCBudWxsPihudWxsKTtcblxuICBAQ29udGVudENoaWxkKENPTUJPQk9YX0JPRFlfTE9BRElOR19URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keUxvYWRpbmdUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9ib2R5TG9hZGluZ1RlbXBsYXRlJC5uZXh0KHZhbHVlID8/IG51bGwpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JvZHlMb2FkaW5nVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfQk9EWV9FUlJPUl9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keUVycm9yVGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmV2l0aEVycm9yIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYm9keUVycm9yVGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keUVycm9yVGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZldpdGhFcnJvciB8IG51bGw+KG51bGwpO1xuXG4gIEBDb250ZW50Q2hpbGQoQ09NQk9CT1hfQk9EWV9FTVBUWV9URU1QTEFURV9UT0tFTiwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBzZXQgYm9keUVtcHR5VGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPHVua25vd24+IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fYm9keUVtcHR5VGVtcGxhdGUkLm5leHQodmFsdWUgPz8gbnVsbCk7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keUVtcHR5VGVtcGxhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IF9iaW5kaW5ncyA9IGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MoXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtY29tYm9ib3gtLWxvYWRpbmcnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fbG9hZGluZyQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1jb21ib2JveC0tZXJyb3InLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fZXJyb3IkLnBpcGUobWFwKCh2KSA9PiAhIXYpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LWNvbWJvYm94LS1vcGVuJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuaXNPcGVuJCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNlbGVjdC1maWVsZC0tbXVsdGlwbGUnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5tdWx0aXBsZSQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zZWxlY3QtZmllbGQtLW9wZW4nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5pc09wZW4kLFxuICAgIH0sXG4gICk7XG5cbiAgcHJpdmF0ZSBfY29tYm9ib3hCb2R5Q29tcG9uZW50OiBDb21wb25lbnRUeXBlPEFic3RyYWN0Q29tYm9ib3hCb2R5PiB8IG51bGwgPSBudWxsO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBDb21wdXRlc1xuXG4gIHJlYWRvbmx5IGN1c3RvbU9wdGlvblRwbCQgPSB0aGlzLl9vcHRpb25UZW1wbGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIHJlYWRvbmx5IGN1c3RvbU9wdGlvbkNvbXBvbmVudCQgPSB0aGlzLl9vcHRpb25Db21wb25lbnQkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21TZWxlY3RlZE9wdGlvblRwbCQgPSB0aGlzLl9zZWxlY3RlZE9wdGlvblRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tU2VsZWN0ZWRPcHRpb25Db21wb25lbnQkID0gdGhpcy5fc2VsZWN0ZWRPcHRpb25Db21wb25lbnQkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5TG9hZGluZ1RwbCQgPSB0aGlzLl9ib2R5TG9hZGluZ1RlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUxvYWRpbmdDb21wb25lbnQkID0gdGhpcy5fYm9keUxvYWRpbmdDb21wb25lbnQkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5RXJyb3JUcGwkID0gdGhpcy5fYm9keUVycm9yVGVtcGxhdGUkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBjdXN0b21Cb2R5RXJyb3JDb21wb25lbnQkID0gdGhpcy5fYm9keUVycm9yQ29tcG9uZW50JC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUVtcHR5VHBsJCA9IHRoaXMuX2JvZHlFbXB0eVRlbXBsYXRlJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgY3VzdG9tQm9keUVtcHR5Q29tcG9uZW50JCA9IHRoaXMuX2JvZHlFbXB0eUNvbXBvbmVudCQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIExpZmVjeWNsZVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGlvbk1vZGVsKHRoaXMuX3NlbGVjdGlvbk1vZGVsKTtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkuZmFsbGJhY2tQbGFjZW1lbnRzID0gWydib3R0b20nLCAndG9wJ107XG4gICAgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LmF1dG9SZXNpemUgPSB0cnVlO1xuXG4gICAgdGhpcy5fc2VsZWN0RmllbGQuX2JpbmRpbmdzLnB1c2goe1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2VsZWN0LWZpZWxkLS1vcGVuJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuaXNPcGVuJCxcbiAgICB9KTtcblxuICAgIHRoaXMuX3NlbGVjdEZpZWxkLl9iaW5kaW5ncy5wdXNoKHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNlbGVjdC1maWVsZC0tbXVsdGlwbGUnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5tdWx0aXBsZSQsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pbml0RGlzcGF0Y2hGaWx0ZXJDaGFuZ2VzKCk7XG5cbiAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZygpO1xuICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnZhbHVlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodmFsdWUpO1xuICAgICAgICAgIHRoaXMuX3NldEZpbHRlckZyb21JbnB1dFZhbHVlKCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5faW5wdXQub25FeHRlcm5hbFVwZGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0aW9uKHRoaXMuX2lucHV0LnZhbHVlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICBzZXRCb2R5Q29tcG9uZW50KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxBYnN0cmFjdENvbWJvYm94Qm9keT4pIHtcbiAgICB0aGlzLl9jb21ib2JveEJvZHlDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBnZXRPcHRpb25MYWJlbChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwkKG9wdGlvbik7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZShvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0VmFsdWUkKG9wdGlvbik7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb246IHVua25vd24pIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIG9wZW4oKSB7XG4gICAgYXNzZXRDb21ib2JveEJvZHlDb21wb25lbnRTZXQodGhpcy5fY29tYm9ib3hCb2R5Q29tcG9uZW50KTtcblxuICAgIGlmICh0aGlzLl9pc09wZW4gfHwgdGhpcy5faW5wdXQuZGlzYWJsZWQgfHwgdGhpcy5fYW5pbWF0ZWRPdmVybGF5LmlzTW91bnRpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IGJvZHlSZWYgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkubW91bnQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLl9jb21ib2JveEJvZHlDb21wb25lbnQsXG4gICAgICBtaXJyb3JXaWR0aDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmICghYm9keVJlZikgcmV0dXJuO1xuXG4gICAgdGhpcy5zZWxlY3RCb2R5SWQkLm5leHQoYm9keVJlZi5pZCk7XG5cbiAgICBib2R5UmVmLl9vcHRpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0KSA9PlxuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgcXVlcnlMaXN0Py5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgIHN0YXJ0V2l0aChxdWVyeUxpc3QpLFxuICAgICAgICAgICAgICBtYXAoKGwpID0+IGwudG9BcnJheSgpKSxcbiAgICAgICAgICAgICkgPz8gb2YoW10gYXMgQWJzdHJhY3RDb21ib2JveE9wdGlvbltdKSxcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLmFjdGl2ZU9wdGlvbiQsXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICAgIHRhcCgoW29wdGlvbnMsIGFjdGl2ZU9wdGlvbkRhdGFdKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb3B0aW9uUmVmID0gb3B0aW9ucy5maW5kKChvKSA9PiBvLl9vcHRpb24kLnZhbHVlID09PSBhY3RpdmVPcHRpb25EYXRhKTtcblxuICAgICAgICAgIGlmICghb3B0aW9uUmVmPy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCkgcmV0dXJuO1xuXG4gICAgICAgICAgc2Nyb2xsVG9FbGVtZW50KHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnaW5zdGFudCcsXG4gICAgICAgICAgICBlbGVtZW50OiBvcHRpb25SZWYuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogYm9keVJlZi5fY29udGFpbmVyRWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuYWN0aXZlT3B0aW9uSWQkLm5leHQob3B0aW9uUmVmLmlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9hbmltYXRlZE92ZXJsYXkuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEJvZHlJZCQubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZU9wdGlvbklkJC5uZXh0KG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5faXNPcGVuIHx8IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc1VubW91bnRpbmcpIHJldHVybjtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS51bm1vdW50KCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBzZWxlY3RJbnB1dEFuZE9wZW4oKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdCgpO1xuICAgIHRoaXMub3BlbigpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZUZyb21PcHRpb24ob3B0aW9uOiB1bmtub3duKSB7XG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcblxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hZGRTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyKCcnKTtcbiAgICB9XG4gIH1cblxuICBpc09wdGlvblNlbGVjdGVkKG9wdGlvbjogdW5rbm93bikge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkJChvcHRpb24pO1xuICB9XG5cbiAgaXNPcHRpb25BY3RpdmUob3B0aW9uOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVNlbGVjdGlvbk1vZGVsLmFjdGl2ZU9wdGlvbiQucGlwZShtYXAoKGFjdGl2ZU9wdGlvbikgPT4gYWN0aXZlT3B0aW9uID09PSBvcHRpb24pKTtcbiAgfVxuXG4gIHRyYWNrQnlPcHRpb25LZXlGbjogVHJhY2tCeUZ1bmN0aW9uPHVua25vd24+ID0gKGluZGV4LCBpdGVtKSA9PiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5nZXRLZXkoaXRlbSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgX2lnbm9yZU5leHRCbHVyRXZlbnQoKSB7XG4gICAgdGhpcy5fc2hvdWxkSWdub3JlTmV4dEJsdXJFdmVudCA9IHRydWU7XG4gIH1cblxuICBfcHJvY2Vzc0tleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlzT3BlbiA9IHRoaXMuX2lzT3BlbjtcbiAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZTtcbiAgICBjb25zdCBjYW5BZGRDdXN0b21WYWx1ZSA9IHRoaXMuYWxsb3dDdXN0b21WYWx1ZXM7XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IGhhc0ZpbHRlclZhbHVlID0gISF2YWx1ZTtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3Rpb247XG4gICAgY29uc3QgaXNCYWNrc3BhY2VQcmVzc2VkID0gdGhpcy5fYmFja3NwYWNlS2V5UHJlc3NNYW5hZ2VyLmlzUHJlc3NlZChldmVudCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IEtleUhhbmRsZXJSZXN1bHQgPSB7fTtcblxuICAgIGlmIChrZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAvLyBUaGUgdXNlciB0eXBlZCBhIGN1c3RvbSB2YWx1ZSBhbmQgcHJlc3NlZCBlbnRlci4gQWRkIGl0IHRvIHRoZSBzZWxlY3RlZCBvcHRpb25zLlxuICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSBpdCBpcyBpbXBvc3NpYmxlIHRvIHNlbGVjdCB0aGUgYWN0aXZlIG9wdGlvbiB3aXRoIHRoZSBrZXlib2FyZCBpZiBjYW5BZGRDdXN0b21WYWx1ZSBpcyB0cnVlLlxuICAgICAgLy8gVG8gZml4IHRoaXMsIHRoZSBhY3RpdmUgb3B0aW9uIHNob3VsZCBhbHNvIGluY2x1ZGUgdGhlIG9yaWdpbiBpdCBnb3QgYWN0aXZlIGZyb20gKGtleWJvYXJkIG9yIHByb2dyYW1tYXRpYykuXG4gICAgICAvLyBUaGUgXCJ2YWx1ZVwiIGNoYW5naW5nIHNob3VsZCBwdXQgdGhlIGNvbWJvYm94IGludG8gYSBcInVzZSB0aGUgY3VzdG9tIGlucHV0IG9uIGVudGVyXCIgbW9kZS5cbiAgICAgIC8vIFRoZSBcImFjdGl2ZSBvcHRpb25cIiBjaGFuZ2luZyB2aWEga2V5Ym9hcmQgc2hvdWxkIHB1dCB0aGUgY29tYm9ib3ggaW50byBhIFwidXNlIHRoZSBhY3RpdmUgb3B0aW9uIG9uIGVudGVyXCIgbW9kZS5cbiAgICAgIGlmIChjYW5BZGRDdXN0b21WYWx1ZSAmJiBoYXNGaWx0ZXJWYWx1ZSkge1xuICAgICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0geyB0eXBlOiAnYWRkJywgb3B0aW9uOiB2YWx1ZSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWN0aXZlT3B0aW9uID0gdGhpcy5fYWN0aXZlU2VsZWN0aW9uTW9kZWwuYWN0aXZlT3B0aW9uO1xuXG4gICAgICAgIGlmIChhY3RpdmVPcHRpb24pIHtcbiAgICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9IHsgdHlwZTogJ3RvZ2dsZScsIG9wdGlvbjogYWN0aXZlT3B0aW9uIH07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSB7IHR5cGU6ICdhZGQnLCBvcHRpb246IGFjdGl2ZU9wdGlvbiB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICByZXN1bHQuc2V0RmlsdGVyID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQub3ZlcmxheU9wZXJhdGlvbiA9ICdjbG9zZSc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IEVTQ0FQRSkge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICByZXN1bHQub3ZlcmxheU9wZXJhdGlvbiA9ICdjbG9zZSc7XG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgICAgIHJlc3VsdC5zZXRGaWx0ZXIgPSAnJztcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9ICdjbGVhcic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IFRBQikge1xuICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gQkFDS1NQQUNFKSB7XG4gICAgICBpZiAoaXNCYWNrc3BhY2VQcmVzc2VkICYmIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0ZpbHRlclZhbHVlICYmIGlzTXVsdGlwbGUgJiYgc2VsZWN0aW9uLmxlbmd0aCAmJiAhdGhpcy5fZGVsZXRlZFNlYXJjaFdpdGhLZXlQcmVzcykge1xuICAgICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0geyB0eXBlOiAncmVtb3ZlJywgb3B0aW9uOiBzZWxlY3Rpb25bc2VsZWN0aW9uLmxlbmd0aCAtIDFdIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNCYWNrc3BhY2VQcmVzc2VkKSB7XG4gICAgICAgIHRoaXMuX2RlbGV0ZWRTZWFyY2hXaXRoS2V5UHJlc3MgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZGVsZXRlZFNlYXJjaFdpdGhLZXlQcmVzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghaXNPcGVuKSB7XG4gICAgICByZXN1bHQub3ZlcmxheU9wZXJhdGlvbiA9ICdvcGVuJztcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVTZWxlY3Rpb25Nb2RlbC5ldmFsdWF0ZUtleWJvYXJkRXZlbnQoZXZlbnQpO1xuXG4gICAgaWYgKGtleUNvZGUgPT09IEEgJiYgZXZlbnQuY3RybEtleSAmJiBpc011bHRpcGxlKSB7XG4gICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0gJ3RvZ2dsZUFsbCc7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gIH1cblxuICBfcHJvY2Vzc0tleXVwRXZlbnQoKSB7XG4gICAgdGhpcy5fYmFja3NwYWNlS2V5UHJlc3NNYW5hZ2VyLmNsZWFyKCk7XG4gIH1cblxuICBfcHJvY2Vzc0lucHV0RXZlbnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuXG4gICAgdGhpcy5fdXBkYXRlRmlsdGVyKHZhbHVlKTtcbiAgfVxuXG4gIF9oYW5kbGVCbHVyRXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuX3Nob3VsZElnbm9yZU5leHRCbHVyRXZlbnQpIHtcbiAgICAgIHRoaXMuX3Nob3VsZElnbm9yZU5leHRCbHVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2lucHV0Ll9zZXRTaG91bGREaXNwbGF5RXJyb3IodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSkge1xuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyKCcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyID09PSAnJykge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXJTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRGaWx0ZXJGcm9tSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gIHByaXZhdGUgX2luaXREaXNwYXRjaEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY3VycmVudEZpbHRlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoKCkgPT4gdGhpcy5maWx0ZXJJbnRlcm5hbCksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKHYpID0+IHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRmlsdGVyKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5faW5wdXQubmF0aXZlSW5wdXRSZWYgJiYgdGhpcy5faW5wdXQubmF0aXZlSW5wdXRSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5faW5wdXQubmF0aXZlSW5wdXRSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudEZpbHRlciA9PT0gdmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuX2N1cnJlbnRGaWx0ZXIkLm5leHQodmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVySW50ZXJuYWwpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5faW5wdXQudmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoJycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmdldE9wdGlvbkJ5VmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKCFvcHRpb24pIHJldHVybjtcblxuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwob3B0aW9uKTtcblxuICAgIGlmICh0eXBlb2YgbGFiZWwgIT09ICdzdHJpbmcnKSByZXR1cm47XG5cbiAgICB0aGlzLl91cGRhdGVGaWx0ZXIobGFiZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW50ZXJwcmV0S2V5SGFuZGxlclJlc3VsdChyZXN1bHQ6IEtleUhhbmRsZXJSZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPT09ICdjbG9zZScpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID09PSAnb3BlbicpIHtcbiAgICAgIHRoaXMub3BlbigpO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQuc2V0RmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcihyZXN1bHQuc2V0RmlsdGVyKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbikge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQub3B0aW9uQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ2NsZWFyJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ3RvZ2dsZUFsbCcpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC50b2dnbGVBbGxTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBvcHRpb24gfSA9IHJlc3VsdC5vcHRpb25BY3Rpb247XG5cbiAgICAgICAgaWYgKGlzT3B0aW9uRGlzYWJsZWQob3B0aW9uKSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYWRkJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBEZXYgbW9kZVxuXG4gIHByaXZhdGUgX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZyhpc1JldHJ5ID0gZmFsc2UpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5sYWJlbEJpbmRpbmckLCB0aGlzLl9zZWxlY3Rpb25Nb2RlbC52YWx1ZUJpbmRpbmckLCB0aGlzLl9hbGxvd0N1c3RvbVZhbHVlcyRdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoaXNSZXRyeSA/IDEgOiAwKSwgLy8gU2tpcCBpZiByZXRyeWluZyB0byBhdm9pZCBpbmZpbml0ZSBsb29wXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgbWFwKChbYmluZExhYmVsLCBiaW5kVmFsdWUsIGFsbG93Q3VzdG9tVmFsdWVzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNob3VsZEJlT2JqZWN0cyA9IGJpbmRMYWJlbCAmJiBiaW5kVmFsdWUgJiYgIWFsbG93Q3VzdG9tVmFsdWVzO1xuXG4gICAgICAgICAgaWYgKHNob3VsZEJlT2JqZWN0cykge1xuICAgICAgICAgICAgcmV0dXJuIENvbWJvYm94T3B0aW9uVHlwZS5PYmplY3Q7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIENvbWJvYm94T3B0aW9uVHlwZS5QcmltaXRpdmU7XG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKGV4cGVjdGVkT3B0aW9uVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5vcHRpb25zO1xuXG4gICAgICAgICAgaWYgKGlzRW1wdHlBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChleHBlY3RlZE9wdGlvblR5cGUgPT09IENvbWJvYm94T3B0aW9uVHlwZS5PYmplY3QpIHtcbiAgICAgICAgICAgIGlmICghaXNPYmplY3RBcnJheShvcHRpb25zKSkge1xuICAgICAgICAgICAgICB0aHJvdyBjb21ib2JveEVycm9yKCdvcHRpb25zX29iamVjdF9taXNtYXRjaCcsIHRydWUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoZXhwZWN0ZWRPcHRpb25UeXBlID09PSBDb21ib2JveE9wdGlvblR5cGUuUHJpbWl0aXZlKSB7XG4gICAgICAgICAgICBpZiAoIWlzUHJpbWl0aXZlQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICAgICAgdGhyb3cgY29tYm9ib3hFcnJvcignb3B0aW9uc19wcmltaXRpdmVfbWlzbWF0Y2gnLCB0cnVlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZUNvbWJvYm94Q29uZmlnKHRydWUpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGUpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlYnVnVmFsaWRhdGVPcHRpb25BbmRJbml0aWFsVmFsdWVTY2hlbWEoaXNSZXRyeSA9IGZhbHNlKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5vcHRpb25zJCwgdGhpcy5faW5pdGlhbFZhbHVlJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgc2tpcChpc1JldHJ5ID8gMSA6IDApLCAvLyBTa2lwIGlmIHJldHJ5aW5nIHRvIGF2b2lkIGluZmluaXRlIGxvb3BcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKChbb3B0aW9ucywgaW5pdGlhbFZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT09IG51bGwgfHwgaW5pdGlhbFZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZUFycmF5KG9wdGlvbnMpO1xuICAgICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZUlzUHJpbWl0aXZlID0gdGhpcy5tdWx0aXBsZVxuICAgICAgICAgICAgPyBpc1ByaW1pdGl2ZUFycmF5KGluaXRpYWxWYWx1ZSlcbiAgICAgICAgICAgIDogdHlwZW9mIGluaXRpYWxWYWx1ZSAhPT0gJ29iamVjdCc7XG5cbiAgICAgICAgICBpZiAoaXNQcmltaXRpdmUpIHtcbiAgICAgICAgICAgIGlmICghaW5pdGlhbFZhbHVlSXNQcmltaXRpdmUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgY29tYm9ib3hFcnJvcignaW5pdF92YWxfcHJpbWl0aXZlX21pc21hdGNoJywgdHJ1ZSwgeyBpbml0aWFsVmFsdWUsIG9wdGlvbnMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpbml0aWFsVmFsdWVJc1ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgICB0aHJvdyBjb21ib2JveEVycm9yKCdpbml0X3ZhbF9vYmplY3RfbWlzbWF0Y2gnLCB0cnVlLCB7IGluaXRpYWxWYWx1ZSwgb3B0aW9ucyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZU9wdGlvbkFuZEluaXRpYWxWYWx1ZVNjaGVtYSh0cnVlKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ==
@@ -1,14 +1,16 @@
1
1
  import { AsyncPipe, NgComponentOutlet, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, ElementRef, InjectionToken, ViewChild, ViewChildren, ViewEncapsulation, inject, } from '@angular/core';
3
3
  import { ANIMATED_LIFECYCLE_TOKEN, AnimatedLifecycleDirective, ClickOutsideDirective, LetDirective, TypedQueryList, createDestroy, createReactiveBindings, } from '@ethlete/core';
4
- import { BehaviorSubject, takeUntil, tap } from 'rxjs';
4
+ import { BehaviorSubject, map, takeUntil, tap } from 'rxjs';
5
5
  import { COMBOBOX_TOKEN } from '../../directives';
6
6
  import { ComboboxOptionComponent } from '../combobox-option';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@ethlete/core";
9
9
  export const COMBOBOX_BODY_TOKEN = new InjectionToken('ET_COMBOBOX_BODY_TOKEN');
10
+ let _uniqueId = 0;
10
11
  export class ComboboxBodyComponent {
11
12
  constructor() {
13
+ this.id = `et-combobox-body-${_uniqueId++}`;
12
14
  this._destroy$ = createDestroy();
13
15
  this._clickOutside = inject(ClickOutsideDirective);
14
16
  this.combobox = inject(COMBOBOX_TOKEN);
@@ -19,6 +21,18 @@ export class ComboboxBodyComponent {
19
21
  }, {
20
22
  attribute: 'class.et-combobox-body--multiple',
21
23
  observable: this.combobox.multiple$,
24
+ }, {
25
+ attribute: 'aria-multiselectable',
26
+ observable: this.combobox.multiple$.pipe(map((multiple) => ({
27
+ render: true,
28
+ value: multiple,
29
+ }))),
30
+ }, {
31
+ attribute: 'aria-labelledby',
32
+ observable: this.combobox._input.labelId$.pipe(map((labelId) => ({
33
+ render: !!labelId,
34
+ value: labelId,
35
+ }))),
22
36
  });
23
37
  this._bodyTemplate = null;
24
38
  this.trackByFn = (index, item) => this.combobox._selectionModel.getKey(item);
@@ -32,7 +46,7 @@ export class ComboboxBodyComponent {
32
46
  .subscribe();
33
47
  }
34
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.2", ngImport: i0, type: ComboboxBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ComboboxBodyComponent, isStandalone: true, selector: "et-combobox-body", host: { attributes: { "tabindex": "-1" }, classAttribute: "et-combobox-body et-with-default-animation" }, providers: [
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.2", type: ComboboxBodyComponent, isStandalone: true, selector: "et-combobox-body", host: { attributes: { "tabindex": "-1", "role": "listbox" }, properties: { "attr.id": "id" }, classAttribute: "et-combobox-body et-with-default-animation" }, providers: [
36
50
  {
37
51
  provide: COMBOBOX_BODY_TOKEN,
38
52
  useExisting: ComboboxBodyComponent,
@@ -44,6 +58,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
44
58
  args: [{ selector: 'et-combobox-body', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
45
59
  class: 'et-combobox-body et-with-default-animation',
46
60
  tabindex: '-1',
61
+ '[attr.id]': 'id',
62
+ role: 'listbox',
47
63
  }, imports: [
48
64
  NgTemplateOutlet,
49
65
  NgComponentOutlet,
@@ -69,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.2", ngImpor
69
85
  type: ViewChildren,
70
86
  args: [ComboboxOptionComponent]
71
87
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9wYXJ0aWFscy9jb21ib2JveC1ib2R5L2NvbWJvYm94LWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvcGFydGlhbHMvY29tYm9ib3gtYm9keS9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEVBSWQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osY0FBYyxFQUNkLGFBQWEsRUFDYixzQkFBc0IsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBZ0QsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0Isd0JBQXdCLENBQUMsQ0FBQztBQThCdkcsTUFBTSxPQUFPLHFCQUFxQjtJQTVCbEM7UUErQm1CLGNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUM1QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVDLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFZNUMsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFnRCxJQUFJLENBQUMsQ0FBQztRQUVyRixjQUFTLEdBQUcsc0JBQXNCLENBQ3pDO1lBQ0UsU0FBUyxFQUFFLGlDQUFpQztZQUM1QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1NBQ25DLEVBQ0Q7WUFDRSxTQUFTLEVBQUUsa0NBQWtDO1lBQzdDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7U0FDcEMsQ0FDRixDQUFDO1FBRUYsa0JBQWEsR0FBZ0MsSUFBSSxDQUFDO1FBV3hDLGNBQVMsR0FBNkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDN0c7SUE3QkMsSUFDSSxRQUFRLENBQUMsT0FBZ0Q7UUFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQWdCRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjO2FBQzlCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUN6QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUNqQzthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7OEdBdkNVLHFCQUFxQjtrR0FBckIscUJBQXFCLHlLQVByQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxtQkFBbUI7Z0JBQzVCLFdBQVcsRUFBRSxxQkFBcUI7YUFDbkM7U0FDRiwrSEFTb0QsVUFBVSxnRkFHcEQsd0JBQXdCLDRFQUdyQix1QkFBdUIsMkdDdEV2Qyw4NkRBeUNBLDRDRERJLGdCQUFnQixvSkFDaEIsaUJBQWlCLG9QQUNqQixLQUFLLG1IQUNMLHVCQUF1QixtRkFDdkIsWUFBWSxrRUFDWixTQUFTLDhDQUNULDBCQUEwQixxR0FDMUIsSUFBSTs7MkZBVUsscUJBQXFCO2tCQTVCakMsU0FBUzsrQkFDRSxrQkFBa0IsY0FFaEIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSw0Q0FBNEM7d0JBQ25ELFFBQVEsRUFBRSxJQUFJO3FCQUNmLFdBQ1E7d0JBQ1AsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLEtBQUs7d0JBQ0wsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsMEJBQTBCO3dCQUMxQixJQUFJO3FCQUNMLGtCQUNlLENBQUMscUJBQXFCLENBQUMsYUFDNUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyx1QkFBdUI7eUJBQ25DO3FCQUNGOzhCQVVRLG9CQUFvQjtzQkFENUIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJeEQsa0JBQWtCO3NCQUQxQixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakQsUUFBUTtzQkFEWCxZQUFZO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDb21wb25lbnRPdXRsZXQsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGlvblRva2VuLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFOSU1BVEVEX0xJRkVDWUNMRV9UT0tFTixcbiAgQW5pbWF0ZWRMaWZlY3ljbGVEaXJlY3RpdmUsXG4gIENsaWNrT3V0c2lkZURpcmVjdGl2ZSxcbiAgTGV0RGlyZWN0aXZlLFxuICBUeXBlZFF1ZXJ5TGlzdCxcbiAgY3JlYXRlRGVzdHJveSxcbiAgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyxcbn0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbWJvYm94Qm9keSwgQWJzdHJhY3RDb21ib2JveE9wdGlvbiwgQ09NQk9CT1hfVE9LRU4gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IENvbWJvYm94T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gtb3B0aW9uJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX0JPRFlfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYm9ib3hCb2R5Q29tcG9uZW50PignRVRfQ09NQk9CT1hfQk9EWV9UT0tFTicpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdldC1jb21ib2JveC1ib2R5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94LWJvZHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtY29tYm9ib3gtYm9keSBldC13aXRoLWRlZmF1bHQtYW5pbWF0aW9uJyxcbiAgICB0YWJpbmRleDogJy0xJyxcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTmdDb21wb25lbnRPdXRsZXQsXG4gICAgTmdGb3IsXG4gICAgQ29tYm9ib3hPcHRpb25Db21wb25lbnQsXG4gICAgTGV0RGlyZWN0aXZlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZSxcbiAgICBOZ0lmLFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW0NsaWNrT3V0c2lkZURpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IENPTUJPQk9YX0JPRFlfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogQ29tYm9ib3hCb2R5Q29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvYm94Qm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWJzdHJhY3RDb21ib2JveEJvZHkge1xuICBfZWxlbWVudFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuICBfbWFya0ZvckNoZWNrPzogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xpY2tPdXRzaWRlID0gaW5qZWN0KENsaWNrT3V0c2lkZURpcmVjdGl2ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb21ib2JveCA9IGluamVjdChDT01CT0JPWF9UT0tFTik7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHJlYWRvbmx5IF9jb250YWluZXJFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKEFOSU1BVEVEX0xJRkVDWUNMRV9UT0tFTiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcmVhZG9ubHkgX2FuaW1hdGVkTGlmZWN5Y2xlPzogQW5pbWF0ZWRMaWZlY3ljbGVEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZHJlbihDb21ib2JveE9wdGlvbkNvbXBvbmVudClcbiAgc2V0IF9vcHRpb25zKG9wdGlvbnM6IFR5cGVkUXVlcnlMaXN0PENvbWJvYm94T3B0aW9uQ29tcG9uZW50Pikge1xuICAgIHRoaXMuX29wdGlvbnMkLm5leHQob3B0aW9ucyk7XG4gIH1cbiAgcmVhZG9ubHkgX29wdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUeXBlZFF1ZXJ5TGlzdDxBYnN0cmFjdENvbWJvYm94T3B0aW9uPiB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IF9iaW5kaW5ncyA9IGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MoXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtY29tYm9ib3gtYm9keS0tbG9hZGluZycsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmNvbWJvYm94LmxvYWRpbmckLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtY29tYm9ib3gtYm9keS0tbXVsdGlwbGUnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5jb21ib2JveC5tdWx0aXBsZSQsXG4gICAgfSxcbiAgKTtcblxuICBfYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsaWNrT3V0c2lkZS5ldENsaWNrT3V0c2lkZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmNvbWJvYm94LmNsb3NlKCkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPHVua25vd24+ID0gKGluZGV4LCBpdGVtKSA9PiB0aGlzLmNvbWJvYm94Ll9zZWxlY3Rpb25Nb2RlbC5nZXRLZXkoaXRlbSk7XG59XG4iLCI8ZGl2ICNjb250YWluZXJFbGVtZW50IGNsYXNzPVwiZXQtY29tYm9ib3gtYm9keS1jb250YWluZXJcIiBldEFuaW1hdGVkTGlmZWN5Y2xlPlxuICA8bmctY29udGFpbmVyICpldExldD1cImNvbWJvYm94Lm9wdGlvbnMkIHwgYXN5bmMgYXMgb3B0aW9uc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9ucz8ubGVuZ3RoICYmICFjb21ib2JveC5lcnJvciAmJiAhY29tYm9ib3gubG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlFbXB0eVRwbCQgfCBhc3luYyBhcyB0cGw7IGVsc2UgY29tcG9uZW50T3JOb25lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxcIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudE9yTm9uZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlFbXB0eUNvbXBvbmVudCQgfCBhc3luYyBhcyBjb21wOyBlbHNlIGRlZmF1bHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXBcIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZXQtY29tYm9ib3gtYm9keS0tZW1wdHlcIj57eyBjb21ib2JveC5lbXB0eVRleHQgfX08L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmVycm9yICYmICFjb21ib2JveC5sb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUVycm9yVHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbDsgY29udGV4dDogeyBlcnJvcjogY29tYm9ib3guZXJyb3IgfVwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUVycm9yQ29tcG9uZW50JCB8IGFzeW5jIGFzIGNvbXBcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXA7IGlucHV0czogeyBlcnJvcjogY29tYm9ib3guZXJyb3IgfVwiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5sb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUxvYWRpbmdUcGwkIHwgYXN5bmMgYXMgdHBsOyBlbHNlIGNvbXBvbmVudE9yTm9uZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsXCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRPck5vbmU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5TG9hZGluZ0NvbXBvbmVudCQgfCBhc3luYyBhcyBjb21wXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGV0LWNvbWJvYm94LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFtvcHRpb25dPVwib3B0aW9uXCIgLz5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3gtYm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9wYXJ0aWFscy9jb21ib2JveC1ib2R5L2NvbWJvYm94LWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvcGFydGlhbHMvY29tYm9ib3gtYm9keS9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlGLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixjQUFjLEVBSWQsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osY0FBYyxFQUNkLGFBQWEsRUFDYixzQkFBc0IsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQWdELGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixD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QixXQUNRO3dCQUNQLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixLQUFLO3dCQUNMLHVCQUF1Qjt3QkFDdkIsWUFBWTt3QkFDWixTQUFTO3dCQUNULDBCQUEwQjt3QkFDMUIsSUFBSTtxQkFDTCxrQkFDZSxDQUFDLHFCQUFxQixDQUFDLGFBQzVCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsdUJBQXVCO3lCQUNuQztxQkFDRjs4QkFZUSxvQkFBb0I7c0JBRDVCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSXhELGtCQUFrQjtzQkFEMUIsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSWpELFFBQVE7c0JBRFgsWUFBWTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nQ29tcG9uZW50T3V0bGV0LCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBTklNQVRFRF9MSUZFQ1lDTEVfVE9LRU4sXG4gIEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlLFxuICBDbGlja091dHNpZGVEaXJlY3RpdmUsXG4gIExldERpcmVjdGl2ZSxcbiAgVHlwZWRRdWVyeUxpc3QsXG4gIGNyZWF0ZURlc3Ryb3ksXG4gIGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbWJvYm94Qm9keSwgQWJzdHJhY3RDb21ib2JveE9wdGlvbiwgQ09NQk9CT1hfVE9LRU4gfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IENvbWJvYm94T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tYm9ib3gtb3B0aW9uJztcblxuZXhwb3J0IGNvbnN0IENPTUJPQk9YX0JPRFlfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYm9ib3hCb2R5Q29tcG9uZW50PignRVRfQ09NQk9CT1hfQk9EWV9UT0tFTicpO1xuXG5sZXQgX3VuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29tYm9ib3gtYm9keScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21ib2JveC1ib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWNvbWJvYm94LWJvZHkgZXQtd2l0aC1kZWZhdWx0LWFuaW1hdGlvbicsXG4gICAgdGFiaW5kZXg6ICctMScsXG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgcm9sZTogJ2xpc3Rib3gnLFxuICB9LFxuICBpbXBvcnRzOiBbXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBOZ0NvbXBvbmVudE91dGxldCxcbiAgICBOZ0ZvcixcbiAgICBDb21ib2JveE9wdGlvbkNvbXBvbmVudCxcbiAgICBMZXREaXJlY3RpdmUsXG4gICAgQXN5bmNQaXBlLFxuICAgIEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlLFxuICAgIE5nSWYsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQ2xpY2tPdXRzaWRlRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ09NQk9CT1hfQk9EWV9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBDb21ib2JveEJvZHlDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29tYm9ib3hCb2R5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBYnN0cmFjdENvbWJvYm94Qm9keSB7XG4gIHJlYWRvbmx5IGlkID0gYGV0LWNvbWJvYm94LWJvZHktJHtfdW5pcXVlSWQrK31gO1xuXG4gIF9lbGVtZW50UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4gfCB1bmRlZmluZWQ7XG4gIF9tYXJrRm9yQ2hlY2s/OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbGlja091dHNpZGUgPSBpbmplY3QoQ2xpY2tPdXRzaWRlRGlyZWN0aXZlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbWJvYm94ID0gaW5qZWN0KENPTUJPQk9YX1RPS0VOKTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXJFbGVtZW50JywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcmVhZG9ubHkgX2NvbnRhaW5lckVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICByZWFkb25seSBfYW5pbWF0ZWRMaWZlY3ljbGU/OiBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZTtcblxuICBAVmlld0NoaWxkcmVuKENvbWJvYm94T3B0aW9uQ29tcG9uZW50KVxuICBzZXQgX29wdGlvbnMob3B0aW9uczogVHlwZWRRdWVyeUxpc3Q8Q29tYm9ib3hPcHRpb25Db21wb25lbnQ+KSB7XG4gICAgdGhpcy5fb3B0aW9ucyQubmV4dChvcHRpb25zKTtcbiAgfVxuICByZWFkb25seSBfb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFR5cGVkUXVlcnlMaXN0PEFic3RyYWN0Q29tYm9ib3hPcHRpb24+IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgX2JpbmRpbmdzID0gY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyhcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1jb21ib2JveC1ib2R5LS1sb2FkaW5nJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuY29tYm9ib3gubG9hZGluZyQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1jb21ib2JveC1ib2R5LS1tdWx0aXBsZScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmNvbWJvYm94Lm11bHRpcGxlJCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuY29tYm9ib3gubXVsdGlwbGUkLnBpcGUoXG4gICAgICAgIG1hcCgobXVsdGlwbGUpID0+ICh7XG4gICAgICAgICAgcmVuZGVyOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBtdWx0aXBsZSxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtbGFiZWxsZWRieScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmNvbWJvYm94Ll9pbnB1dC5sYWJlbElkJC5waXBlKFxuICAgICAgICBtYXAoKGxhYmVsSWQpID0+ICh7XG4gICAgICAgICAgcmVuZGVyOiAhIWxhYmVsSWQsXG4gICAgICAgICAgdmFsdWU6IGxhYmVsSWQgYXMgc3RyaW5nLFxuICAgICAgICB9KSksXG4gICAgICApLFxuICAgIH0sXG4gICk7XG5cbiAgX2JvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGlja091dHNpZGUuZXRDbGlja091dHNpZGVcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5jb21ib2JveC5jbG9zZSgpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5Rm46IFRyYWNrQnlGdW5jdGlvbjx1bmtub3duPiA9IChpbmRleCwgaXRlbSkgPT4gdGhpcy5jb21ib2JveC5fc2VsZWN0aW9uTW9kZWwuZ2V0S2V5KGl0ZW0pO1xufVxuIiwiPGRpdiAjY29udGFpbmVyRWxlbWVudCBjbGFzcz1cImV0LWNvbWJvYm94LWJvZHktY29udGFpbmVyXCIgZXRBbmltYXRlZExpZmVjeWNsZT5cbiAgPG5nLWNvbnRhaW5lciAqZXRMZXQ9XCJjb21ib2JveC5vcHRpb25zJCB8IGFzeW5jIGFzIG9wdGlvbnNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9wdGlvbnM/Lmxlbmd0aCAmJiAhY29tYm9ib3guZXJyb3IgJiYgIWNvbWJvYm94LmxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5RW1wdHlUcGwkIHwgYXN5bmMgYXMgdHBsOyBlbHNlIGNvbXBvbmVudE9yTm9uZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsXCIgLz5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb21wb25lbnRPck5vbmU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5jdXN0b21Cb2R5RW1wdHlDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcDsgZWxzZSBkZWZhdWx0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdD5cbiAgICAgICAgICA8cCBjbGFzcz1cImV0LWNvbWJvYm94LWJvZHktLWVtcHR5XCI+e3sgY29tYm9ib3guZW1wdHlUZXh0IH19PC9wPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21ib2JveC5lcnJvciAmJiAhY29tYm9ib3gubG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlFcnJvclRwbCQgfCBhc3luYyBhcyB0cGw7IGVsc2UgY29tcG9uZW50T3JOb25lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGw7IGNvbnRleHQ6IHsgZXJyb3I6IGNvbWJvYm94LmVycm9yIH1cIiAvPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbXBvbmVudE9yTm9uZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlFcnJvckNvbXBvbmVudCQgfCBhc3luYyBhcyBjb21wXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wOyBpbnB1dHM6IHsgZXJyb3I6IGNvbWJvYm94LmVycm9yIH1cIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3gubG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbWJvYm94LmN1c3RvbUJvZHlMb2FkaW5nVHBsJCB8IGFzeW5jIGFzIHRwbDsgZWxzZSBjb21wb25lbnRPck5vbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFwiIC8+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29tcG9uZW50T3JOb25lPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29tYm9ib3guY3VzdG9tQm9keUxvYWRpbmdDb21wb25lbnQkIHwgYXN5bmMgYXMgY29tcFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiY29tcFwiIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxldC1jb21ib2JveC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyB0cmFja0J5OiB0cmFja0J5Rm5cIiBbb3B0aW9uXT1cIm9wdGlvblwiIC8+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=