@eui/ecl 17.0.0-rc.7 → 17.0.0-rc.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/docs/components/EclBreadcrumbSegmentComponent.html +69 -0
  2. package/docs/components/EclCarouselComponent.html +1 -1
  3. package/docs/components/EclMenuMegaItemComponent.html +69 -0
  4. package/docs/components/EclMultiselectComponent.html +24 -0
  5. package/docs/components/EclMultiselectDropdownComponent.html +1 -1
  6. package/docs/components/EclMultiselectInputComponent.html +24 -0
  7. package/docs/components/EclPaginationItemComponent.html +86 -0
  8. package/docs/dependencies.html +2 -2
  9. package/docs/js/search/search_index.js +2 -2
  10. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.mjs +6 -2
  11. package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +3 -3
  12. package/esm2022/lib/components/ecl-content-item/ecl-content-item-image.directive.mjs +2 -2
  13. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +6 -2
  14. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.mjs +3 -3
  15. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.mjs +6 -3
  16. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +7 -3
  17. package/esm2022/lib/components/ecl-pagination/ecl-pagination-item.component.mjs +6 -2
  18. package/fesm2022/eui-ecl.mjs +31 -12
  19. package/fesm2022/eui-ecl.mjs.map +1 -1
  20. package/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.d.ts +1 -0
  21. package/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.d.ts.map +1 -1
  22. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.d.ts +1 -0
  23. package/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.d.ts.map +1 -1
  24. package/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.d.ts +2 -1
  25. package/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.d.ts.map +1 -1
  26. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts +2 -1
  27. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts.map +1 -1
  28. package/lib/components/ecl-pagination/ecl-pagination-item.component.d.ts +1 -0
  29. package/lib/components/ecl-pagination/ecl-pagination-item.component.d.ts.map +1 -1
  30. package/package.json +1 -1
@@ -15,6 +15,7 @@ export class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
15
15
  super();
16
16
  this.el = el;
17
17
  this.tabIndex = '-1';
18
+ this.role = 'listitem';
18
19
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
20
  this.routerLink = null;
20
21
  this.queryParams = null;
@@ -35,7 +36,7 @@ export class EclBreadcrumbSegmentComponent extends ECLBaseDirective {
35
36
  }
36
37
  }
37
38
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EclBreadcrumbSegmentComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
38
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclBreadcrumbSegmentComponent, selector: "ecl-breadcrumb-segment", inputs: { routerLink: "routerLink", queryParams: "queryParams", href: "href", queryParamsHandling: "queryParamsHandling", isCurrentPage: "isCurrentPage", isNegative: "isNegative", isHidden: "isHidden" }, outputs: { segmentClick: "segmentClick" }, host: { properties: { "attr.tabindex": "this.tabIndex", "class.ecl-u-d-none": "this.isHidden", "attr.hidden": "this.isHidden", "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"!isCurrentPage && href\"\n eclLink\n variant=\"standalone\"\n [isNoVisited]=\"true\"\n [isNegative]=\"isNegative\"\n [href]=\"href\"\n (click)=\"onSegmentClick($event)\"\n class=\"ecl-breadcrumb__link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n *ngIf=\"!isCurrentPage && !href\"\n eclLink\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n variant=\"standalone\"\n [isNoVisited]=\"true\"\n [isNegative]=\"isNegative\"\n [href]=\"href\"\n tabindex\n (click)=\"onSegmentClick($event)\"\n class=\"ecl-breadcrumb__link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<ng-container *ngIf=\"isCurrentPage\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-container>\n<ecl-icon *ngIf=\"!isCurrentPage\" role=\"presentation\" icon=\"corner-arrow\" size=\"2xs\" class=\"ecl-breadcrumb__icon ecl-icon--rotate-90\">\n</ecl-icon>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.EclLinkDirective, selector: "[eclLink]", inputs: ["variant", "isNegative", "isNoVisited"] }, { kind: "component", type: i4.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }], encapsulation: i0.ViewEncapsulation.None }); }
39
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclBreadcrumbSegmentComponent, selector: "ecl-breadcrumb-segment", inputs: { routerLink: "routerLink", queryParams: "queryParams", href: "href", queryParamsHandling: "queryParamsHandling", isCurrentPage: "isCurrentPage", isNegative: "isNegative", isHidden: "isHidden" }, outputs: { segmentClick: "segmentClick" }, host: { properties: { "attr.tabindex": "this.tabIndex", "attr.role": "this.role", "class.ecl-u-d-none": "this.isHidden", "attr.hidden": "this.isHidden", "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "<a\n *ngIf=\"!isCurrentPage && href\"\n eclLink\n variant=\"standalone\"\n [isNoVisited]=\"true\"\n [isNegative]=\"isNegative\"\n [href]=\"href\"\n (click)=\"onSegmentClick($event)\"\n class=\"ecl-breadcrumb__link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<a\n *ngIf=\"!isCurrentPage && !href\"\n eclLink\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n variant=\"standalone\"\n [isNoVisited]=\"true\"\n [isNegative]=\"isNegative\"\n [href]=\"href\"\n tabindex\n (click)=\"onSegmentClick($event)\"\n class=\"ecl-breadcrumb__link\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n<ng-container *ngIf=\"isCurrentPage\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</ng-container>\n<ecl-icon *ngIf=\"!isCurrentPage\" role=\"presentation\" icon=\"corner-arrow\" size=\"2xs\" class=\"ecl-breadcrumb__icon ecl-icon--rotate-90\">\n</ecl-icon>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.EclLinkDirective, selector: "[eclLink]", inputs: ["variant", "isNegative", "isNoVisited"] }, { kind: "component", type: i4.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }], encapsulation: i0.ViewEncapsulation.None }); }
39
40
  }
40
41
  __decorate([
41
42
  coerceBoolean
@@ -49,6 +50,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
49
50
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { tabIndex: [{
50
51
  type: HostBinding,
51
52
  args: ['attr.tabindex']
53
+ }], role: [{
54
+ type: HostBinding,
55
+ args: ['attr.role']
52
56
  }], routerLink: [{
53
57
  type: Input
54
58
  }], queryParams: [{
@@ -75,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
75
79
  type: HostBinding,
76
80
  args: ['class']
77
81
  }] } });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWJyZWFkY3J1bWItc2VnbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWJyZWFkY3J1bWIvZWNsLWJyZWFkY3J1bWItc2VnbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWJyZWFkY3J1bWIvZWNsLWJyZWFkY3J1bWItc2VnbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFHekQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFlBQVk7Q0FBRztBQU9uRSxNQUFNLE9BQU8sNkJBQThCLFNBQVEsZ0JBQWdCO0lBbUIvRCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQWxCSCxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRTlDLDhEQUE4RDtRQUNyRCxlQUFVLEdBQW1CLElBQUksQ0FBQztRQUNsQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLHdCQUFtQixHQUF3QixJQUFJLENBQUM7UUFDekQsOERBQThEO1FBQ3RDLGtCQUFhLEdBQWtCLEtBQUssQ0FBQztRQU03RCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWYsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBa0MsQ0FBQztJQUk1RSxDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZJLENBQUM7SUFFRCxjQUFjLENBQUMsR0FBZTtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLDhCQUE4QixFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtJQUNMLENBQUM7aUlBakNRLDZCQUE2QjtxSEFBN0IsNkJBQTZCLDJlQ2IxQywybENBbUNBOztBRGI0QjtJQUF2QixhQUFhO29FQUErQztBQUVyQztJQUF2QixhQUFhO2lFQUFvQzsyRkFYekMsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNJLHdCQUF3QixpQkFFbkIsaUJBQWlCLENBQUMsSUFBSTsrRUFHUCxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBR25CLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVrQixhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSXJCLFFBQVE7c0JBSFAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxvQkFBb0I7O3NCQUNoQyxXQUFXO3VCQUFDLGFBQWE7Z0JBR2hCLFlBQVk7c0JBQXJCLE1BQU07Z0JBT0gsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEVjbEJhc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuZXhwb3J0IGNsYXNzIEVjbEJyZWFkY3J1bWJTZWdtZW50Q2xpY2tFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1icmVhZGNydW1iLXNlZ21lbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtYnJlYWRjcnVtYi1zZWdtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xCcmVhZGNydW1iU2VnbWVudENvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUge1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHRhYkluZGV4ID0gJy0xJztcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcm91dGVyTGluazogc3RyaW5nIHwgYW55W10gPSBudWxsO1xuICAgIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiBQYXJhbXMgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBocmVmID0gJyc7XG4gICAgQElucHV0KCkgcXVlcnlQYXJhbXNIYW5kbGluZzogUXVlcnlQYXJhbXNIYW5kbGluZyA9IG51bGw7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAY29lcmNlQm9vbGVhbiBASW5wdXQoKSBpc0N1cnJlbnRQYWdlOiBib29sZWFuIHwgYW55ID0gZmFsc2U7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAY29lcmNlQm9vbGVhbiBASW5wdXQoKSBpc05lZ2F0aXZlOiBib29sZWFuIHwgYW55O1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtdS1kLW5vbmUnKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5oaWRkZW4nKVxuICAgIGlzSGlkZGVuOiBib29sZWFuID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSBzZWdtZW50Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbEJyZWFkY3J1bWJTZWdtZW50Q2xpY2tFdmVudD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLWJyZWFkY3J1bWJfX3NlZ21lbnQnKSwgdGhpcy5pc0N1cnJlbnRQYWdlID8gJ2VjbC1icmVhZGNydW1iX19jdXJyZW50LXBhZ2UnIDogJyddLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgb25TZWdtZW50Q2xpY2soZXZ0OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VnbWVudENsaWNrLm5leHQobmV3IEVjbEJyZWFkY3J1bWJTZWdtZW50Q2xpY2tFdmVudCgpKTtcbiAgICAgICAgaWYgKCF0aGlzLmhyZWYpIHtcbiAgICAgICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxhXG4gICAgKm5nSWY9XCIhaXNDdXJyZW50UGFnZSAmJiBocmVmXCJcbiAgICBlY2xMaW5rXG4gICAgdmFyaWFudD1cInN0YW5kYWxvbmVcIlxuICAgIFtpc05vVmlzaXRlZF09XCJ0cnVlXCJcbiAgICBbaXNOZWdhdGl2ZV09XCJpc05lZ2F0aXZlXCJcbiAgICBbaHJlZl09XCJocmVmXCJcbiAgICAoY2xpY2spPVwib25TZWdtZW50Q2xpY2soJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJlY2wtYnJlYWRjcnVtYl9fbGlua1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48YVxuICAgICpuZ0lmPVwiIWlzQ3VycmVudFBhZ2UgJiYgIWhyZWZcIlxuICAgIGVjbExpbmtcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgIHZhcmlhbnQ9XCJzdGFuZGFsb25lXCJcbiAgICBbaXNOb1Zpc2l0ZWRdPVwidHJ1ZVwiXG4gICAgW2lzTmVnYXRpdmVdPVwiaXNOZWdhdGl2ZVwiXG4gICAgW2hyZWZdPVwiaHJlZlwiXG4gICAgdGFiaW5kZXhcbiAgICAoY2xpY2spPVwib25TZWdtZW50Q2xpY2soJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJlY2wtYnJlYWRjcnVtYl9fbGlua1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2E+XG48bmctY29udGFpbmVyICpuZ0lmPVwiaXNDdXJyZW50UGFnZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbjxlY2wtaWNvbiAqbmdJZj1cIiFpc0N1cnJlbnRQYWdlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwiMnhzXCIgY2xhc3M9XCJlY2wtYnJlYWRjcnVtYl9faWNvbiBlY2wtaWNvbi0tcm90YXRlLTkwXCI+XG48L2VjbC1pY29uPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWJyZWFkY3J1bWItc2VnbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWJyZWFkY3J1bWIvZWNsLWJyZWFkY3J1bWItc2VnbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWJyZWFkY3J1bWIvZWNsLWJyZWFkY3J1bWItc2VnbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFHekQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFlBQVk7Q0FBRztBQU9uRSxNQUFNLE9BQU8sNkJBQThCLFNBQVEsZ0JBQWdCO0lBb0IvRCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQW5CSCxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFFNUMsOERBQThEO1FBQ3JELGVBQVUsR0FBbUIsSUFBSSxDQUFDO1FBQ2xDLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1Ysd0JBQW1CLEdBQXdCLElBQUksQ0FBQztRQUN6RCw4REFBOEQ7UUFDdEMsa0JBQWEsR0FBa0IsS0FBSyxDQUFDO1FBTTdELGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFZixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFrQyxDQUFDO0lBSTVFLENBQUM7SUFFRCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkksQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFlO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksOEJBQThCLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztpSUFsQ1EsNkJBQTZCO3FIQUE3Qiw2QkFBNkIscWdCQ2IxQywybENBbUNBOztBRFo0QjtJQUF2QixhQUFhO29FQUErQztBQUVyQztJQUF2QixhQUFhO2lFQUFvQzsyRkFaekMsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNJLHdCQUF3QixpQkFFbkIsaUJBQWlCLENBQUMsSUFBSTsrRUFHUCxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBQ0YsSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXO2dCQUdmLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVrQixhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBSXJCLFFBQVE7c0JBSFAsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxvQkFBb0I7O3NCQUNoQyxXQUFXO3VCQUFDLGFBQWE7Z0JBR2hCLFlBQVk7c0JBQXJCLE1BQU07Z0JBT0gsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEVjbEJhc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuZXhwb3J0IGNsYXNzIEVjbEJyZWFkY3J1bWJTZWdtZW50Q2xpY2tFdmVudCBleHRlbmRzIEVjbEJhc2VFdmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2VjbC1icmVhZGNydW1iLXNlZ21lbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtYnJlYWRjcnVtYi1zZWdtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xCcmVhZGNydW1iU2VnbWVudENvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUge1xuICAgIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpIHRhYkluZGV4ID0gJy0xJztcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbGlzdGl0ZW0nO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBASW5wdXQoKSByb3V0ZXJMaW5rOiBzdHJpbmcgfCBhbnlbXSA9IG51bGw7XG4gICAgQElucHV0KCkgcXVlcnlQYXJhbXM6IFBhcmFtcyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhyZWYgPSAnJztcbiAgICBASW5wdXQoKSBxdWVyeVBhcmFtc0hhbmRsaW5nOiBRdWVyeVBhcmFtc0hhbmRsaW5nID0gbnVsbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuIEBJbnB1dCgpIGlzQ3VycmVudFBhZ2U6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuIEBJbnB1dCgpIGlzTmVnYXRpdmU6IGJvb2xlYW4gfCBhbnk7XG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVjbC11LWQtbm9uZScpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmhpZGRlbicpXG4gICAgaXNIaWRkZW46IGJvb2xlYW4gPSBudWxsO1xuXG4gICAgQE91dHB1dCgpIHNlZ21lbnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsQnJlYWRjcnVtYlNlZ21lbnRDbGlja0V2ZW50PigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtYnJlYWRjcnVtYl9fc2VnbWVudCcpLCB0aGlzLmlzQ3VycmVudFBhZ2UgPyAnZWNsLWJyZWFkY3J1bWJfX2N1cnJlbnQtcGFnZScgOiAnJ10uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBvblNlZ21lbnRDbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWdtZW50Q2xpY2submV4dChuZXcgRWNsQnJlYWRjcnVtYlNlZ21lbnRDbGlja0V2ZW50KCkpO1xuICAgICAgICBpZiAoIXRoaXMuaHJlZikge1xuICAgICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGFcbiAgICAqbmdJZj1cIiFpc0N1cnJlbnRQYWdlICYmIGhyZWZcIlxuICAgIGVjbExpbmtcbiAgICB2YXJpYW50PVwic3RhbmRhbG9uZVwiXG4gICAgW2lzTm9WaXNpdGVkXT1cInRydWVcIlxuICAgIFtpc05lZ2F0aXZlXT1cImlzTmVnYXRpdmVcIlxuICAgIFtocmVmXT1cImhyZWZcIlxuICAgIChjbGljayk9XCJvblNlZ21lbnRDbGljaygkZXZlbnQpXCJcbiAgICBjbGFzcz1cImVjbC1icmVhZGNydW1iX19saW5rXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cbjxhXG4gICAgKm5nSWY9XCIhaXNDdXJyZW50UGFnZSAmJiAhaHJlZlwiXG4gICAgZWNsTGlua1xuICAgIFtyb3V0ZXJMaW5rXT1cInJvdXRlckxpbmtcIlxuICAgIFtxdWVyeVBhcmFtc109XCJxdWVyeVBhcmFtc1wiXG4gICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwicXVlcnlQYXJhbXNIYW5kbGluZ1wiXG4gICAgdmFyaWFudD1cInN0YW5kYWxvbmVcIlxuICAgIFtpc05vVmlzaXRlZF09XCJ0cnVlXCJcbiAgICBbaXNOZWdhdGl2ZV09XCJpc05lZ2F0aXZlXCJcbiAgICBbaHJlZl09XCJocmVmXCJcbiAgICB0YWJpbmRleFxuICAgIChjbGljayk9XCJvblNlZ21lbnRDbGljaygkZXZlbnQpXCJcbiAgICBjbGFzcz1cImVjbC1icmVhZGNydW1iX19saW5rXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0N1cnJlbnRQYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPGVjbC1pY29uICpuZ0lmPVwiIWlzQ3VycmVudFBhZ2VcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCIyeHNcIiBjbGFzcz1cImVjbC1icmVhZGNydW1iX19pY29uIGVjbC1pY29uLS1yb3RhdGUtOTBcIj5cbjwvZWNsLWljb24+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -416,7 +416,7 @@ export class EclCarouselComponent extends ECLBaseDirective {
416
416
  }).observe(this.carouselContainerElement);
417
417
  }
418
418
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EclCarouselComponent, deps: [{ token: i1.BreakpointObserver }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
419
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclCarouselComponent, selector: "ecl-carousel", inputs: { isAutoplay: "isAutoplay", playInterval: "playInterval" }, outputs: { slide: "slide" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "slides", predicate: i0.forwardRef(() => EclCarouselItemComponent) }], viewQueries: [{ propertyName: "carouselContainerElement", first: true, predicate: ["carouselContainer"], descendants: true }, { propertyName: "playButton", first: true, predicate: ["playButton"], descendants: true }, { propertyName: "pauseButton", first: true, predicate: ["pauseButton"], descendants: true }, { propertyName: "prevButton", first: true, predicate: ["prevButton"], descendants: true }, { propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "navigationButtons", predicate: ["currButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #carouselContainer class=\"ecl-carousel__container\" [class.ecl-carousel-container--padded]=\"isPadded()\">\n <div #slidesContainer\n (keyup)=\"onFirstCarouselElementPress($event)\"\n class=\"ecl-carousel__slides\"\n [style.width.px]=\"getCarouselSlidesWidth()\"\n [style.left.px]=\"getCarouselSlidesOffset()\"\n [style.transition-duration.s]=\"transitionDuration\"\n (mouseover)=\"onSlideHover()\"\n (mouseout)=\"onSlideHoverout()\">\n <ecl-carousel-item #firstHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n <ng-content></ng-content>\n <ecl-carousel-item #lastHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n </div>\n\n <button *ngIf=\"hasControls() && !isMobileBreakpoint\" class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <button *ngIf=\"hasControls() && !isMobileBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n</div>\n\n<div *ngIf=\"hasControls()\" class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__autoplay\">\n <button\n #playButton\n class=\"ecl-carousel__play\"\n [style.display]=\"isPlaying ? 'none' : ''\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPlayClick()\">\n <ecl-icon icon=\"play\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"play-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.AUTOPLAY' | translate }}</div>\n </button>\n <button\n #pauseButton\n class=\"ecl-carousel__pause\"\n [style.display]=\"isPlaying ? '' : 'none'\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPauseClick()\">\n <ecl-icon icon=\"pause\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"pause-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PAUSE' | translate }}</div>\n </button>\n </div>\n\n <div class=\"ecl-carousel__navigation\">\n <button\n *ngFor=\"let slide of slides; let i = index\"\n #currButton\n [attr.aria-current]=\"i === getCurrentSlideIndex()\"\n class=\"ecl-carousel__navigation-item\"\n (click)=\"onSlideControlClick(slide)\"\n (keydown)=\"onNavBtnKeyboardPress($event, i)\">\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.GO-TO-SLIDE' | translate }} {{ i + 1 }}</span>\n </button>\n </div>\n\n <button *ngIf=\"isMobileBreakpoint\" #prevButton class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <div class=\"ecl-carousel__pagination\">\n <span class=\"ecl-carousel__current\">{{ getCurrentSlideIndex() + 1 }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-carousel__max\">{{ slides.length }}</span>\n </div>\n\n <button *ngIf=\"isMobileBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n </div>\n</div>\n", styles: [":host{display:block}.ecl-carousel__container{width:100%}.ecl-carousel__slides{transition-duration:.4s}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "component", type: i4.EclCarouselItemComponent, selector: "ecl-carousel-item", inputs: ["id", "isCurrent"], outputs: ["slideClick"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
419
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclCarouselComponent, selector: "ecl-carousel", inputs: { isAutoplay: "isAutoplay", playInterval: "playInterval" }, outputs: { slide: "slide" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "slides", predicate: i0.forwardRef(() => EclCarouselItemComponent) }], viewQueries: [{ propertyName: "carouselContainerElement", first: true, predicate: ["carouselContainer"], descendants: true }, { propertyName: "playButton", first: true, predicate: ["playButton"], descendants: true }, { propertyName: "pauseButton", first: true, predicate: ["pauseButton"], descendants: true }, { propertyName: "prevButton", first: true, predicate: ["prevButton"], descendants: true }, { propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }, { propertyName: "navigationButtons", predicate: ["currButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #carouselContainer class=\"ecl-carousel__container\" [class.ecl-carousel-container--padded]=\"isPadded()\">\n <div #slidesContainer\n (keyup)=\"onFirstCarouselElementPress($event)\"\n class=\"ecl-carousel__slides\"\n [style.width.px]=\"getCarouselSlidesWidth()\"\n [style.left.px]=\"getCarouselSlidesOffset()\"\n [style.transition-duration.s]=\"transitionDuration\"\n (mouseover)=\"onSlideHover()\"\n (mouseout)=\"onSlideHoverout()\">\n <ecl-carousel-item #firstHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n <ng-content></ng-content>\n <ecl-carousel-item #lastHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n </div>\n\n <button *ngIf=\"hasControls() && isLargeDesktopBreakpoint\" class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <button *ngIf=\"hasControls() && isLargeDesktopBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n</div>\n\n<div *ngIf=\"hasControls()\" class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__autoplay\">\n <button\n #playButton\n class=\"ecl-carousel__play\"\n [style.display]=\"isPlaying ? 'none' : ''\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPlayClick()\">\n <ecl-icon icon=\"play\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"play-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.AUTOPLAY' | translate }}</div>\n </button>\n <button\n #pauseButton\n class=\"ecl-carousel__pause\"\n [style.display]=\"isPlaying ? '' : 'none'\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPauseClick()\">\n <ecl-icon icon=\"pause\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"pause-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PAUSE' | translate }}</div>\n </button>\n </div>\n\n <div class=\"ecl-carousel__navigation\">\n <button\n *ngFor=\"let slide of slides; let i = index\"\n #currButton\n [attr.aria-current]=\"i === getCurrentSlideIndex()\"\n class=\"ecl-carousel__navigation-item\"\n (click)=\"onSlideControlClick(slide)\"\n (keydown)=\"onNavBtnKeyboardPress($event, i)\">\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.GO-TO-SLIDE' | translate }} {{ i + 1 }}</span>\n </button>\n </div>\n\n <button *ngIf=\"!isLargeDesktopBreakpoint\" #prevButton class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <div class=\"ecl-carousel__pagination\">\n <span class=\"ecl-carousel__current\">{{ getCurrentSlideIndex() + 1 }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-carousel__max\">{{ slides.length }}</span>\n </div>\n\n <button *ngIf=\"!isLargeDesktopBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n </div>\n</div>\n", styles: [":host{display:block}.ecl-carousel__container{width:100%}.ecl-carousel__slides{transition-duration:.4s}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "component", type: i4.EclCarouselItemComponent, selector: "ecl-carousel-item", inputs: ["id", "isCurrent"], outputs: ["slideClick"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
420
420
  }
421
421
  __decorate([
422
422
  coerceBoolean
@@ -432,7 +432,7 @@ __decorate([
432
432
  ], EclCarouselComponent.prototype, "slidesContainer", void 0);
433
433
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EclCarouselComponent, decorators: [{
434
434
  type: Component,
435
- args: [{ selector: 'ecl-carousel', template: "<div #carouselContainer class=\"ecl-carousel__container\" [class.ecl-carousel-container--padded]=\"isPadded()\">\n <div #slidesContainer\n (keyup)=\"onFirstCarouselElementPress($event)\"\n class=\"ecl-carousel__slides\"\n [style.width.px]=\"getCarouselSlidesWidth()\"\n [style.left.px]=\"getCarouselSlidesOffset()\"\n [style.transition-duration.s]=\"transitionDuration\"\n (mouseover)=\"onSlideHover()\"\n (mouseout)=\"onSlideHoverout()\">\n <ecl-carousel-item #firstHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n <ng-content></ng-content>\n <ecl-carousel-item #lastHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n </div>\n\n <button *ngIf=\"hasControls() && !isMobileBreakpoint\" class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <button *ngIf=\"hasControls() && !isMobileBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n</div>\n\n<div *ngIf=\"hasControls()\" class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__autoplay\">\n <button\n #playButton\n class=\"ecl-carousel__play\"\n [style.display]=\"isPlaying ? 'none' : ''\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPlayClick()\">\n <ecl-icon icon=\"play\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"play-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.AUTOPLAY' | translate }}</div>\n </button>\n <button\n #pauseButton\n class=\"ecl-carousel__pause\"\n [style.display]=\"isPlaying ? '' : 'none'\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPauseClick()\">\n <ecl-icon icon=\"pause\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"pause-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PAUSE' | translate }}</div>\n </button>\n </div>\n\n <div class=\"ecl-carousel__navigation\">\n <button\n *ngFor=\"let slide of slides; let i = index\"\n #currButton\n [attr.aria-current]=\"i === getCurrentSlideIndex()\"\n class=\"ecl-carousel__navigation-item\"\n (click)=\"onSlideControlClick(slide)\"\n (keydown)=\"onNavBtnKeyboardPress($event, i)\">\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.GO-TO-SLIDE' | translate }} {{ i + 1 }}</span>\n </button>\n </div>\n\n <button *ngIf=\"isMobileBreakpoint\" #prevButton class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <div class=\"ecl-carousel__pagination\">\n <span class=\"ecl-carousel__current\">{{ getCurrentSlideIndex() + 1 }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-carousel__max\">{{ slides.length }}</span>\n </div>\n\n <button *ngIf=\"isMobileBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n </div>\n</div>\n", styles: [":host{display:block}.ecl-carousel__container{width:100%}.ecl-carousel__slides{transition-duration:.4s}\n"] }]
435
+ args: [{ selector: 'ecl-carousel', template: "<div #carouselContainer class=\"ecl-carousel__container\" [class.ecl-carousel-container--padded]=\"isPadded()\">\n <div #slidesContainer\n (keyup)=\"onFirstCarouselElementPress($event)\"\n class=\"ecl-carousel__slides\"\n [style.width.px]=\"getCarouselSlidesWidth()\"\n [style.left.px]=\"getCarouselSlidesOffset()\"\n [style.transition-duration.s]=\"transitionDuration\"\n (mouseover)=\"onSlideHover()\"\n (mouseout)=\"onSlideHoverout()\">\n <ecl-carousel-item #firstHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n <ng-content></ng-content>\n <ecl-carousel-item #lastHiddenItem *ngIf=\"hasControls()\" [style.width.%]=\"slideWidth\"></ecl-carousel-item>\n </div>\n\n <button *ngIf=\"hasControls() && isLargeDesktopBreakpoint\" class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <button *ngIf=\"hasControls() && isLargeDesktopBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n</div>\n\n<div *ngIf=\"hasControls()\" class=\"ecl-carousel__controls\">\n <div class=\"ecl-container\">\n <div class=\"ecl-carousel__autoplay\">\n <button\n #playButton\n class=\"ecl-carousel__play\"\n [style.display]=\"isPlaying ? 'none' : ''\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPlayClick()\">\n <ecl-icon icon=\"play\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"play-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.AUTOPLAY' | translate }}</div>\n </button>\n <button\n #pauseButton\n class=\"ecl-carousel__pause\"\n [style.display]=\"isPlaying ? '' : 'none'\"\n (keydown)=\"onPlayKeyboardPress($event)\"\n (click)=\"onPauseClick()\">\n <ecl-icon icon=\"pause\" size=\"l\" class=\"ecl-carousel__icon-default\" isInverted> </ecl-icon>\n <ecl-icon icon=\"pause-filled\" size=\"l\" class=\"ecl-carousel__icon-active\" isInverted> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PAUSE' | translate }}</div>\n </button>\n </div>\n\n <div class=\"ecl-carousel__navigation\">\n <button\n *ngFor=\"let slide of slides; let i = index\"\n #currButton\n [attr.aria-current]=\"i === getCurrentSlideIndex()\"\n class=\"ecl-carousel__navigation-item\"\n (click)=\"onSlideControlClick(slide)\"\n (keydown)=\"onNavBtnKeyboardPress($event, i)\">\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.GO-TO-SLIDE' | translate }} {{ i + 1 }}</span>\n </button>\n </div>\n\n <button *ngIf=\"!isLargeDesktopBreakpoint\" #prevButton class=\"ecl-carousel__prev\" (click)=\"onPreviousSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-270\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <span class=\"ecl-u-sr-only\">{{ 'ecl.carousel.PREV-SLIDES' | translate }}</span>\n </button>\n\n <div class=\"ecl-carousel__pagination\">\n <span class=\"ecl-carousel__current\">{{ getCurrentSlideIndex() + 1 }}</span>\n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-carousel__max\">{{ slides.length }}</span>\n </div>\n\n <button *ngIf=\"!isLargeDesktopBreakpoint\" class=\"ecl-carousel__next\" (click)=\"onNextSlideClick()\">\n <ecl-icon icon=\"corner-arrow\" size=\"m\" transform=\"rotate-90\" isInverted class=\"ecl-carousel__icon-default\"> </ecl-icon>\n <div class=\"ecl-u-sr-only\">{{ 'ecl.carousel.NEXT-SLIDES' | translate }}</div>\n </button>\n </div>\n</div>\n", styles: [":host{display:block}.ecl-carousel__container{width:100%}.ecl-carousel__slides{transition-duration:.4s}\n"] }]
436
436
  }], ctorParameters: () => [{ type: i1.BreakpointObserver }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }], propDecorators: { isAutoplay: [{
437
437
  type: Input
438
438
  }], playInterval: [{
@@ -470,4 +470,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
470
470
  type: HostBinding,
471
471
  args: ['class']
472
472
  }] } });
473
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtY2Fyb3VzZWwvZWNsLWNhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtY2Fyb3VzZWwvZWNsLWNhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBSUgsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFzQnJELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFrQ3RELFlBQ1kscUJBQXlDLEVBQ3pDLEVBQXFCLEVBQ3JCLFNBQW9CO1FBRTVCLEtBQUssRUFBRSxDQUFDO1FBSkEsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQUN6QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcENoQyw4REFBOEQ7UUFDdEMsZUFBVSxHQUFrQixJ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QWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNDLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUVrQixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkEyQnZDLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW4sIGNvZXJjZUVsZW1lbnQsIGNvZXJjZU51bWJlciB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBpbnRlcnZhbCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZWNsLWNhcm91c2VsLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEVjbFNsaWRlRXZlbnQgfSBmcm9tICcuL2VjbC1jYXJvdXNlbC5ldmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLWNhcm91c2VsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLWNhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBUT0RPOiByZW1vdmUgYnkgaW1wbGVtZW50aW5nIGZ1bGwgRUNMIHNwZWNzICovXG4gICAgICAgICAgICAuZWNsLWNhcm91c2VsX19jb250YWluZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZWNsLWNhcm91c2VsX19zbGlkZXMge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsQ2Fyb3VzZWxDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KCkgaXNBdXRvcGxheTogYm9vbGVhbiB8IGFueSA9IHRydWU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAY29lcmNlTnVtYmVyIEBJbnB1dCgpIHBsYXlJbnRlcnZhbDogbnVtYmVyIHwgYW55ID0gNTAwMDtcblxuICAgIEBjb2VyY2VFbGVtZW50IEBWaWV3Q2hpbGQoJ2Nhcm91c2VsQ29udGFpbmVyJykgY2Fyb3VzZWxDb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50KSkgc2xpZGVzOiBRdWVyeUxpc3Q8RWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50PjtcbiAgICBAT3V0cHV0KCkgc2xpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFNsaWRlRXZlbnQ+KCk7XG4gICAgQFZpZXdDaGlsZHJlbignY3VyckJ1dHRvbicpIG5hdmlnYXRpb25CdXR0b25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gICAgQFZpZXdDaGlsZCgncGxheUJ1dHRvbicpIHBsYXlCdXR0b246IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgncGF1c2VCdXR0b24nKSBwYXVzZUJ1dHRvbjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdwcmV2QnV0dG9uJykgcHJldkJ1dHRvbjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdmaXJzdEhpZGRlbkl0ZW0nKSBmaXJzdEhpZGRlbkl0ZW06IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdsYXN0SGlkZGVuSXRlbScpIGxhc3RIaWRkZW5JdGVtOiBFY2xDYXJvdXNlbEl0ZW1Db21wb25lbnQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAY29lcmNlRWxlbWVudCBAVmlld0NoaWxkKCdzbGlkZXNDb250YWluZXInKSBzbGlkZXNDb250YWluZXI6IEVsZW1lbnQgfCBhbnk7XG5cbiAgICBwdWJsaWMgaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgcHVibGljIGlzUGF1c2VkRm9yY2VkID0gZmFsc2U7XG4gICAgcHVibGljIGlzVGFibGV0QnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0Rlc2t0b3BCcmVha3BvaW50ID0gZmFsc2U7XG4gICAgcHVibGljIGlzTGFyZ2VEZXNrdG9wQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICBzbGlkZVdpZHRoOiBudW1iZXI7XG4gICAgdHJhbnNpdGlvbkR1cmF0aW9uID0gMC40O1xuXG4gICAgcHJpdmF0ZSBwbGF5U3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBzdG9wU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBUSU1FT1VUX0lOVEVSVkFMID0gNDAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RrQnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLWNhcm91c2VsJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdEF1dG9wbGF5KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZUVsZW1lbnRTaXplQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmVMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QbGF5Q2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhcnRQbGF5aW5nKCk7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbih0aGlzLnBhdXNlQnV0dG9uKTtcbiAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGF1c2VCdXR0b24pO1xuICAgIH1cblxuICAgIG9uUGF1c2VDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICB0aGlzLnNob3dCdXR0b24odGhpcy5wbGF5QnV0dG9uKTtcbiAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGxheUJ1dHRvbik7XG4gICAgfVxuXG4gICAgb25GaXJzdENhcm91c2VsRWxlbWVudFByZXNzKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBLZXlDb2RlLlRBQikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QbGF5S2V5Ym9hcmRQcmVzcyhlKTogdm9pZCB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gS2V5Q29kZS5UQUIgJiYgZS5zaGlmdEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChbS2V5Q29kZS5UQUJdLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKHRoaXMuc2xpZGVzLmdldCgwKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KDApKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BQbGF5aW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLm5hdmlnYXRpb25CdXR0b25zLmdldCh0aGlzLmdldEN1cnJlbnRTbGlkZUluZGV4KCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc1BsYXlpbmcgJiYgW0tleUNvZGUuQVJST1dfUklHSFRdLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OYXZCdG5LZXlib2FyZFByZXNzKGU6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBLZXlDb2RlLlRBQiAmJiBlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvbkJ1dHRvblRhYkFuZFNoaWZ0KGUsIGluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gS2V5Q29kZS5BUlJPV19SSUdIVCkge1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25CdXR0b25BcnJvd1JpZ2h0KGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSBLZXlDb2RlLlRBQikge1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25CdXR0b25UYWIoZSwgaW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSBLZXlDb2RlLkFSUk9XX0xFRlQpIHtcbiAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0aW9uQnV0dG9uQXJyb3dMZWZ0KGUsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNCdXR0b25WaXNpYmxlKGJ1dHRvbjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWJ1dHRvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidXR0b24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnJztcbiAgICB9XG5cbiAgICBzaG93QnV0dG9uKGJ1dHRvbjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICBidXR0b24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgfVxuXG4gICAgZm9jdXNPbkJ1dHRvbihidXR0b246IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFidXR0b24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBidXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uU2xpZGVDb250cm9sQ2xpY2soc2xpZGU6IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3BQbGF5aW5nKCk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTbGlkZShzbGlkZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25OZXh0U2xpZGVDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICB0aGlzLmdvVG9OZXh0U2xpZGUodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25QcmV2aW91c1NsaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcFBsYXlpbmcoKTtcbiAgICAgICAgdGhpcy5nb1RvUHJldmlvdXNTbGlkZSh0cnVlKTtcbiAgICB9XG5cbiAgICBvblNsaWRlSG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGF1c2VQbGF5aW5nKCk7XG4gICAgfVxuXG4gICAgb25TbGlkZUhvdmVyb3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNTdG9wQnV0dG9uUHJlc3NlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VtZVBsYXlpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc1N0b3BCdXR0b25QcmVzc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1BhdXNlZEZvcmNlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNQYWRkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRGVza3RvcEJyZWFrcG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0NvbnRyb2xzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTbGlkZXNDb3VudCgpID4gMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFNsaWRlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleDogbnVtYmVyO1xuXG4gICAgICAgIHRoaXMuZ2V0QWxsU2xpZGVzQXJyYXkoKS5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uaXNDdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gaWR4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gdGhpcy5nZXRBbGxTbGlkZXNDb3VudCgpIC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNsaWRlc0NvdW50KCkgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50SW5kZXggLSAxO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDYXJvdXNlbFNsaWRlc1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcm91c2VsQ29udGFpbmVyRWxlbWVudD8ub2Zmc2V0V2lkdGggKiB0aGlzLmdldEFsbFNsaWRlc0NvdW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENhcm91c2VsU2xpZGVzT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAtMSAqIHRoaXMuY2Fyb3VzZWxDb250YWluZXJFbGVtZW50Py5vZmZzZXRXaWR0aCAqIHRoaXMuZ2V0Q3VycmVudEl0ZW1JbmRleCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEF1dG9wbGF5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGFydCQgPSB0aGlzLnBsYXlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICBjb25zdCBzdG9wJCA9IHRoaXMuc3RvcFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAgICAgc3RhcnQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gaW50ZXJ2YWwodGhpcy5wbGF5SW50ZXJ2YWwpLnBpcGUodGFrZVVudGlsKHN0b3AkKSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub05leHRTbGlkZSh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VycmVudEl0ZW1JbmRleCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgdGhpcy5nZXRBbGxTbGlkZXNBcnJheSgpLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmlzQ3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGluZGV4O1xuICAgICAgICAgICAgfSBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNsaWRlKGl0ZW0sIGlkeCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0NvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc05vU2xpZGVTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKHRoaXMuc2xpZGVzLmZpcnN0LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQXV0b3BsYXkgJiYgdGhpcy5pc1RhYmxldEJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0UGxheWluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0SGlkZGVuSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlyc3RIaWRkZW5JdGVtLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5nZXRMYXN0Q29udGVudENoaWxkKCk7XG4gICAgICAgIHRoaXMuZmlyc3RIaWRkZW5JdGVtLmlzQ3VycmVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhc3RIaWRkZW5JdGVtLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5nZXRGaXJzdENvbnRlbnRDaGlsZCgpO1xuICAgICAgICB0aGlzLmxhc3RIaWRkZW5JdGVtLmlzQ3VycmVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNsaWRlV2lkdGggPSB0aGlzLnNsaWRlcy5maXJzdC53aWR0aDtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMuc2xpZGVzQ29udGFpbmVyLCAndHJhbnNpdGlvbmVuZCcsICgpID0+IHRoaXMuY2hlY2tJbmRleCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSW5kZXgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdldEN1cnJlbnRJdGVtSW5kZXgoKSA9PT0gdGhpcy5nZXRBbGxTbGlkZXNDb3VudCgpIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc2xpZGVzLmZpcnN0O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldEN1cnJlbnRJdGVtSW5kZXgoKSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc2xpZGVzLmxhc3Q7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlU2xpZGUoaXRlbSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMYXN0Q29udGVudENoaWxkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNsaWRlc0NvdW50KCkgPiAwID8gdGhpcy5zbGlkZXMuZ2V0KHRoaXMuZ2V0U2xpZGVzQ291bnQoKSAtIDEpLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MIDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaXJzdENvbnRlbnRDaGlsZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTbGlkZXNDb3VudCgpID4gMCA/IHRoaXMuc2xpZGVzLmdldCgwKS5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWRlKGl0ZW06IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaXRlbS5pbmRleCA9IGlkeDtcbiAgICAgICAgaXRlbS5hcmlhTGFiZWwgPSBgc2xpZGUgJHtpZHggKyAxfSBvZiAke3RoaXMuZ2V0U2xpZGVzQ291bnQoKX1gO1xuICAgICAgICBpdGVtLndpZHRoID0gMTAwIC8gdGhpcy5nZXRBbGxTbGlkZXNDb3VudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29Ub05leHRTbGlkZShpc0xvb3A6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKHRoaXMuZ2V0TmV4dFNsaWRlKGlzTG9vcCksIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29Ub1ByZXZpb3VzU2xpZGUoaXNMb29wOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTbGlkZSh0aGlzLmdldFByZXZpb3VzU2xpZGUoaXNMb29wKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZVNsaWRlKHNsaWRlOiBFY2xDYXJvdXNlbEl0ZW1Db21wb25lbnQsIHdpdGhUcmFuc2l0aW9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh3aXRoVHJhbnNpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uRHVyYXRpb24gPSAwLjQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNsaWRlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEFsbFNsaWRlc0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNDdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNsaWRlLmlzQ3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpdGhUcmFuc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNsaWRlLm5leHQobmV3IEVjbFNsaWRlRXZlbnQodGhpcy5zbGlkZXMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSkpKTtcbiAgICAgICAgfSBcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFzdEJ1dHRvbihpbmRleCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBidXR0b25zTGlzdCA9IHRoaXMubmF2aWdhdGlvbkJ1dHRvbnM7XG4gICAgICAgIHJldHVybiBpbmRleCArIDEgPj0gYnV0dG9uc0xpc3QubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaXJzdEJ1dHRvbihpbmRleCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPD0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0UGxheWluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzUGF1c2VkRm9yY2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGxheVN1YmplY3QubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcFBsYXlpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNQYXVzZWRGb3JjZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BTdWJqZWN0Lm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhdXNlUGxheWluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9wU3ViamVjdC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN1bWVQbGF5aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucGxheVN1YmplY3QubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmV4dFNsaWRlKGlzTG9vcDogYm9vbGVhbik6IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCB7XG4gICAgICAgIGNvbnN0IHNsaWRlc0NvdW50ID0gdGhpcy5nZXRTbGlkZXNDb3VudCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRTbGlkZUluZGV4KCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+PSBzbGlkZXNDb3VudCAtIDEpIHtcbiAgICAgICAgICAgIGlmIChpc0xvb3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMuZmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sYXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzLmdldChjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsU2xpZGVzQXJyYXkoKTogRWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gWy4uLlt0aGlzLmZpcnN0SGlkZGVuSXRlbV0sIC4uLnRoaXMuc2xpZGVzLnRvQXJyYXkoKSwgLi4uW3RoaXMubGFzdEhpZGRlbkl0ZW1dXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByZXZpb3VzU2xpZGUoaXNMb29wOiBib29sZWFuKTogRWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50IHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50U2xpZGVJbmRleCgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPD0gMCkge1xuICAgICAgICAgICAgaWYgKGlzTG9vcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sYXN0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMuZmlyc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMuZ2V0KGN1cnJlbnRJbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsU2xpZGVzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ29udHJvbHMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzLmxlbmd0aCArIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm9TbGlkZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2xpZGVzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNDdXJyZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvblRhYkFuZFNoaWZ0KGU6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uOiBFbGVtZW50UmVmID0gdGhpcy5uYXZpZ2F0aW9uQnV0dG9ucy5nZXQodGhpcy5nZXRDdXJyZW50U2xpZGVJbmRleCgpKTtcbiAgICAgICAgaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RCdXR0b24oaW5kZXgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbGF5QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGxheUJ1dHRvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wYXVzZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLnBhdXNlQnV0dG9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzU2xpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbjogRWxlbWVudFJlZiA9IHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKGJ1dHRvbik7XG4gICAgICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgICAgICB9XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvblRhYihlLCBpbmRleCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xhc3RCdXR0b24oaW5kZXgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0J1dHRvblZpc2libGUodGhpcy5wcmV2QnV0dG9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLnByZXZCdXR0b24pO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub05leHRTbGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uOiBFbGVtZW50UmVmID0gdGhpcy5uYXZpZ2F0aW9uQnV0dG9ucy5nZXQodGhpcy5nZXRDdXJyZW50U2xpZGVJbmRleCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25CdXR0b24oYnV0dG9uKTtcbiAgICAgICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvbkFycm93UmlnaHQoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub05leHRTbGlkZShmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCBidXR0b246IEVsZW1lbnRSZWYgPSB0aGlzLm5hdmlnYXRpb25CdXR0b25zLmdldCh0aGlzLmdldEN1cnJlbnRTbGlkZUluZGV4KCkpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKGJ1dHRvbik7XG4gICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvbkFycm93TGVmdChlOiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RCdXR0b24oaW5kZXgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbGF5QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGxheUJ1dHRvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wYXVzZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLnBhdXNlQnV0dG9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzU2xpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbjogRWxlbWVudFJlZiA9IHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKGJ1dHRvbik7XG4gICAgICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RrQnJlYWtwb2ludE9ic2VydmVyXG4gICAgICAgICAgICAub2JzZXJ2ZShbXG4gICAgICAgICAgICAgICAgJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICAgICAgICAgICAgICAgJyhtaW4td2lkdGg6IDExNDBweCkgYW5kIChtYXgtd2lkdGg6IDEyNjBweCknLFxuICAgICAgICAgICAgICAgICcobWluLXdpZHRoOiAxMTQwcHgpJyxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVGFibGV0QnJlYWtwb2ludCA9IHJlc3VsdC5icmVha3BvaW50c1snKG1pbi13aWR0aDogNzY4cHgpJ107XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rlc2t0b3BCcmVha3BvaW50ID0gcmVzdWx0LmJyZWFrcG9pbnRzWycobWluLXdpZHRoOiAxMTQwcHgpIGFuZCAobWF4LXdpZHRoOiAxMjYwcHgpJ107XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xhcmdlRGVza3RvcEJyZWFrcG9pbnQgPSByZXN1bHQuYnJlYWtwb2ludHNbJyhtaW4td2lkdGg6IDExNDBweCknXTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RhYmxldEJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUVsZW1lbnRTaXplQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KS5vYnNlcnZlKHRoaXMuY2Fyb3VzZWxDb250YWluZXJFbGVtZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2ICNjYXJvdXNlbENvbnRhaW5lciBjbGFzcz1cImVjbC1jYXJvdXNlbF9fY29udGFpbmVyXCIgW2NsYXNzLmVjbC1jYXJvdXNlbC1jb250YWluZXItLXBhZGRlZF09XCJpc1BhZGRlZCgpXCI+XG4gICAgPGRpdiAjc2xpZGVzQ29udGFpbmVyXG4gICAgICAgIChrZXl1cCk9XCJvbkZpcnN0Q2Fyb3VzZWxFbGVtZW50UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiZWNsLWNhcm91c2VsX19zbGlkZXNcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZ2V0Q2Fyb3VzZWxTbGlkZXNXaWR0aCgpXCJcbiAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZ2V0Q2Fyb3VzZWxTbGlkZXNPZmZzZXQoKVwiXG4gICAgICAgIFtzdHlsZS50cmFuc2l0aW9uLWR1cmF0aW9uLnNdPVwidHJhbnNpdGlvbkR1cmF0aW9uXCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJvblNsaWRlSG92ZXIoKVwiXG4gICAgICAgIChtb3VzZW91dCk9XCJvblNsaWRlSG92ZXJvdXQoKVwiPlxuICAgICAgICA8ZWNsLWNhcm91c2VsLWl0ZW0gI2ZpcnN0SGlkZGVuSXRlbSAqbmdJZj1cImhhc0NvbnRyb2xzKClcIiBbc3R5bGUud2lkdGguJV09XCJzbGlkZVdpZHRoXCI+PC9lY2wtY2Fyb3VzZWwtaXRlbT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZWNsLWNhcm91c2VsLWl0ZW0gI2xhc3RIaWRkZW5JdGVtICpuZ0lmPVwiaGFzQ29udHJvbHMoKVwiIFtzdHlsZS53aWR0aC4lXT1cInNsaWRlV2lkdGhcIj48L2VjbC1jYXJvdXNlbC1pdGVtPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cImhhc0NvbnRyb2xzKCkgJiYgIWlzTW9iaWxlQnJlYWtwb2ludFwiIGNsYXNzPVwiZWNsLWNhcm91c2VsX19wcmV2XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNTbGlkZUNsaWNrKClcIj5cbiAgICAgICAgPGVjbC1pY29uIGljb249XCJjb3JuZXItYXJyb3dcIiBzaXplPVwibVwiIHRyYW5zZm9ybT1cInJvdGF0ZS0yNzBcIiBpc0ludmVydGVkIGNsYXNzPVwiZWNsLWNhcm91c2VsX19pY29uLWRlZmF1bHRcIj4gPC9lY2wtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+e3sgJ2VjbC5jYXJvdXNlbC5QUkVWLVNMSURFUycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaGFzQ29udHJvbHMoKSAmJiAhaXNNb2JpbGVCcmVha3BvaW50XCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX25leHRcIiAoY2xpY2spPVwib25OZXh0U2xpZGVDbGljaygpXCI+XG4gICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cIm1cIiB0cmFuc2Zvcm09XCJyb3RhdGUtOTBcIiBpc0ludmVydGVkIGNsYXNzPVwiZWNsLWNhcm91c2VsX19pY29uLWRlZmF1bHRcIj4gPC9lY2wtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNhcm91c2VsLk5FWFQtU0xJREVTJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJoYXNDb250cm9scygpXCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2NvbnRyb2xzXCI+XG4gICAgPGRpdiBjbGFzcz1cImVjbC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1jYXJvdXNlbF9fYXV0b3BsYXlcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAjcGxheUJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWNsLWNhcm91c2VsX19wbGF5XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc1BsYXlpbmcgPyAnbm9uZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25QbGF5S2V5Ym9hcmRQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QbGF5Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwicGxheVwiIHNpemU9XCJsXCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2ljb24tZGVmYXVsdFwiIGlzSW52ZXJ0ZWQ+IDwvZWNsLWljb24+XG4gICAgICAgICAgICAgICAgPGVjbC1pY29uIGljb249XCJwbGF5LWZpbGxlZFwiIHNpemU9XCJsXCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2ljb24tYWN0aXZlXCIgaXNJbnZlcnRlZD4gPC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY2Fyb3VzZWwuQVVUT1BMQVknIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAjcGF1c2VCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImVjbC1jYXJvdXNlbF9fcGF1c2VcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzUGxheWluZyA/ICcnIDogJ25vbmUnXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblBsYXlLZXlib2FyZFByZXNzKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblBhdXNlQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwicGF1c2VcIiBzaXplPVwibFwiIGNsYXNzPVwiZWNsLWNhcm91c2VsX19pY29uLWRlZmF1bHRcIiBpc0ludmVydGVkPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwicGF1c2UtZmlsbGVkXCIgc2l6ZT1cImxcIiBjbGFzcz1cImVjbC1jYXJvdXNlbF9faWNvbi1hY3RpdmVcIiBpc0ludmVydGVkPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+e3sgJ2VjbC5jYXJvdXNlbC5QQVVTRScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLWNhcm91c2VsX19uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNsaWRlIG9mIHNsaWRlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgI2N1cnJCdXR0b25cbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiaSA9PT0gZ2V0Q3VycmVudFNsaWRlSW5kZXgoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX25hdmlnYXRpb24taXRlbVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2xpZGVDb250cm9sQ2xpY2soc2xpZGUpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbk5hdkJ0bktleWJvYXJkUHJlc3MoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY2Fyb3VzZWwuR08tVE8tU0xJREUnIHwgdHJhbnNsYXRlIH19IHt7IGkgKyAxIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJpc01vYmlsZUJyZWFrcG9pbnRcIiAjcHJldkJ1dHRvbiBjbGFzcz1cImVjbC1jYXJvdXNlbF9fcHJldlwiIChjbGljayk9XCJvblByZXZpb3VzU2xpZGVDbGljaygpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJtXCIgdHJhbnNmb3JtPVwicm90YXRlLTI3MFwiIGlzSW52ZXJ0ZWQgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2ljb24tZGVmYXVsdFwiPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+e3sgJ2VjbC5jYXJvdXNlbC5QUkVWLVNMSURFUycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX3BhZ2luYXRpb25cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLWNhcm91c2VsX19jdXJyZW50XCI+e3sgZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICB7eyAnZWNsLmNvbW1vbi5PRicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWNsLWNhcm91c2VsX19tYXhcIj57eyBzbGlkZXMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNNb2JpbGVCcmVha3BvaW50XCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX25leHRcIiAoY2xpY2spPVwib25OZXh0U2xpZGVDbGljaygpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJtXCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCIgaXNJbnZlcnRlZCBjbGFzcz1cImVjbC1jYXJvdXNlbF9faWNvbi1kZWZhdWx0XCI+IDwvZWNsLWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY2Fyb3VzZWwuTkVYVC1TTElERVMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
473
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWNhcm91c2VsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtY2Fyb3VzZWwvZWNsLWNhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtY2Fyb3VzZWwvZWNsLWNhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBSUgsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFzQnJELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxnQkFBZ0I7SUFrQ3RELFlBQ1kscUJBQXlDLEVBQ3pDLEVBQXFCLEVBQ3JCLFNBQW9CO1FBRTVCLEtBQUssRUFBRSxDQUFDO1FBSkEsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFvQjtRQUN6QyxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBcENoQyw4REFBOEQ7UUFDdEMsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDekQsOERBQThEO1FBQ3ZDLGlCQUFZLEdBQWlCLElBQUksQ0FBQztRQUkvQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFVN0MsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyx1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFbEMsdUJBQWtCLEdBQUcsR0FBRyxDQUFDO1FBRWpCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNsQyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEMsYUFBUSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRTNDLHFCQUFnQixHQUFHLEdBQUcsQ0FBQztJQVF4QyxDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDMUIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7U0FDOUI7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsMkJBQTJCLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtTQUNKO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDL0U7WUFDRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdEI7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDL0U7SUFDTCxDQUFDO0lBRUQscUJBQXFCLENBQUMsQ0FBZ0IsRUFBRSxLQUFhO1FBQ2pELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDckMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNoRDthQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQ3RDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDeEM7YUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNyQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsT0FBTztJQUNYLENBQUM7SUFFRCxlQUFlLENBQUMsTUFBa0I7UUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxVQUFVLENBQUMsTUFBa0I7UUFDekIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWtCO1FBQzVCLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUErQjtRQUMvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU0sbUJBQW1CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRU0sUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxZQUFvQixDQUFDO1FBRXpCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMzQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN4QixZQUFZLEdBQUcsR0FBRyxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFlBQVksS0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRSxDQUFDLEVBQUU7WUFDOUMsT0FBTyxDQUFDLENBQUM7U0FDWjthQUFNLElBQUksWUFBWSxLQUFLLENBQUMsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLHNCQUFzQjtRQUN6QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDakYsQ0FBQztJQUVNLHVCQUF1QjtRQUMxQixPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVPLFlBQVk7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTlDLE1BQU07YUFDRCxJQUFJLENBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ25FLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3QyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN4QixNQUFNLEdBQUcsS0FBSyxDQUFDO2FBQ2xCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDdkI7U0FDSjtJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRU8sVUFBVTtRQUNkLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzdELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEgsQ0FBQztJQUVPLG9CQUFvQjtRQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUYsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUE4QixFQUFFLEdBQVc7UUFDekQsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFlO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBZTtRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQStCLEVBQUUsY0FBdUI7UUFDMUUsSUFBSSxjQUFjLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztTQUNqQzthQUFNO1lBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztTQUMvQjtRQUNELElBQUksS0FBSyxFQUFFO1lBQ1AsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDMUI7UUFDRCxJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwRjtJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBSztRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDM0MsT0FBTyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDM0MsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFLO1FBQ3ZCLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxXQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFlO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVqRCxJQUFJLFlBQVksSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksTUFBTSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUMzQjtTQUNKO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBZTtRQUNwQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVqRCxJQUFJLFlBQVksSUFBSSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUMzQjtpQkFBTTtnQkFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQzVCO1NBQ0o7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVPLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2pDO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFBO1NBQzVCO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU8sNkJBQTZCLENBQUMsQ0FBZ0IsRUFBRSxLQUFhO1FBQ2pFLE1BQU0sTUFBTSxHQUFlLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUNuRixJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3RCO1NBQ0o7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN2QztZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDeEM7U0FDSjthQUFNO1lBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLE1BQU0sTUFBTSxHQUFlLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztnQkFDbkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixDQUFDLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDN0I7UUFDRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLHFCQUFxQixDQUFDLENBQUMsRUFBRSxLQUFLO1FBQ2xDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3RCO1NBQ0o7YUFBTTtZQUNILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsTUFBTSxNQUFNLEdBQWUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRU8sNEJBQTRCLENBQUMsQ0FBZ0I7UUFDakQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQWUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sMkJBQTJCLENBQUMsQ0FBZ0IsRUFBRSxLQUFhO1FBQy9ELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN4QztTQUNKO2FBQU07WUFDSCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUIsTUFBTSxNQUFNLEdBQWUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRU8sd0JBQXdCO1FBQzVCLElBQUksQ0FBQyxxQkFBcUI7YUFDckIsT0FBTyxDQUFDO1lBQ0wsb0JBQW9CO1lBQ3BCLDZDQUE2QztZQUM3QyxxQkFBcUI7U0FDeEIsQ0FBQzthQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRTFFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLHlCQUF5QjtRQUM3QixJQUFJLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDOUMsQ0FBQztpSUFwZFEsb0JBQW9CO3FIQUFwQixvQkFBb0Isc1BBT0ssd0JBQXdCLHkwQkN0RDlELDY3SUErRUE7O0FEOUI0QjtJQUF2QixhQUFhO3dEQUEyQztBQUVsQztJQUF0QixZQUFZOzBEQUE0QztBQUVWO0lBQTlDLGFBQWE7c0VBQXVFO0FBVXhDO0lBQTVDLGFBQWE7NkRBQThEOzJGQWhCbkUsb0JBQW9CO2tCQXBCaEMsU0FBUzsrQkFDSSxjQUFjOytJQXFCQSxVQUFVO3NCQUFsQixLQUFLO2dCQUVFLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRTJCLHdCQUF3QjtzQkFBdkQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ2dCLE1BQU07c0JBQWxFLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUNqRCxLQUFLO3NCQUFkLE1BQU07Z0JBQ3FCLGlCQUFpQjtzQkFBNUMsWUFBWTt1QkFBQyxZQUFZO2dCQUNELFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0MsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNPLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUNDLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUVrQixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkEyQnZDLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW4sIGNvZXJjZUVsZW1lbnQsIGNvZXJjZU51bWJlciB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBpbnRlcnZhbCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtleUNvZGUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZWNsLWNhcm91c2VsLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEVjbFNsaWRlRXZlbnQgfSBmcm9tICcuL2VjbC1jYXJvdXNlbC5ldmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLWNhcm91c2VsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLWNhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBUT0RPOiByZW1vdmUgYnkgaW1wbGVtZW50aW5nIGZ1bGwgRUNMIHNwZWNzICovXG4gICAgICAgICAgICAuZWNsLWNhcm91c2VsX19jb250YWluZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZWNsLWNhcm91c2VsX19zbGlkZXMge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIGAsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWNsQ2Fyb3VzZWxDb21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KCkgaXNBdXRvcGxheTogYm9vbGVhbiB8IGFueSA9IHRydWU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAY29lcmNlTnVtYmVyIEBJbnB1dCgpIHBsYXlJbnRlcnZhbDogbnVtYmVyIHwgYW55ID0gNTAwMDtcblxuICAgIEBjb2VyY2VFbGVtZW50IEBWaWV3Q2hpbGQoJ2Nhcm91c2VsQ29udGFpbmVyJykgY2Fyb3VzZWxDb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50KSkgc2xpZGVzOiBRdWVyeUxpc3Q8RWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50PjtcbiAgICBAT3V0cHV0KCkgc2xpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbFNsaWRlRXZlbnQ+KCk7XG4gICAgQFZpZXdDaGlsZHJlbignY3VyckJ1dHRvbicpIG5hdmlnYXRpb25CdXR0b25zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG4gICAgQFZpZXdDaGlsZCgncGxheUJ1dHRvbicpIHBsYXlCdXR0b246IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgncGF1c2VCdXR0b24nKSBwYXVzZUJ1dHRvbjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdwcmV2QnV0dG9uJykgcHJldkJ1dHRvbjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdmaXJzdEhpZGRlbkl0ZW0nKSBmaXJzdEhpZGRlbkl0ZW06IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdsYXN0SGlkZGVuSXRlbScpIGxhc3RIaWRkZW5JdGVtOiBFY2xDYXJvdXNlbEl0ZW1Db21wb25lbnQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBAY29lcmNlRWxlbWVudCBAVmlld0NoaWxkKCdzbGlkZXNDb250YWluZXInKSBzbGlkZXNDb250YWluZXI6IEVsZW1lbnQgfCBhbnk7XG5cbiAgICBwdWJsaWMgaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgcHVibGljIGlzUGF1c2VkRm9yY2VkID0gZmFsc2U7XG4gICAgcHVibGljIGlzVGFibGV0QnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0Rlc2t0b3BCcmVha3BvaW50ID0gZmFsc2U7XG4gICAgcHVibGljIGlzTGFyZ2VEZXNrdG9wQnJlYWtwb2ludCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc01vYmlsZUJyZWFrcG9pbnQgPSBmYWxzZTtcbiAgICBzbGlkZVdpZHRoOiBudW1iZXI7XG4gICAgdHJhbnNpdGlvbkR1cmF0aW9uID0gMC40O1xuXG4gICAgcHJpdmF0ZSBwbGF5U3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJpdmF0ZSBzdG9wU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBUSU1FT1VUX0lOVEVSVkFMID0gNDAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2RrQnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZWNsLWNhcm91c2VsJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdEF1dG9wbGF5KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9ic2VydmVCcmVha3BvaW50Q2hhbmdlcygpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5pdGlhbGl6ZVNsaWRlcigpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZUVsZW1lbnRTaXplQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMudW5zdWJzY3JpYmVMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QbGF5Q2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RhcnRQbGF5aW5nKCk7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvbih0aGlzLnBhdXNlQnV0dG9uKTtcbiAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGF1c2VCdXR0b24pO1xuICAgIH1cblxuICAgIG9uUGF1c2VDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICB0aGlzLnNob3dCdXR0b24odGhpcy5wbGF5QnV0dG9uKTtcbiAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGxheUJ1dHRvbik7XG4gICAgfVxuXG4gICAgb25GaXJzdENhcm91c2VsRWxlbWVudFByZXNzKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBLZXlDb2RlLlRBQikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25QbGF5S2V5Ym9hcmRQcmVzcyhlKTogdm9pZCB7XG4gICAgICAgIGlmIChlLmtleSA9PT0gS2V5Q29kZS5UQUIgJiYgZS5zaGlmdEtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChbS2V5Q29kZS5UQUJdLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKHRoaXMuc2xpZGVzLmdldCgwKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KDApKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BQbGF5aW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLm5hdmlnYXRpb25CdXR0b25zLmdldCh0aGlzLmdldEN1cnJlbnRTbGlkZUluZGV4KCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc1BsYXlpbmcgJiYgW0tleUNvZGUuQVJST1dfUklHSFRdLmluY2x1ZGVzKGUua2V5KSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25OYXZCdG5LZXlib2FyZFByZXNzKGU6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGUua2V5ID09PSBLZXlDb2RlLlRBQiAmJiBlLnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvbkJ1dHRvblRhYkFuZFNoaWZ0KGUsIGluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gS2V5Q29kZS5BUlJPV19SSUdIVCkge1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25CdXR0b25BcnJvd1JpZ2h0KGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSBLZXlDb2RlLlRBQikge1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25CdXR0b25UYWIoZSwgaW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSBLZXlDb2RlLkFSUk9XX0xFRlQpIHtcbiAgICAgICAgICAgIHRoaXMub25OYXZpZ2F0aW9uQnV0dG9uQXJyb3dMZWZ0KGUsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNCdXR0b25WaXNpYmxlKGJ1dHRvbjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWJ1dHRvbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidXR0b24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnJztcbiAgICB9XG5cbiAgICBzaG93QnV0dG9uKGJ1dHRvbjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgICAgICBidXR0b24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgfVxuXG4gICAgZm9jdXNPbkJ1dHRvbihidXR0b246IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFidXR0b24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBidXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIG9uU2xpZGVDb250cm9sQ2xpY2soc2xpZGU6IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3BQbGF5aW5nKCk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTbGlkZShzbGlkZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25OZXh0U2xpZGVDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICB0aGlzLmdvVG9OZXh0U2xpZGUodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25QcmV2aW91c1NsaWRlQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcFBsYXlpbmcoKTtcbiAgICAgICAgdGhpcy5nb1RvUHJldmlvdXNTbGlkZSh0cnVlKTtcbiAgICB9XG5cbiAgICBvblNsaWRlSG92ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGF1c2VQbGF5aW5nKCk7XG4gICAgfVxuXG4gICAgb25TbGlkZUhvdmVyb3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNTdG9wQnV0dG9uUHJlc3NlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VtZVBsYXlpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc1N0b3BCdXR0b25QcmVzc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1BhdXNlZEZvcmNlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNQYWRkZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRGVza3RvcEJyZWFrcG9pbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0NvbnRyb2xzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTbGlkZXNDb3VudCgpID4gMTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudFNsaWRlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGN1cnJlbnRJbmRleDogbnVtYmVyO1xuXG4gICAgICAgIHRoaXMuZ2V0QWxsU2xpZGVzQXJyYXkoKS5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uaXNDdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gaWR4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gdGhpcy5nZXRBbGxTbGlkZXNDb3VudCgpIC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNsaWRlc0NvdW50KCkgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50SW5kZXggLSAxO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDYXJvdXNlbFNsaWRlc1dpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhcm91c2VsQ29udGFpbmVyRWxlbWVudD8ub2Zmc2V0V2lkdGggKiB0aGlzLmdldEFsbFNsaWRlc0NvdW50KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENhcm91c2VsU2xpZGVzT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAtMSAqIHRoaXMuY2Fyb3VzZWxDb250YWluZXJFbGVtZW50Py5vZmZzZXRXaWR0aCAqIHRoaXMuZ2V0Q3VycmVudEl0ZW1JbmRleCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEF1dG9wbGF5KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGFydCQgPSB0aGlzLnBsYXlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICBjb25zdCBzdG9wJCA9IHRoaXMuc3RvcFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAgICAgc3RhcnQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gaW50ZXJ2YWwodGhpcy5wbGF5SW50ZXJ2YWwpLnBpcGUodGFrZVVudGlsKHN0b3AkKSkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub05leHRTbGlkZSh0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VycmVudEl0ZW1JbmRleCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgICAgdGhpcy5nZXRBbGxTbGlkZXNBcnJheSgpLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLmlzQ3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGluZGV4O1xuICAgICAgICAgICAgfSBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplU2xpZGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdFNsaWRlKGl0ZW0sIGlkeCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0NvbnRyb2xzKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEhpZGRlbkl0ZW1zKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc05vU2xpZGVTZWxlY3RlZCgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKHRoaXMuc2xpZGVzLmZpcnN0LCBmYWxzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQXV0b3BsYXkgJiYgdGhpcy5pc1RhYmxldEJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0UGxheWluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0SGlkZGVuSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlyc3RIaWRkZW5JdGVtLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5nZXRMYXN0Q29udGVudENoaWxkKCk7XG4gICAgICAgIHRoaXMuZmlyc3RIaWRkZW5JdGVtLmlzQ3VycmVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhc3RIaWRkZW5JdGVtLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5nZXRGaXJzdENvbnRlbnRDaGlsZCgpO1xuICAgICAgICB0aGlzLmxhc3RIaWRkZW5JdGVtLmlzQ3VycmVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNsaWRlV2lkdGggPSB0aGlzLnNsaWRlcy5maXJzdC53aWR0aDtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMuc2xpZGVzQ29udGFpbmVyLCAndHJhbnNpdGlvbmVuZCcsICgpID0+IHRoaXMuY2hlY2tJbmRleCgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSW5kZXgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdldEN1cnJlbnRJdGVtSW5kZXgoKSA9PT0gdGhpcy5nZXRBbGxTbGlkZXNDb3VudCgpIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc2xpZGVzLmZpcnN0O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldEN1cnJlbnRJdGVtSW5kZXgoKSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc2xpZGVzLmxhc3Q7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlU2xpZGUoaXRlbSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMYXN0Q29udGVudENoaWxkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNsaWRlc0NvdW50KCkgPiAwID8gdGhpcy5zbGlkZXMuZ2V0KHRoaXMuZ2V0U2xpZGVzQ291bnQoKSAtIDEpLmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MIDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaXJzdENvbnRlbnRDaGlsZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTbGlkZXNDb3VudCgpID4gMCA/IHRoaXMuc2xpZGVzLmdldCgwKS5lbC5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA6ICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFNsaWRlKGl0ZW06IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCwgaWR4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaXRlbS5pbmRleCA9IGlkeDtcbiAgICAgICAgaXRlbS5hcmlhTGFiZWwgPSBgc2xpZGUgJHtpZHggKyAxfSBvZiAke3RoaXMuZ2V0U2xpZGVzQ291bnQoKX1gO1xuICAgICAgICBpdGVtLndpZHRoID0gMTAwIC8gdGhpcy5nZXRBbGxTbGlkZXNDb3VudCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29Ub05leHRTbGlkZShpc0xvb3A6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVNsaWRlKHRoaXMuZ2V0TmV4dFNsaWRlKGlzTG9vcCksIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29Ub1ByZXZpb3VzU2xpZGUoaXNMb29wOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVTbGlkZSh0aGlzLmdldFByZXZpb3VzU2xpZGUoaXNMb29wKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZVNsaWRlKHNsaWRlOiBFY2xDYXJvdXNlbEl0ZW1Db21wb25lbnQsIHdpdGhUcmFuc2l0aW9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh3aXRoVHJhbnNpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uRHVyYXRpb24gPSAwLjQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25EdXJhdGlvbiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNsaWRlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEFsbFNsaWRlc0FycmF5KCkuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNDdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNsaWRlLmlzQ3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpdGhUcmFuc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNsaWRlLm5leHQobmV3IEVjbFNsaWRlRXZlbnQodGhpcy5zbGlkZXMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSkpKTtcbiAgICAgICAgfSBcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFzdEJ1dHRvbihpbmRleCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBidXR0b25zTGlzdCA9IHRoaXMubmF2aWdhdGlvbkJ1dHRvbnM7XG4gICAgICAgIHJldHVybiBpbmRleCArIDEgPj0gYnV0dG9uc0xpc3QubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaXJzdEJ1dHRvbihpbmRleCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPD0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0UGxheWluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzUGF1c2VkRm9yY2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGxheVN1YmplY3QubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RvcFBsYXlpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNQbGF5aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNQYXVzZWRGb3JjZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BTdWJqZWN0Lm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhdXNlUGxheWluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9wU3ViamVjdC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXN1bWVQbGF5aW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzUGxheWluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucGxheVN1YmplY3QubmV4dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmV4dFNsaWRlKGlzTG9vcDogYm9vbGVhbik6IEVjbENhcm91c2VsSXRlbUNvbXBvbmVudCB7XG4gICAgICAgIGNvbnN0IHNsaWRlc0NvdW50ID0gdGhpcy5nZXRTbGlkZXNDb3VudCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRTbGlkZUluZGV4KCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+PSBzbGlkZXNDb3VudCAtIDEpIHtcbiAgICAgICAgICAgIGlmIChpc0xvb3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMuZmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sYXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzLmdldChjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsU2xpZGVzQXJyYXkoKTogRWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gWy4uLlt0aGlzLmZpcnN0SGlkZGVuSXRlbV0sIC4uLnRoaXMuc2xpZGVzLnRvQXJyYXkoKSwgLi4uW3RoaXMubGFzdEhpZGRlbkl0ZW1dXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByZXZpb3VzU2xpZGUoaXNMb29wOiBib29sZWFuKTogRWNsQ2Fyb3VzZWxJdGVtQ29tcG9uZW50IHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5nZXRDdXJyZW50U2xpZGVJbmRleCgpO1xuXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPD0gMCkge1xuICAgICAgICAgICAgaWYgKGlzTG9vcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNsaWRlcy5sYXN0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMuZmlyc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMuZ2V0KGN1cnJlbnRJbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTbGlkZXNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsU2xpZGVzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzQ29udHJvbHMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzLmxlbmd0aCArIDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTm9TbGlkZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuc2xpZGVzLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNDdXJyZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvblRhYkFuZFNoaWZ0KGU6IEtleWJvYXJkRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uOiBFbGVtZW50UmVmID0gdGhpcy5uYXZpZ2F0aW9uQnV0dG9ucy5nZXQodGhpcy5nZXRDdXJyZW50U2xpZGVJbmRleCgpKTtcbiAgICAgICAgaWYgKGJ1dHRvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RCdXR0b24oaW5kZXgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbGF5QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGxheUJ1dHRvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wYXVzZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLnBhdXNlQnV0dG9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzU2xpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbjogRWxlbWVudFJlZiA9IHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKGJ1dHRvbik7XG4gICAgICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgICAgICB9XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvblRhYihlLCBpbmRleCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xhc3RCdXR0b24oaW5kZXgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0J1dHRvblZpc2libGUodGhpcy5wcmV2QnV0dG9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLnByZXZCdXR0b24pO1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub05leHRTbGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYnV0dG9uOiBFbGVtZW50UmVmID0gdGhpcy5uYXZpZ2F0aW9uQnV0dG9ucy5nZXQodGhpcy5nZXRDdXJyZW50U2xpZGVJbmRleCgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25CdXR0b24oYnV0dG9uKTtcbiAgICAgICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTCk7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvbkFycm93UmlnaHQoZTogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub05leHRTbGlkZShmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCBidXR0b246IEVsZW1lbnRSZWYgPSB0aGlzLm5hdmlnYXRpb25CdXR0b25zLmdldCh0aGlzLmdldEN1cnJlbnRTbGlkZUluZGV4KCkpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKGJ1dHRvbik7XG4gICAgICAgIH0sIHRoaXMuVElNRU9VVF9JTlRFUlZBTCk7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvbkJ1dHRvbkFycm93TGVmdChlOiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRmlyc3RCdXR0b24oaW5kZXgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wbGF5QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKHRoaXMucGxheUJ1dHRvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5wYXVzZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPbkJ1dHRvbih0aGlzLnBhdXNlQnV0dG9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzU2xpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1dHRvbjogRWxlbWVudFJlZiA9IHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMuZ2V0KHRoaXMuZ2V0Q3VycmVudFNsaWRlSW5kZXgoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c09uQnV0dG9uKGJ1dHRvbik7XG4gICAgICAgICAgICB9LCB0aGlzLlRJTUVPVVRfSU5URVJWQUwpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvYnNlcnZlQnJlYWtwb2ludENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2RrQnJlYWtwb2ludE9ic2VydmVyXG4gICAgICAgICAgICAub2JzZXJ2ZShbXG4gICAgICAgICAgICAgICAgJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICAgICAgICAgICAgICAgJyhtaW4td2lkdGg6IDExNDBweCkgYW5kIChtYXgtd2lkdGg6IDEyNjBweCknLFxuICAgICAgICAgICAgICAgICcobWluLXdpZHRoOiAxMTQwcHgpJyxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVGFibGV0QnJlYWtwb2ludCA9IHJlc3VsdC5icmVha3BvaW50c1snKG1pbi13aWR0aDogNzY4cHgpJ107XG4gICAgICAgICAgICAgICAgdGhpcy5pc0Rlc2t0b3BCcmVha3BvaW50ID0gcmVzdWx0LmJyZWFrcG9pbnRzWycobWluLXdpZHRoOiAxMTQwcHgpIGFuZCAobWF4LXdpZHRoOiAxMjYwcHgpJ107XG4gICAgICAgICAgICAgICAgdGhpcy5pc0xhcmdlRGVza3RvcEJyZWFrcG9pbnQgPSByZXN1bHQuYnJlYWtwb2ludHNbJyhtaW4td2lkdGg6IDExNDBweCknXTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RhYmxldEJyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wUGxheWluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUVsZW1lbnRTaXplQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KS5vYnNlcnZlKHRoaXMuY2Fyb3VzZWxDb250YWluZXJFbGVtZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2ICNjYXJvdXNlbENvbnRhaW5lciBjbGFzcz1cImVjbC1jYXJvdXNlbF9fY29udGFpbmVyXCIgW2NsYXNzLmVjbC1jYXJvdXNlbC1jb250YWluZXItLXBhZGRlZF09XCJpc1BhZGRlZCgpXCI+XG4gICAgPGRpdiAjc2xpZGVzQ29udGFpbmVyXG4gICAgICAgIChrZXl1cCk9XCJvbkZpcnN0Q2Fyb3VzZWxFbGVtZW50UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwiZWNsLWNhcm91c2VsX19zbGlkZXNcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZ2V0Q2Fyb3VzZWxTbGlkZXNXaWR0aCgpXCJcbiAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiZ2V0Q2Fyb3VzZWxTbGlkZXNPZmZzZXQoKVwiXG4gICAgICAgIFtzdHlsZS50cmFuc2l0aW9uLWR1cmF0aW9uLnNdPVwidHJhbnNpdGlvbkR1cmF0aW9uXCJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJvblNsaWRlSG92ZXIoKVwiXG4gICAgICAgIChtb3VzZW91dCk9XCJvblNsaWRlSG92ZXJvdXQoKVwiPlxuICAgICAgICA8ZWNsLWNhcm91c2VsLWl0ZW0gI2ZpcnN0SGlkZGVuSXRlbSAqbmdJZj1cImhhc0NvbnRyb2xzKClcIiBbc3R5bGUud2lkdGguJV09XCJzbGlkZVdpZHRoXCI+PC9lY2wtY2Fyb3VzZWwtaXRlbT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZWNsLWNhcm91c2VsLWl0ZW0gI2xhc3RIaWRkZW5JdGVtICpuZ0lmPVwiaGFzQ29udHJvbHMoKVwiIFtzdHlsZS53aWR0aC4lXT1cInNsaWRlV2lkdGhcIj48L2VjbC1jYXJvdXNlbC1pdGVtPlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cImhhc0NvbnRyb2xzKCkgJiYgaXNMYXJnZURlc2t0b3BCcmVha3BvaW50XCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX3ByZXZcIiAoY2xpY2spPVwib25QcmV2aW91c1NsaWRlQ2xpY2soKVwiPlxuICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJtXCIgdHJhbnNmb3JtPVwicm90YXRlLTI3MFwiIGlzSW52ZXJ0ZWQgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2ljb24tZGVmYXVsdFwiPiA8L2VjbC1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNhcm91c2VsLlBSRVYtU0xJREVTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJoYXNDb250cm9scygpICYmIGlzTGFyZ2VEZXNrdG9wQnJlYWtwb2ludFwiIGNsYXNzPVwiZWNsLWNhcm91c2VsX19uZXh0XCIgKGNsaWNrKT1cIm9uTmV4dFNsaWRlQ2xpY2soKVwiPlxuICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJtXCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCIgaXNJbnZlcnRlZCBjbGFzcz1cImVjbC1jYXJvdXNlbF9faWNvbi1kZWZhdWx0XCI+IDwvZWNsLWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtdS1zci1vbmx5XCI+e3sgJ2VjbC5jYXJvdXNlbC5ORVhULVNMSURFUycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiaGFzQ29udHJvbHMoKVwiIGNsYXNzPVwiZWNsLWNhcm91c2VsX19jb250cm9sc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJlY2wtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2F1dG9wbGF5XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgI3BsYXlCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImVjbC1jYXJvdXNlbF9fcGxheVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiaXNQbGF5aW5nID8gJ25vbmUnIDogJydcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uUGxheUtleWJvYXJkUHJlc3MoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUGxheUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cInBsYXlcIiBzaXplPVwibFwiIGNsYXNzPVwiZWNsLWNhcm91c2VsX19pY29uLWRlZmF1bHRcIiBpc0ludmVydGVkPiA8L2VjbC1pY29uPlxuICAgICAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwicGxheS1maWxsZWRcIiBzaXplPVwibFwiIGNsYXNzPVwiZWNsLWNhcm91c2VsX19pY29uLWFjdGl2ZVwiIGlzSW52ZXJ0ZWQ+IDwvZWNsLWljb24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNhcm91c2VsLkFVVE9QTEFZJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgI3BhdXNlQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX3BhdXNlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJpc1BsYXlpbmcgPyAnJyA6ICdub25lJ1wiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25QbGF5S2V5Ym9hcmRQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25QYXVzZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cInBhdXNlXCIgc2l6ZT1cImxcIiBjbGFzcz1cImVjbC1jYXJvdXNlbF9faWNvbi1kZWZhdWx0XCIgaXNJbnZlcnRlZD4gPC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cInBhdXNlLWZpbGxlZFwiIHNpemU9XCJsXCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2ljb24tYWN0aXZlXCIgaXNJbnZlcnRlZD4gPC9lY2wtaWNvbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY2Fyb3VzZWwuUEFVU0UnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1jYXJvdXNlbF9fbmF2aWdhdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICNjdXJyQnV0dG9uXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cImkgPT09IGdldEN1cnJlbnRTbGlkZUluZGV4KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZWNsLWNhcm91c2VsX19uYXZpZ2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNsaWRlQ29udHJvbENsaWNrKHNsaWRlKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25OYXZCdG5LZXlib2FyZFByZXNzKCRldmVudCwgaSlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNhcm91c2VsLkdPLVRPLVNMSURFJyB8IHRyYW5zbGF0ZSB9fSB7eyBpICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzTGFyZ2VEZXNrdG9wQnJlYWtwb2ludFwiICNwcmV2QnV0dG9uIGNsYXNzPVwiZWNsLWNhcm91c2VsX19wcmV2XCIgKGNsaWNrKT1cIm9uUHJldmlvdXNTbGlkZUNsaWNrKClcIj5cbiAgICAgICAgICAgIDxlY2wtaWNvbiBpY29uPVwiY29ybmVyLWFycm93XCIgc2l6ZT1cIm1cIiB0cmFuc2Zvcm09XCJyb3RhdGUtMjcwXCIgaXNJbnZlcnRlZCBjbGFzcz1cImVjbC1jYXJvdXNlbF9faWNvbi1kZWZhdWx0XCI+IDwvZWNsLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVjbC11LXNyLW9ubHlcIj57eyAnZWNsLmNhcm91c2VsLlBSRVYtU0xJREVTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVjbC1jYXJvdXNlbF9fcGFnaW5hdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX2N1cnJlbnRcIj57eyBnZXRDdXJyZW50U2xpZGVJbmRleCgpICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdlY2wuY29tbW9uLk9GJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX21heFwiPnt7IHNsaWRlcy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhaXNMYXJnZURlc2t0b3BCcmVha3BvaW50XCIgY2xhc3M9XCJlY2wtY2Fyb3VzZWxfX25leHRcIiAoY2xpY2spPVwib25OZXh0U2xpZGVDbGljaygpXCI+XG4gICAgICAgICAgICA8ZWNsLWljb24gaWNvbj1cImNvcm5lci1hcnJvd1wiIHNpemU9XCJtXCIgdHJhbnNmb3JtPVwicm90YXRlLTkwXCIgaXNJbnZlcnRlZCBjbGFzcz1cImVjbC1jYXJvdXNlbF9faWNvbi1kZWZhdWx0XCI+IDwvZWNsLWljb24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWNsLXUtc3Itb25seVwiPnt7ICdlY2wuY2Fyb3VzZWwuTkVYVC1TTElERVMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -9,7 +9,7 @@ export class EclContentItemPictureDirective extends ECLBaseDirective {
9
9
  }
