@bcgov/nr-ngx-component-lib 0.0.33 → 0.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.
@@ -1,3 +1,4 @@
1
+ import { OnChanges, SimpleChanges } from "@angular/core";
1
2
  import { Observable } from "rxjs";
2
3
  import { LoadRowListResult, RowListBase, RowListState } from "../../directives/row-list.base";
3
4
  import * as i0 from "@angular/core";
@@ -24,7 +25,7 @@ export interface AttachmentRowListProvider<R, L = any> {
24
25
  downloadItem(item: R): any;
25
26
  deleteItem(item: R): any;
26
27
  }
27
- export declare class ListAttachmentsComponent extends RowListBase<{}, AttachmentsTableRow> {
28
+ export declare class ListAttachmentsComponent extends RowListBase<{}, AttachmentsTableRow> implements OnChanges {
28
29
  rowListProvider: AttachmentRowListProvider<AttachmentsTableRow>;
29
30
  canDelete: boolean;
30
31
  canDownload: boolean;
@@ -43,14 +44,13 @@ export declare class ListAttachmentsComponent extends RowListBase<{}, Attachment
43
44
  API_TIMESTAMP: string;
44
45
  API_TIMESTAMP_WITH_SEP: string;
45
46
  };
46
- columns: string[];
47
+ columns: any[];
47
48
  sortColumns: {
48
49
  code: string;
49
50
  description: string;
50
51
  }[];
51
- initializeRowList(): void;
52
+ ngOnChanges(changes: SimpleChanges): void;
52
53
  get initialPageState(): RowListState<{}>;
53
- ngAfterViewInit(): void;
54
54
  fetchRowListPage(): Observable<any>;
55
55
  displayRowListPage(res: any): LoadRowListResult<AttachmentsTableRow>;
56
56
  onDownloadClick(item: AttachmentsTableRow): any;
@@ -22,7 +22,7 @@ export class ListAttachmentsComponent extends RowListBase {
22
22
  this.canDownload = true;
23
23
  this.noRowsMessage = "No attachments have been added.";
24
24
  this.DATE_FORMATS = DATE_FORMATS;
25
- this.columns = ['attachmentTypeCode', 'fileName', 'sourceObjectNameCode', 'uploadedBy', 'uploadedTimestamp', 'description'];
25
+ this.columns = [];
26
26
  this.sortColumns = [
27
27
  { code: 'attachmentTypeCode', description: 'Attachment Type' },
28
28
  { code: 'fileName', description: 'File Name' },
@@ -32,8 +32,19 @@ export class ListAttachmentsComponent extends RowListBase {
32
32
  { code: 'description', description: 'Description' }
33
33
  ];
34
34
  }
35
- initializeRowList() {
36
- super.initializeRowList();
35
+ ngOnChanges(changes) {
36
+ if (changes.canDownload || changes.canDelete) {
37
+ this.columns = [
38
+ 'attachmentTypeCode',
39
+ 'fileName',
40
+ 'sourceObjectNameCode',
41
+ 'uploadedBy',
42
+ 'uploadedTimestamp',
43
+ 'description',
44
+ ...(this.canDownload ? ['download'] : []),
45
+ ...(this.canDelete ? ['delete'] : [])
46
+ ];
47
+ }
37
48
  }
38
49
  get initialPageState() {
39
50
  return {
@@ -44,13 +55,6 @@ export class ListAttachmentsComponent extends RowListBase {
44
55
  sortDirection: 'desc',
45
56
  };
46
57
  }
47
- ngAfterViewInit() {
48
- if (this.canDownload)
49
- this.columns.push('download');
50
- if (this.canDelete)
51
- this.columns.push('delete');
52
- super.ngAfterViewInit();
53
- }
54
58
  fetchRowListPage() {
55
59
  if (!this.rowListProvider?.fetchAttachments)
56
60
  throw Error('no provider for ListAttachmentsComponent.rowListProvider.fetchRowListPage');
@@ -77,11 +81,11 @@ export class ListAttachmentsComponent extends RowListBase {
77
81
  return this.rowListProvider.deleteItem(item);
78
82
  }
79
83
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListAttachmentsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListAttachmentsComponent, selector: "nrcl-list-attachments", inputs: { rowListProvider: "rowListProvider", canDelete: "canDelete", canDownload: "canDownload", noRowsMessage: "noRowsMessage" }, usesInheritance: true, ngImport: i0, template: "<nrcl-device-view>\n <ng-template desktop-view>\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-desktop [showRowHover]=\"false\">\n <mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n (matSortChange)=\"onSortChange( $event )\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Attachment Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Name</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileName }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileExtension }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded By</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedBy }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded Date</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedTimestamp }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Description</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <mat-header-cell *matHeaderCellDef>Down&shy;load</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef>Delete</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: columns;\"></mat-row>\n </mat-table>\n </nrcl-row-list-desktop>\n \n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-sorting\n [sortColumn]=\"sortActive\"\n [sortColumnOptions]=\"sortColumns\"\n [sortDirection]=\"sortDirection\"\n (sortChange)=\"onSortChange($event)\">\n </nrcl-row-list-sorting>\n\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width>\n <mat-label>File name</mat-label>\n <div class=\"value\">{{ item.fileName }}</div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer> \n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-fileName{flex-basis:200px;flex-grow:1;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-sourceObjectNameCode{flex-basis:60px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedBy{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedTimestamp{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-description{flex-basis:200px;flex-grow:2;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-download,:host .mat-mdc-table .mat-column-delete{flex-basis:60px;flex-grow:0;flex-shrink:0;justify-content:center}\n"], dependencies: [{ kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i1.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "small", "primary", "secondary", "tertiary", "disabled", "anchor"], outputs: ["click"] }, { kind: "component", type: i6.CellContentComponent, selector: "nrcl-cell-content", inputs: ["tooltip", "content"] }, { kind: "component", type: i7.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i8.RowListDesktopComponent, selector: "nrcl-row-list-desktop", inputs: ["showRowHover"] }, { kind: "component", type: i9.RowListMobileComponent, selector: "nrcl-row-list-mobile" }, { kind: "component", type: i10.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "component", type: i11.RowListSortingComponent, selector: "nrcl-row-list-sorting", inputs: ["sortColumn", "sortColumnOptions", "sortDirection"], outputs: ["sortChange"] }, { kind: "directive", type: i12.DesktopViewDirective, selector: "[desktop-view]" }, { kind: "directive", type: i12.MobileViewDirective, selector: "[mobile-view]" }, { kind: "component", type: i12.DeviceViewComponent, selector: "nrcl-device-view" }, { kind: "pipe", type: i13.PaginatePipe, name: "paginate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ListAttachmentsComponent, selector: "nrcl-list-attachments", inputs: { rowListProvider: "rowListProvider", canDelete: "canDelete", canDownload: "canDownload", noRowsMessage: "noRowsMessage" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<nrcl-device-view>\n <ng-template desktop-view>\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-desktop [showRowHover]=\"false\">\n <mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n (matSortChange)=\"onSortChange( $event )\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Attachment Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Name</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileName }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileExtension }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded By</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedBy }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded Date</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedTimestamp }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Description</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <mat-header-cell *matHeaderCellDef>Down&shy;load</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef>Delete</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: columns;\"></mat-row>\n </mat-table>\n </nrcl-row-list-desktop>\n \n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-sorting\n [sortColumn]=\"sortActive\"\n [sortColumnOptions]=\"sortColumns\"\n [sortDirection]=\"sortDirection\"\n (sortChange)=\"onSortChange($event)\">\n </nrcl-row-list-sorting>\n\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width>\n <mat-label>File name</mat-label>\n <div class=\"value\">{{ item.fileName }}</div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer> \n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-fileName{flex-basis:200px;flex-grow:2;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-sourceObjectNameCode{flex-basis:60px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedBy{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedTimestamp{flex-basis:150px;flex-grow:1;flex-shrink:0}:host .mat-mdc-table .mat-column-description{flex-basis:200px;flex-grow:3;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-download{flex-basis:90px;flex-grow:0;flex-shrink:0;justify-content:center}:host .mat-mdc-table .mat-column-delete{flex-basis:60px;flex-grow:0;flex-shrink:0;justify-content:center}\n"], dependencies: [{ kind: "component", type: i1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i1.MatCardFooter, selector: "mat-card-footer" }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "small", "primary", "secondary", "tertiary", "disabled", "anchor"], outputs: ["click"] }, { kind: "component", type: i6.CellContentComponent, selector: "nrcl-cell-content", inputs: ["tooltip", "content"] }, { kind: "component", type: i7.GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: i8.RowListDesktopComponent, selector: "nrcl-row-list-desktop", inputs: ["showRowHover"] }, { kind: "component", type: i9.RowListMobileComponent, selector: "nrcl-row-list-mobile" }, { kind: "component", type: i10.RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "component", type: i11.RowListSortingComponent, selector: "nrcl-row-list-sorting", inputs: ["sortColumn", "sortColumnOptions", "sortDirection"], outputs: ["sortChange"] }, { kind: "directive", type: i12.DesktopViewDirective, selector: "[desktop-view]" }, { kind: "directive", type: i12.MobileViewDirective, selector: "[mobile-view]" }, { kind: "component", type: i12.DeviceViewComponent, selector: "nrcl-device-view" }, { kind: "pipe", type: i13.PaginatePipe, name: "paginate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
81
85
  }
82
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ListAttachmentsComponent, decorators: [{
83
87
  type: Component,
84
- args: [{ selector: "nrcl-list-attachments", changeDetection: ChangeDetectionStrategy.OnPush, template: "<nrcl-device-view>\n <ng-template desktop-view>\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-desktop [showRowHover]=\"false\">\n <mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n (matSortChange)=\"onSortChange( $event )\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Attachment Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Name</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileName }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileExtension }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded By</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedBy }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded Date</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedTimestamp }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Description</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <mat-header-cell *matHeaderCellDef>Down&shy;load</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef>Delete</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: columns;\"></mat-row>\n </mat-table>\n </nrcl-row-list-desktop>\n \n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-sorting\n [sortColumn]=\"sortActive\"\n [sortColumnOptions]=\"sortColumns\"\n [sortDirection]=\"sortDirection\"\n (sortChange)=\"onSortChange($event)\">\n </nrcl-row-list-sorting>\n\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width>\n <mat-label>File name</mat-label>\n <div class=\"value\">{{ item.fileName }}</div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer> \n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-fileName{flex-basis:200px;flex-grow:1;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-sourceObjectNameCode{flex-basis:60px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedBy{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedTimestamp{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-description{flex-basis:200px;flex-grow:2;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-download,:host .mat-mdc-table .mat-column-delete{flex-basis:60px;flex-grow:0;flex-shrink:0;justify-content:center}\n"] }]
88
+ args: [{ selector: "nrcl-list-attachments", changeDetection: ChangeDetectionStrategy.OnPush, template: "<nrcl-device-view>\n <ng-template desktop-view>\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-desktop [showRowHover]=\"false\">\n <mat-table\n [dataSource]=\"rows | paginate: { \n id: 'desktop-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n (matSortChange)=\"onSortChange( $event )\"\n >\n <ng-container matColumnDef=\"attachmentTypeCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Attachment Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-cell-content tooltip>{{ item.attachmentTypeDescription }}</nrcl-cell-content>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"fileName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Name</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileName }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"sourceObjectNameCode\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>File Type</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.fileExtension }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedBy\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded By</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedBy }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"uploadedTimestamp\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Uploaded Date</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.uploadedTimestamp }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"description\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>Description</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n {{ item.attachmentDescription }}\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"download\">\n <mat-header-cell *matHeaderCellDef>Down&shy;load</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <ng-container matColumnDef=\"delete\">\n <mat-header-cell *matHeaderCellDef>Delete</mat-header-cell>\n <mat-cell *matCellDef=\"let item\">\n <nrcl-button compact\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"columns; sticky: true\"></mat-header-row>\n <mat-row *matRowDef=\"let item; columns: columns;\"></mat-row>\n </mat-table>\n </nrcl-row-list-desktop>\n \n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"desktop-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n\n <ng-template mobile-view>\n <nrcl-gap/>\n\n @if ( rows?.length > 0 ) {\n <nrcl-row-list-sorting\n [sortColumn]=\"sortActive\"\n [sortColumnOptions]=\"sortColumns\"\n [sortDirection]=\"sortDirection\"\n (sortChange)=\"onSortChange($event)\">\n </nrcl-row-list-sorting>\n\n <nrcl-gap/>\n\n <nrcl-row-list-mobile>\n @for ( item of rows | paginate: { \n id: 'mobile-attachments', \n itemsPerPage: pageSize, \n currentPage: pageNumber, \n totalItems: totalRowCount \n }; track item.attachmentId ) {\n <mat-card>\n <mat-card-content>\n <section full-width>\n <mat-label>File name</mat-label>\n <div class=\"value\">{{ item.fileName }}</div>\n </section>\n\n <section>\n <mat-label>Attachment Type</mat-label>\n <div class=\"value\">{{ item.attachmentTypeDescription }}</div>\n </section>\n\n <section>\n <mat-label>File Type</mat-label>\n <div class=\"value\">{{ item.fileExtension }}</div>\n </section>\n\n <section>\n <mat-label>Uploaded By</mat-label>\n <div class=\"value\">{{ item.uploadedBy }}</div>\n </section> \n\n <section>\n <mat-label>Uploaded Date</mat-label>\n <div class=\"value\">{{ item.uploadedTimestamp }}</div>\n </section> \n\n <section full-width>\n <mat-label>Description</mat-label>\n <div class=\"value\">{{ item.attachmentDescription }}</div>\n </section> \n </mat-card-content>\n\n <mat-card-footer>\n @if ( canDownload ) {\n <nrcl-button compact\n label=\"Download\"\n icon=\"download\"\n (click)=\"onDownloadClick( item )\" \n ></nrcl-button>\n }\n\n @if ( canDelete ) {\n <nrcl-button compact\n label=\"Delete\"\n icon=\"delete\"\n (click)=\"onDeleteClick( item )\"\n ></nrcl-button>\n }\n </mat-card-footer> \n </mat-card>\n }\n </nrcl-row-list-mobile>\n\n <nrcl-gap/>\n }\n\n <nrcl-row-list-pagination\n paginationId=\"mobile-attachments\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n [noRowsMessage]=\"noRowsMessage\"\n ></nrcl-row-list-pagination>\n </ng-template>\n</nrcl-device-view>\n", styles: [":host .mat-mdc-table .mat-column-attachmentTypeCode{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-fileName{flex-basis:200px;flex-grow:2;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-sourceObjectNameCode{flex-basis:60px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedBy{flex-basis:150px;flex-grow:0;flex-shrink:0}:host .mat-mdc-table .mat-column-uploadedTimestamp{flex-basis:150px;flex-grow:1;flex-shrink:0}:host .mat-mdc-table .mat-column-description{flex-basis:200px;flex-grow:3;flex-shrink:0;word-break:break-word}:host .mat-mdc-table .mat-column-download{flex-basis:90px;flex-grow:0;flex-shrink:0;justify-content:center}:host .mat-mdc-table .mat-column-delete{flex-basis:60px;flex-grow:0;flex-shrink:0;justify-content:center}\n"] }]
85
89
  }], propDecorators: { rowListProvider: [{
86
90
  type: Input
87
91
  }], canDelete: [{
@@ -91,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
91
95
  }], noRowsMessage: [{
92
96
  type: Input
93
97
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9saXN0LWF0dGFjaG1lbnRzL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1hdHRhY2htZW50cy9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBcUIsV0FBVyxFQUFnQixNQUFNLGdDQUFnQyxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBa0NyRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBbUM7SUFOakY7O1FBUWEsY0FBUyxHQUFHLElBQUksQ0FBQTtRQUNoQixnQkFBVyxHQUFHLElBQUksQ0FBQTtRQUNsQixrQkFBYSxHQUFHLGlDQUFpQyxDQUFBO1FBRTFELGlCQUFZLEdBQUcsWUFBWSxDQUFBO1FBQzNCLFlBQU8sR0FBRyxDQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxDQUFFLENBQUE7UUFDeEgsZ0JBQVcsR0FBRztZQUNWLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFJLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtZQUNoRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQWMsV0FBVyxFQUFFLFdBQVcsRUFBRTtZQUMxRCxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFO1lBQzFELEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBWSxXQUFXLEVBQUUsYUFBYSxFQUFFO1lBQzVELEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFLLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDOUQsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFXLFdBQVcsRUFBRSxhQUFhLEVBQUU7U0FDL0QsQ0FBQTtLQXNESjtJQXBERyxpQkFBaUI7UUFDYixLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsYUFBYSxFQUFFLE1BQU07U0FDeEIsQ0FBQTtJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSyxJQUFJLENBQUMsV0FBVztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxVQUFVLENBQUUsQ0FBQTtRQUVuQyxJQUFLLElBQUksQ0FBQyxTQUFTO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsUUFBUSxDQUFFLENBQUE7UUFFakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0I7WUFBRyxNQUFNLEtBQUssQ0FBRSwyRUFBMkUsQ0FBRSxDQUFBO1FBRXpJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDcEMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGtCQUFrQixDQUFFLEdBQVE7UUFDeEIsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsa0JBQWtCO1lBQUcsTUFBTSxLQUFLLENBQUUsNkVBQTZFLENBQUUsQ0FBQTtRQUU3SSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUUsR0FBRyxDQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUF5QjtRQUN0QyxJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZO1lBQUcsTUFBTSxLQUFLLENBQUUsMEVBQTBFLENBQUUsQ0FBQTtRQUVwSSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFFLElBQUksQ0FBRSxDQUFBO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUUsSUFBeUI7UUFDcEMsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVTtZQUFHLE1BQU0sS0FBSyxDQUFFLHlFQUF5RSxDQUFFLENBQUE7UUFFakksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUUsQ0FBQTtJQUNsRCxDQUFDOytHQXBFUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix3TkNyQ3JDLCszUUF5TEE7OzRGRHBKYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBMb2FkUm93TGlzdFJlc3VsdCwgUm93TGlzdEJhc2UsIFJvd0xpc3RTdGF0ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3Jvdy1saXN0LmJhc2VcIjtcbmltcG9ydCB7IERBVEVfRk9STUFUUyB9IGZyb20gXCIuLi8uLi91dGlscy9kYXRlLnV0aWxcIjtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudHNUYWJsZVJvdyA9IHtcbiAgICBhdHRhY2htZW50VHlwZURlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBmaWxlTmFtZTogc3RyaW5nXG4gICAgZmlsZUV4dGVuc2lvbjogc3RyaW5nXG4gICAgdXBsb2FkZWRCeTogc3RyaW5nXG4gICAgdXBsb2FkZWRUaW1lc3RhbXA6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnREZXNjcmlwdGlvbjogc3RyaW5nXG4gICAgYXR0YWNobWVudElkOiBzdHJpbmcgXG4gICAgZmlsZUlkOiBzdHJpbmdcbiAgICBzb3VyY2VPYmplY3RVbmlxdWVJZDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIEZldGNoQXR0YWNobWVudHNQYXJhbWV0ZXJzID0geyBcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIgXG4gICAgcGFnZVJvd0NvdW50OiBudW1iZXIgXG4gICAgc29ydENvbHVtbjogc3RyaW5nIFxuICAgIHNvcnREaXJlY3Rpb246IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dGFjaG1lbnRSb3dMaXN0UHJvdmlkZXI8UixMPWFueT4ge1xuICAgIGZldGNoQXR0YWNobWVudHMoIHg6IEZldGNoQXR0YWNobWVudHNQYXJhbWV0ZXJzICk6IE9ic2VydmFibGU8TD4gICAgXG4gICAgZGlzcGxheVJvd0xpc3RQYWdlKCByZXM6IEwgKTogTG9hZFJvd0xpc3RSZXN1bHQ8Uj5cbiAgICBkb3dubG9hZEl0ZW0oIGl0ZW06IFIgKVxuICAgIGRlbGV0ZUl0ZW0oIGl0ZW06IFIgKVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJucmNsLWxpc3QtYXR0YWNobWVudHNcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybDogXCIuL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnNjc3NcIixcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0QXR0YWNobWVudHNDb21wb25lbnQgZXh0ZW5kcyBSb3dMaXN0QmFzZTx7fSxBdHRhY2htZW50c1RhYmxlUm93PiB7XG4gICAgQElucHV0KCkgcm93TGlzdFByb3ZpZGVyOiBBdHRhY2htZW50Um93TGlzdFByb3ZpZGVyPEF0dGFjaG1lbnRzVGFibGVSb3c+XG4gICAgQElucHV0KCkgY2FuRGVsZXRlID0gdHJ1ZVxuICAgIEBJbnB1dCgpIGNhbkRvd25sb2FkID0gdHJ1ZVxuICAgIEBJbnB1dCgpIG5vUm93c01lc3NhZ2UgPSBcIk5vIGF0dGFjaG1lbnRzIGhhdmUgYmVlbiBhZGRlZC5cIlxuICAgIFxuICAgIERBVEVfRk9STUFUUyA9IERBVEVfRk9STUFUU1xuICAgIGNvbHVtbnMgPSBbICdhdHRhY2htZW50VHlwZUNvZGUnLCAnZmlsZU5hbWUnLCAnc291cmNlT2JqZWN0TmFtZUNvZGUnLCAndXBsb2FkZWRCeScsICd1cGxvYWRlZFRpbWVzdGFtcCcsICdkZXNjcmlwdGlvbicgXVxuICAgIHNvcnRDb2x1bW5zID0gW1xuICAgICAgICB7IGNvZGU6ICdhdHRhY2htZW50VHlwZUNvZGUnLCAgIGRlc2NyaXB0aW9uOiAnQXR0YWNobWVudCBUeXBlJyB9LCBcbiAgICAgICAgeyBjb2RlOiAnZmlsZU5hbWUnLCAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgTmFtZScgfSwgXG4gICAgICAgIHsgY29kZTogJ3NvdXJjZU9iamVjdE5hbWVDb2RlJywgZGVzY3JpcHRpb246ICdGaWxlIFR5cGUnIH0sIFxuICAgICAgICB7IGNvZGU6ICd1cGxvYWRlZEJ5JywgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXBsb2FkZWQgQnknIH0sIFxuICAgICAgICB7IGNvZGU6ICd1cGxvYWRlZFRpbWVzdGFtcCcsICAgIGRlc2NyaXB0aW9uOiAnVXBsb2FkZWQgRGF0ZScgfSwgXG4gICAgICAgIHsgY29kZTogJ2Rlc2NyaXB0aW9uJywgICAgICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicgfSAgXG4gICAgXVxuXG4gICAgaW5pdGlhbGl6ZVJvd0xpc3QoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmluaXRpYWxpemVSb3dMaXN0KClcbiAgICB9XG5cbiAgICBnZXQgaW5pdGlhbFBhZ2VTdGF0ZSgpOiBSb3dMaXN0U3RhdGU8e30+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcjoge30sXG4gICAgICAgICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICAgICAgICBwYWdlTnVtYmVyOiAxLFxuICAgICAgICAgICAgc29ydEFjdGl2ZTogJ3VwbG9hZGVkVGltZXN0YW1wJyxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246ICdkZXNjJyxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKCB0aGlzLmNhbkRvd25sb2FkIClcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKCAnZG93bmxvYWQnIClcblxuICAgICAgICBpZiAoIHRoaXMuY2FuRGVsZXRlIClcbiAgICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKCAnZGVsZXRlJyApXG4gICAgICAgIFxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKVxuICAgIH1cblxuICAgIGZldGNoUm93TGlzdFBhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmZldGNoQXR0YWNobWVudHMgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0QXR0YWNobWVudHNDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLmZldGNoUm93TGlzdFBhZ2UnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZmV0Y2hBdHRhY2htZW50cyh7XG4gICAgICAgICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIsXG4gICAgICAgICAgICBwYWdlUm93Q291bnQ6IHRoaXMucGFnZVNpemUsXG4gICAgICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNvcnRBY3RpdmUsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLnNvcnREaXJlY3Rpb24sXG4gICAgICAgIH0pXG4gICAgfVxuICAgIFxuICAgIGRpc3BsYXlSb3dMaXN0UGFnZSggcmVzOiBhbnkgKTogTG9hZFJvd0xpc3RSZXN1bHQ8QXR0YWNobWVudHNUYWJsZVJvdz4ge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZGlzcGxheVJvd0xpc3RQYWdlICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5kaXNwbGF5Um93TGlzdFBhZ2UnIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZGlzcGxheVJvd0xpc3RQYWdlKCByZXMgKVxuICAgIH1cblxuICAgIG9uRG93bmxvYWRDbGljayggaXRlbTogQXR0YWNobWVudHNUYWJsZVJvdyApIHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmRvd25sb2FkSXRlbSApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RBdHRhY2htZW50c0NvbXBvbmVudC5yb3dMaXN0UHJvdmlkZXIub25Eb3dubG9hZENsaWNrJyApXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm93TGlzdFByb3ZpZGVyLmRvd25sb2FkSXRlbSggaXRlbSApXG4gICAgfVxuXG4gICAgb25EZWxldGVDbGljayggaXRlbTogQXR0YWNobWVudHNUYWJsZVJvdyApIHtcbiAgICAgICAgaWYgKCAhdGhpcy5yb3dMaXN0UHJvdmlkZXI/LmRlbGV0ZUl0ZW0gKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0QXR0YWNobWVudHNDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLm9uRGVsZXRlQ2xpY2suJyApXG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZGVsZXRlSXRlbSggaXRlbSApXG4gICAgfVxufVxuIiwiPG5yY2wtZGV2aWNlLXZpZXc+XG4gICAgPG5nLXRlbXBsYXRlIGRlc2t0b3Atdmlldz5cbiAgICAgICAgQGlmICggcm93cz8ubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LWRlc2t0b3AgW3Nob3dSb3dIb3Zlcl09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtdGFibGVcbiAgICAgICAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwicm93cyB8IHBhZ2luYXRlOiB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6ICdkZXNrdG9wLWF0dGFjaG1lbnRzJywgXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1BlclBhZ2U6IHBhZ2VTaXplLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdlTnVtYmVyLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSXRlbXM6IHRvdGFsUm93Q291bnQgXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImF0dGFjaG1lbnRUeXBlQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+QXR0YWNobWVudCBUeXBlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWNlbGwtY29udGVudCB0b29sdGlwPnt7IGl0ZW0uYXR0YWNobWVudFR5cGVEZXNjcmlwdGlvbiB9fTwvbnJjbC1jZWxsLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImZpbGVOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5GaWxlIE5hbWU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5maWxlTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzb3VyY2VPYmplY3ROYW1lQ29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RmlsZSBUeXBlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZmlsZUV4dGVuc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1cGxvYWRlZEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5VcGxvYWRlZCBCeTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnVwbG9hZGVkQnkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidXBsb2FkZWRUaW1lc3RhbXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlVwbG9hZGVkIERhdGU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS51cGxvYWRlZFRpbWVzdGFtcCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+RGVzY3JpcHRpb248L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5hdHRhY2htZW50RGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RG93biZzaHk7bG9hZDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Eb3dubG9hZENsaWNrKCBpdGVtIClcIiAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZWxldGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+RGVsZXRlPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCBpdGVtOyBjb2x1bW5zOiBjb2x1bW5zO1wiPjwvbWF0LXJvdz5cbiAgICAgICAgICAgICAgICA8L21hdC10YWJsZT5cbiAgICAgICAgICAgIDwvbnJjbC1yb3ctbGlzdC1kZXNrdG9wPlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgcGFnaW5hdGlvbklkPVwiZGVza3RvcC1hdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICBbcm93Q291bnRdPVwidG90YWxSb3dDb3VudFwiXG4gICAgICAgICAgICAocGFnZU51bWJlckNoYW5nZSk9XCJvblBhZ2VOdW1iZXJDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICBbbm9Sb3dzTWVzc2FnZV09XCJub1Jvd3NNZXNzYWdlXCJcbiAgICAgICAgPjwvbnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgbW9iaWxlLXZpZXc+XG4gICAgICAgIDxucmNsLWdhcC8+XG5cbiAgICAgICAgQGlmICggcm93cz8ubGVuZ3RoID4gMCApIHtcbiAgICAgICAgICAgIDxucmNsLXJvdy1saXN0LXNvcnRpbmdcbiAgICAgICAgICAgICAgICBbc29ydENvbHVtbl09XCJzb3J0QWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbc29ydENvbHVtbk9wdGlvbnNdPVwic29ydENvbHVtbnNcIlxuICAgICAgICAgICAgICAgIFtzb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgIChzb3J0Q2hhbmdlKT1cIm9uU29ydENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3Qtc29ydGluZz5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cblxuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtbW9iaWxlPlxuICAgICAgICAgICAgICAgIEBmb3IgKCBpdGVtIG9mIHJvd3MgfCBwYWdpbmF0ZTogeyBcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdtb2JpbGUtYXR0YWNobWVudHMnLCBcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiBwYWdlU2l6ZSwgXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdlTnVtYmVyLCBcbiAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogdG90YWxSb3dDb3VudCBcbiAgICAgICAgICAgICAgICB9OyB0cmFjayBpdGVtLmF0dGFjaG1lbnRJZCApIHtcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gZnVsbC13aWR0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWxlIG5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5maWxlTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkF0dGFjaG1lbnQgVHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWxlIFR5cGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5maWxlRXh0ZW5zaW9uIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VXBsb2FkZWQgQnk8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS51cGxvYWRlZEJ5IH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5VcGxvYWRlZCBEYXRlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0udXBsb2FkZWRUaW1lc3RhbXAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGZ1bGwtd2lkdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpcHRpb248L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS5hdHRhY2htZW50RGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCBjYW5Eb3dubG9hZCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRvd25sb2FkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soIGl0ZW0gKVwiICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIGNhbkRlbGV0ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlQ2xpY2soIGl0ZW0gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtZm9vdGVyPiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LW1vYmlsZT5cblxuICAgICAgICAgICAgPG5yY2wtZ2FwLz5cbiAgICAgICAgfVxuXG4gICAgICAgIDxucmNsLXJvdy1saXN0LXBhZ2luYXRpb25cbiAgICAgICAgICAgIHBhZ2luYXRpb25JZD1cIm1vYmlsZS1hdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgICAgICAgICAgW3BhZ2VOdW1iZXJdPVwicGFnZU51bWJlclwiXG4gICAgICAgICAgICBbcm93Q291bnRdPVwidG90YWxSb3dDb3VudFwiXG4gICAgICAgICAgICAocGFnZU51bWJlckNoYW5nZSk9XCJvblBhZ2VOdW1iZXJDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICBbbm9Sb3dzTWVzc2FnZV09XCJub1Jvd3NNZXNzYWdlXCJcbiAgICAgICAgPjwvbnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25yY2wtZGV2aWNlLXZpZXc+XG4iXX0=
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9saXN0LWF0dGFjaG1lbnRzL2xpc3QtYXR0YWNobWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvbGlzdC1hdHRhY2htZW50cy9saXN0LWF0dGFjaG1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQXFCLFdBQVcsRUFBZ0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWtDckQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLFdBQW1DO0lBTmpGOztRQVFhLGNBQVMsR0FBRyxJQUFJLENBQUE7UUFDaEIsZ0JBQVcsR0FBRyxJQUFJLENBQUE7UUFDbEIsa0JBQWEsR0FBRyxpQ0FBaUMsQ0FBQTtRQUUxRCxpQkFBWSxHQUFHLFlBQVksQ0FBQTtRQUMzQixZQUFPLEdBQUcsRUFBRSxDQUFBO1FBQ1osZ0JBQVcsR0FBRztZQUNWLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFJLFdBQVcsRUFBRSxpQkFBaUIsRUFBRTtZQUNoRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQWMsV0FBVyxFQUFFLFdBQVcsRUFBRTtZQUMxRCxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFO1lBQzFELEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBWSxXQUFXLEVBQUUsYUFBYSxFQUFFO1lBQzVELEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFLLFdBQVcsRUFBRSxlQUFlLEVBQUU7WUFDOUQsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFXLFdBQVcsRUFBRSxhQUFhLEVBQUU7U0FDL0QsQ0FBQTtLQXVESjtJQXJERyxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSyxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUcsQ0FBQztZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHO2dCQUNYLG9CQUFvQjtnQkFDcEIsVUFBVTtnQkFDVixzQkFBc0I7Z0JBQ3RCLFlBQVk7Z0JBQ1osbUJBQW1CO2dCQUNuQixhQUFhO2dCQUNiLEdBQUcsQ0FBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUU7Z0JBQzNDLEdBQUcsQ0FBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUU7YUFDMUMsQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTztZQUNILE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUU7WUFDWixVQUFVLEVBQUUsQ0FBQztZQUNiLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsYUFBYSxFQUFFLE1BQU07U0FDeEIsQ0FBQTtJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0I7WUFBRyxNQUFNLEtBQUssQ0FBRSwyRUFBMkUsQ0FBRSxDQUFBO1FBRXpJLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDcEMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGtCQUFrQixDQUFFLEdBQVE7UUFDeEIsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsa0JBQWtCO1lBQUcsTUFBTSxLQUFLLENBQUUsNkVBQTZFLENBQUUsQ0FBQTtRQUU3SSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUUsR0FBRyxDQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELGVBQWUsQ0FBRSxJQUF5QjtRQUN0QyxJQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxZQUFZO1lBQUcsTUFBTSxLQUFLLENBQUUsMEVBQTBFLENBQUUsQ0FBQTtRQUVwSSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFFLElBQUksQ0FBRSxDQUFBO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUUsSUFBeUI7UUFDcEMsSUFBSyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVTtZQUFHLE1BQU0sS0FBSyxDQUFFLHlFQUF5RSxDQUFFLENBQUE7UUFFakksT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBRSxJQUFJLENBQUUsQ0FBQTtJQUNsRCxDQUFDOytHQXJFUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw2T0NyQ3JDLCszUUF5TEE7OzRGRHBKYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksdUJBQXVCLG1CQUdoQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IExvYWRSb3dMaXN0UmVzdWx0LCBSb3dMaXN0QmFzZSwgUm93TGlzdFN0YXRlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcm93LWxpc3QuYmFzZVwiO1xuaW1wb3J0IHsgREFURV9GT1JNQVRTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2RhdGUudXRpbFwiO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50c1RhYmxlUm93ID0ge1xuICAgIGF0dGFjaG1lbnRUeXBlRGVzY3JpcHRpb246IHN0cmluZ1xuICAgIGZpbGVOYW1lOiBzdHJpbmdcbiAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmdcbiAgICB1cGxvYWRlZEJ5OiBzdHJpbmdcbiAgICB1cGxvYWRlZFRpbWVzdGFtcDogc3RyaW5nXG4gICAgYXR0YWNobWVudERlc2NyaXB0aW9uOiBzdHJpbmdcbiAgICBhdHRhY2htZW50SWQ6IHN0cmluZyBcbiAgICBmaWxlSWQ6IHN0cmluZ1xuICAgIHNvdXJjZU9iamVjdFVuaXF1ZUlkOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRmV0Y2hBdHRhY2htZW50c1BhcmFtZXRlcnMgPSB7IFxuICAgIHBhZ2VOdW1iZXI6IG51bWJlciBcbiAgICBwYWdlUm93Q291bnQ6IG51bWJlciBcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmcgXG4gICAgc29ydERpcmVjdGlvbjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXR0YWNobWVudFJvd0xpc3RQcm92aWRlcjxSLEw9YW55PiB7XG4gICAgZmV0Y2hBdHRhY2htZW50cyggeDogRmV0Y2hBdHRhY2htZW50c1BhcmFtZXRlcnMgKTogT2JzZXJ2YWJsZTxMPiAgICBcbiAgICBkaXNwbGF5Um93TGlzdFBhZ2UoIHJlczogTCApOiBMb2FkUm93TGlzdFJlc3VsdDxSPlxuICAgIGRvd25sb2FkSXRlbSggaXRlbTogUiApXG4gICAgZGVsZXRlSXRlbSggaXRlbTogUiApXG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm5yY2wtbGlzdC1hdHRhY2htZW50c1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vbGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsOiBcIi4vbGlzdC1hdHRhY2htZW50cy5jb21wb25lbnQuc2Nzc1wiLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIExpc3RBdHRhY2htZW50c0NvbXBvbmVudCBleHRlbmRzIFJvd0xpc3RCYXNlPHt9LEF0dGFjaG1lbnRzVGFibGVSb3c+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSByb3dMaXN0UHJvdmlkZXI6IEF0dGFjaG1lbnRSb3dMaXN0UHJvdmlkZXI8QXR0YWNobWVudHNUYWJsZVJvdz5cbiAgICBASW5wdXQoKSBjYW5EZWxldGUgPSB0cnVlXG4gICAgQElucHV0KCkgY2FuRG93bmxvYWQgPSB0cnVlXG4gICAgQElucHV0KCkgbm9Sb3dzTWVzc2FnZSA9IFwiTm8gYXR0YWNobWVudHMgaGF2ZSBiZWVuIGFkZGVkLlwiXG4gICAgXG4gICAgREFURV9GT1JNQVRTID0gREFURV9GT1JNQVRTXG4gICAgY29sdW1ucyA9IFtdIFxuICAgIHNvcnRDb2x1bW5zID0gW1xuICAgICAgICB7IGNvZGU6ICdhdHRhY2htZW50VHlwZUNvZGUnLCAgIGRlc2NyaXB0aW9uOiAnQXR0YWNobWVudCBUeXBlJyB9LCBcbiAgICAgICAgeyBjb2RlOiAnZmlsZU5hbWUnLCAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgTmFtZScgfSwgXG4gICAgICAgIHsgY29kZTogJ3NvdXJjZU9iamVjdE5hbWVDb2RlJywgZGVzY3JpcHRpb246ICdGaWxlIFR5cGUnIH0sIFxuICAgICAgICB7IGNvZGU6ICd1cGxvYWRlZEJ5JywgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXBsb2FkZWQgQnknIH0sIFxuICAgICAgICB7IGNvZGU6ICd1cGxvYWRlZFRpbWVzdGFtcCcsICAgIGRlc2NyaXB0aW9uOiAnVXBsb2FkZWQgRGF0ZScgfSwgXG4gICAgICAgIHsgY29kZTogJ2Rlc2NyaXB0aW9uJywgICAgICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicgfSAgXG4gICAgXVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIGNoYW5nZXMuY2FuRG93bmxvYWQgfHwgY2hhbmdlcy5jYW5EZWxldGUgKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMgPSBbIFxuICAgICAgICAgICAgICAgICdhdHRhY2htZW50VHlwZUNvZGUnLCBcbiAgICAgICAgICAgICAgICAnZmlsZU5hbWUnLCBcbiAgICAgICAgICAgICAgICAnc291cmNlT2JqZWN0TmFtZUNvZGUnLCBcbiAgICAgICAgICAgICAgICAndXBsb2FkZWRCeScsIFxuICAgICAgICAgICAgICAgICd1cGxvYWRlZFRpbWVzdGFtcCcsIFxuICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgICAgLi4uKCB0aGlzLmNhbkRvd25sb2FkID8gWydkb3dubG9hZCddIDogW10gKSxcbiAgICAgICAgICAgICAgICAuLi4oIHRoaXMuY2FuRGVsZXRlID8gWydkZWxldGUnXSA6IFtdIClcbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBpbml0aWFsUGFnZVN0YXRlKCk6IFJvd0xpc3RTdGF0ZTx7fT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyOiB7fSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IDEsXG4gICAgICAgICAgICBzb3J0QWN0aXZlOiAndXBsb2FkZWRUaW1lc3RhbXAnLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbjogJ2Rlc2MnLFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmV0Y2hSb3dMaXN0UGFnZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZmV0Y2hBdHRhY2htZW50cyApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RBdHRhY2htZW50c0NvbXBvbmVudC5yb3dMaXN0UHJvdmlkZXIuZmV0Y2hSb3dMaXN0UGFnZScgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5mZXRjaEF0dGFjaG1lbnRzKHtcbiAgICAgICAgICAgIHBhZ2VOdW1iZXI6IHRoaXMucGFnZU51bWJlcixcbiAgICAgICAgICAgIHBhZ2VSb3dDb3VudDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydEFjdGl2ZSxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgICAgfSlcbiAgICB9XG4gICAgXG4gICAgZGlzcGxheVJvd0xpc3RQYWdlKCByZXM6IGFueSApOiBMb2FkUm93TGlzdFJlc3VsdDxBdHRhY2htZW50c1RhYmxlUm93PiB7XG4gICAgICAgIGlmICggIXRoaXMucm93TGlzdFByb3ZpZGVyPy5kaXNwbGF5Um93TGlzdFBhZ2UgKSB0aHJvdyBFcnJvciggJ25vIHByb3ZpZGVyIGZvciBMaXN0QXR0YWNobWVudHNDb21wb25lbnQucm93TGlzdFByb3ZpZGVyLmRpc3BsYXlSb3dMaXN0UGFnZScgKVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5kaXNwbGF5Um93TGlzdFBhZ2UoIHJlcyApXG4gICAgfVxuXG4gICAgb25Eb3dubG9hZENsaWNrKCBpdGVtOiBBdHRhY2htZW50c1RhYmxlUm93ICkge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZG93bmxvYWRJdGVtICkgdGhyb3cgRXJyb3IoICdubyBwcm92aWRlciBmb3IgTGlzdEF0dGFjaG1lbnRzQ29tcG9uZW50LnJvd0xpc3RQcm92aWRlci5vbkRvd25sb2FkQ2xpY2snIClcblxuICAgICAgICByZXR1cm4gdGhpcy5yb3dMaXN0UHJvdmlkZXIuZG93bmxvYWRJdGVtKCBpdGVtIClcbiAgICB9XG5cbiAgICBvbkRlbGV0ZUNsaWNrKCBpdGVtOiBBdHRhY2htZW50c1RhYmxlUm93ICkge1xuICAgICAgICBpZiAoICF0aGlzLnJvd0xpc3RQcm92aWRlcj8uZGVsZXRlSXRlbSApIHRocm93IEVycm9yKCAnbm8gcHJvdmlkZXIgZm9yIExpc3RBdHRhY2htZW50c0NvbXBvbmVudC5yb3dMaXN0UHJvdmlkZXIub25EZWxldGVDbGljay4nIClcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0aGlzLnJvd0xpc3RQcm92aWRlci5kZWxldGVJdGVtKCBpdGVtIClcbiAgICB9XG59XG4iLCI8bnJjbC1kZXZpY2Utdmlldz5cbiAgICA8bmctdGVtcGxhdGUgZGVza3RvcC12aWV3PlxuICAgICAgICBAaWYgKCByb3dzPy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3QtZGVza3RvcCBbc2hvd1Jvd0hvdmVyXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC10YWJsZVxuICAgICAgICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb3dzIHwgcGFnaW5hdGU6IHsgXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2Rlc2t0b3AtYXR0YWNobWVudHMnLCBcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogcGFnZVNpemUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2VOdW1iZXIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxJdGVtczogdG90YWxSb3dDb3VudCBcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdFNvcnRcbiAgICAgICAgICAgICAgICAgICAgW21hdFNvcnRBY3RpdmVdPVwic29ydEFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiYXR0YWNobWVudFR5cGVDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5BdHRhY2htZW50IFR5cGU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtY2VsbC1jb250ZW50IHRvb2x0aXA+e3sgaXRlbS5hdHRhY2htZW50VHlwZURlc2NyaXB0aW9uIH19PC9ucmNsLWNlbGwtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZmlsZU5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPkZpbGUgTmFtZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmZpbGVOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNvdXJjZU9iamVjdE5hbWVDb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5GaWxlIFR5cGU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5maWxlRXh0ZW5zaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInVwbG9hZGVkQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlVwbG9hZGVkIEJ5PC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udXBsb2FkZWRCeSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1cGxvYWRlZFRpbWVzdGFtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+VXBsb2FkZWQgRGF0ZTwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnVwbG9hZGVkVGltZXN0YW1wIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5EZXNjcmlwdGlvbjwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmF0dGFjaG1lbnREZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkb3dubG9hZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5Eb3duJnNoeTtsb2FkPC9tYXQtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxucmNsLWJ1dHRvbiBjb21wYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJkb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkQ2xpY2soIGl0ZW0gKVwiICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlbGV0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5EZWxldGU8L21hdC1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5yY2wtYnV0dG9uIGNvbXBhY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUNsaWNrKCBpdGVtIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJjb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L21hdC1oZWFkZXItcm93PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IGl0ZW07IGNvbHVtbnM6IGNvbHVtbnM7XCI+PC9tYXQtcm93PlxuICAgICAgICAgICAgICAgIDwvbWF0LXRhYmxlPlxuICAgICAgICAgICAgPC9ucmNsLXJvdy1saXN0LWRlc2t0b3A+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxucmNsLWdhcC8+XG4gICAgICAgIH1cblxuICAgICAgICA8bnJjbC1yb3ctbGlzdC1wYWdpbmF0aW9uXG4gICAgICAgICAgICBwYWdpbmF0aW9uSWQ9XCJkZXNrdG9wLWF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgIFtyb3dDb3VudF09XCJ0b3RhbFJvd0NvdW50XCJcbiAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIFtub1Jvd3NNZXNzYWdlXT1cIm5vUm93c01lc3NhZ2VcIlxuICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSBtb2JpbGUtdmlldz5cbiAgICAgICAgPG5yY2wtZ2FwLz5cblxuICAgICAgICBAaWYgKCByb3dzPy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgPG5yY2wtcm93LWxpc3Qtc29ydGluZ1xuICAgICAgICAgICAgICAgIFtzb3J0Q29sdW1uXT1cInNvcnRBY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtzb3J0Q29sdW1uT3B0aW9uc109XCJzb3J0Q29sdW1uc1wiXG4gICAgICAgICAgICAgICAgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgICAgICAgICAgICAgKHNvcnRDaGFuZ2UpPVwib25Tb3J0Q2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgIDwvbnJjbC1yb3ctbGlzdC1zb3J0aW5nPlxuXG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuXG4gICAgICAgICAgICA8bnJjbC1yb3ctbGlzdC1tb2JpbGU+XG4gICAgICAgICAgICAgICAgQGZvciAoIGl0ZW0gb2Ygcm93cyB8IHBhZ2luYXRlOiB7IFxuICAgICAgICAgICAgICAgICAgICBpZDogJ21vYmlsZS1hdHRhY2htZW50cycsIFxuICAgICAgICAgICAgICAgICAgICBpdGVtc1BlclBhZ2U6IHBhZ2VTaXplLCBcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2VOdW1iZXIsIFxuICAgICAgICAgICAgICAgICAgICB0b3RhbEl0ZW1zOiB0b3RhbFJvd0NvdW50IFxuICAgICAgICAgICAgICAgIH07IHRyYWNrIGl0ZW0uYXR0YWNobWVudElkICkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBmdWxsLXdpZHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZpbGUgbmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmZpbGVOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+QXR0YWNobWVudCBUeXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiPnt7IGl0ZW0uYXR0YWNobWVudFR5cGVEZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZpbGUgVHlwZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmZpbGVFeHRlbnNpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5VcGxvYWRlZCBCeTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLnVwbG9hZGVkQnkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlVwbG9hZGVkIERhdGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+e3sgaXRlbS51cGxvYWRlZFRpbWVzdGFtcCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gZnVsbC13aWR0aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj57eyBpdGVtLmF0dGFjaG1lbnREZXNjcmlwdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtZm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIGNhbkRvd25sb2FkICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJEb3dubG9hZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRDbGljayggaXRlbSApXCIgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICggY2FuRGVsZXRlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bnJjbC1idXR0b24gY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJEZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDbGljayggaXRlbSApXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1mb290ZXI+ICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L25yY2wtcm93LWxpc3QtbW9iaWxlPlxuXG4gICAgICAgICAgICA8bnJjbC1nYXAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5yY2wtcm93LWxpc3QtcGFnaW5hdGlvblxuICAgICAgICAgICAgcGFnaW5hdGlvbklkPVwibW9iaWxlLWF0dGFjaG1lbnRzXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICBbcGFnZU51bWJlcl09XCJwYWdlTnVtYmVyXCJcbiAgICAgICAgICAgIFtyb3dDb3VudF09XCJ0b3RhbFJvd0NvdW50XCJcbiAgICAgICAgICAgIChwYWdlTnVtYmVyQ2hhbmdlKT1cIm9uUGFnZU51bWJlckNoYW5nZSggJGV2ZW50IClcIlxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgIFtub1Jvd3NNZXNzYWdlXT1cIm5vUm93c01lc3NhZ2VcIlxuICAgICAgICA+PC9ucmNsLXJvdy1saXN0LXBhZ2luYXRpb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbnJjbC1kZXZpY2Utdmlldz5cbiJdfQ==
@@ -7,13 +7,13 @@ export class RowListDesktopComponent extends NrclBase {
7
7
  this.showRowHover = true;
8
8
  }
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListDesktopComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RowListDesktopComponent, selector: "nrcl-row-list-desktop", inputs: { showRowHover: "showRowHover" }, host: { properties: { "class.show-row-hover": "showRowHover" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #c6c8cb}:host:empty{border-bottom:none}:host ::ng-deep .mat-mdc-table{width:100%}:host ::ng-deep .mat-mdc-table .mat-mdc-row{background-color:#fff;cursor:default}:host ::ng-deep .mat-mdc-table .mat-mdc-row .mat-mdc-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000;overflow-wrap:break-word}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(.selected){background-color:#f2f2f2}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(.selected){background-color:#fff}:host ::ng-deep .mat-mdc-table .mat-mdc-row.selected{background-color:#b6d7a8}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell .mat-sort-header-content{text-align:left;align-items:flex-end;font-size:15px}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row{cursor:pointer}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:hover{background-color:#d7d7d7}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(:hover):not(.selected){background-color:#f2f2f2}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(:hover):not(.selected){background-color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RowListDesktopComponent, selector: "nrcl-row-list-desktop", inputs: { showRowHover: "showRowHover" }, host: { properties: { "class.show-row-hover": "showRowHover" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n", styles: ["::ng-deep :root{--nrcl-row-list-background-color: white;--nrcl-row-list-alternate-background-color: #f2f2f2;--nrcl-row-list-hover-background-color: #d7d7d7;--nrcl-row-list-selected-background-color: #b6d7a8}:host{display:block;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #c6c8cb}:host:empty{border-bottom:none}:host ::ng-deep .mat-mdc-table{width:100%}:host ::ng-deep .mat-mdc-table .mat-mdc-row{background-color:var(--nrcl-row-list-background-color);cursor:default}:host ::ng-deep .mat-mdc-table .mat-mdc-row .mat-mdc-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000;overflow-wrap:break-word}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(.selected){background-color:var(--nrcl-row-list-background-color)}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(.selected){background-color:var(--nrcl-row-list-alternate-background-color)}:host ::ng-deep .mat-mdc-table .mat-mdc-row.selected{background-color:var(--nrcl-row-list-selected-background-color)}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell .mat-sort-header-content{text-align:left;align-items:flex-end;font-size:var(--nrcl-font-size)}:host ::ng-deep table.mat-mdc-table .mat-mdc-row:nth-child(odd):not(.selected){background-color:var(--nrcl-row-list-alternate-background-color)}:host ::ng-deep table.mat-mdc-table .mat-mdc-row:nth-child(2n):not(.selected){background-color:var(--nrcl-row-list-background-color)}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row,:host.show-row-hover ::ng-deep table.mat-mdc-table .mat-mdc-row{cursor:pointer}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:hover,:host.show-row-hover ::ng-deep table.mat-mdc-table .mat-mdc-row:hover{background-color:var(--nrcl-row-list-hover-background-color)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListDesktopComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: "nrcl-row-list-desktop", changeDetection: ChangeDetectionStrategy.OnPush, host: {
15
15
  '[class.show-row-hover]': 'showRowHover'
16
- }, template: "<ng-content></ng-content>\n", styles: [":host{display:block;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #c6c8cb}:host:empty{border-bottom:none}:host ::ng-deep .mat-mdc-table{width:100%}:host ::ng-deep .mat-mdc-table .mat-mdc-row{background-color:#fff;cursor:default}:host ::ng-deep .mat-mdc-table .mat-mdc-row .mat-mdc-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000;overflow-wrap:break-word}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(.selected){background-color:#f2f2f2}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(.selected){background-color:#fff}:host ::ng-deep .mat-mdc-table .mat-mdc-row.selected{background-color:#b6d7a8}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell .mat-sort-header-content{text-align:left;align-items:flex-end;font-size:15px}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row{cursor:pointer}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:hover{background-color:#d7d7d7}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(:hover):not(.selected){background-color:#f2f2f2}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(:hover):not(.selected){background-color:#fff}\n"] }]
16
+ }, template: "<ng-content></ng-content>\n", styles: ["::ng-deep :root{--nrcl-row-list-background-color: white;--nrcl-row-list-alternate-background-color: #f2f2f2;--nrcl-row-list-hover-background-color: #d7d7d7;--nrcl-row-list-selected-background-color: #b6d7a8}:host{display:block;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid #c6c8cb}:host:empty{border-bottom:none}:host ::ng-deep .mat-mdc-table{width:100%}:host ::ng-deep .mat-mdc-table .mat-mdc-row{background-color:var(--nrcl-row-list-background-color);cursor:default}:host ::ng-deep .mat-mdc-table .mat-mdc-row .mat-mdc-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000;overflow-wrap:break-word}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(odd):not(.selected){background-color:var(--nrcl-row-list-background-color)}:host ::ng-deep .mat-mdc-table .mat-mdc-row:nth-child(2n):not(.selected){background-color:var(--nrcl-row-list-alternate-background-color)}:host ::ng-deep .mat-mdc-table .mat-mdc-row.selected{background-color:var(--nrcl-row-list-selected-background-color)}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell{font-family:var(--nrcl-font-family);font-size:var(--nrcl-font-size);padding:5px;color:#000}:host ::ng-deep .mat-mdc-table .mat-mdc-header-cell .mat-sort-header-content{text-align:left;align-items:flex-end;font-size:var(--nrcl-font-size)}:host ::ng-deep table.mat-mdc-table .mat-mdc-row:nth-child(odd):not(.selected){background-color:var(--nrcl-row-list-alternate-background-color)}:host ::ng-deep table.mat-mdc-table .mat-mdc-row:nth-child(2n):not(.selected){background-color:var(--nrcl-row-list-background-color)}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row,:host.show-row-hover ::ng-deep table.mat-mdc-table .mat-mdc-row{cursor:pointer}:host.show-row-hover ::ng-deep .mat-mdc-table .mat-mdc-row:hover,:host.show-row-hover ::ng-deep table.mat-mdc-table .mat-mdc-row:hover{background-color:var(--nrcl-row-list-hover-background-color)}\n"] }]
17
17
  }], propDecorators: { showRowHover: [{
18
18
  type: Input
19
19
  }] } });
