slick-components 5.0.0 → 5.0.2
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/css/slick-components.css +19 -1
- package/css/slick-components.min.css +1 -1
- package/css/slick-components.scss +20 -2
- package/esm2020/slick-drop-down/slick-drop-down.component.mjs +3 -3
- package/esm2020/slick-drop-down/slick-drop-down.service.mjs +2 -2
- package/esm2020/slick-multi-select/slick-multi-select.component.mjs +22 -10
- package/esm2020/utils/slick-init.service.mjs +2 -2
- package/fesm2015/slick-components.mjs +25 -13
- package/fesm2015/slick-components.mjs.map +1 -1
- package/fesm2020/slick-components.mjs +25 -13
- package/fesm2020/slick-components.mjs.map +1 -1
- package/package.json +1 -1
- package/slick-drop-down/slick-drop-down.service.d.ts +1 -1
- package/slick-multi-select/slick-multi-select.component.d.ts +1 -1
|
@@ -377,7 +377,7 @@ export class SlickDropDownComponent {
|
|
|
377
377
|
provide: NG_VALUE_ACCESSOR,
|
|
378
378
|
useExisting: forwardRef((() => SlickDropDownComponent)),
|
|
379
379
|
multi: true,
|
|
380
|
-
}], viewQueries: [{ propertyName: "containerDiv", first: true, predicate: ["containerDiv"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }, { propertyName: "selectedTextInputRef", first: true, predicate: ["selectedTextInputRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!compact\" #containerDiv class=\"slick-drop-down form-control d-flex flex-fill align-items-center\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <div *ngIf=\"icon\" class=\"slick-drop-down_icon
|
|
380
|
+
}], viewQueries: [{ propertyName: "containerDiv", first: true, predicate: ["containerDiv"], descendants: true }, { propertyName: "dropdownList", first: true, predicate: ["dropdownList"], descendants: true }, { propertyName: "selectedTextInputRef", first: true, predicate: ["selectedTextInputRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!compact\" #containerDiv class=\"slick-drop-down form-control d-flex flex-fill align-items-center position-relative\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <div *ngIf=\"icon\" class=\"slick-drop-down_icon p-0\" style=\"position: absolute;\"><i class=\"px-1\" [ngClass]=\"icon\"></i></div>\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" disabled=\"disabled\" [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div style=\"position: absolute; right: 0;\">\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"compact\" #containerDiv class=\"slick-drop-down slick-drop-down-compact form-control d-flex flex-fill align-items-center\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control me-2' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control me-2' [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div>\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n\r\n<ul *ngIf=\"isVisible\" #dropdownList id=\"slick-drop-down_{{uuid}}\" class='slick-drop-down-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n <li *ngFor=\"let item of visibleItems; let index = index;\" (click)=\"onItemClick(item)\" [class.active]=\"item.id === selectedItem?.id\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">{{item.text}}</li>\r\n</ul>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.SlickValidationIndicatorDirective, selector: "[slick-validation-indicator]", inputs: ["slick-validation-indicator", "slickValidationType"] }] });
|
|
381
381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickDropDownComponent, decorators: [{
|
|
382
382
|
type: Component,
|
|
383
383
|
args: [{ selector: 'slick-drop-down', providers: [SlickDropDownService, SlickLogService,
|
|
@@ -385,7 +385,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
385
385
|
provide: NG_VALUE_ACCESSOR,
|
|
386
386
|
useExisting: forwardRef((() => SlickDropDownComponent)),
|
|
387
387
|
multi: true,
|
|
388
|
-
}], template: "<div *ngIf=\"!compact\" #containerDiv class=\"slick-drop-down form-control d-flex flex-fill align-items-center\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <div *ngIf=\"icon\" class=\"slick-drop-down_icon
|
|
388
|
+
}], template: "<div *ngIf=\"!compact\" #containerDiv class=\"slick-drop-down form-control d-flex flex-fill align-items-center position-relative\" [slick-validation-indicator]=\"validationIndicator\" [slickValidationType]=\"validationIndicatorType\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <div *ngIf=\"icon\" class=\"slick-drop-down_icon p-0\" style=\"position: absolute;\"><i class=\"px-1\" [ngClass]=\"icon\"></i></div>\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control ps-2 pe-4' [class.ps-4]=\"!!icon\" disabled=\"disabled\" [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div style=\"position: absolute; right: 0;\">\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"compact\" #containerDiv class=\"slick-drop-down slick-drop-down-compact form-control d-flex flex-fill align-items-center\" id=\"slick-drop-down_{{uuid}}\" attr.data-uuid=\"{{uuid}}\" [class.open]=\"expanded\" (click)=\"onDropdownClicked($event)\">\r\n <input #selectedTextInputRef *ngIf=\"!disabled\" class='form-control me-2' [(ngModel)]=\"selectedText\" [attr.tabindex]=\"tabindex\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\" (focus)=\"onDropdownClicked($event)\" [readonly]=\"!isMobile\" [placeholder]='placeholder' />\r\n <input #selectedTextInputRef *ngIf=\"disabled\" class='form-control me-2' [ngModel]=\"selectedText\" tabindex=\"-1\" [readonly]=\"true\" [placeholder]='placeholder' />\r\n <div>\r\n <i class=\"fas fa-caret-down me-2\" style=\"pointer-events: none\"></i>\r\n </div>\r\n</div>\r\n\r\n\r\n<ul *ngIf=\"isVisible\" #dropdownList id=\"slick-drop-down_{{uuid}}\" class='slick-drop-down-list-group dropdown-menu' [style.width]=\"listGroupWidth\" [style.visibility]=\"(expanded === true) ? 'visible' : 'hidden'\" [style.opacity]=\"(expanded === true) ? '1' : '0'\" [style.max-height]=\"height\" [style.width.px]=\"listGroupWidth\" [style.left.px]=\"left\" [style.top.px]=\"top\">\r\n <li *ngFor=\"let item of visibleItems; let index = index;\" (click)=\"onItemClick(item)\" [class.active]=\"item.id === selectedItem?.id\" [class.card-header]=\"selectedIndex === index\" class=\"dropdown-item\">{{item.text}}</li>\r\n</ul>\r\n" }]
|
|
389
389
|
}], ctorParameters: function () { return [{ type: i1.SlickDropDownService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
390
390
|
type: Input
|
|
391
391
|
}], items: [{
|
|
@@ -444,4 +444,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
444
444
|
type: ViewChild,
|
|
445
445
|
args: ["selectedTextInputRef"]
|
|
446
446
|
}] } });
|
|
447
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRyb3AtZG93bi9zbGljay1kcm9wLWRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZHJvcC1kb3duL3NsaWNrLWRyb3AtZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUEyRCxTQUFTLEVBQUUsVUFBVSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6TCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFHN0QsTUFBTSxDQUFOLElBQVksd0JBQXNEO0FBQWxFLFdBQVksd0JBQXdCO0lBQUcsbUZBQVUsQ0FBQTtJQUFFLCtFQUFRLENBQUE7SUFBRSxxRUFBRyxDQUFBO0FBQUMsQ0FBQyxFQUF0RCx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBQThCO0FBWWxFLE1BQU0sT0FBTyxzQkFBc0I7SUFtRGxDLFlBQW9CLG9CQUEwQyxFQUNyRCxjQUFpQztRQUR0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ3JELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQW5EakMsZ0JBQVcs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TTtzQkFBZCxLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFb0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNFLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDVSxvQkFBb0I7c0JBQXRELFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTbGlja0Ryb3BEb3duU2VydmljZSB9IGZyb20gXCIuL3NsaWNrLWRyb3AtZG93bi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTbGlja1NsZWVwU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1zbGVlcC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrVXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLXV0aWxzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tJbml0U2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1pbml0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2xpY2tMb2dTZXJ2aWNlIH0gZnJvbSBcIi4uL3V0aWxzL3NsaWNrLWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElTbGlja0Ryb3BEb3duQnV0dG9uTW9kZWwgfSBmcm9tIFwiLi9zbGljay1kcm9wLWRvd24tYnV0dG9uLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgZW51bSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMgeyBzdGFydHNXaXRoLCBlYWNoV29yZCwgYW55IH1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnc2xpY2stZHJvcC1kb3duJyxcclxuXHR0ZW1wbGF0ZVVybDogJ3NsaWNrLWRyb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXHJcblx0cHJvdmlkZXJzOiBbU2xpY2tEcm9wRG93blNlcnZpY2UsIFNsaWNrTG9nU2VydmljZSxcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWNrRHJvcERvd25Db21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZSxcclxuXHRcdH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbGlja0Ryb3BEb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHRASW5wdXQoKSBpdGVtczogYW55W107XHJcblx0QElucHV0KCkgaWRGaWVsZE5hbWU6IHN0cmluZyA9IFwiaWRcIjtcclxuXHRASW5wdXQoKSB0ZXh0RmllbGROYW1lOiBzdHJpbmcgPSBcInRleHRcIjtcclxuXHRASW5wdXQoKSBjb21wYWN0OiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBhbGxvd0VtcHR5OiBib29sZWFuID0gdHJ1ZTtcclxuXHRASW5wdXQoKSBnZXRVcmw6IHN0cmluZztcclxuXHRASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dCgpIGxpc3RXaWR0aDogc3RyaW5nID0gJzEwMCUnO1xyXG5cdEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJzMwMHB4JztcclxuXHRASW5wdXQoKSBzaG93TG9hZGluZ01lc3NhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBzaG93RGVidWc6IGJvb2xlYW47XHJcblx0QElucHV0KCkgdGFiaW5kZXg6IG51bWJlcjtcclxuXHRASW5wdXQoKSB2YWxpZGF0aW9uSW5kaWNhdG9yOiBib29sZWFuO1xyXG5cdEBJbnB1dCgpIHZhbGlkYXRpb25JbmRpY2F0b3JUeXBlOiBzdHJpbmc7XHJcblx0QElucHV0KCkgYXR0YWNoVG86IHN0cmluZztcclxuXHRASW5wdXQoKSBzZWFyY2hUeXBlOiBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMgPSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aDtcclxuXHRASW5wdXQoKSBpY29uOiBzdHJpbmc7XHJcblx0QElucHV0KCkgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHRASW5wdXQoKSBjc3NDbGFzczogc3RyaW5nO1xyXG5cclxuXHRAT3V0cHV0KCkgb25FeHBhbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0QFZpZXdDaGlsZChcImNvbnRhaW5lckRpdlwiKSBjb250YWluZXJEaXY6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcImRyb3Bkb3duTGlzdFwiKSBkcm9wZG93bkxpc3Q6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZChcInNlbGVjdGVkVGV4dElucHV0UmVmXCIpIHNlbGVjdGVkVGV4dElucHV0UmVmOiBFbGVtZW50UmVmO1xyXG5cclxuXHQvLyBUaGlzIGlzIG5lY2Vzc2FyeSBzbyB0aGF0IHRoZSBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMgY2FuIGFkZCBhbmQgcmVtb3ZlIHRoZSBldmVudCBwcm9wZXJseSxcclxuXHQvLyBhcyB3ZWxsIGFzIGdldHRpbmcgdGhlIGNvcnJlY3QgRVM2IGZ1bmN0aW9uXHJcblx0Zm5SZXBvc2l0aW9uID0gKCkgPT4gdGhpcy5yZXBvc2l0aW9uKCk7XHJcblx0Zm5Eb2N1bWVudENsaWNrID0gKGUpID0+IHRoaXMuZG9jdW1lbnRDbGljayhlKTtcclxuXHR1dWlkOiBzdHJpbmc7XHJcblx0c2VsZWN0ZWRJZDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkVGV4dDogc3RyaW5nO1xyXG5cdGV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0c2VsZWN0ZWRJdGVtOiBhbnk7XHJcblx0c2VsZWN0ZWRJbmRleDogbnVtYmVyO1xyXG5cdGZpbHRlclRleHQ6IHN0cmluZyA9ICcnO1xyXG5cdHZpc2libGVJdGVtczogYW55W107XHJcblx0bGVmdDogbnVtYmVyO1xyXG5cdHRvcDogbnVtYmVyO1xyXG5cdGxpc3RHcm91cFdpZHRoOiBzdHJpbmc7XHJcblx0aXNWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblx0aXNBbmRyb2lkOiBib29sZWFuID0gKChTbGlja0luaXRTZXJ2aWNlLmdldFBsYXRmb3JtKCkgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdhbmRyb2lkJyk7XHJcblxyXG5cclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzbGlja0Ryb3BEb3duU2VydmljZTogU2xpY2tEcm9wRG93blNlcnZpY2UsXHJcblx0XHRwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0dGhpcy51dWlkID0gU2xpY2tVdGlsc1NlcnZpY2UubmV3R3VpZCgpO1xyXG5cdH1cclxuXHJcblx0YXN5bmMgbmdPbkluaXQoKSB7XHJcblx0XHR0aGlzLmF0dGFjaFRvID0gdGhpcy5hdHRhY2hUbyB8fCBTbGlja0luaXRTZXJ2aWNlLmdldFBhcmFtcygpLmF0dGFjaFRvIHx8ICdib2R5JztcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuXHRcdGlmICh0aGlzLmNzc0NsYXNzKVxyXG5cdFx0XHQoPEhUTUxEaXZFbGVtZW50PnRoaXMuY29udGFpbmVyRGl2Lm5hdGl2ZUVsZW1lbnQpLmNsYXNzTGlzdC5hZGQoLi4udGhpcy5jc3NDbGFzcy5zcGxpdChcIiBcIikpO1xyXG5cdH1cclxuXHJcblx0cHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG5cclxuXHQvLyB0aGlzIGlzIHRoZSBpbml0aWFsIHZhbHVlIHNldCB0byB0aGUgY29tcG9uZW50XHJcblx0cHVibGljIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcclxuXHRcdGlmIChvYmogIT09IG51bGwgJiYgb2JqICE9PSB1bmRlZmluZWQpXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IG9iajtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkID0gbnVsbDtcclxuXHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZElkLCBmYWxzZSk7XHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG5cclxuXHQvLyByZWdpc3RlcnMgJ2ZuJyB0aGF0IHdpbGwgYmUgZmlyZWQgd2hlbiBjaGFuZ2VzIGFyZSBtYWRlXHJcblx0Ly8gdGhpcyBpcyBob3cgd2UgZW1pdCB0aGUgY2hhbmdlcyBiYWNrIHRvIHRoZSBmb3JtXHJcblx0cHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8vIG5vdCB1c2VkLCB1c2VkIGZvciB0b3VjaCBpbnB1dFxyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHsgfVxyXG5cclxuXHRhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLml0ZW1zKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZiAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY2hhbmdlcy5zaG93TG9hZGluZ01lc3NhZ2UpIHtcclxuXHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdFx0aWYgKHRoaXMuc2hvd0xvYWRpbmdNZXNzYWdlID09PSB0cnVlKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gXCJMb2FkaW5nLi4uXCI7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuZ2V0VXJsKSB7XHJcblx0XHRcdGlmICh0aGlzLnNob3dMb2FkaW5nTWVzc2FnZSA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gXCJMb2FkaW5nLi4uXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGxldCBpdGVtczogYW55W10gPSBhd2FpdCB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldEl0ZW1zRnJvbVNlcnZlcih0aGlzLmdldFVybClcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSBudWxsO1xyXG5cdFx0XHR0aGlzLml0ZW1zID0gaXRlbXNcclxuXHRcdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0XHR0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZElkLCBmYWxzZSk7XHJcblx0XHRcdGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpXHJcblx0XHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY2hhbmdlcy52YWxpZGF0aW9uSW5kaWNhdG9yICYmIGNoYW5nZXMudmFsaWRhdGlvbkluZGljYXRvci5maXJzdENoYW5nZSkge1xyXG5cdFx0XHRpZiAoIXRoaXMudmFsaWRhdGlvbkluZGljYXRvclR5cGUpXHJcblx0XHRcdFx0dGhpcy52YWxpZGF0aW9uSW5kaWNhdG9yVHlwZSA9IFwiZXJyb3JcIjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoY2hhbmdlcy5hbGxvd0VtcHR5KVxyXG5cdFx0XHR0aGlzLmFsbG93RW1wdHkgPSAodGhpcy5hbGxvd0VtcHR5LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykgPyBmYWxzZSA6IHRydWU7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuaXNNb2JpbGUpXHJcblx0XHRcdHRoaXMuaXNNb2JpbGUgPSAodGhpcy5pc01vYmlsZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykgPyB0cnVlIDogZmFsc2U7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuZGlzYWJsZWQgJiYgY2hhbmdlcy5kaXNhYmxlZC5jdXJyZW50VmFsdWUpXHJcblx0XHRcdHRoaXMuZGlzYWJsZWQgPSAoY2hhbmdlcy5kaXNhYmxlZC5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpICE9PSAnZmFsc2UnKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5jb21wYWN0ICYmIGNoYW5nZXMuY29tcGFjdC5jdXJyZW50VmFsdWUpXHJcblx0XHRcdHRoaXMuY29tcGFjdCA9IChjaGFuZ2VzLmNvbXBhY3QuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSAhPT0gJ2ZhbHNlJyk7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZSkge1xyXG5cdFx0XHRpZiAoY2hhbmdlcy5zZWFyY2hUeXBlLmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdlYWNod29yZCcpXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tEcm9wRG93blNlYXJjaFR5cGVzLmVhY2hXb3JkO1xyXG5cdFx0XHRlbHNlIGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2FueScpXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hUeXBlID0gU2xpY2tEcm9wRG93blNlYXJjaFR5cGVzLmFueTtcclxuXHRcdFx0ZWxzZVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5zdGFydHNXaXRoO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cclxuXHRcdC8vIGl0J3Mgb2theSBpZiB0aGlzIGZhaWxzLiAgSXQgd2FzIGFscmVhZHkgcmVtb3ZlZFxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50KTtcclxuXHRcdH1cclxuXHRcdGNhdGNoIHsgfVxyXG5cdH1cclxuXHJcblx0YXN5bmMgc2V0Rm9jdXMoc2hvd0Ryb3Bkb3duTGlzdDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblx0XHR0aGlzLmZpbHRlclRleHQgPSAnJztcclxuXHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIHRydWUsIGp1c3Qgc2V0IGV4cGFuZGVkIHRvIGZhbHNlIHRvIGZvcmNlIGFuIGV4cGFuZFxyXG5cdFx0aWYgKHNob3dEcm9wZG93bkxpc3QgPT09IHRydWUpXHJcblx0XHRcdHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHJcblx0XHRhd2FpdCBTbGlja1V0aWxzU2VydmljZS53YWl0Rm9yRWxlbWVudChcIiNzbGljay1kcm9wLWRvd25fXCIgKyB0aGlzLnV1aWQpO1xyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgZXhwYW5kKCkge1xyXG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLmlzVmlzaWJsZSA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG5cdFx0U2xpY2tVdGlsc1NlcnZpY2UuYXR0YWNoRWxlbWVudCh0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LCB0aGlzLmF0dGFjaFRvKVxyXG5cclxuXHRcdHRoaXMucmVwb3NpdGlvbigpO1xyXG5cclxuXHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHR0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xyXG5cclxuXHRcdGNvbnN0IHNlbGVjdGVkSXRlbXMgPSB0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhY3RpdmVcIik7XHJcblx0XHRpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApXHJcblx0XHRcdCg8SFRNTEVsZW1lbnQ+c2VsZWN0ZWRJdGVtc1swXSkuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xyXG5cclxuXHRcdHRoaXMuZXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuXHJcblx0XHQvLyBUaGlzIGlzIG5lY2Vzc2FyeSwgb3RoZXJ3aXNlIGB0aGlzYCBpbiB0aGUgcmVwb3NpdGlvbiBmdW5jdGlvbiB3aWxsIGJlIHdpbmRvd1xyXG5cdFx0Ly8gYW5kIG5vdCB0aGUgY29tcG9uZW50LlxyXG5cdFx0Ly8gU2luY2UgYW5ndWxhciBoYXMgbm8gd2F5IHRvIHVzZSB0aGUgdGhpcmQgcGFyYW1ldGVyLCBJJ20gZG9pbmcgdGhpcyBpbiByYXcganNcclxuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmZuRG9jdW1lbnRDbGljaywgdHJ1ZSk7XHJcblxyXG5cdFx0aWYgKHRoaXMub25FeHBhbmQpXHJcblx0XHRcdHRoaXMub25FeHBhbmQuZW1pdCgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBjb2xsYXBzZSgpIHtcclxuXHRcdGlmICh0aGlzLmV4cGFuZGVkID09PSBmYWxzZSlcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcclxuXHRcdHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG5cdFx0Ly8gU2luY2UgYW5ndWxhciBoYXMgbm8gd2F5IHRvIHVzZSB0aGUgdGhpcmQgcGFyYW1ldGVyLCBJJ20gZG9pbmcgdGhpcyBpbiByYXcganNcclxuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLmZuRG9jdW1lbnRDbGljaywgdHJ1ZSk7XHJcblx0XHRTbGlja1V0aWxzU2VydmljZS5yZW1vdmVFbGVtZW50KHRoaXMuZHJvcGRvd25MaXN0Lm5hdGl2ZUVsZW1lbnQpO1xyXG5cclxuXHRcdHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlcG9zaXRpb24oKSB7XHJcblx0XHRjb25zdCBkcm9wRG93blJlY3QgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0Y29uc3QgcGFyZW50UmVjdCA9ICh0aGlzLmF0dGFjaFRvID09PSAnYm9keScpID8gbnVsbCA6IGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3Rvcih0aGlzLmF0dGFjaFRvKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcblx0XHRjb25zdCBjb250YWluZXJMZWZ0ID0gKHRoaXMuYXR0YWNoVG8gPT09ICdib2R5JykgPyBkcm9wRG93blJlY3QubGVmdCA6IChkcm9wRG93blJlY3QubGVmdCAtIHBhcmVudFJlY3QubGVmdCk7XHJcblx0XHRjb25zdCBjb250YWluZXJUb3AgPSAodGhpcy5hdHRhY2hUbyA9PT0gJ2JvZHknKSA/IGRyb3BEb3duUmVjdC50b3AgOiAoZHJvcERvd25SZWN0LnRvcCAtIHBhcmVudFJlY3QudG9wKTtcclxuXHJcblx0XHRjb25zdCBjb250YWluZXJIZWlnaHQgPSB0aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcclxuXHRcdGNvbnN0IGNvbnRhaW5lcldpZHRoID0gZHJvcERvd25SZWN0LndpZHRoO1xyXG5cclxuXHRcdHRoaXMud2lkdGggPSBjb250YWluZXJXaWR0aDtcclxuXHRcdGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJzEwMCUnKVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gdGhpcy53aWR0aDtcclxuXHRcdGVsc2UgaWYgKHRoaXMubGlzdFdpZHRoID09PSAnYXV0bycpXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSBcImF1dG9cIjtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IHRoaXMubGlzdFdpZHRoO1xyXG5cdFx0dGhpcy50b3AgPSAoY29udGFpbmVyVG9wICsgY29udGFpbmVySGVpZ2h0KTtcclxuXHRcdHRoaXMubGVmdCA9IGNvbnRhaW5lckxlZnQ7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGRvY3VtZW50Q2xpY2soZTogTW91c2VFdmVudCkge1xyXG5cdFx0Ly8gTm90IGVudGlyZWx5IHN1cmUgd2h5LCBidXQgaVBob25lcyBjYWxsIG9uRm9jdXMgd2hlbiBjbGlja2luZyBvdXQgb2YgdGhlIGRyb3Bkb3duXHJcblx0XHRpZiAoIXRoaXMuZXhwYW5kZWQgfHwgIWUudGFyZ2V0KVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0aWYgKFNsaWNrVXRpbHNTZXJ2aWNlLmNoZWNrUGFyZW50SWRFeGlzdHMoPEhUTUxFbGVtZW50PmUudGFyZ2V0LCBcInNsaWNrLWRyb3AtZG93bl9cIiArIHRoaXMudXVpZCkgPT09IHRydWUpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTtcclxuXHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IG51bGwgJiYgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRsZXQgaXRlbUlkID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XS5pZDtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKGl0ZW1JZCwgdHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZWxlY3RJdGVtKGlkOiBzdHJpbmcsIGVtaXRPblNlbGVjdDogYm9vbGVhbikge1xyXG5cdFx0bGV0IGl0ZW0gPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFNlbGVjdGVkSXRlbSh0aGlzLnZpc2libGVJdGVtcywgaWQpO1xyXG5cclxuXHRcdGlmIChpdGVtKSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZElkID0gaXRlbS5pZDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSBpdGVtLnRleHQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0SXRlbUluZGV4KHRoaXMudmlzaWJsZUl0ZW1zLCB0aGlzLnNlbGVjdGVkSWQpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMub25DaGFuZ2UpXHJcblx0XHRcdFx0dGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtLml0ZW0pO1xyXG5cdFx0XHRpZiAoZW1pdE9uU2VsZWN0ID09PSB0cnVlICYmIHRoaXMub25TZWxlY3QpXHJcblx0XHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtLml0ZW0pO1xyXG5cdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkSWQpO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSBudWxsO1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgb25LZXlEb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHRcdGlmICh0aGlzLmlzQW5kcm9pZClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdC8vIFRhYi9lbnRlclxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDkgfHwgZS53aGljaCA9PT0gMTMpIHtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSgwLCAwKTtcclxuXHRcdFx0bGV0IGl0ZW1JZCA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbShpdGVtSWQsIHRydWUpO1xyXG5cclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGUua2V5ICYmIGUua2V5Lmxlbmd0aCA+IDEpXHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cclxuXHRcdGlmIChlLndoaWNoID09PSA0NiB8fCBlLndoaWNoID09PSA4KSB7XHJcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZS53aGljaCA+PSAzMiAmJiBlLndoaWNoIDw9IDEyNikge1xyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRhc3luYyBvbktleVVwKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuXHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG5cdFx0Ly8gSWYgdGhpcyBpcyBhbmRyb2lkLCBpdCB3b24ndCBwYXNzIHVzIGFueSBrZXkgZGF0YSBzbyBqdXN0IHJlYWQgdGhlIGVudGlyZSBpbnB1dCBlbGVtZW50XHJcblx0XHRpZiAodGhpcy5pc0FuZHJvaWQgPT09IHRydWUpIHtcclxuXHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9ICg8SFRNTElucHV0RWxlbWVudD50aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnZhbHVlO1xyXG5cdFx0XHR0aGlzLmZpbHRlclNlYXJjaCgpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gRXNjXHJcblx0XHRpZiAoZS53aGljaCA9PT0gMjcpIHtcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGRlbCBvciBiYWNrc3BhY2VcclxuXHRcdGlmIChlLndoaWNoID09PSA0NiB8fCBlLndoaWNoID09PSA4ICYmICF0aGlzLmZpbHRlclRleHQpIHtcclxuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuYWxsb3dFbXB0eSA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0SXRlbShudWxsLCB0cnVlKTtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSWQgPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG5cclxuXHRcdFx0XHRpZiAodGhpcy5vbkNoYW5nZSlcclxuXHRcdFx0XHRcdHRoaXMub25DaGFuZ2UuZW1pdChudWxsKTtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMub25TZWxlY3QpXHJcblx0XHRcdFx0XHR0aGlzLm9uU2VsZWN0LmVtaXQobnVsbCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZS53aGljaCA9PT0gOCAmJiB0aGlzLmZpbHRlclRleHQpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ID0gdGhpcy5maWx0ZXJUZXh0LnN1YnN0cmluZygwLCB0aGlzLmZpbHRlclRleHQubGVuZ3RoIC0gMSk7XHJcblx0XHRcdGlmICh0aGlzLmZpbHRlclRleHQubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSAnJztcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlXHJcblx0XHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEFycm93dXBcclxuXHRcdGlmIChlLndoaWNoID09PSAzOCkge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID4gMClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXgtLTtcclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBBcnJvd2Rvd25cclxuXHRcdGlmIChlLndoaWNoID09PSA0MCkge1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ID09PSBudWxsIHx8IHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gdW5kZWZpbmVkKVxyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG5cclxuXHRcdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICF0aGlzLnZpc2libGVJdGVtcykge1xyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXgrKztcclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBJZiBGMSBpcyBwcmVzc2VkLCBrZXkgbGVuZ3RoIHdpbGwgYmUgMlxyXG5cdFx0aWYgKGUua2V5Lmxlbmd0aCA+IDEgfHwgZS5jdHJsS2V5IHx8IGUuYWx0S2V5KVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblxyXG5cdFx0aWYgKGUud2hpY2ggPj0gMzIgJiYgZS53aGljaCA8PSAxMjYpIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJUZXh0ICs9IGUua2V5O1xyXG5cclxuXHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYXN5bmMgZmlsdGVyU2VhcmNoKCkge1xyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkKVxyXG5cdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cclxuXHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5zdGFydHNXaXRoKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKHggPT4geC50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSkgPT09IDApO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0O1xyXG5cdFx0XHRcdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHRcdFx0XHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLnNldFNlbGVjdGlvblJhbmdlKHRoaXMuZmlsdGVyVGV4dC5sZW5ndGgsIHRoaXMuc2VsZWN0ZWRUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gU2xpY2tEcm9wRG93blNlYXJjaFR5cGVzLmVhY2hXb3JkKSB7XHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKHggPT4gKFwiIFwiICsgeC50ZXh0LnRvTG93ZXJDYXNlKCkpLmluZGV4T2YoXCIgXCIgKyB0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSkgPj0gMCk7XHJcblx0XHRcdGlmICh0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gMDtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0FuZHJvaWQgPT09IGZhbHNlKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMudmlzaWJsZUl0ZW1zWzBdLnRleHQ7XHJcblx0XHRcdFx0XHRjb25zdCBzZWxlY3RlZFRleHRTdGFydCA9IChcIiBcIiArIHRoaXMudmlzaWJsZUl0ZW1zWzBdLnRleHQpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIiBcIiArIHRoaXMuZmlsdGVyVGV4dC50b0xvd2VyQ2FzZSgpKTtcclxuXHRcdFx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3RlZFRleHRTdGFydCwgc2VsZWN0ZWRUZXh0U3RhcnQgKyB0aGlzLmZpbHRlclRleHQubGVuZ3RoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLmZpbHRlclRleHQ7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGxhc3RFdmVudDogc3RyaW5nID0gbnVsbDtcclxuXHRvbkRyb3Bkb3duQ2xpY2tlZChlOiBNb3VzZUV2ZW50KSB7XHJcblx0XHQvLyBUaGlzIGlzIHNvbWUgaGFja3kgY29kZSB0aGF0IG9ubHkgYWxsb3dzIDEgZXZlbnQgZXZlcnkgMTAwbXNcclxuXHRcdC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGlmIHRoZXkgd2lsbCB0YWIgaW50byB0aGUgZm9jdXMgb3IgY2xpY2sgaW50byBpdC4gIElmIHRoZXkgdGFiLCB3ZSBvbmx5IGdldCAxIGZvY3VzIGV2ZW50XHJcblx0XHQvLyBpZiB0aGV5IGNsaWNrIHdlIGdldCBmb2N1cyBBTkQgY2xpY2suXHJcblx0XHRpZiAodGhpcy5sYXN0RXZlbnQgIT09IG51bGwpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLmxhc3RFdmVudCA9IGUudHlwZTtcclxuXHJcblx0XHQvLyBJZiB0aGlzIGlzIHRoZSBmb2N1cyBldmVudCwgd2UgbWF5IG9yIG1heSBub3QgZ2V0XHJcblx0XHQvLyBhIGNsaWNrIGV2ZW50IGFmdGVyLiAgSWYgaXQgaXMsIHdhaXQgYSBiaXQgbG9uZ2VyIGZvclxyXG5cdFx0Ly8gc2xvd2VyIGNvbXB1dGVycyB0byBmaXJlIHRoZSBjbGlja1xyXG5cdFx0aWYgKHRoaXMubGFzdEV2ZW50ID09PSAnZm9jdXMnKVxyXG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMubGFzdEV2ZW50ID0gbnVsbCwgNTAwKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLmxhc3RFdmVudCA9IG51bGwsIDI1MCk7XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0odGhpcy5zZWxlY3RlZElkLCBmYWxzZSk7XHJcblx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5mb2N1cygpO1xyXG5cclxuXHRcdGlmICh0aGlzLmV4cGFuZGVkID09PSBmYWxzZSlcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0b25JdGVtQ2xpY2soaXRlbTogYW55KSB7XHJcblx0XHR0aGlzLnNlbGVjdEl0ZW0oaXRlbS5pZCwgdHJ1ZSk7XHJcblx0XHR0aGlzLmNvbGxhcHNlKCk7XHJcblx0fVxyXG59IiwiPGRpdiAqbmdJZj1cIiFjb21wYWN0XCIgI2NvbnRhaW5lckRpdiBjbGFzcz1cInNsaWNrLWRyb3AtZG93biBmb3JtLWNvbnRyb2wgZC1mbGV4IGZsZXgtZmlsbCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBbc2xpY2stdmFsaWRhdGlvbi1pbmRpY2F0b3JdPVwidmFsaWRhdGlvbkluZGljYXRvclwiIFtzbGlja1ZhbGlkYXRpb25UeXBlXT1cInZhbGlkYXRpb25JbmRpY2F0b3JUeXBlXCIgaWQ9XCJzbGljay1kcm9wLWRvd25fe3t1dWlkfX1cIiBhdHRyLmRhdGEtdXVpZD1cInt7dXVpZH19XCIgW2NsYXNzLm9wZW5dPVwiZXhwYW5kZWRcIiAoY2xpY2spPVwib25Ecm9wZG93bkNsaWNrZWQoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cImljb25cIiBjbGFzcz1cInNsaWNrLWRyb3AtZG93bl9pY29uIG1zLTIgcC0wXCI+PGkgW25nQ2xhc3NdPVwiaWNvblwiPjwvaT48L2Rpdj5cclxuICAgIDxpbnB1dCAjc2VsZWN0ZWRUZXh0SW5wdXRSZWYgKm5nSWY9XCIhZGlzYWJsZWRcIiBjbGFzcz0nZm9ybS1jb250cm9sIG14LTInIFsobmdNb2RlbCldPVwic2VsZWN0ZWRUZXh0XCIgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiAoZm9jdXMpPVwib25Ecm9wZG93bkNsaWNrZWQoJGV2ZW50KVwiIFtyZWFkb25seV09XCIhaXNNb2JpbGVcIiBbcGxhY2Vob2xkZXJdPSdwbGFjZWhvbGRlcicgLz5cclxuICAgIDxpbnB1dCAjc2VsZWN0ZWRUZXh0SW5wdXRSZWYgKm5nSWY9XCJkaXNhYmxlZFwiIGNsYXNzPSdmb3JtLWNvbnRyb2wgbXgtMicgW25nTW9kZWxdPVwic2VsZWN0ZWRUZXh0XCIgdGFiaW5kZXg9XCItMVwiIFtyZWFkb25seV09XCJ0cnVlXCIgW3BsYWNlaG9sZGVyXT0ncGxhY2Vob2xkZXInIC8+XHJcbiAgICA8ZGl2PlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNhcmV0LWRvd24gbWUtMlwiIHN0eWxlPVwicG9pbnRlci1ldmVudHM6IG5vbmVcIj48L2k+XHJcbiAgICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbjxkaXYgKm5nSWY9XCJjb21wYWN0XCIgI2NvbnRhaW5lckRpdiBjbGFzcz1cInNsaWNrLWRyb3AtZG93biBzbGljay1kcm9wLWRvd24tY29tcGFjdCBmb3JtLWNvbnRyb2wgZC1mbGV4IGZsZXgtZmlsbCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBpZD1cInNsaWNrLWRyb3AtZG93bl97e3V1aWR9fVwiIGF0dHIuZGF0YS11dWlkPVwie3t1dWlkfX1cIiBbY2xhc3Mub3Blbl09XCJleHBhbmRlZFwiIChjbGljayk9XCJvbkRyb3Bkb3duQ2xpY2tlZCgkZXZlbnQpXCI+XHJcbiAgICA8aW5wdXQgI3NlbGVjdGVkVGV4dElucHV0UmVmICpuZ0lmPVwiIWRpc2FibGVkXCIgY2xhc3M9J2Zvcm0tY29udHJvbCBtZS0yJyBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGV4dFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRHJvcGRvd25DbGlja2VkKCRldmVudClcIiBbcmVhZG9ubHldPVwiIWlzTW9iaWxlXCIgW3BsYWNlaG9sZGVyXT0ncGxhY2Vob2xkZXInIC8+XHJcbiAgICA8aW5wdXQgI3NlbGVjdGVkVGV4dElucHV0UmVmICpuZ0lmPVwiZGlzYWJsZWRcIiBjbGFzcz0nZm9ybS1jb250cm9sIG1lLTInIFtuZ01vZGVsXT1cInNlbGVjdGVkVGV4dFwiIHRhYmluZGV4PVwiLTFcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09J3BsYWNlaG9sZGVyJyAvPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jYXJldC1kb3duIG1lLTJcIiBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjx1bCAqbmdJZj1cImlzVmlzaWJsZVwiICNkcm9wZG93bkxpc3QgaWQ9XCJzbGljay1kcm9wLWRvd25fe3t1dWlkfX1cIiBjbGFzcz0nc2xpY2stZHJvcC1kb3duLWxpc3QtZ3JvdXAgZHJvcGRvd24tbWVudScgW3N0eWxlLndpZHRoXT1cImxpc3RHcm91cFdpZHRoXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgW3N0eWxlLm9wYWNpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICcxJyA6ICcwJ1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImhlaWdodFwiIFtzdHlsZS53aWR0aC5weF09XCJsaXN0R3JvdXBXaWR0aFwiIFtzdHlsZS5sZWZ0LnB4XT1cImxlZnRcIiBbc3R5bGUudG9wLnB4XT1cInRvcFwiPlxyXG4gICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZpc2libGVJdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCIgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmlkID09PSBzZWxlY3RlZEl0ZW0/LmlkXCIgW2NsYXNzLmNhcmQtaGVhZGVyXT1cInNlbGVjdGVkSW5kZXggPT09IGluZGV4XCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+e3tpdGVtLnRleHR9fTwvbGk+XHJcbjwvdWw+XHJcbiJdfQ==
|
|
447
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL3NsaWNrLWRyb3AtZG93bi9zbGljay1kcm9wLWRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvc2xpY2stZHJvcC1kb3duL3NsaWNrLWRyb3AtZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUEyRCxTQUFTLEVBQUUsVUFBVSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUN6TCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFHN0QsTUFBTSxDQUFOLElBQVksd0JBQXNEO0FBQWxFLFdBQVksd0JBQXdCO0lBQUcsbUZBQVUsQ0FBQTtJQUFFLCtFQUFRLENBQUE7SUFBRSxxRUFBRyxDQUFBO0FBQUMsQ0FBQyxFQUF0RCx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBQThCO0FBWWxFLE1BQU0sT0FBTyxzQkFBc0I7SUFtRGxDLFlBQW9CLG9CQUEwQyxFQUNyRCxjQUFpQztRQUR0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ3JELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQW5EakMsZ0JBQVcs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QU07c0JBQWQsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRW9CLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDRSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ1Usb0JBQW9CO3NCQUF0RCxTQUFTO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIGZvcndhcmRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2xpY2tEcm9wRG93blNlcnZpY2UgfSBmcm9tIFwiLi9zbGljay1kcm9wLWRvd24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU2xpY2tTbGVlcFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stc2xlZXAuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTbGlja1V0aWxzU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay11dGlscy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrSW5pdFNlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2staW5pdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNsaWNrTG9nU2VydmljZSB9IGZyb20gXCIuLi91dGlscy9zbGljay1sb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJU2xpY2tEcm9wRG93bkJ1dHRvbk1vZGVsIH0gZnJvbSBcIi4vc2xpY2stZHJvcC1kb3duLWJ1dHRvbi5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGVudW0gU2xpY2tEcm9wRG93blNlYXJjaFR5cGVzIHsgc3RhcnRzV2l0aCwgZWFjaFdvcmQsIGFueSB9XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3NsaWNrLWRyb3AtZG93bicsXHJcblx0dGVtcGxhdGVVcmw6ICdzbGljay1kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwnLFxyXG5cdHByb3ZpZGVyczogW1NsaWNrRHJvcERvd25TZXJ2aWNlLCBTbGlja0xvZ1NlcnZpY2UsXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG5cdFx0XHR1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlja0Ryb3BEb3duQ29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWUsXHJcblx0XHR9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpY2tEcm9wRG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHRASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcblx0QElucHV0KCkgaXRlbXM6IGFueVtdO1xyXG5cdEBJbnB1dCgpIGlkRmllbGROYW1lOiBzdHJpbmcgPSBcImlkXCI7XHJcblx0QElucHV0KCkgdGV4dEZpZWxkTmFtZTogc3RyaW5nID0gXCJ0ZXh0XCI7XHJcblx0QElucHV0KCkgY29tcGFjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgYWxsb3dFbXB0eTogYm9vbGVhbiA9IHRydWU7XHJcblx0QElucHV0KCkgZ2V0VXJsOiBzdHJpbmc7XHJcblx0QElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcxMDAlJztcclxuXHRASW5wdXQoKSBsaXN0V2lkdGg6IHN0cmluZyA9ICcxMDAlJztcclxuXHRASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICczMDBweCc7XHJcblx0QElucHV0KCkgc2hvd0xvYWRpbmdNZXNzYWdlOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgc2hvd0RlYnVnOiBib29sZWFuO1xyXG5cdEBJbnB1dCgpIHRhYmluZGV4OiBudW1iZXI7XHJcblx0QElucHV0KCkgdmFsaWRhdGlvbkluZGljYXRvcjogYm9vbGVhbjtcclxuXHRASW5wdXQoKSB2YWxpZGF0aW9uSW5kaWNhdG9yVHlwZTogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIGF0dGFjaFRvOiBzdHJpbmc7XHJcblx0QElucHV0KCkgc2VhcmNoVHlwZTogU2xpY2tEcm9wRG93blNlYXJjaFR5cGVzID0gU2xpY2tEcm9wRG93blNlYXJjaFR5cGVzLnN0YXJ0c1dpdGg7XHJcblx0QElucHV0KCkgaWNvbjogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIGlzTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcblx0QElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZztcclxuXHJcblx0QE91dHB1dCgpIG9uRXhwYW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHRAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdEBWaWV3Q2hpbGQoXCJjb250YWluZXJEaXZcIikgY29udGFpbmVyRGl2OiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJkcm9wZG93bkxpc3RcIikgZHJvcGRvd25MaXN0OiBFbGVtZW50UmVmO1xyXG5cdEBWaWV3Q2hpbGQoXCJzZWxlY3RlZFRleHRJbnB1dFJlZlwiKSBzZWxlY3RlZFRleHRJbnB1dFJlZjogRWxlbWVudFJlZjtcclxuXHJcblx0Ly8gVGhpcyBpcyBuZWNlc3Nhcnkgc28gdGhhdCB0aGUgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzIGNhbiBhZGQgYW5kIHJlbW92ZSB0aGUgZXZlbnQgcHJvcGVybHksXHJcblx0Ly8gYXMgd2VsbCBhcyBnZXR0aW5nIHRoZSBjb3JyZWN0IEVTNiBmdW5jdGlvblxyXG5cdGZuUmVwb3NpdGlvbiA9ICgpID0+IHRoaXMucmVwb3NpdGlvbigpO1xyXG5cdGZuRG9jdW1lbnRDbGljayA9IChlKSA9PiB0aGlzLmRvY3VtZW50Q2xpY2soZSk7XHJcblx0dXVpZDogc3RyaW5nO1xyXG5cdHNlbGVjdGVkSWQ6IHN0cmluZztcclxuXHRzZWxlY3RlZFRleHQ6IHN0cmluZztcclxuXHRleHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdHNlbGVjdGVkSXRlbTogYW55O1xyXG5cdHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcclxuXHRmaWx0ZXJUZXh0OiBzdHJpbmcgPSAnJztcclxuXHR2aXNpYmxlSXRlbXM6IGFueVtdO1xyXG5cdGxlZnQ6IG51bWJlcjtcclxuXHR0b3A6IG51bWJlcjtcclxuXHRsaXN0R3JvdXBXaWR0aDogc3RyaW5nO1xyXG5cdGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cdGlzQW5kcm9pZDogYm9vbGVhbiA9ICgoU2xpY2tJbml0U2VydmljZS5nZXRQbGF0Zm9ybSgpIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnYW5kcm9pZCcpO1xyXG5cclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgc2xpY2tEcm9wRG93blNlcnZpY2U6IFNsaWNrRHJvcERvd25TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdHRoaXMudXVpZCA9IFNsaWNrVXRpbHNTZXJ2aWNlLm5ld0d1aWQoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5hdHRhY2hUbyA9IHRoaXMuYXR0YWNoVG8gfHwgU2xpY2tJbml0U2VydmljZS5nZXRQYXJhbXMoKS5hdHRhY2hUbyB8fCAnYm9keSc7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XHJcblx0XHRpZiAodGhpcy5jc3NDbGFzcylcclxuXHRcdFx0KDxIVE1MRGl2RWxlbWVudD50aGlzLmNvbnRhaW5lckRpdi5uYXRpdmVFbGVtZW50KS5jbGFzc0xpc3QuYWRkKC4uLnRoaXMuY3NzQ2xhc3Muc3BsaXQoXCIgXCIpKTtcclxuXHR9XHJcblxyXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcblx0Ly8gdGhpcyBpcyB0aGUgaW5pdGlhbCB2YWx1ZSBzZXQgdG8gdGhlIGNvbXBvbmVudFxyXG5cdHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KSB7XHJcblx0XHRpZiAob2JqICE9PSBudWxsICYmIG9iaiAhPT0gdW5kZWZpbmVkKVxyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSWQgPSBvYmo7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IG51bGw7XHJcblxyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxuXHJcblx0Ly8gcmVnaXN0ZXJzICdmbicgdGhhdCB3aWxsIGJlIGZpcmVkIHdoZW4gY2hhbmdlcyBhcmUgbWFkZVxyXG5cdC8vIHRoaXMgaXMgaG93IHdlIGVtaXQgdGhlIGNoYW5nZXMgYmFjayB0byB0aGUgZm9ybVxyXG5cdHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcblx0fVxyXG5cclxuXHQvLyBub3QgdXNlZCwgdXNlZCBmb3IgdG91Y2ggaW5wdXRcclxuXHRwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKSB7IH1cclxuXHJcblx0YXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG5cdFx0YXdhaXQgU2xpY2tTbGVlcFNlcnZpY2Uuc2xlZXAoKTtcclxuXHJcblx0XHRpZiAoY2hhbmdlcy5pdGVtcykge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbSh0aGlzLnNlbGVjdGVkSWQsIGZhbHNlKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuc2hvd0xvYWRpbmdNZXNzYWdlKSB7XHJcblx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdGlmICh0aGlzLnNob3dMb2FkaW5nTWVzc2FnZSA9PT0gdHJ1ZSlcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IFwiTG9hZGluZy4uLlwiO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmdldFVybCkge1xyXG5cdFx0XHRpZiAodGhpcy5zaG93TG9hZGluZ01lc3NhZ2UgPT09IHRydWUpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IFwiTG9hZGluZy4uLlwiO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgaXRlbXM6IGFueVtdID0gYXdhaXQgdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRJdGVtc0Zyb21TZXJ2ZXIodGhpcy5nZXRVcmwpXHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gbnVsbDtcclxuXHRcdFx0dGhpcy5pdGVtcyA9IGl0ZW1zXHJcblx0XHRcdHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRWaXNpYmxlSXRlbXModGhpcy5pdGVtcywgdGhpcy5pZEZpZWxkTmFtZSwgdGhpcy50ZXh0RmllbGROYW1lKTtcclxuXHRcdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0XHRpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KVxyXG5cdFx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMudmFsaWRhdGlvbkluZGljYXRvciAmJiBjaGFuZ2VzLnZhbGlkYXRpb25JbmRpY2F0b3IuZmlyc3RDaGFuZ2UpIHtcclxuXHRcdFx0aWYgKCF0aGlzLnZhbGlkYXRpb25JbmRpY2F0b3JUeXBlKVxyXG5cdFx0XHRcdHRoaXMudmFsaWRhdGlvbkluZGljYXRvclR5cGUgPSBcImVycm9yXCI7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuYWxsb3dFbXB0eSlcclxuXHRcdFx0dGhpcy5hbGxvd0VtcHR5ID0gKHRoaXMuYWxsb3dFbXB0eS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmlzTW9iaWxlKVxyXG5cdFx0XHR0aGlzLmlzTW9iaWxlID0gKHRoaXMuaXNNb2JpbGUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLmRpc2FibGVkICYmIGNoYW5nZXMuZGlzYWJsZWQuY3VycmVudFZhbHVlKVxyXG5cdFx0XHR0aGlzLmRpc2FibGVkID0gKGNoYW5nZXMuZGlzYWJsZWQuY3VycmVudFZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSAhPT0gJ2ZhbHNlJyk7XHJcblxyXG5cdFx0aWYgKGNoYW5nZXMuY29tcGFjdCAmJiBjaGFuZ2VzLmNvbXBhY3QuY3VycmVudFZhbHVlKVxyXG5cdFx0XHR0aGlzLmNvbXBhY3QgPSAoY2hhbmdlcy5jb21wYWN0LmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgIT09ICdmYWxzZScpO1xyXG5cclxuXHRcdGlmIChjaGFuZ2VzLnNlYXJjaFR5cGUpIHtcclxuXHRcdFx0aWYgKGNoYW5nZXMuc2VhcmNoVHlwZS5jdXJyZW50VmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpID09PSAnZWFjaHdvcmQnKVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5lYWNoV29yZDtcclxuXHRcdFx0ZWxzZSBpZiAoY2hhbmdlcy5zZWFyY2hUeXBlLmN1cnJlbnRWYWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09ICdhbnknKVxyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVHlwZSA9IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5hbnk7XHJcblx0XHRcdGVsc2VcclxuXHRcdFx0XHR0aGlzLnNlYXJjaFR5cGUgPSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMuZm5Eb2N1bWVudENsaWNrLCB0cnVlKTtcclxuXHJcblx0XHQvLyBpdCdzIG9rYXkgaWYgdGhpcyBmYWlscy4gIEl0IHdhcyBhbHJlYWR5IHJlbW92ZWRcclxuXHRcdHRyeSB7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudCk7XHJcblx0XHR9XHJcblx0XHRjYXRjaCB7IH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldEZvY3VzKHNob3dEcm9wZG93bkxpc3Q6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cdFx0dGhpcy5maWx0ZXJUZXh0ID0gJyc7XHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblxyXG5cdFx0Ly8gSWYgdGhpcyBpcyB0cnVlLCBqdXN0IHNldCBleHBhbmRlZCB0byBmYWxzZSB0byBmb3JjZSBhbiBleHBhbmRcclxuXHRcdGlmIChzaG93RHJvcGRvd25MaXN0ID09PSB0cnVlKVxyXG5cdFx0XHR0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcblxyXG5cdFx0YXdhaXQgU2xpY2tVdGlsc1NlcnZpY2Uud2FpdEZvckVsZW1lbnQoXCIjc2xpY2stZHJvcC1kb3duX1wiICsgdGhpcy51dWlkKTtcclxuXHRcdCg8SFRNTElucHV0RWxlbWVudD50aGlzLnNlbGVjdGVkVGV4dElucHV0UmVmLm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGV4cGFuZCgpIHtcclxuXHRcdGlmICh0aGlzLmRpc2FibGVkKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuXHRcdFNsaWNrVXRpbHNTZXJ2aWNlLmF0dGFjaEVsZW1lbnQodGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudCwgdGhpcy5hdHRhY2hUbylcclxuXHJcblx0XHR0aGlzLnJlcG9zaXRpb24oKTtcclxuXHJcblx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0dGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJpbmxpbmUtYmxvY2tcIjtcclxuXHJcblx0XHRjb25zdCBzZWxlY3RlZEl0ZW1zID0gdGhpcy5kcm9wZG93bkxpc3QubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYWN0aXZlXCIpO1xyXG5cdFx0aWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKVxyXG5cdFx0XHQoPEhUTUxFbGVtZW50PnNlbGVjdGVkSXRlbXNbMF0pLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JyB9KTtcclxuXHJcblx0XHR0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcclxuXHJcblxyXG5cdFx0Ly8gVGhpcyBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBgdGhpc2AgaW4gdGhlIHJlcG9zaXRpb24gZnVuY3Rpb24gd2lsbCBiZSB3aW5kb3dcclxuXHRcdC8vIGFuZCBub3QgdGhlIGNvbXBvbmVudC5cclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cclxuXHRcdGlmICh0aGlzLm9uRXhwYW5kKVxyXG5cdFx0XHR0aGlzLm9uRXhwYW5kLmVtaXQoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgY29sbGFwc2UoKSB7XHJcblx0XHRpZiAodGhpcy5leHBhbmRlZCA9PT0gZmFsc2UpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHR0aGlzLmV4cGFuZGVkID0gZmFsc2U7XHJcblx0XHR0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuXHRcdC8vIFNpbmNlIGFuZ3VsYXIgaGFzIG5vIHdheSB0byB1c2UgdGhlIHRoaXJkIHBhcmFtZXRlciwgSSdtIGRvaW5nIHRoaXMgaW4gcmF3IGpzXHJcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5mbkRvY3VtZW50Q2xpY2ssIHRydWUpO1xyXG5cdFx0U2xpY2tVdGlsc1NlcnZpY2UucmVtb3ZlRWxlbWVudCh0aGlzLmRyb3Bkb3duTGlzdC5uYXRpdmVFbGVtZW50KTtcclxuXHJcblx0XHR0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZXBvc2l0aW9uKCkge1xyXG5cdFx0Y29uc3QgZHJvcERvd25SZWN0ID0gdGhpcy5jb250YWluZXJEaXYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGNvbnN0IHBhcmVudFJlY3QgPSAodGhpcy5hdHRhY2hUbyA9PT0gJ2JvZHknKSA/IG51bGwgOiBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IodGhpcy5hdHRhY2hUbykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG5cdFx0Y29uc3QgY29udGFpbmVyTGVmdCA9ICh0aGlzLmF0dGFjaFRvID09PSAnYm9keScpID8gZHJvcERvd25SZWN0LmxlZnQgOiAoZHJvcERvd25SZWN0LmxlZnQgLSBwYXJlbnRSZWN0LmxlZnQpO1xyXG5cdFx0Y29uc3QgY29udGFpbmVyVG9wID0gKHRoaXMuYXR0YWNoVG8gPT09ICdib2R5JykgPyBkcm9wRG93blJlY3QudG9wIDogKGRyb3BEb3duUmVjdC50b3AgLSBwYXJlbnRSZWN0LnRvcCk7XHJcblxyXG5cdFx0Y29uc3QgY29udGFpbmVySGVpZ2h0ID0gdGhpcy5jb250YWluZXJEaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblx0XHRjb25zdCBjb250YWluZXJXaWR0aCA9IGRyb3BEb3duUmVjdC53aWR0aDtcclxuXHJcblx0XHR0aGlzLndpZHRoID0gY29udGFpbmVyV2lkdGg7XHJcblx0XHRpZiAodGhpcy5saXN0V2lkdGggPT09ICcxMDAlJylcclxuXHRcdFx0dGhpcy5saXN0R3JvdXBXaWR0aCA9IHRoaXMud2lkdGg7XHJcblx0XHRlbHNlIGlmICh0aGlzLmxpc3RXaWR0aCA9PT0gJ2F1dG8nKVxyXG5cdFx0XHR0aGlzLmxpc3RHcm91cFdpZHRoID0gXCJhdXRvXCI7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMubGlzdEdyb3VwV2lkdGggPSB0aGlzLmxpc3RXaWR0aDtcclxuXHRcdHRoaXMudG9wID0gKGNvbnRhaW5lclRvcCArIGNvbnRhaW5lckhlaWdodCk7XHJcblx0XHR0aGlzLmxlZnQgPSBjb250YWluZXJMZWZ0O1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhc3luYyBkb2N1bWVudENsaWNrKGU6IE1vdXNlRXZlbnQpIHtcclxuXHRcdC8vIE5vdCBlbnRpcmVseSBzdXJlIHdoeSwgYnV0IGlQaG9uZXMgY2FsbCBvbkZvY3VzIHdoZW4gY2xpY2tpbmcgb3V0IG9mIHRoZSBkcm9wZG93blxyXG5cdFx0aWYgKCF0aGlzLmV4cGFuZGVkIHx8ICFlLnRhcmdldClcclxuXHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdGlmIChTbGlja1V0aWxzU2VydmljZS5jaGVja1BhcmVudElkRXhpc3RzKDxIVE1MRWxlbWVudD5lLnRhcmdldCwgXCJzbGljay1kcm9wLWRvd25fXCIgKyB0aGlzLnV1aWQpID09PSB0cnVlKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcblx0XHRpZiAodGhpcy5zZWxlY3RlZEluZGV4ICE9PSBudWxsICYmIHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bGV0IGl0ZW1JZCA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuc2VsZWN0ZWRJbmRleF0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0SXRlbShpdGVtSWQsIHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2VsZWN0SXRlbShpZDogc3RyaW5nIHwgbnVtYmVyLCBlbWl0T25TZWxlY3Q6IGJvb2xlYW4pIHtcclxuXHRcdGxldCBpdGVtID0gdGhpcy5zbGlja0Ryb3BEb3duU2VydmljZS5nZXRTZWxlY3RlZEl0ZW0odGhpcy52aXNpYmxlSXRlbXMsIGlkKTtcclxuXHJcblx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRJZCA9IGl0ZW0uaWQ7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gaXRlbS50ZXh0O1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldEl0ZW1JbmRleCh0aGlzLnZpc2libGVJdGVtcywgdGhpcy5zZWxlY3RlZElkKTtcclxuXHJcblx0XHRcdGlmICh0aGlzLm9uQ2hhbmdlKVxyXG5cdFx0XHRcdHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbS5pdGVtKTtcclxuXHRcdFx0aWYgKGVtaXRPblNlbGVjdCA9PT0gdHJ1ZSAmJiB0aGlzLm9uU2VsZWN0KVxyXG5cdFx0XHRcdHRoaXMub25TZWxlY3QuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbS5pdGVtKTtcclxuXHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZElkKTtcclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XHJcblx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gbnVsbDtcclxuXHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFzeW5jIG9uS2V5RG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAodGhpcy5pc0FuZHJvaWQpXHJcblx0XHRcdHJldHVybjtcclxuXHJcblx0XHQvLyBUYWIvZW50ZXJcclxuXHRcdGlmIChlLndoaWNoID09PSA5IHx8IGUud2hpY2ggPT09IDEzKSB7XHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPT09IG51bGwgfHwgdGhpcy5zZWxlY3RlZEluZGV4ID09PSB1bmRlZmluZWQpXHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cclxuXHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2UoMCwgMCk7XHJcblx0XHRcdGxldCBpdGVtSWQgPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLnNlbGVjdGVkSW5kZXhdLmlkO1xyXG5cdFx0XHR0aGlzLnNlbGVjdEl0ZW0oaXRlbUlkLCB0cnVlKTtcclxuXHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChlLmtleSAmJiBlLmtleS5sZW5ndGggPiAxKVxyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHJcblx0XHRpZiAoZS53aGljaCA9PT0gNDYgfHwgZS53aGljaCA9PT0gOCkge1xyXG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGUud2hpY2ggPj0gMzIgJiYgZS53aGljaCA8PSAxMjYpIHtcclxuXHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgb25LZXlVcChlOiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuXHRcdC8vIElmIHRoaXMgaXMgYW5kcm9pZCwgaXQgd29uJ3QgcGFzcyB1cyBhbnkga2V5IGRhdGEgc28ganVzdCByZWFkIHRoZSBlbnRpcmUgaW5wdXQgZWxlbWVudFxyXG5cdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSB0cnVlKSB7XHJcblx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblxyXG5cdFx0XHR0aGlzLmZpbHRlclRleHQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS52YWx1ZTtcclxuXHRcdFx0dGhpcy5maWx0ZXJTZWFyY2goKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEVzY1xyXG5cdFx0aWYgKGUud2hpY2ggPT09IDI3KSB7XHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBkZWwgb3IgYmFja3NwYWNlXHJcblx0XHRpZiAoZS53aGljaCA9PT0gNDYgfHwgZS53aGljaCA9PT0gOCAmJiAhdGhpcy5maWx0ZXJUZXh0KSB7XHJcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcblx0XHRcdGlmICh0aGlzLmFsbG93RW1wdHkgPT09IHRydWUpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdEl0ZW0obnVsbCwgdHJ1ZSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZElkID0gbnVsbDtcclxuXHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuXHJcblx0XHRcdFx0aWYgKHRoaXMub25DaGFuZ2UpXHJcblx0XHRcdFx0XHR0aGlzLm9uQ2hhbmdlLmVtaXQobnVsbCk7XHJcblxyXG5cdFx0XHRcdGlmICh0aGlzLm9uU2VsZWN0KVxyXG5cdFx0XHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KG51bGwpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKGUud2hpY2ggPT09IDggJiYgdGhpcy5maWx0ZXJUZXh0KSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCA9IHRoaXMuZmlsdGVyVGV4dC5zdWJzdHJpbmcoMCwgdGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCAtIDEpO1xyXG5cdFx0XHRpZiAodGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gJyc7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4ID0gbnVsbDtcclxuXHRcdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZVxyXG5cdFx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBBcnJvd3VwXHJcblx0XHRpZiAoZS53aGljaCA9PT0gMzgpIHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+IDApXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4LS07XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gQXJyb3dkb3duXHJcblx0XHRpZiAoZS53aGljaCA9PT0gNDApIHtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA9PT0gbnVsbCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcclxuXHJcblx0XHRcdGlmICghdGhpcy5leHBhbmRlZCB8fCAhdGhpcy52aXNpYmxlSXRlbXMpIHtcclxuXHRcdFx0XHR0aGlzLmV4cGFuZCgpO1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCAtIDEpXHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4Kys7XHJcblxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSWYgRjEgaXMgcHJlc3NlZCwga2V5IGxlbmd0aCB3aWxsIGJlIDJcclxuXHRcdGlmIChlLmtleS5sZW5ndGggPiAxIHx8IGUuY3RybEtleSB8fCBlLmFsdEtleSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cclxuXHRcdGlmIChlLndoaWNoID49IDMyICYmIGUud2hpY2ggPD0gMTI2KSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyVGV4dCArPSBlLmtleTtcclxuXHJcblx0XHRcdHRoaXMuZmlsdGVyU2VhcmNoKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGFzeW5jIGZpbHRlclNlYXJjaCgpIHtcclxuXHRcdGlmICghdGhpcy5leHBhbmRlZClcclxuXHRcdFx0dGhpcy5leHBhbmQoKTtcclxuXHJcblx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuc2xpY2tEcm9wRG93blNlcnZpY2UuZ2V0VmlzaWJsZUl0ZW1zKHRoaXMuaXRlbXMsIHRoaXMuaWRGaWVsZE5hbWUsIHRoaXMudGV4dEZpZWxkTmFtZSk7XHJcblx0XHRpZiAodGhpcy5zZWFyY2hUeXBlID09PSBTbGlja0Ryb3BEb3duU2VhcmNoVHlwZXMuc3RhcnRzV2l0aCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IHgudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID09PSAwKTtcclxuXHRcdFx0aWYgKHRoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSAwO1xyXG5cdFx0XHRcdGlmICh0aGlzLmlzQW5kcm9pZCA9PT0gZmFsc2UpIHtcclxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy52aXNpYmxlSXRlbXNbMF0udGV4dDtcclxuXHRcdFx0XHRcdGF3YWl0IFNsaWNrU2xlZXBTZXJ2aWNlLnNsZWVwKCk7XHJcblx0XHRcdFx0XHQoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zZWxlY3RlZFRleHRJbnB1dFJlZi5uYXRpdmVFbGVtZW50KS5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLmZpbHRlclRleHQubGVuZ3RoLCB0aGlzLnNlbGVjdGVkVGV4dC5sZW5ndGgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkVGV4dCA9IHRoaXMuZmlsdGVyVGV4dDtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSW5kZXggPSBudWxsO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IFNsaWNrRHJvcERvd25TZWFyY2hUeXBlcy5lYWNoV29yZCkge1xyXG5cdFx0XHR0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcih4ID0+IChcIiBcIiArIHgudGV4dC50b0xvd2VyQ2FzZSgpKS5pbmRleE9mKFwiIFwiICsgdGhpcy5maWx0ZXJUZXh0LnRvTG93ZXJDYXNlKCkpID49IDApO1xyXG5cdFx0XHRpZiAodGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IDA7XHJcblx0XHRcdFx0aWYgKHRoaXMuaXNBbmRyb2lkID09PSBmYWxzZSkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFRleHQgPSB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0O1xyXG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRUZXh0U3RhcnQgPSAoXCIgXCIgKyB0aGlzLnZpc2libGVJdGVtc1swXS50ZXh0KS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCIgXCIgKyB0aGlzLmZpbHRlclRleHQudG9Mb3dlckNhc2UoKSk7XHJcblx0XHRcdFx0XHRhd2FpdCBTbGlja1NsZWVwU2VydmljZS5zbGVlcCgpO1xyXG5cdFx0XHRcdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0ZWRUZXh0U3RhcnQsIHNlbGVjdGVkVGV4dFN0YXJ0ICsgdGhpcy5maWx0ZXJUZXh0Lmxlbmd0aCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRUZXh0ID0gdGhpcy5maWx0ZXJUZXh0O1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleCA9IG51bGw7XHJcblx0XHRcdH1cclxuXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRsYXN0RXZlbnQ6IHN0cmluZyA9IG51bGw7XHJcblx0b25Ecm9wZG93bkNsaWNrZWQoZTogTW91c2VFdmVudCkge1xyXG5cdFx0Ly8gVGhpcyBpcyBzb21lIGhhY2t5IGNvZGUgdGhhdCBvbmx5IGFsbG93cyAxIGV2ZW50IGV2ZXJ5IDEwMG1zXHJcblx0XHQvLyBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBpZiB0aGV5IHdpbGwgdGFiIGludG8gdGhlIGZvY3VzIG9yIGNsaWNrIGludG8gaXQuICBJZiB0aGV5IHRhYiwgd2Ugb25seSBnZXQgMSBmb2N1cyBldmVudFxyXG5cdFx0Ly8gaWYgdGhleSBjbGljayB3ZSBnZXQgZm9jdXMgQU5EIGNsaWNrLlxyXG5cdFx0aWYgKHRoaXMubGFzdEV2ZW50ICE9PSBudWxsKVxyXG5cdFx0XHRyZXR1cm47XHJcblxyXG5cdFx0dGhpcy5sYXN0RXZlbnQgPSBlLnR5cGU7XHJcblxyXG5cdFx0Ly8gSWYgdGhpcyBpcyB0aGUgZm9jdXMgZXZlbnQsIHdlIG1heSBvciBtYXkgbm90IGdldFxyXG5cdFx0Ly8gYSBjbGljayBldmVudCBhZnRlci4gIElmIGl0IGlzLCB3YWl0IGEgYml0IGxvbmdlciBmb3JcclxuXHRcdC8vIHNsb3dlciBjb21wdXRlcnMgdG8gZmlyZSB0aGUgY2xpY2tcclxuXHRcdGlmICh0aGlzLmxhc3RFdmVudCA9PT0gJ2ZvY3VzJylcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLmxhc3RFdmVudCA9IG51bGwsIDUwMCk7XHJcblx0XHRlbHNlXHJcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sYXN0RXZlbnQgPSBudWxsLCAyNTApO1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyVGV4dCA9ICcnO1xyXG5cdFx0dGhpcy52aXNpYmxlSXRlbXMgPSB0aGlzLnNsaWNrRHJvcERvd25TZXJ2aWNlLmdldFZpc2libGVJdGVtcyh0aGlzLml0ZW1zLCB0aGlzLmlkRmllbGROYW1lLCB0aGlzLnRleHRGaWVsZE5hbWUpO1xyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKHRoaXMuc2VsZWN0ZWRJZCwgZmFsc2UpO1xyXG5cdFx0KDxIVE1MSW5wdXRFbGVtZW50PnRoaXMuc2VsZWN0ZWRUZXh0SW5wdXRSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuXHJcblx0XHRpZiAodGhpcy5leHBhbmRlZCA9PT0gZmFsc2UpXHJcblx0XHRcdHRoaXMuZXhwYW5kKCk7XHJcblx0XHRlbHNlXHJcblx0XHRcdHRoaXMuY29sbGFwc2UoKTtcclxuXHR9XHJcblxyXG5cdG9uSXRlbUNsaWNrKGl0ZW06IGFueSkge1xyXG5cdFx0dGhpcy5zZWxlY3RJdGVtKGl0ZW0uaWQsIHRydWUpO1xyXG5cdFx0dGhpcy5jb2xsYXBzZSgpO1xyXG5cdH1cclxufSIsIjxkaXYgKm5nSWY9XCIhY29tcGFjdFwiICNjb250YWluZXJEaXYgY2xhc3M9XCJzbGljay1kcm9wLWRvd24gZm9ybS1jb250cm9sIGQtZmxleCBmbGV4LWZpbGwgYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCIgW3NsaWNrLXZhbGlkYXRpb24taW5kaWNhdG9yXT1cInZhbGlkYXRpb25JbmRpY2F0b3JcIiBbc2xpY2tWYWxpZGF0aW9uVHlwZV09XCJ2YWxpZGF0aW9uSW5kaWNhdG9yVHlwZVwiIGlkPVwic2xpY2stZHJvcC1kb3duX3t7dXVpZH19XCIgYXR0ci5kYXRhLXV1aWQ9XCJ7e3V1aWR9fVwiIFtjbGFzcy5vcGVuXT1cImV4cGFuZGVkXCIgKGNsaWNrKT1cIm9uRHJvcGRvd25DbGlja2VkKCRldmVudClcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJzbGljay1kcm9wLWRvd25faWNvbiBwLTBcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj48aSBjbGFzcz1cInB4LTFcIiBbbmdDbGFzc109XCJpY29uXCI+PC9pPjwvZGl2PlxyXG4gICAgPGlucHV0ICNzZWxlY3RlZFRleHRJbnB1dFJlZiAqbmdJZj1cIiFkaXNhYmxlZFwiIGNsYXNzPSdmb3JtLWNvbnRyb2wgcHMtMiBwZS00JyBbY2xhc3MucHMtNF09XCIhIWljb25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGV4dFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRHJvcGRvd25DbGlja2VkKCRldmVudClcIiBbcmVhZG9ubHldPVwiIWlzTW9iaWxlXCIgW3BsYWNlaG9sZGVyXT0ncGxhY2Vob2xkZXInIC8+XHJcbiAgICA8aW5wdXQgI3NlbGVjdGVkVGV4dElucHV0UmVmICpuZ0lmPVwiZGlzYWJsZWRcIiBjbGFzcz0nZm9ybS1jb250cm9sIHBzLTIgcGUtNCcgW2NsYXNzLnBzLTRdPVwiISFpY29uXCIgZGlzYWJsZWQ9XCJkaXNhYmxlZFwiIFtuZ01vZGVsXT1cInNlbGVjdGVkVGV4dFwiIHRhYmluZGV4PVwiLTFcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09J3BsYWNlaG9sZGVyJyAvPlxyXG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7XCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2FyZXQtZG93biBtZS0yXCIgc3R5bGU9XCJwb2ludGVyLWV2ZW50czogbm9uZVwiPjwvaT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJjb21wYWN0XCIgI2NvbnRhaW5lckRpdiBjbGFzcz1cInNsaWNrLWRyb3AtZG93biBzbGljay1kcm9wLWRvd24tY29tcGFjdCBmb3JtLWNvbnRyb2wgZC1mbGV4IGZsZXgtZmlsbCBhbGlnbi1pdGVtcy1jZW50ZXJcIiBpZD1cInNsaWNrLWRyb3AtZG93bl97e3V1aWR9fVwiIGF0dHIuZGF0YS11dWlkPVwie3t1dWlkfX1cIiBbY2xhc3Mub3Blbl09XCJleHBhbmRlZFwiIChjbGljayk9XCJvbkRyb3Bkb3duQ2xpY2tlZCgkZXZlbnQpXCI+XHJcbiAgICA8aW5wdXQgI3NlbGVjdGVkVGV4dElucHV0UmVmICpuZ0lmPVwiIWRpc2FibGVkXCIgY2xhc3M9J2Zvcm0tY29udHJvbCBtZS0yJyBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVGV4dFwiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRHJvcGRvd25DbGlja2VkKCRldmVudClcIiBbcmVhZG9ubHldPVwiIWlzTW9iaWxlXCIgW3BsYWNlaG9sZGVyXT0ncGxhY2Vob2xkZXInIC8+XHJcbiAgICA8aW5wdXQgI3NlbGVjdGVkVGV4dElucHV0UmVmICpuZ0lmPVwiZGlzYWJsZWRcIiBjbGFzcz0nZm9ybS1jb250cm9sIG1lLTInIFtuZ01vZGVsXT1cInNlbGVjdGVkVGV4dFwiIHRhYmluZGV4PVwiLTFcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09J3BsYWNlaG9sZGVyJyAvPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jYXJldC1kb3duIG1lLTJcIiBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbjx1bCAqbmdJZj1cImlzVmlzaWJsZVwiICNkcm9wZG93bkxpc3QgaWQ9XCJzbGljay1kcm9wLWRvd25fe3t1dWlkfX1cIiBjbGFzcz0nc2xpY2stZHJvcC1kb3duLWxpc3QtZ3JvdXAgZHJvcGRvd24tbWVudScgW3N0eWxlLndpZHRoXT1cImxpc3RHcm91cFdpZHRoXCIgW3N0eWxlLnZpc2liaWxpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCIgW3N0eWxlLm9wYWNpdHldPVwiKGV4cGFuZGVkID09PSB0cnVlKSA/ICcxJyA6ICcwJ1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImhlaWdodFwiIFtzdHlsZS53aWR0aC5weF09XCJsaXN0R3JvdXBXaWR0aFwiIFtzdHlsZS5sZWZ0LnB4XT1cImxlZnRcIiBbc3R5bGUudG9wLnB4XT1cInRvcFwiPlxyXG4gICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZpc2libGVJdGVtczsgbGV0IGluZGV4ID0gaW5kZXg7XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKGl0ZW0pXCIgW2NsYXNzLmFjdGl2ZV09XCJpdGVtLmlkID09PSBzZWxlY3RlZEl0ZW0/LmlkXCIgW2NsYXNzLmNhcmQtaGVhZGVyXT1cInNlbGVjdGVkSW5kZXggPT09IGluZGV4XCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+e3tpdGVtLnRleHR9fTwvbGk+XHJcbjwvdWw+XHJcbiJdfQ==
|
|
@@ -34,7 +34,7 @@ export class SlickDropDownService {
|
|
|
34
34
|
getSelectedItem(items, selectedId) {
|
|
35
35
|
if (!items || items.length === 0)
|
|
36
36
|
return null;
|
|
37
|
-
let selectedItem = items.find((item) => { return item.id
|
|
37
|
+
let selectedItem = items.find((item) => { return item.id == selectedId; });
|
|
38
38
|
if (selectedItem)
|
|
39
39
|
return selectedItem;
|
|
40
40
|
else
|
|
@@ -52,4 +52,4 @@ export class SlickDropDownService {
|
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SlickDropDownService, decorators: [{
|
|
53
53
|
type: Injectable
|
|
54
54
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2stZHJvcC1kb3duLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9zbGljay1kcm9wLWRvd24vc2xpY2stZHJvcC1kb3duLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBR2pFLE1BQU0sT0FBTyxvQkFBb0I7SUFDaEMsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFJLENBQUM7SUFFbEMsZUFBZSxDQUFDLEtBQVksRUFBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzlFLElBQUksYUFBYSxHQUFZLEtBQUssQ0FBQztRQUVuQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUViLElBQUksWUFBWSxHQUFVLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QyxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzVELElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO2dCQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLDJFQUEyRSxHQUFHLFdBQVcsR0FBRyxzQkFBc0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO2dCQUNuSyxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4QztZQUVELElBQUksSUFBSSxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxTQUFTO2dCQUN0QyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBRXRCLE9BQU87Z0JBQ04sRUFBRSxFQUFFLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUNuQyxJQUFJLEVBQUUsSUFBSTthQUNWLENBQUE7UUFDRixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksYUFBYSxLQUFLLEtBQUssRUFBRTtZQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLDRGQUE0RixHQUFHLGFBQWEsR0FBRyxzQkFBc0IsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1lBQ3RMLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBR0QsT0FBTyxZQUFZLENBQUM7SUFDckIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFZLEVBQUUsVUFBMkI7UUFDL0QsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUM7UUFFYixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxZQUFZO1lBQ2YsT0FBTyxZQUFZLENBQUM7O1lBRXBCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFXO1FBQzFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBWSxFQUFFLFVBQWtCO1FBQ25ELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsRUFBRSxJQUFJLFVBQVUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7O29JQXREVyxvQkFBb0I7d0lBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgU2xpY2tVdGlsc1NlcnZpY2UgfSBmcm9tIFwiLi4vdXRpbHMvc2xpY2stdXRpbHMuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU2xpY2tEcm9wRG93blNlcnZpY2Uge1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkgeyB9XHJcblxyXG5cdHB1YmxpYyBnZXRWaXNpYmxlSXRlbXMoaXRlbXM6IGFueVtdLCBpZEZpZWxkTmFtZTogc3RyaW5nLCB0ZXh0RmllbGROYW1lOiBzdHJpbmcpOiBhbnlbXSB7XHJcblx0XHRsZXQgZm91bmRTb21lVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRcdGlmICghaXRlbXMgfHwgaXRlbXMubGVuZ3RoID09PSAwKVxyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHJcblx0XHRsZXQgdmlzaWJsZUl0ZW1zOiBhbnlbXSA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xyXG5cdFx0XHRsZXQgaWQgPSBTbGlja1V0aWxzU2VydmljZS5nZXREZWVwT2JqZWN0KGl0ZW0sIGlkRmllbGROYW1lKTtcclxuXHRcdFx0aWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRjb25zb2xlLmRlYnVnKFwiJWMgc2xpY2stZHJvcC1kb3duOiBJZCBub3QgZm91bmQgZm9yIGRyb3Bkb3duIGl0ZW0uICBUaGUgaWRGaWVsZE5hbWUgaXMgJ1wiICsgaWRGaWVsZE5hbWUgKyBcIicuICBJcyB0aGlzIGNvcnJlY3Q/XCIsICdiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZScpO1xyXG5cdFx0XHRcdGNvbnNvbGUuZGVidWcoXCJGaXJzdCBJdGVtOiBcIiwgaXRlbXNbMF0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsZXQgdGV4dCA9IFNsaWNrVXRpbHNTZXJ2aWNlLmdldERlZXBPYmplY3QoaXRlbSwgdGV4dEZpZWxkTmFtZSk7XHJcblx0XHRcdGlmICh0ZXh0ICE9PSBudWxsICYmIHRleHQgIT09IHVuZGVmaW5lZClcclxuXHRcdFx0XHRmb3VuZFNvbWVUZXh0ID0gdHJ1ZTtcclxuXHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aWQ6IGlkLFxyXG5cdFx0XHRcdHRleHQ6IHRleHQgPyB0ZXh0LnRvU3RyaW5nKCkgOiBudWxsLFxyXG5cdFx0XHRcdGl0ZW06IGl0ZW1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKGZvdW5kU29tZVRleHQgPT09IGZhbHNlKSB7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIlYyBzbGljay1kcm9wLWRvd246IFdhcm5pbmchICBObyB0ZXh0IHdhcyBmb3VuZCBmb3IgZHJvcGRvd24gaXRlbS4gIFRoZSB0ZXh0RmllbGROYW1lIGlzICdcIiArIHRleHRGaWVsZE5hbWUgKyBcIicuICBJcyB0aGlzIGNvcnJlY3Q/XCIsICdiYWNrZ3JvdW5kOiByZWQ7IGNvbG9yOiB3aGl0ZScpO1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKFwiRmlyc3QgSXRlbTogXCIsIGl0ZW1zWzBdKTtcclxuXHRcdH1cclxuXHJcblxyXG5cdFx0cmV0dXJuIHZpc2libGVJdGVtcztcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBnZXRTZWxlY3RlZEl0ZW0oaXRlbXM6IGFueVtdLCBzZWxlY3RlZElkOiBzdHJpbmcgfCBudW1iZXIpOiBhbnkge1xyXG5cdFx0aWYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApXHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cclxuXHRcdGxldCBzZWxlY3RlZEl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlkID09IHNlbGVjdGVkSWQgfSk7XHJcblxyXG5cdFx0aWYgKHNlbGVjdGVkSXRlbSlcclxuXHRcdFx0cmV0dXJuIHNlbGVjdGVkSXRlbTtcclxuXHRcdGVsc2VcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgYXN5bmMgZ2V0SXRlbXNGcm9tU2VydmVyKHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKGF3YWl0IHRoaXMuaHR0cC5nZXQodXJsKS50b1Byb21pc2UoKSkpO1xyXG5cdH1cclxuXHJcblx0cHVibGljIGdldEl0ZW1JbmRleChpdGVtczogYW55W10sIHNlbGVjdGVkSWQ6IHN0cmluZyk6IG51bWJlciB7XHJcblx0XHRyZXR1cm4gaXRlbXMuZmluZEluZGV4KChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlkID09IHNlbGVjdGVkSWQgfSk7XHJcblx0fVxyXG59Il19
|