10
10
  get cssClasses() {
11
11
  return [
12
- super.getCssClasses('ecl-content-item__picture'),
12
+ super.getCssClasses('ecl-content-item__picture ecl-picture'),
13
13
  `ecl-content-item__picture--${this.size}`,
14
14
  `ecl-content-item__picture--${this.position}`,
15
15
  ]
@@ -48,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
48
48
  type: HostBinding,
49
49
  args: ['class']
50
50
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWNvbnRlbnQtaXRlbS1pbWFnZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWNvbnRlbnQtaXRlbS9lY2wtY29udGVudC1pdGVtLWltYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3pELE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxnQkFBZ0I7SUFIcEU7O1FBSWEsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQUNmLGFBQVEsR0FBcUIsTUFBTSxDQUFDO0tBWWhEO0lBVkcsSUFDSSxVQUFVO1FBQ1YsT0FBTztZQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUM7WUFDaEQsOEJBQThCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekMsOEJBQThCLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDaEQ7YUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ1QsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztpSUFiUSw4QkFBOEI7cUhBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFIMUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO2lCQUN0Qzs4QkFFWSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTzs7QUFleEIsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGdCQUFnQjtJQUM5RCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdFLENBQUM7aUlBSlEsNEJBQTRCO3FIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtpQkFDcEM7OEJBR08sVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWNsQ29udGVudEl0ZW1QaWN0dXJlXScsXG59KVxuZXhwb3J0IGNsYXNzIEVjbENvbnRlbnRJdGVtUGljdHVyZURpcmVjdGl2ZSBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUge1xuICAgIEBJbnB1dCgpIHNpemUgPSAnbGFyZ2UnO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1jb250ZW50LWl0ZW1fX3BpY3R1cmUnKSxcbiAgICAgICAgICAgIGBlY2wtY29udGVudC1pdGVtX19waWN0dXJlLS0ke3RoaXMuc2l6ZX1gLFxuICAgICAgICAgICAgYGVjbC1jb250ZW50LWl0ZW1fX3BpY3R1cmUtLSR7dGhpcy5wb3NpdGlvbn1gLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWNsQ29udGVudEl0ZW1JbWFnZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xDb250ZW50SXRlbUltYWdlRGlyZWN0aXZlIGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtY29udGVudC1pdGVtX19pbWFnZScpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbn1cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLWNvbnRlbnQtaXRlbS1pbWFnZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLWNvbnRlbnQtaXRlbS9lY2wtY29udGVudC1pdGVtLWltYWdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3pELE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxnQkFBZ0I7SUFIcEU7O1FBSWEsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQUNmLGFBQVEsR0FBcUIsTUFBTSxDQUFDO0tBWWhEO0lBVkcsSUFDSSxVQUFVO1FBQ1YsT0FBTztZQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsdUNBQXVDLENBQUM7WUFDNUQsOEJBQThCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekMsOEJBQThCLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDaEQ7YUFDSSxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ1QsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztpSUFiUSw4QkFBOEI7cUhBQTlCLDhCQUE4Qjs7MkZBQTlCLDhCQUE4QjtrQkFIMUMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO2lCQUN0Qzs4QkFFWSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTzs7QUFleEIsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGdCQUFnQjtJQUM5RCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdFLENBQUM7aUlBSlEsNEJBQTRCO3FIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtpQkFDcEM7OEJBR08sVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWNsQ29udGVudEl0ZW1QaWN0dXJlXScsXG59KVxuZXhwb3J0IGNsYXNzIEVjbENvbnRlbnRJdGVtUGljdHVyZURpcmVjdGl2ZSBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUge1xuICAgIEBJbnB1dCgpIHNpemUgPSAnbGFyZ2UnO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHN1cGVyLmdldENzc0NsYXNzZXMoJ2VjbC1jb250ZW50LWl0ZW1fX3BpY3R1cmUgZWNsLXBpY3R1cmUnKSxcbiAgICAgICAgICAgIGBlY2wtY29udGVudC1pdGVtX19waWN0dXJlLS0ke3RoaXMuc2l6ZX1gLFxuICAgICAgICAgICAgYGVjbC1jb250ZW50LWl0ZW1fX3BpY3R1cmUtLSR7dGhpcy5wb3NpdGlvbn1gLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZWNsQ29udGVudEl0ZW1JbWFnZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xDb250ZW50SXRlbUltYWdlRGlyZWN0aXZlIGV4dGVuZHMgRUNMQmFzZURpcmVjdGl2ZSB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtY29udGVudC1pdGVtX19pbWFnZScpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -18,6 +18,7 @@ export class EclMenuMegaItemComponent extends ECLBaseDirective {
18
18
  this.href = '';
19
19
  this.target = '';
20
20
  this.cmpClass = true;
21
+ this.role = 'listitem';
21
22
  this.menuItemSelect = new EventEmitter();
22
23
  this.menuItemKeydown = new EventEmitter();
23
24
  this.hasChildren = false;
@@ -52,7 +53,7 @@ export class EclMenuMegaItemComponent extends ECLBaseDirective {
52
53
  this.menuItemKeydown.next(new EclMenuItemKeydownEvent(this, evt));
53
54
  }
54
55
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EclMenuMegaItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
55
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclMenuMegaItemComponent, selector: "ecl-menu-mega-item", inputs: { id: "id", label: "label", routerLink: "routerLink", queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", href: "href", target: "target", isCurrent: "isCurrent" }, outputs: { menuItemSelect: "menuItemSelect", menuItemKeydown: "menuItemKeydown" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class.ecl-menu__subitem": "this.cmpClass", "class.ecl-menu__subitem--current": "this.isCurrent" } }, queries: [{ propertyName: "iconComponents", predicate: i0.forwardRef(() => EclIconComponent) }], viewQueries: [{ propertyName: "megaMenuLink", first: true, predicate: ["megaMenuLink"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<a #megaMenuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a #megaMenuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:list-item}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
56
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EclMenuMegaItemComponent, selector: "ecl-menu-mega-item", inputs: { id: "id", label: "label", routerLink: "routerLink", queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", href: "href", target: "target", isCurrent: "isCurrent" }, outputs: { menuItemSelect: "menuItemSelect", menuItemKeydown: "menuItemKeydown" }, host: { listeners: { "click": "onHostClick($event)" }, properties: { "class.ecl-menu__subitem": "this.cmpClass", "attr.role": "this.role", "class.ecl-menu__subitem--current": "this.isCurrent" } }, queries: [{ propertyName: "iconComponents", predicate: i0.forwardRef(() => EclIconComponent) }], viewQueries: [{ propertyName: "megaMenuLink", first: true, predicate: ["megaMenuLink"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<a #megaMenuLink\n *ngIf=\"href\"\n [href]=\"href\"\n [target]=\"target\"\n class=\"ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<a #megaMenuLink\n *ngIf=\"!href\"\n tabindex=\"0\"\n [routerLink]=\"routerLink\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n class=\"ecl-menu__sublink\"\n [class.ecl-menu__sublink--current]=\"isCurrent\"\n (click)=\"onItemClick($event)\"\n (keydown)=\"onKeydown($event)\">\n {{ label }}\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n</a>\n\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n", styles: [":host{display:list-item}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
56
57
  }
57
58
  __decorate([
58
59
  coerceBoolean
@@ -77,6 +78,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
77
78
  }], cmpClass: [{
78
79
  type: HostBinding,
79
80
  args: ['class.ecl-menu__subitem']
81
+ }], role: [{
82
+ type: HostBinding,
83
+ args: ['attr.role']
80
84
  }], isCurrent: [{
81
85
  type: Input
82
86
  }, {
@@ -96,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
96
100
  type: HostListener,
97
101
  args: ['click', ['$event']]
98
102
  }] } });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUtbWVnYS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbWVudS9lY2wtbWVudS1tZWdhL2VjbC1tZW51LW1lZ2EtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUtbWVnYS9lY2wtbWVudS1tZWdhLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUlWLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWE5QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBWDlEOztRQWNJLDhEQUE4RDtRQUNyRCxlQUFVLEdBQW1CLElBQUksQ0FBQztRQUNsQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsd0JBQW1CLEdBQXdCLElBQUksQ0FBQztRQUNoRCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNtQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBTzlDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDNUQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUV4RSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGFBQVEsR0FBdUIsRUFBRSxDQUFDO0tBbUNyQztJQWpDRyxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDaEMsR0FBRyxDQUFDLEtBQUssR0FBRyx3QkFBd0IsQ0FBQztnQkFDekMsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFVO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLEdBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUdELFdBQVcsQ0FBQyxHQUFlO1FBQ3ZCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVTtRQUNoQixJQUFLLEdBQXFCLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsR0FBb0IsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztpSUF4RFEsd0JBQXdCO3FIQUF4Qix3QkFBd0IsMmlCQWFDLGdCQUFnQixtS0M5Q3RELHkwQkE2QkE7O0FEZTZFO0lBQXhFLGFBQWE7MkRBQW9GOzJGQVh6Rix3QkFBd0I7a0JBWHBDLFNBQVM7K0JBQ0ksb0JBQW9COzhCQVdyQixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDa0MsUUFBUTtzQkFBL0MsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBRW1DLFNBQVM7c0JBQWxFLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsa0NBQWtDO2dCQUVsQixjQUFjO3NCQUFsRSxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDeEIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUVmLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkEwQlAsV0FBVztzQkFEVixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBmb3J3YXJkUmVmLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVjbE1lbnVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZWNsLW1lbnUtaXRlbS5tb2RlbCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsTWVudUl0ZW1LZXlkb3duRXZlbnQsIEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQgfSBmcm9tICcuLi9jb21tb24vZWNsLW1lbnUtaXRlbS5ldmVudCc7XG5pbXBvcnQgeyBFY2xJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWNsLWljb24nO1xuaW1wb3J0IHsgUGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdlY2wtbWVudS1tZWdhLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9lY2wtbWVudS1tZWdhLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICBgLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVjbE1lbnVNZWdhSXRlbUNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBFY2xNZW51SXRlbSwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgcm91dGVyTGluazogc3RyaW5nIHwgYW55W10gPSBudWxsO1xuICAgIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiBQYXJhbXMgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBxdWVyeVBhcmFtc0hhbmRsaW5nOiBRdWVyeVBhcmFtc0hhbmRsaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBocmVmID0gJyc7XG4gICAgQElucHV0KCkgdGFyZ2V0ID0gJyc7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lY2wtbWVudV9fc3ViaXRlbScpIGNtcENsYXNzID0gdHJ1ZTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnVfX3N1Yml0ZW0tLWN1cnJlbnQnKSBpc0N1cnJlbnQ6IGJvb2xlYW4gfCBhbnk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsSWNvbkNvbXBvbmVudCkpIGljb25Db21wb25lbnRzOiBRdWVyeUxpc3Q8RWNsSWNvbkNvbXBvbmVudD47XG4gICAgQFZpZXdDaGlsZCgnbWVnYU1lbnVMaW5rJykgbWVnYU1lbnVMaW5rOiBFbGVtZW50UmVmXG5cbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtS2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1LZXlkb3duRXZlbnQ+KCk7XG5cbiAgICBoYXNDaGlsZHJlbiA9IGZhbHNlO1xuICAgIGlzRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgY2hpbGRyZW46IEFycmF5PEVjbE1lbnVJdGVtPiA9IFtdO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pY29uQ29tcG9uZW50cykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pY29uQ29tcG9uZW50cy5mb3JFYWNoKChpY24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWNuLmNsYXNzID0gJ2VjbC1tZW51X19zdWJsaW5rLWljb24nO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1TZWxlY3QubmV4dChuZXcgRWNsTWVudUl0ZW1TZWxlY3RFdmVudCh0aGlzLCBldnQgYXMgTW91c2VFdmVudCkpO1xuXG4gICAgICAgIGlmICghdGhpcy5ocmVmKSB7XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkhvc3RDbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVnYU1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhldnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgfVxufVxuIiwiPGEgICNtZWdhTWVudUxpbmtcbiAgICAqbmdJZj1cImhyZWZcIlxuICAgIFtocmVmXT1cImhyZWZcIlxuICAgIFt0YXJnZXRdPVwidGFyZ2V0XCJcbiAgICBjbGFzcz1cImVjbC1tZW51X19zdWJsaW5rXCJcbiAgICBbY2xhc3MuZWNsLW1lbnVfX3N1YmxpbmstLWN1cnJlbnRdPVwiaXNDdXJyZW50XCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj5cbiAgICB7eyBsYWJlbCB9fVxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2E+XG5cbjxhICAjbWVnYU1lbnVMaW5rXG4gICAgKm5nSWY9XCIhaHJlZlwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX3N1YmxpbmtcIlxuICAgIFtjbGFzcy5lY2wtbWVudV9fc3VibGluay0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiPlxuICAgIHt7IGxhYmVsIH19XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW1lbnUtbWVnYS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbWVudS9lY2wtbWVudS1tZWdhL2VjbC1tZW51LW1lZ2EtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW1lbnUvZWNsLW1lbnUtbWVnYS9lY2wtbWVudS1tZWdhLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFdBQVcsRUFDWCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUlWLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQWE5QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBWDlEOztRQWNJLDhEQUE4RDtRQUNyRCxlQUFVLEdBQW1CLElBQUksQ0FBQztRQUNsQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsd0JBQW1CLEdBQXdCLElBQUksQ0FBQztRQUNoRCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNtQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQzlCLFNBQUksR0FBRyxVQUFVLENBQUM7UUFPbEMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBMEIsQ0FBQztRQUM1RCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBRXhFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsYUFBUSxHQUF1QixFQUFFLENBQUM7S0FtQ3JDO0lBakNHLGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNoQyxHQUFHLENBQUMsS0FBSyxHQUFHLHdCQUF3QixDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVU7UUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsR0FBaUIsQ0FBQyxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBR0QsV0FBVyxDQUFDLEdBQWU7UUFDdkIsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFVO1FBQ2hCLElBQUssR0FBcUIsQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFO1lBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLHVCQUF1QixDQUFDLElBQUksRUFBRSxHQUFvQixDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO2lJQXpEUSx3QkFBd0I7cUhBQXhCLHdCQUF3Qixxa0JBY0MsZ0JBQWdCLG1LQy9DdEQseTBCQTZCQTs7QURnQjZFO0lBQXhFLGFBQWE7MkRBQW9GOzJGQVp6Rix3QkFBd0I7a0JBWHBDLFNBQVM7K0JBQ0ksb0JBQW9COzhCQVdyQixFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDa0MsUUFBUTtzQkFBL0MsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBQ1osSUFBSTtzQkFBN0IsV0FBVzt1QkFBQyxXQUFXO2dCQUVpRCxTQUFTO3NCQUFsRSxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGtDQUFrQztnQkFFbEIsY0FBYztzQkFBbEUsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3hCLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFZixjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBMEJQLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZm9yd2FyZFJlZixcbiAgICBRdWVyeUxpc3QsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFY2xNZW51SXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VjbC1tZW51LWl0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFQ0xCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZWNsLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50LCBFY2xNZW51SXRlbVNlbGVjdEV2ZW50IH0gZnJvbSAnLi4vY29tbW9uL2VjbC1tZW51LWl0ZW0uZXZlbnQnO1xuaW1wb3J0IHsgRWNsSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VjbC1pY29uJztcbmltcG9ydCB7IFBhcmFtcywgUXVlcnlQYXJhbXNIYW5kbGluZyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZWNsLW1lbnUtbWVnYS1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWNsLW1lbnUtbWVnYS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZXM6IFtcbiAgICAgICAgYFxuICAgICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgYCxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFY2xNZW51TWVnYUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFQ0xCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgRWNsTWVudUl0ZW0sIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBJbnB1dCgpIHJvdXRlckxpbms6IHN0cmluZyB8IGFueVtdID0gbnVsbDtcbiAgICBASW5wdXQoKSBxdWVyeVBhcmFtczogUGFyYW1zIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgcXVlcnlQYXJhbXNIYW5kbGluZzogUXVlcnlQYXJhbXNIYW5kbGluZyA9IG51bGw7XG4gICAgQElucHV0KCkgaHJlZiA9ICcnO1xuICAgIEBJbnB1dCgpIHRhcmdldCA9ICcnO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnVfX3N1Yml0ZW0nKSBjbXBDbGFzcyA9IHRydWU7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2xpc3RpdGVtJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBjb2VyY2VCb29sZWFuIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZWNsLW1lbnVfX3N1Yml0ZW0tLWN1cnJlbnQnKSBpc0N1cnJlbnQ6IGJvb2xlYW4gfCBhbnk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRWNsSWNvbkNvbXBvbmVudCkpIGljb25Db21wb25lbnRzOiBRdWVyeUxpc3Q8RWNsSWNvbkNvbXBvbmVudD47XG4gICAgQFZpZXdDaGlsZCgnbWVnYU1lbnVMaW5rJykgbWVnYU1lbnVMaW5rOiBFbGVtZW50UmVmXG5cbiAgICBAT3V0cHV0KCkgbWVudUl0ZW1TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEVjbE1lbnVJdGVtU2VsZWN0RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG1lbnVJdGVtS2V5ZG93biA9IG5ldyBFdmVudEVtaXR0ZXI8RWNsTWVudUl0ZW1LZXlkb3duRXZlbnQ+KCk7XG5cbiAgICBoYXNDaGlsZHJlbiA9IGZhbHNlO1xuICAgIGlzRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgY2hpbGRyZW46IEFycmF5PEVjbE1lbnVJdGVtPiA9IFtdO1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pY29uQ29tcG9uZW50cykge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pY29uQ29tcG9uZW50cy5mb3JFYWNoKChpY24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWNuLmNsYXNzID0gJ2VjbC1tZW51X19zdWJsaW5rLWljb24nO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1TZWxlY3QubmV4dChuZXcgRWNsTWVudUl0ZW1TZWxlY3RFdmVudCh0aGlzLCBldnQgYXMgTW91c2VFdmVudCkpO1xuXG4gICAgICAgIGlmICghdGhpcy5ocmVmKSB7XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkhvc3RDbGljayhldnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubWVnYU1lbnVMaW5rLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5rZXlDb2RlID09PSBFTlRFUikge1xuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhldnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVudUl0ZW1LZXlkb3duLm5leHQobmV3IEVjbE1lbnVJdGVtS2V5ZG93bkV2ZW50KHRoaXMsIGV2dCBhcyBLZXlib2FyZEV2ZW50KSk7XG4gICAgfVxufVxuIiwiPGEgICNtZWdhTWVudUxpbmtcbiAgICAqbmdJZj1cImhyZWZcIlxuICAgIFtocmVmXT1cImhyZWZcIlxuICAgIFt0YXJnZXRdPVwidGFyZ2V0XCJcbiAgICBjbGFzcz1cImVjbC1tZW51X19zdWJsaW5rXCJcbiAgICBbY2xhc3MuZWNsLW1lbnVfX3N1YmxpbmstLWN1cnJlbnRdPVwiaXNDdXJyZW50XCJcbiAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj5cbiAgICB7eyBsYWJlbCB9fVxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2E+XG5cbjxhICAjbWVnYU1lbnVMaW5rXG4gICAgKm5nSWY9XCIhaHJlZlwiXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rXCJcbiAgICBbcXVlcnlQYXJhbXNdPVwicXVlcnlQYXJhbXNcIlxuICAgIFtxdWVyeVBhcmFtc0hhbmRsaW5nXT1cInF1ZXJ5UGFyYW1zSGFuZGxpbmdcIlxuICAgIGNsYXNzPVwiZWNsLW1lbnVfX3N1YmxpbmtcIlxuICAgIFtjbGFzcy5lY2wtbWVudV9fc3VibGluay0tY3VycmVudF09XCJpc0N1cnJlbnRcIlxuICAgIChjbGljayk9XCJvbkl0ZW1DbGljaygkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiPlxuICAgIHt7IGxhYmVsIH19XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvYT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=