@@ -15,20 +15,20 @@ export class SnackbarUtilService {
15
15
  }
16
16
  });
17
17
  }
18
- successfullySaved(message, duration = 5000) {
19
- this.successful(`${message} saved successfully.`, duration);
18
+ successfullySaved(item, duration = 5000) {
19
+ this.successful(`${item} saved successfully.`, duration);
20
20
  }
21
- successfullyDeleted(message, duration = 5000) {
22
- this.successful(`${message} deleted successfully.`, duration);
21
+ successfullyDeleted(item, duration = 5000) {
22
+ this.successful(`${item} deleted successfully.`, duration);
23
23
  }
24
- successfullyRemoved(message, duration = 5000) {
25
- this.successful(`${message} removed successfully.`, duration);
24
+ successfullyRemoved(item, duration = 5000) {
25
+ this.successful(`${item} removed successfully.`, duration);
26
26
  }
27
- successfullyCreated(message, duration = 5000) {
28
- this.successful(`${message} created successfully.`, duration);
27
+ successfullyCreated(item, duration = 5000) {
28
+ this.successful(`${item} created successfully.`, duration);
29
29
  }
30
- successfullyAdded(message, duration = 5000) {
31
- this.successful(`${message} added successfully.`, duration);
30
+ successfullyAdded(item, duration = 5000) {
31
+ this.successful(`${item} added successfully.`, duration);
32
32
  }
33
33
  information(message, duration = null) {
34
34
  this.snackbar.openFromComponent(SnackbarComponent, {
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
66
66
  providedIn: 'root'
67
67
  }]
68
68
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItdXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL3NlcnZpY2VzL3NuYWNrYmFyLXV0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLDJDQUEyQyxDQUFDOztBQUs5RixNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSUksYUFBUSxHQUFHLE1BQU0sQ0FBRSxXQUFXLENBQUUsQ0FBQTtLQXlFbkM7SUF2RUcsVUFBVSxDQUFFLE9BQWUsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUMzQixpQkFBaUIsRUFDakI7WUFDSSxRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLE9BQU87YUFDbkI7U0FDSixDQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUUsT0FBZSxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQy9DLElBQUksQ0FBQyxVQUFVLENBQUUsR0FBSSxPQUFRLHNCQUFzQixFQUFFLFFBQVEsQ0FBRSxDQUFBO0lBQ25FLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBRSxHQUFJLE9BQVEsd0JBQXdCLEVBQUUsUUFBUSxDQUFFLENBQUE7SUFDckUsQ0FBQztJQUVELG1CQUFtQixDQUFFLE9BQWUsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFFLEdBQUksT0FBUSx3QkFBd0IsRUFBRSxRQUFRLENBQUUsQ0FBQTtJQUNyRSxDQUFDO0lBRUQsbUJBQW1CLENBQUUsT0FBZSxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQ2pELElBQUksQ0FBQyxVQUFVLENBQUUsR0FBSSxPQUFRLHdCQUF3QixFQUFFLFFBQVEsQ0FBRSxDQUFBO0lBQ3JFLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBRSxHQUFJLE9BQVEsc0JBQXNCLEVBQUUsUUFBUSxDQUFFLENBQUE7SUFDbkUsQ0FBQztJQUVELFdBQVcsQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDM0IsaUJBQWlCLEVBQ2pCO1lBQ0ksUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRSxPQUFPO2FBQ25CO1NBQ0osQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDM0IsaUJBQWlCLEVBQ2pCO1lBQ0ksUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxPQUFPO2FBQ25CO1NBQ0osQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDM0IsaUJBQWlCLEVBQ2pCO1lBQ0ksUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxPQUFPO2FBQ25CO1NBQ0osQ0FDSixDQUFBO0lBQ0wsQ0FBQzsrR0F6RVEsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGaEIsTUFBTTs7NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcbmltcG9ydCB7IFNuYWNrYmFyQ29tcG9uZW50LCBTbmFja2JhckNvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNuYWNrYmFyVXRpbFNlcnZpY2Uge1xuICAgIHNuYWNrYmFyID0gaW5qZWN0KCBNYXRTbmFja0JhciApXG5cbiAgICBzdWNjZXNzZnVsKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zbmFja2Jhci5vcGVuRnJvbUNvbXBvbmVudDxTbmFja2JhckNvbXBvbmVudCxTbmFja2JhckNvbmZpZz4oXG4gICAgICAgICAgICBTbmFja2JhckNvbXBvbmVudCwgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgc3VjY2Vzc2Z1bGx5U2F2ZWQoIG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24gPSA1MDAwICkge1xuICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwoIGAkeyBtZXNzYWdlIH0gc2F2ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlEZWxldGVkKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsKCBgJHsgbWVzc2FnZSB9IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlSZW1vdmVkKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsKCBgJHsgbWVzc2FnZSB9IHJlbW92ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlDcmVhdGVkKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsKCBgJHsgbWVzc2FnZSB9IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlBZGRlZCggbWVzc2FnZTogc3RyaW5nLCBkdXJhdGlvbiA9IDUwMDAgKSB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCggYCR7IG1lc3NhZ2UgfSBhZGRlZCBzdWNjZXNzZnVsbHkuYCwgZHVyYXRpb24gKVxuICAgIH1cblxuICAgIGluZm9ybWF0aW9uKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gbnVsbCApIHtcbiAgICAgICAgdGhpcy5zbmFja2Jhci5vcGVuRnJvbUNvbXBvbmVudDxTbmFja2JhckNvbXBvbmVudCxTbmFja2JhckNvbmZpZz4oXG4gICAgICAgICAgICBTbmFja2JhckNvbXBvbmVudCwgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZXJyb3IoIG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24gPSBudWxsICkge1xuICAgICAgICB0aGlzLnNuYWNrYmFyLm9wZW5Gcm9tQ29tcG9uZW50PFNuYWNrYmFyQ29tcG9uZW50LFNuYWNrYmFyQ29uZmlnPihcbiAgICAgICAgICAgIFNuYWNrYmFyQ29tcG9uZW50LCBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgdXBkYXRlZCggbWVzc2FnZTogc3RyaW5nLCBkdXJhdGlvbiA9IG51bGwgKSB7XG4gICAgICAgIHRoaXMuc25hY2tiYXIub3BlbkZyb21Db21wb25lbnQ8U25hY2tiYXJDb21wb25lbnQsU25hY2tiYXJDb25maWc+KFxuICAgICAgICAgICAgU25hY2tiYXJDb21wb25lbnQsIFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxufVxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2tiYXItdXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL3NlcnZpY2VzL3NuYWNrYmFyLXV0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLDJDQUEyQyxDQUFDOztBQUs5RixNQUFNLE9BQU8sbUJBQW1CO0lBSGhDO1FBSUksYUFBUSxHQUFHLE1BQU0sQ0FBRSxXQUFXLENBQUUsQ0FBQTtLQXlFbkM7SUF2RUcsVUFBVSxDQUFFLE9BQWUsRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUMzQixpQkFBaUIsRUFDakI7WUFDSSxRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFLE9BQU87YUFDbkI7U0FDSixDQUNKLENBQUE7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUUsSUFBWSxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUUsR0FBSSxJQUFLLHNCQUFzQixFQUFFLFFBQVEsQ0FBRSxDQUFBO0lBQ2hFLENBQUM7SUFFRCxtQkFBbUIsQ0FBRSxJQUFZLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxHQUFJLElBQUssd0JBQXdCLEVBQUUsUUFBUSxDQUFFLENBQUE7SUFDbEUsQ0FBQztJQUVELG1CQUFtQixDQUFFLElBQVksRUFBRSxRQUFRLEdBQUcsSUFBSTtRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFFLEdBQUksSUFBSyx3QkFBd0IsRUFBRSxRQUFRLENBQUUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsbUJBQW1CLENBQUUsSUFBWSxFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQzlDLElBQUksQ0FBQyxVQUFVLENBQUUsR0FBSSxJQUFLLHdCQUF3QixFQUFFLFFBQVEsQ0FBRSxDQUFBO0lBQ2xFLENBQUM7SUFFRCxpQkFBaUIsQ0FBRSxJQUFZLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxHQUFJLElBQUssc0JBQXNCLEVBQUUsUUFBUSxDQUFFLENBQUE7SUFDaEUsQ0FBQztJQUVELFdBQVcsQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDM0IsaUJBQWlCLEVBQ2pCO1lBQ0ksUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxNQUFNO2dCQUNaLE9BQU8sRUFBRSxPQUFPO2FBQ25CO1NBQ0osQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDM0IsaUJBQWlCLEVBQ2pCO1lBQ0ksUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxPQUFPO2FBQ25CO1NBQ0osQ0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBRSxPQUFlLEVBQUUsUUFBUSxHQUFHLElBQUk7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDM0IsaUJBQWlCLEVBQ2pCO1lBQ0ksUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNGLElBQUksRUFBRSxRQUFRO2dCQUNkLE9BQU8sRUFBRSxPQUFPO2FBQ25CO1NBQ0osQ0FDSixDQUFBO0lBQ0wsQ0FBQzsrR0F6RVEsbUJBQW1CO21IQUFuQixtQkFBbUIsY0FGaEIsTUFBTTs7NEZBRVQsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXJcIjtcbmltcG9ydCB7IFNuYWNrYmFyQ29tcG9uZW50LCBTbmFja2JhckNvbmZpZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLmNvbXBvbmVudFwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNuYWNrYmFyVXRpbFNlcnZpY2Uge1xuICAgIHNuYWNrYmFyID0gaW5qZWN0KCBNYXRTbmFja0JhciApXG5cbiAgICBzdWNjZXNzZnVsKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zbmFja2Jhci5vcGVuRnJvbUNvbXBvbmVudDxTbmFja2JhckNvbXBvbmVudCxTbmFja2JhckNvbmZpZz4oXG4gICAgICAgICAgICBTbmFja2JhckNvbXBvbmVudCwgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgc3VjY2Vzc2Z1bGx5U2F2ZWQoIGl0ZW06IHN0cmluZywgZHVyYXRpb24gPSA1MDAwICkge1xuICAgICAgICB0aGlzLnN1Y2Nlc3NmdWwoIGAkeyBpdGVtIH0gc2F2ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlEZWxldGVkKCBpdGVtOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsKCBgJHsgaXRlbSB9IGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlSZW1vdmVkKCBpdGVtOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsKCBgJHsgaXRlbSB9IHJlbW92ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlDcmVhdGVkKCBpdGVtOiBzdHJpbmcsIGR1cmF0aW9uID0gNTAwMCApIHtcbiAgICAgICAgdGhpcy5zdWNjZXNzZnVsKCBgJHsgaXRlbSB9IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LmAsIGR1cmF0aW9uIClcbiAgICB9XG5cbiAgICBzdWNjZXNzZnVsbHlBZGRlZCggaXRlbTogc3RyaW5nLCBkdXJhdGlvbiA9IDUwMDAgKSB7XG4gICAgICAgIHRoaXMuc3VjY2Vzc2Z1bCggYCR7IGl0ZW0gfSBhZGRlZCBzdWNjZXNzZnVsbHkuYCwgZHVyYXRpb24gKVxuICAgIH1cblxuICAgIGluZm9ybWF0aW9uKCBtZXNzYWdlOiBzdHJpbmcsIGR1cmF0aW9uID0gbnVsbCApIHtcbiAgICAgICAgdGhpcy5zbmFja2Jhci5vcGVuRnJvbUNvbXBvbmVudDxTbmFja2JhckNvbXBvbmVudCxTbmFja2JhckNvbmZpZz4oXG4gICAgICAgICAgICBTbmFja2JhckNvbXBvbmVudCwgXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgZXJyb3IoIG1lc3NhZ2U6IHN0cmluZywgZHVyYXRpb24gPSBudWxsICkge1xuICAgICAgICB0aGlzLnNuYWNrYmFyLm9wZW5Gcm9tQ29tcG9uZW50PFNuYWNrYmFyQ29tcG9uZW50LFNuYWNrYmFyQ29uZmlnPihcbiAgICAgICAgICAgIFNuYWNrYmFyQ29tcG9uZW50LCBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxuXG4gICAgdXBkYXRlZCggbWVzc2FnZTogc3RyaW5nLCBkdXJhdGlvbiA9IG51bGwgKSB7XG4gICAgICAgIHRoaXMuc25hY2tiYXIub3BlbkZyb21Db21wb25lbnQ8U25hY2tiYXJDb21wb25lbnQsU25hY2tiYXJDb25maWc+KFxuICAgICAgICAgICAgU25hY2tiYXJDb21wb25lbnQsIFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd1cGRhdGUnLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgfVxufVxuIl19