ng-inail-common 2.0.34-beta.8 → 2.0.34

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.
@@ -518,10 +518,10 @@ export class TableComponent extends ResponsiveElementComponent {
518
518
  }
519
519
  }
520
520
  TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: NG_INAIL_COMMON_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
521
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TableComponent, selector: "inail-table", inputs: { dataSource: "dataSource", displayedData: "displayedData", doPagination: "doPagination", elementsPerPage: "elementsPerPage", initialSort: "initialSort", paginationState: "paginationState", elementsPerPageOptions: "elementsPerPageOptions", noDataFound: "noDataFound", noDataFoundText: "noDataFoundText", disablePagination: "disablePagination", tallRows: "tallRows", caption: "caption", captionHidden: "captionHidden", showFullListSize: "showFullListSize", fullListSizeText: "fullListSizeText", bgWhite: "bgWhite", description: "description", tableClass: "tableClass", title: "title", titleClass: "titleClass", detailsLink: "detailsLink", selectableRowValues: "selectableRowValues", checkedRows: "checkedRows" }, outputs: { displayedDataChange: "displayedDataChange", pagination: "pagination", detailsClick: "detailsClick", checkedRowsChange: "checkedRowsChange" }, queries: [{ propertyName: "thLabelComponents", predicate: ThLabelComponent, descendants: true }, { propertyName: "trCheckboxComponents", predicate: TrCheckboxComponent, descendants: true }], viewQueries: [{ propertyName: "tablePageSelectorComponent", first: true, predicate: InailTablePageSelectorComponent, descendants: true }, { propertyName: "baseFooter", first: true, predicate: ["baseFooter"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-9 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"], components: [{ type: i1.TablePageLengthSelectorComponent, selector: "inail-table-page-length-selector", inputs: ["tableId", "label", "options", "value"], outputs: ["valueChange"] }, { type: i2.InailTablePageSelectorComponent, selector: "inail-table-page-selector", inputs: ["tableId", "listSize", "pageSize", "currentPage"], outputs: ["select"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
521
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TableComponent, selector: "inail-table", inputs: { dataSource: "dataSource", displayedData: "displayedData", doPagination: "doPagination", elementsPerPage: "elementsPerPage", initialSort: "initialSort", paginationState: "paginationState", elementsPerPageOptions: "elementsPerPageOptions", noDataFound: "noDataFound", noDataFoundText: "noDataFoundText", disablePagination: "disablePagination", tallRows: "tallRows", caption: "caption", captionHidden: "captionHidden", showFullListSize: "showFullListSize", fullListSizeText: "fullListSizeText", bgWhite: "bgWhite", description: "description", tableClass: "tableClass", title: "title", titleClass: "titleClass", detailsLink: "detailsLink", selectableRowValues: "selectableRowValues", checkedRows: "checkedRows" }, outputs: { displayedDataChange: "displayedDataChange", pagination: "pagination", detailsClick: "detailsClick", checkedRowsChange: "checkedRowsChange" }, queries: [{ propertyName: "thLabelComponents", predicate: ThLabelComponent, descendants: true }, { propertyName: "trCheckboxComponents", predicate: TrCheckboxComponent, descendants: true }], viewQueries: [{ propertyName: "tablePageSelectorComponent", first: true, predicate: InailTablePageSelectorComponent, descendants: true }, { propertyName: "baseFooter", first: true, predicate: ["baseFooter"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-12 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"], components: [{ type: i1.TablePageLengthSelectorComponent, selector: "inail-table-page-length-selector", inputs: ["tableId", "label", "options", "value"], outputs: ["valueChange"] }, { type: i2.InailTablePageSelectorComponent, selector: "inail-table-page-selector", inputs: ["tableId", "listSize", "pageSize", "currentPage"], outputs: ["select"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
522
522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TableComponent, decorators: [{
523
523
  type: Component,
524
- args: [{ selector: 'inail-table', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-9 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"] }]
524
+ args: [{ selector: 'inail-table', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-12 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"] }]
525
525
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
526
526
  type: Inject,
527
527
  args: [NG_INAIL_COMMON_CONFIG]
@@ -592,4 +592,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
592
592
  type: ViewChild,
593
593
  args: ['baseFooter']
594
594
  }] } });
595
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5haWwtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQUUsTUFBTSxFQUNwQixLQUFLLEVBSUwsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBYyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFL0YsTUFBTSxvQkFBb0IsR0FBVyxFQUFFLENBQUM7QUFJeEMsTUFBTSxHQUFHLEdBQWtCLEtBQUssQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBa0IsTUFBTSxDQUFDO0FBaUNuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLDBCQUEwQjtJQTJJNUQsWUFBb0IsR0FBc0IsRUFDdEIsUUFBbUIsRUFFbkIsU0FBOEI7UUFDaEQsS0FBSyxDQUFDLEdBQUcs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SU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsaUJBQWlCO3NCQURoQixlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFJdEQsb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFJekQsMEJBQTBCO3NCQUR6QixTQUFTO3VCQUFDLCtCQUErQjtnQkFJMUMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLCBnZXRDb25maWdWYWx1ZX0gZnJvbSBcIi4uLy4uL2Jhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQge1Jlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vcmVzcG9uc2l2ZS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0luYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnR9IGZyb20gXCIuLi9pbmFpbC10YWJsZS1wYWdlLXNlbGVjdG9yL2luYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge1NvcnRpbmdJbmZvLCBUaExhYmVsQ29tcG9uZW50fSBmcm9tIFwiLi4vdGgtbGFiZWwvdGgtbGFiZWwuY29tcG9uZW50XCI7XG5pbXBvcnQge1RyQ2hlY2tib3hDb21wb25lbnR9IGZyb20gXCIuLi90ci1jaGVja2JveC90ci1jaGVja2JveC5jb21wb25lbnRcIjtcbmltcG9ydCB7TkdfSU5BSUxfQ09NTU9OX0NPTkZJRywgTmdJbmFpbENvbW1vbkNvbmZpZ30gZnJvbSBcIi4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWdcIjtcblxuY29uc3QgREVGQVVMVF9UQUJMRV9MRU5HVEg6IG51bWJlciA9IDEwO1xuXG50eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuY29uc3QgQVNDOiBTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG5jb25zdCBERVNDOiBTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7XG5cbiAgc29ydFByb3BlcnR5Pzogc3RyaW5nO1xuICBzb3J0RGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvblN0YXRlIGV4dGVuZHMgU29ydFN0YXRlIHtcblxuICBmdWxsTGlzdFNpemU/OiBudW1iZXI7XG4gIHBhZ2VOdW1iZXI/OiBudW1iZXI7XG4gIHBhZ2VJbmRleD86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUYWJsZUNoYW5nZXMgZXh0ZW5kcyBTaW1wbGVDaGFuZ2VzIHtcblxuICBkYXRhU291cmNlPzogU2ltcGxlQ2hhbmdlLFxuICBwYWdpbmF0aW9uU3RhdGU/OiBTaW1wbGVDaGFuZ2UsXG4gIGluaXRpYWxTb3J0PzogU2ltcGxlQ2hhbmdlLFxuICBkb1BhZ2luYXRpb24/OiBTaW1wbGVDaGFuZ2UsXG4gIG5vRGF0YUZvdW5kPzogU2ltcGxlQ2hhbmdlXG4gIGVsZW1lbnRzUGVyUGFnZT86IFNpbXBsZUNoYW5nZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgUmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcblxuICB0YWJsZUxlbmd0aDogbnVtYmVyO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICBleHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gLS0tIFBhZ2luYXppb25lIElOVEVSTkEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBPYmJsaWdhdG9yaW9cbiAgQElucHV0KClcbiAgZGF0YVNvdXJjZTogYW55W107XG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXllZERhdGE6IGFueVtdO1xuXG4gIEBPdXRwdXQoKVxuICBkaXNwbGF5ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBASW5wdXQoKVxuICBkb1BhZ2luYXRpb246IE9ic2VydmFibGU8UGFnaW5hdGlvblN0YXRlPjtcblxuICBASW5wdXQoKVxuICBlbGVtZW50c1BlclBhZ2U6IG51bWJlciA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uZWxlbWVudHNQZXJQYWdlLCBERUZBVUxUX1RBQkxFX0xFTkdUSCk7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbFNvcnQ6IFNvcnRTdGF0ZTtcblxuICAvLyAtLS0gUGFnaW5hemlvbmUgRVNURVJOQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIE9iYmxpZ2F0b3Jpb1xuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uU3RhdGU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIEBJbnB1dCgpXG4gIGVsZW1lbnRzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5lbGVtZW50c1BlclBhZ2VPcHRpb25zLCBbMTAsIDI1LCA1MCwgMTAwXSk7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gd2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIHdhaXRpbmdUZXh0OiBzdHJpbmcgPSAnUmVjdXBlcm8gaW4gY29yc28uLi4nO1xuXG4gIEBJbnB1dCgpXG4gIG5vRGF0YUZvdW5kOiBib29sZWFuID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIG5vRGF0YUZvdW5kVGV4dDogc3RyaW5nID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5ub0RhdGFGb3VuZFRleHQsICdOZXNzdW4gZWxlbWVudG8gdHJvdmF0bycpO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVQYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHBhZ2luYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25TdGF0ZT4oKTtcblxuICBASW5wdXQoKVxuICB0YWxsUm93czogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8udGFsbFJvd3MsIGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgY2FwdGlvbkhpZGRlbjogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uY2FwdGlvbkhpZGRlbiwgZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dGdWxsTGlzdFNpemU6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LnNob3dGdWxsTGlzdFNpemUsIGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBmdWxsTGlzdFNpemVUZXh0OiBzdHJpbmcgPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LmZ1bGxMaXN0U2l6ZVRleHQsIFwiRWxlbWVudGkgdG90YWxpOlwiKTtcblxuICBASW5wdXQoKVxuICBiZ1doaXRlOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5iZ1doaXRlLCB0cnVlKTtcblxuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRhYmxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRpdGxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkZXRhaWxzTGluazogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVSb3dWYWx1ZXM6IHN0cmluZ1tdO1xuXG4gIEBPdXRwdXQoKVxuICBkZXRhaWxzQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICBjaGVja2VkUm93czogc3RyaW5nW107XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRoTGFiZWxDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUckNoZWNrYm94Q29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICB0ckNoZWNrYm94Q29tcG9uZW50czogUXVlcnlMaXN0PFRyQ2hlY2tib3hDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudClcbiAgdGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ6IEluYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYmFzZUZvb3RlcicpXG4gIGJhc2VGb290ZXI6IEVsZW1lbnRSZWY7XG5cbiAgdmlzdWFsaXp6YUJhc2VGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIG51bWVyb0NvbG9ubmU6IG51bWJlcjtcblxuICAvLyBJbnNpZW1pIGRlbGxlIFN1YnNjcmlwdGlvbiBhZ2xpIGV2ZW50aSBkZWkgVHJDaGVja2JveENvbXBvbmVudFxuICB0cmNiSW5pdFN1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuICB0cmNiQ2xpY2tTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgdHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcblxuICByaWdoZVNlbGV6aW9uYXRlOiBzdHJpbmdbXSA9IFtdO1xuICByaWdoZVNlbGV6aW9uYWJpbGk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0UGFnZVNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy50YWJsZUxlbmd0aDtcbiAgZ2V0TGlzdFNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLmZ1bGxMaXN0U2l6ZSA6IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7XG4gIGdldEN1cnJlbnRQYWdlID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyIDogdGhpcy5jdXJyZW50UGFnZTtcbiAgZ2V0RnVsbExpc3RTaXplID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZT8uZnVsbExpc3RTaXplIDogdGhpcy5kYXRhU291cmNlPy5sZW5ndGg7XG5cbiAgc2hvd05vRGF0YUZvdW5kID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5ub0RhdGFGb3VuZCAhPSB1bmRlZmluZWQgPyB0aGlzLm5vRGF0YUZvdW5kIDogKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlPy5mdWxsTGlzdFNpemUgPT09IDAgOiB0aGlzLmRhdGFTb3VyY2U/Lmxlbmd0aCA9PT0gMCk7XG5cbiAgLy8gT3BlcmF0b3JpIHBlciBnZXN0aW9uZSBzZWxlemlvbmUgcmlnaGVcbiAgaXNDaGVja2VkID0gKHRyY2JWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB0aGlzLnJpZ2hlU2VsZXppb25hdGUuc29tZSh2YWx1ZSA9PiB2YWx1ZSA9PSB0cmNiVmFsdWUpO1xuICBpc0FsbENoZWNrZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5sZW5ndGggPiAwICYmIHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmV2ZXJ5KHRoaXMuaXNDaGVja2VkKTtcbiAgaXNUaENoZWNrYm94ID0gKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpOiBib29sZWFuID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYHRoICMke3RyY2IuaWR9YCkubGVuZ3RoID4gMDtcbiAgaXNTZWxlemlvbmFiaWxlID0gKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLnNvbWUodmFsb3JlU2VsZXppb25hYmlsZSA9PiB2YWxvcmVTZWxlemlvbmFiaWxlID09IHZhbHVlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtdGFibGVdJztcbiAgICBzdXBlci5vdmVycmlkZUNvbmZpZyhsaWJDb25maWc/LnRhYmxlQ29tcG9uZW50KTtcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogVGFibGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIC8vIENvbnRyb2xsbyBzZSBsYSBwYWdpbmF6aW9uZSByaWNoaWVzdGEgZScgaW50ZXJuYSBvIGVzdGVybmFcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmZpcnN0Q2hhbmdlID09PSB0cnVlXG4gICAgICAmJiBjaGFuZ2VzLnBhZ2luYXRpb25TdGF0ZT8uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGl6emF6aW9uZSBwYWdlTnVtYmVyIGUgcGFnZUluZGV4XG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5jaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgodGhpcy5wYWdpbmF0aW9uU3RhdGUpO1xuXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZU51bWJlciA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyID0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleCA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXggPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlIHBlciBsYSBwYWdpbmF6aW9uZSBlc3Rlcm5hIHZpZW5lIHNwZWNpZmljYXRhIHVuYSBwcm9wcmlldGEgZGkgc29ydGluZ1xuICAgIC8vIGF0dGl2byBpbCBjb21wb25lbnRlIHRoTGFiZWwgYXNzb2NpYXRvXG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gU2UgcGVyIGxhIHBhZ2luYXppb25lIGludGVybmEgdmllbmUgc3BlY2lmaWNhdG8gdW4gb3JkaW5hbWVudG8gaW5pemlhbGVcbiAgICAvLyBhdHRpdm8gaWwgY29tcG9uZW50ZSB0aExhYmVsIGFzc29jaWF0b1xuICAgIGlmIChjaGFuZ2VzLmluaXRpYWxTb3J0Py5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY28gc2UgZScgY2FtYmlhdGEgbGEgbGlzdGEgZGVnbGkgZWxlbWVudGkgaW4gaW5wdXQuXG4gICAgLy8gTmVsIGNhc28gaW4gY3VpIHNpIHN0aWEgZWZmZXR0dWFuZG8gdW5hIHBhZ2luYXppb25lIGludGVybmFcbiAgICAvLyBlbWV0dG8gaWwgc290dG9pbnNpZW1lIGluZXJlbnRlIGxhIHByaW1hIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAmJiAhY2hhbmdlcy5kYXRhU291cmNlLmZpcnN0Q2hhbmdlXG4gICAgICAmJiAhdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgIGlmICh0aGlzLnRhYmxlUGFnZVNlbGVjdG9yQ29tcG9uZW50KSB7XG5cbiAgICAgICAgdGhpcy50YWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudC5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICB9XG5cbiAgICAvLyBSaWNoaWVzdGEgZGkgcGFnaW5hemlvbmVcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5kb1BhZ2luYXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIGNoYW5nZXMuZG9QYWdpbmF0aW9uLmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKGluZm86IFBhZ2luYXRpb25TdGF0ZSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5jaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgoaW5mbyk7XG4gICAgICAgICAgdGhpcy5sZW5ndGhPbkNoYW5nZShpbmZvLnBhZ2VTaXplKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZG9Tb3J0aW5nKGluZm8uc29ydFByb3BlcnR5LCBpbmZvLnNvcnREaXJlY3Rpb24pLCAxMDApO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYWdlT25DaGFuZ2UoaW5mby5wYWdlTnVtYmVyKSwgMjAwKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRWxlbWVudGkgcGVyIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZSAhPSB1bmRlZmluZWRcbiAgICAgICYmICFjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZS5maXJzdENoYW5nZVxuICAgICAgJiYgIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICB0aGlzLmxlbmd0aE9uQ2hhbmdlKHRoaXMuZWxlbWVudHNQZXJQYWdlKTtcbiAgICB9XG5cbiAgICAvLyBDYWxjb2xvIGlsIG51bWVybyBkaSBjb2xvbm5lIHZpc2liaWxpXG4gICAgaWYgKGNoYW5nZXMubm9EYXRhRm91bmQ/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoKTtcbiAgICAgIHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaSA9IFsuLi5jaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgLy8gUmlnaGUgc2VsZXppb25hdGUgaW4gaW5wdXRcbiAgICBpZihjaGFuZ2VzLmNoZWNrZWRSb3dzPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gWy4uLmNoYW5nZXMuY2hlY2tlZFJvd3M/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLy8gVmVyaWZpY2EgbGEgY29uZ3J1ZW56YSB0cmEgcGFnYU51bWJlciBlIHBhZ2VJbmRleFxuICAvLyBlIG5lIGFnZ2l1c3RhIGkgdmFsb3JpXG4gIC8vIGRhbmRvIGxhIHByaW9yaXRhIGFsIHBhZ2FOdW1iZXJcbiAgY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIGlmIChzdGF0ZSkge1xuXG4gICAgICBpZiAoc3RhdGUucGFnZU51bWJlciA9PSB1bmRlZmluZWQgJiYgc3RhdGUucGFnZUluZGV4ICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIGlmIChzdGF0ZS5wYWdlSW5kZXggPCAwKSB7XG5cbiAgICAgICAgICBzdGF0ZS5wYWdlSW5kZXggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucGFnZU51bWJlciA9IHN0YXRlLnBhZ2VJbmRleCArIDE7XG5cbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUucGFnZU51bWJlciAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICBpZiAoc3RhdGUucGFnZU51bWJlciA8IDEpIHtcblxuICAgICAgICAgIHN0YXRlLnBhZ2VOdW1iZXIgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWwgcGFnZSBudW1iZXIgaGEgc2VtcHJlIGxhIHByaW9yaXRhIHN1bCBwYWdlIGluZGV4XG4gICAgICAgIHN0YXRlLnBhZ2VJbmRleCA9IHN0YXRlLnBhZ2VOdW1iZXIgLSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMudGFibGVMZW5ndGggPSB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSA6IHRoaXMuZWxlbWVudHNQZXJQYWdlO1xuXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUuaW5mbygnbmdPbkluaXQtLS0nLCB0aGlzLmN1cnJlbnRQYWdlKVxuICAgICAgICB0aGlzLmVtaXRTdWJzZXQodGhpcy5jdXJyZW50UGFnZSB8fCAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuaW5pemlhbGl6emFUYWJlbGxhKHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgIHRoaXMubG9va0F0VGhMYWJlbCh0aGlzLnRoTGFiZWxDb21wb25lbnRzKTtcbiAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudmlzdWFsaXp6YUJhc2VGb290ZXIgPSB0aGlzLmJhc2VGb290ZXI/Lm5hdGl2ZUVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQgPiAwKTtcbiAgICB0aGlzLm51bWVyb0NvbG9ubmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt0aGlzLmlkfSB0aGApLmxlbmd0aDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2VzdGlzY2lUckNoZWNrYm94KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogR2VzdGlvbmUgZGVpIGNoZWNrYm94IHBlciBsYSBzZWxlemlvbmUgZGVsbGUgcmlnaGVcbiAgICovXG4gIHB1YmxpYyBnZXN0aXNjaVRyQ2hlY2tib3goKSB7XG5cbiAgICBpZiAodGhpcy50ckNoZWNrYm94Q29tcG9uZW50cz8ubGVuZ3RoID4gMCkge1xuXG4gICAgICB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZvckVhY2goKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpID0+IHtcblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gaW5pdENvbXBsZXRlXG4gICAgICAgIC8vIEVmZmV0dHVvIGxhIHN1YnNjcmliZSBzZSBub24gbmUgZScgZ2lhIHByZXNlbnRlXG4gICAgICAgIC8vIHVuYSBTdWJzY3JpcHRpb24gcGVyIHF1ZWwgdHJjYlxuICAgICAgICBpZiAodGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICB0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2IuaW5pdENvbXBsZXRlLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIC8vIFNlIGwnaW5zaWVtZSBkaSB0dXR0aSBpIHZhbG9yaSBzZWxlemlvbmFiaWxpXG4gICAgICAgICAgICAvLyBub24gZScgc3RhdG8gcGFzc2F0byBkYWxsJ2VzdGVybm9cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVSb3dWYWx1ZXMgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgICAgLy8gUmljYWxjb2xvIGkgdmFsb3JpIHNlbGV6aW9uYWJpbGlcbiAgICAgICAgICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkgPSB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZpbHRlcih0cmNiID0+ICF0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkubWFwKHRyY2IgPT4gdHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gY2xpY2tcbiAgICAgICAgaWYgKHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2Iub25jbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1RoQ2hlY2tib3godHJjYikpIHtcblxuICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsT25DbGljaygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja09uQ2xpY2sodHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZFJvd3NDaGFuZ2UuZW1pdCh0aGlzLnJpZ2hlU2VsZXppb25hdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2VzdGlvbmUgZXZlbnRvIG9uRGVzdHJveVxuICAgICAgICAvLyBRdWFuZG8gdW4gdGNyYiBlbWV0dGUgbCdldmVudG8gb25EZXN0cm95XG4gICAgICAgIC8vIGVmZmV0dHVvIGwndW5zdWJzY3JpYmUgYSB0dXR0aSBnbGkgZXZlbnRpIGFkIGVzc28gY29sbGVnYXRvXG4gICAgICAgIGlmICh0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdID0gdHJjYi5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgICAgdGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXT8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgLy8gSW4gcXVlc3RvIG1vZG8gZXZpdG8gY2hlIGdsaSBvZ2dldHRpIGNyZXNjYW5vIGluIG1hbmllcmEgaW5jb250cm9sbGF0YVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluZGljbyBhZCB1biB0cmNiIHNlIGUnIHNlbGV6aW9uYXRvLlxuICAgICAgdGhpcy50ckNoZWNrYm94Q29tcG9uZW50cy5mb3JFYWNoKCh0cmNiOiBUckNoZWNrYm94Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgaWYgKHRyY2IpIHtcblxuICAgICAgICAgIGlmICh0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkge1xuXG4gICAgICAgICAgICB0cmNiLnNldENoZWNrZWQodGhpcy5pc0FsbENoZWNrZWQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyY2Iuc2V0Q2hlY2tlZCh0aGlzLmlzQ2hlY2tlZCh0cmNiLnZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sgZGkgdW4gdHJjYlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDYlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja09uQ2xpY2sodmFsdWVDYjogc3RyaW5nKSB7XG5cbiAgICBpZiAodGhpcy5pc0NoZWNrZWQodmFsdWVDYikpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPSB2YWx1ZUNiKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUucHVzaCh2YWx1ZUNiKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FsbE9uQ2xpY2soKSB7XG5cbiAgICBpZiAodGhpcy5pc0FsbENoZWNrZWQoKSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuZmlsdGVyKHZhbHVlID0+ICF0aGlzLmlzU2VsZXppb25hYmlsZSh2YWx1ZSkpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmNvbmNhdCh0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5maWx0ZXIodmFsdWUgPT4gIXRoaXMuaXNDaGVja2VkKHZhbHVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZldHR1YSB2YXJpZSBvcGVyYXppb25pIGRpIGluaXppYWxpenphemlvbmUgZGVsbGEgdGFiZWxsYVxuICAgKi9cbiAgcHVibGljIGluaXppYWxpenphVGFiZWxsYSh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgLy8gSW5pemlhbGl6em8gdHV0dGkgaSB0aCBkZWxsYSB0YWJlbGxhXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaSBtZXR0ZSBpbiBhc2NvbHRvIHN1Z2xpIGV2ZW50aSBlbWVzc2kgZGFpIHRoTGFiZWxDb21wb25lbnRzIGRhdGkgaW4gaW5wdXRcbiAgICogcGVyIHBvdGVyIGVzZWd1aXJlIGxlIG9wcG9ydHVuZSBhemlvbmlcbiAgICpcbiAgICogQHBhcmFtIHRoTGFiZWxDb21wb25lbnRzXG4gICAqL1xuICBwdWJsaWMgbG9va0F0VGhMYWJlbCh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgdGhpcy50aExhYmVsQ29tcG9uZW50cyA9IHRoTGFiZWxDb21wb25lbnRzO1xuXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgaWYgKHRoTGFiZWwpIHtcblxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIGFsIGNsaWNrIGRlbCB0aCBsYWJlbFxuICAgICAgICAgICAgdGhpcy5wdXNoKFxuICAgICAgICAgICAgICB0aExhYmVsLmNsaWNrLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoaW5mbzogU29ydGluZ0luZm8pID0+IHtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0UHJvcGVydHlcbiAgICogQHBhcmFtIHNvcnREaXJlY3Rpb25cbiAgICovXG4gIHB1YmxpYyBkb1NvcnRpbmcoc29ydFByb3BlcnR5OiBzdHJpbmcsIHNvcnREaXJlY3Rpb246IHN0cmluZykge1xuXG4gICAgbGV0IGluZm86IFNvcnRpbmdJbmZvID0ge1xuICAgICAgcHJvcGVydHk6IHNvcnRQcm9wZXJ0eSxcbiAgICAgIGRpcmVjdGlvbjogc29ydERpcmVjdGlvbiA9PSBBU0MgPyBUaExhYmVsQ29tcG9uZW50LkFTQyA6IHNvcnREaXJlY3Rpb24gPT0gREVTQyA/IFRoTGFiZWxDb21wb25lbnQuREVTQyA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGxldCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50ID0gdGhpcy50aExhYmVsQ29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PSBzb3J0UHJvcGVydHkpO1xuXG4gICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmZvXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqL1xuICBwZXJmb3JtU29ydGluZyhpbmZvOiBTb3J0aW5nSW5mbywgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkge1xuXG4gICAgaWYgKHRoTGFiZWwgIT0gdW5kZWZpbmVkICYmIGluZm8gIT0gdW5kZWZpbmVkICYmIGluZm8ucHJvcGVydHkgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGxldCBldmVudG9QYWdpbmF6aW9uZTogUGFnaW5hdGlvblN0YXRlID0ge307XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnNvcnRQcm9wZXJ0eSA9IGluZm8ucHJvcGVydHk7XG4gICAgICBldmVudG9QYWdpbmF6aW9uZS5zb3J0RGlyZWN0aW9uID0gaW5mby5kaXJlY3Rpb24gPT0gVGhMYWJlbENvbXBvbmVudC5BU0MgPyBBU0MgOiBpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LkRFU0MgPyBERVNDIDogdW5kZWZpbmVkO1xuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZU51bWJlciA9IDE7XG5cbiAgICAgIHRoaXMucmVzZXREaXJlY3Rpb25Tb3J0aW5nKHRoTGFiZWwsIHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgICAgZXZlbnRvUGFnaW5hemlvbmUuZnVsbExpc3RTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuZnVsbExpc3RTaXplO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZS5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLm9yZGluYShpbmZvKTtcbiAgICAgICAgdGhpcy5lbWl0U3Vic2V0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVpbXBvc3RhIGFkIHVuc29ydGVkIHR1dHRpIGkgdGggbGFiZWwgYWQgZWNjZXppb25lXG4gICAqIGRpIHF1ZWxsaSBkYXRvIGluIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqIEBwYXJhbSB0aExhYmVsQ29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50Pikge1xuXG4gICAgaWYgKHRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goKGl0ZW06IFRoTGFiZWxDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnByb3BlcnR5ICE9IHRoTGFiZWwucHJvcGVydHkpIHtcblxuICAgICAgICAgIGl0ZW0uc2V0QXNVbnNvcnRlZCgpO1xuICAgICAgICAgIHRoaXMubW9kaWZpY2FUaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9kaWZpY2EgbCdlbGVtZW50byB0aCBjaGUgY29udGllbmUgaWwgVGhMYWJlbENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZmljYVRoKHRoTGFiZWxDb21wb25lbnQ6IFRoTGFiZWxDb21wb25lbnQpIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50ICYmIHRoTGFiZWxDb21wb25lbnQuc29ydGFibGUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IHRoOiBIVE1MRWxlbWVudCA9IHRoTGFiZWxDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgIGlmICh0aCkge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzKHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgdGhpcy5nZXRUaFNvcnRDbGFzcyh0aExhYmVsQ29tcG9uZW50LmRpcmVjdGlvbikpO1xuXG4gICAgICAgIHRoLnNldEF0dHJpYnV0ZSgnYXJpYS1zb3J0JywgdGhpcy5nZXRBcmlhU29ydFZhbHVlKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQpIHtcblxuICAgICAgICAgIHRoLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1zb3J0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU29ydENsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdzb3J0aW5nX2FzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmdfZGVzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFRoU29ydENsYXNzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZ1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcblxuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkFTQzpcbiAgICAgICAgdmFsdWUgPSAnc29ydGluZ19hc2MnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkRFU0M6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmdfZGVzYyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmcnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEFyaWFTb3J0VmFsdWUoZGlyZWN0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmdcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgVGhMYWJlbENvbXBvbmVudC5BU0M6XG4gICAgICAgIHZhbHVlID0gJ2FzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuREVTQzpcbiAgICAgICAgdmFsdWUgPSAnZGVzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ25vbmUnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb3JkaW5hKGluZm86IFNvcnRpbmdJbmZvKSB7XG5cbiAgICBpZiAoaW5mbyAmJiB0aGlzLmRhdGFTb3VyY2UgJiYgaW5mby5wcm9wZXJ0eSkge1xuXG4gICAgICBpbmZvLmRpcmVjdGlvbiA9IGluZm8uZGlyZWN0aW9uICogLTE7XG5cbiAgICAgIGlmIChpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEKSB7XG5cbiAgICAgICAgaW5mby5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQodGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3IoaW5mby5wcm9wZXJ0eSwgaW5mby5kaXJlY3Rpb24pKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdLmNvbmNhdCh0aGlzLmRhdGFTb3VyY2UpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wZXJ0eUNvbXBhcmF0b3IocHJvcGVydHk6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIpIHtcblxuICAgIGxldCBwTGlzdCA9IHByb3BlcnR5ID8gcHJvcGVydHkuc3BsaXQoJy4nKSA6IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIGVzdHJhaVZhbG9yZShlOiBhbnksIHBMaXN0OiBzdHJpbmdbXSk6IGFueSB7XG5cbiAgICAgIGlmIChlICYmIHBMaXN0KSB7XG5cbiAgICAgICAgaWYgKHBMaXN0Lmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgIHJldHVybiBlc3RyYWlWYWxvcmUoZVtwTGlzdFswXV0sIHBMaXN0LnNsaWNlKDEsIHBMaXN0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgcmV0dXJuIGVbcExpc3RbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlMSwgZTIpIHtcblxuICAgICAgcmV0dXJuIChlc3RyYWlWYWxvcmUoZTEsIHBMaXN0KSA+IGVzdHJhaVZhbG9yZShlMiwgcExpc3QpID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogVGhMYWJlbENvbXBvbmVudC5BU0MpICogZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aE9uQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcblxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQgJiYgKCF0aGlzLnBhZ2luYXRpb25TdGF0ZSB8fCB2YWx1ZSAhPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSkpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlTGVuZ3RoICE9IHZhbHVlKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aCA9IHZhbHVlO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZVNpemUgPSB2YWx1ZTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSAxO1xuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICBwYWdlT25DaGFuZ2UocGFnZTogbnVtYmVyKSB7XG5cbiAgICAvLyBjb25zb2xlLndhcm4oJ3BhZ2Ugc2VsZWN0ZWQ6JywgcGFnZSlcblxuICAgIGlmIChwYWdlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZXZlbnRvUGFnaW5hemlvbmU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuICAgICAgICB0aGlzLmVtaXRTdWJzZXQocGFnZSk7XG4gICAgICB9XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSBwYWdlO1xuICAgICAgLy8gdGhpcy5wYWdpbmF0aW9uLmVtaXQoZXZlbnRvUGFnaW5hemlvbmUpO1xuICAgICAgdGhpcy5lbWl0UGFnaW5hdGlvbihldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZW1pdFN1YnNldChwYWdlOiBudW1iZXIpIHtcblxuICAgIGlmIChwYWdlICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZmlyc3RFbGVtZW50SW5kZXggPSB0aGlzLnRhYmxlTGVuZ3RoICogKHBhZ2UgLSAxKTtcblxuICAgICAgbGV0IGxhc3RJbmRleDogbnVtYmVyID0gTnVtYmVyKGZpcnN0RWxlbWVudEluZGV4KSArIE51bWJlcih0aGlzLnRhYmxlTGVuZ3RoKTtcblxuICAgICAgbGV0IGE6IGFueVtdID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKGZpcnN0RWxlbWVudEluZGV4LCBsYXN0SW5kZXgpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YUNoYW5nZS5lbWl0KGEpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRQYWdpbmF0aW9uKHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIHRoaXMuY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlKTtcbiAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChzdGF0ZSk7XG4gIH1cblxuICB2aXN1YWxpenphUGFnaW5hemlvbmUoKTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZVBhZ2luYXRpb25cbiAgICAgICYmICh0aGlzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkIHx8ICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgIT0gdW5kZWZpbmVkICYmIHRoaXMucGFnaW5hdGlvblN0YXRlICE9IHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGl2YSBpbCB0aCBsYWJlbCBpbmVyZW50ZSBsJ29yZGluYW1lbnRvIHNwZWNpZmljYXRvXG4gICAqL1xuICBhdHRpdmFUaExhYmVsT3JkaW5hbWVudG9TcGVjaWZpY2F0bygpIHtcblxuICAgIGlmICh0aGlzLnRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIC8vIFBhZ2luYXppb25lIGVzdGVybmFcbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgICAgICBsZXQgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCA9IHRoaXMudGhMYWJlbENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuc29ydFByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMucGFnaW5hdGlvblN0YXRlLnNvcnREaXJlY3Rpb24pO1xuICAgICAgfVxuICAgICAgLy8gT3JkaW5hbWVudG8gaW5pemlhbGUgcGFnaW5hemlvbmUgaW50ZXJuYVxuICAgICAgZWxzZSBpZiAodGhpcy5pbml0aWFsU29ydCkge1xuXG4gICAgICAgIHRoaXMudGhMYWJlbENvbXBvbmVudHMuZm9yRWFjaCh0aExhYmVsID0+IHtcblxuICAgICAgICAgIHRoTGFiZWwucHJvcGVydHkgPT0gdGhpcy5pbml0aWFsU29ydC5zb3J0UHJvcGVydHlcbiAgICAgICAgICAgID8gdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMuaW5pdGlhbFNvcnQuc29ydERpcmVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNvcnREaXJlY3Rpb24odGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uKSB7XG5cbiAgICBpZiAodGhMYWJlbCkge1xuXG4gICAgICBsZXQgZGlyOiBzdHJpbmcgPSBkaXJlY3Rpb24/LnRvU3RyaW5nKCk/LnRyaW0oKT8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgc3dpdGNoIChkaXIpIHtcblxuICAgICAgICBjYXNlIFwiYXNjXCI6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFwiZGVzY1wiOlxuICAgICAgICAgIHRoTGFiZWwuZGlyZWN0aW9uID0gVGhMYWJlbENvbXBvbmVudC5ERVNDO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEO1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kaWZpY2FUaCh0aExhYmVsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJlbGxhIHRhYmxlLXJlc3BvbnNpdmUgaW5haWwtdGFibGUge3tnZXRSZXNwb25zaXZlQ2xhc3MoKX19IG5vUGFkZGluZ0xlZnQge3tjbGFzc319IG5vUGFkZGluZ1JpZ2h0XCI+XG5cbiAgPGgzICpuZ0lmPVwidGl0bGVcIlxuICAgICAgY2xhc3M9XCJjb2wteHMtOSB0YWJsZS10aXRsZSBwdWxsLWxlZnQgbm9QYWRkaW5nTGVmdCB7e3RpdGxlQ2xhc3N9fVwiXG4gICAgICBbaW5uZXJIVE1MXT1cInRpdGxlXCI+XG4gIDwvaDM+XG5cbiAgPGEgKm5nSWY9XCJkZXRhaWxzTGlua1wiXG4gICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAoY2xpY2spPVwiZGV0YWlsc0NsaWNrLmVtaXQoKVwiXG4gICAgIGNsYXNzPVwiY29sLXhzLTMgY29sLXNtLTIgbGlua0RldHRhZ2xpIHB1bGwtcmlnaHRcIlxuICAgICBbaW5uZXJIVE1MXT1cImRldGFpbHNMaW5rXCI+XG4gIDwvYT5cblxuICA8ZGl2ICpuZ0lmPVwiZGVzY3JpcHRpb25cIlxuICAgICAgIGNsYXNzPVwiY29sLXhzLTEyIGNhcHRpb24gbWFyZ2luQm90dG9tIG5vUGFkZGluZ0xlZnRcIlxuICAgICAgIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb25cIj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cInNob3dGdWxsTGlzdFNpemVcIlxuICAgICAgIGNsYXNzPVwidG90YWwtZWxlbWVudHNcIj5cbiAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZ1bGxMaXN0U2l6ZVRleHRcIj48L3NwYW4+IHt7Z2V0RnVsbExpc3RTaXplKCkgfHwgMH19XG4gIDwvZGl2PlxuXG4gIDxpbmFpbC10YWJsZS1wYWdlLWxlbmd0aC1zZWxlY3RvciAqbmdJZj1cInZpc3VhbGl6emFQYWdpbmF6aW9uZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRQYWdlU2l6ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZUlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImVsZW1lbnRzUGVyUGFnZU9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImxlbmd0aE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvZ09uQ29uc29sZV09XCJsb2dPbkNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZyk9XCJsb2cuZW1pdCgkZXZlbnQpXCI+XG4gIDwvaW5haWwtdGFibGUtcGFnZS1sZW5ndGgtc2VsZWN0b3I+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRydWVcIj5cblxuICAgIDx0YWJsZSBpZD1cInt7aWR9fVwiXG4gICAgICAgICAgIGNsYXNzPVwidGFibGUgZGlzcGxheSBkYXRhVGFibGUge3t0YWJsZUNsYXNzfX1cIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RhYmVsbGEtYmFzZSc6ICF0YWxsUm93cywgJ2JnLXdoaXRlJzogYmdXaGl0ZSwgJ2JnLXRyYW5zcGFyZW50JzogIWJnV2hpdGV9XCI+XG5cbiAgICAgIDxjYXB0aW9uICpuZ0lmPVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NyLW9ubHknOiBjYXB0aW9uSGlkZGVufVwiXG4gICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImNhcHRpb25cIj5cbiAgICAgIDwvY2FwdGlvbj5cblxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidGhlYWRcIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2hvd05vRGF0YUZvdW5kKClcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidGJvZHlcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHRib2R5ICpuZ0lmPVwic2hvd05vRGF0YUZvdW5kKClcIj5cbiAgICAgIDx0ciByb2xlPVwicm93XCI+XG4gICAgICAgIDx0ZCBjbGFzcz1cImNvbnRlbnQtdGV4dFwiXG4gICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDMwcHg7IHRleHQtYWxpZ246IGNlbnRlclwiXG4gICAgICAgICAgICBbY29sU3Bhbl09XCJudW1lcm9Db2xvbm5lXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibm9EYXRhRm91bmRUZXh0XCI+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuXG4gICAgPGRpdiAjYmFzZUZvb3RlclxuICAgICAgICAgY2xhc3M9XCJjb2wteHMtMTIgYmFzZUZvb3RlciBub1BhZGRpbmdMZWZ0XCJcbiAgICAgICAgICpuZ0lmPVwidmlzdWFsaXp6YUJhc2VGb290ZXJcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYXNlRm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cblxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8aW5haWwtdGFibGUtcGFnZS1zZWxlY3RvciAqbmdJZj1cInZpc3VhbGl6emFQYWdpbmF6aW9uZSgpICYmICF0aGlzLnNob3dOb0RhdGFGb3VuZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpc3RTaXplXT1cImdldExpc3RTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiZ2V0UGFnZVNpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJnZXRDdXJyZW50UGFnZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhYmxlSWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0KT1cInBhZ2VPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvZ09uQ29uc29sZV09XCJsb2dPbkNvbnNvbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9nKT1cImxvZy5lbWl0KCRldmVudClcIj5cbiAgPC9pbmFpbC10YWJsZS1wYWdlLXNlbGVjdG9yPlxuXG48L2Rpdj5cbiJdfQ==
595
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5haWwtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQUUsTUFBTSxFQUNwQixLQUFLLEVBSUwsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBYyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFL0YsTUFBTSxvQkFBb0IsR0FBVyxFQUFFLENBQUM7QUFJeEMsTUFBTSxHQUFHLEdBQWtCLEtBQUssQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBa0IsTUFBTSxDQUFDO0FBaUNuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLDBCQUEwQjtJQTJJNUQsWUFBb0IsR0FBc0IsRUFDdEIsUUFBbUIsRUFFbkIsU0FBOEI7UUFDaEQsS0FBSyxDQUFDLEdBQUcs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SU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsaUJBQWlCO3NCQURoQixlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFJdEQsb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFJekQsMEJBQTBCO3NCQUR6QixTQUFTO3VCQUFDLCtCQUErQjtnQkFJMUMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLCBnZXRDb25maWdWYWx1ZX0gZnJvbSBcIi4uLy4uL2Jhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQge1Jlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vcmVzcG9uc2l2ZS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0luYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnR9IGZyb20gXCIuLi9pbmFpbC10YWJsZS1wYWdlLXNlbGVjdG9yL2luYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge1NvcnRpbmdJbmZvLCBUaExhYmVsQ29tcG9uZW50fSBmcm9tIFwiLi4vdGgtbGFiZWwvdGgtbGFiZWwuY29tcG9uZW50XCI7XG5pbXBvcnQge1RyQ2hlY2tib3hDb21wb25lbnR9IGZyb20gXCIuLi90ci1jaGVja2JveC90ci1jaGVja2JveC5jb21wb25lbnRcIjtcbmltcG9ydCB7TkdfSU5BSUxfQ09NTU9OX0NPTkZJRywgTmdJbmFpbENvbW1vbkNvbmZpZ30gZnJvbSBcIi4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWdcIjtcblxuY29uc3QgREVGQVVMVF9UQUJMRV9MRU5HVEg6IG51bWJlciA9IDEwO1xuXG50eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuY29uc3QgQVNDOiBTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG5jb25zdCBERVNDOiBTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7XG5cbiAgc29ydFByb3BlcnR5Pzogc3RyaW5nO1xuICBzb3J0RGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvblN0YXRlIGV4dGVuZHMgU29ydFN0YXRlIHtcblxuICBmdWxsTGlzdFNpemU/OiBudW1iZXI7XG4gIHBhZ2VOdW1iZXI/OiBudW1iZXI7XG4gIHBhZ2VJbmRleD86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUYWJsZUNoYW5nZXMgZXh0ZW5kcyBTaW1wbGVDaGFuZ2VzIHtcblxuICBkYXRhU291cmNlPzogU2ltcGxlQ2hhbmdlLFxuICBwYWdpbmF0aW9uU3RhdGU/OiBTaW1wbGVDaGFuZ2UsXG4gIGluaXRpYWxTb3J0PzogU2ltcGxlQ2hhbmdlLFxuICBkb1BhZ2luYXRpb24/OiBTaW1wbGVDaGFuZ2UsXG4gIG5vRGF0YUZvdW5kPzogU2ltcGxlQ2hhbmdlXG4gIGVsZW1lbnRzUGVyUGFnZT86IFNpbXBsZUNoYW5nZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgUmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcblxuICB0YWJsZUxlbmd0aDogbnVtYmVyO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICBleHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gLS0tIFBhZ2luYXppb25lIElOVEVSTkEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBPYmJsaWdhdG9yaW9cbiAgQElucHV0KClcbiAgZGF0YVNvdXJjZTogYW55W107XG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXllZERhdGE6IGFueVtdO1xuXG4gIEBPdXRwdXQoKVxuICBkaXNwbGF5ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBASW5wdXQoKVxuICBkb1BhZ2luYXRpb246IE9ic2VydmFibGU8UGFnaW5hdGlvblN0YXRlPjtcblxuICBASW5wdXQoKVxuICBlbGVtZW50c1BlclBhZ2U6IG51bWJlciA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uZWxlbWVudHNQZXJQYWdlLCBERUZBVUxUX1RBQkxFX0xFTkdUSCk7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbFNvcnQ6IFNvcnRTdGF0ZTtcblxuICAvLyAtLS0gUGFnaW5hemlvbmUgRVNURVJOQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIE9iYmxpZ2F0b3Jpb1xuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uU3RhdGU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIEBJbnB1dCgpXG4gIGVsZW1lbnRzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5lbGVtZW50c1BlclBhZ2VPcHRpb25zLCBbMTAsIDI1LCA1MCwgMTAwXSk7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gd2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIHdhaXRpbmdUZXh0OiBzdHJpbmcgPSAnUmVjdXBlcm8gaW4gY29yc28uLi4nO1xuXG4gIEBJbnB1dCgpXG4gIG5vRGF0YUZvdW5kOiBib29sZWFuID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIG5vRGF0YUZvdW5kVGV4dDogc3RyaW5nID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5ub0RhdGFGb3VuZFRleHQsICdOZXNzdW4gZWxlbWVudG8gdHJvdmF0bycpO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVQYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHBhZ2luYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25TdGF0ZT4oKTtcblxuICBASW5wdXQoKVxuICB0YWxsUm93czogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8udGFsbFJvd3MsIGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgY2FwdGlvbkhpZGRlbjogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uY2FwdGlvbkhpZGRlbiwgZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dGdWxsTGlzdFNpemU6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LnNob3dGdWxsTGlzdFNpemUsIGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBmdWxsTGlzdFNpemVUZXh0OiBzdHJpbmcgPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LmZ1bGxMaXN0U2l6ZVRleHQsIFwiRWxlbWVudGkgdG90YWxpOlwiKTtcblxuICBASW5wdXQoKVxuICBiZ1doaXRlOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5iZ1doaXRlLCB0cnVlKTtcblxuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRhYmxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRpdGxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkZXRhaWxzTGluazogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVSb3dWYWx1ZXM6IHN0cmluZ1tdO1xuXG4gIEBPdXRwdXQoKVxuICBkZXRhaWxzQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICBjaGVja2VkUm93czogc3RyaW5nW107XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRoTGFiZWxDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUckNoZWNrYm94Q29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICB0ckNoZWNrYm94Q29tcG9uZW50czogUXVlcnlMaXN0PFRyQ2hlY2tib3hDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudClcbiAgdGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ6IEluYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYmFzZUZvb3RlcicpXG4gIGJhc2VGb290ZXI6IEVsZW1lbnRSZWY7XG5cbiAgdmlzdWFsaXp6YUJhc2VGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIG51bWVyb0NvbG9ubmU6IG51bWJlcjtcblxuICAvLyBJbnNpZW1pIGRlbGxlIFN1YnNjcmlwdGlvbiBhZ2xpIGV2ZW50aSBkZWkgVHJDaGVja2JveENvbXBvbmVudFxuICB0cmNiSW5pdFN1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuICB0cmNiQ2xpY2tTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgdHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcblxuICByaWdoZVNlbGV6aW9uYXRlOiBzdHJpbmdbXSA9IFtdO1xuICByaWdoZVNlbGV6aW9uYWJpbGk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0UGFnZVNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy50YWJsZUxlbmd0aDtcbiAgZ2V0TGlzdFNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLmZ1bGxMaXN0U2l6ZSA6IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7XG4gIGdldEN1cnJlbnRQYWdlID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyIDogdGhpcy5jdXJyZW50UGFnZTtcbiAgZ2V0RnVsbExpc3RTaXplID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZT8uZnVsbExpc3RTaXplIDogdGhpcy5kYXRhU291cmNlPy5sZW5ndGg7XG5cbiAgc2hvd05vRGF0YUZvdW5kID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5ub0RhdGFGb3VuZCAhPSB1bmRlZmluZWQgPyB0aGlzLm5vRGF0YUZvdW5kIDogKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlPy5mdWxsTGlzdFNpemUgPT09IDAgOiB0aGlzLmRhdGFTb3VyY2U/Lmxlbmd0aCA9PT0gMCk7XG5cbiAgLy8gT3BlcmF0b3JpIHBlciBnZXN0aW9uZSBzZWxlemlvbmUgcmlnaGVcbiAgaXNDaGVja2VkID0gKHRyY2JWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB0aGlzLnJpZ2hlU2VsZXppb25hdGUuc29tZSh2YWx1ZSA9PiB2YWx1ZSA9PSB0cmNiVmFsdWUpO1xuICBpc0FsbENoZWNrZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5sZW5ndGggPiAwICYmIHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmV2ZXJ5KHRoaXMuaXNDaGVja2VkKTtcbiAgaXNUaENoZWNrYm94ID0gKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpOiBib29sZWFuID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYHRoICMke3RyY2IuaWR9YCkubGVuZ3RoID4gMDtcbiAgaXNTZWxlemlvbmFiaWxlID0gKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLnNvbWUodmFsb3JlU2VsZXppb25hYmlsZSA9PiB2YWxvcmVTZWxlemlvbmFiaWxlID09IHZhbHVlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtdGFibGVdJztcbiAgICBzdXBlci5vdmVycmlkZUNvbmZpZyhsaWJDb25maWc/LnRhYmxlQ29tcG9uZW50KTtcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogVGFibGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIC8vIENvbnRyb2xsbyBzZSBsYSBwYWdpbmF6aW9uZSByaWNoaWVzdGEgZScgaW50ZXJuYSBvIGVzdGVybmFcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmZpcnN0Q2hhbmdlID09PSB0cnVlXG4gICAgICAmJiBjaGFuZ2VzLnBhZ2luYXRpb25TdGF0ZT8uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGl6emF6aW9uZSBwYWdlTnVtYmVyIGUgcGFnZUluZGV4XG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5jaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgodGhpcy5wYWdpbmF0aW9uU3RhdGUpO1xuXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZU51bWJlciA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyID0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleCA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXggPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlIHBlciBsYSBwYWdpbmF6aW9uZSBlc3Rlcm5hIHZpZW5lIHNwZWNpZmljYXRhIHVuYSBwcm9wcmlldGEgZGkgc29ydGluZ1xuICAgIC8vIGF0dGl2byBpbCBjb21wb25lbnRlIHRoTGFiZWwgYXNzb2NpYXRvXG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gU2UgcGVyIGxhIHBhZ2luYXppb25lIGludGVybmEgdmllbmUgc3BlY2lmaWNhdG8gdW4gb3JkaW5hbWVudG8gaW5pemlhbGVcbiAgICAvLyBhdHRpdm8gaWwgY29tcG9uZW50ZSB0aExhYmVsIGFzc29jaWF0b1xuICAgIGlmIChjaGFuZ2VzLmluaXRpYWxTb3J0Py5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY28gc2UgZScgY2FtYmlhdGEgbGEgbGlzdGEgZGVnbGkgZWxlbWVudGkgaW4gaW5wdXQuXG4gICAgLy8gTmVsIGNhc28gaW4gY3VpIHNpIHN0aWEgZWZmZXR0dWFuZG8gdW5hIHBhZ2luYXppb25lIGludGVybmFcbiAgICAvLyBlbWV0dG8gaWwgc290dG9pbnNpZW1lIGluZXJlbnRlIGxhIHByaW1hIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAmJiAhY2hhbmdlcy5kYXRhU291cmNlLmZpcnN0Q2hhbmdlXG4gICAgICAmJiAhdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgIGlmICh0aGlzLnRhYmxlUGFnZVNlbGVjdG9yQ29tcG9uZW50KSB7XG5cbiAgICAgICAgdGhpcy50YWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudC5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICB9XG5cbiAgICAvLyBSaWNoaWVzdGEgZGkgcGFnaW5hemlvbmVcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5kb1BhZ2luYXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIGNoYW5nZXMuZG9QYWdpbmF0aW9uLmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKGluZm86IFBhZ2luYXRpb25TdGF0ZSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5jaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgoaW5mbyk7XG4gICAgICAgICAgdGhpcy5sZW5ndGhPbkNoYW5nZShpbmZvLnBhZ2VTaXplKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZG9Tb3J0aW5nKGluZm8uc29ydFByb3BlcnR5LCBpbmZvLnNvcnREaXJlY3Rpb24pLCAxMDApO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYWdlT25DaGFuZ2UoaW5mby5wYWdlTnVtYmVyKSwgMjAwKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRWxlbWVudGkgcGVyIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZSAhPSB1bmRlZmluZWRcbiAgICAgICYmICFjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZS5maXJzdENoYW5nZVxuICAgICAgJiYgIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICB0aGlzLmxlbmd0aE9uQ2hhbmdlKHRoaXMuZWxlbWVudHNQZXJQYWdlKTtcbiAgICB9XG5cbiAgICAvLyBDYWxjb2xvIGlsIG51bWVybyBkaSBjb2xvbm5lIHZpc2liaWxpXG4gICAgaWYgKGNoYW5nZXMubm9EYXRhRm91bmQ/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoKTtcbiAgICAgIHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaSA9IFsuLi5jaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgLy8gUmlnaGUgc2VsZXppb25hdGUgaW4gaW5wdXRcbiAgICBpZihjaGFuZ2VzLmNoZWNrZWRSb3dzPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gWy4uLmNoYW5nZXMuY2hlY2tlZFJvd3M/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLy8gVmVyaWZpY2EgbGEgY29uZ3J1ZW56YSB0cmEgcGFnYU51bWJlciBlIHBhZ2VJbmRleFxuICAvLyBlIG5lIGFnZ2l1c3RhIGkgdmFsb3JpXG4gIC8vIGRhbmRvIGxhIHByaW9yaXRhIGFsIHBhZ2FOdW1iZXJcbiAgY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIGlmIChzdGF0ZSkge1xuXG4gICAgICBpZiAoc3RhdGUucGFnZU51bWJlciA9PSB1bmRlZmluZWQgJiYgc3RhdGUucGFnZUluZGV4ICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIGlmIChzdGF0ZS5wYWdlSW5kZXggPCAwKSB7XG5cbiAgICAgICAgICBzdGF0ZS5wYWdlSW5kZXggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucGFnZU51bWJlciA9IHN0YXRlLnBhZ2VJbmRleCArIDE7XG5cbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUucGFnZU51bWJlciAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICBpZiAoc3RhdGUucGFnZU51bWJlciA8IDEpIHtcblxuICAgICAgICAgIHN0YXRlLnBhZ2VOdW1iZXIgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWwgcGFnZSBudW1iZXIgaGEgc2VtcHJlIGxhIHByaW9yaXRhIHN1bCBwYWdlIGluZGV4XG4gICAgICAgIHN0YXRlLnBhZ2VJbmRleCA9IHN0YXRlLnBhZ2VOdW1iZXIgLSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMudGFibGVMZW5ndGggPSB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSA6IHRoaXMuZWxlbWVudHNQZXJQYWdlO1xuXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUuaW5mbygnbmdPbkluaXQtLS0nLCB0aGlzLmN1cnJlbnRQYWdlKVxuICAgICAgICB0aGlzLmVtaXRTdWJzZXQodGhpcy5jdXJyZW50UGFnZSB8fCAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuaW5pemlhbGl6emFUYWJlbGxhKHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgIHRoaXMubG9va0F0VGhMYWJlbCh0aGlzLnRoTGFiZWxDb21wb25lbnRzKTtcbiAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudmlzdWFsaXp6YUJhc2VGb290ZXIgPSB0aGlzLmJhc2VGb290ZXI/Lm5hdGl2ZUVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQgPiAwKTtcbiAgICB0aGlzLm51bWVyb0NvbG9ubmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt0aGlzLmlkfSB0aGApLmxlbmd0aDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2VzdGlzY2lUckNoZWNrYm94KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogR2VzdGlvbmUgZGVpIGNoZWNrYm94IHBlciBsYSBzZWxlemlvbmUgZGVsbGUgcmlnaGVcbiAgICovXG4gIHB1YmxpYyBnZXN0aXNjaVRyQ2hlY2tib3goKSB7XG5cbiAgICBpZiAodGhpcy50ckNoZWNrYm94Q29tcG9uZW50cz8ubGVuZ3RoID4gMCkge1xuXG4gICAgICB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZvckVhY2goKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpID0+IHtcblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gaW5pdENvbXBsZXRlXG4gICAgICAgIC8vIEVmZmV0dHVvIGxhIHN1YnNjcmliZSBzZSBub24gbmUgZScgZ2lhIHByZXNlbnRlXG4gICAgICAgIC8vIHVuYSBTdWJzY3JpcHRpb24gcGVyIHF1ZWwgdHJjYlxuICAgICAgICBpZiAodGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICB0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2IuaW5pdENvbXBsZXRlLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIC8vIFNlIGwnaW5zaWVtZSBkaSB0dXR0aSBpIHZhbG9yaSBzZWxlemlvbmFiaWxpXG4gICAgICAgICAgICAvLyBub24gZScgc3RhdG8gcGFzc2F0byBkYWxsJ2VzdGVybm9cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVSb3dWYWx1ZXMgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgICAgLy8gUmljYWxjb2xvIGkgdmFsb3JpIHNlbGV6aW9uYWJpbGlcbiAgICAgICAgICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkgPSB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZpbHRlcih0cmNiID0+ICF0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkubWFwKHRyY2IgPT4gdHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gY2xpY2tcbiAgICAgICAgaWYgKHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2Iub25jbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1RoQ2hlY2tib3godHJjYikpIHtcblxuICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsT25DbGljaygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja09uQ2xpY2sodHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZFJvd3NDaGFuZ2UuZW1pdCh0aGlzLnJpZ2hlU2VsZXppb25hdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2VzdGlvbmUgZXZlbnRvIG9uRGVzdHJveVxuICAgICAgICAvLyBRdWFuZG8gdW4gdGNyYiBlbWV0dGUgbCdldmVudG8gb25EZXN0cm95XG4gICAgICAgIC8vIGVmZmV0dHVvIGwndW5zdWJzY3JpYmUgYSB0dXR0aSBnbGkgZXZlbnRpIGFkIGVzc28gY29sbGVnYXRvXG4gICAgICAgIGlmICh0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdID0gdHJjYi5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgICAgdGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXT8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgLy8gSW4gcXVlc3RvIG1vZG8gZXZpdG8gY2hlIGdsaSBvZ2dldHRpIGNyZXNjYW5vIGluIG1hbmllcmEgaW5jb250cm9sbGF0YVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluZGljbyBhZCB1biB0cmNiIHNlIGUnIHNlbGV6aW9uYXRvLlxuICAgICAgdGhpcy50ckNoZWNrYm94Q29tcG9uZW50cy5mb3JFYWNoKCh0cmNiOiBUckNoZWNrYm94Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgaWYgKHRyY2IpIHtcblxuICAgICAgICAgIGlmICh0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkge1xuXG4gICAgICAgICAgICB0cmNiLnNldENoZWNrZWQodGhpcy5pc0FsbENoZWNrZWQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyY2Iuc2V0Q2hlY2tlZCh0aGlzLmlzQ2hlY2tlZCh0cmNiLnZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sgZGkgdW4gdHJjYlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDYlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja09uQ2xpY2sodmFsdWVDYjogc3RyaW5nKSB7XG5cbiAgICBpZiAodGhpcy5pc0NoZWNrZWQodmFsdWVDYikpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPSB2YWx1ZUNiKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUucHVzaCh2YWx1ZUNiKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FsbE9uQ2xpY2soKSB7XG5cbiAgICBpZiAodGhpcy5pc0FsbENoZWNrZWQoKSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuZmlsdGVyKHZhbHVlID0+ICF0aGlzLmlzU2VsZXppb25hYmlsZSh2YWx1ZSkpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmNvbmNhdCh0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5maWx0ZXIodmFsdWUgPT4gIXRoaXMuaXNDaGVja2VkKHZhbHVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZldHR1YSB2YXJpZSBvcGVyYXppb25pIGRpIGluaXppYWxpenphemlvbmUgZGVsbGEgdGFiZWxsYVxuICAgKi9cbiAgcHVibGljIGluaXppYWxpenphVGFiZWxsYSh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgLy8gSW5pemlhbGl6em8gdHV0dGkgaSB0aCBkZWxsYSB0YWJlbGxhXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaSBtZXR0ZSBpbiBhc2NvbHRvIHN1Z2xpIGV2ZW50aSBlbWVzc2kgZGFpIHRoTGFiZWxDb21wb25lbnRzIGRhdGkgaW4gaW5wdXRcbiAgICogcGVyIHBvdGVyIGVzZWd1aXJlIGxlIG9wcG9ydHVuZSBhemlvbmlcbiAgICpcbiAgICogQHBhcmFtIHRoTGFiZWxDb21wb25lbnRzXG4gICAqL1xuICBwdWJsaWMgbG9va0F0VGhMYWJlbCh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgdGhpcy50aExhYmVsQ29tcG9uZW50cyA9IHRoTGFiZWxDb21wb25lbnRzO1xuXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgaWYgKHRoTGFiZWwpIHtcblxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIGFsIGNsaWNrIGRlbCB0aCBsYWJlbFxuICAgICAgICAgICAgdGhpcy5wdXNoKFxuICAgICAgICAgICAgICB0aExhYmVsLmNsaWNrLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoaW5mbzogU29ydGluZ0luZm8pID0+IHtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0UHJvcGVydHlcbiAgICogQHBhcmFtIHNvcnREaXJlY3Rpb25cbiAgICovXG4gIHB1YmxpYyBkb1NvcnRpbmcoc29ydFByb3BlcnR5OiBzdHJpbmcsIHNvcnREaXJlY3Rpb246IHN0cmluZykge1xuXG4gICAgbGV0IGluZm86IFNvcnRpbmdJbmZvID0ge1xuICAgICAgcHJvcGVydHk6IHNvcnRQcm9wZXJ0eSxcbiAgICAgIGRpcmVjdGlvbjogc29ydERpcmVjdGlvbiA9PSBBU0MgPyBUaExhYmVsQ29tcG9uZW50LkFTQyA6IHNvcnREaXJlY3Rpb24gPT0gREVTQyA/IFRoTGFiZWxDb21wb25lbnQuREVTQyA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGxldCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50ID0gdGhpcy50aExhYmVsQ29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PSBzb3J0UHJvcGVydHkpO1xuXG4gICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmZvXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqL1xuICBwZXJmb3JtU29ydGluZyhpbmZvOiBTb3J0aW5nSW5mbywgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkge1xuXG4gICAgaWYgKHRoTGFiZWwgIT0gdW5kZWZpbmVkICYmIGluZm8gIT0gdW5kZWZpbmVkICYmIGluZm8ucHJvcGVydHkgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGxldCBldmVudG9QYWdpbmF6aW9uZTogUGFnaW5hdGlvblN0YXRlID0ge307XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnNvcnRQcm9wZXJ0eSA9IGluZm8ucHJvcGVydHk7XG4gICAgICBldmVudG9QYWdpbmF6aW9uZS5zb3J0RGlyZWN0aW9uID0gaW5mby5kaXJlY3Rpb24gPT0gVGhMYWJlbENvbXBvbmVudC5BU0MgPyBBU0MgOiBpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LkRFU0MgPyBERVNDIDogdW5kZWZpbmVkO1xuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZU51bWJlciA9IDE7XG5cbiAgICAgIHRoaXMucmVzZXREaXJlY3Rpb25Tb3J0aW5nKHRoTGFiZWwsIHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgICAgZXZlbnRvUGFnaW5hemlvbmUuZnVsbExpc3RTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuZnVsbExpc3RTaXplO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZS5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLm9yZGluYShpbmZvKTtcbiAgICAgICAgdGhpcy5lbWl0U3Vic2V0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVpbXBvc3RhIGFkIHVuc29ydGVkIHR1dHRpIGkgdGggbGFiZWwgYWQgZWNjZXppb25lXG4gICAqIGRpIHF1ZWxsaSBkYXRvIGluIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqIEBwYXJhbSB0aExhYmVsQ29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50Pikge1xuXG4gICAgaWYgKHRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goKGl0ZW06IFRoTGFiZWxDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnByb3BlcnR5ICE9IHRoTGFiZWwucHJvcGVydHkpIHtcblxuICAgICAgICAgIGl0ZW0uc2V0QXNVbnNvcnRlZCgpO1xuICAgICAgICAgIHRoaXMubW9kaWZpY2FUaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9kaWZpY2EgbCdlbGVtZW50byB0aCBjaGUgY29udGllbmUgaWwgVGhMYWJlbENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZmljYVRoKHRoTGFiZWxDb21wb25lbnQ6IFRoTGFiZWxDb21wb25lbnQpIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50ICYmIHRoTGFiZWxDb21wb25lbnQuc29ydGFibGUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IHRoOiBIVE1MRWxlbWVudCA9IHRoTGFiZWxDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgIGlmICh0aCkge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzKHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgdGhpcy5nZXRUaFNvcnRDbGFzcyh0aExhYmVsQ29tcG9uZW50LmRpcmVjdGlvbikpO1xuXG4gICAgICAgIHRoLnNldEF0dHJpYnV0ZSgnYXJpYS1zb3J0JywgdGhpcy5nZXRBcmlhU29ydFZhbHVlKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQpIHtcblxuICAgICAgICAgIHRoLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1zb3J0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU29ydENsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdzb3J0aW5nX2FzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmdfZGVzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFRoU29ydENsYXNzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZ1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcblxuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkFTQzpcbiAgICAgICAgdmFsdWUgPSAnc29ydGluZ19hc2MnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkRFU0M6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmdfZGVzYyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmcnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEFyaWFTb3J0VmFsdWUoZGlyZWN0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmdcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgVGhMYWJlbENvbXBvbmVudC5BU0M6XG4gICAgICAgIHZhbHVlID0gJ2FzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuREVTQzpcbiAgICAgICAgdmFsdWUgPSAnZGVzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ25vbmUnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb3JkaW5hKGluZm86IFNvcnRpbmdJbmZvKSB7XG5cbiAgICBpZiAoaW5mbyAmJiB0aGlzLmRhdGFTb3VyY2UgJiYgaW5mby5wcm9wZXJ0eSkge1xuXG4gICAgICBpbmZvLmRpcmVjdGlvbiA9IGluZm8uZGlyZWN0aW9uICogLTE7XG5cbiAgICAgIGlmIChpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEKSB7XG5cbiAgICAgICAgaW5mby5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQodGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3IoaW5mby5wcm9wZXJ0eSwgaW5mby5kaXJlY3Rpb24pKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdLmNvbmNhdCh0aGlzLmRhdGFTb3VyY2UpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wZXJ0eUNvbXBhcmF0b3IocHJvcGVydHk6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIpIHtcblxuICAgIGxldCBwTGlzdCA9IHByb3BlcnR5ID8gcHJvcGVydHkuc3BsaXQoJy4nKSA6IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIGVzdHJhaVZhbG9yZShlOiBhbnksIHBMaXN0OiBzdHJpbmdbXSk6IGFueSB7XG5cbiAgICAgIGlmIChlICYmIHBMaXN0KSB7XG5cbiAgICAgICAgaWYgKHBMaXN0Lmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgIHJldHVybiBlc3RyYWlWYWxvcmUoZVtwTGlzdFswXV0sIHBMaXN0LnNsaWNlKDEsIHBMaXN0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgcmV0dXJuIGVbcExpc3RbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlMSwgZTIpIHtcblxuICAgICAgcmV0dXJuIChlc3RyYWlWYWxvcmUoZTEsIHBMaXN0KSA+IGVzdHJhaVZhbG9yZShlMiwgcExpc3QpID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogVGhMYWJlbENvbXBvbmVudC5BU0MpICogZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aE9uQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcblxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQgJiYgKCF0aGlzLnBhZ2luYXRpb25TdGF0ZSB8fCB2YWx1ZSAhPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSkpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlTGVuZ3RoICE9IHZhbHVlKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aCA9IHZhbHVlO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZVNpemUgPSB2YWx1ZTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSAxO1xuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICBwYWdlT25DaGFuZ2UocGFnZTogbnVtYmVyKSB7XG5cbiAgICAvLyBjb25zb2xlLndhcm4oJ3BhZ2Ugc2VsZWN0ZWQ6JywgcGFnZSlcblxuICAgIGlmIChwYWdlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZXZlbnRvUGFnaW5hemlvbmU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuICAgICAgICB0aGlzLmVtaXRTdWJzZXQocGFnZSk7XG4gICAgICB9XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSBwYWdlO1xuICAgICAgLy8gdGhpcy5wYWdpbmF0aW9uLmVtaXQoZXZlbnRvUGFnaW5hemlvbmUpO1xuICAgICAgdGhpcy5lbWl0UGFnaW5hdGlvbihldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZW1pdFN1YnNldChwYWdlOiBudW1iZXIpIHtcblxuICAgIGlmIChwYWdlICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZmlyc3RFbGVtZW50SW5kZXggPSB0aGlzLnRhYmxlTGVuZ3RoICogKHBhZ2UgLSAxKTtcblxuICAgICAgbGV0IGxhc3RJbmRleDogbnVtYmVyID0gTnVtYmVyKGZpcnN0RWxlbWVudEluZGV4KSArIE51bWJlcih0aGlzLnRhYmxlTGVuZ3RoKTtcblxuICAgICAgbGV0IGE6IGFueVtdID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKGZpcnN0RWxlbWVudEluZGV4LCBsYXN0SW5kZXgpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YUNoYW5nZS5lbWl0KGEpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRQYWdpbmF0aW9uKHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIHRoaXMuY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlKTtcbiAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChzdGF0ZSk7XG4gIH1cblxuICB2aXN1YWxpenphUGFnaW5hemlvbmUoKTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZVBhZ2luYXRpb25cbiAgICAgICYmICh0aGlzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkIHx8ICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgIT0gdW5kZWZpbmVkICYmIHRoaXMucGFnaW5hdGlvblN0YXRlICE9IHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGl2YSBpbCB0aCBsYWJlbCBpbmVyZW50ZSBsJ29yZGluYW1lbnRvIHNwZWNpZmljYXRvXG4gICAqL1xuICBhdHRpdmFUaExhYmVsT3JkaW5hbWVudG9TcGVjaWZpY2F0bygpIHtcblxuICAgIGlmICh0aGlzLnRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIC8vIFBhZ2luYXppb25lIGVzdGVybmFcbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgICAgICBsZXQgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCA9IHRoaXMudGhMYWJlbENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuc29ydFByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMucGFnaW5hdGlvblN0YXRlLnNvcnREaXJlY3Rpb24pO1xuICAgICAgfVxuICAgICAgLy8gT3JkaW5hbWVudG8gaW5pemlhbGUgcGFnaW5hemlvbmUgaW50ZXJuYVxuICAgICAgZWxzZSBpZiAodGhpcy5pbml0aWFsU29ydCkge1xuXG4gICAgICAgIHRoaXMudGhMYWJlbENvbXBvbmVudHMuZm9yRWFjaCh0aExhYmVsID0+IHtcblxuICAgICAgICAgIHRoTGFiZWwucHJvcGVydHkgPT0gdGhpcy5pbml0aWFsU29ydC5zb3J0UHJvcGVydHlcbiAgICAgICAgICAgID8gdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMuaW5pdGlhbFNvcnQuc29ydERpcmVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNvcnREaXJlY3Rpb24odGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uKSB7XG5cbiAgICBpZiAodGhMYWJlbCkge1xuXG4gICAgICBsZXQgZGlyOiBzdHJpbmcgPSBkaXJlY3Rpb24/LnRvU3RyaW5nKCk/LnRyaW0oKT8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgc3dpdGNoIChkaXIpIHtcblxuICAgICAgICBjYXNlIFwiYXNjXCI6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFwiZGVzY1wiOlxuICAgICAgICAgIHRoTGFiZWwuZGlyZWN0aW9uID0gVGhMYWJlbENvbXBvbmVudC5ERVNDO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEO1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kaWZpY2FUaCh0aExhYmVsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJlbGxhIHRhYmxlLXJlc3BvbnNpdmUgaW5haWwtdGFibGUge3tnZXRSZXNwb25zaXZlQ2xhc3MoKX19IG5vUGFkZGluZ0xlZnQge3tjbGFzc319IG5vUGFkZGluZ1JpZ2h0XCI+XG5cbiAgPGgzICpuZ0lmPVwidGl0bGVcIlxuICAgICAgY2xhc3M9XCJjb2wteHMtMTIgdGFibGUtdGl0bGUgcHVsbC1sZWZ0IG5vUGFkZGluZ0xlZnQge3t0aXRsZUNsYXNzfX1cIlxuICAgICAgW2lubmVySFRNTF09XCJ0aXRsZVwiPlxuICA8L2gzPlxuXG4gIDxhICpuZ0lmPVwiZGV0YWlsc0xpbmtcIlxuICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgKGNsaWNrKT1cImRldGFpbHNDbGljay5lbWl0KClcIlxuICAgICBjbGFzcz1cImNvbC14cy0zIGNvbC1zbS0yIGxpbmtEZXR0YWdsaSBwdWxsLXJpZ2h0XCJcbiAgICAgW2lubmVySFRNTF09XCJkZXRhaWxzTGlua1wiPlxuICA8L2E+XG5cbiAgPGRpdiAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgICBjbGFzcz1cImNvbC14cy0xMiBjYXB0aW9uIG1hcmdpbkJvdHRvbSBub1BhZGRpbmdMZWZ0XCJcbiAgICAgICBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uXCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzaG93RnVsbExpc3RTaXplXCJcbiAgICAgICBjbGFzcz1cInRvdGFsLWVsZW1lbnRzXCI+XG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJmdWxsTGlzdFNpemVUZXh0XCI+PC9zcGFuPiB7e2dldEZ1bGxMaXN0U2l6ZSgpIHx8IDB9fVxuICA8L2Rpdj5cblxuICA8aW5haWwtdGFibGUtcGFnZS1sZW5ndGgtc2VsZWN0b3IgKm5nSWY9XCJ2aXN1YWxpenphUGFnaW5hemlvbmUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0UGFnZVNpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJlbGVtZW50c1BlclBhZ2VPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJsZW5ndGhPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwibG9nLmVtaXQoJGV2ZW50KVwiPlxuICA8L2luYWlsLXRhYmxlLXBhZ2UtbGVuZ3RoLXNlbGVjdG9yPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cnVlXCI+XG5cbiAgICA8dGFibGUgaWQ9XCJ7e2lkfX1cIlxuICAgICAgICAgICBjbGFzcz1cInRhYmxlIGRpc3BsYXkgZGF0YVRhYmxlIHt7dGFibGVDbGFzc319XCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0YWJlbGxhLWJhc2UnOiAhdGFsbFJvd3MsICdiZy13aGl0ZSc6IGJnV2hpdGUsICdiZy10cmFuc3BhcmVudCc6ICFiZ1doaXRlfVwiPlxuXG4gICAgICA8Y2FwdGlvbiAqbmdJZj1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzci1vbmx5JzogY2FwdGlvbkhpZGRlbn1cIlxuICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjYXB0aW9uXCI+XG4gICAgICA8L2NhcHRpb24+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRoZWFkXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dOb0RhdGFGb3VuZCgpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRib2R5XCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0Ym9keSAqbmdJZj1cInNob3dOb0RhdGFGb3VuZCgpXCI+XG4gICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJjb250ZW50LXRleHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAzMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXJcIlxuICAgICAgICAgICAgW2NvbFNwYW5dPVwibnVtZXJvQ29sb25uZVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm5vRGF0YUZvdW5kVGV4dFwiPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICAgIDxkaXYgI2Jhc2VGb290ZXJcbiAgICAgICAgIGNsYXNzPVwiY29sLXhzLTEyIGJhc2VGb290ZXIgbm9QYWRkaW5nTGVmdFwiXG4gICAgICAgICAqbmdJZj1cInZpc3VhbGl6emFCYXNlRm9vdGVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmFzZUZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGluYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IgKm5nSWY9XCJ2aXN1YWxpenphUGFnaW5hemlvbmUoKSAmJiAhdGhpcy5zaG93Tm9EYXRhRm91bmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U2l6ZV09XCJnZXRMaXN0U2l6ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImdldFBhZ2VTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiZ2V0Q3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZUlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJwYWdlT25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZyk9XCJsb2cuZW1pdCgkZXZlbnQpXCI+XG4gIDwvaW5haWwtdGFibGUtcGFnZS1zZWxlY3Rvcj5cblxuPC9kaXY+XG4iXX0=
@@ -43,10 +43,10 @@ export class TrAccordionComponent extends BasicUxElementComponent {
43
43
  }
44
44
  }
45
45
  TrAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TrAccordionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: NG_INAIL_COMMON_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
46
- TrAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TrAccordionComponent, selector: ".inail-tr-accordion", inputs: { expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
46
+ TrAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TrAccordionComponent, selector: "[inail-tr-accordion]", inputs: { expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"], directives: [{ type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
47
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TrAccordionComponent, decorators: [{
48
48
  type: Component,
49
- args: [{ selector: '.inail-tr-accordion', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"] }]
49
+ args: [{ selector: '[inail-tr-accordion]', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"] }]
50
50
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
51
51
  type: Inject,
52
52
  args: [NG_INAIL_COMMON_CONFIG]
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
55
55
  }], expandedChange: [{
56
56
  type: Output
57
57
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHItYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90ci1hY2NvcmRpb24vdHItYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90ci1hY2NvcmRpb24vdHItYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sb0NBQW9DLENBQUM7QUFDL0YsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7QUFTdkYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtJQWMvRCxZQUFvQixLQUFpQixFQUNqQixHQUFzQixFQUV0QixTQUE4QjtRQUNoRCxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSkosVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUV0QixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQWRsRCxhQUFRLEdBQVksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRzFGLG1CQUFjLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFNcEUsZUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO1FBT3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFDeEMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFrQjtRQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUViLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBRTFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7a0hBeERVLG9CQUFvQiw2RUFnQlgsc0JBQXNCO3NHQWhCL0Isb0JBQW9CLHdMQzFCakMsZ1FBUUE7NEZEa0JhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QseUJBQXlCLGlCQUMzQixpQkFBaUIsQ0FBQyxJQUFJOzswQkFrQnhCLE1BQU07MkJBQUMsc0JBQXNCOzRDQWIxQyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYXNpY1V4RWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vY29yZS9iYXNpYy11eC1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge05HX0lOQUlMX0NPTU1PTl9DT05GSUcsIE5nSW5haWxDb21tb25Db25maWd9IGZyb20gJy4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWcnO1xuaW1wb3J0IHtDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLCBnZXRDb25maWdWYWx1ZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJy5pbmFpbC10ci1hY2NvcmRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vdHItYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHItYWNjb3JkaW9uLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRyQWNjb3JkaW9uQ29tcG9uZW50IGV4dGVuZHMgQmFzaWNVeEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBleHBhbmRlZDogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50ckFjY29yZGlvbkNvbXBvbmVudD8uZXhwYW5kZWQsIGZhbHNlKTtcblxuICBAT3V0cHV0KClcbiAgZXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb2xzcGFuOiBudW1iZXI7XG5cbiAgdHJQYXJlbnQ6IEhUTUxFbGVtZW50O1xuXG4gIGlzRXhwYW5kZWQgPSAoKSA9PiB0aGlzLmV4cGFuZGVkID09PSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtdHItYWNjb3JkaW9uXSc7XG4gICAgc3VwZXIub3ZlcnJpZGVDb25maWcobGliQ29uZmlnPy50ckFjY29yZGlvbkNvbXBvbmVudCk7XG4gICAgdGhpcy5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgdG9nZ2xlKGV4cGFuZGVkPzogYm9vbGVhbikge1xuXG4gICAgaWYgKHRoaXMudHJQYXJlbnQpIHtcblxuICAgICAgdGhpcy5leHBhbmRlZCA9IChleHBhbmRlZCAhPSB1bmRlZmluZWQpID8gZXhwYW5kZWQgOiB0aGlzLnRyUGFyZW50LmhpZGRlbjtcbiAgICAgIHRoaXMudHJQYXJlbnQuaGlkZGVuID0gIXRoaXMuZXhwYW5kZWQ7XG4gICAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRlZCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMudHJQYXJlbnQgPSB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5jb2xzcGFuID0gdGhpcy50clBhcmVudD8uY2xvc2VzdCgndGFibGUnKT8ucXVlcnlTZWxlY3RvcigndGhlYWQnKT8ucXVlcnlTZWxlY3RvckFsbCgndHIgdGgnKT8ubGVuZ3RoO1xuXG4gICAgdGhpcy50b2dnbGUodGhpcy5leHBhbmRlZCk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbn1cbiIsIjx0ZCBbY29sU3Bhbl09XCJjb2xzcGFuXCIgY2xhc3M9XCJhY2NvcmRpb25UYWJcIj5cbiAgPGZvcm0gY2xhc3M9XCJyb3cgZm9ybS1ncmV5IHBvcFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9mb3JtPlxuICA8ZGl2IGNsYXNzPVwicm93IGJhc2VGb290ZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L3RkPlxuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHItYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90ci1hY2NvcmRpb24vdHItYWNjb3JkaW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90ci1hY2NvcmRpb24vdHItYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sb0NBQW9DLENBQUM7QUFDL0YsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7QUFTdkYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHVCQUF1QjtJQWMvRCxZQUFvQixLQUFpQixFQUNqQixHQUFzQixFQUV0QixTQUE4QjtRQUNoRCxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBSkosVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUV0QixjQUFTLEdBQVQsU0FBUyxDQUFxQjtRQWRsRCxhQUFRLEdBQVksY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRzFGLG1CQUFjLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFNcEUsZUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDO1FBT3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsc0JBQXNCLENBQUM7UUFDeEMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFrQjtRQUV2QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUViLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBRTFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7a0hBeERVLG9CQUFvQiw2RUFnQlgsc0JBQXNCO3NHQWhCL0Isb0JBQW9CLHlMQzFCakMsZ1FBUUE7NEZEa0JhLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxzQkFBc0IsbUJBR2YseUJBQXlCLGlCQUMzQixpQkFBaUIsQ0FBQyxJQUFJOzswQkFrQnhCLE1BQU07MkJBQUMsc0JBQXNCOzRDQWIxQyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYXNpY1V4RWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vY29yZS9iYXNpYy11eC1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge05HX0lOQUlMX0NPTU1PTl9DT05GSUcsIE5nSW5haWxDb21tb25Db25maWd9IGZyb20gJy4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWcnO1xuaW1wb3J0IHtDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLCBnZXRDb25maWdWYWx1ZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1tpbmFpbC10ci1hY2NvcmRpb25dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyLWFjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyLWFjY29yZGlvbi5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUckFjY29yZGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2ljVXhFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udHJBY2NvcmRpb25Db21wb25lbnQ/LmV4cGFuZGVkLCBmYWxzZSk7XG5cbiAgQE91dHB1dCgpXG4gIGV4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29sc3BhbjogbnVtYmVyO1xuXG4gIHRyUGFyZW50OiBIVE1MRWxlbWVudDtcblxuICBpc0V4cGFuZGVkID0gKCkgPT4gdGhpcy5leHBhbmRlZCA9PT0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIEBJbmplY3QoTkdfSU5BSUxfQ09NTU9OX0NPTkZJRylcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsaWJDb25maWc6IE5nSW5haWxDb21tb25Db25maWcpIHtcbiAgICBzdXBlcihjZHIsIGxpYkNvbmZpZyk7XG4gICAgdGhpcy5sb2dQcmVmaXggPSAnW2luYWlsLXRyLWFjY29yZGlvbl0nO1xuICAgIHN1cGVyLm92ZXJyaWRlQ29uZmlnKGxpYkNvbmZpZz8udHJBY2NvcmRpb25Db21wb25lbnQpO1xuICAgIHRoaXMuZGV0YWNoKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHRvZ2dsZShleHBhbmRlZD86IGJvb2xlYW4pIHtcblxuICAgIGlmICh0aGlzLnRyUGFyZW50KSB7XG5cbiAgICAgIHRoaXMuZXhwYW5kZWQgPSAoZXhwYW5kZWQgIT0gdW5kZWZpbmVkKSA/IGV4cGFuZGVkIDogdGhpcy50clBhcmVudC5oaWRkZW47XG4gICAgICB0aGlzLnRyUGFyZW50LmhpZGRlbiA9ICF0aGlzLmV4cGFuZGVkO1xuICAgICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLnRyUGFyZW50ID0gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuY29sc3BhbiA9IHRoaXMudHJQYXJlbnQ/LmNsb3Nlc3QoJ3RhYmxlJyk/LnF1ZXJ5U2VsZWN0b3IoJ3RoZWFkJyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyIHRoJyk/Lmxlbmd0aDtcblxuICAgIHRoaXMudG9nZ2xlKHRoaXMuZXhwYW5kZWQpO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iLCI8dGQgW2NvbFNwYW5dPVwiY29sc3BhblwiIGNsYXNzPVwiYWNjb3JkaW9uVGFiXCI+XG4gIDxmb3JtIGNsYXNzPVwicm93IGZvcm0tZ3JleSBwb3BcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY29udGVudF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZm9ybT5cbiAgPGRpdiBjbGFzcz1cInJvdyBiYXNlRm9vdGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC90ZD5cbiJdfQ==
@@ -56,10 +56,10 @@ export class PopoverComponent extends BasicUxElementComponent {
56
56
  }
57
57
  }
58
58
  PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NG_INAIL_COMMON_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
59
- PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PopoverComponent, selector: "inail-popover", inputs: { iconClass: "iconClass", buttonTitle: "buttonTitle", header: "header", content: "content" }, viewQueries: [{ propertyName: "openButton", first: true, predicate: ["openButton"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
59
+ PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PopoverComponent, selector: "inail-popover", inputs: { iconClass: "iconClass", buttonTitle: "buttonTitle", header: "header", content: "content" }, viewQueries: [{ propertyName: "openButton", first: true, predicate: ["openButton"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (focusout)=\"onClick(false)\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
60
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PopoverComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ selector: 'inail-popover', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"] }]
62
+ args: [{ selector: 'inail-popover', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (focusout)=\"onClick(false)\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"] }]
63
63
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
64
64
  type: Inject,
65
65
  args: [NG_INAIL_COMMON_CONFIG]
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
78
78
  }], content: [{
79
79
  type: Input
80
80
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdXgvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS91eC9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBb0MsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JLLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sb0NBQW9DLENBQUM7OztBQUUvRiw2QkFBNkI7QUFDN0IsRUFBRTtBQUNGLG9CQUFvQjtBQUNwQixzQkFBc0I7QUFDdEIsMEJBQTBCO0FBQzFCLHdCQUF3QjtBQUN4QixJQUFJO0FBU0osTUFBTSxPQUFPLGdCQUFpQixTQUFRLHVCQUF1QjtJQXdCM0QsWUFBb0IsR0FBc0IsRUFFdEIsU0FBOEI7UUFDaEQsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUhKLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBaEJsRCxXQUFXO1FBQ1gsaUJBQWlCO1FBRWpCLGNBQVMsR0FBVyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0YsZ0JBQVcsR0FBVyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFhN0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUNuQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUVOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFFO1lBRS9CLElBQUksQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7U0FDdkM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBVztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBRWIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDM0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1lBRXZFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzdJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7U0FDNUI7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBRWIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs4R0EzRVUsZ0JBQWdCLG1EQXlCUCxzQkFBc0I7a0dBekIvQixnQkFBZ0Isc1lDcEI3QixzdUJBcUJBOzRGRERhLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHlCQUF5QixpQkFDM0IsaUJBQWlCLENBQUMsSUFBSTs7MEJBMkJ4QixNQUFNOzJCQUFDLHNCQUFzQjs0Q0F0QjFDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUl2QixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUztnQkFRcEIsU0FBUztzQkFEUixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jhc2ljVXhFbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vYmFzaWMtdXgtZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWSwgZ2V0Q29uZmlnVmFsdWV9IGZyb20gXCIuLi8uLi9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtOR19JTkFJTF9DT01NT05fQ09ORklHLCBOZ0luYWlsQ29tbW9uQ29uZmlnfSBmcm9tIFwiLi4vLi4vLi4vLi4vbmctaW5haWwtY29tbW9uLmNvbmZpZ1wiO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIFBvcG92ZXIge1xuLy9cbi8vICAgdGl0bGU/OiBzdHJpbmc7XG4vLyAgIGNvbnRlbnQ/OiBzdHJpbmc7XG4vLyAgIGJ1dHRvblRpdGxlPzogc3RyaW5nO1xuLy8gICBpY29uQ2xhc3M/OiBzdHJpbmc7XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLXBvcG92ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIEJhc2ljVXhFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ29wZW5CdXR0b24nKVxuICBvcGVuQnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgcG9wb3ZlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgc2hvdzogYm9vbGVhbjtcblxuICAvLyBASW5wdXQoKVxuICAvLyBkYXRhOiBQb3BvdmVyO1xuICBASW5wdXQoKVxuICBpY29uQ2xhc3M6IHN0cmluZyA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy5wb3BvdmVyQ29tcG9uZW50Py5pY29uQ2xhc3MsIHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpXG4gIGJ1dHRvblRpdGxlOiBzdHJpbmcgPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8ucG9wb3ZlckNvbXBvbmVudD8uYnV0dG9uVGl0bGUsIHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpXG4gIGhlYWRlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjb250ZW50OiBzdHJpbmc7XG5cbiAgcG9wb3ZlckxlZnQ6IG51bWJlcjtcbiAgcG9wb3ZlclRvcDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtcG9wb3Zlcl0nO1xuICAgIHN1cGVyLm92ZXJyaWRlQ29uZmlnKGxpYkNvbmZpZz8ucG9wb3ZlckNvbXBvbmVudCk7XG4gICAgdGhpcy5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGlmICh0aGlzLmljb25DbGFzcyA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgdGhpcy5pY29uQ2xhc3MgPSAnZmEtcXVlc3Rpb24tY2lyY2xlJztcbiAgICB9XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkNsaWNrKGI/OiBib29sZWFuKSB7XG5cbiAgICB0aGlzLnNob3cgPSBiICE9IHVuZGVmaW5lZCA/IGIgOiAhdGhpcy5zaG93O1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmICh0aGlzLnNob3cpIHtcblxuICAgICAgbGV0IHlCdXR0b24gPSB0aGlzLm9wZW5CdXR0b24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgICBsZXQgeVBvID0gdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgbGV0IGhQbyA9IHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAvIDJcblxuICAgICAgdGhpcy5wb3BvdmVyTGVmdCA9IHRoaXMub3BlbkJ1dHRvbi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgMjY7XG4gICAgICB0aGlzLnBvcG92ZXJUb3AgPSAoeUJ1dHRvbiAtIHlQbyArIGhQbyAtIDkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvcG92ZXJMZWZ0ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5wb3BvdmVyVG9wID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG59XG4iLCI8ZW0gY2xhc3M9XCJmYSBmYS1sZ1wiXG4gICAgW2lkXT1cImlkKyctYnV0dG9uJ1wiXG4gICAgW25nQ2xhc3NdPVwiaWNvbkNsYXNzXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAjb3BlbkJ1dHRvblxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW2F0dHIudGl0bGVdPVwiYnV0dG9uVGl0bGVcIlxuICAgIChrZXl1cC5lbnRlcik9XCJvbkNsaWNrKClcIlxuICAgIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic2hvdyA/IGlkIDogdW5kZWZpbmVkXCI+XG48L2VtPlxuPGRpdiAjcG9wb3ZlclxuICAgICAqbmdJZj1cInNob3dcIlxuICAgICBjbGFzcz1cInBvcG92ZXIgZmFkZSBpbiByaWdodCBpbmFpbC1wb3BvdmVyIHt7Y2xhc3N9fVwiXG4gICAgIFtuZ1N0eWxlXT1cInsnbGVmdC5weCc6IHBvcG92ZXJMZWZ0LCAndG9wLnB4JzogcG9wb3ZlclRvcH1cIlxuICAgICByb2xlPVwidG9vbHRpcFwiXG4gICAgIFtpZF09XCJpZFwiPlxuICA8ZGl2IGNsYXNzPVwiYXJyb3dcIiBzdHlsZT1cInRvcDogNTAlOyBwb3NpdGlvbjogYWJzb2x1dGVcIj48L2Rpdj5cbiAgPGgzICpuZ0lmPVwiaGVhZGVyXCIgY2xhc3M9XCJwb3BvdmVyLXRpdGxlXCIgW2lubmVySFRNTF09XCJoZWFkZXJcIj48L2gzPlxuICA8ZGl2ICpuZ0lmPVwiY29udGVudFwiIGNsYXNzPVwicG9wb3Zlci1jb250ZW50XCIgW2lubmVySFRNTF09XCJjb250ZW50XCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvdXgvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS91eC9wb3BvdmVyL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQyxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBb0MsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JLLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx5QkFBeUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsc0JBQXNCLEVBQXNCLE1BQU0sb0NBQW9DLENBQUM7OztBQUUvRiw2QkFBNkI7QUFDN0IsRUFBRTtBQUNGLG9CQUFvQjtBQUNwQixzQkFBc0I7QUFDdEIsMEJBQTBCO0FBQzFCLHdCQUF3QjtBQUN4QixJQUFJO0FBU0osTUFBTSxPQUFPLGdCQUFpQixTQUFRLHVCQUF1QjtJQXdCM0QsWUFBb0IsR0FBc0IsRUFFdEIsU0FBOEI7UUFDaEQsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUhKLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBaEJsRCxXQUFXO1FBQ1gsaUJBQWlCO1FBRWpCLGNBQVMsR0FBVyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0YsZ0JBQVcsR0FBVyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFhN0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztRQUNuQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUVOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVqQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxFQUFFO1lBRS9CLElBQUksQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUM7U0FDdkM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBVztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFekIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBRWIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDM0UsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDcEUsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1lBRXZFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzdJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7WUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7U0FDNUI7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxlQUFlO1FBRWIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDOzs4R0EzRVUsZ0JBQWdCLG1EQXlCUCxzQkFBc0I7a0dBekIvQixnQkFBZ0Isc1lDcEI3Qix5d0JBc0JBOzRGREZhLGdCQUFnQjtrQkFQNUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHlCQUF5QixpQkFDM0IsaUJBQWlCLENBQUMsSUFBSTs7MEJBMkJ4QixNQUFNOzJCQUFDLHNCQUFzQjs0Q0F0QjFDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUl2QixPQUFPO3NCQUROLFNBQVM7dUJBQUMsU0FBUztnQkFRcEIsU0FBUztzQkFEUixLQUFLO2dCQUdOLFdBQVc7c0JBRFYsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jhc2ljVXhFbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vYmFzaWMtdXgtZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWSwgZ2V0Q29uZmlnVmFsdWV9IGZyb20gXCIuLi8uLi9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtOR19JTkFJTF9DT01NT05fQ09ORklHLCBOZ0luYWlsQ29tbW9uQ29uZmlnfSBmcm9tIFwiLi4vLi4vLi4vLi4vbmctaW5haWwtY29tbW9uLmNvbmZpZ1wiO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIFBvcG92ZXIge1xuLy9cbi8vICAgdGl0bGU/OiBzdHJpbmc7XG4vLyAgIGNvbnRlbnQ/OiBzdHJpbmc7XG4vLyAgIGJ1dHRvblRpdGxlPzogc3RyaW5nO1xuLy8gICBpY29uQ2xhc3M/OiBzdHJpbmc7XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLXBvcG92ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBleHRlbmRzIEJhc2ljVXhFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ29wZW5CdXR0b24nKVxuICBvcGVuQnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdwb3BvdmVyJylcbiAgcG9wb3ZlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgc2hvdzogYm9vbGVhbjtcblxuICAvLyBASW5wdXQoKVxuICAvLyBkYXRhOiBQb3BvdmVyO1xuICBASW5wdXQoKVxuICBpY29uQ2xhc3M6IHN0cmluZyA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy5wb3BvdmVyQ29tcG9uZW50Py5pY29uQ2xhc3MsIHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpXG4gIGJ1dHRvblRpdGxlOiBzdHJpbmcgPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8ucG9wb3ZlckNvbXBvbmVudD8uYnV0dG9uVGl0bGUsIHVuZGVmaW5lZCk7XG4gIEBJbnB1dCgpXG4gIGhlYWRlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjb250ZW50OiBzdHJpbmc7XG5cbiAgcG9wb3ZlckxlZnQ6IG51bWJlcjtcbiAgcG9wb3ZlclRvcDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtcG9wb3Zlcl0nO1xuICAgIHN1cGVyLm92ZXJyaWRlQ29uZmlnKGxpYkNvbmZpZz8ucG9wb3ZlckNvbXBvbmVudCk7XG4gICAgdGhpcy5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcblxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIGlmICh0aGlzLmljb25DbGFzcyA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgdGhpcy5pY29uQ2xhc3MgPSAnZmEtcXVlc3Rpb24tY2lyY2xlJztcbiAgICB9XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkNsaWNrKGI/OiBib29sZWFuKSB7XG5cbiAgICB0aGlzLnNob3cgPSBiICE9IHVuZGVmaW5lZCA/IGIgOiAhdGhpcy5zaG93O1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcblxuICAgIGlmICh0aGlzLnNob3cpIHtcblxuICAgICAgbGV0IHlCdXR0b24gPSB0aGlzLm9wZW5CdXR0b24ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207XG4gICAgICBsZXQgeVBvID0gdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgbGV0IGhQbyA9IHRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAvIDJcblxuICAgICAgdGhpcy5wb3BvdmVyTGVmdCA9IHRoaXMub3BlbkJ1dHRvbi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgLSB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0ICsgMjY7XG4gICAgICB0aGlzLnBvcG92ZXJUb3AgPSAoeUJ1dHRvbiAtIHlQbyArIGhQbyAtIDkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBvcG92ZXJMZWZ0ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5wb3BvdmVyVG9wID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICB9XG59XG4iLCI8ZW0gY2xhc3M9XCJmYSBmYS1sZ1wiXG4gICAgW2lkXT1cImlkKyctYnV0dG9uJ1wiXG4gICAgW25nQ2xhc3NdPVwiaWNvbkNsYXNzXCJcbiAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAjb3BlbkJ1dHRvblxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW2F0dHIudGl0bGVdPVwiYnV0dG9uVGl0bGVcIlxuICAgIChmb2N1c291dCk9XCJvbkNsaWNrKGZhbHNlKVwiXG4gICAgKGtleXVwLmVudGVyKT1cIm9uQ2xpY2soKVwiXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJzaG93ID8gaWQgOiB1bmRlZmluZWRcIj5cbjwvZW0+XG48ZGl2ICNwb3BvdmVyXG4gICAgICpuZ0lmPVwic2hvd1wiXG4gICAgIGNsYXNzPVwicG9wb3ZlciBmYWRlIGluIHJpZ2h0IGluYWlsLXBvcG92ZXIge3tjbGFzc319XCJcbiAgICAgW25nU3R5bGVdPVwieydsZWZ0LnB4JzogcG9wb3ZlckxlZnQsICd0b3AucHgnOiBwb3BvdmVyVG9wfVwiXG4gICAgIHJvbGU9XCJ0b29sdGlwXCJcbiAgICAgW2lkXT1cImlkXCI+XG4gIDxkaXYgY2xhc3M9XCJhcnJvd1wiIHN0eWxlPVwidG9wOiA1MCU7IHBvc2l0aW9uOiBhYnNvbHV0ZVwiPjwvZGl2PlxuICA8aDMgKm5nSWY9XCJoZWFkZXJcIiBjbGFzcz1cInBvcG92ZXItdGl0bGVcIiBbaW5uZXJIVE1MXT1cImhlYWRlclwiPjwvaDM+XG4gIDxkaXYgKm5nSWY9XCJjb250ZW50XCIgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cImNvbnRlbnRcIj48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -2797,10 +2797,10 @@ class PopoverComponent extends BasicUxElementComponent {
2797
2797
  }
2798
2798
  }
2799
2799
  PopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PopoverComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NG_INAIL_COMMON_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
2800
- PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PopoverComponent, selector: "inail-popover", inputs: { iconClass: "iconClass", buttonTitle: "buttonTitle", header: "header", content: "content" }, viewQueries: [{ propertyName: "openButton", first: true, predicate: ["openButton"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2800
+ PopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PopoverComponent, selector: "inail-popover", inputs: { iconClass: "iconClass", buttonTitle: "buttonTitle", header: "header", content: "content" }, viewQueries: [{ propertyName: "openButton", first: true, predicate: ["openButton"], descendants: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (focusout)=\"onClick(false)\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2801
2801
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PopoverComponent, decorators: [{
2802
2802
  type: Component,
2803
- args: [{ selector: 'inail-popover', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"] }]
2803
+ args: [{ selector: 'inail-popover', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<em class=\"fa fa-lg\"\n [id]=\"id+'-button'\"\n [ngClass]=\"iconClass\"\n role=\"button\"\n #openButton\n tabindex=\"0\"\n [attr.title]=\"buttonTitle\"\n (focusout)=\"onClick(false)\"\n (keyup.enter)=\"onClick()\"\n (click)=\"onClick()\"\n [attr.aria-describedby]=\"show ? id : undefined\">\n</em>\n<div #popover\n *ngIf=\"show\"\n class=\"popover fade in right inail-popover {{class}}\"\n [ngStyle]=\"{'left.px': popoverLeft, 'top.px': popoverTop}\"\n role=\"tooltip\"\n [id]=\"id\">\n <div class=\"arrow\" style=\"top: 50%; position: absolute\"></div>\n <h3 *ngIf=\"header\" class=\"popover-title\" [innerHTML]=\"header\"></h3>\n <div *ngIf=\"content\" class=\"popover-content\" [innerHTML]=\"content\"></div>\n</div>\n", styles: [".inail-popover{display:block!important;position:absolute}\n"] }]
2804
2804
  }], ctorParameters: function () {
2805
2805
  return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
2806
2806
  type: Inject,
@@ -5355,10 +5355,10 @@ class TableComponent extends ResponsiveElementComponent {
5355
5355
  }
5356
5356
  }
5357
5357
  TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: NG_INAIL_COMMON_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
5358
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TableComponent, selector: "inail-table", inputs: { dataSource: "dataSource", displayedData: "displayedData", doPagination: "doPagination", elementsPerPage: "elementsPerPage", initialSort: "initialSort", paginationState: "paginationState", elementsPerPageOptions: "elementsPerPageOptions", noDataFound: "noDataFound", noDataFoundText: "noDataFoundText", disablePagination: "disablePagination", tallRows: "tallRows", caption: "caption", captionHidden: "captionHidden", showFullListSize: "showFullListSize", fullListSizeText: "fullListSizeText", bgWhite: "bgWhite", description: "description", tableClass: "tableClass", title: "title", titleClass: "titleClass", detailsLink: "detailsLink", selectableRowValues: "selectableRowValues", checkedRows: "checkedRows" }, outputs: { displayedDataChange: "displayedDataChange", pagination: "pagination", detailsClick: "detailsClick", checkedRowsChange: "checkedRowsChange" }, queries: [{ propertyName: "thLabelComponents", predicate: ThLabelComponent, descendants: true }, { propertyName: "trCheckboxComponents", predicate: TrCheckboxComponent, descendants: true }], viewQueries: [{ propertyName: "tablePageSelectorComponent", first: true, predicate: InailTablePageSelectorComponent, descendants: true }, { propertyName: "baseFooter", first: true, predicate: ["baseFooter"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-9 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"], components: [{ type: TablePageLengthSelectorComponent, selector: "inail-table-page-length-selector", inputs: ["tableId", "label", "options", "value"], outputs: ["valueChange"] }, { type: InailTablePageSelectorComponent, selector: "inail-table-page-selector", inputs: ["tableId", "listSize", "pageSize", "currentPage"], outputs: ["select"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
5358
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TableComponent, selector: "inail-table", inputs: { dataSource: "dataSource", displayedData: "displayedData", doPagination: "doPagination", elementsPerPage: "elementsPerPage", initialSort: "initialSort", paginationState: "paginationState", elementsPerPageOptions: "elementsPerPageOptions", noDataFound: "noDataFound", noDataFoundText: "noDataFoundText", disablePagination: "disablePagination", tallRows: "tallRows", caption: "caption", captionHidden: "captionHidden", showFullListSize: "showFullListSize", fullListSizeText: "fullListSizeText", bgWhite: "bgWhite", description: "description", tableClass: "tableClass", title: "title", titleClass: "titleClass", detailsLink: "detailsLink", selectableRowValues: "selectableRowValues", checkedRows: "checkedRows" }, outputs: { displayedDataChange: "displayedDataChange", pagination: "pagination", detailsClick: "detailsClick", checkedRowsChange: "checkedRowsChange" }, queries: [{ propertyName: "thLabelComponents", predicate: ThLabelComponent, descendants: true }, { propertyName: "trCheckboxComponents", predicate: TrCheckboxComponent, descendants: true }], viewQueries: [{ propertyName: "tablePageSelectorComponent", first: true, predicate: InailTablePageSelectorComponent, descendants: true }, { propertyName: "baseFooter", first: true, predicate: ["baseFooter"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-12 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"], components: [{ type: TablePageLengthSelectorComponent, selector: "inail-table-page-length-selector", inputs: ["tableId", "label", "options", "value"], outputs: ["valueChange"] }, { type: InailTablePageSelectorComponent, selector: "inail-table-page-selector", inputs: ["tableId", "listSize", "pageSize", "currentPage"], outputs: ["select"] }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
5359
5359
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TableComponent, decorators: [{
5360
5360
  type: Component,
5361
- args: [{ selector: 'inail-table', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-9 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"] }]
5361
+ args: [{ selector: 'inail-table', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<div class=\"tabella table-responsive inail-table {{getResponsiveClass()}} noPaddingLeft {{class}} noPaddingRight\">\n\n <h3 *ngIf=\"title\"\n class=\"col-xs-12 table-title pull-left noPaddingLeft {{titleClass}}\"\n [innerHTML]=\"title\">\n </h3>\n\n <a *ngIf=\"detailsLink\"\n href=\"javascript:void(0)\"\n (click)=\"detailsClick.emit()\"\n class=\"col-xs-3 col-sm-2 linkDettagli pull-right\"\n [innerHTML]=\"detailsLink\">\n </a>\n\n <div *ngIf=\"description\"\n class=\"col-xs-12 caption marginBottom noPaddingLeft\"\n [innerHTML]=\"description\">\n </div>\n\n <div *ngIf=\"showFullListSize\"\n class=\"total-elements\">\n <span [innerHTML]=\"fullListSizeText\"></span> {{getFullListSize() || 0}}\n </div>\n\n <inail-table-page-length-selector *ngIf=\"visualizzaPaginazione()\"\n [value]=\"getPageSize()\"\n [tableId]=\"id\"\n [options]=\"elementsPerPageOptions\"\n (valueChange)=\"lengthOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-length-selector>\n\n <ng-container *ngIf=\"true\">\n\n <table id=\"{{id}}\"\n class=\"table display dataTable {{tableClass}}\"\n [ngClass]=\"{'tabella-base': !tallRows, 'bg-white': bgWhite, 'bg-transparent': !bgWhite}\">\n\n <caption *ngIf=\"caption\"\n [ngClass]=\"{'sr-only': captionHidden}\"\n [innerHTML]=\"caption\">\n </caption>\n\n <ng-content select=\"thead\"></ng-content>\n\n <ng-container *ngIf=\"!showNoDataFound()\">\n <ng-content select=\"tbody\"></ng-content>\n </ng-container>\n\n <tbody *ngIf=\"showNoDataFound()\">\n <tr role=\"row\">\n <td class=\"content-text\"\n style=\"padding: 30px; text-align: center\"\n [colSpan]=\"numeroColonne\"\n [innerHTML]=\"noDataFoundText\">\n </td>\n </tr>\n </tbody>\n </table>\n\n <div #baseFooter\n class=\"col-xs-12 baseFooter noPaddingLeft\"\n *ngIf=\"visualizzaBaseFooter\">\n <ng-content select=\"[baseFooter]\"></ng-content>\n </div>\n\n </ng-container>\n\n <inail-table-page-selector *ngIf=\"visualizzaPaginazione() && !this.showNoDataFound()\"\n [listSize]=\"getListSize()\"\n [pageSize]=\"getPageSize()\"\n [currentPage]=\"getCurrentPage()\"\n [tableId]=\"id\"\n (select)=\"pageOnChange($event)\"\n [logOnConsole]=\"logOnConsole\"\n (log)=\"log.emit($event)\">\n </inail-table-page-selector>\n\n</div>\n", styles: [".inail-table a.linkDettagli{color:#106cdb;-webkit-text-decoration-line:none;text-decoration-line:none}.inail-table a.linkDettagli:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.inail-table table.table.dataTable.bg-white>tbody>tr:not(:hover){background-color:#fff}.inail-table table.table.dataTable.bg-transparent>tbody>tr:not(:hover){background-color:transparent}.inail-table .total-elements{float:left;padding-top:12px}\n"] }]
5362
5362
  }], ctorParameters: function () {
5363
5363
  return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
5364
5364
  type: Inject,
@@ -6502,10 +6502,10 @@ class TrAccordionComponent extends BasicUxElementComponent {
6502
6502
  }
6503
6503
  }
6504
6504
  TrAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TrAccordionComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: NG_INAIL_COMMON_CONFIG }], target: i0.ɵɵFactoryTarget.Component });
6505
- TrAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TrAccordionComponent, selector: ".inail-tr-accordion", inputs: { expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
6505
+ TrAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TrAccordionComponent, selector: "[inail-tr-accordion]", inputs: { expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"], directives: [{ type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
6506
6506
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TrAccordionComponent, decorators: [{
6507
6507
  type: Component,
6508
- args: [{ selector: '.inail-tr-accordion', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"] }]
6508
+ args: [{ selector: '[inail-tr-accordion]', changeDetection: CHANGE_DETECTION_STRATEGY, encapsulation: ViewEncapsulation.None, template: "<td [colSpan]=\"colspan\" class=\"accordionTab\">\n <form class=\"row form-grey pop\">\n <ng-content select=\"[content]\"></ng-content>\n </form>\n <div class=\"row baseFooter\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n</td>\n", styles: [".inail-tr-accordion .accordionTab div.form-group label{display:block!important}\n"] }]
6509
6509
  }], ctorParameters: function () {
6510
6510
  return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
6511
6511
  type: Inject,